savant-code 0.0.21 → 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 +16 -8
  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,874 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "ferrari-design-analysis",
4
+ "displayName": "Ferrari-design-analysis",
5
+ "description": "A luxury-automotive brand whose marketing surfaces read as cinematic editorial. The base canvas is **near-black** (`#181818`) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables). The single brand voltage is **Rosso Corsa** (`#da291c`) — the iconic Ferrari racing red — used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights. Type runs **FerrariSans** at modest weights (display 500, body 400) — never bombastic. Spacing follows an explicit 8px token ladder (`xxxs` 4px through `super` 128px); generous editorial pacing throughout. The brand's strongest visual signature is the **full-bleed cinematic hero photograph** that fills the viewport top with car photography, model details, or trackside livery — followed by a tighter editorial body layout below.",
6
+ "source": "embedded",
7
+ "status": "curated-reference",
8
+ "targets": [
9
+ "terminal",
10
+ "react"
11
+ ],
12
+ "contentPath": "packages/design-systems/library/ferrari.design.md",
13
+ "sourceContentHash": "1199e2832641cac7e384aaf3b1f3db87f992240cea5d3d1eee04d9dc00acb17c",
14
+ "normalizedContentHash": "5d9664b1db45d4e372253fb804991e5488a796e49829a03ee3cca0b44e578849",
15
+ "provenance": {
16
+ "sourceRepository": "VoltAgent/awesome-design-md",
17
+ "sourceRevision": "working-tree-curated-snapshot",
18
+ "sourcePath": "packages/design-systems/library/ferrari.design.md",
19
+ "license": "MIT"
20
+ },
21
+ "fonts": [
22
+ {
23
+ "family": "FerrariSans",
24
+ "fallback": [
25
+ "system-ui",
26
+ "sans-serif"
27
+ ],
28
+ "redistributable": false
29
+ }
30
+ ],
31
+ "tokens": {
32
+ "colors": {
33
+ "accent-yellow": "#f6e500",
34
+ "accent-yellow-hypersail": "#fff200",
35
+ "body": "#969696",
36
+ "body-on-light": "#181818",
37
+ "body-strong": "#ffffff",
38
+ "canvas": "#181818",
39
+ "canvas-elevated": "#303030",
40
+ "canvas-light": "#ffffff",
41
+ "hairline": "#303030",
42
+ "hairline-on-light": "#d2d2d2",
43
+ "hairline-soft": "#ebebeb",
44
+ "ink": "#ffffff",
45
+ "muted": "#666666",
46
+ "muted-soft": "#8f8f8f",
47
+ "on-dark": "#ffffff",
48
+ "on-light": "#181818",
49
+ "on-primary": "#ffffff",
50
+ "primary": "#da291c",
51
+ "primary-active": "#b01e0a",
52
+ "primary-hover": "#9d2211",
53
+ "semantic-info": "#4c98b9",
54
+ "semantic-success": "#03904a",
55
+ "semantic-warning": "#f13a2c",
56
+ "surface-card": "#303030",
57
+ "surface-soft-light": "#f7f7f7",
58
+ "surface-strong-light": "#ebebeb"
59
+ },
60
+ "typography": {
61
+ "display-mega": {
62
+ "fontFamily": "'FerrariSans', -apple-system, system-ui, sans-serif",
63
+ "fontSize": "80px",
64
+ "fontWeight": 500,
65
+ "letterSpacing": "-1.6px",
66
+ "lineHeight": 1.05
67
+ },
68
+ "display-xl": {
69
+ "fontFamily": "'FerrariSans', sans-serif",
70
+ "fontSize": "56px",
71
+ "fontWeight": 500,
72
+ "letterSpacing": "-1.12px",
73
+ "lineHeight": 1.1
74
+ },
75
+ "display-lg": {
76
+ "fontFamily": "'FerrariSans', sans-serif",
77
+ "fontSize": "36px",
78
+ "fontWeight": 500,
79
+ "letterSpacing": "-0.36px",
80
+ "lineHeight": 1.2
81
+ },
82
+ "display-md": {
83
+ "fontFamily": "'FerrariSans', sans-serif",
84
+ "fontSize": "26px",
85
+ "fontWeight": 500,
86
+ "letterSpacing": "0.195px",
87
+ "lineHeight": 1.5
88
+ },
89
+ "title-md": {
90
+ "fontFamily": "'FerrariSans', sans-serif",
91
+ "fontSize": "18px",
92
+ "fontWeight": 700,
93
+ "letterSpacing": 0,
94
+ "lineHeight": 1.2
95
+ },
96
+ "title-sm": {
97
+ "fontFamily": "'FerrariSans', sans-serif",
98
+ "fontSize": "16px",
99
+ "fontWeight": 500,
100
+ "letterSpacing": "0.08px",
101
+ "lineHeight": 1.4
102
+ },
103
+ "body-md": {
104
+ "fontFamily": "'FerrariSans', sans-serif",
105
+ "fontSize": "14px",
106
+ "fontWeight": 400,
107
+ "letterSpacing": 0,
108
+ "lineHeight": 1.5
109
+ },
110
+ "body-sm": {
111
+ "fontFamily": "'FerrariSans', sans-serif",
112
+ "fontSize": "13px",
113
+ "fontWeight": 400,
114
+ "letterSpacing": 0,
115
+ "lineHeight": 1.5
116
+ },
117
+ "caption": {
118
+ "fontFamily": "'FerrariSans', sans-serif",
119
+ "fontSize": "12px",
120
+ "fontWeight": 400,
121
+ "letterSpacing": 0,
122
+ "lineHeight": 1.4
123
+ },
124
+ "caption-uppercase": {
125
+ "fontFamily": "'FerrariSans', sans-serif",
126
+ "fontSize": "11px",
127
+ "fontWeight": 600,
128
+ "letterSpacing": "1.1px",
129
+ "lineHeight": 1.4,
130
+ "textTransform": "uppercase"
131
+ },
132
+ "button": {
133
+ "fontFamily": "'FerrariSans', sans-serif",
134
+ "fontSize": "14px",
135
+ "fontWeight": 700,
136
+ "letterSpacing": "1.4px",
137
+ "lineHeight": 1,
138
+ "textTransform": "uppercase"
139
+ },
140
+ "nav-link": {
141
+ "fontFamily": "'FerrariSans', sans-serif",
142
+ "fontSize": "13px",
143
+ "fontWeight": 600,
144
+ "letterSpacing": "0.65px",
145
+ "lineHeight": 1.4,
146
+ "textTransform": "uppercase"
147
+ },
148
+ "number-display": {
149
+ "fontFamily": "'FerrariSans', sans-serif",
150
+ "fontSize": "80px",
151
+ "fontWeight": 700,
152
+ "letterSpacing": "-1.6px",
153
+ "lineHeight": 1
154
+ }
155
+ },
156
+ "spacing": {
157
+ "lg": "48px",
158
+ "md": "32px",
159
+ "sm": "24px",
160
+ "super": "128px",
161
+ "xl": "64px",
162
+ "xs": "16px",
163
+ "xxl": "96px",
164
+ "xxs": "8px",
165
+ "xxxs": "4px"
166
+ },
167
+ "radius": {
168
+ "full": "9999px",
169
+ "lg": "8px",
170
+ "md": "6px",
171
+ "none": "0px",
172
+ "sm": "4px",
173
+ "xl": "12px",
174
+ "xs": "2px"
175
+ },
176
+ "components": {
177
+ "top-nav-on-dark": {
178
+ "backgroundColor": "{colors.canvas}",
179
+ "height": "64px",
180
+ "textColor": "{colors.ink}",
181
+ "typography": "{typography.nav-link}"
182
+ },
183
+ "top-nav-on-light": {
184
+ "backgroundColor": "{colors.canvas-light}",
185
+ "height": "64px",
186
+ "textColor": "{colors.body-on-light}",
187
+ "typography": "{typography.nav-link}"
188
+ },
189
+ "button-primary": {
190
+ "backgroundColor": "{colors.primary}",
191
+ "height": "48px",
192
+ "padding": "14px 32px",
193
+ "rounded": "{rounded.none}",
194
+ "textColor": "{colors.on-primary}",
195
+ "typography": "{typography.button}"
196
+ },
197
+ "button-primary-active": {
198
+ "backgroundColor": "{colors.primary-active}",
199
+ "rounded": "{rounded.none}",
200
+ "textColor": "{colors.on-primary}"
201
+ },
202
+ "button-outline-on-dark": {
203
+ "backgroundColor": "transparent",
204
+ "height": "48px",
205
+ "padding": "13px 31px",
206
+ "rounded": "{rounded.none}",
207
+ "textColor": "{colors.ink}",
208
+ "typography": "{typography.button}"
209
+ },
210
+ "button-outline-on-light": {
211
+ "backgroundColor": "transparent",
212
+ "height": "48px",
213
+ "padding": "13px 31px",
214
+ "rounded": "{rounded.none}",
215
+ "textColor": "{colors.body-on-light}",
216
+ "typography": "{typography.button}"
217
+ },
218
+ "button-tertiary-text": {
219
+ "backgroundColor": "transparent",
220
+ "textColor": "{colors.ink}",
221
+ "typography": "{typography.button}"
222
+ },
223
+ "hero-band-cinema": {
224
+ "backgroundColor": "{colors.canvas}",
225
+ "padding": 0,
226
+ "textColor": "{colors.ink}",
227
+ "typography": "{typography.display-mega}"
228
+ },
229
+ "hero-band-light": {
230
+ "backgroundColor": "{colors.canvas-light}",
231
+ "padding": "96px",
232
+ "textColor": "{colors.body-on-light}",
233
+ "typography": "{typography.display-xl}"
234
+ },
235
+ "feature-card-photo": {
236
+ "backgroundColor": "{colors.canvas}",
237
+ "padding": 0,
238
+ "rounded": "{rounded.none}",
239
+ "textColor": "{colors.ink}",
240
+ "typography": "{typography.title-md}"
241
+ },
242
+ "feature-card-light": {
243
+ "backgroundColor": "{colors.canvas-light}",
244
+ "padding": "32px",
245
+ "rounded": "{rounded.none}",
246
+ "textColor": "{colors.body-on-light}",
247
+ "typography": "{typography.title-md}"
248
+ },
249
+ "livery-band": {
250
+ "backgroundColor": "{colors.primary}",
251
+ "padding": "96px",
252
+ "textColor": "{colors.ink}",
253
+ "typography": "{typography.display-lg}"
254
+ },
255
+ "preowned-listing-card": {
256
+ "backgroundColor": "{colors.canvas-light}",
257
+ "padding": "24px",
258
+ "rounded": "{rounded.none}",
259
+ "textColor": "{colors.body-on-light}",
260
+ "typography": "{typography.body-md}"
261
+ },
262
+ "spec-cell": {
263
+ "backgroundColor": "transparent",
264
+ "padding": "24px 0",
265
+ "textColor": "{colors.ink}",
266
+ "typography": "{typography.number-display}"
267
+ },
268
+ "race-position-cell": {
269
+ "backgroundColor": "transparent",
270
+ "textColor": "{colors.primary}",
271
+ "typography": "{typography.number-display}"
272
+ },
273
+ "race-calendar-row": {
274
+ "backgroundColor": "transparent",
275
+ "padding": "16px 0",
276
+ "textColor": "{colors.ink}",
277
+ "typography": "{typography.body-md}"
278
+ },
279
+ "driver-card": {
280
+ "backgroundColor": "{colors.canvas-elevated}",
281
+ "padding": "24px",
282
+ "rounded": "{rounded.none}",
283
+ "textColor": "{colors.ink}",
284
+ "typography": "{typography.title-md}"
285
+ },
286
+ "text-input-on-dark": {
287
+ "backgroundColor": "{colors.canvas}",
288
+ "height": "48px",
289
+ "padding": "14px 16px",
290
+ "rounded": "{rounded.sm}",
291
+ "textColor": "{colors.ink}",
292
+ "typography": "{typography.body-md}"
293
+ },
294
+ "text-input-on-light": {
295
+ "backgroundColor": "{colors.canvas-light}",
296
+ "height": "48px",
297
+ "padding": "14px 16px",
298
+ "rounded": "{rounded.sm}",
299
+ "textColor": "{colors.body-on-light}",
300
+ "typography": "{typography.body-md}"
301
+ },
302
+ "badge-pill": {
303
+ "backgroundColor": "{colors.canvas-elevated}",
304
+ "padding": "4px 12px",
305
+ "rounded": "{rounded.full}",
306
+ "textColor": "{colors.ink}",
307
+ "typography": "{typography.caption-uppercase}"
308
+ },
309
+ "cta-band-dark": {
310
+ "backgroundColor": "{colors.canvas}",
311
+ "padding": "96px",
312
+ "textColor": "{colors.ink}",
313
+ "typography": "{typography.display-lg}"
314
+ },
315
+ "newsletter-input-band": {
316
+ "backgroundColor": "{colors.canvas-elevated}",
317
+ "padding": "32px",
318
+ "rounded": "{rounded.sm}",
319
+ "textColor": "{colors.ink}",
320
+ "typography": "{typography.body-md}"
321
+ },
322
+ "footer-dark": {
323
+ "backgroundColor": "{colors.canvas}",
324
+ "padding": "64px 48px",
325
+ "textColor": "{colors.body}",
326
+ "typography": "{typography.body-sm}"
327
+ },
328
+ "footer-link": {
329
+ "backgroundColor": "transparent",
330
+ "textColor": "{colors.body}",
331
+ "typography": "{typography.body-sm}"
332
+ }
333
+ },
334
+ "extensions": {
335
+ "description": "A luxury-automotive brand whose marketing surfaces read as cinematic editorial. The base canvas is **near-black** (`#181818`) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables). The single brand voltage is **Rosso Corsa** (`#da291c`) — the iconic Ferrari racing red — used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights. Type runs **FerrariSans** at modest weights (display 500, body 400) — never bombastic. Spacing follows an explicit 8px token ladder (`xxxs` 4px through `super` 128px); generous editorial pacing throughout. The brand's strongest visual signature is the **full-bleed cinematic hero photograph** that fills the viewport top with car photography, model details, or trackside livery — followed by a tighter editorial body layout below.",
336
+ "name": "Ferrari-design-analysis",
337
+ "version": "alpha"
338
+ }
339
+ }
340
+ }
341
+
342
+ ---
343
+
344
+ ---
345
+ version: alpha
346
+ name: Ferrari-design-analysis
347
+ description: A luxury-automotive brand whose marketing surfaces read as cinematic editorial. The base canvas is **near-black** (`#181818`) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables). The single brand voltage is **Rosso Corsa** (`#da291c`) — the iconic Ferrari racing red — used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights. Type runs **FerrariSans** at modest weights (display 500, body 400) — never bombastic. Spacing follows an explicit 8px token ladder (`xxxs` 4px through `super` 128px); generous editorial pacing throughout. The brand's strongest visual signature is the **full-bleed cinematic hero photograph** that fills the viewport top with car photography, model details, or trackside livery — followed by a tighter editorial body layout below.
348
+
349
+ colors:
350
+ primary: "#da291c"
351
+ primary-active: "#b01e0a"
352
+ primary-hover: "#9d2211"
353
+ ink: "#ffffff"
354
+ body: "#969696"
355
+ body-strong: "#ffffff"
356
+ body-on-light: "#181818"
357
+ muted: "#666666"
358
+ muted-soft: "#8f8f8f"
359
+ hairline: "#303030"
360
+ hairline-on-light: "#d2d2d2"
361
+ hairline-soft: "#ebebeb"
362
+ canvas: "#181818"
363
+ canvas-elevated: "#303030"
364
+ canvas-light: "#ffffff"
365
+ surface-card: "#303030"
366
+ surface-soft-light: "#f7f7f7"
367
+ surface-strong-light: "#ebebeb"
368
+ on-primary: "#ffffff"
369
+ on-dark: "#ffffff"
370
+ on-light: "#181818"
371
+ accent-yellow-hypersail: "#fff200"
372
+ accent-yellow: "#f6e500"
373
+ semantic-info: "#4c98b9"
374
+ semantic-success: "#03904a"
375
+ semantic-warning: "#f13a2c"
376
+
377
+ typography:
378
+ display-mega:
379
+ fontFamily: "'FerrariSans', -apple-system, system-ui, sans-serif"
380
+ fontSize: 80px
381
+ fontWeight: 500
382
+ lineHeight: 1.05
383
+ letterSpacing: -1.6px
384
+ display-xl:
385
+ fontFamily: "'FerrariSans', sans-serif"
386
+ fontSize: 56px
387
+ fontWeight: 500
388
+ lineHeight: 1.1
389
+ letterSpacing: -1.12px
390
+ display-lg:
391
+ fontFamily: "'FerrariSans', sans-serif"
392
+ fontSize: 36px
393
+ fontWeight: 500
394
+ lineHeight: 1.2
395
+ letterSpacing: -0.36px
396
+ display-md:
397
+ fontFamily: "'FerrariSans', sans-serif"
398
+ fontSize: 26px
399
+ fontWeight: 500
400
+ lineHeight: 1.5
401
+ letterSpacing: 0.195px
402
+ title-md:
403
+ fontFamily: "'FerrariSans', sans-serif"
404
+ fontSize: 18px
405
+ fontWeight: 700
406
+ lineHeight: 1.2
407
+ letterSpacing: 0
408
+ title-sm:
409
+ fontFamily: "'FerrariSans', sans-serif"
410
+ fontSize: 16px
411
+ fontWeight: 500
412
+ lineHeight: 1.4
413
+ letterSpacing: 0.08px
414
+ body-md:
415
+ fontFamily: "'FerrariSans', sans-serif"
416
+ fontSize: 14px
417
+ fontWeight: 400
418
+ lineHeight: 1.5
419
+ letterSpacing: 0
420
+ body-sm:
421
+ fontFamily: "'FerrariSans', sans-serif"
422
+ fontSize: 13px
423
+ fontWeight: 400
424
+ lineHeight: 1.5
425
+ letterSpacing: 0
426
+ caption:
427
+ fontFamily: "'FerrariSans', sans-serif"
428
+ fontSize: 12px
429
+ fontWeight: 400
430
+ lineHeight: 1.4
431
+ letterSpacing: 0
432
+ caption-uppercase:
433
+ fontFamily: "'FerrariSans', sans-serif"
434
+ fontSize: 11px
435
+ fontWeight: 600
436
+ lineHeight: 1.4
437
+ letterSpacing: 1.1px
438
+ textTransform: uppercase
439
+ button:
440
+ fontFamily: "'FerrariSans', sans-serif"
441
+ fontSize: 14px
442
+ fontWeight: 700
443
+ lineHeight: 1.0
444
+ letterSpacing: 1.4px
445
+ textTransform: uppercase
446
+ nav-link:
447
+ fontFamily: "'FerrariSans', sans-serif"
448
+ fontSize: 13px
449
+ fontWeight: 600
450
+ lineHeight: 1.4
451
+ letterSpacing: 0.65px
452
+ textTransform: uppercase
453
+ number-display:
454
+ fontFamily: "'FerrariSans', sans-serif"
455
+ fontSize: 80px
456
+ fontWeight: 700
457
+ lineHeight: 1.0
458
+ letterSpacing: -1.6px
459
+
460
+ rounded:
461
+ none: 0px
462
+ xs: 2px
463
+ sm: 4px
464
+ md: 6px
465
+ lg: 8px
466
+ xl: 12px
467
+ full: 9999px
468
+
469
+ spacing:
470
+ xxxs: 4px
471
+ xxs: 8px
472
+ xs: 16px
473
+ sm: 24px
474
+ md: 32px
475
+ lg: 48px
476
+ xl: 64px
477
+ xxl: 96px
478
+ super: 128px
479
+
480
+ components:
481
+ top-nav-on-dark:
482
+ backgroundColor: "{colors.canvas}"
483
+ textColor: "{colors.ink}"
484
+ typography: "{typography.nav-link}"
485
+ height: 64px
486
+ top-nav-on-light:
487
+ backgroundColor: "{colors.canvas-light}"
488
+ textColor: "{colors.body-on-light}"
489
+ typography: "{typography.nav-link}"
490
+ height: 64px
491
+ button-primary:
492
+ backgroundColor: "{colors.primary}"
493
+ textColor: "{colors.on-primary}"
494
+ typography: "{typography.button}"
495
+ rounded: "{rounded.none}"
496
+ padding: 14px 32px
497
+ height: 48px
498
+ button-primary-active:
499
+ backgroundColor: "{colors.primary-active}"
500
+ textColor: "{colors.on-primary}"
501
+ rounded: "{rounded.none}"
502
+ button-outline-on-dark:
503
+ backgroundColor: transparent
504
+ textColor: "{colors.ink}"
505
+ typography: "{typography.button}"
506
+ rounded: "{rounded.none}"
507
+ padding: 13px 31px
508
+ height: 48px
509
+ button-outline-on-light:
510
+ backgroundColor: transparent
511
+ textColor: "{colors.body-on-light}"
512
+ typography: "{typography.button}"
513
+ rounded: "{rounded.none}"
514
+ padding: 13px 31px
515
+ height: 48px
516
+ button-tertiary-text:
517
+ backgroundColor: transparent
518
+ textColor: "{colors.ink}"
519
+ typography: "{typography.button}"
520
+ hero-band-cinema:
521
+ backgroundColor: "{colors.canvas}"
522
+ textColor: "{colors.ink}"
523
+ typography: "{typography.display-mega}"
524
+ padding: 0
525
+ hero-band-light:
526
+ backgroundColor: "{colors.canvas-light}"
527
+ textColor: "{colors.body-on-light}"
528
+ typography: "{typography.display-xl}"
529
+ padding: 96px
530
+ feature-card-photo:
531
+ backgroundColor: "{colors.canvas}"
532
+ textColor: "{colors.ink}"
533
+ typography: "{typography.title-md}"
534
+ rounded: "{rounded.none}"
535
+ padding: 0
536
+ feature-card-light:
537
+ backgroundColor: "{colors.canvas-light}"
538
+ textColor: "{colors.body-on-light}"
539
+ typography: "{typography.title-md}"
540
+ rounded: "{rounded.none}"
541
+ padding: 32px
542
+ livery-band:
543
+ backgroundColor: "{colors.primary}"
544
+ textColor: "{colors.ink}"
545
+ typography: "{typography.display-lg}"
546
+ padding: 96px
547
+ preowned-listing-card:
548
+ backgroundColor: "{colors.canvas-light}"
549
+ textColor: "{colors.body-on-light}"
550
+ typography: "{typography.body-md}"
551
+ rounded: "{rounded.none}"
552
+ padding: 24px
553
+ spec-cell:
554
+ backgroundColor: transparent
555
+ textColor: "{colors.ink}"
556
+ typography: "{typography.number-display}"
557
+ padding: 24px 0
558
+ race-position-cell:
559
+ backgroundColor: transparent
560
+ textColor: "{colors.primary}"
561
+ typography: "{typography.number-display}"
562
+ race-calendar-row:
563
+ backgroundColor: transparent
564
+ textColor: "{colors.ink}"
565
+ typography: "{typography.body-md}"
566
+ padding: 16px 0
567
+ driver-card:
568
+ backgroundColor: "{colors.canvas-elevated}"
569
+ textColor: "{colors.ink}"
570
+ typography: "{typography.title-md}"
571
+ rounded: "{rounded.none}"
572
+ padding: 24px
573
+ text-input-on-dark:
574
+ backgroundColor: "{colors.canvas}"
575
+ textColor: "{colors.ink}"
576
+ typography: "{typography.body-md}"
577
+ rounded: "{rounded.sm}"
578
+ padding: 14px 16px
579
+ height: 48px
580
+ text-input-on-light:
581
+ backgroundColor: "{colors.canvas-light}"
582
+ textColor: "{colors.body-on-light}"
583
+ typography: "{typography.body-md}"
584
+ rounded: "{rounded.sm}"
585
+ padding: 14px 16px
586
+ height: 48px
587
+ badge-pill:
588
+ backgroundColor: "{colors.canvas-elevated}"
589
+ textColor: "{colors.ink}"
590
+ typography: "{typography.caption-uppercase}"
591
+ rounded: "{rounded.full}"
592
+ padding: 4px 12px
593
+ cta-band-dark:
594
+ backgroundColor: "{colors.canvas}"
595
+ textColor: "{colors.ink}"
596
+ typography: "{typography.display-lg}"
597
+ padding: 96px
598
+ newsletter-input-band:
599
+ backgroundColor: "{colors.canvas-elevated}"
600
+ textColor: "{colors.ink}"
601
+ typography: "{typography.body-md}"
602
+ rounded: "{rounded.sm}"
603
+ padding: 32px
604
+ footer-dark:
605
+ backgroundColor: "{colors.canvas}"
606
+ textColor: "{colors.body}"
607
+ typography: "{typography.body-sm}"
608
+ padding: 64px 48px
609
+ footer-link:
610
+ backgroundColor: transparent
611
+ textColor: "{colors.body}"
612
+ typography: "{typography.body-sm}"
613
+ ---
614
+
615
+ ## Overview
616
+
617
+ Ferrari's marketing site reads as cinematic editorial — closer to a luxury-magazine spread than a typical car-OEM site. The base canvas is **near-black** (`{colors.canvas}` — #181818) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables, dealer surfaces). The single brand voltage is **Rosso Corsa** (`{colors.primary}` — #da291c), the iconic Ferrari racing red, used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights.
618
+
619
+ Type runs **FerrariSans** as the single sans family at modest weights — display 500, body 400. CTA labels render in uppercase with generous tracking (1.1-1.4px). The brand never uses bold display copy.
620
+
621
+ The brand's strongest visual signature is the **full-bleed cinematic hero photograph** — top-of-page imagery shows car photography, model details, or trackside livery without any chrome competing with it. Headlines float over the bottom of the photo or sit in a tight band beneath. Spacing follows the explicit 8px token ladder: `xxxs` 4 / `xxs` 8 / `xs` 16 / `sm` 24 / `md` 32 / `lg` 48 / `xl` 64 / `xxl` 96 / `super` 128.
622
+
623
+ **Key Characteristics:**
624
+ - Single accent: `{colors.primary}` (Rosso Corsa #da291c) for primary CTAs, the Cavallino, F1 race-position highlights. Used scarcely.
625
+ - Near-black canvas (#181818) — never pure black. White-canvas bands only inside editorial contexts.
626
+ - Single sans family: FerrariSans across every text role.
627
+ - Display weight stays at 500 — never bold.
628
+ - CTA labels render uppercase with 1.4px tracking.
629
+ - Sharp `{rounded.none}` (0px) corners on every CTA, card, and band — luxury-automotive precision.
630
+ - Full-bleed cinematic hero photography is the page chrome.
631
+ - Explicit 8px spacing token ladder with named scale (xxxs through super).
632
+ - Hairlines + photographic depth — no drop shadow tiers.
633
+
634
+ ## Colors
635
+
636
+ ### Brand & Accent
637
+ - **Rosso Corsa** (`{colors.primary}` — #da291c): The iconic Ferrari racing red. Primary CTA fill, Cavallino mark, F1 driver-position highlights. Used scarcely.
638
+ - **Rosso Corsa Active** (`{colors.primary-active}` — #b01e0a): Press state.
639
+ - **Rosso Corsa Hover-darker** (`{colors.primary-hover}` — #9d2211): Documented for completeness; per the no-hover policy this is not used in preview HTML.
640
+ - **Hypersail Yellow** (`{colors.accent-yellow-hypersail}` — #fff200) + **Yellow** (`{colors.accent-yellow}` — #f6e500): Sub-brand accents reserved for the Hypersail sailing program and the global focus-ring color. Not part of the main automotive palette.
641
+
642
+ ### Surface
643
+ - **Canvas** (`{colors.canvas}` — #181818): Near-black page floor — never pure black, slight warmth.
644
+ - **Canvas Elevated** (`{colors.canvas-elevated}` — #303030): Cards and panels on dark canvas.
645
+ - **Canvas Light** (`{colors.canvas-light}` — #ffffff): White editorial bands (preowned listings, pricing).
646
+ - **Surface Card** (`{colors.surface-card}` — #303030): Same as canvas-elevated — driver cards, livery photo plates.
647
+ - **Surface Soft Light** (`{colors.surface-soft-light}` — #f7f7f7): Light editorial alternating band.
648
+ - **Surface Strong Light** (`{colors.surface-strong-light}` — #ebebeb): Light-canvas dividers, badges.
649
+
650
+ ### Hairlines
651
+ - **Hairline** (`{colors.hairline}` — #303030): 1px divider on dark — same hex as `{colors.canvas-elevated}`.
652
+ - **Hairline On Light** (`{colors.hairline-on-light}` — #d2d2d2): 1px divider on light bands.
653
+ - **Hairline Soft** (`{colors.hairline-soft}` — #ebebeb): Lighter divider.
654
+
655
+ ### Text
656
+ - **Ink** (`{colors.ink}` — #ffffff): Display, body emphasis on dark.
657
+ - **Body** (`{colors.body}` — #969696): Default running-text on dark.
658
+ - **Body Strong** (`{colors.body-strong}` — #ffffff): Same as ink.
659
+ - **Body On Light** (`{colors.body-on-light}` — #181818): Default text on light bands.
660
+ - **Muted** (`{colors.muted}` — #666666): Sub-titles, captions on dark.
661
+ - **Muted Soft** (`{colors.muted-soft}` — #8f8f8f): Disabled link text.
662
+ - **On Primary** (`{colors.on-primary}` — #ffffff): White text on Rosso Corsa.
663
+
664
+ ### Semantic
665
+ - **Info** (`{colors.semantic-info}` — #4c98b9): Info badges, callout backgrounds.
666
+ - **Success** (`{colors.semantic-success}` — #03904a): Confirmation.
667
+ - **Warning** (`{colors.semantic-warning}` — #f13a2c): Validation warnings.
668
+
669
+ ## Typography
670
+
671
+ ### Font Family
672
+ **FerrariSans** is the licensed single sans family across every text role. Fallback: `-apple-system, system-ui, sans-serif`. No display/body family split.
673
+
674
+ ### Hierarchy
675
+
676
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
677
+ |---|---|---|---|---|---|
678
+ | `{typography.display-mega}` | 80px | 500 | 1.05 | -1.6px | Homepage hero h1 |
679
+ | `{typography.display-xl}` | 56px | 500 | 1.1 | -1.12px | Subsidiary heroes |
680
+ | `{typography.display-lg}` | 36px | 500 | 1.2 | -0.36px | Section heads, livery band |
681
+ | `{typography.display-md}` | 26px | 500 | 1.5 | 0.195px | Sub-section heads |
682
+ | `{typography.title-md}` | 18px | 700 | 1.2 | 0 | Component titles |
683
+ | `{typography.title-sm}` | 16px | 500 | 1.4 | 0.08px | List labels |
684
+ | `{typography.body-md}` | 14px | 400 | 1.5 | 0 | Default body |
685
+ | `{typography.body-sm}` | 13px | 400 | 1.5 | 0 | Footer body |
686
+ | `{typography.caption}` | 12px | 400 | 1.4 | 0 | Photo captions |
687
+ | `{typography.caption-uppercase}` | 11px | 600 | 1.4 | 1.1px | Section labels, badges |
688
+ | `{typography.button}` | 14px | 700 | 1.0 | 1.4px (uppercase) | CTA pill labels |
689
+ | `{typography.nav-link}` | 13px | 600 | 1.4 | 0.65px (uppercase) | Top-nav menu items |
690
+ | `{typography.number-display}` | 80px | 700 | 1.0 | -1.6px | Race position highlights, spec values |
691
+
692
+ ### Principles
693
+ - **Display weight stays at 500.** Editorial confidence, not bombastic. The cinematic photography is doing the visual heavy-lifting — type doesn't need to compete.
694
+ - **CTA labels are uppercase with 1.4px tracking.** Luxury-precision feel.
695
+ - **Nav labels are uppercase with 0.65px tracking.** Consistent with CTA voice.
696
+ - **Negative letter-spacing on display only.** -0.36px to -1.6px on display sizes; body stays at 0.
697
+
698
+ ### Note on Font Substitutes
699
+ FerrariSans is licensed. Open-source substitute: **Inter** at weight 500 with letter-spacing -1%, or **Söhne** for closer humanist proportions.
700
+
701
+ ## Layout
702
+
703
+ ### Spacing System
704
+ - **Base unit:** 4px.
705
+ - **Tokens:** `{spacing.xxxs}` 4px · `{spacing.xxs}` 8px · `{spacing.xs}` 16px · `{spacing.sm}` 24px · `{spacing.md}` 32px · `{spacing.lg}` 48px · `{spacing.xl}` 64px · `{spacing.xxl}` 96px · `{spacing.super}` 128px.
706
+ - **Section padding:** `{spacing.xxl}` (96px) for major bands; `{spacing.super}` (128px) reserved for hero band depth.
707
+
708
+ ### Grid & Container
709
+ - Max content width: ~1280px on editorial bands. Hero photography goes full-bleed.
710
+ - Editorial body: 12-column grid.
711
+ - Feature card grids: 2-up at desktop for hero splits, 3-up for benefit grids, 4-up for preowned listing tiles.
712
+ - Footer: 5-column at desktop.
713
+
714
+ ### Whitespace Philosophy
715
+ Generous editorial pacing. Cinematic hero photography occupies generous viewport real-estate; body sections sit in tighter editorial layouts beneath. The canvas-light editorial bands (preowned, pricing) carry tighter density than the dark cinema bands.
716
+
717
+ ## Elevation & Depth
718
+
719
+ The system uses **photographic depth + brightness-step** elevation. No drop shadows except a single soft-small `{shadow.small}` documented in extracted tokens.
720
+
721
+ | Level | Treatment | Use |
722
+ |---|---|---|
723
+ | Flat (canvas) | `{colors.canvas}` (#181818) | Body bands, footer |
724
+ | Card | `{colors.canvas-elevated}` (#303030) | Driver cards, livery plates |
725
+ | Light band | `{colors.canvas-light}` (#ffffff) | Preowned listings, pricing |
726
+ | Hairline border | 1px `{colors.hairline}` or `{colors.hairline-on-light}` | Card outlines, dividers |
727
+ | Soft drop | `0 4px 8px rgba(0,0,0,0.1)` | Hovered cards (single shadow tier) |
728
+ | Photographic | Full-bleed cinema imagery | Hero band, livery photographs |
729
+
730
+ ### Decorative Depth
731
+ - **Full-bleed cinema photography** is the brand's primary depth treatment.
732
+ - **Brand red gradient** (`linear-gradient(180deg, #a00c01, #da291c 64%)`): The Rosso Corsa gradient used inside accent bands and CTA hover states.
733
+ - **Dark grey gradient** (`linear-gradient(180deg, #3c3c3c, #030303 64%)`): Atmospheric darken used at section transitions.
734
+
735
+ ## Shapes
736
+
737
+ ### Border Radius Scale
738
+
739
+ | Token | Value | Use |
740
+ |---|---|---|
741
+ | `{rounded.none}` | 0px | Every CTA, card, band — dominant radius |
742
+ | `{rounded.xs}` | 2px | Tight badges (rare) |
743
+ | `{rounded.sm}` | 4px | Form inputs |
744
+ | `{rounded.md}` | 6px | Compact cards (rare) |
745
+ | `{rounded.lg}` | 8px | Mobile-only collapse cards |
746
+ | `{rounded.xl}` | 12px | Modal/dialog corners (rare) |
747
+ | `{rounded.full}` | 9999px | Avatar plates, badge pills |
748
+
749
+ The radius vocabulary is **sharp by default**. Sharp 0px corners are the brand button shape — never rounded pills. Pill geometry is reserved for badge labels only.
750
+
751
+ ## Components
752
+
753
+ ### Top Navigation
754
+
755
+ **`top-nav-on-dark`** — Default top nav on dark hero pages. Background `{colors.canvas}`, text `{colors.ink}`, height 64px. Layout: Cavallino mark left, primary horizontal menu (Models / F1 / Lifestyle / Owners / Preowned), language picker + utilities right. Menu items render uppercase with 0.65px tracking.
756
+
757
+ **`top-nav-on-light`** — White-canvas variant for editorial light bands.
758
+
759
+ ### Buttons
760
+
761
+ **`button-primary`** — The signature Rosso Corsa CTA. Background `{colors.primary}`, text `{colors.on-primary}`, type `{typography.button}` (14px / 700 / 1.4px tracking, uppercase), padding 14px × 32px, height 48px, **rounded `{rounded.none}` (0px — sharp corners)**.
762
+
763
+ **`button-primary-active`** — Press state. Background `{colors.primary-active}`.
764
+
765
+ **`button-outline-on-dark`** — Transparent with 1px white border. Background transparent, text `{colors.ink}`, 1px white border, same sharp 0px corners.
766
+
767
+ **`button-outline-on-light`** — Transparent with 1px ink border on light bands.
768
+
769
+ **`button-tertiary-text`** — Inline text link, uppercase tracking.
770
+
771
+ ### Hero Bands
772
+
773
+ **`hero-band-cinema`** — Full-bleed cinematic photograph. Background `{colors.canvas}` underneath, but the photo fills the viewport. Display headline floats over the bottom of the photo or sits in a tight band beneath, in `{typography.display-mega}` (80px / 500 / -1.6px). One primary CTA + one outline CTA. Zero padding — the photo fills edge-to-edge.
774
+
775
+ **`hero-band-light`** — White-canvas variant for editorial bands. Background `{colors.canvas-light}`, text `{colors.body-on-light}`, padding 96px.
776
+
777
+ ### Cards
778
+
779
+ **`feature-card-photo`** — Image-first card. Background `{colors.canvas}`, text `{colors.ink}`, rounded `{rounded.none}`. Image fills the top edge-to-edge; title + body sit beneath in tight typography.
780
+
781
+ **`feature-card-light`** — White-canvas variant. Background `{colors.canvas-light}`, text `{colors.body-on-light}`, rounded `{rounded.none}`, padding 32px.
782
+
783
+ **`driver-card`** — F1 driver portrait card. Background `{colors.canvas-elevated}`, text `{colors.ink}`, rounded `{rounded.none}`, padding 24px. Layout: driver portrait + name + race number + team badge.
784
+
785
+ ### Editorial Surfaces
786
+
787
+ **`livery-band`** — A full-width Rosso Corsa accent band. Background `{colors.primary}`, text `{colors.ink}`, type `{typography.display-lg}`, 96px padding. Used as a standout livery callout between dark editorial bands.
788
+
789
+ **`preowned-listing-card`** — Used in the preowned Ferrari listing grid. Background `{colors.canvas-light}`, text `{colors.body-on-light}`, rounded `{rounded.none}`, padding 24px. Layout: car photo top + model name + year/mileage + price.
790
+
791
+ ### Spec & Race Surfaces
792
+
793
+ **`spec-cell`** — Technical spec callout. Transparent background, value in `{typography.number-display}` (80px / 700 / -1.6px white), label below in `{typography.caption-uppercase}`.
794
+
795
+ **`race-position-cell`** — F1 driver finishing position. Same number-display geometry but text in `{colors.primary}` Rosso Corsa for the brand's racing identity.
796
+
797
+ **`race-calendar-row`** — Hairline-divided row in the F1 race calendar. Layout: date column left, race name + circuit middle, results column right.
798
+
799
+ ### Forms & Tags
800
+
801
+ **`text-input-on-dark`** — Background `{colors.canvas}`, text `{colors.ink}`, rounded `{rounded.sm}` (4px), padding 14px × 16px, height 48px, 1px `{colors.hairline}` border.
802
+
803
+ **`text-input-on-light`** — White-canvas variant.
804
+
805
+ **`badge-pill`** — Small uppercase pill. Background `{colors.canvas-elevated}`, text `{colors.ink}`, type `{typography.caption-uppercase}` (11px / 600 / 1.1px tracking, uppercase), rounded `{rounded.full}` (9999px), padding 4px × 12px. The only place pill geometry is used.
806
+
807
+ ### Newsletter / CTA / Footer
808
+
809
+ **`newsletter-input-band`** — Newsletter signup band. Background `{colors.canvas-elevated}`, padding 32px, rounded `{rounded.sm}`. Holds an inline email input + primary CTA.
810
+
811
+ **`cta-band-dark`** — Pre-footer band. Background `{colors.canvas}`, centered display headline in `{typography.display-lg}`, single Rosso Corsa CTA. 96px padding.
812
+
813
+ **`footer-dark`** — Closing dark footer. Background `{colors.canvas}`, text `{colors.body}`. 5-column link list. 64×48px padding.
814
+
815
+ **`footer-link`** — Background transparent, text `{colors.body}`, type `{typography.body-sm}`.
816
+
817
+ ## Do's and Don'ts
818
+
819
+ ### Do
820
+ - Reserve `{colors.primary}` (Rosso Corsa) for primary CTAs, the Cavallino mark, and F1 race-position highlights.
821
+ - Set every CTA at `{rounded.none}` (0px sharp corners) — the brand's signature precision.
822
+ - Render CTA labels in uppercase with 1.4px tracking via `{typography.button}`.
823
+ - Pair every hero with a full-bleed cinematic photograph — the photograph IS the depth.
824
+ - Use the explicit 8px spacing ladder (`xxxs` through `super`) rather than ad-hoc px values.
825
+ - Keep display weight at 500 — never bold.
826
+
827
+ ### Don't
828
+ - Don't introduce a saturated brand color other than Rosso Corsa.
829
+ - Don't use rounded or pill CTAs — sharp 0px corners are the brand button.
830
+ - Don't bold display copy. The cinematic photography does the visual heavy-lifting.
831
+ - Don't use Hypersail yellow outside the Hypersail sailing program context.
832
+ - Don't use pure black canvas. The brand canvas is `{colors.canvas}` (#181818) — slightly warm.
833
+ - Don't add drop shadow tiers. Photography + brightness-step elevation carry the depth.
834
+ - Don't extract a CTA color from a third-party widget (cookie consent, OneTrust). The brand's CTA color is what appears on actual product CTAs, not on injected modals.
835
+
836
+ ## Responsive Behavior
837
+
838
+ ### Breakpoints
839
+
840
+ | Name | Width | Key Changes |
841
+ |---|---|---|
842
+ | Mobile | < 640px | Hero photograph crops vertically; hero h1 80→32px; feature card grid 1-up; nav hamburger; preowned listing 1-up. |
843
+ | Tablet | 640–1024px | Hero h1 56px; feature card grid 2-up; preowned listing 2-up. |
844
+ | Desktop | 1024–1280px | Full hero h1 80px; feature card grid 3-up; preowned listing 4-up. |
845
+ | Wide | > 1280px | Editorial body content caps at 1280px; hero photography continues full-bleed. |
846
+
847
+ ### Touch Targets
848
+ - Primary CTA at 48px height — at WCAG AAA (44 × 44).
849
+ - Nav items render uppercase with 0.65px tracking, padded for an effective 48px tap area.
850
+
851
+ ### Collapsing Strategy
852
+ - Top nav switches to hamburger below 768px.
853
+ - Hero photograph reframes per breakpoint via art direction — desktop carries wide cinematic; mobile crops tighter or shifts to vertical.
854
+ - Feature card grid: 4-up → 3-up → 2-up → 1-up.
855
+ - F1 driver cards: 2-up at desktop, 1-up at mobile.
856
+
857
+ ## Iteration Guide
858
+
859
+ 1. Focus on a single component at a time.
860
+ 2. CTAs default to `{rounded.none}` (0px sharp). Cards use `{rounded.none}` too. Pill is reserved for badges.
861
+ 3. Variants live as separate entries inside `components:`.
862
+ 4. Use `{token.refs}` everywhere — never inline hex.
863
+ 5. Hover state never documented.
864
+ 6. FerrariSans 500 for display, 400/700 for body. Uppercase + tracking on CTAs and nav.
865
+ 7. Rosso Corsa stays scarce — primary CTAs, Cavallino, race-position highlights only.
866
+ 8. Use the explicit 8px named spacing ladder.
867
+
868
+ ## Known Gaps
869
+
870
+ - FerrariSans is a licensed typeface; Inter at weight 500 is the documented substitute.
871
+ - Animation timings (hero parallax, livery band entrance, race position counter) out of scope.
872
+ - In-product surfaces (preowned configurator, F1 telemetry overlays) only partially captured via marketing surfaces.
873
+ - Form validation states beyond focus not visible on captured surfaces.
874
+ - Hypersail yellow tokens are extracted but only appear in the Hypersail sailing program context — documented as scoped accents.