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.
Files changed (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -0
  3. package/bin/relay.js +362 -0
  4. package/design-md/airbnb/DESIGN.md +545 -0
  5. package/design-md/airbnb/README.md +5 -0
  6. package/design-md/airtable/DESIGN.md +554 -0
  7. package/design-md/airtable/README.md +5 -0
  8. package/design-md/apple/DESIGN.md +562 -0
  9. package/design-md/apple/README.md +5 -0
  10. package/design-md/binance/DESIGN.md +634 -0
  11. package/design-md/binance/README.md +5 -0
  12. package/design-md/bmw/DESIGN.md +544 -0
  13. package/design-md/bmw/README.md +5 -0
  14. package/design-md/bmw-m/DESIGN.md +503 -0
  15. package/design-md/bmw-m/README.md +5 -0
  16. package/design-md/bugatti/DESIGN.md +454 -0
  17. package/design-md/bugatti/README.md +5 -0
  18. package/design-md/cal/DESIGN.md +542 -0
  19. package/design-md/cal/README.md +5 -0
  20. package/design-md/claude/DESIGN.md +589 -0
  21. package/design-md/claude/README.md +5 -0
  22. package/design-md/clay/DESIGN.md +541 -0
  23. package/design-md/clay/README.md +5 -0
  24. package/design-md/clickhouse/DESIGN.md +544 -0
  25. package/design-md/clickhouse/README.md +5 -0
  26. package/design-md/cohere/DESIGN.md +451 -0
  27. package/design-md/cohere/README.md +5 -0
  28. package/design-md/coinbase/DESIGN.md +570 -0
  29. package/design-md/coinbase/README.md +5 -0
  30. package/design-md/composio/DESIGN.md +506 -0
  31. package/design-md/composio/README.md +5 -0
  32. package/design-md/cursor/DESIGN.md +537 -0
  33. package/design-md/cursor/README.md +5 -0
  34. package/design-md/elevenlabs/DESIGN.md +504 -0
  35. package/design-md/elevenlabs/README.md +5 -0
  36. package/design-md/expo/DESIGN.md +526 -0
  37. package/design-md/expo/README.md +5 -0
  38. package/design-md/ferrari/DESIGN.md +531 -0
  39. package/design-md/ferrari/README.md +5 -0
  40. package/design-md/figma/DESIGN.md +578 -0
  41. package/design-md/figma/README.md +5 -0
  42. package/design-md/framer/DESIGN.md +544 -0
  43. package/design-md/framer/README.md +5 -0
  44. package/design-md/hashicorp/DESIGN.md +575 -0
  45. package/design-md/hashicorp/README.md +5 -0
  46. package/design-md/ibm/DESIGN.md +550 -0
  47. package/design-md/ibm/README.md +5 -0
  48. package/design-md/intercom/DESIGN.md +546 -0
  49. package/design-md/intercom/README.md +5 -0
  50. package/design-md/kraken/DESIGN.md +125 -0
  51. package/design-md/kraken/README.md +5 -0
  52. package/design-md/lamborghini/DESIGN.md +288 -0
  53. package/design-md/lamborghini/README.md +5 -0
  54. package/design-md/linear.app/DESIGN.md +548 -0
  55. package/design-md/linear.app/README.md +5 -0
  56. package/design-md/lovable/DESIGN.md +298 -0
  57. package/design-md/lovable/README.md +5 -0
  58. package/design-md/mastercard/DESIGN.md +365 -0
  59. package/design-md/mastercard/README.md +5 -0
  60. package/design-md/meta/DESIGN.md +683 -0
  61. package/design-md/meta/README.md +5 -0
  62. package/design-md/minimax/DESIGN.md +746 -0
  63. package/design-md/minimax/README.md +5 -0
  64. package/design-md/mintlify/DESIGN.md +852 -0
  65. package/design-md/mintlify/README.md +5 -0
  66. package/design-md/miro/DESIGN.md +825 -0
  67. package/design-md/miro/README.md +5 -0
  68. package/design-md/mistral.ai/DESIGN.md +773 -0
  69. package/design-md/mistral.ai/README.md +5 -0
  70. package/design-md/mongodb/DESIGN.md +767 -0
  71. package/design-md/mongodb/README.md +5 -0
  72. package/design-md/nike/DESIGN.md +575 -0
  73. package/design-md/nike/README.md +5 -0
  74. package/design-md/notion/DESIGN.md +821 -0
  75. package/design-md/notion/README.md +5 -0
  76. package/design-md/nvidia/DESIGN.md +640 -0
  77. package/design-md/nvidia/README.md +5 -0
  78. package/design-md/ollama/DESIGN.md +539 -0
  79. package/design-md/ollama/README.md +5 -0
  80. package/design-md/opencode.ai/DESIGN.md +521 -0
  81. package/design-md/opencode.ai/README.md +5 -0
  82. package/design-md/pinterest/DESIGN.md +597 -0
  83. package/design-md/pinterest/README.md +5 -0
  84. package/design-md/playstation/DESIGN.md +661 -0
  85. package/design-md/playstation/README.md +5 -0
  86. package/design-md/posthog/DESIGN.md +690 -0
  87. package/design-md/posthog/README.md +5 -0
  88. package/design-md/raycast/DESIGN.md +669 -0
  89. package/design-md/raycast/README.md +5 -0
  90. package/design-md/renault/DESIGN.md +589 -0
  91. package/design-md/renault/README.md +5 -0
  92. package/design-md/replicate/DESIGN.md +616 -0
  93. package/design-md/replicate/README.md +5 -0
  94. package/design-md/resend/DESIGN.md +585 -0
  95. package/design-md/resend/README.md +5 -0
  96. package/design-md/revolut/DESIGN.md +636 -0
  97. package/design-md/revolut/README.md +5 -0
  98. package/design-md/runwayml/DESIGN.md +244 -0
  99. package/design-md/runwayml/README.md +5 -0
  100. package/design-md/sanity/DESIGN.md +357 -0
  101. package/design-md/sanity/README.md +5 -0
  102. package/design-md/sentry/DESIGN.md +551 -0
  103. package/design-md/sentry/README.md +5 -0
  104. package/design-md/shopify/DESIGN.md +516 -0
  105. package/design-md/shopify/README.md +5 -0
  106. package/design-md/slack/DESIGN.md +482 -0
  107. package/design-md/spacex/DESIGN.md +363 -0
  108. package/design-md/spacex/README.md +5 -0
  109. package/design-md/spotify/DESIGN.md +246 -0
  110. package/design-md/spotify/README.md +5 -0
  111. package/design-md/starbucks/DESIGN.md +580 -0
  112. package/design-md/starbucks/README.md +5 -0
  113. package/design-md/stripe/DESIGN.md +487 -0
  114. package/design-md/stripe/README.md +5 -0
  115. package/design-md/supabase/DESIGN.md +462 -0
  116. package/design-md/supabase/README.md +5 -0
  117. package/design-md/superhuman/DESIGN.md +448 -0
  118. package/design-md/superhuman/README.md +5 -0
  119. package/design-md/tesla/DESIGN.md +286 -0
  120. package/design-md/tesla/README.md +5 -0
  121. package/design-md/theverge/DESIGN.md +339 -0
  122. package/design-md/theverge/README.md +5 -0
  123. package/design-md/together.ai/DESIGN.md +633 -0
  124. package/design-md/together.ai/README.md +5 -0
  125. package/design-md/uber/DESIGN.md +636 -0
  126. package/design-md/uber/README.md +5 -0
  127. package/design-md/vercel/DESIGN.md +736 -0
  128. package/design-md/vercel/README.md +5 -0
  129. package/design-md/vodafone/DESIGN.md +538 -0
  130. package/design-md/vodafone/README.md +5 -0
  131. package/design-md/voltagent/DESIGN.md +521 -0
  132. package/design-md/voltagent/README.md +5 -0
  133. package/design-md/warp/DESIGN.md +526 -0
  134. package/design-md/warp/README.md +5 -0
  135. package/design-md/webflow/DESIGN.md +588 -0
  136. package/design-md/webflow/README.md +5 -0
  137. package/design-md/wired/DESIGN.md +497 -0
  138. package/design-md/wired/README.md +5 -0
  139. package/design-md/wise/DESIGN.md +544 -0
  140. package/design-md/wise/README.md +5 -0
  141. package/design-md/x.ai/DESIGN.md +465 -0
  142. package/design-md/x.ai/README.md +5 -0
  143. package/design-md/zapier/DESIGN.md +537 -0
  144. package/design-md/zapier/README.md +5 -0
  145. package/package.json +31 -0
@@ -0,0 +1,363 @@
1
+ ---
2
+ version: alpha
3
+ name: Spasex Inspired
4
+ description: An inspired interpretation of Spasex's design language — a mission-oriented aerospace brand built on pure black canvas, full-bleed photographic and video heroes of rockets and Mars landscapes, and uppercase D-DIN display type set in tight vertical leading. UI chrome is intentionally minimal: a single ghost outlined pill button per band, all-caps eyebrow microtext, and a fixed top nav over photography. The system is unapologetically austere — black, white, and the imagery itself.
5
+
6
+ colors:
7
+ primary: "#000000"
8
+ ink: "#000000"
9
+ on-primary: "#ffffff"
10
+ on-primary-mute: "#f0f0fa"
11
+ canvas-night: "#000000"
12
+ canvas-night-soft: "#0a0a0a"
13
+ canvas-light: "#ffffff"
14
+ canvas-cool: "#f0f0fa"
15
+ hairline-on-dark: "#3a3a3f"
16
+ hairline-on-light: "#e0e0e8"
17
+ link-on-dark: "#ffffff"
18
+ link-blue-fallback: "#0000ee"
19
+ ink-mute: "#5a5a5f"
20
+
21
+ typography:
22
+ display-xxl:
23
+ fontFamily: "D-DIN-Bold, Arial Narrow, Arial, Verdana, sans-serif"
24
+ fontSize: 80px
25
+ fontWeight: 700
26
+ lineHeight: 0.95
27
+ letterSpacing: 1.6px
28
+ display-xl:
29
+ fontFamily: "D-DIN-Bold, Arial Narrow, Arial, Verdana, sans-serif"
30
+ fontSize: 60px
31
+ fontWeight: 700
32
+ lineHeight: 1.2
33
+ letterSpacing: 1.2px
34
+ display-lg:
35
+ fontFamily: "D-DIN-Bold, Arial Narrow, Arial, Verdana, sans-serif"
36
+ fontSize: 48px
37
+ fontWeight: 700
38
+ lineHeight: 1.25
39
+ letterSpacing: 0.96px
40
+ body-lg:
41
+ fontFamily: "D-DIN, Arial, Verdana, sans-serif"
42
+ fontSize: 16px
43
+ fontWeight: 400
44
+ lineHeight: 1.7
45
+ letterSpacing: 0.32px
46
+ body-md:
47
+ fontFamily: "D-DIN, Arial, Verdana, sans-serif"
48
+ fontSize: 16px
49
+ fontWeight: 400
50
+ lineHeight: 1.5
51
+ letterSpacing: 0.32px
52
+ button-cap:
53
+ fontFamily: "D-DIN, Arial, Verdana, sans-serif"
54
+ fontSize: 13.008px
55
+ fontWeight: 700
56
+ lineHeight: 0.94
57
+ letterSpacing: 1.17px
58
+ micro-cap:
59
+ fontFamily: "D-DIN, Arial, Verdana, sans-serif"
60
+ fontSize: 12px
61
+ fontWeight: 400
62
+ lineHeight: 2.0
63
+ letterSpacing: 0.96px
64
+ caption:
65
+ fontFamily: "D-DIN, Arial, Verdana, sans-serif"
66
+ fontSize: 13.008px
67
+ fontWeight: 400
68
+ lineHeight: 1.5
69
+ letterSpacing: 0
70
+
71
+ rounded:
72
+ xs: 4px
73
+ sm: 8px
74
+ md: 16px
75
+ pill: 32px
76
+ full: 9999px
77
+
78
+ spacing:
79
+ xxs: 4px
80
+ xs: 8px
81
+ sm: 12px
82
+ md: 16px
83
+ lg: 18px
84
+ xl: 24px
85
+ xxl: 32px
86
+ huge: 48px
87
+
88
+ components:
89
+ button-ghost-on-dark:
90
+ backgroundColor: "{colors.canvas-night}"
91
+ textColor: "{colors.on-primary}"
92
+ typography: "{typography.button-cap}"
93
+ rounded: "{rounded.pill}"
94
+ padding: 18px 24px
95
+ button-ghost-on-light:
96
+ backgroundColor: "{colors.canvas-light}"
97
+ textColor: "{colors.ink}"
98
+ typography: "{typography.button-cap}"
99
+ rounded: "{rounded.pill}"
100
+ padding: 18px 24px
101
+ button-filled-cool:
102
+ backgroundColor: "{colors.canvas-cool}"
103
+ textColor: "{colors.ink}"
104
+ typography: "{typography.button-cap}"
105
+ rounded: "{rounded.pill}"
106
+ padding: 18px 24px
107
+ text-input:
108
+ backgroundColor: "{colors.canvas-light}"
109
+ textColor: "{colors.ink}"
110
+ typography: "{typography.body-md}"
111
+ rounded: "{rounded.xs}"
112
+ padding: 12px 16px
113
+ card-photo-band:
114
+ backgroundColor: "{colors.canvas-night}"
115
+ textColor: "{colors.on-primary}"
116
+ typography: "{typography.body-md}"
117
+ rounded: "{rounded.xs}"
118
+ padding: 0px
119
+ card-shop-product:
120
+ backgroundColor: "{colors.canvas-light}"
121
+ textColor: "{colors.ink}"
122
+ typography: "{typography.body-md}"
123
+ rounded: "{rounded.sm}"
124
+ padding: 16px
125
+ nav-bar-overlay:
126
+ backgroundColor: "{colors.canvas-night}"
127
+ textColor: "{colors.on-primary}"
128
+ typography: "{typography.button-cap}"
129
+ rounded: "{rounded.xs}"
130
+ padding: 24px 32px
131
+ link-on-dark:
132
+ backgroundColor: "{colors.canvas-night}"
133
+ textColor: "{colors.link-on-dark}"
134
+ typography: "{typography.body-md}"
135
+ rounded: "{rounded.xs}"
136
+ padding: 0px
137
+ link-on-light:
138
+ backgroundColor: "{colors.canvas-light}"
139
+ textColor: "{colors.ink}"
140
+ typography: "{typography.body-md}"
141
+ rounded: "{rounded.xs}"
142
+ padding: 0px
143
+ footer-dark:
144
+ backgroundColor: "{colors.canvas-night}"
145
+ textColor: "{colors.on-primary}"
146
+ typography: "{typography.caption}"
147
+ rounded: "{rounded.xs}"
148
+ padding: 32px 24px
149
+ ---
150
+
151
+ ## Overview
152
+
153
+ Spasex's design language is an exercise in negation: pure black canvas, white display type set in tight vertical leading and uppercase, full-bleed photography or autoplaying rocket-launch video as the only chrome. There is no brand color beyond black-and-white; there are no decorative shapes; there are no card grids or pricing tables on the marketing pages. Every band is a single full-viewport photograph or video paired with one all-caps headline at `{typography.display-xxl}` (80px D-DIN-Bold) and one ghost-outlined pill CTA. The composition is closer to a film title card than a SaaS landing page.
154
+
155
+ The brand's depth is photographic. Mars landscapes, rocket exhaust plumes, the F9 booster on a launchpad at sunset — these are the design system. Type sits over them at high opacity with no scrim, no gradient overlay; the photographs are graded so the type lands cleanly. When type does need a background, it sits on `{colors.canvas-night-soft}` (a barely-lifted near-black) with a 1px hairline in `{colors.hairline-on-dark}`.
156
+
157
+ Typography splits between **D-DIN-Bold** for display tiers (uppercase, tight tracking, condensed feel) and **D-DIN** regular for body and button labels. There is no third family — even pricing on the shop site uses the same two cuts. The display sizes are unusually tight in vertical leading (0.95–1.25) and unusually loose in horizontal tracking (1.6px positive at 80px) — the brand feels engineered rather than designed.
158
+
159
+ **Key Characteristics:**
160
+ - Single canvas: pure `{colors.canvas-night}` (`#000000`) for marketing; `{colors.canvas-light}` only on the shop site.
161
+ - Display tier in uppercase D-DIN-Bold with positive horizontal tracking (1.6px at 80px) — the brand's typographic signature.
162
+ - Full-bleed photography or autoplaying video as the dominant decorative element; type sits directly on imagery with no scrim.
163
+ - Single ghost-outlined pill CTA per band, at `{rounded.pill}` 32px radius — never filled, never accent-colored.
164
+ - All-caps eyebrow microtext (`{typography.micro-cap}` and `{typography.button-cap}`) with positive 0.96–1.17px tracking — every chrome element shouts in caps.
165
+ - Fixed top nav overlaid on photography — no opaque background, just white-on-image.
166
+ - Tight 0.95 line-height on the 80px display — vertical compression is the engineering aesthetic.
167
+
168
+ ## Colors
169
+
170
+ > **Source pages:** home (`/`), `/shop`, `/vehicles/starship`, `/humanspaceflight/overview`, `/mission`.
171
+
172
+ ### Brand & Accent
173
+ The brand has no accent colors. Black and white do all the chromatic work; photography supplies every other hue.
174
+
175
+ ### Surface
176
+ - **Canvas Night** (`{colors.canvas-night}` — `#000000`): Default marketing canvas. Pure black, no tint.
177
+ - **Canvas Night Soft** (`{colors.canvas-night-soft}` — `#0a0a0a`): Barely-lifted near-black for content sections that need a subtle separation from the pure-black hero.
178
+ - **Canvas Light** (`{colors.canvas-light}` — `#ffffff`): The shop site's product surface.
179
+ - **Canvas Cool** (`{colors.canvas-cool}` — `#f0f0fa`): A pale cool-blue-white used as the secondary surface on the shop site and as the hover-canvas of certain ghost buttons.
180
+ - **Hairline on Dark** (`{colors.hairline-on-dark}` — `#3a3a3f`): 1px borders on dark surface chrome.
181
+ - **Hairline on Light** (`{colors.hairline-on-light}` — `#e0e0e8`): Borders on shop-site cards.
182
+
183
+ ### Text
184
+ - **On Primary** (`{colors.on-primary}` — `#ffffff`): Default text on dark canvas; the dominant text color across the marketing site.
185
+ - **On Primary Mute** (`{colors.on-primary-mute}` — `#f0f0fa`): Slightly cooled-white used for secondary text on dark surfaces — barely distinguishable from `{colors.on-primary}` but enough to suggest a hierarchy.
186
+ - **Ink** (`{colors.ink}` — `#000000`): Default text on light surfaces (shop site).
187
+ - **Ink Mute** (`{colors.ink-mute}` — `#5a5a5f`): Secondary text on light surfaces.
188
+
189
+ ### Link
190
+ - **Link on Dark** (`{colors.link-on-dark}` — `#ffffff`): Underlined inline link on dark canvas.
191
+ - **Link Blue Fallback** (`{colors.link-blue-fallback}` — `#0000ee`): The browser default that appears in unstyled fallback contexts — documented for completeness, not used as a brand color.
192
+
193
+ ## Typography
194
+
195
+ ### Font Family
196
+
197
+ The display tier is **D-DIN-Bold** — a condensed industrial sans inspired by the German DIN 1451 standard (used on autobahn road signage and engineering blueprints). When unavailable, fall back to **Arial Narrow**, then Arial, then Verdana — the fallback chain prioritizes width compression over ornament.
198
+
199
+ The UI tier is **D-DIN** (regular weight) — the same family at standard width — used for body, button labels, and captions.
200
+
201
+ D-DIN is freely available from the **DIN Type Foundry** (and a free version under the same name is widely distributed). For maximum brand fidelity, use D-DIN directly; as a substitute, **Inter** at heavy weights (700+) with letter-spacing of 1.6px positive tracking approximates the rhythm. Avoid serif or humanist sans alternatives.
202
+
203
+ ### Hierarchy
204
+
205
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
206
+ |---|---|---|---|---|---|
207
+ | `{typography.display-xxl}` | 80px | 700 | 0.95 | 1.6px | Hero headline (uppercase) |
208
+ | `{typography.display-xl}` | 60px | 700 | 1.2 | 1.2px | Section opener (uppercase) |
209
+ | `{typography.display-lg}` | 48px | 700 | 1.25 | 0.96px | Sub-section heading (uppercase) |
210
+ | `{typography.body-lg}` | 16px | 400 | 1.7 | 0.32px | Marketing body lead |
211
+ | `{typography.body-md}` | 16px | 400 | 1.5 | 0.32px | Default UI body |
212
+ | `{typography.button-cap}` | 13.008px | 700 | 0.94 | 1.17px | All-caps button label |
213
+ | `{typography.micro-cap}` | 12px | 400 | 2.0 | 0.96px | All-caps eyebrow / nav item |
214
+ | `{typography.caption}` | 13.008px | 400 | 1.5 | 0 | Helper / footer text |
215
+
216
+ ### Principles
217
+ - **Uppercase across display.** Every display tier renders in uppercase. The brand never uses sentence-case display headlines.
218
+ - **Tight vertical leading on display.** 0.95 at 80px and 1.2 at 60px — the type stacks engineer-tight.
219
+ - **Wide horizontal tracking.** Positive 0.96–1.6px tracking on display sizes; positive 0.96–1.17px on caps eyebrows. The wide tracking is the brand's signature optical air.
220
+ - **No mono.** Code blocks are not part of the brand's typographic system.
221
+
222
+ ### Note on Font Substitutes
223
+ **D-DIN** is freely available (the original DIN-style face under that name is widely distributed). When unavailable, use **Inter** at 700 weight with `letter-spacing: 1.6px`, `text-transform: uppercase`, and `line-height: 0.95` for display sizes — this matches the rhythm. Avoid Helvetica or Arial at default weights — the brand needs the condensed industrial cut. Avoid serif fallbacks entirely.
224
+
225
+ ## Layout
226
+
227
+ ### Spacing System
228
+ - **Base unit**: 8px (with denser sub-units 4 / 12 / 16 / 18 / 24).
229
+ - **Tokens**: `{spacing.xxs}` 4px · `{spacing.xs}` 8px · `{spacing.sm}` 12px · `{spacing.md}` 16px · `{spacing.lg}` 18px · `{spacing.xl}` 24px · `{spacing.xxl}` 32px · `{spacing.huge}` 48px.
230
+ - **Section padding**: full-viewport bands on marketing — no internal padding above/below; the photograph IS the section. On the shop site, sections use 48–64px vertical padding.
231
+
232
+ ### Grid & Container
233
+ - Marketing pages have no container — every band is full-viewport-width, full-viewport-height (or close to it) with photography filling the entire frame.
234
+ - Shop product grid: 4-up at desktop, 2-up at tablet, 1-up at mobile.
235
+ - Type sits inside an inner ~1200px reading column centered horizontally over the full-bleed photograph.
236
+
237
+ ### Whitespace Philosophy
238
+ The marketing pages have minimal traditional whitespace — the photograph occupies all space. "Whitespace" here means the dark sky in a rocket photograph or the empty stretch of Martian terrain. Negative space is photographic, not a UI choice. On the shop site whitespace returns to standard 32px grid gutters.
239
+
240
+ ## Elevation & Depth
241
+
242
+ | Level | Treatment | Use |
243
+ |---|---|---|
244
+ | 0 | Flat | Default — and the only level on marketing surfaces |
245
+ | 1 | Photographic — full-bleed image or video | The primary depth medium; photographs do all the lifting |
246
+
247
+ The brand does not use drop shadows, blurs, glows, or gradient overlays. Depth is photographic: a rocket launching at twilight has natural atmospheric depth that no CSS shadow could simulate. When type needs separation from imagery, the image is graded darker rather than scrimmed.
248
+
249
+ ### Decorative Depth
250
+ Photography and autoplaying rocket-launch video are the only decorative depth. There are no illustrations, no icons beyond a few minimal SVG arrow chevrons in nav and CTA hover states.
251
+
252
+ ## Shapes
253
+
254
+ ### Border Radius Scale
255
+
256
+ | Token | Value | Use |
257
+ |---|---|---|
258
+ | `{rounded.xs}` | 4px | Form inputs (shop site) |
259
+ | `{rounded.sm}` | 8px | Shop product card chrome, video frames |
260
+ | `{rounded.md}` | 16px | Larger surface chrome |
261
+ | `{rounded.pill}` | 32px | Ghost outlined pill CTAs (the brand's signature button shape) |
262
+ | `{rounded.full}` | 9999px | Circular play-button overlays on video frames |
263
+
264
+ ### Photography Geometry
265
+ Every photograph is full-viewport-bleed, edge-to-edge, never inset in a card on the marketing site. On the shop site, product photography sits inside `{rounded.sm}` 8px containers with no shadow. Aspect ratios on marketing photography vary with the source image — there is no enforced ratio; the photograph leads.
266
+
267
+ ## Components
268
+
269
+ ### Buttons
270
+
271
+ **`button-ghost-on-dark`** — the universal CTA on marketing surfaces.
272
+ - Background `{colors.canvas-night}` (transparent against the photographed canvas), 1px solid `{colors.on-primary}` border, text `{colors.on-primary}`, type `{typography.button-cap}` (uppercase, 13px / 700 / 1.17px tracking), padding `{spacing.lg} {spacing.xl}` (18px 24px), rounded `{rounded.pill}` 32px.
273
+
274
+ **`button-ghost-on-light`** — the same button on shop / light pages.
275
+ - Background `{colors.canvas-light}` (transparent against light canvas), 1px solid `{colors.ink}` border, text `{colors.ink}`, otherwise identical.
276
+
277
+ **`button-filled-cool`** — fill variant on shop product cards.
278
+ - Background `{colors.canvas-cool}`, text `{colors.ink}`, same pill geometry. Used as "Add to cart" or similar product CTAs.
279
+
280
+ ### Cards & Containers
281
+
282
+ **`card-photo-band`** — full-bleed photographic band on marketing pages.
283
+ - Background `{colors.canvas-night}`, padding 0, rounded `{rounded.xs}`. The photograph fills the entire band; type and CTA sit overlaid.
284
+
285
+ **`card-shop-product`** — product card on the shop site.
286
+ - Background `{colors.canvas-light}`, padding `{spacing.md}` 16px, rounded `{rounded.sm}` 8px, 1px `{colors.hairline-on-light}` border. Product photo on top, name in `{typography.body-md}`, price in `{typography.body-md}` 700 weight, "Add to cart" button at the bottom.
287
+
288
+ ### Inputs & Forms
289
+
290
+ **`text-input`** — form input on the shop site.
291
+ - Background `{colors.canvas-light}`, text `{colors.ink}`, type `{typography.body-md}`, padding `{spacing.sm} {spacing.md}` (12px 16px), rounded `{rounded.xs}` 4px, 1px `{colors.hairline-on-light}` border.
292
+
293
+ ### Navigation
294
+
295
+ **`nav-bar-overlay`** — top nav across the marketing site.
296
+ - Background `{colors.canvas-night}` (transparent over the hero photo), text `{colors.on-primary}`, type `{typography.button-cap}` (uppercase). Logo wordmark on the left at ~147×19px, nav items horizontal in caps, padding `{spacing.xl} {spacing.xxl}` (24px 32px). The nav is fixed/sticky on scroll, retaining the overlay treatment.
297
+
298
+ ### Signature Components
299
+
300
+ **Full-Bleed Photo / Video Hero** — every marketing band is a full-viewport photograph or autoplaying rocket-launch video. Type and CTA sit overlaid on the photograph at high opacity with no scrim. The photograph is graded so type lands cleanly without an overlay layer.
301
+
302
+ **Uppercase Display Headline** — the 80px D-DIN-Bold uppercase headline with 1.6px positive tracking is the brand's most recognizable typographic moment. Always uppercase, always bold-weight, always positively tracked.
303
+
304
+ **`link-on-dark`** — inline links on dark canvas.
305
+ - Text `{colors.link-on-dark}` (white) with persistent underline.
306
+
307
+ **`link-on-light`** — inline links on light canvas.
308
+ - Text `{colors.ink}` with persistent underline.
309
+
310
+ **`footer-dark`** — site-wide footer.
311
+ - Background `{colors.canvas-night}`, text `{colors.on-primary}`, type `{typography.caption}`, padding `{spacing.xxl} {spacing.xl}` (32px 24px). Holds nav columns in `{typography.micro-cap}` (uppercase), and a small legal/copyright row at the bottom.
312
+
313
+ ## Do's and Don'ts
314
+
315
+ ### Do
316
+ - Use full-bleed photography or autoplaying video as the dominant decorative element on every marketing band.
317
+ - Render display tiers in uppercase D-DIN-Bold with positive 0.96–1.6px letter-spacing — the wide tracking is the signature.
318
+ - Use a single `{button-ghost-on-dark}` per band — the brand does NOT show two CTAs side by side on marketing surfaces.
319
+ - Pair every photograph with type that respects the imagery — no scrims, no gradients, no overlays. Grade the photo, not the canvas.
320
+ - Keep nav overlay-style (transparent, white-on-image) on marketing pages.
321
+
322
+ ### Don't
323
+ - Don't introduce brand accent colors — black, white, and photography are the entire palette.
324
+ - Don't use drop shadows or gradient overlays on dark canvas — they fight the photography.
325
+ - Don't render display tiers in sentence-case or title-case — uppercase is the brand.
326
+ - Don't put filled buttons on marketing surfaces — the ghost outlined pill is the only marketing CTA.
327
+ - Don't use serif or humanist sans alternatives — the condensed industrial DIN cut is non-negotiable.
328
+
329
+ ## Responsive Behavior
330
+
331
+ ### Breakpoints
332
+
333
+ | Name | Width | Key Changes |
334
+ |---|---|---|
335
+ | Wide | ≥ 1500px | Full hero photograph; max-content type column at 1200px |
336
+ | Desktop | 1280–1499px | Default desktop layout |
337
+ | Laptop | 961–1279px | Type column tightens; photo crops adjust |
338
+ | Tablet | 768–960px | Display drops 80 → 60px; nav compresses |
339
+ | Mobile | 600–767px | Display drops to 48px; ghost button retains pill shape |
340
+ | Small Mobile | < 600px | Display drops to 40px; nav becomes hamburger |
341
+
342
+ ### Touch Targets
343
+ - Ghost pill buttons hit ≥ 50×50px due to the 18px vertical padding × 13px line-height. WCAG AAA compliant.
344
+ - Form fields stay at the 44px minimum height.
345
+
346
+ ### Collapsing Strategy
347
+ - Display sizes stair-step 80 → 60 → 48 → 40px through the breakpoints.
348
+ - Photography re-crops to focal subject on smaller widths (rocket centered, Mars landscape centered).
349
+ - Top nav collapses to hamburger below 768px; menu retains the dark overlay treatment.
350
+ - Shop product grid stair-steps 4-up → 2-up → 1-up.
351
+
352
+ ### Image Behavior
353
+ Marketing photography uses `srcset` for desktop / tablet / mobile with art-direction crops at major breakpoints. Mobile crops favor the central focal subject; wide crops favor environmental context (full launch pad, full Martian horizon).
354
+
355
+ ## Iteration Guide
356
+
357
+ 1. Focus on ONE component at a time.
358
+ 2. Reference component names and tokens directly (`{colors.canvas-night}`, `{button-ghost-on-dark}`, `{rounded.pill}`).
359
+ 3. Run `npx @google/design.md lint DESIGN.md` after edits.
360
+ 4. Add new variants as separate entries.
361
+ 5. Default body to `{typography.body-md}`; reserve `{typography.body-lg}` for marketing leads.
362
+ 6. The black-and-white-only rule is load-bearing — adding a brand accent color breaks the system.
363
+ 7. Ghost pill is the only marketing CTA; filled buttons live exclusively on the shop site.
@@ -0,0 +1,5 @@
1
+ # Spacex Inspired Design System
2
+
3
+ Design system details have been moved to: https://getdesign.md/spacex/design-md
4
+
5
+ You can also view previews, dark mode examples, and download options on getdesign.md.
@@ -0,0 +1,246 @@
1
+ # Design System Inspired by Spotify
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Spotify's web interface is a dark, immersive music player that wraps listeners in a near-black cocoon (`#121212`, `#181818`, `#1f1f1f`) where album art and content become the primary source of color. The design philosophy is "content-first darkness" — the UI recedes into shadow so that music, podcasts, and playlists can glow. Every surface is a shade of charcoal, creating a theater-like environment where the only true color comes from the iconic Spotify Green (`#1ed760`) and the album artwork itself.
6
+
7
+ The typography uses SpotifyMixUI and SpotifyMixUITitle — proprietary fonts from the CircularSp family (Circular by Lineto, customized for Spotify) with an extensive fallback stack that includes Arabic, Hebrew, Cyrillic, Greek, Devanagari, and CJK fonts, reflecting Spotify's global reach. The type system is compact and functional: 700 (bold) for emphasis and navigation, 600 (semibold) for secondary emphasis, and 400 (regular) for body. Buttons use uppercase with positive letter-spacing (1.4px–2px) for a systematic, label-like quality.
8
+
9
+ What distinguishes Spotify is its pill-and-circle geometry. Primary buttons use 500px–9999px radius (full pill), circular play buttons use 50% radius, and search inputs are 500px pills. Combined with heavy shadows (`rgba(0,0,0,0.5) 0px 8px 24px`) on elevated elements and a unique inset border-shadow combo (`rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset`), the result is an interface that feels like a premium audio device — tactile, rounded, and built for touch.
10
+
11
+ **Key Characteristics:**
12
+ - Near-black immersive dark theme (`#121212`–`#1f1f1f`) — UI disappears behind content
13
+ - Spotify Green (`#1ed760`) as singular brand accent — never decorative, always functional
14
+ - SpotifyMixUI/CircularSp font family with global script support
15
+ - Pill buttons (500px–9999px) and circular controls (50%) — rounded, touch-optimized
16
+ - Uppercase button labels with wide letter-spacing (1.4px–2px)
17
+ - Heavy shadows on elevated elements (`rgba(0,0,0,0.5) 0px 8px 24px`)
18
+ - Semantic colors: negative red (`#f3727f`), warning orange (`#ffa42b`), announcement blue (`#539df5`)
19
+ - Album art as the primary color source — the UI is achromatic by design
20
+
21
+ ## 2. Color Palette & Roles
22
+
23
+ ### Primary Brand
24
+ - **Spotify Green** (`#1ed760`): Primary brand accent — play buttons, active states, CTAs
25
+ - **Near Black** (`#121212`): Deepest background surface
26
+ - **Dark Surface** (`#181818`): Cards, containers, elevated surfaces
27
+ - **Mid Dark** (`#1f1f1f`): Button backgrounds, interactive surfaces
28
+
29
+ ### Text
30
+ - **White** (`#ffffff`): `--text-base`, primary text
31
+ - **Silver** (`#b3b3b3`): Secondary text, muted labels, inactive nav
32
+ - **Near White** (`#cbcbcb`): Slightly brighter secondary text
33
+ - **Light** (`#fdfdfd`): Near-pure white for maximum emphasis
34
+
35
+ ### Semantic
36
+ - **Negative Red** (`#f3727f`): `--text-negative`, error states
37
+ - **Warning Orange** (`#ffa42b`): `--text-warning`, warning states
38
+ - **Announcement Blue** (`#539df5`): `--text-announcement`, info states
39
+
40
+ ### Surface & Border
41
+ - **Dark Card** (`#252525`): Elevated card surface
42
+ - **Mid Card** (`#272727`): Alternate card surface
43
+ - **Border Gray** (`#4d4d4d`): Button borders on dark
44
+ - **Light Border** (`#7c7c7c`): Outlined button borders, muted links
45
+ - **Separator** (`#b3b3b3`): Divider lines
46
+ - **Light Surface** (`#eeeeee`): Light-mode buttons (rare)
47
+ - **Spotify Green Border** (`#1db954`): Green accent border variant
48
+
49
+ ### Shadows
50
+ - **Heavy** (`rgba(0,0,0,0.5) 0px 8px 24px`): Dialogs, menus, elevated panels
51
+ - **Medium** (`rgba(0,0,0,0.3) 0px 8px 8px`): Cards, dropdowns
52
+ - **Inset Border** (`rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset`): Input border-shadow combo
53
+
54
+ ## 3. Typography Rules
55
+
56
+ ### Font Families
57
+ - **Title**: `SpotifyMixUITitle`, fallbacks: `CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva, Helvetica Neue, helvetica, arial, Hiragino Sans, Hiragino Kaku Gothic ProN, Meiryo, MS Gothic`
58
+ - **UI / Body**: `SpotifyMixUI`, same fallback stack
59
+
60
+ ### Hierarchy
61
+
62
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
63
+ |------|------|------|--------|-------------|----------------|-------|
64
+ | Section Title | SpotifyMixUITitle | 24px (1.50rem) | 700 | normal | normal | Bold title weight |
65
+ | Feature Heading | SpotifyMixUI | 18px (1.13rem) | 600 | 1.30 (tight) | normal | Semibold section heads |
66
+ | Body Bold | SpotifyMixUI | 16px (1.00rem) | 700 | normal | normal | Emphasized text |
67
+ | Body | SpotifyMixUI | 16px (1.00rem) | 400 | normal | normal | Standard body |
68
+ | Button Uppercase | SpotifyMixUI | 14px (0.88rem) | 600–700 | 1.00 (tight) | 1.4px–2px | `text-transform: uppercase` |
69
+ | Button | SpotifyMixUI | 14px (0.88rem) | 700 | normal | 0.14px | Standard button |
70
+ | Nav Link Bold | SpotifyMixUI | 14px (0.88rem) | 700 | normal | normal | Navigation |
71
+ | Nav Link | SpotifyMixUI | 14px (0.88rem) | 400 | normal | normal | Inactive nav |
72
+ | Caption Bold | SpotifyMixUI | 14px (0.88rem) | 700 | 1.50–1.54 | normal | Bold metadata |
73
+ | Caption | SpotifyMixUI | 14px (0.88rem) | 400 | normal | normal | Metadata |
74
+ | Small Bold | SpotifyMixUI | 12px (0.75rem) | 700 | 1.50 | normal | Tags, counts |
75
+ | Small | SpotifyMixUI | 12px (0.75rem) | 400 | normal | normal | Fine print |
76
+ | Badge | SpotifyMixUI | 10.5px (0.66rem) | 600 | 1.33 | normal | `text-transform: capitalize` |
77
+ | Micro | SpotifyMixUI | 10px (0.63rem) | 400 | normal | normal | Smallest text |
78
+
79
+ ### Principles
80
+ - **Bold/regular binary**: Most text is either 700 (bold) or 400 (regular), with 600 used sparingly. This creates a clear visual hierarchy through weight contrast rather than size variation.
81
+ - **Uppercase buttons as system**: Button labels use uppercase + wide letter-spacing (1.4px–2px), creating a systematic "label" voice distinct from content text.
82
+ - **Compact sizing**: The range is 10px–24px — narrower than most systems. Spotify's type is compact and functional, designed for scanning playlists, not reading articles.
83
+ - **Global script support**: The extensive fallback stack (Arabic, Hebrew, Cyrillic, Greek, Devanagari, CJK) reflects Spotify's 180+ market reach.
84
+
85
+ ## 4. Component Stylings
86
+
87
+ ### Buttons
88
+
89
+ **Dark Pill**
90
+ - Background: `#1f1f1f`
91
+ - Text: `#ffffff` or `#b3b3b3`
92
+ - Padding: 8px 16px
93
+ - Radius: 9999px (full pill)
94
+ - Use: Navigation pills, secondary actions
95
+
96
+ **Dark Large Pill**
97
+ - Background: `#181818`
98
+ - Text: `#ffffff`
99
+ - Padding: 0px 43px
100
+ - Radius: 500px
101
+ - Use: Primary app navigation buttons
102
+
103
+ **Light Pill**
104
+ - Background: `#eeeeee`
105
+ - Text: `#181818`
106
+ - Radius: 500px
107
+ - Use: Light-mode CTAs (cookie consent, marketing)
108
+
109
+ **Outlined Pill**
110
+ - Background: transparent
111
+ - Text: `#ffffff`
112
+ - Border: `1px solid #7c7c7c`
113
+ - Padding: 4px 16px 4px 36px (asymmetric for icon)
114
+ - Radius: 9999px
115
+ - Use: Follow buttons, secondary actions
116
+
117
+ **Circular Play**
118
+ - Background: `#1f1f1f`
119
+ - Text: `#ffffff`
120
+ - Padding: 12px
121
+ - Radius: 50% (circle)
122
+ - Use: Play/pause controls
123
+
124
+ ### Cards & Containers
125
+ - Background: `#181818` or `#1f1f1f`
126
+ - Radius: 6px–8px
127
+ - No visible borders on most cards
128
+ - Hover: slight background lightening
129
+ - Shadow: `rgba(0,0,0,0.3) 0px 8px 8px` on elevated
130
+
131
+ ### Inputs
132
+ - Search input: `#1f1f1f` background, `#ffffff` text
133
+ - Radius: 500px (pill)
134
+ - Padding: 12px 96px 12px 48px (icon-aware)
135
+ - Focus: border becomes `#000000`, outline `1px solid`
136
+
137
+ ### Navigation
138
+ - Dark sidebar with SpotifyMixUI 14px weight 700 for active, 400 for inactive
139
+ - `#b3b3b3` muted color for inactive items, `#ffffff` for active
140
+ - Circular icon buttons (50% radius)
141
+ - Spotify logo top-left in green
142
+
143
+ ## 5. Layout Principles
144
+
145
+ ### Spacing System
146
+ - Base unit: 8px
147
+ - Scale: 1px, 2px, 3px, 4px, 5px, 6px, 8px, 10px, 12px, 14px, 15px, 16px, 20px
148
+
149
+ ### Grid & Container
150
+ - Sidebar (fixed) + main content area
151
+ - Grid-based album/playlist cards
152
+ - Full-width now-playing bar at bottom
153
+ - Responsive content area fills remaining space
154
+
155
+ ### Whitespace Philosophy
156
+ - **Dark compression**: Spotify packs content densely — playlist grids, track lists, and navigation are all tightly spaced. The dark background provides visual rest between elements without needing large gaps.
157
+ - **Content density over breathing room**: This is an app, not a marketing site. Every pixel serves the listening experience.
158
+
159
+ ### Border Radius Scale
160
+ - Minimal (2px): Badges, explicit tags
161
+ - Subtle (4px): Inputs, small elements
162
+ - Standard (6px): Album art containers, cards
163
+ - Comfortable (8px): Sections, dialogs
164
+ - Medium (10px–20px): Panels, overlay elements
165
+ - Large (100px): Large pill buttons
166
+ - Pill (500px): Primary buttons, search input
167
+ - Full Pill (9999px): Navigation pills, search
168
+ - Circle (50%): Play buttons, avatars, icons
169
+
170
+ ## 6. Depth & Elevation
171
+
172
+ | Level | Treatment | Use |
173
+ |-------|-----------|-----|
174
+ | Base (Level 0) | `#121212` background | Deepest layer, page background |
175
+ | Surface (Level 1) | `#181818` or `#1f1f1f` | Cards, sidebar, containers |
176
+ | Elevated (Level 2) | `rgba(0,0,0,0.3) 0px 8px 8px` | Dropdown menus, hover cards |
177
+ | Dialog (Level 3) | `rgba(0,0,0,0.5) 0px 8px 24px` | Modals, overlays, menus |
178
+ | Inset (Border) | `rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset` | Input borders |
179
+
180
+ **Shadow Philosophy**: Spotify uses notably heavy shadows for a dark-themed app. The 0.5 opacity shadow at 24px blur creates a dramatic "floating in darkness" effect for dialogs and menus, while the 0.3 opacity at 8px blur provides a more subtle card lift. The unique inset border-shadow combination on inputs creates a recessed, tactile quality.
181
+
182
+ ## 7. Do's and Don'ts
183
+
184
+ ### Do
185
+ - Use near-black backgrounds (`#121212`–`#1f1f1f`) — depth through shade variation
186
+ - Apply Spotify Green (`#1ed760`) only for play controls, active states, and primary CTAs
187
+ - Use pill shape (500px–9999px) for all buttons — circular (50%) for play controls
188
+ - Apply uppercase + wide letter-spacing (1.4px–2px) on button labels
189
+ - Keep typography compact (10px–24px range) — this is an app, not a magazine
190
+ - Use heavy shadows (`0.3–0.5 opacity`) for elevated elements on dark backgrounds
191
+ - Let album art provide color — the UI itself is achromatic
192
+
193
+ ### Don't
194
+ - Don't use Spotify Green decoratively or on backgrounds — it's functional only
195
+ - Don't use light backgrounds for primary surfaces — the dark immersion is core
196
+ - Don't skip the pill/circle geometry on buttons — square buttons break the identity
197
+ - Don't use thin/subtle shadows — on dark backgrounds, shadows need to be heavy to be visible
198
+ - Don't add additional brand colors — green + achromatic grays is the complete palette
199
+ - Don't use relaxed line-heights — Spotify's typography is compact and dense
200
+ - Don't expose raw gray borders — use shadow-based or inset borders instead
201
+
202
+ ## 8. Responsive Behavior
203
+
204
+ ### Breakpoints
205
+ | Name | Width | Key Changes |
206
+ |------|-------|-------------|
207
+ | Mobile Small | <425px | Compact mobile layout |
208
+ | Mobile | 425–576px | Standard mobile |
209
+ | Tablet | 576–768px | 2-column grid |
210
+ | Tablet Large | 768–896px | Expanded layout |
211
+ | Desktop Small | 896–1024px | Sidebar visible |
212
+ | Desktop | 1024–1280px | Full desktop layout |
213
+ | Large Desktop | >1280px | Expanded grid |
214
+
215
+ ### Collapsing Strategy
216
+ - Sidebar: full → collapsed → hidden
217
+ - Album grid: 5 columns → 3 → 2 → 1
218
+ - Now-playing bar: maintained at all sizes
219
+ - Search: pill input maintained, width adjusts
220
+ - Navigation: sidebar → bottom bar on mobile
221
+
222
+ ## 9. Agent Prompt Guide
223
+
224
+ ### Quick Color Reference
225
+ - Background: Near Black (`#121212`)
226
+ - Surface: Dark Card (`#181818`)
227
+ - Text: White (`#ffffff`)
228
+ - Secondary text: Silver (`#b3b3b3`)
229
+ - Accent: Spotify Green (`#1ed760`)
230
+ - Border: `#4d4d4d`
231
+ - Error: Negative Red (`#f3727f`)
232
+
233
+ ### Example Component Prompts
234
+ - "Create a dark card: #181818 background, 8px radius. Title at 16px SpotifyMixUI weight 700, white text. Subtitle at 14px weight 400, #b3b3b3. Shadow rgba(0,0,0,0.3) 0px 8px 8px on hover."
235
+ - "Design a pill button: #1f1f1f background, white text, 9999px radius, 8px 16px padding. 14px SpotifyMixUI weight 700, uppercase, letter-spacing 1.4px."
236
+ - "Build a circular play button: Spotify Green (#1ed760) background, #000000 icon, 50% radius, 12px padding."
237
+ - "Create search input: #1f1f1f background, white text, 500px radius, 12px 48px padding. Inset border: rgb(124,124,124) 0px 0px 0px 1px inset."
238
+ - "Design navigation sidebar: #121212 background. Active items: 14px weight 700, white. Inactive: 14px weight 400, #b3b3b3."
239
+
240
+ ### Iteration Guide
241
+ 1. Start with #121212 — everything lives in near-black darkness
242
+ 2. Spotify Green for functional highlights only (play, active, CTA)
243
+ 3. Pill everything — 500px for large, 9999px for small, 50% for circular
244
+ 4. Uppercase + wide tracking on buttons — the systematic label voice
245
+ 5. Heavy shadows (0.3–0.5 opacity) for elevation — light shadows are invisible on dark
246
+ 6. Album art provides all the color — the UI stays achromatic
@@ -0,0 +1,5 @@
1
+ # Spotify Inspired Design System
2
+
3
+ Design system details have been moved to: https://getdesign.md/spotify/design-md
4
+
5
+ You can also view previews, dark mode examples, and download options on getdesign.md.