savant-code 0.0.22 → 0.0.23

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 (79) hide show
  1. package/README.md +5 -0
  2. package/launcher.js +192 -5
  3. package/package.json +3 -2
  4. package/savant-design-systems/SKILL.md +12 -0
  5. package/savant-design-systems/manifest.json +2541 -0
  6. package/savant-design-systems/resources/airbnb-design-analysis.json +983 -0
  7. package/savant-design-systems/resources/airtable-design-analysis.json +931 -0
  8. package/savant-design-systems/resources/apple-design-analysis.json +920 -0
  9. package/savant-design-systems/resources/binance-design-analysis.json +1068 -0
  10. package/savant-design-systems/resources/bmw-design-analysis.json +912 -0
  11. package/savant-design-systems/resources/bmw-m-design-analysis.json +824 -0
  12. package/savant-design-systems/resources/bugatti-design-analysis.json +746 -0
  13. package/savant-design-systems/resources/cal-com-design-analysis.json +913 -0
  14. package/savant-design-systems/resources/claude-design-analysis.json +1007 -0
  15. package/savant-design-systems/resources/clay-design-analysis.json +919 -0
  16. package/savant-design-systems/resources/clickhouse-design-analysis.json +926 -0
  17. package/savant-design-systems/resources/cohere-design-analysis.json +725 -0
  18. package/savant-design-systems/resources/coinbase-design-analysis.json +998 -0
  19. package/savant-design-systems/resources/composio-design-analysis.json +851 -0
  20. package/savant-design-systems/resources/cursor-design-analysis.json +934 -0
  21. package/savant-design-systems/resources/dell-1996-inspired.json +1042 -0
  22. package/savant-design-systems/resources/elevenlabs.json +551 -0
  23. package/savant-design-systems/resources/expo-design-analysis.json +879 -0
  24. package/savant-design-systems/resources/ferrari-design-analysis.json +874 -0
  25. package/savant-design-systems/resources/figma-design-analysis.json +928 -0
  26. package/savant-design-systems/resources/framer-design-analysis.json +891 -0
  27. package/savant-design-systems/resources/hashicorp-design-analysis.json +909 -0
  28. package/savant-design-systems/resources/hp-design-analysis.json +1077 -0
  29. package/savant-design-systems/resources/ibm-design-analysis.json +881 -0
  30. package/savant-design-systems/resources/intercom-design-analysis.json +876 -0
  31. package/savant-design-systems/resources/kraken.json +172 -0
  32. package/savant-design-systems/resources/lamborghini.json +335 -0
  33. package/savant-design-systems/resources/linear-design-analysis.json +890 -0
  34. package/savant-design-systems/resources/lovable.json +345 -0
  35. package/savant-design-systems/resources/mastercard.json +412 -0
  36. package/savant-design-systems/resources/meta-design-analysis.json +1121 -0
  37. package/savant-design-systems/resources/minimax-design-analysis.json +1220 -0
  38. package/savant-design-systems/resources/mintlify-design-analysis.json +1418 -0
  39. package/savant-design-systems/resources/miro-design-analysis.json +1364 -0
  40. package/savant-design-systems/resources/mistral-ai-design-analysis.json +1286 -0
  41. package/savant-design-systems/resources/mongodb-design-analysis.json +1276 -0
  42. package/savant-design-systems/resources/nike-design-analysis.json +938 -0
  43. package/savant-design-systems/resources/nintendo-com-2001-analysis.json +1082 -0
  44. package/savant-design-systems/resources/notion-design-analysis.json +1368 -0
  45. package/savant-design-systems/resources/nvidia-design-analysis.json +1023 -0
  46. package/savant-design-systems/resources/ollama-design-analysis.json +863 -0
  47. package/savant-design-systems/resources/opencode-design-analysis.json +806 -0
  48. package/savant-design-systems/resources/pinterest-design-analysis.json +953 -0
  49. package/savant-design-systems/resources/playstation-design-analysis.json +1053 -0
  50. package/savant-design-systems/resources/posthog-design-analysis.json +1146 -0
  51. package/savant-design-systems/resources/raycast.json +716 -0
  52. package/savant-design-systems/resources/renault-design-analysis.json +916 -0
  53. package/savant-design-systems/resources/replicate-design-analysis.json +986 -0
  54. package/savant-design-systems/resources/resend-design-analysis.json +942 -0
  55. package/savant-design-systems/resources/revolut-design-analysis.json +1008 -0
  56. package/savant-design-systems/resources/runwayml.json +291 -0
  57. package/savant-design-systems/resources/sanity.json +404 -0
  58. package/savant-design-systems/resources/sentri-inspired-design-analysis.json +953 -0
  59. package/savant-design-systems/resources/shopifi-inspired-design-analysis.json +921 -0
  60. package/savant-design-systems/resources/slacc-inspired-design-analysis.json +799 -0
  61. package/savant-design-systems/resources/spacex-inspired-design-analysis.json +598 -0
  62. package/savant-design-systems/resources/spotify.json +293 -0
  63. package/savant-design-systems/resources/starbucks.json +627 -0
  64. package/savant-design-systems/resources/stripi-inspired-design-analysis.json +805 -0
  65. package/savant-design-systems/resources/supabase.json +509 -0
  66. package/savant-design-systems/resources/superhumon-inspired-design-analysis.json +740 -0
  67. package/savant-design-systems/resources/tesla.json +333 -0
  68. package/savant-design-systems/resources/theverge.json +386 -0
  69. package/savant-design-systems/resources/together-ai-inspired-design-analysis.json +1099 -0
  70. package/savant-design-systems/resources/uber-inspired-design-analysis.json +1067 -0
  71. package/savant-design-systems/resources/vercel-inspired-design-analysis.json +1261 -0
  72. package/savant-design-systems/resources/vodafone-inspired-design-analysis.json +912 -0
  73. package/savant-design-systems/resources/voltagent-inspired-design-analysis.json +929 -0
  74. package/savant-design-systems/resources/warp-inspired-design-analysis.json +946 -0
  75. package/savant-design-systems/resources/webflow-inspired-design-analysis.json +1033 -0
  76. package/savant-design-systems/resources/wired-inspired-design-analysis.json +877 -0
  77. package/savant-design-systems/resources/wise-inspired-design-analysis.json +916 -0
  78. package/savant-design-systems/resources/xai-inspired-design-analysis.json +820 -0
  79. package/savant-design-systems/resources/zapier-inspired-design-analysis.json +915 -0
@@ -0,0 +1,986 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "replicate-design-analysis",
4
+ "displayName": "Replicate-design-analysis",
5
+ "description": "Replicate's marketing surfaces pair the warm-cream developer-tools aesthetic\nof an indie ML playground with a confident hot-orange brand accent and a\nsignature display typeface (rb-freigeist-neue) sized aggressively large at\n72px+. The system reads as \"AI lab notebook crossed with print magazine\":\ncream and bone surfaces, dark ink type, monospace code wells, irregular\nhand-drawn-feeling diagrams, and a rich orange used scarcely on the most\nconsequential CTA. Photography of contributors and example outputs is\nsquare-ish with mid-radius corners; everything else is borderless or hairline.\n",
6
+ "source": "embedded",
7
+ "status": "curated-reference",
8
+ "targets": [
9
+ "terminal",
10
+ "react"
11
+ ],
12
+ "contentPath": "packages/design-systems/library/replicate.design.md",
13
+ "sourceContentHash": "c22062d7b4174bf9ced7bc61c48389086cf6eed96a958e098ee70389893b0a15",
14
+ "normalizedContentHash": "de265a687a2c30288329cfe8001baa314d38e3f24926e3db97891224020acec3",
15
+ "provenance": {
16
+ "sourceRepository": "VoltAgent/awesome-design-md",
17
+ "sourceRevision": "working-tree-curated-snapshot",
18
+ "sourcePath": "packages/design-systems/library/replicate.design.md",
19
+ "license": "MIT"
20
+ },
21
+ "fonts": [
22
+ {
23
+ "family": "basier-square",
24
+ "fallback": [
25
+ "system-ui",
26
+ "sans-serif"
27
+ ],
28
+ "redistributable": false
29
+ },
30
+ {
31
+ "family": "jetbrains-mono",
32
+ "fallback": [
33
+ "system-ui",
34
+ "sans-serif"
35
+ ],
36
+ "redistributable": false
37
+ },
38
+ {
39
+ "family": "rb-freigeist-neue",
40
+ "fallback": [
41
+ "system-ui",
42
+ "sans-serif"
43
+ ],
44
+ "redistributable": false
45
+ }
46
+ ],
47
+ "tokens": {
48
+ "colors": {
49
+ "ash": "#8d8d8d",
50
+ "badge-success": "#2b9a66",
51
+ "body": "#3a3a3a",
52
+ "canvas": "#f9f7f3",
53
+ "charcoal": "#575757",
54
+ "divider-dark": "rgba(255,255,255,0.2)",
55
+ "github-dark": "#24292e",
56
+ "hairline": "rgba(32,32,32,0.12)",
57
+ "hairline-strong": "#202020",
58
+ "hero-glow": "#ff6a3d",
59
+ "hero-pink": "#f4a8a0",
60
+ "hero-warm": "#ea2804",
61
+ "ink": "#202020",
62
+ "link": "#ea2804",
63
+ "mute": "#646464",
64
+ "on-dark": "#fcfcfc",
65
+ "on-dark-mute": "rgba(252,252,252,0.72)",
66
+ "on-primary": "#ffffff",
67
+ "primary": "#ea2804",
68
+ "primary-deep": "#c01f00",
69
+ "ring-focus": "rgba(59,130,246,0.5)",
70
+ "stone": "#bbbbbb",
71
+ "surface-bone": "#f3f0e8",
72
+ "surface-card": "#ffffff",
73
+ "surface-dark": "#202020",
74
+ "surface-deep": "#000000"
75
+ },
76
+ "typography": {
77
+ "display-xxl": {
78
+ "fontFamily": "rb-freigeist-neue",
79
+ "fontSize": "128px",
80
+ "fontWeight": 700,
81
+ "letterSpacing": "-3px",
82
+ "lineHeight": 1
83
+ },
84
+ "display-xl": {
85
+ "fontFamily": "rb-freigeist-neue",
86
+ "fontSize": "72px",
87
+ "fontWeight": 700,
88
+ "letterSpacing": "-1.8px",
89
+ "lineHeight": 1
90
+ },
91
+ "display-lg": {
92
+ "fontFamily": "rb-freigeist-neue",
93
+ "fontSize": "48px",
94
+ "fontWeight": 700,
95
+ "letterSpacing": "-1px",
96
+ "lineHeight": 1
97
+ },
98
+ "display-md": {
99
+ "fontFamily": "rb-freigeist-neue",
100
+ "fontSize": "30px",
101
+ "fontWeight": 600,
102
+ "letterSpacing": "-0.5px",
103
+ "lineHeight": 1.2
104
+ },
105
+ "heading-lg": {
106
+ "fontFamily": "basier-square",
107
+ "fontSize": "38.4px",
108
+ "fontWeight": 600,
109
+ "letterSpacing": "-0.5px",
110
+ "lineHeight": 0.83
111
+ },
112
+ "heading-md": {
113
+ "fontFamily": "basier-square",
114
+ "fontSize": "24px",
115
+ "fontWeight": 600,
116
+ "letterSpacing": "-0.35px",
117
+ "lineHeight": 1.33
118
+ },
119
+ "heading-sm": {
120
+ "fontFamily": "basier-square",
121
+ "fontSize": "20px",
122
+ "fontWeight": 600,
123
+ "letterSpacing": "-0.3px",
124
+ "lineHeight": 1.4
125
+ },
126
+ "subtitle": {
127
+ "fontFamily": "rb-freigeist-neue",
128
+ "fontSize": "18px",
129
+ "fontWeight": 600,
130
+ "letterSpacing": 0,
131
+ "lineHeight": 1.56
132
+ },
133
+ "body-lg": {
134
+ "fontFamily": "basier-square",
135
+ "fontSize": "18px",
136
+ "fontWeight": 400,
137
+ "letterSpacing": 0,
138
+ "lineHeight": 1.56
139
+ },
140
+ "body-md": {
141
+ "fontFamily": "basier-square",
142
+ "fontSize": "16px",
143
+ "fontWeight": 400,
144
+ "letterSpacing": 0,
145
+ "lineHeight": 1.5
146
+ },
147
+ "body-sm": {
148
+ "fontFamily": "basier-square",
149
+ "fontSize": "14px",
150
+ "fontWeight": 400,
151
+ "letterSpacing": 0,
152
+ "lineHeight": 1.43
153
+ },
154
+ "button-md": {
155
+ "fontFamily": "basier-square",
156
+ "fontSize": "16px",
157
+ "fontWeight": 600,
158
+ "letterSpacing": 0,
159
+ "lineHeight": 1
160
+ },
161
+ "button-sm": {
162
+ "fontFamily": "basier-square",
163
+ "fontSize": "14px",
164
+ "fontWeight": 600,
165
+ "letterSpacing": 0,
166
+ "lineHeight": 1
167
+ },
168
+ "caption": {
169
+ "fontFamily": "basier-square",
170
+ "fontSize": "12px",
171
+ "fontWeight": 400,
172
+ "letterSpacing": 0,
173
+ "lineHeight": 1.33
174
+ },
175
+ "caption-tight": {
176
+ "fontFamily": "basier-square",
177
+ "fontSize": "14px",
178
+ "fontWeight": 600,
179
+ "letterSpacing": "-0.35px",
180
+ "lineHeight": 1.43
181
+ },
182
+ "code-md": {
183
+ "fontFamily": "jetbrains-mono",
184
+ "fontSize": "14px",
185
+ "fontWeight": 400,
186
+ "letterSpacing": 0,
187
+ "lineHeight": 1.43
188
+ },
189
+ "code-sm": {
190
+ "fontFamily": "jetbrains-mono",
191
+ "fontSize": "11px",
192
+ "fontWeight": 400,
193
+ "letterSpacing": 0,
194
+ "lineHeight": 1.5
195
+ }
196
+ },
197
+ "spacing": {
198
+ "band": "160px",
199
+ "lg": "16px",
200
+ "md": "12px",
201
+ "section": "96px",
202
+ "sm": "8px",
203
+ "xl": "24px",
204
+ "xs": "4px",
205
+ "xxl": "32px",
206
+ "xxs": "2px",
207
+ "xxxl": "48px"
208
+ },
209
+ "radius": {
210
+ "full": "9999px",
211
+ "lg": "16px",
212
+ "md": "10px",
213
+ "none": "0px",
214
+ "sm": "6px",
215
+ "xs": "4px"
216
+ },
217
+ "components": {
218
+ "button-primary": {
219
+ "backgroundColor": "{colors.primary}",
220
+ "height": "44px",
221
+ "padding": "12px 24px",
222
+ "rounded": "{rounded.full}",
223
+ "textColor": "{colors.on-primary}",
224
+ "typography": "{typography.button-md}"
225
+ },
226
+ "button-primary-pressed": {
227
+ "backgroundColor": "{colors.primary-deep}",
228
+ "rounded": "{rounded.full}",
229
+ "textColor": "{colors.on-primary}",
230
+ "typography": "{typography.button-md}"
231
+ },
232
+ "button-dark": {
233
+ "backgroundColor": "{colors.surface-dark}",
234
+ "height": "44px",
235
+ "padding": "12px 24px",
236
+ "rounded": "{rounded.full}",
237
+ "textColor": "{colors.on-dark}",
238
+ "typography": "{typography.button-md}"
239
+ },
240
+ "button-outline": {
241
+ "backgroundColor": "{colors.surface-card}",
242
+ "height": "44px",
243
+ "padding": "11px 23px",
244
+ "rounded": "{rounded.full}",
245
+ "textColor": "{colors.ink}",
246
+ "typography": "{typography.button-md}"
247
+ },
248
+ "button-ghost": {
249
+ "backgroundColor": "{colors.canvas}",
250
+ "height": "36px",
251
+ "padding": "8px 16px",
252
+ "rounded": "{rounded.full}",
253
+ "textColor": "{colors.ink}",
254
+ "typography": "{typography.button-md}"
255
+ },
256
+ "button-icon": {
257
+ "backgroundColor": "{colors.surface-card}",
258
+ "rounded": "{rounded.full}",
259
+ "size": "36px",
260
+ "textColor": "{colors.ink}"
261
+ },
262
+ "text-input": {
263
+ "backgroundColor": "{colors.surface-card}",
264
+ "height": "44px",
265
+ "padding": "12px 20px",
266
+ "rounded": "{rounded.full}",
267
+ "textColor": "{colors.ink}",
268
+ "typography": "{typography.body-md}"
269
+ },
270
+ "hero-band": {
271
+ "backgroundColor": "{colors.hero-warm}",
272
+ "padding": "96px 32px",
273
+ "rounded": "{rounded.none}",
274
+ "textColor": "{colors.on-dark}",
275
+ "typography": "{typography.display-xl}"
276
+ },
277
+ "model-card": {
278
+ "backgroundColor": "{colors.surface-card}",
279
+ "padding": "16px",
280
+ "rounded": "{rounded.md}",
281
+ "textColor": "{colors.ink}",
282
+ "typography": "{typography.body-md}"
283
+ },
284
+ "collection-tile": {
285
+ "backgroundColor": "{colors.canvas}",
286
+ "padding": "24px",
287
+ "rounded": "{rounded.md}",
288
+ "textColor": "{colors.ink}",
289
+ "typography": "{typography.heading-md}"
290
+ },
291
+ "pricing-tier": {
292
+ "backgroundColor": "{colors.surface-card}",
293
+ "padding": "32px",
294
+ "rounded": "{rounded.lg}",
295
+ "textColor": "{colors.ink}",
296
+ "typography": "{typography.body-md}"
297
+ },
298
+ "pricing-tier-featured": {
299
+ "backgroundColor": "{colors.surface-dark}",
300
+ "padding": "32px",
301
+ "rounded": "{rounded.lg}",
302
+ "textColor": "{colors.on-dark}",
303
+ "typography": "{typography.body-md}"
304
+ },
305
+ "code-block": {
306
+ "backgroundColor": "{colors.surface-dark}",
307
+ "padding": "24px",
308
+ "rounded": "{rounded.md}",
309
+ "textColor": "{colors.on-dark}",
310
+ "typography": "{typography.code-md}"
311
+ },
312
+ "code-tab": {
313
+ "backgroundColor": "{colors.surface-deep}",
314
+ "padding": "6px 12px",
315
+ "rounded": "{rounded.xs}",
316
+ "textColor": "{colors.on-dark-mute}",
317
+ "typography": "{typography.code-sm}"
318
+ },
319
+ "badge-status": {
320
+ "backgroundColor": "{colors.badge-success}",
321
+ "padding": "4px 10px",
322
+ "rounded": "{rounded.full}",
323
+ "textColor": "{colors.on-dark}",
324
+ "typography": "{typography.caption}"
325
+ },
326
+ "badge-tag": {
327
+ "backgroundColor": "{colors.canvas}",
328
+ "padding": "4px 10px",
329
+ "rounded": "{rounded.full}",
330
+ "textColor": "{colors.ink}",
331
+ "typography": "{typography.caption}"
332
+ },
333
+ "nav-bar": {
334
+ "backgroundColor": "{colors.canvas}",
335
+ "height": "60px",
336
+ "rounded": "{rounded.none}",
337
+ "textColor": "{colors.ink}",
338
+ "typography": "{typography.button-sm}"
339
+ },
340
+ "sub-nav-pill": {
341
+ "backgroundColor": "{colors.surface-card}",
342
+ "padding": "6px 14px",
343
+ "rounded": "{rounded.full}",
344
+ "textColor": "{colors.ink}",
345
+ "typography": "{typography.button-sm}"
346
+ },
347
+ "contributor-avatar": {
348
+ "backgroundColor": "{colors.surface-card}",
349
+ "rounded": "{rounded.full}",
350
+ "size": "40px",
351
+ "textColor": "{colors.ink}"
352
+ },
353
+ "footer": {
354
+ "backgroundColor": "{colors.surface-deep}",
355
+ "padding": "64px 32px",
356
+ "rounded": "{rounded.none}",
357
+ "textColor": "{colors.on-dark}",
358
+ "typography": "{typography.body-sm}"
359
+ }
360
+ },
361
+ "extensions": {
362
+ "description": "Replicate's marketing surfaces pair the warm-cream developer-tools aesthetic\nof an indie ML playground with a confident hot-orange brand accent and a\nsignature display typeface (rb-freigeist-neue) sized aggressively large at\n72px+. The system reads as \"AI lab notebook crossed with print magazine\":\ncream and bone surfaces, dark ink type, monospace code wells, irregular\nhand-drawn-feeling diagrams, and a rich orange used scarcely on the most\nconsequential CTA. Photography of contributors and example outputs is\nsquare-ish with mid-radius corners; everything else is borderless or hairline.\n",
363
+ "name": "Replicate-design-analysis",
364
+ "version": "alpha"
365
+ }
366
+ }
367
+ }
368
+
369
+ ---
370
+
371
+ ---
372
+ version: alpha
373
+ name: Replicate-design-analysis
374
+ description: |
375
+ Replicate's marketing surfaces pair the warm-cream developer-tools aesthetic
376
+ of an indie ML playground with a confident hot-orange brand accent and a
377
+ signature display typeface (rb-freigeist-neue) sized aggressively large at
378
+ 72px+. The system reads as "AI lab notebook crossed with print magazine":
379
+ cream and bone surfaces, dark ink type, monospace code wells, irregular
380
+ hand-drawn-feeling diagrams, and a rich orange used scarcely on the most
381
+ consequential CTA. Photography of contributors and example outputs is
382
+ square-ish with mid-radius corners; everything else is borderless or hairline.
383
+
384
+ colors:
385
+ primary: "#ea2804"
386
+ primary-deep: "#c01f00"
387
+ on-primary: "#ffffff"
388
+ ink: "#202020"
389
+ body: "#3a3a3a"
390
+ charcoal: "#575757"
391
+ mute: "#646464"
392
+ ash: "#8d8d8d"
393
+ stone: "#bbbbbb"
394
+ on-dark: "#fcfcfc"
395
+ on-dark-mute: "rgba(252,252,252,0.72)"
396
+ canvas: "#f9f7f3"
397
+ surface-bone: "#f3f0e8"
398
+ surface-card: "#ffffff"
399
+ surface-dark: "#202020"
400
+ surface-deep: "#000000"
401
+ hairline: "rgba(32,32,32,0.12)"
402
+ hairline-strong: "#202020"
403
+ divider-dark: "rgba(255,255,255,0.2)"
404
+ hero-warm: "#ea2804"
405
+ hero-glow: "#ff6a3d"
406
+ hero-pink: "#f4a8a0"
407
+ badge-success: "#2b9a66"
408
+ link: "#ea2804"
409
+ ring-focus: "rgba(59,130,246,0.5)"
410
+ github-dark: "#24292e"
411
+
412
+ typography:
413
+ display-xxl:
414
+ fontFamily: rb-freigeist-neue
415
+ fontSize: 128px
416
+ fontWeight: 700
417
+ lineHeight: 1.0
418
+ letterSpacing: -3px
419
+ display-xl:
420
+ fontFamily: rb-freigeist-neue
421
+ fontSize: 72px
422
+ fontWeight: 700
423
+ lineHeight: 1.0
424
+ letterSpacing: -1.8px
425
+ display-lg:
426
+ fontFamily: rb-freigeist-neue
427
+ fontSize: 48px
428
+ fontWeight: 700
429
+ lineHeight: 1.0
430
+ letterSpacing: -1px
431
+ display-md:
432
+ fontFamily: rb-freigeist-neue
433
+ fontSize: 30px
434
+ fontWeight: 600
435
+ lineHeight: 1.2
436
+ letterSpacing: -0.5px
437
+ heading-lg:
438
+ fontFamily: basier-square
439
+ fontSize: 38.4px
440
+ fontWeight: 600
441
+ lineHeight: 0.83
442
+ letterSpacing: -0.5px
443
+ heading-md:
444
+ fontFamily: basier-square
445
+ fontSize: 24px
446
+ fontWeight: 600
447
+ lineHeight: 1.33
448
+ letterSpacing: -0.35px
449
+ heading-sm:
450
+ fontFamily: basier-square
451
+ fontSize: 20px
452
+ fontWeight: 600
453
+ lineHeight: 1.4
454
+ letterSpacing: -0.3px
455
+ subtitle:
456
+ fontFamily: rb-freigeist-neue
457
+ fontSize: 18px
458
+ fontWeight: 600
459
+ lineHeight: 1.56
460
+ letterSpacing: 0
461
+ body-lg:
462
+ fontFamily: basier-square
463
+ fontSize: 18px
464
+ fontWeight: 400
465
+ lineHeight: 1.56
466
+ letterSpacing: 0
467
+ body-md:
468
+ fontFamily: basier-square
469
+ fontSize: 16px
470
+ fontWeight: 400
471
+ lineHeight: 1.5
472
+ letterSpacing: 0
473
+ body-sm:
474
+ fontFamily: basier-square
475
+ fontSize: 14px
476
+ fontWeight: 400
477
+ lineHeight: 1.43
478
+ letterSpacing: 0
479
+ button-md:
480
+ fontFamily: basier-square
481
+ fontSize: 16px
482
+ fontWeight: 600
483
+ lineHeight: 1.0
484
+ letterSpacing: 0
485
+ button-sm:
486
+ fontFamily: basier-square
487
+ fontSize: 14px
488
+ fontWeight: 600
489
+ lineHeight: 1.0
490
+ letterSpacing: 0
491
+ caption:
492
+ fontFamily: basier-square
493
+ fontSize: 12px
494
+ fontWeight: 400
495
+ lineHeight: 1.33
496
+ letterSpacing: 0
497
+ caption-tight:
498
+ fontFamily: basier-square
499
+ fontSize: 14px
500
+ fontWeight: 600
501
+ lineHeight: 1.43
502
+ letterSpacing: -0.35px
503
+ code-md:
504
+ fontFamily: jetbrains-mono
505
+ fontSize: 14px
506
+ fontWeight: 400
507
+ lineHeight: 1.43
508
+ letterSpacing: 0
509
+ code-sm:
510
+ fontFamily: jetbrains-mono
511
+ fontSize: 11px
512
+ fontWeight: 400
513
+ lineHeight: 1.5
514
+ letterSpacing: 0
515
+
516
+ rounded:
517
+ none: 0px
518
+ xs: 4px
519
+ sm: 6px
520
+ md: 10px
521
+ lg: 16px
522
+ full: 9999px
523
+
524
+ spacing:
525
+ xxs: 2px
526
+ xs: 4px
527
+ sm: 8px
528
+ md: 12px
529
+ lg: 16px
530
+ xl: 24px
531
+ xxl: 32px
532
+ xxxl: 48px
533
+ section: 96px
534
+ band: 160px
535
+
536
+ components:
537
+ button-primary:
538
+ backgroundColor: "{colors.primary}"
539
+ textColor: "{colors.on-primary}"
540
+ typography: "{typography.button-md}"
541
+ rounded: "{rounded.full}"
542
+ padding: 12px 24px
543
+ height: 44px
544
+ button-primary-pressed:
545
+ backgroundColor: "{colors.primary-deep}"
546
+ textColor: "{colors.on-primary}"
547
+ typography: "{typography.button-md}"
548
+ rounded: "{rounded.full}"
549
+ button-dark:
550
+ backgroundColor: "{colors.surface-dark}"
551
+ textColor: "{colors.on-dark}"
552
+ typography: "{typography.button-md}"
553
+ rounded: "{rounded.full}"
554
+ padding: 12px 24px
555
+ height: 44px
556
+ button-outline:
557
+ backgroundColor: "{colors.surface-card}"
558
+ textColor: "{colors.ink}"
559
+ typography: "{typography.button-md}"
560
+ rounded: "{rounded.full}"
561
+ padding: 11px 23px
562
+ height: 44px
563
+ button-ghost:
564
+ backgroundColor: "{colors.canvas}"
565
+ textColor: "{colors.ink}"
566
+ typography: "{typography.button-md}"
567
+ rounded: "{rounded.full}"
568
+ padding: 8px 16px
569
+ height: 36px
570
+ button-icon:
571
+ backgroundColor: "{colors.surface-card}"
572
+ textColor: "{colors.ink}"
573
+ rounded: "{rounded.full}"
574
+ size: 36px
575
+ text-input:
576
+ backgroundColor: "{colors.surface-card}"
577
+ textColor: "{colors.ink}"
578
+ typography: "{typography.body-md}"
579
+ rounded: "{rounded.full}"
580
+ padding: 12px 20px
581
+ height: 44px
582
+ hero-band:
583
+ backgroundColor: "{colors.hero-warm}"
584
+ textColor: "{colors.on-dark}"
585
+ typography: "{typography.display-xl}"
586
+ rounded: "{rounded.none}"
587
+ padding: 96px 32px
588
+ model-card:
589
+ backgroundColor: "{colors.surface-card}"
590
+ textColor: "{colors.ink}"
591
+ typography: "{typography.body-md}"
592
+ rounded: "{rounded.md}"
593
+ padding: 16px
594
+ collection-tile:
595
+ backgroundColor: "{colors.canvas}"
596
+ textColor: "{colors.ink}"
597
+ typography: "{typography.heading-md}"
598
+ rounded: "{rounded.md}"
599
+ padding: 24px
600
+ pricing-tier:
601
+ backgroundColor: "{colors.surface-card}"
602
+ textColor: "{colors.ink}"
603
+ typography: "{typography.body-md}"
604
+ rounded: "{rounded.lg}"
605
+ padding: 32px
606
+ pricing-tier-featured:
607
+ backgroundColor: "{colors.surface-dark}"
608
+ textColor: "{colors.on-dark}"
609
+ typography: "{typography.body-md}"
610
+ rounded: "{rounded.lg}"
611
+ padding: 32px
612
+ code-block:
613
+ backgroundColor: "{colors.surface-dark}"
614
+ textColor: "{colors.on-dark}"
615
+ typography: "{typography.code-md}"
616
+ rounded: "{rounded.md}"
617
+ padding: 24px
618
+ code-tab:
619
+ backgroundColor: "{colors.surface-deep}"
620
+ textColor: "{colors.on-dark-mute}"
621
+ typography: "{typography.code-sm}"
622
+ rounded: "{rounded.xs}"
623
+ padding: 6px 12px
624
+ badge-status:
625
+ backgroundColor: "{colors.badge-success}"
626
+ textColor: "{colors.on-dark}"
627
+ typography: "{typography.caption}"
628
+ rounded: "{rounded.full}"
629
+ padding: 4px 10px
630
+ badge-tag:
631
+ backgroundColor: "{colors.canvas}"
632
+ textColor: "{colors.ink}"
633
+ typography: "{typography.caption}"
634
+ rounded: "{rounded.full}"
635
+ padding: 4px 10px
636
+ nav-bar:
637
+ backgroundColor: "{colors.canvas}"
638
+ textColor: "{colors.ink}"
639
+ typography: "{typography.button-sm}"
640
+ rounded: "{rounded.none}"
641
+ height: 60px
642
+ sub-nav-pill:
643
+ backgroundColor: "{colors.surface-card}"
644
+ textColor: "{colors.ink}"
645
+ typography: "{typography.button-sm}"
646
+ rounded: "{rounded.full}"
647
+ padding: 6px 14px
648
+ contributor-avatar:
649
+ backgroundColor: "{colors.surface-card}"
650
+ textColor: "{colors.ink}"
651
+ rounded: "{rounded.full}"
652
+ size: 40px
653
+ footer:
654
+ backgroundColor: "{colors.surface-deep}"
655
+ textColor: "{colors.on-dark}"
656
+ typography: "{typography.body-sm}"
657
+ rounded: "{rounded.none}"
658
+ padding: 64px 32px
659
+ ---
660
+
661
+ ## Overview
662
+
663
+ Replicate is a developer-tools platform with the soul of an art zine. The
664
+ public marketing surfaces sit on a warm cream canvas (`{colors.canvas}` —
665
+ `#f9f7f3`) rather than the white-or-near-black default of typical AI
666
+ infrastructure sites, and that single decision colours everything else:
667
+ photography reads as editorial, code wells read as printed pull-quotes, and
668
+ the brand orange (`{colors.primary}` — `#ea2804`) feels like a stamp rather
669
+ than a notification.
670
+
671
+ The typography is the load-bearing decoration. **rb-freigeist-neue** — a
672
+ heavy, slightly condensed grotesque — appears at sizes up to 128px in hero
673
+ bands, with a tight `lineHeight: 1.0` and negative letter-spacing that lets
674
+ multi-line headlines pack into geometric blocks. The companion family,
675
+ **basier-square**, takes care of body, button labels, and metadata in the
676
+ 14–18px range. **JetBrains Mono** carries every code well, command, and
677
+ example. Three families, three jobs, no overlap.
678
+
679
+ Page rhythm cycles between a default cream canvas, a bold full-bleed orange
680
+ hero band, and a `{colors.surface-dark}` (`#202020`) section that hosts the
681
+ code stories — the "how it works" walkthrough. Curves are intentional and
682
+ soft: every interactive surface (buttons, inputs, tags, avatars) uses
683
+ `{rounded.full}`, while content cards and code wells step up to `{rounded.md}`
684
+ or `{rounded.lg}`. There are no sharp corners on Replicate; the system reads
685
+ as friendly precision.
686
+
687
+ **Key Characteristics:**
688
+ - A warm cream canvas (`{colors.canvas}` — `#f9f7f3`) replaces the typical white background, paired with `{colors.surface-bone}` for inset cards.
689
+ - Hot orange (`{colors.primary}` — `#ea2804`) is reserved for the primary CTA, the hero band, and inline link colour. Never decorative.
690
+ - Display headlines run massive — `{typography.display-xxl}` at 128px in hero bands and `{typography.display-xl}` at 72px on section openers — with tight `lineHeight: 1.0` and negative letter-spacing.
691
+ - Three-family typography stack: `rb-freigeist-neue` for display, `basier-square` for UI/body, `jetbrains-mono` for code.
692
+ - Every interactive element is fully rounded (`{rounded.full}` 9999px) — buttons, inputs, badges, avatars — while content cards step to `{rounded.md}` 10px.
693
+ - Dark code wells (`{colors.surface-dark}` background) sit inside the cream canvas as full-bleed reading surfaces, mimicking print pull-quotes.
694
+ - Section rhythm: cream → orange hero → cream → dark code-story band → cream → black footer.
695
+
696
+ ## Colors
697
+
698
+ ### Brand & Accent
699
+ - **Replicate Orange** (`{colors.primary}` — `#ea2804`): the brand accent. Reserved for the primary CTA, hero band background, and inline link colour. Treat as a stamp — one orange element per viewport at most.
700
+ - **Orange Pressed** (`{colors.primary-deep}` — `#c01f00`): the active/pressed state of `{colors.primary}` — used on `{component.button-primary-pressed}`.
701
+ - **Hero Glow** (`{colors.hero-glow}` — `#ff6a3d`): the lighter orange that appears in the radial atmospheric mesh behind the hero copy.
702
+ - **Hero Pink** (`{colors.hero-pink}` — `#f4a8a0`): a warm pink wash that softens the bottom edge of the hero band before it transitions to cream.
703
+ - **On-Primary** (`{colors.on-primary}` — `#ffffff`): label colour on top of `{colors.primary}` surfaces.
704
+
705
+ ### Surface
706
+ - **Canvas** (`{colors.canvas}` — `#f9f7f3`): the default page background. Warm cream, never pure white.
707
+ - **Surface Bone** (`{colors.surface-bone}` — `#f3f0e8`): a half-step deeper cream used for inset card groups and feature bands.
708
+ - **Surface Card** (`{colors.surface-card}` — `#ffffff`): pure white for individual model cards, search inputs, and pricing tiers — the only place white appears.
709
+ - **Surface Dark** (`{colors.surface-dark}` — `#202020`): code wells, featured pricing tier, and the "how it works" walkthrough band.
710
+ - **Surface Deep** (`{colors.surface-deep}` — `#000000`): footer canvas and the inset code-tab strip inside `{component.code-block}`.
711
+ - **Hairline** (`{colors.hairline}` — `rgba(32,32,32,0.12)`): low-contrast 1px dividers on cream surfaces.
712
+ - **Hairline Strong** (`{colors.hairline-strong}` — `#202020`): button outlines, focused inputs, and structural separators.
713
+
714
+ ### Text
715
+ - **Ink** (`{colors.ink}` — `#202020`): primary text colour. Notably warmer than `#000000`, matching the cream canvas.
716
+ - **Body** (`{colors.body}` — `#3a3a3a`): long-form body copy where ink would feel too heavy at 18px+ line lengths.
717
+ - **Charcoal** (`{colors.charcoal}` — `#575757`): captions, metadata, secondary nav.
718
+ - **Mute** (`{colors.mute}` — `#646464`): supporting text and inactive labels.
719
+ - **Ash** (`{colors.ash}` — `#8d8d8d`): tertiary text, placeholder copy.
720
+ - **Stone** (`{colors.stone}` — `#bbbbbb`): disabled foreground, neutral icon outlines.
721
+ - **On-Dark** (`{colors.on-dark}` — `#fcfcfc`): primary text on `{colors.surface-dark}` and `{colors.surface-deep}`.
722
+ - **On-Dark Mute** (`{colors.on-dark-mute}` — `rgba(252,252,252,0.72)`): secondary text in dark regions; preserves the off-white feel without pure white pop.
723
+
724
+ ### Semantic
725
+ - **Success** (`{colors.badge-success}` — `#2b9a66`): inline success badges and "running" status pills on model cards.
726
+ - **Link** (`{colors.link}` — `#ea2804`): inline link colour — same as primary orange, intentionally pulling links into the brand accent.
727
+ - **Focus Ring** (`{colors.ring-focus}` — `rgba(59,130,246,0.5)`): the default focus ring on interactive elements.
728
+ - **GitHub Dark** (`{colors.github-dark}` — `#24292e`): the GitHub-branded button surface (kept off-brand-on-purpose to match GitHub's own tokens).
729
+
730
+ ## Typography
731
+
732
+ ### Font Family
733
+
734
+ Replicate ships a deliberate three-family stack:
735
+
736
+ - **rb-freigeist-neue** — proprietary heavy grotesque used for all display sizes (30px+). Carries the editorial-magazine personality through tight `lineHeight: 1.0` and negative letter-spacing.
737
+ - **basier-square** — proprietary humanist sans-serif used for body, button labels, captions, and metadata.
738
+ - **jetbrains-mono** — open-source monospace used in every code well and inline command.
739
+
740
+ When proprietary families cannot be licensed, **Bricolage Grotesque** or **Migra** are credible substitutes for rb-freigeist-neue, and **Geist** or **Inter** can stand in for basier-square. JetBrains Mono is open-source and should always be used directly.
741
+
742
+ ### Hierarchy
743
+
744
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
745
+ |---|---|---|---|---|---|
746
+ | `{typography.display-xxl}` | 128px | 700 | 1.0 | -3px | The single hero "Run AI" / "Imagine what you can build" headline. One per page. |
747
+ | `{typography.display-xl}` | 72px | 700 | 1.0 | -1.8px | Section openers ("How it works", "Scale on Replicate"). |
748
+ | `{typography.display-lg}` | 48px | 700 | 1.0 | -1px | Sub-section titles, pricing tier names. |
749
+ | `{typography.display-md}` | 30px | 600 | 1.2 | -0.5px | Feature card titles. |
750
+ | `{typography.heading-lg}` | 38.4px | 600 | 0.83 | -0.5px | Tightly-stacked basier-square headlines, used in pricing and enterprise hero. |
751
+ | `{typography.heading-md}` | 24px | 600 | 1.33 | -0.35px | Card titles, model detail headers. |
752
+ | `{typography.heading-sm}` | 20px | 600 | 1.4 | -0.3px | List section headers. |
753
+ | `{typography.subtitle}` | 18px | 600 | 1.56 | 0 | Lead paragraphs in display sections. |
754
+ | `{typography.body-lg}` | 18px | 400 | 1.56 | 0 | Marketing prose. |
755
+ | `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Default body. |
756
+ | `{typography.body-sm}` | 14px | 400 | 1.43 | 0 | Captions, metadata. |
757
+ | `{typography.button-md}` | 16px | 600 | 1.0 | 0 | Default button label. |
758
+ | `{typography.button-sm}` | 14px | 600 | 1.0 | 0 | Compact button label, sub-nav pills. |
759
+ | `{typography.caption}` | 12px | 400 | 1.33 | 0 | Footer disclosure, copyright. |
760
+ | `{typography.caption-tight}` | 14px | 600 | 1.43 | -0.35px | Emphatic small caption used in pricing tier rows. |
761
+ | `{typography.code-md}` | 14px | 400 | 1.43 | 0 | Code blocks and inline code. |
762
+ | `{typography.code-sm}` | 11px | 400 | 1.5 | 0 | Code-tab labels and small inline tokens. |
763
+
764
+ ### Principles
765
+ - Display sizes hold `lineHeight: 1.0` (or 0.83 on `{typography.heading-lg}`) so multi-line stacks read as single typographic blocks.
766
+ - Negative letter-spacing scales with size — bigger types tighten more (-3px at 128px down to -0.3px at 20px). Body type stays at 0.
767
+ - Body weight sits at 400 across `{typography.body-lg}` and `{typography.body-md}` — never bumped to 500 for emphasis. Emphasis comes from family change (basier-square → rb-freigeist-neue) rather than weight.
768
+ - Code is never set in basier-square, even at small sizes — JetBrains Mono carries every literal command, every model slug, every API call.
769
+
770
+ ### Note on Font Substitutes
771
+
772
+ When the proprietary families are unavailable, clamp display `lineHeight` to 1.0 explicitly and apply a -3% letter-spacing on display-xxl / display-xl to match the original tightness. Substitutes typically render with looser tracking by default.
773
+
774
+ ## Layout
775
+
776
+ ### Spacing System
777
+ - **Base unit**: 4px, with the working scale on multiples of 4 / 8 / 16.
778
+ - **Tokens**: `{spacing.xxs}` 2px · `{spacing.xs}` 4px · `{spacing.sm}` 8px · `{spacing.md}` 12px · `{spacing.lg}` 16px · `{spacing.xl}` 24px · `{spacing.xxl}` 32px · `{spacing.xxxl}` 48px · `{spacing.section}` 96px · `{spacing.band}` 160px.
779
+ - Section padding: `{spacing.section}` (96px) vertical between full-width bands; `{spacing.band}` (160px) when a band needs extra editorial breathing room (the hero, the closing "Imagine what you can build" stripe).
780
+ - Card internal padding: `{spacing.lg}` (16px) on `{component.model-card}`, `{spacing.xxl}` (32px) on `{component.pricing-tier}`.
781
+
782
+ ### Grid & Container
783
+ - **Max content width** ≈ 1280px on body sections, 1440px on hero bands which run full-bleed.
784
+ - **Model grid** on collections: 4 columns at desktop, 3 at tablet large, 2 at tablet, 1 at mobile.
785
+ - **Pricing**: 3-tier grid centred at desktop, stacking vertically below 1024px; the centre tier flips to `{component.pricing-tier-featured}` (dark inversion) as the recommended option.
786
+ - **Code-story sections**: a 2-up split — narrative copy left, code well right — collapsing to stacked at < 1024px.
787
+
788
+ ### Whitespace Philosophy
789
+ - Whitespace on cream is generous and editorial — sections breathe at 96px and key bands open at 160px so the typography can scale up without feeling cramped.
790
+ - Inside cards, the system tightens to 16–32px so model thumbnails, statuses, and metadata sit in a compact list-of-cards rhythm.
791
+ - Hairline `{colors.hairline}` dividers replace shadow on cream surfaces; on dark surfaces, `{colors.divider-dark}` carries the equivalent role.
792
+
793
+ ## Elevation & Depth
794
+
795
+ | Level | Treatment | Use |
796
+ |---|---|---|
797
+ | 0 — flat | No shadow, no border | Default cream canvas, full-bleed bands. |
798
+ | 1 — outline | 1px solid `{colors.hairline}` or `{colors.hairline-strong}` | Model cards, pricing tiers, collection tiles. |
799
+ | 2 — bone inset | Surface colour shift to `{colors.surface-bone}` inside a `{colors.canvas}` band | Feature group containers, "How it works" walkthrough. |
800
+ | 3 — dark inversion | Card swaps to `{colors.surface-dark}` against cream | Code wells, featured pricing tier, "Scale on Replicate" hero card. |
801
+ | 4 — soft drop | `0 8px 24px rgba(32,32,32,0.08)` | Hover-anchored model thumbnails (visual only — not interaction-state-documented). |
802
+
803
+ Drop shadows exist in the extracted tokens but are restrained — used sparingly to lift photography thumbnails one step off the cream canvas. The dominant elevation language is colour-blocking.
804
+
805
+ ### Decorative Depth
806
+ - **Hero atmospheric mesh** — the orange-to-pink gradient backing the home hero is a layered radial mesh: `{colors.primary}` core → `{colors.hero-glow}` mid-stop → `{colors.hero-pink}` outer wash. Reserved for the home hero band only.
807
+ - **Code-story dark band** — the "How it works" section uses `{colors.surface-dark}` full-bleed with a single hairline `{colors.divider-dark}` separating narrative copy and code well.
808
+ - **Contributor mosaic** — the home page features a horizontally-scrolling band of circular avatars (`{component.contributor-avatar}`) over a textured cream canvas; this is the only place avatars appear at the brand level.
809
+
810
+ ## Shapes
811
+
812
+ ### Border Radius Scale
813
+
814
+ | Token | Value | Use |
815
+ |---|---|---|
816
+ | `{rounded.none}` | 0px | Hero bands, full-bleed sections, footer. |
817
+ | `{rounded.xs}` | 4px | Code tabs, inline tags inside code wells. |
818
+ | `{rounded.sm}` | 6px | Mid-radius callouts, small inset chips. |
819
+ | `{rounded.md}` | 10px | Model cards, collection tiles, code wells. |
820
+ | `{rounded.lg}` | 16px | Pricing tiers, larger feature cards. |
821
+ | `{rounded.full}` | 9999px | Buttons, inputs, badges, avatars, pills. |
822
+
823
+ ### Photography Geometry
824
+ - Model thumbnails: square (1:1) with `{rounded.md}` corners, full-bleed image to the card edge.
825
+ - Hero example outputs: 4:3 or 16:9 with `{rounded.md}` corners.
826
+ - Contributor avatars: circular (`{rounded.full}`), 40px on home, 32px in card metadata.
827
+ - The hero band uses a stylised black-ink illustration (the "tinkerer at the workbench") as its photography stand-in — kept inside the orange band rather than overlaid on cream.
828
+
829
+ ## Components
830
+
831
+ ### Buttons
832
+
833
+ **`button-primary`** — orange CTA
834
+ - Background `{colors.primary}`, label `{colors.on-primary}`, type `{typography.button-md}`, padding `12px 24px`, `rounded: {rounded.full}`, height 44px.
835
+ - The single most important action on a page (e.g. "Sign in with GitHub", "Try a model").
836
+ - Pressed state lives in `button-primary-pressed` (background `{colors.primary-deep}`).
837
+
838
+ **`button-dark`** — dark CTA
839
+ - Background `{colors.surface-dark}`, label `{colors.on-dark}`, type `{typography.button-md}`, `rounded: {rounded.full}`.
840
+ - Equal-weight secondary action paired with `{component.button-primary}`, or the primary action on cream when orange would be too loud.
841
+
842
+ **`button-outline`** — outlined CTA
843
+ - Background `{colors.surface-card}`, label `{colors.ink}`, 1px solid `{colors.hairline-strong}`, type `{typography.button-md}`, `rounded: {rounded.full}`.
844
+ - Tertiary action; appears alongside primary/dark for "View docs", "Read more".
845
+
846
+ **`button-ghost`** — inline button
847
+ - Background `{colors.canvas}`, label `{colors.ink}`, no border, type `{typography.button-md}`, `rounded: {rounded.full}`, padding `8px 16px`.
848
+ - Sub-actions inside cards and inline with body copy.
849
+
850
+ **`button-icon`** — icon button
851
+ - Background `{colors.surface-card}`, label `{colors.ink}`, 1px solid `{colors.hairline}`, `rounded: {rounded.full}`, 36×36px circular.
852
+ - Carousel arrows, copy-to-clipboard, GitHub link icon.
853
+
854
+ ### Cards & Containers
855
+
856
+ **`model-card`** — model listing card
857
+ - Background `{colors.surface-card}`, text `{colors.ink}`, type `{typography.body-md}`, `rounded: {rounded.md}`, padding `{spacing.lg}` (16px).
858
+ - Square thumbnail on top, model owner + name beneath in `{typography.body-sm}`, single-line description in `{colors.charcoal}`, status pill `{component.badge-status}` bottom-left.
859
+
860
+ **`collection-tile`** — collection-of-models tile
861
+ - Background `{colors.canvas}`, text `{colors.ink}`, type `{typography.heading-md}`, `rounded: {rounded.md}`, padding `{spacing.xl}` (24px).
862
+ - Cream-on-cream tile inside a `{colors.surface-bone}` band, used for browsing model categories.
863
+
864
+ **`pricing-tier`** — pricing tier card
865
+ - Background `{colors.surface-card}`, text `{colors.ink}`, type `{typography.body-md}`, `rounded: {rounded.lg}`, padding `{spacing.xxl}` (32px).
866
+ - 3-up grid; tier name in `{typography.display-lg}` ("Free", "Pro", "Enterprise"), price in `{typography.display-md}`.
867
+
868
+ **`pricing-tier-featured`** — featured pricing tier
869
+ - Background `{colors.surface-dark}`, text `{colors.on-dark}`, type `{typography.body-md}`, `rounded: {rounded.lg}`, padding `{spacing.xxl}`.
870
+ - Centre tier flipped to dark inversion to mark "recommended".
871
+
872
+ **`code-block`** — code well
873
+ - Background `{colors.surface-dark}`, text `{colors.on-dark}`, type `{typography.code-md}`, `rounded: {rounded.md}`, padding `{spacing.xl}` (24px).
874
+ - Tab strip on top using `{component.code-tab}` for switching between languages (Python, Node.js, cURL, HTTP).
875
+
876
+ **`code-tab`** — code tab chip
877
+ - Background `{colors.surface-deep}`, text `{colors.on-dark-mute}`, type `{typography.code-sm}`, `rounded: {rounded.xs}`, padding `6px 12px`.
878
+ - Active tab swaps text colour to `{colors.on-dark}` and adds a 2px bottom underline in `{colors.primary}`.
879
+
880
+ **`hero-band`** — full-bleed hero
881
+ - Background `{colors.hero-warm}` with the atmospheric mesh detailed in Elevation, text `{colors.on-dark}`, type `{typography.display-xxl}` for the title.
882
+ - Used only on the home page; secondary pages open with cream + `{typography.display-xl}`.
883
+
884
+ ### Inputs & Forms
885
+
886
+ **`text-input`** — default input
887
+ - Background `{colors.surface-card}`, text `{colors.ink}`, type `{typography.body-md}`, 1px solid `{colors.hairline}`, `rounded: {rounded.full}`, padding `12px 20px`, height 44px.
888
+ - Pill-shaped search and email fields. Focus state adds a `{colors.ring-focus}` 3px ring.
889
+
890
+ ### Navigation
891
+
892
+ **`nav-bar`** — top nav (desktop)
893
+ - Background `{colors.canvas}`, type `{typography.button-sm}`, height 60px, single hairline `{colors.hairline}` bottom border.
894
+ - Left: wordmark logo. Centre: top-level nav ("Explore", "Pricing", "Docs", "Blog"). Right: GitHub icon + "Sign in" link + `{component.button-primary}`.
895
+
896
+ **`nav-bar`** (mobile)
897
+ - Same height 60px, collapses centre nav into a hamburger icon. Logo stays left, sign-in CTA stays right.
898
+
899
+ **`sub-nav-pill`** — sub-nav chip
900
+ - Pill chips set in a horizontal row above content (e.g. "All", "Featured", "Image generation", "Audio"), `{component.sub-nav-pill}` styling.
901
+
902
+ ### Signature Components
903
+
904
+ **`badge-status`** — model status badge
905
+ - Background `{colors.badge-success}`, label `{colors.on-dark}`, type `{typography.caption}`, `rounded: {rounded.full}`, padding `4px 10px`.
906
+ - Anchored on the bottom-left of model cards to indicate "running" or "deployed".
907
+
908
+ **`badge-tag`** — neutral tag
909
+ - Background `{colors.canvas}`, label `{colors.ink}`, 1px solid `{colors.hairline}`, type `{typography.caption}`, `rounded: {rounded.full}`, padding `4px 10px`.
910
+ - Capability tags ("text-to-image", "video", "audio") on model cards.
911
+
912
+ **`contributor-avatar`** — community contributor
913
+ - Background `{colors.surface-card}` placeholder behind 1:1 photography, `rounded: {rounded.full}`, 40×40px (32px in metadata contexts).
914
+ - Used in the home-page contributor mosaic.
915
+
916
+ **`footer`** — global footer
917
+ - Background `{colors.surface-deep}`, text `{colors.on-dark}`, type `{typography.body-sm}`, `rounded: {rounded.none}`, padding `64px 32px`.
918
+ - Multi-column quick-links grid above a copyright row separated by `{colors.divider-dark}`.
919
+
920
+ ## Do's and Don'ts
921
+
922
+ ### Do
923
+ - Use `{colors.canvas}` (cream) as the default page background. White (`{colors.surface-card}`) appears only on individual cards, inputs, and the hero illustration backdrop.
924
+ - Reserve `{colors.primary}` for the primary CTA, the home hero band, and inline links — three roles, nothing else.
925
+ - Set every interactive element to `{rounded.full}` — buttons, inputs, badges, avatars, pills.
926
+ - Step content cards up to `{rounded.md}` (10px) or `{rounded.lg}` (16px) — never sharp corners.
927
+ - Open hero bands with `{typography.display-xxl}` (128px) and `{typography.display-xl}` (72px) at `lineHeight: 1.0` with negative letter-spacing.
928
+ - Use `rb-freigeist-neue` for all display, `basier-square` for UI/body, `jetbrains-mono` for code. Keep the lanes strict.
929
+ - Render code in `{component.code-block}` with a `{colors.surface-dark}` background — code is print, not an inline grey box.
930
+ - Pair photography with `{rounded.md}` corners and full-bleed crop inside cards.
931
+
932
+ ### Don't
933
+ - Don't replace cream with pure white at the page level. The brand temperature comes from `{colors.canvas}`.
934
+ - Don't introduce a secondary brand colour. Orange is the only accent; semantic green and focus blue are functional, not decorative.
935
+ - Don't loosen display `lineHeight` past 1.0. Tight stacking is structural.
936
+ - Don't bump body weight to 500 for emphasis — change family (`basier-square` → `rb-freigeist-neue`) instead.
937
+ - Don't apply `{rounded.full}` to content cards. Pill-shaped cards break the rhythm.
938
+ - Don't put code in a light grey box. Code wells are always `{colors.surface-dark}` or `{colors.surface-deep}`.
939
+ - Don't use orange on body text or large surfaces — it loses its stamp quality immediately.
940
+ - Don't add drop shadows on cream surfaces. Elevation is colour-blocking; shadows are reserved for floating thumbnails.
941
+
942
+ ## Responsive Behavior
943
+
944
+ ### Breakpoints
945
+
946
+ | Name | Width | Key Changes |
947
+ |---|---|---|
948
+ | Desktop XL | ≥ 1440px | Full max-width 1280 body, hero band runs full-bleed, 4-up model grid. |
949
+ | Desktop | 1280–1439px | Container shrinks; padding `{spacing.xl}` (24px) sides. |
950
+ | Tablet Large | 1024–1279px | Model grid 3-up, code-story splits remain 2-up. |
951
+ | Tablet | 768–1023px | Model grid 2-up, code-story stacks (narrative on top, code below), pricing stacks vertically. |
952
+ | Mobile Large | 426–767px | Model grid 1-up at 480px+, nav collapses to hamburger, hero `{typography.display-xxl}` clamps to 64px. |
953
+ | Mobile | ≤ 425px | All grids 1-up, hero clamps to 48px, section padding `{spacing.section}` collapses to 64px. |
954
+
955
+ ### Touch Targets
956
+ - All buttons ship at minimum 44px tall on mobile; default `{component.button-primary}` is 44px tall — comfortably clearing WCAG AAA.
957
+ - `{component.button-icon}` (36px) is bumped to 44px on mobile via increased padding.
958
+ - `{component.sub-nav-pill}` stays at 36px on desktop and grows to 40px on mobile via vertical padding adjustment.
959
+
960
+ ### Collapsing Strategy
961
+ - Top-level nav collapses to hamburger at < 1024px; the wordmark and `{component.button-primary}` stay anchored.
962
+ - Hero `{typography.display-xxl}` clamps: 128px → 96px → 64px → 48px across the breakpoint ladder.
963
+ - Pricing 3-up grid stacks vertically at < 1024px with the featured tier remaining centre-stacked.
964
+ - Code-story splits switch from side-by-side to stacked at < 1024px, code well always second.
965
+ - Sub-nav pills convert from a wrap row to a horizontal scroll-rail at < 768px.
966
+
967
+ ### Image Behavior
968
+ - Model thumbnails serve at 1.5× and 2× DPR; below 768px the system swaps to a 600×600 export instead of 1200×1200.
969
+ - Hero atmospheric mesh is rendered as a CSS gradient — no asset cost, no breakpoint variation.
970
+ - Code-block contents wrap softly at < 1024px (no horizontal scroll); long lines break with a continuation marker.
971
+
972
+ ## Iteration Guide
973
+
974
+ 1. Focus on ONE component at a time. Most interactive elements share `{rounded.full}` and the `{colors.canvas}` / `{colors.surface-card}` pair — only the role-specific tokens (`{colors.primary}`, `{component.code-block}`) shift between variants.
975
+ 2. Reference component names and tokens directly (`{colors.primary}`, `{component.button-primary-pressed}`, `{rounded.lg}`) — do not paraphrase.
976
+ 3. Run `npx @google/design.md lint DESIGN.md` after edits; orphaned-tokens warnings will catch unused entries.
977
+ 4. Add new variants as separate entries (`-pressed`, `-disabled`, `-featured`) — do not bury them in prose.
978
+ 5. Default body type to `{typography.body-md}`; reach for `{typography.subtitle}` only on hero subtitles.
979
+ 6. Keep `{colors.primary}` scarce — if more than one orange element appears per viewport, ask whether one should drop to `{colors.surface-dark}` instead.
980
+
981
+ ## Known Gaps
982
+
983
+ - Active/pressed visual states are documented for `button-primary-pressed` only; other components rely on the focus-ring (`{colors.ring-focus}`) for interactive feedback, which is not extracted as a per-component variant.
984
+ - The model playground / try-this-model interactive surfaces (logged-in feature) are out of scope; only the public marketing canvas is documented.
985
+ - Dashboard / billing / API key management surfaces are not extracted — those live behind authentication.
986
+ - The home hero illustration ("the tinkerer at the workbench") is treated as decorative artwork, not a system component; replicating it requires bespoke illustration rather than tokens.