@hex-core/themes 0.1.1 → 0.2.1

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 (578) hide show
  1. package/README.md +5 -1
  2. package/dist/chunk-2LU3ENLP.js +68 -0
  3. package/dist/chunk-2LU3ENLP.js.map +1 -0
  4. package/dist/chunk-2OH25A4J.js +68 -0
  5. package/dist/chunk-2OH25A4J.js.map +1 -0
  6. package/dist/chunk-2SI7O4FQ.js +68 -0
  7. package/dist/chunk-2SI7O4FQ.js.map +1 -0
  8. package/dist/chunk-4LQ3BH7F.js +68 -0
  9. package/dist/chunk-4LQ3BH7F.js.map +1 -0
  10. package/dist/chunk-4QXKFLEQ.js +68 -0
  11. package/dist/chunk-4QXKFLEQ.js.map +1 -0
  12. package/dist/chunk-5BH5ZMDH.js +68 -0
  13. package/dist/chunk-5BH5ZMDH.js.map +1 -0
  14. package/dist/chunk-5O65TVZP.js +68 -0
  15. package/dist/chunk-5O65TVZP.js.map +1 -0
  16. package/dist/chunk-5TDK4XMA.js +68 -0
  17. package/dist/chunk-5TDK4XMA.js.map +1 -0
  18. package/dist/chunk-72IPJZ6V.js +68 -0
  19. package/dist/chunk-72IPJZ6V.js.map +1 -0
  20. package/dist/chunk-73N7YFTY.js +68 -0
  21. package/dist/chunk-73N7YFTY.js.map +1 -0
  22. package/dist/chunk-7MPAMAFC.js +68 -0
  23. package/dist/chunk-7MPAMAFC.js.map +1 -0
  24. package/dist/chunk-7OAKNGRU.js +68 -0
  25. package/dist/chunk-7OAKNGRU.js.map +1 -0
  26. package/dist/chunk-7YP2HHHV.js +68 -0
  27. package/dist/chunk-7YP2HHHV.js.map +1 -0
  28. package/dist/chunk-7YPET3HT.js +68 -0
  29. package/dist/chunk-7YPET3HT.js.map +1 -0
  30. package/dist/chunk-7ZAFN5WE.js +68 -0
  31. package/dist/chunk-7ZAFN5WE.js.map +1 -0
  32. package/dist/chunk-ATBX7KXM.js +68 -0
  33. package/dist/chunk-ATBX7KXM.js.map +1 -0
  34. package/dist/chunk-BCLCH6JZ.js +68 -0
  35. package/dist/chunk-BCLCH6JZ.js.map +1 -0
  36. package/dist/chunk-BH7IPZBT.js +68 -0
  37. package/dist/chunk-BH7IPZBT.js.map +1 -0
  38. package/dist/chunk-BK432RWC.js +68 -0
  39. package/dist/chunk-BK432RWC.js.map +1 -0
  40. package/dist/chunk-BMLLM5GC.js +68 -0
  41. package/dist/chunk-BMLLM5GC.js.map +1 -0
  42. package/dist/chunk-CEQN6EQY.js +68 -0
  43. package/dist/chunk-CEQN6EQY.js.map +1 -0
  44. package/dist/chunk-CFLNGBY5.js +68 -0
  45. package/dist/chunk-CFLNGBY5.js.map +1 -0
  46. package/dist/chunk-CTI3W357.js +68 -0
  47. package/dist/chunk-CTI3W357.js.map +1 -0
  48. package/dist/chunk-CUO2HNBR.js +68 -0
  49. package/dist/chunk-CUO2HNBR.js.map +1 -0
  50. package/dist/chunk-D5JFUYFN.js +68 -0
  51. package/dist/chunk-D5JFUYFN.js.map +1 -0
  52. package/dist/chunk-DE2NWOEB.js +68 -0
  53. package/dist/chunk-DE2NWOEB.js.map +1 -0
  54. package/dist/chunk-DLLP5KXF.js +68 -0
  55. package/dist/chunk-DLLP5KXF.js.map +1 -0
  56. package/dist/chunk-E26YKJRK.js +68 -0
  57. package/dist/chunk-E26YKJRK.js.map +1 -0
  58. package/dist/chunk-EV4APPVD.js +528 -0
  59. package/dist/chunk-EV4APPVD.js.map +1 -0
  60. package/dist/chunk-EZFP45CP.js +68 -0
  61. package/dist/chunk-EZFP45CP.js.map +1 -0
  62. package/dist/chunk-FE2IENES.js +68 -0
  63. package/dist/chunk-FE2IENES.js.map +1 -0
  64. package/dist/chunk-FK5WSFAA.js +68 -0
  65. package/dist/chunk-FK5WSFAA.js.map +1 -0
  66. package/dist/chunk-G2V6XAJ7.js +68 -0
  67. package/dist/chunk-G2V6XAJ7.js.map +1 -0
  68. package/dist/chunk-GAOOBTSH.js +68 -0
  69. package/dist/chunk-GAOOBTSH.js.map +1 -0
  70. package/dist/chunk-GAQ6LS55.js +68 -0
  71. package/dist/chunk-GAQ6LS55.js.map +1 -0
  72. package/dist/chunk-GSTGBWQZ.js +68 -0
  73. package/dist/chunk-GSTGBWQZ.js.map +1 -0
  74. package/dist/chunk-I267MA2D.js +68 -0
  75. package/dist/chunk-I267MA2D.js.map +1 -0
  76. package/dist/chunk-I4Z7DY3Z.js +68 -0
  77. package/dist/chunk-I4Z7DY3Z.js.map +1 -0
  78. package/dist/chunk-I6H6W42Y.js +68 -0
  79. package/dist/chunk-I6H6W42Y.js.map +1 -0
  80. package/dist/chunk-IJBNLZQH.js +68 -0
  81. package/dist/chunk-IJBNLZQH.js.map +1 -0
  82. package/dist/chunk-IRDDULX7.js +68 -0
  83. package/dist/chunk-IRDDULX7.js.map +1 -0
  84. package/dist/chunk-IXKXYUXQ.js +68 -0
  85. package/dist/chunk-IXKXYUXQ.js.map +1 -0
  86. package/dist/chunk-JZEZHM5N.js +68 -0
  87. package/dist/chunk-JZEZHM5N.js.map +1 -0
  88. package/dist/chunk-KCI73LIZ.js +68 -0
  89. package/dist/chunk-KCI73LIZ.js.map +1 -0
  90. package/dist/chunk-KDS62BXD.js +68 -0
  91. package/dist/chunk-KDS62BXD.js.map +1 -0
  92. package/dist/chunk-KLNZW4GO.js +68 -0
  93. package/dist/chunk-KLNZW4GO.js.map +1 -0
  94. package/dist/chunk-KXBE5FQ7.js +68 -0
  95. package/dist/chunk-KXBE5FQ7.js.map +1 -0
  96. package/dist/chunk-KZDIZ2FL.js +68 -0
  97. package/dist/chunk-KZDIZ2FL.js.map +1 -0
  98. package/dist/chunk-LDZC2QYF.js +68 -0
  99. package/dist/chunk-LDZC2QYF.js.map +1 -0
  100. package/dist/chunk-LNKOIFH4.js +68 -0
  101. package/dist/chunk-LNKOIFH4.js.map +1 -0
  102. package/dist/chunk-MVMZS3PQ.js +68 -0
  103. package/dist/chunk-MVMZS3PQ.js.map +1 -0
  104. package/dist/chunk-NIED6GXO.js +68 -0
  105. package/dist/chunk-NIED6GXO.js.map +1 -0
  106. package/dist/chunk-NKTZOR54.js +68 -0
  107. package/dist/chunk-NKTZOR54.js.map +1 -0
  108. package/dist/chunk-OCQYO6PW.js +68 -0
  109. package/dist/chunk-OCQYO6PW.js.map +1 -0
  110. package/dist/chunk-PJAJD5VJ.js +68 -0
  111. package/dist/chunk-PJAJD5VJ.js.map +1 -0
  112. package/dist/chunk-PN567MCL.js +68 -0
  113. package/dist/chunk-PN567MCL.js.map +1 -0
  114. package/dist/chunk-QEBXRSTH.js +68 -0
  115. package/dist/chunk-QEBXRSTH.js.map +1 -0
  116. package/dist/chunk-QTKMLEEM.js +68 -0
  117. package/dist/chunk-QTKMLEEM.js.map +1 -0
  118. package/dist/chunk-RN4ZII2I.js +68 -0
  119. package/dist/chunk-RN4ZII2I.js.map +1 -0
  120. package/dist/chunk-RTCJ5B7S.js +68 -0
  121. package/dist/chunk-RTCJ5B7S.js.map +1 -0
  122. package/dist/chunk-SG2ACM7O.js +68 -0
  123. package/dist/chunk-SG2ACM7O.js.map +1 -0
  124. package/dist/chunk-SORTCBSJ.js +68 -0
  125. package/dist/chunk-SORTCBSJ.js.map +1 -0
  126. package/dist/chunk-TXY7LBYM.js +68 -0
  127. package/dist/chunk-TXY7LBYM.js.map +1 -0
  128. package/dist/chunk-UIS6TMM5.js +68 -0
  129. package/dist/chunk-UIS6TMM5.js.map +1 -0
  130. package/dist/chunk-VOXUB4AT.js +68 -0
  131. package/dist/chunk-VOXUB4AT.js.map +1 -0
  132. package/dist/chunk-VUSSQAEI.js +68 -0
  133. package/dist/chunk-VUSSQAEI.js.map +1 -0
  134. package/dist/chunk-WAU2FYDY.js +68 -0
  135. package/dist/chunk-WAU2FYDY.js.map +1 -0
  136. package/dist/chunk-YRGKMQP4.js +68 -0
  137. package/dist/chunk-YRGKMQP4.js.map +1 -0
  138. package/dist/chunk-Z3XCYZN4.js +68 -0
  139. package/dist/chunk-Z3XCYZN4.js.map +1 -0
  140. package/dist/chunk-Z6XLNVF3.js +68 -0
  141. package/dist/chunk-Z6XLNVF3.js.map +1 -0
  142. package/dist/chunk-ZQJDUTSK.js +68 -0
  143. package/dist/chunk-ZQJDUTSK.js.map +1 -0
  144. package/dist/chunk-ZTYINGDT.js +68 -0
  145. package/dist/chunk-ZTYINGDT.js.map +1 -0
  146. package/dist/index.d.ts +185 -23
  147. package/dist/index.js +359 -3
  148. package/dist/index.js.map +1 -1
  149. package/dist/presets/_briefs/airbnb.d.ts +3 -0
  150. package/dist/presets/_briefs/airbnb.js +551 -0
  151. package/dist/presets/_briefs/airbnb.js.map +1 -0
  152. package/dist/presets/_briefs/airtable.d.ts +3 -0
  153. package/dist/presets/_briefs/airtable.js +560 -0
  154. package/dist/presets/_briefs/airtable.js.map +1 -0
  155. package/dist/presets/_briefs/apple.d.ts +3 -0
  156. package/dist/presets/_briefs/apple.js +568 -0
  157. package/dist/presets/_briefs/apple.js.map +1 -0
  158. package/dist/presets/_briefs/binance.d.ts +3 -0
  159. package/dist/presets/_briefs/binance.js +640 -0
  160. package/dist/presets/_briefs/binance.js.map +1 -0
  161. package/dist/presets/_briefs/bmw-m.d.ts +3 -0
  162. package/dist/presets/_briefs/bmw-m.js +509 -0
  163. package/dist/presets/_briefs/bmw-m.js.map +1 -0
  164. package/dist/presets/_briefs/bmw.d.ts +3 -0
  165. package/dist/presets/_briefs/bmw.js +550 -0
  166. package/dist/presets/_briefs/bmw.js.map +1 -0
  167. package/dist/presets/_briefs/bugatti.d.ts +3 -0
  168. package/dist/presets/_briefs/bugatti.js +460 -0
  169. package/dist/presets/_briefs/bugatti.js.map +1 -0
  170. package/dist/presets/_briefs/cal.d.ts +3 -0
  171. package/dist/presets/_briefs/cal.js +548 -0
  172. package/dist/presets/_briefs/cal.js.map +1 -0
  173. package/dist/presets/_briefs/claude.d.ts +3 -0
  174. package/dist/presets/_briefs/claude.js +595 -0
  175. package/dist/presets/_briefs/claude.js.map +1 -0
  176. package/dist/presets/_briefs/clay.d.ts +3 -0
  177. package/dist/presets/_briefs/clay.js +547 -0
  178. package/dist/presets/_briefs/clay.js.map +1 -0
  179. package/dist/presets/_briefs/clickhouse.d.ts +3 -0
  180. package/dist/presets/_briefs/clickhouse.js +550 -0
  181. package/dist/presets/_briefs/clickhouse.js.map +1 -0
  182. package/dist/presets/_briefs/cohere.d.ts +3 -0
  183. package/dist/presets/_briefs/cohere.js +457 -0
  184. package/dist/presets/_briefs/cohere.js.map +1 -0
  185. package/dist/presets/_briefs/coinbase.d.ts +3 -0
  186. package/dist/presets/_briefs/coinbase.js +576 -0
  187. package/dist/presets/_briefs/coinbase.js.map +1 -0
  188. package/dist/presets/_briefs/composio.d.ts +3 -0
  189. package/dist/presets/_briefs/composio.js +512 -0
  190. package/dist/presets/_briefs/composio.js.map +1 -0
  191. package/dist/presets/_briefs/cursor.d.ts +3 -0
  192. package/dist/presets/_briefs/cursor.js +543 -0
  193. package/dist/presets/_briefs/cursor.js.map +1 -0
  194. package/dist/presets/_briefs/elevenlabs.d.ts +3 -0
  195. package/dist/presets/_briefs/elevenlabs.js +510 -0
  196. package/dist/presets/_briefs/elevenlabs.js.map +1 -0
  197. package/dist/presets/_briefs/expo.d.ts +3 -0
  198. package/dist/presets/_briefs/expo.js +532 -0
  199. package/dist/presets/_briefs/expo.js.map +1 -0
  200. package/dist/presets/_briefs/ferrari.d.ts +3 -0
  201. package/dist/presets/_briefs/ferrari.js +537 -0
  202. package/dist/presets/_briefs/ferrari.js.map +1 -0
  203. package/dist/presets/_briefs/figma.d.ts +3 -0
  204. package/dist/presets/_briefs/figma.js +226 -0
  205. package/dist/presets/_briefs/figma.js.map +1 -0
  206. package/dist/presets/_briefs/framer.d.ts +3 -0
  207. package/dist/presets/_briefs/framer.js +252 -0
  208. package/dist/presets/_briefs/framer.js.map +1 -0
  209. package/dist/presets/_briefs/hashicorp.d.ts +3 -0
  210. package/dist/presets/_briefs/hashicorp.js +284 -0
  211. package/dist/presets/_briefs/hashicorp.js.map +1 -0
  212. package/dist/presets/_briefs/ibm.d.ts +3 -0
  213. package/dist/presets/_briefs/ibm.js +338 -0
  214. package/dist/presets/_briefs/ibm.js.map +1 -0
  215. package/dist/presets/_briefs/intercom.d.ts +3 -0
  216. package/dist/presets/_briefs/intercom.js +152 -0
  217. package/dist/presets/_briefs/intercom.js.map +1 -0
  218. package/dist/presets/_briefs/kraken.d.ts +3 -0
  219. package/dist/presets/_briefs/kraken.js +131 -0
  220. package/dist/presets/_briefs/kraken.js.map +1 -0
  221. package/dist/presets/_briefs/lamborghini.d.ts +3 -0
  222. package/dist/presets/_briefs/lamborghini.js +294 -0
  223. package/dist/presets/_briefs/lamborghini.js.map +1 -0
  224. package/dist/presets/_briefs/linear.d.ts +3 -0
  225. package/dist/presets/_briefs/linear.js +373 -0
  226. package/dist/presets/_briefs/linear.js.map +1 -0
  227. package/dist/presets/_briefs/lovable.d.ts +3 -0
  228. package/dist/presets/_briefs/lovable.js +304 -0
  229. package/dist/presets/_briefs/lovable.js.map +1 -0
  230. package/dist/presets/_briefs/mastercard.d.ts +3 -0
  231. package/dist/presets/_briefs/mastercard.js +371 -0
  232. package/dist/presets/_briefs/mastercard.js.map +1 -0
  233. package/dist/presets/_briefs/meta.d.ts +3 -0
  234. package/dist/presets/_briefs/meta.js +372 -0
  235. package/dist/presets/_briefs/meta.js.map +1 -0
  236. package/dist/presets/_briefs/minimax.d.ts +3 -0
  237. package/dist/presets/_briefs/minimax.js +263 -0
  238. package/dist/presets/_briefs/minimax.js.map +1 -0
  239. package/dist/presets/_briefs/mintlify.d.ts +3 -0
  240. package/dist/presets/_briefs/mintlify.js +332 -0
  241. package/dist/presets/_briefs/mintlify.js.map +1 -0
  242. package/dist/presets/_briefs/miro.d.ts +3 -0
  243. package/dist/presets/_briefs/miro.js +114 -0
  244. package/dist/presets/_briefs/miro.js.map +1 -0
  245. package/dist/presets/_briefs/mistral.d.ts +3 -0
  246. package/dist/presets/_briefs/mistral.js +267 -0
  247. package/dist/presets/_briefs/mistral.js.map +1 -0
  248. package/dist/presets/_briefs/mongodb.d.ts +3 -0
  249. package/dist/presets/_briefs/mongodb.js +272 -0
  250. package/dist/presets/_briefs/mongodb.js.map +1 -0
  251. package/dist/presets/_briefs/nike.d.ts +3 -0
  252. package/dist/presets/_briefs/nike.js +369 -0
  253. package/dist/presets/_briefs/nike.js.map +1 -0
  254. package/dist/presets/_briefs/notion.d.ts +3 -0
  255. package/dist/presets/_briefs/notion.js +315 -0
  256. package/dist/presets/_briefs/notion.js.map +1 -0
  257. package/dist/presets/_briefs/nvidia.d.ts +3 -0
  258. package/dist/presets/_briefs/nvidia.js +299 -0
  259. package/dist/presets/_briefs/nvidia.js.map +1 -0
  260. package/dist/presets/_briefs/ollama.d.ts +3 -0
  261. package/dist/presets/_briefs/ollama.js +273 -0
  262. package/dist/presets/_briefs/ollama.js.map +1 -0
  263. package/dist/presets/_briefs/opencode.d.ts +3 -0
  264. package/dist/presets/_briefs/opencode.js +287 -0
  265. package/dist/presets/_briefs/opencode.js.map +1 -0
  266. package/dist/presets/_briefs/pinterest.d.ts +3 -0
  267. package/dist/presets/_briefs/pinterest.js +236 -0
  268. package/dist/presets/_briefs/pinterest.js.map +1 -0
  269. package/dist/presets/_briefs/playstation.d.ts +3 -0
  270. package/dist/presets/_briefs/playstation.js +370 -0
  271. package/dist/presets/_briefs/playstation.js.map +1 -0
  272. package/dist/presets/_briefs/posthog.d.ts +3 -0
  273. package/dist/presets/_briefs/posthog.js +262 -0
  274. package/dist/presets/_briefs/posthog.js.map +1 -0
  275. package/dist/presets/_briefs/raycast.d.ts +3 -0
  276. package/dist/presets/_briefs/raycast.js +274 -0
  277. package/dist/presets/_briefs/raycast.js.map +1 -0
  278. package/dist/presets/_briefs/renault.d.ts +3 -0
  279. package/dist/presets/_briefs/renault.js +317 -0
  280. package/dist/presets/_briefs/renault.js.map +1 -0
  281. package/dist/presets/_briefs/replicate.d.ts +3 -0
  282. package/dist/presets/_briefs/replicate.js +267 -0
  283. package/dist/presets/_briefs/replicate.js.map +1 -0
  284. package/dist/presets/_briefs/resend.d.ts +3 -0
  285. package/dist/presets/_briefs/resend.js +309 -0
  286. package/dist/presets/_briefs/resend.js.map +1 -0
  287. package/dist/presets/_briefs/revolut.d.ts +3 -0
  288. package/dist/presets/_briefs/revolut.js +191 -0
  289. package/dist/presets/_briefs/revolut.js.map +1 -0
  290. package/dist/presets/_briefs/runwayml.d.ts +3 -0
  291. package/dist/presets/_briefs/runwayml.js +250 -0
  292. package/dist/presets/_briefs/runwayml.js.map +1 -0
  293. package/dist/presets/_briefs/sanity.d.ts +3 -0
  294. package/dist/presets/_briefs/sanity.js +363 -0
  295. package/dist/presets/_briefs/sanity.js.map +1 -0
  296. package/dist/presets/_briefs/sentry.d.ts +3 -0
  297. package/dist/presets/_briefs/sentry.js +268 -0
  298. package/dist/presets/_briefs/sentry.js.map +1 -0
  299. package/dist/presets/_briefs/shopify.d.ts +3 -0
  300. package/dist/presets/_briefs/shopify.js +356 -0
  301. package/dist/presets/_briefs/shopify.js.map +1 -0
  302. package/dist/presets/_briefs/slack.d.ts +3 -0
  303. package/dist/presets/_briefs/slack.js +221 -0
  304. package/dist/presets/_briefs/slack.js.map +1 -0
  305. package/dist/presets/_briefs/spacex.d.ts +3 -0
  306. package/dist/presets/_briefs/spacex.js +200 -0
  307. package/dist/presets/_briefs/spacex.js.map +1 -0
  308. package/dist/presets/_briefs/spotify.d.ts +3 -0
  309. package/dist/presets/_briefs/spotify.js +252 -0
  310. package/dist/presets/_briefs/spotify.js.map +1 -0
  311. package/dist/presets/_briefs/starbucks.d.ts +3 -0
  312. package/dist/presets/_briefs/starbucks.js +586 -0
  313. package/dist/presets/_briefs/starbucks.js.map +1 -0
  314. package/dist/presets/_briefs/stripe.d.ts +3 -0
  315. package/dist/presets/_briefs/stripe.js +328 -0
  316. package/dist/presets/_briefs/stripe.js.map +1 -0
  317. package/dist/presets/_briefs/supabase.d.ts +3 -0
  318. package/dist/presets/_briefs/supabase.js +261 -0
  319. package/dist/presets/_briefs/supabase.js.map +1 -0
  320. package/dist/presets/_briefs/superhuman.d.ts +3 -0
  321. package/dist/presets/_briefs/superhuman.js +258 -0
  322. package/dist/presets/_briefs/superhuman.js.map +1 -0
  323. package/dist/presets/_briefs/tesla.d.ts +3 -0
  324. package/dist/presets/_briefs/tesla.js +292 -0
  325. package/dist/presets/_briefs/tesla.js.map +1 -0
  326. package/dist/presets/_briefs/theverge.d.ts +3 -0
  327. package/dist/presets/_briefs/theverge.js +345 -0
  328. package/dist/presets/_briefs/theverge.js.map +1 -0
  329. package/dist/presets/_briefs/together.d.ts +3 -0
  330. package/dist/presets/_briefs/together.js +269 -0
  331. package/dist/presets/_briefs/together.js.map +1 -0
  332. package/dist/presets/_briefs/uber.d.ts +3 -0
  333. package/dist/presets/_briefs/uber.js +301 -0
  334. package/dist/presets/_briefs/uber.js.map +1 -0
  335. package/dist/presets/_briefs/vercel.d.ts +3 -0
  336. package/dist/presets/_briefs/vercel.js +316 -0
  337. package/dist/presets/_briefs/vercel.js.map +1 -0
  338. package/dist/presets/_briefs/vodafone.d.ts +3 -0
  339. package/dist/presets/_briefs/vodafone.js +429 -0
  340. package/dist/presets/_briefs/vodafone.js.map +1 -0
  341. package/dist/presets/_briefs/voltagent.d.ts +3 -0
  342. package/dist/presets/_briefs/voltagent.js +329 -0
  343. package/dist/presets/_briefs/voltagent.js.map +1 -0
  344. package/dist/presets/_briefs/warp.d.ts +3 -0
  345. package/dist/presets/_briefs/warp.js +259 -0
  346. package/dist/presets/_briefs/warp.js.map +1 -0
  347. package/dist/presets/_briefs/webflow.d.ts +3 -0
  348. package/dist/presets/_briefs/webflow.js +98 -0
  349. package/dist/presets/_briefs/webflow.js.map +1 -0
  350. package/dist/presets/_briefs/wired.d.ts +3 -0
  351. package/dist/presets/_briefs/wired.js +284 -0
  352. package/dist/presets/_briefs/wired.js.map +1 -0
  353. package/dist/presets/_briefs/wise.d.ts +3 -0
  354. package/dist/presets/_briefs/wise.js +179 -0
  355. package/dist/presets/_briefs/wise.js.map +1 -0
  356. package/dist/presets/_briefs/x.d.ts +3 -0
  357. package/dist/presets/_briefs/x.js +263 -0
  358. package/dist/presets/_briefs/x.js.map +1 -0
  359. package/dist/presets/_briefs/zapier.d.ts +3 -0
  360. package/dist/presets/_briefs/zapier.js +334 -0
  361. package/dist/presets/_briefs/zapier.js.map +1 -0
  362. package/dist/presets/airbnb.d.ts +5 -0
  363. package/dist/presets/airbnb.js +7 -0
  364. package/dist/presets/airbnb.js.map +1 -0
  365. package/dist/presets/airtable.d.ts +5 -0
  366. package/dist/presets/airtable.js +7 -0
  367. package/dist/presets/airtable.js.map +1 -0
  368. package/dist/presets/apple.d.ts +5 -0
  369. package/dist/presets/apple.js +7 -0
  370. package/dist/presets/apple.js.map +1 -0
  371. package/dist/presets/binance.d.ts +5 -0
  372. package/dist/presets/binance.js +7 -0
  373. package/dist/presets/binance.js.map +1 -0
  374. package/dist/presets/bmw-m.d.ts +5 -0
  375. package/dist/presets/bmw-m.js +7 -0
  376. package/dist/presets/bmw-m.js.map +1 -0
  377. package/dist/presets/bmw.d.ts +5 -0
  378. package/dist/presets/bmw.js +7 -0
  379. package/dist/presets/bmw.js.map +1 -0
  380. package/dist/presets/bugatti.d.ts +5 -0
  381. package/dist/presets/bugatti.js +7 -0
  382. package/dist/presets/bugatti.js.map +1 -0
  383. package/dist/presets/cal.d.ts +5 -0
  384. package/dist/presets/cal.js +7 -0
  385. package/dist/presets/cal.js.map +1 -0
  386. package/dist/presets/claude.d.ts +5 -0
  387. package/dist/presets/claude.js +7 -0
  388. package/dist/presets/claude.js.map +1 -0
  389. package/dist/presets/clay.d.ts +5 -0
  390. package/dist/presets/clay.js +7 -0
  391. package/dist/presets/clay.js.map +1 -0
  392. package/dist/presets/clickhouse.d.ts +5 -0
  393. package/dist/presets/clickhouse.js +7 -0
  394. package/dist/presets/clickhouse.js.map +1 -0
  395. package/dist/presets/cohere.d.ts +5 -0
  396. package/dist/presets/cohere.js +7 -0
  397. package/dist/presets/cohere.js.map +1 -0
  398. package/dist/presets/coinbase.d.ts +5 -0
  399. package/dist/presets/coinbase.js +7 -0
  400. package/dist/presets/coinbase.js.map +1 -0
  401. package/dist/presets/composio.d.ts +5 -0
  402. package/dist/presets/composio.js +7 -0
  403. package/dist/presets/composio.js.map +1 -0
  404. package/dist/presets/cursor.d.ts +5 -0
  405. package/dist/presets/cursor.js +7 -0
  406. package/dist/presets/cursor.js.map +1 -0
  407. package/dist/presets/elevenlabs.d.ts +5 -0
  408. package/dist/presets/elevenlabs.js +7 -0
  409. package/dist/presets/elevenlabs.js.map +1 -0
  410. package/dist/presets/expo.d.ts +5 -0
  411. package/dist/presets/expo.js +7 -0
  412. package/dist/presets/expo.js.map +1 -0
  413. package/dist/presets/ferrari.d.ts +5 -0
  414. package/dist/presets/ferrari.js +7 -0
  415. package/dist/presets/ferrari.js.map +1 -0
  416. package/dist/presets/figma.d.ts +5 -0
  417. package/dist/presets/figma.js +7 -0
  418. package/dist/presets/figma.js.map +1 -0
  419. package/dist/presets/framer.d.ts +5 -0
  420. package/dist/presets/framer.js +7 -0
  421. package/dist/presets/framer.js.map +1 -0
  422. package/dist/presets/hashicorp.d.ts +5 -0
  423. package/dist/presets/hashicorp.js +7 -0
  424. package/dist/presets/hashicorp.js.map +1 -0
  425. package/dist/presets/ibm.d.ts +5 -0
  426. package/dist/presets/ibm.js +7 -0
  427. package/dist/presets/ibm.js.map +1 -0
  428. package/dist/presets/index.d.ts +94 -0
  429. package/dist/presets/index.js +297 -0
  430. package/dist/presets/index.js.map +1 -0
  431. package/dist/presets/intercom.d.ts +5 -0
  432. package/dist/presets/intercom.js +7 -0
  433. package/dist/presets/intercom.js.map +1 -0
  434. package/dist/presets/kraken.d.ts +5 -0
  435. package/dist/presets/kraken.js +7 -0
  436. package/dist/presets/kraken.js.map +1 -0
  437. package/dist/presets/lamborghini.d.ts +5 -0
  438. package/dist/presets/lamborghini.js +7 -0
  439. package/dist/presets/lamborghini.js.map +1 -0
  440. package/dist/presets/linear.d.ts +5 -0
  441. package/dist/presets/linear.js +7 -0
  442. package/dist/presets/linear.js.map +1 -0
  443. package/dist/presets/lovable.d.ts +5 -0
  444. package/dist/presets/lovable.js +7 -0
  445. package/dist/presets/lovable.js.map +1 -0
  446. package/dist/presets/mastercard.d.ts +5 -0
  447. package/dist/presets/mastercard.js +7 -0
  448. package/dist/presets/mastercard.js.map +1 -0
  449. package/dist/presets/meta.d.ts +5 -0
  450. package/dist/presets/meta.js +7 -0
  451. package/dist/presets/meta.js.map +1 -0
  452. package/dist/presets/minimax.d.ts +5 -0
  453. package/dist/presets/minimax.js +7 -0
  454. package/dist/presets/minimax.js.map +1 -0
  455. package/dist/presets/mintlify.d.ts +5 -0
  456. package/dist/presets/mintlify.js +7 -0
  457. package/dist/presets/mintlify.js.map +1 -0
  458. package/dist/presets/miro.d.ts +5 -0
  459. package/dist/presets/miro.js +7 -0
  460. package/dist/presets/miro.js.map +1 -0
  461. package/dist/presets/mistral.d.ts +5 -0
  462. package/dist/presets/mistral.js +7 -0
  463. package/dist/presets/mistral.js.map +1 -0
  464. package/dist/presets/mongodb.d.ts +5 -0
  465. package/dist/presets/mongodb.js +7 -0
  466. package/dist/presets/mongodb.js.map +1 -0
  467. package/dist/presets/nike.d.ts +5 -0
  468. package/dist/presets/nike.js +7 -0
  469. package/dist/presets/nike.js.map +1 -0
  470. package/dist/presets/notion.d.ts +5 -0
  471. package/dist/presets/notion.js +7 -0
  472. package/dist/presets/notion.js.map +1 -0
  473. package/dist/presets/nvidia.d.ts +5 -0
  474. package/dist/presets/nvidia.js +7 -0
  475. package/dist/presets/nvidia.js.map +1 -0
  476. package/dist/presets/ollama.d.ts +5 -0
  477. package/dist/presets/ollama.js +7 -0
  478. package/dist/presets/ollama.js.map +1 -0
  479. package/dist/presets/opencode.d.ts +5 -0
  480. package/dist/presets/opencode.js +7 -0
  481. package/dist/presets/opencode.js.map +1 -0
  482. package/dist/presets/pinterest.d.ts +5 -0
  483. package/dist/presets/pinterest.js +7 -0
  484. package/dist/presets/pinterest.js.map +1 -0
  485. package/dist/presets/playstation.d.ts +5 -0
  486. package/dist/presets/playstation.js +7 -0
  487. package/dist/presets/playstation.js.map +1 -0
  488. package/dist/presets/posthog.d.ts +5 -0
  489. package/dist/presets/posthog.js +7 -0
  490. package/dist/presets/posthog.js.map +1 -0
  491. package/dist/presets/raycast.d.ts +5 -0
  492. package/dist/presets/raycast.js +7 -0
  493. package/dist/presets/raycast.js.map +1 -0
  494. package/dist/presets/renault.d.ts +5 -0
  495. package/dist/presets/renault.js +7 -0
  496. package/dist/presets/renault.js.map +1 -0
  497. package/dist/presets/replicate.d.ts +5 -0
  498. package/dist/presets/replicate.js +7 -0
  499. package/dist/presets/replicate.js.map +1 -0
  500. package/dist/presets/resend.d.ts +5 -0
  501. package/dist/presets/resend.js +7 -0
  502. package/dist/presets/resend.js.map +1 -0
  503. package/dist/presets/revolut.d.ts +5 -0
  504. package/dist/presets/revolut.js +7 -0
  505. package/dist/presets/revolut.js.map +1 -0
  506. package/dist/presets/runwayml.d.ts +5 -0
  507. package/dist/presets/runwayml.js +7 -0
  508. package/dist/presets/runwayml.js.map +1 -0
  509. package/dist/presets/sanity.d.ts +5 -0
  510. package/dist/presets/sanity.js +7 -0
  511. package/dist/presets/sanity.js.map +1 -0
  512. package/dist/presets/sentry.d.ts +5 -0
  513. package/dist/presets/sentry.js +7 -0
  514. package/dist/presets/sentry.js.map +1 -0
  515. package/dist/presets/shopify.d.ts +5 -0
  516. package/dist/presets/shopify.js +7 -0
  517. package/dist/presets/shopify.js.map +1 -0
  518. package/dist/presets/slack.d.ts +5 -0
  519. package/dist/presets/slack.js +7 -0
  520. package/dist/presets/slack.js.map +1 -0
  521. package/dist/presets/spacex.d.ts +5 -0
  522. package/dist/presets/spacex.js +7 -0
  523. package/dist/presets/spacex.js.map +1 -0
  524. package/dist/presets/spotify.d.ts +5 -0
  525. package/dist/presets/spotify.js +7 -0
  526. package/dist/presets/spotify.js.map +1 -0
  527. package/dist/presets/starbucks.d.ts +5 -0
  528. package/dist/presets/starbucks.js +7 -0
  529. package/dist/presets/starbucks.js.map +1 -0
  530. package/dist/presets/stripe.d.ts +5 -0
  531. package/dist/presets/stripe.js +7 -0
  532. package/dist/presets/stripe.js.map +1 -0
  533. package/dist/presets/supabase.d.ts +5 -0
  534. package/dist/presets/supabase.js +7 -0
  535. package/dist/presets/supabase.js.map +1 -0
  536. package/dist/presets/superhuman.d.ts +5 -0
  537. package/dist/presets/superhuman.js +7 -0
  538. package/dist/presets/superhuman.js.map +1 -0
  539. package/dist/presets/tesla.d.ts +5 -0
  540. package/dist/presets/tesla.js +7 -0
  541. package/dist/presets/tesla.js.map +1 -0
  542. package/dist/presets/theverge.d.ts +5 -0
  543. package/dist/presets/theverge.js +7 -0
  544. package/dist/presets/theverge.js.map +1 -0
  545. package/dist/presets/together.d.ts +5 -0
  546. package/dist/presets/together.js +7 -0
  547. package/dist/presets/together.js.map +1 -0
  548. package/dist/presets/uber.d.ts +5 -0
  549. package/dist/presets/uber.js +7 -0
  550. package/dist/presets/uber.js.map +1 -0
  551. package/dist/presets/vercel.d.ts +5 -0
  552. package/dist/presets/vercel.js +7 -0
  553. package/dist/presets/vercel.js.map +1 -0
  554. package/dist/presets/vodafone.d.ts +5 -0
  555. package/dist/presets/vodafone.js +7 -0
  556. package/dist/presets/vodafone.js.map +1 -0
  557. package/dist/presets/voltagent.d.ts +5 -0
  558. package/dist/presets/voltagent.js +7 -0
  559. package/dist/presets/voltagent.js.map +1 -0
  560. package/dist/presets/warp.d.ts +5 -0
  561. package/dist/presets/warp.js +7 -0
  562. package/dist/presets/warp.js.map +1 -0
  563. package/dist/presets/webflow.d.ts +5 -0
  564. package/dist/presets/webflow.js +7 -0
  565. package/dist/presets/webflow.js.map +1 -0
  566. package/dist/presets/wired.d.ts +5 -0
  567. package/dist/presets/wired.js +7 -0
  568. package/dist/presets/wired.js.map +1 -0
  569. package/dist/presets/wise.d.ts +5 -0
  570. package/dist/presets/wise.js +7 -0
  571. package/dist/presets/wise.js.map +1 -0
  572. package/dist/presets/x.d.ts +5 -0
  573. package/dist/presets/x.js +7 -0
  574. package/dist/presets/x.js.map +1 -0
  575. package/dist/presets/zapier.d.ts +5 -0
  576. package/dist/presets/zapier.js +7 -0
  577. package/dist/presets/zapier.js.map +1 -0
  578. package/package.json +17 -5
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/presets/_briefs/bmw.ts"],"sourcesContent":["// AUTO-GENERATED — do not hand-edit. Source: https://github.com/voltagent/awesome-design-md\nexport const bmwBrief = `---\nversion: alpha\nname: BMW\ndescription: BMW's corporate site — distinct from BMW M's motorsport-bombastic variant, this is a measured and settled corporate-automotive interface. On a light (cream-tinted white) canvas, BMW corporate blue (#1c69d4) carries every primary CTA; dark navy hero bands frame model photography. BMW Type Next Latin sets the entire hierarchy on two weights — heavy 700 display and Light 300 body. Configuration and reservation flows ride a card-based 4-up grid, where each card holds a model render, a name, and a \"Learn More\" link.\n\ncolors:\n primary: \"#1c69d4\"\n primary-active: \"#0653b6\"\n primary-disabled: \"#d6d6d6\"\n ink: \"#262626\"\n body: \"#3c3c3c\"\n body-strong: \"#1a1a1a\"\n muted: \"#6b6b6b\"\n muted-soft: \"#9a9a9a\"\n hairline: \"#e6e6e6\"\n hairline-strong: \"#cccccc\"\n canvas: \"#ffffff\"\n surface-soft: \"#f7f7f7\"\n surface-card: \"#fafafa\"\n surface-strong: \"#ebebeb\"\n surface-dark: \"#1a2129\"\n surface-dark-elevated: \"#262e38\"\n on-primary: \"#ffffff\"\n on-dark: \"#ffffff\"\n on-dark-soft: \"#bbbbbb\"\n m-blue-light: \"#0066b1\"\n m-blue-dark: \"#1c69d4\"\n m-red: \"#e22718\"\n success: \"#22c55e\"\n warning: \"#f59e0b\"\n error: \"#dc2626\"\n\ntypography:\n display-xl:\n fontFamily: \"'BMW Type Next Latin', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n fontSize: 64px\n fontWeight: 700\n lineHeight: 1.05\n letterSpacing: 0\n display-lg:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 48px\n fontWeight: 700\n lineHeight: 1.1\n letterSpacing: 0\n display-md:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 32px\n fontWeight: 700\n lineHeight: 1.15\n letterSpacing: 0\n display-sm:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 24px\n fontWeight: 700\n lineHeight: 1.25\n letterSpacing: 0\n title-lg:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 20px\n fontWeight: 700\n lineHeight: 1.3\n letterSpacing: 0\n title-md:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 18px\n fontWeight: 700\n lineHeight: 1.4\n letterSpacing: 0\n title-sm:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 16px\n fontWeight: 700\n lineHeight: 1.4\n letterSpacing: 0\n body-md:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 16px\n fontWeight: 300\n lineHeight: 1.55\n letterSpacing: 0\n body-sm:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 14px\n fontWeight: 300\n lineHeight: 1.55\n letterSpacing: 0\n caption:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 12px\n fontWeight: 400\n lineHeight: 1.4\n letterSpacing: 0.5px\n label-uppercase:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 13px\n fontWeight: 700\n lineHeight: 1.3\n letterSpacing: 1.5px\n textTransform: uppercase\n button:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 14px\n fontWeight: 700\n lineHeight: 1.0\n letterSpacing: 0.5px\n nav-link:\n fontFamily: \"'BMW Type Next Latin', sans-serif\"\n fontSize: 14px\n fontWeight: 400\n lineHeight: 1.4\n letterSpacing: 0.3px\n\nrounded:\n none: 0px\n xs: 2px\n sm: 4px\n md: 8px\n lg: 12px\n pill: 9999px\n full: 9999px\n\nspacing:\n xxs: 4px\n xs: 8px\n sm: 12px\n md: 16px\n lg: 24px\n xl: 32px\n xxl: 48px\n section: 80px\n\ncomponents:\n top-nav:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.nav-link}\"\n height: 64px\n button-primary:\n backgroundColor: \"{colors.primary}\"\n textColor: \"{colors.on-primary}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.none}\"\n padding: 14px 32px\n height: 48px\n button-primary-active:\n backgroundColor: \"{colors.primary-active}\"\n textColor: \"{colors.on-primary}\"\n rounded: \"{rounded.none}\"\n button-primary-disabled:\n backgroundColor: \"{colors.primary-disabled}\"\n textColor: \"{colors.muted}\"\n rounded: \"{rounded.none}\"\n button-secondary:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.none}\"\n padding: 13px 31px\n height: 48px\n button-secondary-on-dark:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.none}\"\n padding: 13px 31px\n button-text-link:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.label-uppercase}\"\n text-link:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n hero-band-dark:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.display-xl}\"\n padding: 80px\n hero-photo-band:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-lg}\"\n padding: 80px\n model-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.none}\"\n padding: 24px\n model-card-photo:\n backgroundColor: \"{colors.surface-card}\"\n rounded: \"{rounded.none}\"\n feature-photo-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.none}\"\n padding: 24px\n spec-cell:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-sm}\"\n rounded: \"{rounded.none}\"\n padding: 24px\n inventory-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.title-sm}\"\n rounded: \"{rounded.none}\"\n padding: 16px\n filter-chip:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.caption}\"\n rounded: \"{rounded.none}\"\n padding: 8px 14px\n filter-chip-active:\n backgroundColor: \"{colors.ink}\"\n textColor: \"{colors.on-dark}\"\n rounded: \"{rounded.none}\"\n configurator-option-tile:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.none}\"\n padding: 16px 24px\n configurator-option-tile-selected:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n rounded: \"{rounded.none}\"\n padding: 15px 23px\n text-input:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.none}\"\n padding: 14px 16px\n height: 48px\n cookie-consent-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.body}\"\n typography: \"{typography.body-sm}\"\n rounded: \"{rounded.none}\"\n padding: 24px\n category-tab:\n backgroundColor: transparent\n textColor: \"{colors.muted}\"\n typography: \"{typography.label-uppercase}\"\n rounded: \"{rounded.none}\"\n category-tab-active:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.label-uppercase}\"\n rounded: \"{rounded.none}\"\n m-stripe-divider:\n backgroundColor: transparent\n rounded: \"{rounded.none}\"\n cta-band-photo:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.display-md}\"\n padding: 80px\n footer:\n backgroundColor: \"{colors.surface-soft}\"\n textColor: \"{colors.body}\"\n typography: \"{typography.body-sm}\"\n padding: 64px\n---\n\n## Overview\n\nBMW's corporate site carries a far more **measured, corporate-automotive** interface than its motorsport-bombastic cousin BMW M. The atmosphere is light: \\`{colors.canvas}\\` (#ffffff) is the base surface, \\`{colors.surface-card}\\` (#fafafa) carries the soft-grey card plates, and dark navy \\`{colors.surface-dark}\\` (#1a2129) appears only inside hero bands — one per page, framing the lead model render.\n\nType runs BMW's licensed **BMW Type Next Latin** at two weights: heavy 700 (display + button + nav) and Light 300 (body + secondary copy). That contrast — heavy display next to thin paragraph — is the editorial signature, channeling the brand's \"European-engineered\" voice. Weight 500 is deliberately absent; weight 400 only appears on caption and nav-link in neutral utility contexts.\n\nThe brand action color, **BMW corporate blue** (\\`{colors.primary}\\` — #1c69d4), works alone across every primary CTA — buttons are **rectangular, 0px corner**, with white type. The site rotates a blue-button + dark-navy-hero combination across page rhythm. The M tricolor stripe (\\`{colors.m-blue-light}\\` → \\`{colors.m-blue-dark}\\` → \\`{colors.m-red}\\`) only appears in motorsport contexts and as M-model badges/dividers — never in the corporate site's main language.\n\nThe configuration and reservation flows add a dealer-side inventory UI on top of the same system — filter chips, model cards, price tables — but typography and color stay identical; only density goes up.\n\n**Key Characteristics:**\n- Light \\`{colors.canvas}\\` is the base surface; dark navy \\`{colors.surface-dark}\\` appears only inside hero bands — page rhythm relies on contrast.\n- BMW corporate blue (\\`{colors.primary}\\` — #1c69d4) acts as the single primary action color.\n- BMW Type Next Latin: weight 700 display against weight 300 body is the signature.\n- Buttons are **rectangular, 0px radius** — corporate dialect, distinct from M's sportier radii.\n- Model cards run as 4-up or 5-up grids with no hairline border or only minimal border — just white plate + photo + title.\n- Photography (model renders) sits in environment, no shadow — depth comes entirely from color-block contrast.\n- M tricolor stripe appears only in M-model contexts — not part of the corporate language.\n- Section rhythm holds at \\`{spacing.section}\\` (80px) for every major band.\n\n## Colors\n\n### Brand & Accent\n- **BMW Blue (Primary)** (\\`{colors.primary}\\` — #1c69d4): The single brand action color. All primary CTAs, \"Learn More\" link prefixes (blue text), nav-link active state. Press shifts to \\`{colors.primary-active}\\` (#0653b6).\n- **M Blue Light** (\\`{colors.m-blue-light}\\` — #0066b1) + **M Blue Dark** (\\`{colors.m-blue-dark}\\` — #1c69d4) + **M Red** (\\`{colors.m-red}\\` — #e22718): The M tricolor stripe — appears on the corporate site only on M-model pages and the \"M\" badge. Never as CTA colors.\n\n### Surface\n- **Canvas** (\\`{colors.canvas}\\` — #ffffff): The default page surface.\n- **Surface Soft** (\\`{colors.surface-soft}\\` — #f7f7f7): Soft grey for the footer and sub-navigation bands.\n- **Surface Card** (\\`{colors.surface-card}\\` — #fafafa): The light plate behind a model card's photo block.\n- **Surface Strong** (\\`{colors.surface-strong}\\` — #ebebeb): A slightly heavier grey used as a section divider.\n- **Surface Dark** (\\`{colors.surface-dark}\\` — #1a2129): Dark navy for hero bands and large dark CTAs. Not pure black — carries a warm undertone.\n- **Surface Dark Elevated** (\\`{colors.surface-dark-elevated}\\` — #262e38): One step lighter, used for nested cards on top of the dark hero.\n\n### Hairlines\n- **Hairline** (\\`{colors.hairline}\\` — #e6e6e6): The 1px divider — input outline, configurator card outline, table separator.\n- **Hairline Strong** (\\`{colors.hairline-strong}\\` — #cccccc): A more visible 1px outline — disabled secondary buttons, emphasized table border.\n\n### Text\n- **Ink** (\\`{colors.ink}\\` — #262626): All display and primary text. Not pure black — soft against photography.\n- **Body** (\\`{colors.body}\\` — #3c3c3c): Default running text.\n- **Body Strong** (\\`{colors.body-strong}\\` — #1a1a1a): Emphasized paragraphs and lead text.\n- **Muted** (\\`{colors.muted}\\` — #6b6b6b): Footer links, breadcrumbs, captions.\n- **Muted Soft** (\\`{colors.muted-soft}\\` — #9a9a9a): Disabled text, fine-print legal.\n- **On Primary** (\\`{colors.on-primary}\\` — #ffffff): White text on a blue button.\n- **On Dark** (\\`{colors.on-dark}\\` — #ffffff): White text on a dark hero band.\n- **On Dark Soft** (\\`{colors.on-dark-soft}\\` — #bbbbbb): A slightly muted white for secondary text on dark bands.\n\n### Semantic\n- **Success** (\\`{colors.success}\\` — #22c55e): Confirmation messages and \"available\" indicators.\n- **Warning** (\\`{colors.warning}\\` — #f59e0b): Warning callouts.\n- **Error** (\\`{colors.error}\\` — #dc2626): Validation errors.\n\n## Typography\n\n### Font Family\nThe system runs **BMW Type Next Latin** in two cuts: regular (display + UI labels) and **BMW Type Next Latin Light** (body + secondary copy). Fallback stack: \\`system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif\\`.\n\nThe display/body split is functional:\n- BMW Type Next Latin (700) → display headlines, button labels, nav links\n- BMW Type Next Latin Light (300) → paragraphs, descriptive copy\n- BMW Type Next Latin (400) → caption, neutral nav-link contexts\n\nThis three-way split mirrors BMW M's — corporate and the M sub-brand share the same typographic DNA; only the weight/size ratios differ.\n\n### Hierarchy\n\n| Token | Size | Weight | Line Height | Letter Spacing | Use |\n|---|---|---|---|---|---|\n| \\`{typography.display-xl}\\` | 64px | 700 | 1.05 | 0 | Hero h1 (\"iX3\", model name) |\n| \\`{typography.display-lg}\\` | 48px | 700 | 1.1 | 0 | Section heads |\n| \\`{typography.display-md}\\` | 32px | 700 | 1.15 | 0 | Sub-section heads |\n| \\`{typography.display-sm}\\` | 24px | 700 | 1.25 | 0 | CTA-band headlines |\n| \\`{typography.title-lg}\\` | 20px | 700 | 1.3 | 0 | Card group titles |\n| \\`{typography.title-md}\\` | 18px | 700 | 1.4 | 0 | Model card title, intro paragraphs |\n| \\`{typography.title-sm}\\` | 16px | 700 | 1.4 | 0 | Inventory card title, list label |\n| \\`{typography.body-md}\\` | 16px | 300 (Light) | 1.55 | 0 | Default body — BMW Type Next Latin Light |\n| \\`{typography.body-sm}\\` | 14px | 300 (Light) | 1.55 | 0 | Footer body, fine-print |\n| \\`{typography.caption}\\` | 12px | 400 | 1.4 | 0.5px | Photo captions, meta |\n| \\`{typography.label-uppercase}\\` | 13px | 700 | 1.3 | 1.5px | \"LEARN MORE\" inline links, category tabs |\n| \\`{typography.button}\\` | 14px | 700 | 1.0 | 0.5px | Standard CTA button label |\n| \\`{typography.nav-link}\\` | 14px | 400 | 1.4 | 0.3px | Top-nav menu items |\n\n### Principles\n- The **700/300 contrast** is the editorial signature. Weight 500 is absent from the system.\n- **No negative letter-spacing** — BMW Type Next Latin works on a wide body, so tracking stays at default. Apple/Cal.com-style tightening reads off-brand here.\n- **UPPERCASE inline links** — \"LEARN MORE\"-style CTAs run uppercase with 1.5px tracking. The \"machined precision\" voice.\n- **Weight 400 lives in a narrow lane** — only caption and nav-link, both neutral utility roles.\n\n### Note on Font Substitutes\nBMW Type Next Latin is a licensed BMW typeface. Open-source alternatives:\n- **Inter** (variable) — close match at weight 700/300. Leave letter-spacing at 0.0em.\n- **Saira Condensed** — for a slightly more compressed BMW Type feel.\n\n## Layout\n\n### Spacing System\n- **Base unit:** 8px.\n- **Tokens:** \\`{spacing.xxs}\\` 4px · \\`{spacing.xs}\\` 8px · \\`{spacing.sm}\\` 12px · \\`{spacing.md}\\` 16px · \\`{spacing.lg}\\` 24px · \\`{spacing.xl}\\` 32px · \\`{spacing.xxl}\\` 48px · \\`{spacing.section}\\` 80px.\n- **Section padding:** \\`{spacing.section}\\` (80px) for every major editorial band.\n- **Card internal padding:** \\`{spacing.lg}\\` (24px) for model and feature cards.\n\n### Grid & Container\n- **Max content width:** ~1440px center-aligned.\n- **Editorial body:** A single 12-column grid.\n- **Model card grids:** 4-up or 5-up at desktop, 2-up at tablet, 1-up on mobile.\n- **Configurator inventory grids:** 3-up filter row + 4-up vehicle cards, dense layout.\n\n### Whitespace Philosophy\nBMW's whitespace strategy is tighter than BMW M's motorsport-aerated grenadier — the corporate side is more utility-driven. Section rhythm is 80px (not M's 96px). Card padding is 24px (not M's 32px). The page is denser, more dealership-functional.\n\n## Elevation & Depth\n\n| Level | Treatment | Use |\n|---|---|---|\n| Flat | No shadow, no border | Body, top nav, footer, hero bands |\n| Soft hairline | 1px \\`{colors.hairline}\\` border | Configurator option tile, table divider |\n| Card surface | \\`{colors.surface-card}\\` background — no shadow | Model card photo plate |\n| Photographic | Edge-to-edge photography | Hero band, model renders |\n\nThe system never uses a drop shadow. Depth comes entirely from (a) color-block contrast (light canvas vs dark hero) and (b) photographic subject + lighting.\n\n### Decorative Depth\n- **\\`m-stripe-divider\\`** — a 4px-tall horizontal tricolor stripe (\\`{colors.m-blue-light}\\` → \\`{colors.m-blue-dark}\\` → \\`{colors.m-red}\\`). Only in M-model contexts, motorsport badges, or as an M-related section divider. Not part of the main corporate flow.\n- **Photographic depth** — full-bleed vehicle photography (lighting + subject) does the work chrome would otherwise do.\n\n## Shapes\n\n### Border Radius Scale\n\n| Token | Value | Use |\n|---|---|---|\n| \\`{rounded.none}\\` | 0px | Every button, card, input, configurator chip — the dominant radius |\n| \\`{rounded.xs}\\` | 2px | Very small badges, very rare |\n| \\`{rounded.sm}\\` | 4px | Small inline button (rare) |\n| \\`{rounded.md}\\` | 8px | Mobile-only collapse cards (rare) |\n| \\`{rounded.lg}\\` | 12px | Very rare — modal/dialog corners |\n| \\`{rounded.pill}\\` | 9999px | Filter chips in some contexts (rare) |\n| \\`{rounded.full}\\` | 9999px / 50% | Avatar, circular icon button |\n\nThe radius hierarchy is binary: **rectangular for everything, circular only for icon buttons.** A clear departure from the soft-cornered SaaS dialect of Apple or Cal.com — closer to BMW corporate-automotive's \"engineered precision\" voice.\n\n### Photography Geometry\n- Hero photography is full-bleed at 16:9 or 21:9 cinematic ratio.\n- Model card photos sit at 16:10, edge-to-edge with \\`{rounded.none}\\` corners.\n- Configurator vehicle renders sit on a white studio background, full silhouette visible.\n\n## Components\n\n### Top Navigation\n\n**\\`top-nav\\`** — A white sticky nav bar pinned to the top of the page. 64px tall, \\`{colors.canvas}\\` background. Left: BMW circular badge logo; center: primary horizontal menu (Models, Next Generation, Pre-Owned, Dealers, Test Drive); right: cart icon, language picker, profile. Menu items render in \\`{typography.nav-link}\\` (14px / 400 / 0.3px tracking).\n\n### Buttons\n\n**\\`button-primary\\`** — The signature primary CTA. Background \\`{colors.primary}\\` (BMW Blue #1c69d4), text \\`{colors.on-primary}\\`, type \\`{typography.button}\\` (BMW Type Next Latin 14px / 700 / 0.5px tracking), padding 14px × 32px, height 48px, rounded \\`{rounded.none}\\` (0px — rectangular). Press state: \\`button-primary-active\\` shifts to \\`{colors.primary-active}\\`.\n\n**\\`button-secondary\\`** — A white button with a hairline outline. Background \\`{colors.canvas}\\`, text \\`{colors.ink}\\`, 1px \\`{colors.hairline-strong}\\` border, same padding + height + radius.\n\n**\\`button-secondary-on-dark\\`** — Used over a dark hero band. Background transparent, text \\`{colors.on-dark}\\`, 1px \\`{colors.on-dark}\\` border, same rectangular shape.\n\n**\\`button-text-link\\`** — An inline UPPERCASE letter-spaced link. No background, text \\`{colors.ink}\\`, type \\`{typography.label-uppercase}\\` (13px / 700 / 1.5px tracking). Reads as \"LEARN MORE\", terminated by a \\`›\\` chevron.\n\n**\\`text-link\\`** — An inline link inside body copy. \\`{colors.ink}\\` text, no underline by default; underlines per context.\n\n### Cards & Containers\n\n**\\`hero-band-dark\\`** — Full-width dark navy hero. Background \\`{colors.surface-dark}\\`, text \\`{colors.on-dark}\\`, vertical padding \\`{spacing.section}\\` (80px). Centered: model name in \\`{typography.display-xl}\\` (64px / 700) + sub-headline + vehicle render (right-aligned or below). A single \\`{component.button-primary}\\` (blue) or \\`{component.button-secondary-on-dark}\\`.\n\n**\\`hero-photo-band\\`** — A light-canvas model showcase band. Background \\`{colors.canvas}\\`, text \\`{colors.ink}\\`. The vehicle render takes the wide area; right or below, a headline + two link CTAs + sub-tagline.\n\n**\\`model-card\\`** — Used in 4-up or 5-up model card grids on the homepage (\"BMW iX3\", \"BMW iX\", \"BMW 5 Series\"). Background \\`{colors.canvas}\\`, rounded \\`{rounded.none}\\`, padding \\`{spacing.lg}\\` (24px). Contents: model render at the top (\\`{component.model-card-photo}\\` on \\`{colors.surface-card}\\`), model name in \\`{typography.title-md}\\` (18px / 700) below, a one-line tagline in \\`{typography.body-sm}\\` (14px / 300), and a \\`{component.button-text-link}\\` (\"LEARN MORE ›\").\n\n**\\`model-card-photo\\`** — The card's photo plate. Background \\`{colors.surface-card}\\` (#fafafa — soft grey), rounded \\`{rounded.none}\\`, vehicle render in full silhouette. Zero padding — the photo runs edge-to-edge.\n\n**\\`feature-photo-card\\`** — A feature/lifestyle card. Background \\`{colors.canvas}\\`, padding \\`{spacing.lg}\\`. 16:9 photo at the top, \\`{typography.title-md}\\` headline + body excerpt below.\n\n**\\`spec-cell\\`** — A technical spec cell (model detail page). Transparent background, separated by hairline dividers. Value on top (\\`{typography.display-sm}\\` 24px / 700), label below (\\`{typography.label-uppercase}\\`).\n\n### Inventory & Configurator\n\n**\\`inventory-card\\`** — One card per vehicle on the dealer inventory page. Background \\`{colors.canvas}\\`, padding \\`{spacing.md}\\` (16px), rounded \\`{rounded.none}\\`. Vehicle photo on top, model + variant name + price + \"View\" link below.\n\n**\\`filter-chip\\`** + **\\`filter-chip-active\\`** — Inventory filter chips (model, year, price range). Inactive: background \\`{colors.canvas}\\`, 1px \\`{colors.hairline-strong}\\` border, text \\`{colors.ink}\\`, type \\`{typography.caption}\\`. Active: background \\`{colors.ink}\\`, text \\`{colors.on-dark}\\`. Padding 8px × 14px, radius \\`{rounded.none}\\`.\n\n**\\`configurator-option-tile\\`** + **\\`configurator-option-tile-selected\\`** — Configurator selection cell (color, wheels, upholstery). Inactive: background \\`{colors.canvas}\\`, 1px hairline. Selected: 2px \\`{colors.primary}\\` border. Padding 16px × 24px, radius \\`{rounded.none}\\`.\n\n### Inputs & Forms\n\n**\\`text-input\\`** — Standard text input. Background \\`{colors.canvas}\\`, text \\`{colors.ink}\\`, type \\`{typography.body-md}\\`, rounded \\`{rounded.none}\\` (0px), padding 14px × 16px, height 48px, 1px hairline border. On focus, the border thickens to ink.\n\n**\\`cookie-consent-card\\`** — Cookie banner. Background \\`{colors.canvas}\\`, 1px hairline, padding \\`{spacing.lg}\\` (24px), \\`{typography.body-sm}\\` (14px / 300 — Light even in legal copy).\n\n### Tabs / Tags\n\n**\\`category-tab\\`** + **\\`category-tab-active\\`** — Category sub-nav. Inactive: transparent + \\`{colors.muted}\\` UPPERCASE label. Active: transparent + \\`{colors.ink}\\` UPPERCASE label + 2px ink underline. 12px vertical padding, no horizontal radius.\n\n### Brand Signature\n\n**\\`m-stripe-divider\\`** — A 4px-tall horizontal tricolor stripe (\\`{colors.m-blue-light}\\` → \\`{colors.m-blue-dark}\\` → \\`{colors.m-red}\\`). Only in M-model contexts, motorsport badges, or as an M-related section divider. Absent from the corporate main flow; on M-model detail pages and the M Performance badge it plays an inline divider role.\n\n### CTA / Footer\n\n**\\`cta-band-photo\\`** — A pre-footer \"Discover the New iX3\"-style band. Background \\`{colors.surface-dark}\\` with a full-bleed vehicle photo. Centered headline in \\`{typography.display-md}\\` (32px / 700) + a single \\`{component.button-secondary-on-dark}\\`. 80px padding.\n\n**\\`footer\\`** — The closing soft-grey footer. Background \\`{colors.surface-soft}\\` (#f7f7f7 — not pure white — soft grey), text \\`{colors.body}\\`. A 4-column link list: Models / Services / Dealers / About. Vertical padding 64px. Below, a copyright line in \\`{typography.body-sm}\\` with \\`{colors.muted}\\`.\n\n## Do's and Don'ts\n\n### Do\n- Sit every page on \\`{colors.canvas}\\` (pure white); reserve \\`{colors.surface-dark}\\` for hero bands only.\n- Pair primary CTAs with \\`{colors.primary}\\` (BMW Blue) + \\`{colors.on-primary}\\` white text + \\`{rounded.none}\\` 0px corners — the corporate signature.\n- Set display headlines in BMW Type Next Latin 700 and body in Light 300. The contrast is non-negotiable.\n- Use UPPERCASE letter-spaced links like \"LEARN MORE\" as inline CTAs.\n- Place the model card photo on \\`{colors.surface-card}\\` with the title beneath — the standard BMW corporate pattern.\n- Hold section rhythm at \\`{spacing.section}\\` (80px) — tighter than BMW M's 96px.\n- Reserve the M tricolor stripe for M-model contexts and motorsport dividers.\n\n### Don't\n- Don't add a brand color other than blue — BMW Blue is the only primary action color.\n- Don't use pill or rounded buttons — \\`{rounded.none}\\` (0px) rectangular IS the brand button.\n- Don't drop display weight to 500 — the system uses 700 / 400 / 300; 500 is absent.\n- Don't bold body type — Light 300 is the BMW corporate editorial voice.\n- Don't add drop shadows to cards — depth comes from photo + color-block contrast.\n- Don't repeat the same surface mode across two consecutive bands — light → dark hero → light → light feature → dark CTA → light footer rotation is required.\n- Don't use the M tricolor stripe as a CTA fill — divider/accent role only.\n- Don't mix languages in a single page — UI language must stay consistent.\n\n## Responsive Behavior\n\n### Breakpoints\n\n| Name | Width | Key Changes |\n|---|---|---|\n| Mobile | < 768px | Hamburger nav; hero h1 64→40px; model card grid 1-up; configurator filter chips 2-up; footer 4 col → 1 col |\n| Tablet | 768–1024px | Top nav narrows, secondary menu hides under \"More\"; model card 2-up; inventory 2-up |\n| Desktop | 1024–1440px | Full top-nav; 4-up or 5-up model card grid; inventory 3-up; full configurator UI |\n| Wide | > 1440px | Same as desktop, content fixed at 1440px; gutters absorb the rest |\n\n### Touch Targets\n- \\`{component.button-primary}\\` minimum 48 × 48px — above WCAG AAA (44 × 44).\n- \\`{component.text-input}\\` height 48px.\n- Category tabs run with 12px vertical padding, giving an effective tap area > 44px.\n\n### Collapsing Strategy\n- The top nav collapses to a hamburger below 768px; the menu opens as a full-screen sheet.\n- The hero band's internal layout drops to a single column.\n- Model card grid 4-up/5-up → 2-up → 1-up.\n- The configurator filter chip row scrolls horizontally on mobile.\n- The M tricolor stripe stays at 4px height across every breakpoint.\n\n### Image Behavior\n- Model renders scale at every breakpoint while preserving native aspect ratios.\n- Hero photography may shift to a more vertical crop on mobile (art direction).\n- Inventory vehicle photos may move from 16:9 to 4:3 on mobile.\n\n## Iteration Guide\n\n1. Focus on a single component. Reference its YAML key directly (\\`{component.model-card}\\`, \\`{component.button-primary}\\`).\n2. New components default to \\`{rounded.none}\\` (0px). Use \\`{rounded.full}\\` only for circular icon buttons.\n3. Variants (\\`-active\\`, \\`-disabled\\`, \\`-selected\\`) live as separate entries inside the \\`components:\\` block.\n4. \\`{token.refs}\\` everywhere — never inline hex.\n5. Hover state is never documented. Only Default and Active/Pressed states.\n6. Display headlines stay BMW Type Next Latin 700; body stays Light 300; the trio is fixed.\n7. Keep UI strings in a single language — match the locale of the page.\n\n## Known Gaps\n\n- BMW Type Next Latin is licensed to BMW and not published as a public web font; Inter at weights 700/300 is documented as the substitute.\n- Animation and transition timings (configurator color swap, model card hover-reveal) are out of scope here.\n- Form validation states beyond \\`{component.text-input}\\` focus were not extracted — error/success states would need a dedicated form page.\n- The dealer inventory sub-domain shares typography and color with the main corporate site; only UI density rises (filters, tables, prices).\n- A cookie consent overlay can occlude part of the hero — the lead hero band content may not be fully captured.\n- The M tricolor stripe appears infrequently on this corporate site; full motorsport context lives on the BMW M site.\n`;\n"],"mappings":";AACO,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -0,0 +1,3 @@
1
+ declare const bugattiBrief = "---\nversion: alpha\nname: Bugatti\ndescription: An austere luxury-automotive interface that uses near-pure black canvas, white uppercase letterspaced display, and full-bleed automotive photography as the only voltage. The system runs three custom Bugatti typefaces \u2014 Bugatti Display, Bugatti Text Regular, and Bugatti Monospace \u2014 and combines them at modest weights with wide tracking to feel European-engineered, hyper-minimal, and quietly expensive. There is no accent color, no decorative element, no chrome \u2014 only photography, typography, and the brand wordmark.\n\ncolors:\n primary: \"#ffffff\"\n ink: \"#ffffff\"\n body: \"#cccccc\"\n body-strong: \"#e6e6e6\"\n muted: \"#999999\"\n muted-soft: \"#666666\"\n hairline: \"#262626\"\n hairline-strong: \"#3a3a3a\"\n canvas: \"#000000\"\n surface-soft: \"#0d0d0d\"\n surface-card: \"#141414\"\n surface-elevated: \"#1f1f1f\"\n on-primary: \"#000000\"\n on-dark: \"#ffffff\"\n on-photo: \"#ffffff\"\n link: \"#c3d9f3\"\n warning: \"#d4a017\"\n success: \"#5fa657\"\n\ntypography:\n display-xl:\n fontFamily: \"Bugatti Display, sans-serif\"\n fontSize: 64px\n fontWeight: 400\n lineHeight: 1.1\n letterSpacing: 4px\n display-lg:\n fontFamily: \"Bugatti Display, sans-serif\"\n fontSize: 48px\n fontWeight: 400\n lineHeight: 1.15\n letterSpacing: 3px\n display-md:\n fontFamily: \"Bugatti Display, sans-serif\"\n fontSize: 32px\n fontWeight: 400\n lineHeight: 1.2\n letterSpacing: 2px\n display-sm:\n fontFamily: \"Bugatti Display, sans-serif\"\n fontSize: 24px\n fontWeight: 400\n lineHeight: 1.3\n letterSpacing: 1.5px\n wordmark:\n fontFamily: \"Bugatti Display, serif\"\n fontSize: 14px\n fontWeight: 400\n lineHeight: 1\n letterSpacing: 6px\n title-md:\n fontFamily: \"Bugatti Display, sans-serif\"\n fontSize: 20px\n fontWeight: 400\n lineHeight: 1.3\n letterSpacing: 1px\n title-sm:\n fontFamily: \"Bugatti Display, sans-serif\"\n fontSize: 16px\n fontWeight: 400\n lineHeight: 1.3\n letterSpacing: 1.5px\n caption-uppercase:\n fontFamily: \"Bugatti Monospace, ui-monospace, monospace\"\n fontSize: 11px\n fontWeight: 400\n lineHeight: 1.4\n letterSpacing: 2px\n body-md:\n fontFamily: \"Bugatti Text Regular, serif\"\n fontSize: 16px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n body-sm:\n fontFamily: \"Bugatti Text Regular, serif\"\n fontSize: 14px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n button:\n fontFamily: \"Bugatti Monospace, ui-monospace, monospace\"\n fontSize: 14px\n fontWeight: 400\n lineHeight: 1\n letterSpacing: 2.5px\n nav-link:\n fontFamily: \"Bugatti Monospace, ui-monospace, monospace\"\n fontSize: 12px\n fontWeight: 400\n lineHeight: 1.4\n letterSpacing: 2px\n\nrounded:\n none: 0px\n pill: 9999px\n full: 9999px\n\nspacing:\n xxs: 4px\n xs: 8px\n sm: 12px\n md: 16px\n lg: 24px\n xl: 40px\n xxl: 64px\n section: 120px\n\ncomponents:\n button-primary:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.pill}\"\n padding: 14px 32px\n height: 44px\n button-icon:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n rounded: \"{rounded.full}\"\n size: 40px\n text-link:\n backgroundColor: transparent\n textColor: \"{colors.link}\"\n typography: \"{typography.button}\"\n top-nav:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.nav-link}\"\n height: 56px\n wordmark-display:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.wordmark}\"\n hero-photo-band:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.display-xl}\"\n padding: 96px\n caption-overlay:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.caption-uppercase}\"\n career-callout-card:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.body-sm}\"\n rounded: \"{rounded.none}\"\n padding: 16px\n width: 320px\n model-photo-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.display-md}\"\n rounded: \"{rounded.none}\"\n newsroom-article-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.none}\"\n padding: 24px\n career-listing-row:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.title-md}\"\n padding: 24px 0\n text-input:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.none}\"\n padding: 12px 0\n height: 44px\n spec-cell:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.title-md}\"\n padding: 24px 0\n date-pill:\n backgroundColor: transparent\n textColor: \"{colors.muted}\"\n typography: \"{typography.caption-uppercase}\"\n category-tag:\n backgroundColor: transparent\n textColor: \"{colors.muted}\"\n typography: \"{typography.caption-uppercase}\"\n cta-band-photo:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.display-md}\"\n padding: 80px\n footer:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.muted}\"\n typography: \"{typography.body-sm}\"\n padding: 64px\n---\n\n## Overview\n\nBugatti's marketing surface is the most austere interface in luxury automotive: a near-pure black canvas (`{colors.canvas}` \u2014 #000000) holding white uppercase **letterspaced** display type and full-bleed automotive photography. The system has no accent color, no surface card decoration, no shadows, no gradients, no chrome \u2014 only **photography, typography, and the brand wordmark**. Every other luxury auto site in this category (BMW M, Aston Martin, Lamborghini) uses some form of accent color or signature element; Bugatti uses nothing. The empty space, the photograph, and the precisely-tracked Bugatti Display headline ARE the brand.\n\nThe system runs **three custom Bugatti typefaces**: **Bugatti Display** (display headlines, the \"BUGATTI\" wordmark, all caps with wide tracking), **Bugatti Text Regular** (body paragraphs, a serif text face), and **Bugatti Monospace** (button labels, navigation, captions, dates \u2014 anywhere precision and machined feel matters). The split is deliberate and unbreakable: never use Bugatti Text in a button, never use Bugatti Monospace in a paragraph.\n\nDisplay sizes use weight 400 (regular) \u2014 never bold. Visual emphasis comes from **size and tracking**, not weight. Letter-spacing on the wordmark is 6px; on display headlines 2-4px; on uppercase labels 2-2.5px. Tight tracking is a brand violation. The wide spacing creates the \"engineered precision\" feel that no other luxury maker matches.\n\n**Key Characteristics:**\n- Pure black canvas (`{colors.canvas}` \u2014 #000000) with white type. The system does not have a light mode.\n- Three custom Bugatti typefaces: **Display** (uppercase headlines + wordmark), **Text Regular** (body serif), **Monospace** (buttons, captions, nav).\n- All display headlines are UPPERCASE with wide letter-spacing (2-4px). Body copy stays sentence-case at standard tracking.\n- No accent color. The only non-monochrome color anywhere on the site is `{colors.link}` (#c3d9f3) \u2014 a desaturated ice-blue used on inline anchor links, and even that appears rarely.\n- Buttons are pill-shaped (`{rounded.pill}`) with **transparent background** and a 1px white outline. Bugatti is the only luxury-auto brand whose primary CTA is fully transparent.\n- Photography is the only depth element. No drop shadows. No gradients. No card surfaces. Surface cards are `{colors.surface-card}` (#141414) at most \u2014 a barely-different-from-black tone.\n- Section rhythm is generous \u2014 `{spacing.section}` (120px) between major bands, longer than most marketing sites because Bugatti's pages are mostly photography with minimal text density.\n\n## Colors\n\n### Brand & Accent\n- **Primary** (`{colors.primary}` \u2014 #ffffff): The single brand color. White type and white CTA outlines on the black canvas.\n- **Link** (`{colors.link}` \u2014 #c3d9f3): The only non-monochrome color in the system \u2014 a desaturated ice-blue used on inline anchor links and rarely on focus states. Bugatti's brand discipline is so tight that this single token is essentially the entire chromatic vocabulary outside black-and-white.\n\n### Surface\n- **Canvas** (`{colors.canvas}` \u2014 #000000): The default page floor across every surface. Pure black.\n- **Surface Soft** (`{colors.surface-soft}` \u2014 #0d0d0d): A barely-different-from-black tone used for spec table rows and dense data sections.\n- **Surface Card** (`{colors.surface-card}` \u2014 #141414): Cards (career callout, newsroom article container, occasional content cards). Even card surfaces stay nearly-black \u2014 no contrast jump.\n- **Surface Elevated** (`{colors.surface-elevated}` \u2014 #1f1f1f): One step further from black, used for nested cards on rare dense pages.\n- **Hairline** (`{colors.hairline}` \u2014 #262626): The 1px divider tone. Visible but quiet. Used on table rows, between body sections, around card outlines.\n- **Hairline Strong** (`{colors.hairline-strong}` \u2014 #3a3a3a): A heavier divider used on the underside of input fields (input fields have no border \u2014 only an underline hairline).\n\n### Text\n- **Ink / On Dark** (`{colors.on-dark}` \u2014 #ffffff): All headline and primary text on dark canvas.\n- **Body** (`{colors.body}` \u2014 #cccccc): Default running-text color (slightly cooler than pure white). Used in body paragraphs.\n- **Body Strong** (`{colors.body-strong}` \u2014 #e6e6e6): Emphasized body / lead paragraph.\n- **Muted** (`{colors.muted}` \u2014 #999999): Footer links, dates, captions, secondary metadata. Dembrandt's frequency analysis confirms this as palette-2 (count 6, medium confidence).\n- **Muted Soft** (`{colors.muted-soft}` \u2014 #666666): A second-tier muted for very-secondary text (legal disclaimer, copyright line).\n\n### Semantic\n- **Warning** (`{colors.warning}` \u2014 #d4a017): Reserved for technical-warning callouts (specifications, recall notices). Almost never appears on marketing surfaces.\n- **Success** (`{colors.success}` \u2014 #5fa657): Order confirmation states (rare on marketing pages).\n\n## Typography\n\n### Font Family\nThe system runs **three custom Bugatti typefaces** as a rigid trinity:\n1. **Bugatti Display** \u2014 All display headlines (h1, h2, h3), the \"BUGATTI\" wordmark, model name plates. Uppercase, wide-tracked. The default for any visual emphasis.\n2. **Bugatti Text Regular** \u2014 A serif text face used exclusively for running body copy, lead paragraphs, model descriptions. Standard sentence-case, no letter-spacing.\n3. **Bugatti Monospace** \u2014 Button labels, navigation, captions, dates, monospace-precision contexts. Always uppercase with 2-2.5px tracking.\n\nThe split is functional and absolute. Bugatti Display in a button breaks the \"machined precision\" voice; Bugatti Monospace in a paragraph breaks the \"engineered elegance\" voice; Bugatti Text in a button is unthinkable.\n\nThe fallback stack walks `-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif` for Bugatti Display, `Garamond, \"Times New Roman\", serif` for Bugatti Text Regular, and `ui-monospace, \"SF Mono\", \"Cascadia Mono\", monospace` for Bugatti Monospace.\n\n### Hierarchy\n\n| Token | Size | Weight | Line Height | Letter Spacing | Use |\n|---|---|---|---|---|---|\n| `{typography.display-xl}` | 64px | 400 | 1.1 | 4px | Hero h1 (\"THE BUGATTI F.K.P. HOMMAGE\", \"TOURBILLON\") \u2014 Bugatti Display, uppercase, wide-tracked |\n| `{typography.display-lg}` | 48px | 400 | 1.15 | 3px | Section heads \u2014 Bugatti Display, uppercase |\n| `{typography.display-md}` | 32px | 400 | 1.2 | 2px | Sub-section heads, model names \u2014 Bugatti Display |\n| `{typography.display-sm}` | 24px | 400 | 1.3 | 1.5px | Card titles \u2014 Bugatti Display |\n| `{typography.wordmark}` | 14px | 400 | 1.0 | 6px | The \"BUGATTI\" brand wordmark in the top nav \u2014 Bugatti Display, the widest tracking in the system |\n| `{typography.title-md}` | 20px | 400 | 1.3 | 1px | Career listing titles, intro paragraphs \u2014 Bugatti Display |\n| `{typography.title-sm}` | 16px | 400 | 1.3 | 1.5px | Mid-tier headlines, callout cards |\n| `{typography.caption-uppercase}` | 11px | 400 | 1.4 | 2px | Photo captions, metadata, \"EXPLORE OUR OPPORTUNITIES\" \u2014 Bugatti Monospace, uppercase |\n| `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Default body \u2014 Bugatti Text Regular (a serif face), sentence case, no tracking |\n| `{typography.body-sm}` | 14px | 400 | 1.5 | 0 | Footer body, fine-print legal \u2014 Bugatti Text Regular |\n| `{typography.button}` | 14px | 400 | 1.0 | 2.5px | All button labels \u2014 Bugatti Monospace, uppercase, 2.5px tracking |\n| `{typography.nav-link}` | 12px | 400 | 1.4 | 2px | Top-nav menu items (\"MENU\", \"STORE\") \u2014 Bugatti Monospace |\n\n### Principles\nThe system NEVER uses bold weight. Every Bugatti typeface is set at weight 400 (regular). Visual emphasis comes from:\n1. **Size** \u2014 64px hero vs 16px body is a 4\u00D7 hierarchy\n2. **Letter-spacing** \u2014 6px wordmark vs 0px body\n3. **Case** \u2014 Uppercase display vs sentence-case body\n4. **Family contrast** \u2014 Display vs Text Regular vs Monospace\n\nGoing to weight 700 anywhere would break the \"modest engineering\" feel and make Bugatti read like a generic luxury template.\n\nThe serif Bugatti Text Regular sets the brand apart from the all-sans luxury crowd (BMW, Aston Martin, Lamborghini all use sans-serif body type). Bugatti's serif body voice signals literary, considered, slow-reading prose \u2014 which is the brand's editorial philosophy.\n\n### Note on Font Substitutes\nIf Bugatti Display, Bugatti Text Regular, and Bugatti Monospace are unavailable, the closest open-source substitutes are:\n- **Bugatti Display** \u2192 **Saira Condensed** (variable, weight 400) at +0.05em letter-spacing\n- **Bugatti Text Regular** \u2192 **Cormorant Garamond** (regular) or **EB Garamond**\n- **Bugatti Monospace** \u2192 **JetBrains Mono** or **IBM Plex Mono** (regular weight)\n\nThe substitution preserves the three-family split, which is more important than exact typeface match.\n\n## Layout\n\n### Spacing System\n- **Base unit:** 4px.\n- **Tokens:** `{spacing.xxs}` 4px \u00B7 `{spacing.xs}` 8px \u00B7 `{spacing.sm}` 12px \u00B7 `{spacing.md}` 16px \u00B7 `{spacing.lg}` 24px \u00B7 `{spacing.xl}` 40px \u00B7 `{spacing.xxl}` 64px \u00B7 `{spacing.section}` 120px.\n- **Section padding:** `{spacing.section}` (120px) \u2014 longer than most marketing sites because Bugatti's bands are mostly photography with minimal text. The empty space frames the cars.\n- **Card internal padding:** `{spacing.lg}` (24px) for newsroom and content cards; `{spacing.md}` (16px) for the career callout card; `{spacing.xxl}` (64px) inside hero photo bands.\n- **Gutters:** `{spacing.xl}` (40px) between cards in 2-up grids \u2014 wider than typical because Bugatti's grids are sparse.\n\n### Grid & Container\n- **Max content width:** ~1280px centered. Hero photo bands bleed full-width with no max.\n- **Editorial body:** Single 12-column grid; photo bands are full-bleed.\n- **Newsroom layout:** 2-up article grid at desktop, 1-up at tablet+mobile.\n- **Career listings:** Single column with 80px row spacing.\n\n### Whitespace Philosophy\nBugatti uses whitespace more aggressively than any luxury-auto competitor. The homepage hero is mostly photography + huge whitespace + a single sentence + a single button. The empty black space below the photograph is intentional \u2014 it lets the car breathe. Compressing the whitespace to \"fit more content\" breaks the brand's fundamental contract: that less is more.\n\n## Elevation & Depth\n\n| Level | Treatment | Use |\n|---|---|---|\n| Flat | No shadow, no border | Body, top nav, footer, photo bands |\n| Soft hairline | 1px `{colors.hairline}` border | Section dividers, table rows |\n| Card surface | `{colors.surface-card}` background \u2014 no shadow | Career callout, newsroom article container |\n| Photographic depth | Full-bleed photography with edge-to-edge crop | Hero bands, model showcases \u2014 depth via subject + lens, not chrome |\n\nThe system uses no shadows, no glassmorphism, no gradients. Depth comes entirely from photography (lighting, lens, subject framing) and from the contrast between black canvas and minimally-elevated `{colors.surface-card}`.\n\n### Decorative Depth\n- None. Bugatti is the only luxury-auto brand without a single decorative element. There is no stripe, no badge, no heritage emblem on the marketing site outside the wordmark itself.\n\n## Shapes\n\n### Border Radius Scale\n\n| Token | Value | Use |\n|---|---|---|\n| `{rounded.none}` | 0px | All cards, photo containers, inputs, spec cells \u2014 the dominant radius |\n| `{rounded.pill}` | 9999px | All buttons (the only rounded element in the system) |\n| `{rounded.full}` | 9999px / 50% | Circular icon buttons, avatar surfaces |\n\nThe radius hierarchy is binary: rectangular for everything except buttons, which are pills. No 4px, no 8px, no 12px in between \u2014 those would feel \"designed\" rather than \"engineered.\"\n\n### Photography Geometry\nHero photography fills full-width with no rounding. Photo cards inside grids retain `{rounded.none}` (0px) corners, edge-to-edge images. Model detail shots use 16:9 or wider cinema-aspect ratios. Newsroom thumbnails use 16:9 with 0px corners. There are no avatars or rounded photo crops anywhere on the marketing site.\n\n## Components\n\n### Top Navigation\n\n**`top-nav`** \u2014 A 56px-tall transparent nav bar overlaid on the hero photo at the top of every page. No fill, no border. Carries \"MENU\" at left, the centered **wordmark-display** (\"BUGATTI\" in 14px Bugatti Display with 6px tracking), and \"STORE\" at right with a small bag icon. All labels in `{typography.nav-link}` (Bugatti Monospace, 12px, 2px tracking, uppercase).\n\n**`wordmark-display`** \u2014 The \"BUGATTI\" wordmark itself. Bugatti Display at 14px, weight 400, 6px letter-spacing. The widest tracking in the system. Centered in the nav bar at every breakpoint.\n\n### Buttons\n\n**`button-primary`** \u2014 The signature primary CTA. Background **transparent**, text `{colors.on-dark}` (white), 1px white outline, rounded `{rounded.pill}` (9999px), padding 14px \u00D7 32px, height 44px. Type `{typography.button}` \u2014 Bugatti Monospace, uppercase, 14px, 2.5px tracking. The transparent fill is unique to Bugatti \u2014 every other luxury-auto brand uses a filled or outlined-with-text-shift button. Bugatti's transparent pill IS the button.\n\n**`button-icon`** \u2014 Circular icon buttons (carousel arrows, share, language switcher). 40 \u00D7 40px, transparent background, white outline 1px, rounded `{rounded.full}`. Same outline-only treatment as the primary button.\n\n**`text-link`** \u2014 Inline body links in `{colors.link}` (#c3d9f3, the only non-monochrome color in the system). Underlined by default. Type inherits `{typography.body-md}` (Bugatti Text Regular, serif).\n\n### Cards & Containers\n\n**`hero-photo-band`** \u2014 Full-width black band with full-bleed automotive photography. The h1 in `{typography.display-xl}` sits center-aligned over the photo near the top, often paired with a small Bugatti Monospace caption (`{typography.caption-uppercase}`) below the headline and a single `{component.button-primary}` further down. Vertical padding 96px-200px depending on photo height.\n\n**`career-callout-card`** \u2014 A small right-aligned card that floats over the hero photo on the homepage with a recruiting prompt (\"Are you ready for a new adventure?\"). Background `{colors.surface-card}`, rounded `{rounded.none}` (0px), padding `{spacing.md}` (16px), width 320px. Carries a small thumbnail at top, body line, and a `{typography.caption-uppercase}` link (\"EXPLORE OUR OPPORTUNITIES\").\n\n**`model-photo-card`** \u2014 Used in model showcases (Tourbillon page, model lineup grid). Background `{colors.canvas}` (no card surface \u2014 just photo on black), rounded `{rounded.none}`. Top: 16:9 or 21:9 hero shot of the model. Below: model name in `{typography.display-md}` (32px Bugatti Display, 2px tracking), short specs line in `{typography.caption-uppercase}` (11px Bugatti Monospace), a `{component.text-link}` (\"DISCOVER\").\n\n**`newsroom-article-card`** \u2014 Used on the newsroom page (newsroom.bugatti.com). Background `{colors.canvas}` with hairline border, rounded `{rounded.none}`, padding `{spacing.lg}` (24px). Carries a 16:9 thumbnail, a `{component.date-pill}` (\"12. NOVEMBER 2025\"), a `{typography.title-md}` headline, and a body excerpt in `{typography.body-md}` (Bugatti Text Regular serif).\n\n**`career-listing-row`** \u2014 Each row of the careers page job listing. Transparent background, padding 24px vertical, hairline divider between rows. Job title in `{typography.title-md}` (Bugatti Display 20px) at left; location + department in `{typography.caption-uppercase}` at right; chevron arrow (\u2192) at far right.\n\n**`spec-cell`** \u2014 Vehicle technical-spec display on model-detail pages (Tourbillon engine specs). Transparent background with hairline dividers between cells (not between cells inside a card). Each spec shows a value in `{typography.title-md}` at top and a label in `{typography.caption-uppercase}` below. Padding 24px vertical.\n\n### Inputs & Forms\n\n**`text-input`** \u2014 Standard text input on dark canvas. Background **transparent**, text `{colors.on-dark}`, 1px hairline-strong bottom border only (no top, left, right border), padding 12px \u00D7 0px, height 44px. Type `{typography.body-md}` (Bugatti Text Regular). Placeholder in `{colors.muted}`. Focus thickens the bottom border to white.\n\n### Tags & Captions\n\n**`caption-overlay`** \u2014 Photo-overlay caption (e.g., \"HONORING THE OEYRON AND ITS VISIONARY CREATOR\"). Centered or left-aligned over photography in `{typography.caption-uppercase}` (Bugatti Monospace, 11px, 2px tracking, white).\n\n**`category-tag`** + **`date-pill`** \u2014 Both render as transparent inline labels in `{typography.caption-uppercase}`, color `{colors.muted}`. No background fill, no border. The \"tag\" is the type itself.\n\n### CTA / Footer\n\n**`cta-band-photo`** \u2014 A pre-footer \"Discover Bugatti\" band with full-bleed photography of a Bugatti car at speed and a centered headline in `{typography.display-md}` + a `{component.button-primary}` below. Vertical padding 80px. Inherits the editorial gravity of the hero through full-bleed photography.\n\n**`footer`** \u2014 Black footer that closes every page. Background `{colors.canvas}`, text `{colors.muted}`. 4-column link list at desktop covering Bugatti / Models / Heritage / Connect. Vertical padding 64px. Bottom row carries the copyright line in `{typography.body-sm}` (Bugatti Text Regular). The wordmark sits center-aligned at the very bottom. The footer never inverts.\n\n## Do's and Don'ts\n\n### Do\n- Anchor every page with full-bleed automotive photography. The cars are the brand voltage; chrome backs off entirely.\n- Keep all display headlines in UPPERCASE Bugatti Display with 2-4px letter-spacing. The wordmark gets 6px.\n- Use Bugatti Display for headlines, Bugatti Text Regular (serif!) for body, Bugatti Monospace for buttons + captions + nav. The trinity is unbreakable.\n- Keep `{component.button-primary}` transparent with a 1px white outline. The transparent pill IS the brand button.\n- Use weight 400 everywhere. Bold breaks the brand voice \u2014 the system has no bold weight role.\n- Use `{spacing.section}` (120px) between major editorial bands. The whitespace is part of the brand.\n- Reserve `{colors.link}` (#c3d9f3) for inline anchor links only. It's the system's only non-monochrome color.\n\n### Don't\n- Don't introduce any accent color outside `{colors.link}`. Bugatti's brand discipline is total monochrome + photography. Adding a brand-blue or brand-red breaks the contract.\n- Don't bold any type. The system has no bold weight \u2014 every typeface stays at 400.\n- Don't fill primary buttons. Transparent + outline only. A solid white button reads as off-brand.\n- Don't compress whitespace between sections. The 120px rhythm is part of the editorial pacing.\n- Don't use rounded corners outside buttons. Cards, photos, inputs all stay at 0px. Rounded cards read as consumer-tech, not luxury-engineered.\n- Don't tighten letter-spacing on display headlines. 2-4px tracking on Bugatti Display is non-negotiable.\n- Don't use Bugatti Display in a button (use Bugatti Monospace) or Bugatti Monospace in a paragraph (use Bugatti Text Regular). The trinity split is the brand voice.\n\n## Responsive Behavior\n\n### Breakpoints\n\n| Name | Width | Key Changes |\n|---|---|---|\n| Mobile | < 768px | Hamburger nav; hero h1 64\u219232px; career callout card hides; photo bands stay full-bleed; footer 4 cols \u2192 1 |\n| Tablet | 768\u20131024px | Top nav stays minimal (MENU + wordmark + STORE); 2-up newsroom grid; career rows full-width |\n| Desktop | 1024\u20131440px | Full minimal top-nav; 2-up newsroom grid; spec tables 4-up |\n| Wide | > 1440px | Same as desktop with more breathing room; max content 1280px |\n\n### Touch Targets\n- `{component.button-primary}` renders at minimum 44 \u00D7 44px (matches WCAG AAA).\n- `{component.button-icon}` is exactly 40 \u00D7 40px.\n- `{component.text-input}` height is 44px.\n- Career listing rows have 24px vertical padding; effective tap area meets 44px+ with surrounding spacing.\n\n### Collapsing Strategy\n- Top nav stays minimal at all breakpoints (MENU label + wordmark + STORE label). On mobile the labels hide behind a hamburger but the wordmark stays centered.\n- Hero photography stays full-bleed at every breakpoint. Photo crops adjust \u2014 wider crops at desktop, vertical crops on mobile.\n- The career callout card on the homepage hides at < 768px (it's a desktop-only floating element).\n- 2-up newsroom grid collapses to 1-up at < 768px.\n- Spec cells reflow from 4-up to 2-up to 1-up; values stay at the same display size regardless of column count.\n\n### Image Behavior\n- Hero photography crops responsively \u2014 wider crops at desktop, vertical crops on mobile. Bugatti cars are always shown in motion or at-angle (never flat profiles).\n- Newsroom thumbnails retain 16:9 ratio and 0px corners.\n\n## Iteration Guide\n\n1. Focus on ONE component at a time. Reference its YAML key (`{component.hero-photo-band}`, `{component.career-callout-card}`).\n2. New components default to `{rounded.none}` (0px). Only `{component.button-primary}` and `{component.button-icon}` use pill / full radius.\n3. Variants live as separate entries in `components:`.\n4. Use `{token.refs}` everywhere \u2014 never inline hex.\n5. Never document hover. Default and Active/Pressed states only.\n6. Display headlines stay UPPERCASE Bugatti Display 400 with 2-4px tracking. Body stays sentence-case Bugatti Text Regular (serif). Button labels stay Bugatti Monospace 2.5px tracking. The trinity does not blur.\n7. When in doubt about emphasis: bigger photography before bigger type.\n\n## Known Gaps\n\n- The dembrandt frequency analyzer captured only 3 colors at root level (`#000000`, `#999999`, `#c3d9f3`). The white text (#ffffff) and dark surface tones (`#0d0d0d`, `#141414`, `#1f1f1f`) were inferred from screenshot \u2014 Bugatti's pages are so monochrome that the frequency-based analyzer didn't surface body text or surface tones as distinct palette entries.\n- The three Bugatti typefaces (Display, Text Regular, Monospace) are licensed to Bugatti and not available as web fonts publicly. Substitutes are documented in the typography section.\n- Animation and transition timings (photo carousel transitions, hover-reveal of menu, configurator animations) are not in scope.\n- Form validation states beyond the underline-only `{component.text-input}` are not extracted \u2014 error / success states are inferred from general standards, not from the analyzed surfaces.\n- The configurator surface (vehicle build pages with custom paint / interior pickers) was not in the analyzed URL set; its swatch grid, customization controls, and price-summary card are not documented here.\n- The German-language newsroom (newsroom.bugatti.com/de) shares the system with the English Bugatti.com surfaces \u2014 no design-system-level differences observed, only language localization.\n- The actual Tourbillon page rendered as a sparse minimal page in the captured screenshot, suggesting either lazy-loaded content or an interactive configurator-style UI that doesn't render fully in static screenshots; engine-spec layout is documented from general luxury-auto patterns informed by the captured spec cell tokens.\n";
2
+
3
+ export { bugattiBrief };
@@ -0,0 +1,460 @@
1
+ // src/presets/_briefs/bugatti.ts
2
+ var bugattiBrief = `---
3
+ version: alpha
4
+ name: Bugatti
5
+ description: An austere luxury-automotive interface that uses near-pure black canvas, white uppercase letterspaced display, and full-bleed automotive photography as the only voltage. The system runs three custom Bugatti typefaces \u2014 Bugatti Display, Bugatti Text Regular, and Bugatti Monospace \u2014 and combines them at modest weights with wide tracking to feel European-engineered, hyper-minimal, and quietly expensive. There is no accent color, no decorative element, no chrome \u2014 only photography, typography, and the brand wordmark.
6
+
7
+ colors:
8
+ primary: "#ffffff"
9
+ ink: "#ffffff"
10
+ body: "#cccccc"
11
+ body-strong: "#e6e6e6"
12
+ muted: "#999999"
13
+ muted-soft: "#666666"
14
+ hairline: "#262626"
15
+ hairline-strong: "#3a3a3a"
16
+ canvas: "#000000"
17
+ surface-soft: "#0d0d0d"
18
+ surface-card: "#141414"
19
+ surface-elevated: "#1f1f1f"
20
+ on-primary: "#000000"
21
+ on-dark: "#ffffff"
22
+ on-photo: "#ffffff"
23
+ link: "#c3d9f3"
24
+ warning: "#d4a017"
25
+ success: "#5fa657"
26
+
27
+ typography:
28
+ display-xl:
29
+ fontFamily: "Bugatti Display, sans-serif"
30
+ fontSize: 64px
31
+ fontWeight: 400
32
+ lineHeight: 1.1
33
+ letterSpacing: 4px
34
+ display-lg:
35
+ fontFamily: "Bugatti Display, sans-serif"
36
+ fontSize: 48px
37
+ fontWeight: 400
38
+ lineHeight: 1.15
39
+ letterSpacing: 3px
40
+ display-md:
41
+ fontFamily: "Bugatti Display, sans-serif"
42
+ fontSize: 32px
43
+ fontWeight: 400
44
+ lineHeight: 1.2
45
+ letterSpacing: 2px
46
+ display-sm:
47
+ fontFamily: "Bugatti Display, sans-serif"
48
+ fontSize: 24px
49
+ fontWeight: 400
50
+ lineHeight: 1.3
51
+ letterSpacing: 1.5px
52
+ wordmark:
53
+ fontFamily: "Bugatti Display, serif"
54
+ fontSize: 14px
55
+ fontWeight: 400
56
+ lineHeight: 1
57
+ letterSpacing: 6px
58
+ title-md:
59
+ fontFamily: "Bugatti Display, sans-serif"
60
+ fontSize: 20px
61
+ fontWeight: 400
62
+ lineHeight: 1.3
63
+ letterSpacing: 1px
64
+ title-sm:
65
+ fontFamily: "Bugatti Display, sans-serif"
66
+ fontSize: 16px
67
+ fontWeight: 400
68
+ lineHeight: 1.3
69
+ letterSpacing: 1.5px
70
+ caption-uppercase:
71
+ fontFamily: "Bugatti Monospace, ui-monospace, monospace"
72
+ fontSize: 11px
73
+ fontWeight: 400
74
+ lineHeight: 1.4
75
+ letterSpacing: 2px
76
+ body-md:
77
+ fontFamily: "Bugatti Text Regular, serif"
78
+ fontSize: 16px
79
+ fontWeight: 400
80
+ lineHeight: 1.5
81
+ letterSpacing: 0
82
+ body-sm:
83
+ fontFamily: "Bugatti Text Regular, serif"
84
+ fontSize: 14px
85
+ fontWeight: 400
86
+ lineHeight: 1.5
87
+ letterSpacing: 0
88
+ button:
89
+ fontFamily: "Bugatti Monospace, ui-monospace, monospace"
90
+ fontSize: 14px
91
+ fontWeight: 400
92
+ lineHeight: 1
93
+ letterSpacing: 2.5px
94
+ nav-link:
95
+ fontFamily: "Bugatti Monospace, ui-monospace, monospace"
96
+ fontSize: 12px
97
+ fontWeight: 400
98
+ lineHeight: 1.4
99
+ letterSpacing: 2px
100
+
101
+ rounded:
102
+ none: 0px
103
+ pill: 9999px
104
+ full: 9999px
105
+
106
+ spacing:
107
+ xxs: 4px
108
+ xs: 8px
109
+ sm: 12px
110
+ md: 16px
111
+ lg: 24px
112
+ xl: 40px
113
+ xxl: 64px
114
+ section: 120px
115
+
116
+ components:
117
+ button-primary:
118
+ backgroundColor: transparent
119
+ textColor: "{colors.on-dark}"
120
+ typography: "{typography.button}"
121
+ rounded: "{rounded.pill}"
122
+ padding: 14px 32px
123
+ height: 44px
124
+ button-icon:
125
+ backgroundColor: transparent
126
+ textColor: "{colors.on-dark}"
127
+ rounded: "{rounded.full}"
128
+ size: 40px
129
+ text-link:
130
+ backgroundColor: transparent
131
+ textColor: "{colors.link}"
132
+ typography: "{typography.button}"
133
+ top-nav:
134
+ backgroundColor: transparent
135
+ textColor: "{colors.on-dark}"
136
+ typography: "{typography.nav-link}"
137
+ height: 56px
138
+ wordmark-display:
139
+ backgroundColor: transparent
140
+ textColor: "{colors.on-dark}"
141
+ typography: "{typography.wordmark}"
142
+ hero-photo-band:
143
+ backgroundColor: "{colors.canvas}"
144
+ textColor: "{colors.on-dark}"
145
+ typography: "{typography.display-xl}"
146
+ padding: 96px
147
+ caption-overlay:
148
+ backgroundColor: transparent
149
+ textColor: "{colors.on-dark}"
150
+ typography: "{typography.caption-uppercase}"
151
+ career-callout-card:
152
+ backgroundColor: "{colors.surface-card}"
153
+ textColor: "{colors.on-dark}"
154
+ typography: "{typography.body-sm}"
155
+ rounded: "{rounded.none}"
156
+ padding: 16px
157
+ width: 320px
158
+ model-photo-card:
159
+ backgroundColor: "{colors.canvas}"
160
+ textColor: "{colors.on-dark}"
161
+ typography: "{typography.display-md}"
162
+ rounded: "{rounded.none}"
163
+ newsroom-article-card:
164
+ backgroundColor: "{colors.canvas}"
165
+ textColor: "{colors.on-dark}"
166
+ typography: "{typography.title-md}"
167
+ rounded: "{rounded.none}"
168
+ padding: 24px
169
+ career-listing-row:
170
+ backgroundColor: transparent
171
+ textColor: "{colors.on-dark}"
172
+ typography: "{typography.title-md}"
173
+ padding: 24px 0
174
+ text-input:
175
+ backgroundColor: transparent
176
+ textColor: "{colors.on-dark}"
177
+ typography: "{typography.body-md}"
178
+ rounded: "{rounded.none}"
179
+ padding: 12px 0
180
+ height: 44px
181
+ spec-cell:
182
+ backgroundColor: transparent
183
+ textColor: "{colors.on-dark}"
184
+ typography: "{typography.title-md}"
185
+ padding: 24px 0
186
+ date-pill:
187
+ backgroundColor: transparent
188
+ textColor: "{colors.muted}"
189
+ typography: "{typography.caption-uppercase}"
190
+ category-tag:
191
+ backgroundColor: transparent
192
+ textColor: "{colors.muted}"
193
+ typography: "{typography.caption-uppercase}"
194
+ cta-band-photo:
195
+ backgroundColor: "{colors.canvas}"
196
+ textColor: "{colors.on-dark}"
197
+ typography: "{typography.display-md}"
198
+ padding: 80px
199
+ footer:
200
+ backgroundColor: "{colors.canvas}"
201
+ textColor: "{colors.muted}"
202
+ typography: "{typography.body-sm}"
203
+ padding: 64px
204
+ ---
205
+
206
+ ## Overview
207
+
208
+ Bugatti's marketing surface is the most austere interface in luxury automotive: a near-pure black canvas (\`{colors.canvas}\` \u2014 #000000) holding white uppercase **letterspaced** display type and full-bleed automotive photography. The system has no accent color, no surface card decoration, no shadows, no gradients, no chrome \u2014 only **photography, typography, and the brand wordmark**. Every other luxury auto site in this category (BMW M, Aston Martin, Lamborghini) uses some form of accent color or signature element; Bugatti uses nothing. The empty space, the photograph, and the precisely-tracked Bugatti Display headline ARE the brand.
209
+
210
+ The system runs **three custom Bugatti typefaces**: **Bugatti Display** (display headlines, the "BUGATTI" wordmark, all caps with wide tracking), **Bugatti Text Regular** (body paragraphs, a serif text face), and **Bugatti Monospace** (button labels, navigation, captions, dates \u2014 anywhere precision and machined feel matters). The split is deliberate and unbreakable: never use Bugatti Text in a button, never use Bugatti Monospace in a paragraph.
211
+
212
+ Display sizes use weight 400 (regular) \u2014 never bold. Visual emphasis comes from **size and tracking**, not weight. Letter-spacing on the wordmark is 6px; on display headlines 2-4px; on uppercase labels 2-2.5px. Tight tracking is a brand violation. The wide spacing creates the "engineered precision" feel that no other luxury maker matches.
213
+
214
+ **Key Characteristics:**
215
+ - Pure black canvas (\`{colors.canvas}\` \u2014 #000000) with white type. The system does not have a light mode.
216
+ - Three custom Bugatti typefaces: **Display** (uppercase headlines + wordmark), **Text Regular** (body serif), **Monospace** (buttons, captions, nav).
217
+ - All display headlines are UPPERCASE with wide letter-spacing (2-4px). Body copy stays sentence-case at standard tracking.
218
+ - No accent color. The only non-monochrome color anywhere on the site is \`{colors.link}\` (#c3d9f3) \u2014 a desaturated ice-blue used on inline anchor links, and even that appears rarely.
219
+ - Buttons are pill-shaped (\`{rounded.pill}\`) with **transparent background** and a 1px white outline. Bugatti is the only luxury-auto brand whose primary CTA is fully transparent.
220
+ - Photography is the only depth element. No drop shadows. No gradients. No card surfaces. Surface cards are \`{colors.surface-card}\` (#141414) at most \u2014 a barely-different-from-black tone.
221
+ - Section rhythm is generous \u2014 \`{spacing.section}\` (120px) between major bands, longer than most marketing sites because Bugatti's pages are mostly photography with minimal text density.
222
+
223
+ ## Colors
224
+
225
+ ### Brand & Accent
226
+ - **Primary** (\`{colors.primary}\` \u2014 #ffffff): The single brand color. White type and white CTA outlines on the black canvas.
227
+ - **Link** (\`{colors.link}\` \u2014 #c3d9f3): The only non-monochrome color in the system \u2014 a desaturated ice-blue used on inline anchor links and rarely on focus states. Bugatti's brand discipline is so tight that this single token is essentially the entire chromatic vocabulary outside black-and-white.
228
+
229
+ ### Surface
230
+ - **Canvas** (\`{colors.canvas}\` \u2014 #000000): The default page floor across every surface. Pure black.
231
+ - **Surface Soft** (\`{colors.surface-soft}\` \u2014 #0d0d0d): A barely-different-from-black tone used for spec table rows and dense data sections.
232
+ - **Surface Card** (\`{colors.surface-card}\` \u2014 #141414): Cards (career callout, newsroom article container, occasional content cards). Even card surfaces stay nearly-black \u2014 no contrast jump.
233
+ - **Surface Elevated** (\`{colors.surface-elevated}\` \u2014 #1f1f1f): One step further from black, used for nested cards on rare dense pages.
234
+ - **Hairline** (\`{colors.hairline}\` \u2014 #262626): The 1px divider tone. Visible but quiet. Used on table rows, between body sections, around card outlines.
235
+ - **Hairline Strong** (\`{colors.hairline-strong}\` \u2014 #3a3a3a): A heavier divider used on the underside of input fields (input fields have no border \u2014 only an underline hairline).
236
+
237
+ ### Text
238
+ - **Ink / On Dark** (\`{colors.on-dark}\` \u2014 #ffffff): All headline and primary text on dark canvas.
239
+ - **Body** (\`{colors.body}\` \u2014 #cccccc): Default running-text color (slightly cooler than pure white). Used in body paragraphs.
240
+ - **Body Strong** (\`{colors.body-strong}\` \u2014 #e6e6e6): Emphasized body / lead paragraph.
241
+ - **Muted** (\`{colors.muted}\` \u2014 #999999): Footer links, dates, captions, secondary metadata. Dembrandt's frequency analysis confirms this as palette-2 (count 6, medium confidence).
242
+ - **Muted Soft** (\`{colors.muted-soft}\` \u2014 #666666): A second-tier muted for very-secondary text (legal disclaimer, copyright line).
243
+
244
+ ### Semantic
245
+ - **Warning** (\`{colors.warning}\` \u2014 #d4a017): Reserved for technical-warning callouts (specifications, recall notices). Almost never appears on marketing surfaces.
246
+ - **Success** (\`{colors.success}\` \u2014 #5fa657): Order confirmation states (rare on marketing pages).
247
+
248
+ ## Typography
249
+
250
+ ### Font Family
251
+ The system runs **three custom Bugatti typefaces** as a rigid trinity:
252
+ 1. **Bugatti Display** \u2014 All display headlines (h1, h2, h3), the "BUGATTI" wordmark, model name plates. Uppercase, wide-tracked. The default for any visual emphasis.
253
+ 2. **Bugatti Text Regular** \u2014 A serif text face used exclusively for running body copy, lead paragraphs, model descriptions. Standard sentence-case, no letter-spacing.
254
+ 3. **Bugatti Monospace** \u2014 Button labels, navigation, captions, dates, monospace-precision contexts. Always uppercase with 2-2.5px tracking.
255
+
256
+ The split is functional and absolute. Bugatti Display in a button breaks the "machined precision" voice; Bugatti Monospace in a paragraph breaks the "engineered elegance" voice; Bugatti Text in a button is unthinkable.
257
+
258
+ The fallback stack walks \`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif\` for Bugatti Display, \`Garamond, "Times New Roman", serif\` for Bugatti Text Regular, and \`ui-monospace, "SF Mono", "Cascadia Mono", monospace\` for Bugatti Monospace.
259
+
260
+ ### Hierarchy
261
+
262
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
263
+ |---|---|---|---|---|---|
264
+ | \`{typography.display-xl}\` | 64px | 400 | 1.1 | 4px | Hero h1 ("THE BUGATTI F.K.P. HOMMAGE", "TOURBILLON") \u2014 Bugatti Display, uppercase, wide-tracked |
265
+ | \`{typography.display-lg}\` | 48px | 400 | 1.15 | 3px | Section heads \u2014 Bugatti Display, uppercase |
266
+ | \`{typography.display-md}\` | 32px | 400 | 1.2 | 2px | Sub-section heads, model names \u2014 Bugatti Display |
267
+ | \`{typography.display-sm}\` | 24px | 400 | 1.3 | 1.5px | Card titles \u2014 Bugatti Display |
268
+ | \`{typography.wordmark}\` | 14px | 400 | 1.0 | 6px | The "BUGATTI" brand wordmark in the top nav \u2014 Bugatti Display, the widest tracking in the system |
269
+ | \`{typography.title-md}\` | 20px | 400 | 1.3 | 1px | Career listing titles, intro paragraphs \u2014 Bugatti Display |
270
+ | \`{typography.title-sm}\` | 16px | 400 | 1.3 | 1.5px | Mid-tier headlines, callout cards |
271
+ | \`{typography.caption-uppercase}\` | 11px | 400 | 1.4 | 2px | Photo captions, metadata, "EXPLORE OUR OPPORTUNITIES" \u2014 Bugatti Monospace, uppercase |
272
+ | \`{typography.body-md}\` | 16px | 400 | 1.5 | 0 | Default body \u2014 Bugatti Text Regular (a serif face), sentence case, no tracking |
273
+ | \`{typography.body-sm}\` | 14px | 400 | 1.5 | 0 | Footer body, fine-print legal \u2014 Bugatti Text Regular |
274
+ | \`{typography.button}\` | 14px | 400 | 1.0 | 2.5px | All button labels \u2014 Bugatti Monospace, uppercase, 2.5px tracking |
275
+ | \`{typography.nav-link}\` | 12px | 400 | 1.4 | 2px | Top-nav menu items ("MENU", "STORE") \u2014 Bugatti Monospace |
276
+
277
+ ### Principles
278
+ The system NEVER uses bold weight. Every Bugatti typeface is set at weight 400 (regular). Visual emphasis comes from:
279
+ 1. **Size** \u2014 64px hero vs 16px body is a 4\xD7 hierarchy
280
+ 2. **Letter-spacing** \u2014 6px wordmark vs 0px body
281
+ 3. **Case** \u2014 Uppercase display vs sentence-case body
282
+ 4. **Family contrast** \u2014 Display vs Text Regular vs Monospace
283
+
284
+ Going to weight 700 anywhere would break the "modest engineering" feel and make Bugatti read like a generic luxury template.
285
+
286
+ The serif Bugatti Text Regular sets the brand apart from the all-sans luxury crowd (BMW, Aston Martin, Lamborghini all use sans-serif body type). Bugatti's serif body voice signals literary, considered, slow-reading prose \u2014 which is the brand's editorial philosophy.
287
+
288
+ ### Note on Font Substitutes
289
+ If Bugatti Display, Bugatti Text Regular, and Bugatti Monospace are unavailable, the closest open-source substitutes are:
290
+ - **Bugatti Display** \u2192 **Saira Condensed** (variable, weight 400) at +0.05em letter-spacing
291
+ - **Bugatti Text Regular** \u2192 **Cormorant Garamond** (regular) or **EB Garamond**
292
+ - **Bugatti Monospace** \u2192 **JetBrains Mono** or **IBM Plex Mono** (regular weight)
293
+
294
+ The substitution preserves the three-family split, which is more important than exact typeface match.
295
+
296
+ ## Layout
297
+
298
+ ### Spacing System
299
+ - **Base unit:** 4px.
300
+ - **Tokens:** \`{spacing.xxs}\` 4px \xB7 \`{spacing.xs}\` 8px \xB7 \`{spacing.sm}\` 12px \xB7 \`{spacing.md}\` 16px \xB7 \`{spacing.lg}\` 24px \xB7 \`{spacing.xl}\` 40px \xB7 \`{spacing.xxl}\` 64px \xB7 \`{spacing.section}\` 120px.
301
+ - **Section padding:** \`{spacing.section}\` (120px) \u2014 longer than most marketing sites because Bugatti's bands are mostly photography with minimal text. The empty space frames the cars.
302
+ - **Card internal padding:** \`{spacing.lg}\` (24px) for newsroom and content cards; \`{spacing.md}\` (16px) for the career callout card; \`{spacing.xxl}\` (64px) inside hero photo bands.
303
+ - **Gutters:** \`{spacing.xl}\` (40px) between cards in 2-up grids \u2014 wider than typical because Bugatti's grids are sparse.
304
+
305
+ ### Grid & Container
306
+ - **Max content width:** ~1280px centered. Hero photo bands bleed full-width with no max.
307
+ - **Editorial body:** Single 12-column grid; photo bands are full-bleed.
308
+ - **Newsroom layout:** 2-up article grid at desktop, 1-up at tablet+mobile.
309
+ - **Career listings:** Single column with 80px row spacing.
310
+
311
+ ### Whitespace Philosophy
312
+ Bugatti uses whitespace more aggressively than any luxury-auto competitor. The homepage hero is mostly photography + huge whitespace + a single sentence + a single button. The empty black space below the photograph is intentional \u2014 it lets the car breathe. Compressing the whitespace to "fit more content" breaks the brand's fundamental contract: that less is more.
313
+
314
+ ## Elevation & Depth
315
+
316
+ | Level | Treatment | Use |
317
+ |---|---|---|
318
+ | Flat | No shadow, no border | Body, top nav, footer, photo bands |
319
+ | Soft hairline | 1px \`{colors.hairline}\` border | Section dividers, table rows |
320
+ | Card surface | \`{colors.surface-card}\` background \u2014 no shadow | Career callout, newsroom article container |
321
+ | Photographic depth | Full-bleed photography with edge-to-edge crop | Hero bands, model showcases \u2014 depth via subject + lens, not chrome |
322
+
323
+ The system uses no shadows, no glassmorphism, no gradients. Depth comes entirely from photography (lighting, lens, subject framing) and from the contrast between black canvas and minimally-elevated \`{colors.surface-card}\`.
324
+
325
+ ### Decorative Depth
326
+ - None. Bugatti is the only luxury-auto brand without a single decorative element. There is no stripe, no badge, no heritage emblem on the marketing site outside the wordmark itself.
327
+
328
+ ## Shapes
329
+
330
+ ### Border Radius Scale
331
+
332
+ | Token | Value | Use |
333
+ |---|---|---|
334
+ | \`{rounded.none}\` | 0px | All cards, photo containers, inputs, spec cells \u2014 the dominant radius |
335
+ | \`{rounded.pill}\` | 9999px | All buttons (the only rounded element in the system) |
336
+ | \`{rounded.full}\` | 9999px / 50% | Circular icon buttons, avatar surfaces |
337
+
338
+ The radius hierarchy is binary: rectangular for everything except buttons, which are pills. No 4px, no 8px, no 12px in between \u2014 those would feel "designed" rather than "engineered."
339
+
340
+ ### Photography Geometry
341
+ Hero photography fills full-width with no rounding. Photo cards inside grids retain \`{rounded.none}\` (0px) corners, edge-to-edge images. Model detail shots use 16:9 or wider cinema-aspect ratios. Newsroom thumbnails use 16:9 with 0px corners. There are no avatars or rounded photo crops anywhere on the marketing site.
342
+
343
+ ## Components
344
+
345
+ ### Top Navigation
346
+
347
+ **\`top-nav\`** \u2014 A 56px-tall transparent nav bar overlaid on the hero photo at the top of every page. No fill, no border. Carries "MENU" at left, the centered **wordmark-display** ("BUGATTI" in 14px Bugatti Display with 6px tracking), and "STORE" at right with a small bag icon. All labels in \`{typography.nav-link}\` (Bugatti Monospace, 12px, 2px tracking, uppercase).
348
+
349
+ **\`wordmark-display\`** \u2014 The "BUGATTI" wordmark itself. Bugatti Display at 14px, weight 400, 6px letter-spacing. The widest tracking in the system. Centered in the nav bar at every breakpoint.
350
+
351
+ ### Buttons
352
+
353
+ **\`button-primary\`** \u2014 The signature primary CTA. Background **transparent**, text \`{colors.on-dark}\` (white), 1px white outline, rounded \`{rounded.pill}\` (9999px), padding 14px \xD7 32px, height 44px. Type \`{typography.button}\` \u2014 Bugatti Monospace, uppercase, 14px, 2.5px tracking. The transparent fill is unique to Bugatti \u2014 every other luxury-auto brand uses a filled or outlined-with-text-shift button. Bugatti's transparent pill IS the button.
354
+
355
+ **\`button-icon\`** \u2014 Circular icon buttons (carousel arrows, share, language switcher). 40 \xD7 40px, transparent background, white outline 1px, rounded \`{rounded.full}\`. Same outline-only treatment as the primary button.
356
+
357
+ **\`text-link\`** \u2014 Inline body links in \`{colors.link}\` (#c3d9f3, the only non-monochrome color in the system). Underlined by default. Type inherits \`{typography.body-md}\` (Bugatti Text Regular, serif).
358
+
359
+ ### Cards & Containers
360
+
361
+ **\`hero-photo-band\`** \u2014 Full-width black band with full-bleed automotive photography. The h1 in \`{typography.display-xl}\` sits center-aligned over the photo near the top, often paired with a small Bugatti Monospace caption (\`{typography.caption-uppercase}\`) below the headline and a single \`{component.button-primary}\` further down. Vertical padding 96px-200px depending on photo height.
362
+
363
+ **\`career-callout-card\`** \u2014 A small right-aligned card that floats over the hero photo on the homepage with a recruiting prompt ("Are you ready for a new adventure?"). Background \`{colors.surface-card}\`, rounded \`{rounded.none}\` (0px), padding \`{spacing.md}\` (16px), width 320px. Carries a small thumbnail at top, body line, and a \`{typography.caption-uppercase}\` link ("EXPLORE OUR OPPORTUNITIES").
364
+
365
+ **\`model-photo-card\`** \u2014 Used in model showcases (Tourbillon page, model lineup grid). Background \`{colors.canvas}\` (no card surface \u2014 just photo on black), rounded \`{rounded.none}\`. Top: 16:9 or 21:9 hero shot of the model. Below: model name in \`{typography.display-md}\` (32px Bugatti Display, 2px tracking), short specs line in \`{typography.caption-uppercase}\` (11px Bugatti Monospace), a \`{component.text-link}\` ("DISCOVER").
366
+
367
+ **\`newsroom-article-card\`** \u2014 Used on the newsroom page (newsroom.bugatti.com). Background \`{colors.canvas}\` with hairline border, rounded \`{rounded.none}\`, padding \`{spacing.lg}\` (24px). Carries a 16:9 thumbnail, a \`{component.date-pill}\` ("12. NOVEMBER 2025"), a \`{typography.title-md}\` headline, and a body excerpt in \`{typography.body-md}\` (Bugatti Text Regular serif).
368
+
369
+ **\`career-listing-row\`** \u2014 Each row of the careers page job listing. Transparent background, padding 24px vertical, hairline divider between rows. Job title in \`{typography.title-md}\` (Bugatti Display 20px) at left; location + department in \`{typography.caption-uppercase}\` at right; chevron arrow (\u2192) at far right.
370
+
371
+ **\`spec-cell\`** \u2014 Vehicle technical-spec display on model-detail pages (Tourbillon engine specs). Transparent background with hairline dividers between cells (not between cells inside a card). Each spec shows a value in \`{typography.title-md}\` at top and a label in \`{typography.caption-uppercase}\` below. Padding 24px vertical.
372
+
373
+ ### Inputs & Forms
374
+
375
+ **\`text-input\`** \u2014 Standard text input on dark canvas. Background **transparent**, text \`{colors.on-dark}\`, 1px hairline-strong bottom border only (no top, left, right border), padding 12px \xD7 0px, height 44px. Type \`{typography.body-md}\` (Bugatti Text Regular). Placeholder in \`{colors.muted}\`. Focus thickens the bottom border to white.
376
+
377
+ ### Tags & Captions
378
+
379
+ **\`caption-overlay\`** \u2014 Photo-overlay caption (e.g., "HONORING THE OEYRON AND ITS VISIONARY CREATOR"). Centered or left-aligned over photography in \`{typography.caption-uppercase}\` (Bugatti Monospace, 11px, 2px tracking, white).
380
+
381
+ **\`category-tag\`** + **\`date-pill\`** \u2014 Both render as transparent inline labels in \`{typography.caption-uppercase}\`, color \`{colors.muted}\`. No background fill, no border. The "tag" is the type itself.
382
+
383
+ ### CTA / Footer
384
+
385
+ **\`cta-band-photo\`** \u2014 A pre-footer "Discover Bugatti" band with full-bleed photography of a Bugatti car at speed and a centered headline in \`{typography.display-md}\` + a \`{component.button-primary}\` below. Vertical padding 80px. Inherits the editorial gravity of the hero through full-bleed photography.
386
+
387
+ **\`footer\`** \u2014 Black footer that closes every page. Background \`{colors.canvas}\`, text \`{colors.muted}\`. 4-column link list at desktop covering Bugatti / Models / Heritage / Connect. Vertical padding 64px. Bottom row carries the copyright line in \`{typography.body-sm}\` (Bugatti Text Regular). The wordmark sits center-aligned at the very bottom. The footer never inverts.
388
+
389
+ ## Do's and Don'ts
390
+
391
+ ### Do
392
+ - Anchor every page with full-bleed automotive photography. The cars are the brand voltage; chrome backs off entirely.
393
+ - Keep all display headlines in UPPERCASE Bugatti Display with 2-4px letter-spacing. The wordmark gets 6px.
394
+ - Use Bugatti Display for headlines, Bugatti Text Regular (serif!) for body, Bugatti Monospace for buttons + captions + nav. The trinity is unbreakable.
395
+ - Keep \`{component.button-primary}\` transparent with a 1px white outline. The transparent pill IS the brand button.
396
+ - Use weight 400 everywhere. Bold breaks the brand voice \u2014 the system has no bold weight role.
397
+ - Use \`{spacing.section}\` (120px) between major editorial bands. The whitespace is part of the brand.
398
+ - Reserve \`{colors.link}\` (#c3d9f3) for inline anchor links only. It's the system's only non-monochrome color.
399
+
400
+ ### Don't
401
+ - Don't introduce any accent color outside \`{colors.link}\`. Bugatti's brand discipline is total monochrome + photography. Adding a brand-blue or brand-red breaks the contract.
402
+ - Don't bold any type. The system has no bold weight \u2014 every typeface stays at 400.
403
+ - Don't fill primary buttons. Transparent + outline only. A solid white button reads as off-brand.
404
+ - Don't compress whitespace between sections. The 120px rhythm is part of the editorial pacing.
405
+ - Don't use rounded corners outside buttons. Cards, photos, inputs all stay at 0px. Rounded cards read as consumer-tech, not luxury-engineered.
406
+ - Don't tighten letter-spacing on display headlines. 2-4px tracking on Bugatti Display is non-negotiable.
407
+ - Don't use Bugatti Display in a button (use Bugatti Monospace) or Bugatti Monospace in a paragraph (use Bugatti Text Regular). The trinity split is the brand voice.
408
+
409
+ ## Responsive Behavior
410
+
411
+ ### Breakpoints
412
+
413
+ | Name | Width | Key Changes |
414
+ |---|---|---|
415
+ | Mobile | < 768px | Hamburger nav; hero h1 64\u219232px; career callout card hides; photo bands stay full-bleed; footer 4 cols \u2192 1 |
416
+ | Tablet | 768\u20131024px | Top nav stays minimal (MENU + wordmark + STORE); 2-up newsroom grid; career rows full-width |
417
+ | Desktop | 1024\u20131440px | Full minimal top-nav; 2-up newsroom grid; spec tables 4-up |
418
+ | Wide | > 1440px | Same as desktop with more breathing room; max content 1280px |
419
+
420
+ ### Touch Targets
421
+ - \`{component.button-primary}\` renders at minimum 44 \xD7 44px (matches WCAG AAA).
422
+ - \`{component.button-icon}\` is exactly 40 \xD7 40px.
423
+ - \`{component.text-input}\` height is 44px.
424
+ - Career listing rows have 24px vertical padding; effective tap area meets 44px+ with surrounding spacing.
425
+
426
+ ### Collapsing Strategy
427
+ - Top nav stays minimal at all breakpoints (MENU label + wordmark + STORE label). On mobile the labels hide behind a hamburger but the wordmark stays centered.
428
+ - Hero photography stays full-bleed at every breakpoint. Photo crops adjust \u2014 wider crops at desktop, vertical crops on mobile.
429
+ - The career callout card on the homepage hides at < 768px (it's a desktop-only floating element).
430
+ - 2-up newsroom grid collapses to 1-up at < 768px.
431
+ - Spec cells reflow from 4-up to 2-up to 1-up; values stay at the same display size regardless of column count.
432
+
433
+ ### Image Behavior
434
+ - Hero photography crops responsively \u2014 wider crops at desktop, vertical crops on mobile. Bugatti cars are always shown in motion or at-angle (never flat profiles).
435
+ - Newsroom thumbnails retain 16:9 ratio and 0px corners.
436
+
437
+ ## Iteration Guide
438
+
439
+ 1. Focus on ONE component at a time. Reference its YAML key (\`{component.hero-photo-band}\`, \`{component.career-callout-card}\`).
440
+ 2. New components default to \`{rounded.none}\` (0px). Only \`{component.button-primary}\` and \`{component.button-icon}\` use pill / full radius.
441
+ 3. Variants live as separate entries in \`components:\`.
442
+ 4. Use \`{token.refs}\` everywhere \u2014 never inline hex.
443
+ 5. Never document hover. Default and Active/Pressed states only.
444
+ 6. Display headlines stay UPPERCASE Bugatti Display 400 with 2-4px tracking. Body stays sentence-case Bugatti Text Regular (serif). Button labels stay Bugatti Monospace 2.5px tracking. The trinity does not blur.
445
+ 7. When in doubt about emphasis: bigger photography before bigger type.
446
+
447
+ ## Known Gaps
448
+
449
+ - The dembrandt frequency analyzer captured only 3 colors at root level (\`#000000\`, \`#999999\`, \`#c3d9f3\`). The white text (#ffffff) and dark surface tones (\`#0d0d0d\`, \`#141414\`, \`#1f1f1f\`) were inferred from screenshot \u2014 Bugatti's pages are so monochrome that the frequency-based analyzer didn't surface body text or surface tones as distinct palette entries.
450
+ - The three Bugatti typefaces (Display, Text Regular, Monospace) are licensed to Bugatti and not available as web fonts publicly. Substitutes are documented in the typography section.
451
+ - Animation and transition timings (photo carousel transitions, hover-reveal of menu, configurator animations) are not in scope.
452
+ - Form validation states beyond the underline-only \`{component.text-input}\` are not extracted \u2014 error / success states are inferred from general standards, not from the analyzed surfaces.
453
+ - The configurator surface (vehicle build pages with custom paint / interior pickers) was not in the analyzed URL set; its swatch grid, customization controls, and price-summary card are not documented here.
454
+ - The German-language newsroom (newsroom.bugatti.com/de) shares the system with the English Bugatti.com surfaces \u2014 no design-system-level differences observed, only language localization.
455
+ - The actual Tourbillon page rendered as a sparse minimal page in the captured screenshot, suggesting either lazy-loaded content or an interactive configurator-style UI that doesn't render fully in static screenshots; engine-spec layout is documented from general luxury-auto patterns informed by the captured spec cell tokens.
456
+ `;
457
+ export {
458
+ bugattiBrief
459
+ };
460
+ //# sourceMappingURL=bugatti.js.map