oh-my-design-cli 1.8.7 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +1995 -38
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -4,58 +4,80 @@ name: Ferrari
4
4
  country: IT
5
5
  category: automotive
6
6
  homepage: "https://www.ferrari.com"
7
- primary_color: "#ff2800"
7
+ primary_color: "#da291c"
8
8
  logo:
9
9
  type: simpleicons
10
10
  slug: ferrari
11
- verified: "2026-05-15"
11
+ verified: "2026-07-13"
12
12
  omd: "0.1"
13
+ verification_v2:
14
+ schema: 2
15
+ checked: "2026-07-13"
16
+ surfaces:
17
+ - { id: home, kind: public-brand, url: "https://www.ferrari.com/en-EN", inspected: "2026-07-13" }
18
+ - { id: car-range, kind: public-product, url: "https://www.ferrari.com/en-EN/auto/car-range", inspected: "2026-07-13" }
19
+ - { id: formula1, kind: public-racing, url: "https://www.ferrari.com/en-EN/formula1", inspected: "2026-07-13" }
20
+ sources:
21
+ - { id: home-live, kind: product-surface, url: "https://www.ferrari.com/en-EN", captured: "2026-07-13" }
22
+ - { id: car-range-live, kind: product-surface, url: "https://www.ferrari.com/en-EN/auto/car-range", captured: "2026-07-13" }
23
+ - { id: formula1-live, kind: product-surface, url: "https://www.ferrari.com/en-EN/formula1", captured: "2026-07-13" }
24
+ - { id: ferrari-sans-asset, kind: brand-asset, url: "https://www.ferrari.com/etc.clientlibs/ferrari-fcom/clientlibs/clientlib-site/resources/fonts/Ferrari-SansRegular.woff2?v=1", captured: "2026-07-13" }
25
+ - { id: ferrari-font-context, kind: official-doc, url: "https://www.ferrari.com/en-EN/formula1/articles/the-sf-24-is-here", captured: "2026-07-13" }
26
+ - { id: ferrari-legal, kind: license, url: "https://www.ferrari.com/en-US/legal", captured: "2026-07-13" }
27
+ - { id: ferrari-about, kind: official-doc, url: "https://www.ferrari.com/en-EN/corporate/about-us", captured: "2026-07-13" }
28
+ - { id: ferrari-history, kind: official-doc, url: "https://www.ferrari.com/en-EN/history", captured: "2026-07-13" }
29
+ - { id: ferrari-design, kind: official-doc, url: "https://www.ferrari.com/en-EN/magazine/articles/new-language-of-ferrari-design", captured: "2026-07-13" }
30
+ conflicts: []
31
+ claims:
32
+ "tokens.colors.primary": &range { surface_id: car-range, source_id: car-range-live, method: computed-style, captured: "2026-07-13" }
33
+ "tokens.colors.canvas": &home { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-13" }
34
+ "tokens.colors.foreground": *home
35
+ "tokens.colors.on-primary": *range
36
+ "tokens.typography.family.ui": *range
37
+ "tokens.typography.family.chrome": *home
38
+ "tokens.typography.nav.size": *home
39
+ "tokens.typography.nav.weight": *home
40
+ "tokens.typography.nav.lineHeight": *home
41
+ "tokens.typography.nav.tracking": *home
42
+ "tokens.typography.nav.use": *home
43
+ "tokens.typography.primary-action.size": *range
44
+ "tokens.typography.primary-action.weight": *range
45
+ "tokens.typography.primary-action.lineHeight": *range
46
+ "tokens.typography.primary-action.use": *range
47
+ "tokens.typography.consent-action.size": *home
48
+ "tokens.typography.consent-action.weight": *home
49
+ "tokens.typography.consent-action.lineHeight": *home
50
+ "tokens.typography.consent-action.tracking": *home
51
+ "tokens.typography.consent-action.use": *home
52
+ "tokens.spacing.nav-y": *home
53
+ "tokens.spacing.consent-y": *home
54
+ "tokens.spacing.primary-inset": *range
55
+ "tokens.rounded.sharp": *range
56
+ "tokens.rounded.consent": *home
57
+ "tokens.components.racing-media-card.type": &formula1 { surface_id: formula1, source_id: formula1-live, method: computed-style, captured: "2026-07-13" }
58
+ "tokens.components.racing-media-card.bg": *formula1
59
+ "tokens.components.racing-media-card.fg": *formula1
60
+ "tokens.components.racing-media-card.radius": *formula1
61
+ "tokens.components.racing-media-card.shadow": *formula1
62
+ "tokens.components.racing-media-card.use": *formula1
13
63
  tokens:
14
- source: prose-derived
15
- extracted: "2026-06-09"
16
- note: "Brand primary is Ferrari Red #DA291C (§2 canonical); frontmatter primary_color #ff2800 is the Rosso swatch reference"
64
+ source: reconciled
65
+ extracted: "2026-07-13"
66
+ note: "Three supplied public Ferrari surfaces were reconciled. Marketing and racing web components are retained only at their observed selector/surface boundary; no authenticated product UI, responsive behavior, semantic status palette, or unobserved interaction variant is inferred."
17
67
  colors:
18
- primary: "#DA291C"
19
- primary-dark: "#B01E0A"
20
- primary-deep: "#9D2211"
21
- canvas: "#FFFFFF"
22
- black: "#000000"
23
- dark-surface: "#303030"
24
- light-gray: "#D2D2D2"
25
- heading: "#181818"
26
- body: "#666666"
27
- mid-gray: "#8F8F8F"
28
- silver: "#969696"
29
- racing-yellow: "#FFF200"
30
- modena-yellow: "#F6E500"
31
- warning: "#F13A2C"
32
- success: "#03904A"
33
- info: "#4C98B9"
34
- link-hover: "#3860BE"
35
- teal-hover: "#1EAEDB"
68
+ primary: "#da291c"
69
+ canvas: "#ffffff"
70
+ foreground: "#181818"
71
+ on-primary: "#ffffff"
36
72
  typography:
37
- family: { sans: "FerrariSans", mono: "FerrariSans" }
38
- section-title: { size: 26, weight: 500, lineHeight: 1.20, use: "Primary editorial headings on white" }
39
- card-heading: { size: 24, weight: 400, use: "Content card titles" }
40
- subheading: { size: 18, weight: 700, lineHeight: 1.20, use: "Bold subsection labels" }
41
- ui-heading: { size: 16, weight: 500, lineHeight: 1.40, tracking: 0.08, use: "Component headings, nav items" }
42
- button: { size: 16, weight: 400, tracking: 1.28, use: "Primary button label, wide tracking" }
43
- nav-link: { size: 13, weight: 600, lineHeight: 1.20, tracking: 0.13, use: "Navigation and footer links" }
44
- caption: { size: 13, weight: 400, lineHeight: 1.50, tracking: 0.195, use: "Metadata and descriptions" }
45
- label-upper: { size: 12, weight: 400, lineHeight: 1.27, tracking: 1, use: "Body-Font uppercase labels, category tags" }
46
- spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 25, section: 80 }
47
- rounded: { sm: 2, md: 2, lg: 8, full: 9999 }
48
- shadow:
49
- subtle: "rgb(153,153,153) 1px 1px 1px 0px"
73
+ family: { ui: "Body-Font", chrome: "FerrariSans" }
74
+ nav: { size: 12, weight: 400, lineHeight: 1.27, tracking: 1, use: "Observed public header item" }
75
+ primary-action: { size: 16, weight: 400, lineHeight: 1.15, use: "Observed Ferrari-red Subscribe CTA" }
76
+ consent-action: { size: 13.008, weight: 600, lineHeight: 1.2, tracking: 0.13008, use: "Observed OneTrust cookie-control action" }
77
+ spacing: { nav-y: 5, consent-y: 12, primary-inset: 21 }
78
+ rounded: { sharp: 0, consent: 2 }
50
79
  components:
51
- button-primary: { type: button, bg: "#FFFFFF", fg: "#000000", radius: 2, padding: "12px 10px", font: "16px FerrariSans", use: "Default white CTA (hover bg #1EAEDB)" }
52
- button-subscribe: { type: button, bg: "#DA291C", fg: "#FFFFFF", radius: 2, padding: "12px 10px", use: "High-emphasis Subscribe CTA — only red button" }
53
- button-ghost: { type: button, bg: "transparent", fg: "#FFFFFF", radius: 2, padding: "12px 10px", use: "Ghost button on dark backgrounds (1px white border)" }
54
- editorial-card: { type: card, bg: "#FFFFFF", radius: 2, use: "Content card — image above, heading + caption below, no border/shadow" }
55
- dark-card: { type: card, bg: "#000000", fg: "#FFFFFF", use: "Hero/feature full-bleed cinematic card" }
56
- input: { type: input, bg: "transparent", fg: "#FFFFFF", radius: 2, use: "Newsletter input on dark (1px #969696 placeholder)" }
57
- dialog: { type: dialog, bg: "#FFFFFF", radius: 8, use: "Cookie consent modal" }
58
- label: { type: badge, fg: "#8F8F8F", font: "12px Body-Font uppercase, 1px tracking", use: "Category tag / structural annotation" }
80
+ racing-media-card: { type: card, bg: "transparent", fg: "#ffffff", radius: "0px", shadow: "none", use: "Static Formula 1 media-card wrapper; surface-3::div.Card__wrapper__2HwxoSe5.Card__wrapper--visible__1LdTLCPj." }
59
81
  components_harvested: true
60
82
  ---
61
83
 
@@ -63,385 +85,146 @@ tokens:
63
85
 
64
86
  ## 1. Visual Theme & Atmosphere
65
87
 
66
- Ferrari's website is a digital editorial a curated magazine where the Prancing Horse brand is presented with the gravitas of an art institution and the precision of Italian coachwork. The page opens onto an expanse of absolute black, broken only by the iconic Prancing Horse emblem floating alone in its own atmosphere. Below, the content unfolds in dramatic alternations between inky-dark cinematic sections and crisp white editorial panels. This chiaroscuro rhythm darkness yielding to light, machinery yielding to human story feels more like paging through a Ferrari yearbook than scrolling a commercial website. Every section is a curated vignette: a concept car dissolving from shadow, two F1 drivers posed with sculptural stillness, a lineup of production models arranged in a jewel-toned parade.
88
+ Ferrari builds road cars and competes in racing from Maranello; its official history frames that work as cars made to win both on track and road. The public web surfaces supplied for this review express that heritage as image-led brand and racing communication rather than an in-car, owner, or commerce application. Across the home, car-range, and Formula 1 pages, the interface mostly recedes into black, white, transparent layers, wide-tracked small navigation, and sharp controls, while a Ferrari-red `#da291c` Subscribe action appears on the observed product-range and racing surfaces. Ferrari’s own design writing describes Centro Stile’s continuing combination of art and engineering, a useful context for the deliberate, low-chrome presentation; it is context, not a substitute for a web token. The capture does not establish authenticated product UI, dealer tooling, configurator states, or native-app patterns.
67
89
 
68
- The color language is monastically restrained for a brand built on speed and emotion. Ferrari Red (`#DA291C`) appears with almost surgical sparseness — reserved for the Subscribe CTA and accent moments that need to command immediate attention. The vast majority of the interface lives in black, white, and a carefully calibrated gray scale (from `#303030` dark surfaces through `#8F8F8F` mid-tones to `#D2D2D2` light borders). Two yellows — Racing Yellow (`#FFF200`) and the deeper Modena Yellow (`#F6E500`) — exist in the token system as heritage accents for special contexts, honoring Ferrari's racing provenance. The restraint means that when red does appear, it carries the weight of the entire brand.
69
-
70
- Typography relies on FerrariSans — a proprietary sans-serif family with medium-weight headings (500–700) and compact proportions. Display text runs at 24–26px for section titles, while the UI chrome lives at 12–16px in weights ranging from regular to bold. A secondary "Body-Font" custom typeface handles captions and utility text, rendered in uppercase with wide letter-spacing (1px) to create a label-like editorial quality. This two-font system — FerrariSans for narrative authority, Body-Font for structural annotation — gives the site a print-magazine hierarchy. No text decoration is gratuitous. Letter-spacing is tight for headlines and deliberately expanded for labels, creating a visual rhythm that alternates between urgency and composure.
71
-
72
- **Key Characteristics:**
73
- - Chiaroscuro layout alternating between deep black sections and clean white editorial panels
74
- - Ferrari Red (`#DA291C`) used with extreme sparseness — accent, not atmosphere
75
- - Prancing Horse emblem as isolated hero element on a void-black field
76
- - FerrariSans proprietary typeface with compact proportions and medium weights
77
- - Photo-journalism imagery: concept renders, driver portraits, lineup parades — each section is a story
78
- - Uppercase Body-Font labels with wide letter-spacing (1px) for editorial annotation
79
- - Nearly zero border-radius (2px default) reflecting precision engineering aesthetics
80
- - Dual-framework architecture (PrimeReact + Element Plus) powering 32+ interactive components
81
- - Carousel-driven hero with editorial slides and arrow/dot navigation
90
+ - **Public-surface scope:** home, car range, and Formula 1 only; no account or checkout behavior is promoted.
91
+ - **Image-led contrast:** `#ffffff`, `#181818`, and transparent controls carry the observed chrome.
92
+ - **Measured accent:** `#da291c` is an observed 57px Subscribe CTA fill, not a universal semantic color.
93
+ - **Sharp geometry:** public primary and header controls resolve to 0px radius; cookie consent is a separate 2px utility treatment.
82
94
 
83
95
  ## 2. Color Palette & Roles
84
96
 
85
- ### Primary
86
- - **Ferrari Red** (`#DA291C`): The iconic Rosso Corsa — primary accent and CTA color. Used for the Subscribe button, key action triggers, and brand moments where maximum visual authority is needed. The single most important color in the system (--f-color-accent-100)
87
- - **Pure White** (`#FFFFFF`): Primary surface for editorial content panels, navigation text on dark backgrounds, and button fills. The canvas that provides breathing room between dark cinematic sections (--f-color-ui-0)
88
-
89
- ### Secondary & Accent
90
- - **Dark Red** (`#B01E0A`): Deeper variant of Ferrari Red for hover/pressed states and high-contrast contexts — adds dimensionality to the brand color without introducing a new hue (--f-color-accent-90)
91
- - **Deep Red** (`#9D2211`): The most saturated dark red — used for active states and extra emphasis where even Dark Red needs more weight (--f-color-accent-80)
92
- - **Racing Yellow** (`#FFF200`): Heritage accent from Ferrari's racing livery — reserved for special highlights and motorsport-related contexts (--f-color-yellow-hypersail)
93
- - **Modena Yellow** (`#F6E500`): Slightly warmer and more golden than Racing Yellow — used for secondary heritage accents and category markers (--f-color-yellow)
94
-
95
- ### Surface & Background
96
- - **Absolute Black** (`#000000`): Hero sections, cinematic backgrounds, and the dominant dark surface — the void that makes imagery and the Prancing Horse emblem float
97
- - **Dark Surface** (`#303030`): Secondary dark surface for footer regions, newsletter sections, and layered dark panels — slightly lifted from pure black for depth differentiation (--f-color-ui-90)
98
- - **Light Gray Surface** (`#D2D2D2`): Subtle alternate surface for dividers and border treatments on white panels (--f-color-ui-20)
99
- - **Overlay Dark** (`hsla(0, 0%, 7%, 0.8)`): Semi-transparent near-black for modal overlays and image caption backgrounds (--f-color-overlay-darker)
100
-
101
- ### Neutrals & Text
102
- - **Near Black** (`#181818`): Primary body text color on light surfaces — slightly softened from absolute black for better readability (link default color)
103
- - **Dark Gray** (`#666666`): Secondary text and subdued UI labels — used where text needs to recede from the primary hierarchy (--f-color-black-60)
104
- - **Mid Gray** (`#8F8F8F`): Tertiary text for metadata, timestamps, and supportive content (--f-color-black-50)
105
- - **Silver Gray** (`#969696`): Placeholder text and disabled state indicators (--f-color-black-55)
106
-
107
- ### Semantic & Accent
108
- - **Warning Red** (`#F13A2C`): Accessible warning state — brighter and more orange-shifted than Ferrari Red to differentiate semantic alerts from brand expression (--f-color-accessible-warning)
109
- - **Success Green** (`#03904A`): Confirmation and positive status indicators (--f-color-accessible-success)
110
- - **Info Blue** (`#4C98B9`): Informational callouts, tooltips, and neutral status messaging (--f-color-accessible-info)
111
- - **Link Hover Blue** (`#3860BE`): Interactive hover state for text links — a dignified navy-blue that signals interactivity without competing with Ferrari Red
112
-
113
- ### Gradient System
114
- - No explicit gradients in the token system
115
- - Depth is achieved through photography and the binary contrast between black and white surfaces
116
- - The overlay darker color (`hsla(0, 0%, 7%, 0.8)`) creates depth through transparency layering over imagery
117
- - Occasional photographic gradients (light falloff in studio shots) provide atmospheric depth within image content
97
+ - **Ferrari-red action** (`#da291c`): observed background for the car-range and Formula 1 `BtnCta__button__w7eTRXBJ` Subscribe CTA.
98
+ - **Canvas / on-primary** (`#ffffff`): observed white surface and red-CTA foreground; it also appears as the header-control foreground on dark imagery.
99
+ - **Foreground** (`#181818`): observed text and border color on light public chrome.
100
+
101
+ The bundle also contains black text and border values, but it does not establish error, success, warning, link-hover, yellow heritage, or a general dark-surface role. Those are omitted rather than reconstructed from older snapshots or photography.
118
102
 
119
103
  ## 3. Typography Rules
120
104
 
121
- ### Font Family
122
- - **FerrariSans**: Primary typeface for headings, navigation, buttons, and editorial content. A proprietary sans-serif with medium weight as the default (500), compact x-height, and precise letter-spacing control. Fallbacks: Arial, Helvetica, sans-serif
123
- - **Body-Font**: Secondary typeface for captions, labels, and utility text. Frequently rendered in uppercase with expanded letter-spacing (1px) for an editorial label aesthetic. Used for category tags and small annotation text
124
- - **Arial / Helvetica**: System fallback fonts used in cookie consent modals, form elements, and third-party component frameworks
125
-
126
- ### Hierarchy
127
-
128
- | Role | Size | Weight | Line Height | Letter Spacing | Notes |
129
- |------|------|--------|-------------|----------------|-------|
130
- | Section Title | 26px (1.63rem) | 500 | 1.20 | normal | FerrariSans, primary editorial headings on white backgrounds |
131
- | Card Heading | 24px (1.50rem) | 400 | normal | normal | FerrariSans, content card titles |
132
- | Subheading | 18px (1.13rem) | 700 | 1.20 (tight) | normal | FerrariSans, bold subsection labels |
133
- | UI Heading | 16px (1.00rem) | 500 | 1.40 | 0.08px | FerrariSans, component headings and nav items |
134
- | Body Bold | 16px (1.00rem) | 700 | 1.30 (tight) | normal | FerrariSans, emphasized inline text |
135
- | Button Label | 16px (1.00rem) | 400 | normal | 1.28px | FerrariSans, primary button text with wide tracking |
136
- | Small Button | 14.4px (0.90rem) | 700 | 1.00 (tight) | normal | FerrariSans, compact action buttons |
137
- | Nav Link | 13px (0.81rem) | 600 | 1.20 (tight) | 0.13px | FerrariSans, navigation and footer links |
138
- | Caption | 13px (0.81rem) | 400 | 1.50 | 0.195px | FerrariSans/Body-Font, metadata and descriptions |
139
- | Micro Button | 12px (0.75rem) | 700 | 1.00 (tight) | 0.96px | FerrariSans, small CTA with wide tracking |
140
- | Label Upper | 12px (0.75rem) | 400 | 1.27 (tight) | 1px | Body-Font, uppercase labels and category tags |
141
- | Micro Label | 11px (0.69rem) | 400 | 1.27 (tight) | 1px | Body-Font, uppercase smallest annotation text |
142
- | Cookie Text | 45px (2.81rem) | 400 | 1.50 | 0.195px | Arial, consent dialog oversized button text |
143
-
144
- ### Principles
145
- - **Proprietary identity**: FerrariSans is exclusive to Ferrari — it cannot be substituted without losing brand recognition. The font's compact proportions and medium weight default (500) convey engineering precision
146
- - **Two-register system**: FerrariSans handles narrative voice (headings, content, buttons) while Body-Font handles structural annotation (labels, tags, micro-captions) — this mirrors print magazine conventions of editorial text vs. technical labels
147
- - **Uppercase as emphasis tool**: Body-Font captions use `text-transform: uppercase` with expanded letter-spacing (1px) to create a visually distinct label layer that reads as "informational overlay" rather than primary content
148
- - **Compact line-heights**: Headlines use tight line-heights (1.00–1.30) creating dense, impactful text blocks, while body text opens to 1.50 for comfortable reading — the contrast between compressed headers and relaxed body text creates visual tension
149
- - **Weight range 400–700**: Four weights active in the system (400, 500, 600, 700) — significantly more range than Tesla but still controlled. 500 is the default "voice," 700 is for emphasis, 400 for body, 600 for navigation
105
+ ### Font evidence boundary
106
+
107
+ | Evidence class | Resolution |
108
+ |---|---|
109
+ | Official product-use | Ferrari’s official SF-24 article identifies Ferrari Sans as the marque’s official font for the race numbers. That establishes brand context, not a blanket UI role. |
110
+ | Live computed surface-use | `Body-Font` is loaded/high with 746 visible uses across all three supplied pages; it covers public navigation, CTA, card, badge, list, and text roles. `FerrariSans` is loaded/high with 32 visible home-surface uses. |
111
+ | Official distributed asset | First-party `Ferrari-SansRegular` and `Ferrari-SansMedium` WOFF/WOFF2 files corroborate the loaded FerrariSans family. |
112
+ | Declared-only | `Body-Font-Medium`, LF Maranello Body/Caption/Title, Noe Display, and Open Sans families were declared with zero visible captured use. They are not UI-family tokens. |
113
+ | Unresolved / license boundary | `Title-Font` was loaded for four Formula 1 headings but is an alias whose delivered sources include Ferrari Sans files; it is not promoted as a separate family. Ferrari’s Legal page does not grant a downstream web-font licence. Preserve metadata and omit a specimen when the font is unavailable; never substitute a system font as FerrariSans or Body-Font. |
114
+
115
+ | Role | Family | Size | Weight | Line height | Provenance |
116
+ |---|---|---:|---:|---:|---|
117
+ | Header item | Body-Font | 12px | 400 | 15.24px | `home::[data-omd-capture="1"]` |
118
+ | Red Subscribe CTA | Body-Font | 16px | 400 | 18.4px | `surface-2::[data-omd-capture="49"]` |
119
+ | Cookie Manage action | FerrariSans | 13.008px | 600 | 15.6096px | `home::[data-omd-capture="101"]` |
150
120
 
151
121
  ## 4. Component Stylings
152
122
 
153
- ### Buttons
154
- Ferrari's buttons are minimal white rectangles with near-zero radius — the CTA philosophy is "architecture, not decoration."
155
-
156
- **Primary CTA (White)** — The default action button:
157
- - Default: bg `#FFFFFF`, text `#000000`, fontSize 16px (FerrariSans), letterSpacing 1.28px, padding 12px 10px, borderRadius 2px, border 1px solid `#000000`
158
- - Hover: bg `#1EAEDB` (Teal), text `#FFFFFF`, opacity 0.9
159
- - Focus: bg `#1EAEDB`, text `#FFFFFF`, border 1px solid `#FFFFFF`, outline 2px solid `#000000`, opacity 0.9
160
- - Used for: "Configure" actions, secondary calls to action on light backgrounds
161
-
162
- **Subscribe CTA (Red)** — The high-emphasis action button:
163
- - Default: bg `#DA291C` (Ferrari Red), text `#FFFFFF`, borderRadius 2px, padding 12px 10px
164
- - Used for: Newsletter subscribe, primary conversion actions on dark backgrounds
165
- - The only button that uses Ferrari Red reserved for maximum visual priority
166
-
167
- **Ghost Button (White Border)** — For dark backgrounds:
168
- - Default: bg transparent, text `#FFFFFF`, border 1px solid `#FFFFFF`, borderRadius 2px, padding 12px 10px
169
- - Hover: bg `#1EAEDB` (Teal), text `#FFFFFF`, opacity 0.9
170
- - Focus: same as Primary CTA focus state
171
- - Used for: Actions overlaid on dark imagery and cinematic sections
172
-
173
- **Text Link** — Inline navigation:
174
- - Default: text `#181818` (on light surfaces) or `#FFFFFF` (on dark), no border, no background
175
- - Hover: color shifts to `#3860BE` (Link Hover Blue), decoration removes underline
176
- - White variant on dark surfaces uses underline decoration by default
177
- - FerrariSans or Body-Font depending on context (Body-Font for uppercase label links)
178
-
179
- ### Cards & Containers
180
-
181
- **Editorial Card** (Content sections):
182
- - Background: white
183
- - Border: none
184
- - Shadow: none
185
- - Layout: image above, heading + caption below
186
- - Image treatment: full-width within card, no rounded corners on image
187
- - Text: FerrariSans heading (16–24px) + Body-Font caption (12–13px uppercase)
188
-
189
- **Dark Cinematic Card** (Hero/feature sections):
190
- - Background: `#000000` (Absolute Black)
191
- - Full-bleed imagery with text overlay
192
- - No border, no shadow — the darkness IS the container
193
- - Text: white, positioned with careful negative space
194
-
195
- **Vehicle Lineup** (Model carousel):
196
- - Horizontal scrollable row of vehicle thumbnails
197
- - Each vehicle on a neutral/white background
198
- - Navigation: arrow buttons + dot indicators
199
- - Background shifts to showcase the selected model's color context
200
-
201
- ### Inputs & Forms
202
-
203
- **Newsletter Input** (Footer section):
204
- - Background: transparent on dark surface
205
- - Text: white
206
- - Border: 1px solid `#CCCCCC`
207
- - Placeholder: `#969696` (Silver Gray)
208
- - Focus: border color transitions (standard browser focus ring)
209
- - Label: Body-Font uppercase, 12px, 1px letter-spacing
210
-
211
- **Cookie Consent** (Modal):
212
- - Background: white
213
- - Border radius: 8px (dialog)
214
- - Shadow: `rgb(153, 153, 153) 1px 1px 1px 0px`
215
- - Buttons: oversized (45px Arial), white bg with black border
216
- - Uses standard PrimeReact/Element Plus modal framework
217
-
218
- ### Navigation
219
- - **Desktop**: Prancing Horse logo centered at top of page, primary navigation below — not a traditional horizontal nav bar but a full-width header block on black background
220
- - **Logo**: Centered Prancing Horse emblem (44×42px) on absolute black — the single most prominent UI element
221
- - **Links**: FerrariSans, 13px, weight 600, white text on dark backgrounds
222
- - **Mobile**: Hamburger collapse to vertical navigation drawer
223
- - **Footer**: Multi-column layout on `#303030` (Dark Surface) with category links in Body-Font uppercase
224
- - **No sticky nav behavior** observed — the page scrolls naturally with the header moving off-screen
225
-
226
- ### Image Treatment
227
- - **Hero**: Full-width editorial photography on black backgrounds — concept cars in atmospheric studio lighting, editorial portraits with cinematic composition
228
- - **Aspect ratios**: Mixed — landscape (16:9) for hero sections, near-square for portrait/driver imagery, wide panoramic for vehicle lineups
229
- - **Full-bleed vs padded**: Hero images are full-bleed edge-to-edge; editorial content images are padded within white containers
230
- - **Lazy loading**: Below-fold sections use progressive loading (PrimeReact framework handles this)
231
- - **Image quality**: High-resolution photography with studio lighting — no user-generated or lifestyle imagery. Every image is art-directed
232
-
233
- ### Carousel Component
234
- - Editorial carousel with multiple slides
235
- - Dot indicators for slide position
236
- - Arrow navigation (left/right) at slide edges
237
- - Auto-advancing with manual override
238
- - Content: mixed editorial — event recaps, model launches, racing highlights
123
+ All values below come from the supplied public-surface collector. It records `interactionCount: 0`; a focus snapshot is not evidence of a transition, menu, dialog flow, or unlisted variant.
124
+
125
+ ### Subscribe CTA
126
+
127
+ **Ferrari-red public CTA**
128
+ - Background: `#da291c`
129
+ - Text: `#ffffff`
130
+ - Border: `0px solid #ffffff`
131
+ - Radius: `0px`
132
+ - Padding: `21px`
133
+ - Height: `57px`
134
+ - Font: `16px / 400 / Body-Font`
135
+ - Use: `surface-2::[data-omd-capture="49"]` on car range and its Formula 1 sibling `surface-3::[data-omd-capture="49"]`
136
+
137
+ ### Header navigation item
138
+
139
+ **Light-on-image control**
140
+ - Background: transparent
141
+ - Text: `#ffffff`
142
+ - Border: `0px solid #ffffff`
143
+ - Radius: `0px`
144
+ - Padding: `5px 0px`
145
+ - Height: `25px`
146
+ - Font: `12px / 400 / Body-Font`
147
+ - Use: `home::[data-omd-capture="1"]`; the collector retained a focus snapshot but no changed focus value is promoted
148
+
149
+ ### Cookie-consent action
150
+
151
+ **Manage Cookies utility**
152
+ - Background: `#ffffff`
153
+ - Text: `#000000`
154
+ - Border: `1px solid #000000`
155
+ - Radius: `2px`
156
+ - Padding: `12px 10px`
157
+ - Height: `42px`
158
+ - Font: `13.008px / 600 / FerrariSans`
159
+ - Use: `home::[data-omd-capture="101"]` within the `ot-sdk-container` consent dialog; this is not a public product CTA
160
+
161
+ No generic card, input, carousel, menu, notification, tab, hover, pressed, disabled, or error variant is published here: the relevant component or state was not observed as a measured canonical field.
239
162
 
240
163
  ## 5. Layout Principles
241
164
 
242
- ### Spacing System
243
- - **Base unit**: 8px (detected system base)
244
- - **Scale**: 1px, 2px, 4px, 5px, 6px, 9px, 10px, 11.2px, 12px, 13px, 15px, 16px, 19px, 20px, 25px
245
- - **Button padding**: 12px vertical, 10px horizontal — compact and precise
246
- - **Section padding**: Generous vertical spacing (40–80px estimated) between major content blocks
247
- - **Card gaps**: 16–20px between grid items
248
- - **Footer padding**: 25px horizontal sections within the dark footer block
249
-
250
- ### Grid & Container
251
- - **Max width**: 1920px (largest breakpoint) with content constraining at narrower widths
252
- - **Hero**: Full-bleed on black, content centered
253
- - **Editorial sections**: 2-column layouts with image + text, alternating sides
254
- - **Vehicle lineup**: Horizontal scroll/carousel, 5–6 models visible at desktop width
255
- - **Footer**: 4-column grid for link categories
256
-
257
- ### Whitespace Philosophy
258
- Ferrari treats white space as a gallery wall. Each section — whether a concept car render on black void or a pair of F1 drivers on neutral gray — is given its own "room" of breathing space. The alternating black/white sections create a pacing rhythm: dark = immersive moment, white = editorial content, dark = immersive moment. This cadence makes scrolling feel like turning pages in a luxury publication. White space between editorial cards is moderate (not Tesla-extreme) because Ferrari is telling stories, not exhibiting single objects.
259
-
260
- ### Border Radius Scale
261
- | Value | Context |
262
- |-------|---------|
263
- | 1px | Subtle softening on small inline elements (spans) |
264
- | 2px | Default for buttons, inputs, and interactive elements — barely perceptible, razor-precision |
265
- | 8px | Modal dialogs and overlay containers — the "softest" structural radius |
266
- | 50% | Circular elements: carousel dots, avatar thumbnails, slider handles |
165
+ The supplied desktop capture is `1440×900`. Its evidence supports full-width public surfaces, light-on-image header controls, and content whose visual emphasis comes from photography rather than a framed application shell. It does not establish a global grid, maximum width, breakpoint, carousel behavior, or a reusable card layout. Keep those fields absent until a captured surface measures them.
267
166
 
268
167
  ## 6. Depth & Elevation
269
168
 
270
- | Level | Treatment | Use |
271
- |-------|-----------|-----|
272
- | Level 0 (Flat) | No shadow, no border | Default state for all content sections and cards |
273
- | Level 1 (Subtle) | `rgb(153, 153, 153) 1px 1px 1px 0px` | Rare — cookie consent dialogs and dropdown menus |
274
- | Level 2 (Overlay) | `hsla(0, 0%, 7%, 0.8)` backdrop | Modal overlays and image caption backgrounds |
275
- | Level 3 (Border) | `1px solid #CCCCCC` | Input fields, form containers — depth through delineation not shadow |
276
-
277
- ### Shadow Philosophy
278
- Ferrari's approach to elevation is nearly as flat as Tesla's, but with a different rationale. Where Tesla avoids shadows for minimalism, Ferrari avoids them because the editorial photography provides all the visual depth needed. The single shadow token (`rgb(153, 153, 153) 1px 1px 1px 0px`) is extremely subtle — a 1-pixel whisper used only in utilitarian contexts like consent dialogs. The site communicates hierarchy through three strategies:
279
- 1. **Surface color contrast**: Black sections vs. white sections create unmistakable layering
280
- 2. **Overlay transparency**: The `--f-color-overlay-darker` at 80% opacity creates depth without shadow
281
- 3. **Photographic depth**: Studio-lit car imagery with reflections, ground shadows, and atmospheric haze provides all the visual dimensionality
282
-
283
- ### Decorative Depth
284
- - No UI gradients, no glows, no blur effects on interface elements
285
- - The Prancing Horse logo on black creates a "floating in void" effect through pure contrast — no glow or shadow needed
286
- - Dark-to-light section transitions are hard cuts, not gradient blends — reinforcing the editorial page-turn metaphor
169
+ The listed components have `boxShadow: none`; their observed depth comes from transparency, image contrast, and white or red fills rather than a reusable shadow token. No overlay, modal elevation, or dark-card token is promoted from the collector.
287
170
 
288
171
  ## 7. Do's and Don'ts
289
172
 
290
173
  ### Do
291
- - Use Ferrari Red (`#DA291C`) sparingly — only for primary CTAs and brand-critical moments. Its power comes from restraint
292
- - Alternate between black cinematic sections and white editorial sections to create the signature chiaroscuro rhythm
293
- - Use FerrariSans at weight 500 as the default heading voice it's the typographic equivalent of the engine note
294
- - Apply Body-Font in uppercase with 1px letter-spacing for all labels, category tags, and structural annotations
295
- - Keep border-radius at 2px for all interactive elements — razor precision, not rounded friendliness
296
- - Let photography carry the emotional weight — every image should be art-directed studio quality
297
- - Use the Prancing Horse emblem as a standalone hero element on black — never crowd it with adjacent content
298
- - Maintain the 12px/10px button padding ratio — compact, purposeful, no excess
299
- - Use `#181818` (Near Black) for body text instead of pure `#000000` — the subtle warmth improves readability
300
- - Reserve the yellow accents (`#FFF200`, `#F6E500`) strictly for motorsport and racing heritage contexts
174
+
175
+ - Scope the sharp red Subscribe CTA to the observed public car-range/racing pattern.
176
+ - Keep the measured header item transparent, white, and widely tracked when it sits on dark imagery.
177
+ - Treat the 2px consent button as third-party utility chrome, not a Ferrari product-control default.
178
+ - Preserve FerrariSans and Body-Font metadata without silent font substitution.
301
179
 
302
180
  ### Don't
303
- - Scatter Ferrari Red across the interface as decoration — it's a CTA signal, not a theme color
304
- - Use rounded-pill buttons or large border-radii the 2px precision is non-negotiable
305
- - Add box-shadows to cards or content containers depth comes from surface color contrast and photography
306
- - Mix FerrariSans and Body-Font within the same text block they serve separate hierarchical functions
307
- - Use colorful backgrounds (blue, green, etc.) for sections the palette is exclusively black/white/gray with red and yellow accents
308
- - Apply text transforms to FerrariSans headings — uppercase is reserved for Body-Font labels only
309
- - Display low-quality or user-generated imagery — every photograph must meet editorial standards
310
- - Use the Link Hover Blue (`#3860BE`) for anything other than interactive hover states — it's not a brand color
311
- - Create busy layouts with multiple competing focal points — each section should have one clear story
312
- - Override the semantic color system (warning, success, info) with brand colors — `#F13A2C` warning is deliberately different from `#DA291C` brand red
181
+
182
+ - Generalize `#da291c` into success, danger, alert, or every primary-action role.
183
+ - Turn the OneTrust cookie action into a product button pattern.
184
+ - Add hover, pressed, menu, carousel, or responsive rules not present in the supplied evidence.
185
+ - Use declared-only LF Maranello, Noe Display, or Open Sans faces as current Ferrari UI tokens.
313
186
 
314
187
  ## 8. Responsive Behavior
315
188
 
316
- ### Breakpoints
317
- | Name | Width | Key Changes |
318
- |------|-------|-------------|
319
- | Mobile Small | ≤375px | Single-column, minimal padding (12px), stacked navigation, hero text scales to ~18px, full-width CTAs |
320
- | Mobile | 376–600px | Single-column, slightly larger padding (16px), hamburger nav, body text at 13px |
321
- | Tablet Small | 601–768px | 2-column editorial grid begins, hero images maintain full-width, footer switches to 2-column |
322
- | Tablet | 769–960px | Full 2-column layout, carousel shows 3 vehicles, padding increases to 20px |
323
- | Desktop | 961–1280px | Full navigation, 2-column editorial with larger imagery, vehicle lineup shows 5 models |
324
- | Large Desktop | 1281–1920px | Maximum content width, generous whitespace, hero photography at full cinematic scale |
325
-
326
- ### Touch Targets
327
- - Primary CTA buttons: minimum 44px height with 12px vertical padding (meets WCAG AAA 44×44px target)
328
- - Navigation links: 13px text with 1.50 line-height and adequate spacing between items
329
- - Carousel arrows: 44px+ touch targets at viewport edges
330
- - Footer links: grouped with sufficient vertical spacing (16–20px) for touch accuracy
331
-
332
- ### Collapsing Strategy
333
- - **Navigation**: Full horizontal nav collapses to centered Prancing Horse logo + hamburger menu on mobile
334
- - **Editorial sections**: 2-column image+text layouts collapse to single-column with image stacking above text
335
- - **Vehicle lineup**: Horizontal carousel maintains scroll behavior but reduces visible models from 5 to 2–3
336
- - **Footer**: 4-column link grid collapses to 2-column on tablet, single-column accordion on mobile
337
- - **Hero carousel**: Full-width at all breakpoints, dot indicators and arrows scale proportionally
338
- - **Spacing reduction**: Section padding reduces from 40–80px (desktop) to 20–40px (mobile), maintaining proportional breathing room
339
-
340
- ### Image Behavior
341
- - Hero images: full-bleed at all breakpoints, using `object-fit: cover` to maintain cinematic composition
342
- - Editorial images: responsive within their containers, maintaining aspect ratio
343
- - Vehicle lineup: thumbnail size scales but maintains consistent car-to-frame proportions
344
- - Art direction: mobile crops may tighten on vehicle subjects, reducing environmental context
345
- - Lazy loading: PrimeReact handles progressive image loading for below-fold content
189
+ Only a `1440×900` desktop capture was supplied. Mobile breakpoints, navigation collapse, touch-target policy, image crops, and reduced-motion behavior were not measured and are therefore not specified.
346
190
 
347
191
  ## 9. Agent Prompt Guide
348
192
 
349
- ### Quick Color Reference
350
- - Primary CTA: "Ferrari Red (#DA291C)"
351
- - Background Light: "Pure White (#FFFFFF)"
352
- - Background Dark: "Absolute Black (#000000)"
353
- - Secondary Dark Surface: "Dark Surface (#303030)"
354
- - Heading text (light bg): "Near Black (#181818)"
355
- - Body text: "Dark Gray (#666666)"
356
- - Tertiary text: "Mid Gray (#8F8F8F)"
357
- - Border: "Border Gray (#CCCCCC)"
358
- - Button Hover: "Teal (#1EAEDB)"
359
- - Link Hover: "Link Blue (#3860BE)"
360
-
361
- ### Example Component Prompts
362
- - "Create a hero section on Absolute Black (#000000) background with a centered logo emblem at the top, generous vertical spacing (80px+), and a single editorial headline in FerrariSans at 26px weight 500 in white, with a small Body-Font uppercase caption (12px, 1px letter-spacing) in Silver Gray (#969696) below"
363
- - "Design a Subscribe section on Dark Surface (#303030) with a left-aligned headline in white FerrariSans (24px/500), a subtitle in Mid Gray (#8F8F8F, 13px), an email input with transparent background and 1px #CCCCCC border, and a Ferrari Red (#DA291C) Subscribe button with white text, 2px border-radius, and 12px 10px padding"
364
- - "Build an editorial card on white background with a full-width image (16:9 ratio) above, a FerrariSans heading (16px/700, Near Black #181818) below, and a Body-Font uppercase label (11px, 1px letter-spacing, Mid Gray #8F8F8F) as the category tag — no border, no shadow, no border-radius"
365
- - "Create a vehicle lineup carousel showing 5 car thumbnails in a horizontal scroll on white background, with left/right arrow navigation, dot indicators below, and a FerrariSans model name (16px/500) beneath each vehicle"
366
- - "Design a dark cinematic section with full-bleed studio photography of a concept car on Absolute Black, a white FerrariSans headline (26px/500) positioned in the lower-left with generous padding (40px), and a Ghost Button (transparent bg, 1px white border, white text, 2px radius) as the CTA"
367
-
368
- ### Iteration Guide
369
- When refining existing screens generated with this design system:
370
- 1. Focus on ONE component at a time — Ferrari's editorial rhythm means each section is a self-contained vignette
371
- 2. Reference specific color names and hex codes from this document — the palette is small but each color has a precise role
372
- 3. Use natural language descriptions, not CSS values — "razor-sharp 2px corners" conveys intent better than "border-radius: 2px"
373
- 4. Describe the desired "feel" alongside specific measurements — "editorial magazine page-turn between sections" communicates the layout philosophy better than "margin-bottom: 80px"
374
- 5. Always maintain the chiaroscuro contrast — if a section feels flat, check whether it needs to be on black or white to maintain the alternating rhythm
375
- 6. Reserve Ferrari Red for ONE element per screen — if red appears in more than one place, it loses its authority
193
+ Use only the observed public-web boundary: “Create a sharp 57px Subscribe CTA with `#da291c` background, white 16px Body-Font text, 21px inset, and 0px radius.” For a light-on-image header control, use transparent background, white 12px Body-Font text, 5px vertical padding, and 1px tracking. Do not request an unverified Ferrari configurator, checkout, dashboard, alert, or component-state system from this reference.
376
194
 
377
195
  ## 10. Voice & Tone
378
196
 
379
- Ferrari's voice is **Maranello-pride and racing-heritage.** Italian-craft pride + chiaroscuro black/white sections + Ferrari Red `#da291c` for one element per screen. Marketing copy emphasizes lineage (Enzo Ferrari, F1 victories, Maranello) over feature lists.
197
+ Ferraris first-party corporate language connects passion, craftsmanship, innovation, exclusivity, performance, quality, and memorable client experiences. The public navigation and short action controls in the capture are much terser than that corporate narrative. Use concise discovery language on public editorial surfaces; do not fabricate customer-service, error, or transactional voice rules.
380
198
 
381
- | Context | Tone |
382
- |---|---|
383
- | CTA | Heritage-imperative. "Discover", "Configure", "Reserve" |
384
- | Marketing | Photography first, racing heritage second, copy third |
385
- | Documentation | Sparse — luxury product, minimal docs |
386
- | Error | Polite. "An error occurred. Try again." |
387
-
388
- **Voice samples**
389
- - Brand register: "The Power of Dreams" / "Tradition of Innovation" type framing <!-- illustrative -->
390
-
391
- **Forbidden phrases.** "Revolutionary supercar". Direct Lamborghini comparison.
199
+ **First-party wording:** “The power of passion becomes the beauty of achievement.” — Ferrari Corporate, [About us](https://www.ferrari.com/en-EN/corporate/about-us).
392
200
 
393
201
  ## 11. Brand Narrative
394
202
 
395
- **Scuderia Ferrari** the racing team was founded **1929** by **Enzo Ferrari** as a Grand Prix outfit affiliated with **Alfa Romeo**, where Enzo had worked through the 1920s ([Enzo Ferrari — Wikipedia](https://en.wikipedia.org/wiki/Enzo_Ferrari)). After Allied bombing forced relocation from Modena, **Ferrari S.p.A. was founded 1947 in Maranello** to build road cars under his own name; the **first car (125 S, V-12 engine, 1947)** secured the brand's **first Grand Prix victory in Rome, May 1947** ([Ferrari — Wikipedia](https://en.wikipedia.org/wiki/Ferrari)). Began as racing manufacturer; road cars sold to fund the F1 program — the inverse of every other carmaker. **NYSE direct listing October 21 2015** under ticker **RACE**, priced at **$52/share** (top of $48-52 range), market cap **~$9.8B**, raised **~$900M** in public capital as part of the **Fiat Chrysler demerger** ([CNBC Ferrari market debut](https://www.cnbc.com/2015/10/21/ferrari-spikes-15-in-market-debut.html), [Ferrari Corporate Listing](https://www.ferrari.com/en-EN/corporate/listing-information)). The brand carries Italian craftsmanship + racing heritage as primary positioning. Ferrari Red `#da291c` is iconic live measurement on `/auto/car-range` confirms it as the **canonical Primary CTA color** (0px sharp, 21px square padding, 16px·400 white text), not a decorative accent. Cinematic chrome elsewhere is text-only ALL CAPS ghost the imagery is the design.
203
+ Ferrari’s official corporate account begins in 1947, when the 125 S passed through the Maranello factory gates. Its History surface frames the continuing work as cars intended to win on track and road, while the corporate description connects the Prancing Horse with exclusivity, performance, quality, sporting success, innovation, technology, and driving pleasure. This is the product and category context for the public car-range and Formula 1 surfaces in this reference.
204
+
205
+ The company’s own design reporting adds a current evolution: Ferrari established Centro Stile in 2010 and describes its work as a close relationship between design and engineering, form and content. The concise public web shell should be read alongside that wider product story, not as proof that every Ferrari surface uses the same tokens or components. Sources: [Ferrari History](https://www.ferrari.com/en-EN/history), [Corporate About us](https://www.ferrari.com/en-EN/corporate/about-us), and [The New Language of Ferrari Design](https://www.ferrari.com/en-EN/magazine/articles/new-language-of-ferrari-design).
396
206
 
397
207
  ## 12. Principles
398
208
 
399
- 1. **One Ferrari Red per screen.** *UI implication:* if red appears more than once, hierarchy collapses.
400
- 2. **Chiaroscuro alternation.** Black white section rhythm. *UI implication:* never flat all-light or all-dark sequences.
401
- 3. **2px tight radius.** *UI implication:* sharp Italian-precision corners.
402
- 4. **Photography is the showcase.** *UI implication:* cars dominate, copy supports.
403
- 5. **Maranello heritage > tech specs.** *UI implication:* lead with story, not numbers.
209
+ 1. **Let the vehicle imagery carry the public-surface emphasis.** *UI implication:* retain the measured low-chrome, transparent header treatment rather than inventing application panels.
210
+ 2. **Keep action color contextual.** *UI implication:* use the measured red only where the captured Subscribe CTA establishes it; do not infer semantic status colors.
211
+ 3. **Keep public controls sharp.** *UI implication:* the observed header and Subscribe controls are 0px radius; cookie-consent chrome is a separate 2px utility exception.
212
+ 4. **Separate related evidence domains.** *UI implication:* a marketing, racing, corporate, font-asset, or consent observation does not authorize an unobserved product component.
404
213
 
405
214
  ## 13. Personas
406
215
 
407
- *Personas are fictional archetypes informed by Ferrari user segments (existing Ferraristi, prospective buyers, racing enthusiasts), not individual people.*
408
-
409
- **Marcus Conti, 55, Milan.** Existing Ferrari owner with 3 cars in collection.
410
-
411
- **Heinz Müller, 48, Munich.** Track-day enthusiast considering 296 GTB.
412
-
413
- **Sofia Park, 42, Seoul.** Tech founder, first Ferrari purchase.
216
+ Ferrari’s official corporate material identifies clients as the recipients of its exclusive, authentic, and memorable experiences. No first-party research in this packet establishes demographics, jobs-to-be-done, purchase behavior, accessibility needs, or task flows for a detailed persona. [FILL IN: validated stakeholder research before adding user archetypes.]
414
217
 
415
218
  ## 14. States
416
219
 
417
- | State | Treatment |
418
- |---|---|
419
- | **Empty (configurator start)** | Model selector with cinematic photography |
420
- | **Empty (no saved configs)** | "Begin your Ferrari" CTA |
421
- | **Loading (config render)** | Real-time 3D rendering |
422
- | **Loading (price)** | Per-option price update |
423
- | **Error (incompatible)** | Constraint explanation |
424
- | **Error (waitlist required)** | "This model is by allocation only — contact dealer" |
425
- | **Success (saved)** | Configuration ID + dealer share |
426
- | **Success (booked test)** | Dealer confirmation |
427
- | **Skeleton (model showcase)** | Black/white placeholders |
428
- | **Disabled (region restricted)** | Region tooltip |
429
- | **Loading (long render)** | Persistent progress |
220
+ The collector reports zero interaction events. Default public-control baselines and one header focus snapshot were captured, but empty, loading, success, failure, disabled, form validation, and skeleton states were not observed. No state treatment is invented here.
430
221
 
431
222
  ## 15. Motion & Easing
432
223
 
433
- | Token | Value | Use |
434
- |---|---|---|
435
- | `motion-instant` | 0ms | Selection |
436
- | `motion-fast` | 200ms | Hover |
437
- | `motion-cinematic` | 600ms | Hero reveals |
438
-
439
- Cinematic easing for hero, standard for chrome. `prefers-reduced-motion: reduce` disables hero auto-play.
224
+ No duration, easing, autoplay, or reduced-motion rule was measured in the supplied capture. Do not infer a Ferrari motion system from editorial photography or the existence of racing content.
440
225
 
441
226
  ---
442
-
443
- **Verified:** 2026-05-08 (omd:migrate run 24 Apple-tier)
444
- **Tier 1 sources:** ferrari.com/en-EN home + /en-EN/auto/car-range (live DOM via playwright — Primary `#da291c` Ferrari Red **0px** 21px-square 57px / 16px·400 (SUBSCRIBE on /auto); ALL CAPS 12px·400 ghost nav across chrome; cookie banner 2px / 13.008px·600 utility exception).
445
- **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
446
- **Tier 2 (Philosophy/history):** Wikipedia (Enzo Ferrari + Ferrari company), Britannica, CNBC (2015-10-21 IPO debut), Ferrari Corporate listing page, Fortune.
447
- **Style ref:** `apple` (luxury minimal). **Conflicts unresolved:** none. **Earlier mistake reverted:** prior footer cited cookie banner as canonical Primary; the actual Primary is `#da291c` 0px (cookie 2px is GDPR utility track).
227
+ **Verified:** 2026-07-13
228
+ **Tier 1 sources:** https://www.ferrari.com/en-EN · https://www.ferrari.com/en-EN/auto/car-range · https://www.ferrari.com/en-EN/formula1 (supplied computed-style, FontFaceSet, and source-URL evidence).
229
+ **Tier 2 sources:** https://getdesign.md/ferrari · https://styles.refero.design/style/80164adf-a898-4f7c-bce7-12f3f62e1649 (cross-check only; Tier 1 wins recorded component conflicts).
230
+ **Conflicts unresolved:** none