getrelay 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +40 -0
- package/bin/relay.js +362 -0
- package/design-md/airbnb/DESIGN.md +545 -0
- package/design-md/airbnb/README.md +5 -0
- package/design-md/airtable/DESIGN.md +554 -0
- package/design-md/airtable/README.md +5 -0
- package/design-md/apple/DESIGN.md +562 -0
- package/design-md/apple/README.md +5 -0
- package/design-md/binance/DESIGN.md +634 -0
- package/design-md/binance/README.md +5 -0
- package/design-md/bmw/DESIGN.md +544 -0
- package/design-md/bmw/README.md +5 -0
- package/design-md/bmw-m/DESIGN.md +503 -0
- package/design-md/bmw-m/README.md +5 -0
- package/design-md/bugatti/DESIGN.md +454 -0
- package/design-md/bugatti/README.md +5 -0
- package/design-md/cal/DESIGN.md +542 -0
- package/design-md/cal/README.md +5 -0
- package/design-md/claude/DESIGN.md +589 -0
- package/design-md/claude/README.md +5 -0
- package/design-md/clay/DESIGN.md +541 -0
- package/design-md/clay/README.md +5 -0
- package/design-md/clickhouse/DESIGN.md +544 -0
- package/design-md/clickhouse/README.md +5 -0
- package/design-md/cohere/DESIGN.md +451 -0
- package/design-md/cohere/README.md +5 -0
- package/design-md/coinbase/DESIGN.md +570 -0
- package/design-md/coinbase/README.md +5 -0
- package/design-md/composio/DESIGN.md +506 -0
- package/design-md/composio/README.md +5 -0
- package/design-md/cursor/DESIGN.md +537 -0
- package/design-md/cursor/README.md +5 -0
- package/design-md/elevenlabs/DESIGN.md +504 -0
- package/design-md/elevenlabs/README.md +5 -0
- package/design-md/expo/DESIGN.md +526 -0
- package/design-md/expo/README.md +5 -0
- package/design-md/ferrari/DESIGN.md +531 -0
- package/design-md/ferrari/README.md +5 -0
- package/design-md/figma/DESIGN.md +578 -0
- package/design-md/figma/README.md +5 -0
- package/design-md/framer/DESIGN.md +544 -0
- package/design-md/framer/README.md +5 -0
- package/design-md/hashicorp/DESIGN.md +575 -0
- package/design-md/hashicorp/README.md +5 -0
- package/design-md/ibm/DESIGN.md +550 -0
- package/design-md/ibm/README.md +5 -0
- package/design-md/intercom/DESIGN.md +546 -0
- package/design-md/intercom/README.md +5 -0
- package/design-md/kraken/DESIGN.md +125 -0
- package/design-md/kraken/README.md +5 -0
- package/design-md/lamborghini/DESIGN.md +288 -0
- package/design-md/lamborghini/README.md +5 -0
- package/design-md/linear.app/DESIGN.md +548 -0
- package/design-md/linear.app/README.md +5 -0
- package/design-md/lovable/DESIGN.md +298 -0
- package/design-md/lovable/README.md +5 -0
- package/design-md/mastercard/DESIGN.md +365 -0
- package/design-md/mastercard/README.md +5 -0
- package/design-md/meta/DESIGN.md +683 -0
- package/design-md/meta/README.md +5 -0
- package/design-md/minimax/DESIGN.md +746 -0
- package/design-md/minimax/README.md +5 -0
- package/design-md/mintlify/DESIGN.md +852 -0
- package/design-md/mintlify/README.md +5 -0
- package/design-md/miro/DESIGN.md +825 -0
- package/design-md/miro/README.md +5 -0
- package/design-md/mistral.ai/DESIGN.md +773 -0
- package/design-md/mistral.ai/README.md +5 -0
- package/design-md/mongodb/DESIGN.md +767 -0
- package/design-md/mongodb/README.md +5 -0
- package/design-md/nike/DESIGN.md +575 -0
- package/design-md/nike/README.md +5 -0
- package/design-md/notion/DESIGN.md +821 -0
- package/design-md/notion/README.md +5 -0
- package/design-md/nvidia/DESIGN.md +640 -0
- package/design-md/nvidia/README.md +5 -0
- package/design-md/ollama/DESIGN.md +539 -0
- package/design-md/ollama/README.md +5 -0
- package/design-md/opencode.ai/DESIGN.md +521 -0
- package/design-md/opencode.ai/README.md +5 -0
- package/design-md/pinterest/DESIGN.md +597 -0
- package/design-md/pinterest/README.md +5 -0
- package/design-md/playstation/DESIGN.md +661 -0
- package/design-md/playstation/README.md +5 -0
- package/design-md/posthog/DESIGN.md +690 -0
- package/design-md/posthog/README.md +5 -0
- package/design-md/raycast/DESIGN.md +669 -0
- package/design-md/raycast/README.md +5 -0
- package/design-md/renault/DESIGN.md +589 -0
- package/design-md/renault/README.md +5 -0
- package/design-md/replicate/DESIGN.md +616 -0
- package/design-md/replicate/README.md +5 -0
- package/design-md/resend/DESIGN.md +585 -0
- package/design-md/resend/README.md +5 -0
- package/design-md/revolut/DESIGN.md +636 -0
- package/design-md/revolut/README.md +5 -0
- package/design-md/runwayml/DESIGN.md +244 -0
- package/design-md/runwayml/README.md +5 -0
- package/design-md/sanity/DESIGN.md +357 -0
- package/design-md/sanity/README.md +5 -0
- package/design-md/sentry/DESIGN.md +551 -0
- package/design-md/sentry/README.md +5 -0
- package/design-md/shopify/DESIGN.md +516 -0
- package/design-md/shopify/README.md +5 -0
- package/design-md/slack/DESIGN.md +482 -0
- package/design-md/spacex/DESIGN.md +363 -0
- package/design-md/spacex/README.md +5 -0
- package/design-md/spotify/DESIGN.md +246 -0
- package/design-md/spotify/README.md +5 -0
- package/design-md/starbucks/DESIGN.md +580 -0
- package/design-md/starbucks/README.md +5 -0
- package/design-md/stripe/DESIGN.md +487 -0
- package/design-md/stripe/README.md +5 -0
- package/design-md/supabase/DESIGN.md +462 -0
- package/design-md/supabase/README.md +5 -0
- package/design-md/superhuman/DESIGN.md +448 -0
- package/design-md/superhuman/README.md +5 -0
- package/design-md/tesla/DESIGN.md +286 -0
- package/design-md/tesla/README.md +5 -0
- package/design-md/theverge/DESIGN.md +339 -0
- package/design-md/theverge/README.md +5 -0
- package/design-md/together.ai/DESIGN.md +633 -0
- package/design-md/together.ai/README.md +5 -0
- package/design-md/uber/DESIGN.md +636 -0
- package/design-md/uber/README.md +5 -0
- package/design-md/vercel/DESIGN.md +736 -0
- package/design-md/vercel/README.md +5 -0
- package/design-md/vodafone/DESIGN.md +538 -0
- package/design-md/vodafone/README.md +5 -0
- package/design-md/voltagent/DESIGN.md +521 -0
- package/design-md/voltagent/README.md +5 -0
- package/design-md/warp/DESIGN.md +526 -0
- package/design-md/warp/README.md +5 -0
- package/design-md/webflow/DESIGN.md +588 -0
- package/design-md/webflow/README.md +5 -0
- package/design-md/wired/DESIGN.md +497 -0
- package/design-md/wired/README.md +5 -0
- package/design-md/wise/DESIGN.md +544 -0
- package/design-md/wise/README.md +5 -0
- package/design-md/x.ai/DESIGN.md +465 -0
- package/design-md/x.ai/README.md +5 -0
- package/design-md/zapier/DESIGN.md +537 -0
- package/design-md/zapier/README.md +5 -0
- package/package.json +31 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: alpha
|
|
3
|
+
name: Superhumon Inspired
|
|
4
|
+
description: An inspired interpretation of Superhumon's design language — a fast-email productivity brand split between an editorial dark hero (deep indigo navy with violet-sky atmospheric backdrop and a portrait subject) and a quiet white content body with off-warm-grey ink. The system uses a single proprietary variable display sans, heavy weight 460–540 with tight tracking, and a deep-teal closing CTA band that breaks the indigo/white rhythm with a warm dark interlude. Buttons are tight rounded rectangles, pricing is sober and dense, and the brand reads more like a high-end newsletter than a SaaS app.
|
|
5
|
+
|
|
6
|
+
colors:
|
|
7
|
+
primary: "#1b1938"
|
|
8
|
+
primary-deep: "#0e0c1f"
|
|
9
|
+
on-primary: "#ffffff"
|
|
10
|
+
ink: "#292827"
|
|
11
|
+
ink-mute: "#73706d"
|
|
12
|
+
ink-faint: "#9a9794"
|
|
13
|
+
canvas: "#ffffff"
|
|
14
|
+
canvas-soft: "#fafaf8"
|
|
15
|
+
surface-violet-soft: "#c9b4fa"
|
|
16
|
+
surface-teal-deep: "#0e3030"
|
|
17
|
+
surface-teal-mid: "#155555"
|
|
18
|
+
hairline: "#e8e4dd"
|
|
19
|
+
hairline-dark: "#3f3a52"
|
|
20
|
+
on-dark-mute: "#bcbac9"
|
|
21
|
+
on-dark-faint: "#5a5772"
|
|
22
|
+
|
|
23
|
+
typography:
|
|
24
|
+
display-xxl:
|
|
25
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
26
|
+
fontSize: 64px
|
|
27
|
+
fontWeight: 540
|
|
28
|
+
lineHeight: 0.96
|
|
29
|
+
letterSpacing: 0
|
|
30
|
+
display-xl:
|
|
31
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
32
|
+
fontSize: 48px
|
|
33
|
+
fontWeight: 460
|
|
34
|
+
lineHeight: 0.96
|
|
35
|
+
letterSpacing: -1.32px
|
|
36
|
+
display-lg:
|
|
37
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
38
|
+
fontSize: 28px
|
|
39
|
+
fontWeight: 540
|
|
40
|
+
lineHeight: 1.14
|
|
41
|
+
letterSpacing: -0.63px
|
|
42
|
+
display-md:
|
|
43
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
44
|
+
fontSize: 22px
|
|
45
|
+
fontWeight: 460
|
|
46
|
+
lineHeight: 1.1
|
|
47
|
+
letterSpacing: -0.315px
|
|
48
|
+
heading-lg:
|
|
49
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
50
|
+
fontSize: 20px
|
|
51
|
+
fontWeight: 460
|
|
52
|
+
lineHeight: 1.2
|
|
53
|
+
letterSpacing: -0.4px
|
|
54
|
+
body-lg:
|
|
55
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
56
|
+
fontSize: 18px
|
|
57
|
+
fontWeight: 540
|
|
58
|
+
lineHeight: 1.5
|
|
59
|
+
letterSpacing: -0.135px
|
|
60
|
+
body-md:
|
|
61
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
62
|
+
fontSize: 16px
|
|
63
|
+
fontWeight: 460
|
|
64
|
+
lineHeight: 1.5
|
|
65
|
+
letterSpacing: 0
|
|
66
|
+
body-strong:
|
|
67
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
68
|
+
fontSize: 18.72px
|
|
69
|
+
fontWeight: 700
|
|
70
|
+
lineHeight: 1.5
|
|
71
|
+
letterSpacing: 0
|
|
72
|
+
button-md:
|
|
73
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
74
|
+
fontSize: 16px
|
|
75
|
+
fontWeight: 700
|
|
76
|
+
lineHeight: 1.0
|
|
77
|
+
letterSpacing: 0
|
|
78
|
+
button-cap:
|
|
79
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
80
|
+
fontSize: 14px
|
|
81
|
+
fontWeight: 600
|
|
82
|
+
lineHeight: 1.0
|
|
83
|
+
letterSpacing: 0
|
|
84
|
+
caption:
|
|
85
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
86
|
+
fontSize: 14px
|
|
87
|
+
fontWeight: 460
|
|
88
|
+
lineHeight: 1.4
|
|
89
|
+
letterSpacing: 0
|
|
90
|
+
micro:
|
|
91
|
+
fontFamily: "'Super Sans VF', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
92
|
+
fontSize: 12px
|
|
93
|
+
fontWeight: 540
|
|
94
|
+
lineHeight: 1.4
|
|
95
|
+
letterSpacing: 0
|
|
96
|
+
|
|
97
|
+
rounded:
|
|
98
|
+
xs: 4px
|
|
99
|
+
sm: 6px
|
|
100
|
+
md: 8px
|
|
101
|
+
lg: 12px
|
|
102
|
+
xl: 16px
|
|
103
|
+
full: 9999px
|
|
104
|
+
|
|
105
|
+
spacing:
|
|
106
|
+
xxs: 2px
|
|
107
|
+
xs: 4px
|
|
108
|
+
sm: 8px
|
|
109
|
+
md: 12px
|
|
110
|
+
lg: 16px
|
|
111
|
+
xl: 24px
|
|
112
|
+
xxl: 32px
|
|
113
|
+
huge: 64px
|
|
114
|
+
|
|
115
|
+
components:
|
|
116
|
+
button-primary-dark:
|
|
117
|
+
backgroundColor: "{colors.primary}"
|
|
118
|
+
textColor: "{colors.on-primary}"
|
|
119
|
+
typography: "{typography.button-md}"
|
|
120
|
+
rounded: "{rounded.md}"
|
|
121
|
+
padding: 12px 20px
|
|
122
|
+
button-primary-dark-pressed:
|
|
123
|
+
backgroundColor: "{colors.primary-deep}"
|
|
124
|
+
textColor: "{colors.on-primary}"
|
|
125
|
+
typography: "{typography.button-md}"
|
|
126
|
+
rounded: "{rounded.md}"
|
|
127
|
+
padding: 12px 20px
|
|
128
|
+
button-on-dark-pill:
|
|
129
|
+
backgroundColor: "{colors.surface-violet-soft}"
|
|
130
|
+
textColor: "{colors.primary}"
|
|
131
|
+
typography: "{typography.button-md}"
|
|
132
|
+
rounded: "{rounded.full}"
|
|
133
|
+
padding: 12px 20px
|
|
134
|
+
button-secondary-outline:
|
|
135
|
+
backgroundColor: "{colors.canvas}"
|
|
136
|
+
textColor: "{colors.ink}"
|
|
137
|
+
typography: "{typography.button-md}"
|
|
138
|
+
rounded: "{rounded.md}"
|
|
139
|
+
padding: 12px 20px
|
|
140
|
+
button-on-teal:
|
|
141
|
+
backgroundColor: "{colors.canvas}"
|
|
142
|
+
textColor: "{colors.surface-teal-deep}"
|
|
143
|
+
typography: "{typography.button-md}"
|
|
144
|
+
rounded: "{rounded.md}"
|
|
145
|
+
padding: 12px 20px
|
|
146
|
+
text-input:
|
|
147
|
+
backgroundColor: "{colors.canvas}"
|
|
148
|
+
textColor: "{colors.ink}"
|
|
149
|
+
typography: "{typography.body-md}"
|
|
150
|
+
rounded: "{rounded.sm}"
|
|
151
|
+
padding: 10px 12px
|
|
152
|
+
card-feature-light:
|
|
153
|
+
backgroundColor: "{colors.canvas}"
|
|
154
|
+
textColor: "{colors.ink}"
|
|
155
|
+
typography: "{typography.body-md}"
|
|
156
|
+
rounded: "{rounded.lg}"
|
|
157
|
+
padding: 32px
|
|
158
|
+
card-pricing:
|
|
159
|
+
backgroundColor: "{colors.canvas}"
|
|
160
|
+
textColor: "{colors.ink}"
|
|
161
|
+
typography: "{typography.body-md}"
|
|
162
|
+
rounded: "{rounded.lg}"
|
|
163
|
+
padding: 32px
|
|
164
|
+
card-pricing-featured:
|
|
165
|
+
backgroundColor: "{colors.primary}"
|
|
166
|
+
textColor: "{colors.on-primary}"
|
|
167
|
+
typography: "{typography.body-md}"
|
|
168
|
+
rounded: "{rounded.lg}"
|
|
169
|
+
padding: 32px
|
|
170
|
+
card-teal-band:
|
|
171
|
+
backgroundColor: "{colors.surface-teal-deep}"
|
|
172
|
+
textColor: "{colors.on-primary}"
|
|
173
|
+
typography: "{typography.body-lg}"
|
|
174
|
+
rounded: "{rounded.lg}"
|
|
175
|
+
padding: 64px
|
|
176
|
+
card-feature-row:
|
|
177
|
+
backgroundColor: "{colors.canvas-soft}"
|
|
178
|
+
textColor: "{colors.ink}"
|
|
179
|
+
typography: "{typography.body-md}"
|
|
180
|
+
rounded: "{rounded.md}"
|
|
181
|
+
padding: 24px
|
|
182
|
+
pill-tab-light:
|
|
183
|
+
backgroundColor: "{colors.canvas}"
|
|
184
|
+
textColor: "{colors.ink}"
|
|
185
|
+
typography: "{typography.button-cap}"
|
|
186
|
+
rounded: "{rounded.full}"
|
|
187
|
+
padding: 8px 16px
|
|
188
|
+
nav-bar-dark:
|
|
189
|
+
backgroundColor: "{colors.primary}"
|
|
190
|
+
textColor: "{colors.on-primary}"
|
|
191
|
+
typography: "{typography.body-md}"
|
|
192
|
+
rounded: "{rounded.xs}"
|
|
193
|
+
padding: 16px 24px
|
|
194
|
+
nav-bar-light:
|
|
195
|
+
backgroundColor: "{colors.canvas}"
|
|
196
|
+
textColor: "{colors.ink}"
|
|
197
|
+
typography: "{typography.body-md}"
|
|
198
|
+
rounded: "{rounded.xs}"
|
|
199
|
+
padding: 16px 24px
|
|
200
|
+
link-on-light:
|
|
201
|
+
backgroundColor: "{colors.canvas}"
|
|
202
|
+
textColor: "{colors.ink}"
|
|
203
|
+
typography: "{typography.body-md}"
|
|
204
|
+
rounded: "{rounded.xs}"
|
|
205
|
+
padding: 0px
|
|
206
|
+
footer-light:
|
|
207
|
+
backgroundColor: "{colors.canvas}"
|
|
208
|
+
textColor: "{colors.ink-mute}"
|
|
209
|
+
typography: "{typography.caption}"
|
|
210
|
+
rounded: "{rounded.xs}"
|
|
211
|
+
padding: 64px 24px
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Overview
|
|
215
|
+
|
|
216
|
+
Superhumon's marketing pages open in an editorial dark register: a deep indigo navy `{colors.primary}` (`#1b1938`) canvas overlaid with a soft violet-and-sky atmospheric backdrop and a half-bleed portrait subject (often a person looking off-frame, photographed at twilight). Headlines render in `{typography.display-xxl}` (Super Sans VF at 64px / weight 540) with negative tracking, set in white over the indigo. A single rounded-rectangle CTA button anchors each band — never two, never three.
|
|
217
|
+
|
|
218
|
+
The body of every page flips to white. `{colors.canvas}` (`#ffffff`) takes over below the hero, with body type in `{colors.ink}` (`#292827` — a slightly warm dark grey, never pure black) and feature rows alternating between white and `{colors.canvas-soft}` (a barely-tinted off-white). Pricing tiers sit on this white surface; the featured tier inverts to the indigo navy, completing the brand's binary polarity.
|
|
219
|
+
|
|
220
|
+
Every page closes with a **deep-teal CTA band** (`{colors.surface-teal-deep}` — `#0e3030`). The teal is a single chromatic interlude: rich, almost-black green-blue, that breaks up what would otherwise be an indigo/white-only page. The teal band always contains the closing CTA in `{typography.display-lg}` paired with a single white-pill button.
|
|
221
|
+
|
|
222
|
+
Typography runs **Super Sans VF** — a proprietary variable display sans — at unusual mid-weights (460, 540, 600). The variable axes let the brand pick precise sub-default weights that read as warmer and more human than typical 400/500/700 SaaS scales. Display sizes use negative letter-spacing of -1.32px to -0.315px depending on size; line-heights are unusually tight (0.96 on 48px display).
|
|
223
|
+
|
|
224
|
+
**Key Characteristics:**
|
|
225
|
+
- Three-canvas system: indigo navy (`{colors.primary}`) for hero, white (`{colors.canvas}`) for body, deep teal (`{colors.surface-teal-deep}`) for closing CTA.
|
|
226
|
+
- Half-bleed portrait subject in the hero with violet-sky atmospheric backdrop — the brand uses a person looking off-frame as a recurring visual.
|
|
227
|
+
- Single CTA per band; the marketing pages never crowd actions.
|
|
228
|
+
- Super Sans VF at sub-default weights (460, 540, 600) — the brand's typographic warmth signature.
|
|
229
|
+
- Tight line-heights (0.96) on display sizes — vertical compression as editorial density.
|
|
230
|
+
- Off-warm-grey body ink (`#292827`) — never pure black; the brand's quiet warmth.
|
|
231
|
+
- Pill-shaped on-hero CTA in pale violet (`{colors.surface-violet-soft}`); rounded-rectangle CTAs everywhere else.
|
|
232
|
+
|
|
233
|
+
## Colors
|
|
234
|
+
|
|
235
|
+
> **Source pages:** home (`/`), `/products/go-ai-assistant`, `/contact-sales`, `/plans`.
|
|
236
|
+
|
|
237
|
+
### Brand & Accent
|
|
238
|
+
- **Primary Indigo Navy** (`{colors.primary}` — `#1b1938`): The brand's primary surface and CTA color. Hero canvas, filled rounded-rectangle button, featured pricing tier.
|
|
239
|
+
- **Indigo Deep** (`{colors.primary-deep}` — `#0e0c1f`): Pressed-state lift / deeper navy used in hero gradient stops.
|
|
240
|
+
- **Surface Violet Soft** (`{colors.surface-violet-soft}` — `#c9b4fa`): The hero pill-button fill — pale violet over the indigo canvas. Also appears in atmospheric backdrops.
|
|
241
|
+
- **Surface Teal Deep** (`{colors.surface-teal-deep}` — `#0e3030`): The signature closing-CTA band color. Rich green-blue, almost black.
|
|
242
|
+
- **Surface Teal Mid** (`{colors.surface-teal-mid}` — `#155555`): Slightly lifted teal for nested chrome inside the band.
|
|
243
|
+
|
|
244
|
+
### Surface
|
|
245
|
+
- **Canvas** (`{colors.canvas}` — `#ffffff`): Default body background.
|
|
246
|
+
- **Canvas Soft** (`{colors.canvas-soft}` — `#fafaf8`): Barely-warm off-white for alternating feature-row bands.
|
|
247
|
+
- **Hairline** (`{colors.hairline}` — `#e8e4dd`): 1px borders, slightly warm grey.
|
|
248
|
+
- **Hairline Dark** (`{colors.hairline-dark}` — `#3f3a52`): 1px borders on dark surfaces.
|
|
249
|
+
|
|
250
|
+
### Text
|
|
251
|
+
- **Ink** (`{colors.ink}` — `#292827`): Default body text. Warm dark grey, never pure black.
|
|
252
|
+
- **Ink Mute** (`{colors.ink-mute}` — `#73706d`): Secondary text, captions.
|
|
253
|
+
- **Ink Faint** (`{colors.ink-faint}` — `#9a9794`): Tertiary / disabled text.
|
|
254
|
+
- **On Primary** (`{colors.on-primary}` — `#ffffff`): Text on dark navy / teal surfaces.
|
|
255
|
+
- **On Dark Mute** (`{colors.on-dark-mute}` — translucent white): Secondary text on dark.
|
|
256
|
+
- **On Dark Faint** (`{colors.on-dark-faint}` — translucent white): Tertiary text on dark.
|
|
257
|
+
|
|
258
|
+
## Typography
|
|
259
|
+
|
|
260
|
+
### Font Family
|
|
261
|
+
|
|
262
|
+
The display and UI tier is **Super Sans VF** — a proprietary variable sans (variable axes for weight, with the brand using sub-default 460 / 540 / 600 weights). Fallback chain is the system font stack.
|
|
263
|
+
|
|
264
|
+
For substitution use **Inter Variable** (open-source) at weight 460 / 540 / 600 — Inter's variable axes match Super Sans VF's behavior closely. Avoid fixed-weight Inter at 400 / 500 / 600 — the brand specifically picks the in-between weights.
|
|
265
|
+
|
|
266
|
+
### Hierarchy
|
|
267
|
+
|
|
268
|
+
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|
|
269
|
+
|---|---|---|---|---|---|
|
|
270
|
+
| `{typography.display-xxl}` | 64px | 540 | 0.96 | 0 | Hero headline |
|
|
271
|
+
| `{typography.display-xl}` | 48px | 460 | 0.96 | -1.32px | Section opener on light surfaces |
|
|
272
|
+
| `{typography.display-lg}` | 28px | 540 | 1.14 | -0.63px | Sub-section / feature title |
|
|
273
|
+
| `{typography.display-md}` | 22px | 460 | 1.1 | -0.315px | Card title |
|
|
274
|
+
| `{typography.heading-lg}` | 20px | 460 | 1.2 | -0.4px | Compact card title |
|
|
275
|
+
| `{typography.body-lg}` | 18px | 540 | 1.5 | -0.135px | Marketing body lead |
|
|
276
|
+
| `{typography.body-md}` | 16px | 460 | 1.5 | 0 | Default UI body |
|
|
277
|
+
| `{typography.body-strong}` | 18.72px | 700 | 1.5 | 0 | Emphasized body |
|
|
278
|
+
| `{typography.button-md}` | 16px | 700 | 1.0 | 0 | Rounded-rectangle button label |
|
|
279
|
+
| `{typography.button-cap}` | 14px | 600 | 1.0 | 0 | Compact button label |
|
|
280
|
+
| `{typography.caption}` | 14px | 460 | 1.4 | 0 | Helper, footnote |
|
|
281
|
+
| `{typography.micro}` | 12px | 540 | 1.4 | 0 | Pill label, fine print |
|
|
282
|
+
|
|
283
|
+
### Principles
|
|
284
|
+
- **Sub-default weights.** The brand picks 460 / 540 / 600 instead of 400 / 500 / 700 — a quiet warmth in the typography that distinguishes it from default SaaS systems.
|
|
285
|
+
- **Tight display leading.** 0.96 on 48–64px display — the type stacks unusually compact.
|
|
286
|
+
- **Negative tracking on display sizes.** -1.32px at 48px scaling proportionally — tightens the variable letterforms into editorial density.
|
|
287
|
+
|
|
288
|
+
### Note on Font Substitutes
|
|
289
|
+
**Inter Variable** (open-source via Google Fonts) is the recommended substitute. Set `font-variation-settings: "wght" 540` for display, 460 for body — Inter's variable axes match. Avoid fixed-weight Inter; the in-between weights are the brand's signature.
|
|
290
|
+
|
|
291
|
+
## Layout
|
|
292
|
+
|
|
293
|
+
### Spacing System
|
|
294
|
+
- **Base unit**: 8px (with 2 / 4 / 12 sub-tokens for fine work).
|
|
295
|
+
- **Tokens**: `{spacing.xxs}` 2px · `{spacing.xs}` 4px · `{spacing.sm}` 8px · `{spacing.md}` 12px · `{spacing.lg}` 16px · `{spacing.xl}` 24px · `{spacing.xxl}` 32px · `{spacing.huge}` 64px.
|
|
296
|
+
- **Section padding**: 64–96px on most sections; closing teal band uses 96–128px for editorial weight.
|
|
297
|
+
- **Card internal padding**: 32px on pricing cards; 24px on alternating feature rows.
|
|
298
|
+
|
|
299
|
+
### Grid & Container
|
|
300
|
+
- Hero spans full viewport width with the violet-sky backdrop edge-to-edge; content centers in a ~960px column.
|
|
301
|
+
- Body content centers in ~960–1100px.
|
|
302
|
+
- Pricing collapses 3-up → 2-up → 1-up at 1024 / 768 breakpoints.
|
|
303
|
+
|
|
304
|
+
### Whitespace Philosophy
|
|
305
|
+
The brand uses generous editorial whitespace on both polarities — dark hero and white body. Section gaps tend toward 96px; the teal closing band gets up to 128px of vertical air. The whitespace itself is part of the brand's "considered, slow-tempo" feel.
|
|
306
|
+
|
|
307
|
+
## Elevation & Depth
|
|
308
|
+
|
|
309
|
+
| Level | Treatment | Use |
|
|
310
|
+
|---|---|---|
|
|
311
|
+
| 0 | Flat | Default surface |
|
|
312
|
+
| 1 | `box-shadow: 0 1px 3px rgba(0,0,0,0.08)` | Subtle card lift |
|
|
313
|
+
| 2 | `box-shadow: 0 8px 24px rgba(0,0,0,0.12)` | Floating panels, modals |
|
|
314
|
+
| 3 | Atmospheric backdrop (violet-sky over indigo) | The hero's depth medium |
|
|
315
|
+
|
|
316
|
+
### Decorative Depth
|
|
317
|
+
The hero's depth is the **violet-sky atmospheric backdrop** — a soft indigo-to-violet-to-sky-blue radial wash that sits behind the portrait subject. Implemented as a CSS radial gradient or large background image. Below the hero, depth is minimal — the white canvas is flat.
|
|
318
|
+
|
|
319
|
+
## Shapes
|
|
320
|
+
|
|
321
|
+
### Border Radius Scale
|
|
322
|
+
|
|
323
|
+
| Token | Value | Use |
|
|
324
|
+
|---|---|---|
|
|
325
|
+
| `{rounded.xs}` | 4px | Hairline tags |
|
|
326
|
+
| `{rounded.sm}` | 6px | Form inputs |
|
|
327
|
+
| `{rounded.md}` | 8px | Buttons (the brand's signature button shape — rounded rectangle, never pill) |
|
|
328
|
+
| `{rounded.lg}` | 12px | Pricing cards, feature cards |
|
|
329
|
+
| `{rounded.xl}` | 16px | Modal dialogs, large feature cards |
|
|
330
|
+
| `{rounded.full}` | 9999px | Pill tabs in feature row, hero CTA |
|
|
331
|
+
|
|
332
|
+
### Photography Geometry
|
|
333
|
+
The hero uses **half-bleed portrait subjects** — a person photographed at twilight, looking off-frame, occupying the right half of the hero. The portrait extends edge-to-edge vertically and stops mid-canvas horizontally; type sits on the left side. Other photography is rare; product UI mockups handle most other illustrative needs.
|
|
334
|
+
|
|
335
|
+
## Components
|
|
336
|
+
|
|
337
|
+
### Buttons
|
|
338
|
+
|
|
339
|
+
**`button-primary-dark`** — the dominant rounded-rectangle CTA on white surfaces.
|
|
340
|
+
- Background `{colors.primary}`, text `{colors.on-primary}`, type `{typography.button-md}`, padding `{spacing.md} {spacing.xl}` (12px 20px), rounded `{rounded.md}` 8px.
|
|
341
|
+
- Pressed state `button-primary-dark-pressed` shifts to `{colors.primary-deep}`.
|
|
342
|
+
|
|
343
|
+
**`button-on-dark-pill`** — the hero CTA in pale violet pill shape.
|
|
344
|
+
- Background `{colors.surface-violet-soft}`, text `{colors.primary}`, same typography, padding 12px 20px, rounded `{rounded.full}`. The pill shape only appears on the hero — body CTAs use the rounded rectangle.
|
|
345
|
+
|
|
346
|
+
**`button-secondary-outline`** — outline alternative on white.
|
|
347
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, 1px solid `{colors.hairline-dark}` border, same shape as `button-primary-dark`.
|
|
348
|
+
|
|
349
|
+
**`button-on-teal`** — CTA inside the closing teal band.
|
|
350
|
+
- Background `{colors.canvas}`, text `{colors.surface-teal-deep}`, rounded-rectangle, same typography.
|
|
351
|
+
|
|
352
|
+
### Cards & Containers
|
|
353
|
+
|
|
354
|
+
**`card-feature-light`** — feature card on white.
|
|
355
|
+
- Background `{colors.canvas}`, padding `{spacing.xxl}`, rounded `{rounded.lg}`, 1px `{colors.hairline}` border.
|
|
356
|
+
|
|
357
|
+
**`card-pricing`** — standard pricing tier card.
|
|
358
|
+
- Background `{colors.canvas}`, padding `{spacing.xxl}`, rounded `{rounded.lg}`, 1px `{colors.hairline}` border.
|
|
359
|
+
|
|
360
|
+
**`card-pricing-featured`** — inverted indigo featured tier.
|
|
361
|
+
- Background `{colors.primary}`, text `{colors.on-primary}`, otherwise identical to `card-pricing`.
|
|
362
|
+
|
|
363
|
+
**`card-teal-band`** — the closing CTA band on every page.
|
|
364
|
+
- Background `{colors.surface-teal-deep}`, text `{colors.on-primary}`, padding `{spacing.huge}` 64px, rounded `{rounded.lg}` 12px (often radius-less in practice when full-bleed). Holds a single closing headline in `{typography.display-lg}` and a `button-on-teal`.
|
|
365
|
+
|
|
366
|
+
**`card-feature-row`** — alternating feature-row card on the body.
|
|
367
|
+
- Background `{colors.canvas-soft}`, text `{colors.ink}`, padding `{spacing.xl}` 24px, rounded `{rounded.md}` 8px. Used in pairs/triplets to explain features below the hero.
|
|
368
|
+
|
|
369
|
+
### Inputs & Forms
|
|
370
|
+
|
|
371
|
+
**`text-input`** — standard form input.
|
|
372
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, type `{typography.body-md}`, padding `{spacing.sm}+ {spacing.md}` (10px 12px), rounded `{rounded.sm}` 6px, 1px `{colors.hairline}` border.
|
|
373
|
+
|
|
374
|
+
### Navigation
|
|
375
|
+
|
|
376
|
+
**`nav-bar-dark`** — top nav over the indigo hero.
|
|
377
|
+
- Background `{colors.primary}`, text `{colors.on-primary}`, padding `{spacing.lg} {spacing.xl}`. Logo on the left, nav center, "Get Started" `button-on-dark-pill` on the right.
|
|
378
|
+
|
|
379
|
+
**`nav-bar-light`** — top nav on body / pricing pages.
|
|
380
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, otherwise same structure with `button-primary-dark` on the right.
|
|
381
|
+
|
|
382
|
+
### Pills, Tags, and Chips
|
|
383
|
+
|
|
384
|
+
**`pill-tab-light`** — feature-row tab selector.
|
|
385
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, type `{typography.button-cap}`, padding `{spacing.sm} {spacing.lg}`, rounded `{rounded.full}`. Used in the feature category picker (Mail / Channels / Code / AI / Calendar etc.) below the hero.
|
|
386
|
+
|
|
387
|
+
### Signature Components
|
|
388
|
+
|
|
389
|
+
**Half-Bleed Portrait Hero** — a person photographed at twilight, occupying the right half of the indigo hero with violet-sky atmospheric backdrop behind. Type and CTA sit on the left side. The portrait is the brand's recurring visual signature.
|
|
390
|
+
|
|
391
|
+
**Closing Teal Band** — every page closes with a `card-teal-band` containing a `{typography.display-lg}` closing headline and a single `button-on-teal`. The teal is the page's resolving chord.
|
|
392
|
+
|
|
393
|
+
**`link-on-light`** — inline links on body.
|
|
394
|
+
- Text `{colors.ink}` rendered in `{typography.body-md}` with persistent underline.
|
|
395
|
+
|
|
396
|
+
**`footer-light`** — site-wide footer.
|
|
397
|
+
- Background `{colors.canvas}`, text `{colors.ink-mute}`, type `{typography.caption}`, padding `{spacing.huge} {spacing.xl}` (64px 24px). Holds 4 columns of link groups, social icons, and a small legal/copyright row.
|
|
398
|
+
|
|
399
|
+
## Do's and Don'ts
|
|
400
|
+
|
|
401
|
+
### Do
|
|
402
|
+
- Pair every hero with the violet-sky atmospheric backdrop and a half-bleed portrait subject when possible.
|
|
403
|
+
- Render display tiers at sub-default weights (460 / 540) — the warmth is the typographic signature.
|
|
404
|
+
- Use rounded-rectangle CTAs at 8px radius everywhere except the hero (where pill-shaped is the rule).
|
|
405
|
+
- Close every marketing page with a deep-teal CTA band.
|
|
406
|
+
- Use warm dark grey `{colors.ink}` for body text — never pure black.
|
|
407
|
+
- Apply tight 0.96 line-height on display sizes; the editorial compression is the brand.
|
|
408
|
+
|
|
409
|
+
### Don't
|
|
410
|
+
- Don't use pill-shaped buttons in the body of the page; the pill is hero-only.
|
|
411
|
+
- Don't bump display weight above 540 unless using `body-strong` (700) for emphasized inline body.
|
|
412
|
+
- Don't render body text in pure black — the warm grey `#292827` is part of the brand.
|
|
413
|
+
- Don't omit the closing teal band — every marketing page closes with it.
|
|
414
|
+
- Don't introduce additional accent colors beyond indigo, violet-soft, teal, and the off-warm-greys.
|
|
415
|
+
|
|
416
|
+
## Responsive Behavior
|
|
417
|
+
|
|
418
|
+
### Breakpoints
|
|
419
|
+
|
|
420
|
+
| Name | Width | Key Changes |
|
|
421
|
+
|---|---|---|
|
|
422
|
+
| Wide | ≥ 1440px | Half-bleed portrait at full scale; teal band 128px tall |
|
|
423
|
+
| Desktop | 1024–1440px | Default content max-width; pricing 3-up |
|
|
424
|
+
| Tablet | 768–1023px | Pricing 2-up; portrait crops tighter |
|
|
425
|
+
| Mobile | < 768px | Pricing 1-up; hamburger nav; display drops 64 → 36px |
|
|
426
|
+
|
|
427
|
+
### Touch Targets
|
|
428
|
+
- Buttons hit ≥ 44×44px on mobile via 12px vertical padding × 16px line-height. WCAG AAA.
|
|
429
|
+
- Form fields stay at the 44px minimum height.
|
|
430
|
+
|
|
431
|
+
### Collapsing Strategy
|
|
432
|
+
- Display tiers stair-step 64 → 48 → 36 → 28 → 22px.
|
|
433
|
+
- Half-bleed portrait crops to head-and-shoulders on mobile; atmospheric backdrop simplifies.
|
|
434
|
+
- Pricing tiers stair-step 3-up → 2-up → 1-up.
|
|
435
|
+
- Top nav collapses to hamburger below 768px.
|
|
436
|
+
- Closing teal band reduces vertical padding from 128 → 64px on mobile.
|
|
437
|
+
|
|
438
|
+
### Image Behavior
|
|
439
|
+
Hero portrait uses `srcset` with desktop / mobile crops — desktop favors the full half-bleed composition; mobile crops to head-and-shoulders.
|
|
440
|
+
|
|
441
|
+
## Iteration Guide
|
|
442
|
+
|
|
443
|
+
1. Focus on ONE component at a time.
|
|
444
|
+
2. Reference component names and tokens directly.
|
|
445
|
+
3. Run `npx @google/design.md lint DESIGN.md` after edits.
|
|
446
|
+
4. Default body to `{typography.body-md}`; reserve `{typography.body-lg}` for marketing leads.
|
|
447
|
+
5. Keep the three-canvas rhythm (indigo / white / teal) — adding a fourth canvas color breaks the system.
|
|
448
|
+
6. The closing teal band is non-negotiable — every marketing page resolves there.
|