@stylecrib/cli 0.0.0-stage → 0.3.2

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 (348) hide show
  1. package/README.md +163 -2
  2. package/agents/MANIFEST.yml +136 -0
  3. package/agents/README.md +75 -0
  4. package/agents/art-director.md +168 -0
  5. package/agents/audacity-director.md +109 -0
  6. package/agents/brand-identity.md +179 -0
  7. package/agents/brand-precedent.md +119 -0
  8. package/agents/brief-enforcer.md +136 -0
  9. package/agents/component-qa.md +167 -0
  10. package/agents/cto.md +49 -0
  11. package/agents/design-director.md +184 -0
  12. package/agents/design-systems-engineer.md +162 -0
  13. package/agents/direction-curator.md +133 -0
  14. package/agents/homogeneity-detector.md +104 -0
  15. package/agents/logo-designer.md +240 -0
  16. package/agents/marketing-designer.md +156 -0
  17. package/agents/media-curator.md +165 -0
  18. package/agents/motion-engineer.md +270 -0
  19. package/agents/qa-conductor.md +143 -0
  20. package/agents/render-qa.md +133 -0
  21. package/agents/upgrade-simulator.md +123 -0
  22. package/agents/vp-architecture.md +49 -0
  23. package/agents/vp-engineering.md +49 -0
  24. package/dist/index.js +7182 -0
  25. package/package.json +69 -4
  26. package/themes/README.md +70 -0
  27. package/themes/acrylic-soft/THEME.md +142 -0
  28. package/themes/acrylic-soft/tokens.ts +180 -0
  29. package/themes/agency-creative/THEME.md +91 -0
  30. package/themes/agency-creative/tokens.ts +202 -0
  31. package/themes/agency-portfolio/THEME.md +109 -0
  32. package/themes/agency-portfolio/tokens.ts +159 -0
  33. package/themes/ai-startup/THEME.md +95 -0
  34. package/themes/ai-startup/tokens.ts +162 -0
  35. package/themes/airline-modern/THEME.md +104 -0
  36. package/themes/airline-modern/tokens.ts +179 -0
  37. package/themes/arc-stack/.anchor-render.png +0 -0
  38. package/themes/arc-stack/THEME.md +125 -0
  39. package/themes/arc-stack/audit.log.jsonl +6 -0
  40. package/themes/arc-stack/dismissals.jsonl +3 -0
  41. package/themes/arc-stack/tailwind.snippet.ts +17 -0
  42. package/themes/arc-stack/theme.yml +153 -0
  43. package/themes/arc-stack/tokens.ts +29 -0
  44. package/themes/architectural/THEME.md +102 -0
  45. package/themes/architectural/tokens.ts +159 -0
  46. package/themes/atelier-radiance/THEME.md +93 -0
  47. package/themes/atelier-radiance/audit.log.jsonl +1 -0
  48. package/themes/atelier-radiance/tailwind.snippet.ts +15 -0
  49. package/themes/atelier-radiance/theme.yml +130 -0
  50. package/themes/atelier-radiance/tokens.ts +29 -0
  51. package/themes/automotive-ev/THEME.md +87 -0
  52. package/themes/automotive-ev/tokens.ts +183 -0
  53. package/themes/automotive-luxury/THEME.md +88 -0
  54. package/themes/automotive-luxury/tokens.ts +175 -0
  55. package/themes/baby-modern/THEME.md +79 -0
  56. package/themes/baby-modern/tokens.ts +184 -0
  57. package/themes/banking-gravity/THEME.md +171 -0
  58. package/themes/banking-gravity/tokens.ts +169 -0
  59. package/themes/beauty-clean/THEME.md +92 -0
  60. package/themes/beauty-clean/tokens.ts +176 -0
  61. package/themes/beauty-luxury/THEME.md +96 -0
  62. package/themes/beauty-luxury/tokens.ts +178 -0
  63. package/themes/bento-modular/.anchor-render.png +0 -0
  64. package/themes/bento-modular/BUILD_BRIEF.md +171 -0
  65. package/themes/bento-modular/THEME.md +80 -0
  66. package/themes/bento-modular/audit.log.jsonl +3 -0
  67. package/themes/bento-modular/dismissals.jsonl +1 -0
  68. package/themes/bento-modular/tailwind.snippet.ts +17 -0
  69. package/themes/bento-modular/theme.yml +83 -0
  70. package/themes/bento-modular/tokens.ts +27 -0
  71. package/themes/bookstore-indie/THEME.md +78 -0
  72. package/themes/bookstore-indie/tokens.ts +147 -0
  73. package/themes/brutalist/THEME.md +96 -0
  74. package/themes/brutalist/tokens.ts +151 -0
  75. package/themes/business-tiles/THEME.md +141 -0
  76. package/themes/business-tiles/tokens.ts +178 -0
  77. package/themes/cabana-poster/THEME.md +158 -0
  78. package/themes/cabana-poster/audit.log.jsonl +1 -0
  79. package/themes/cabana-poster/tailwind.snippet.ts +16 -0
  80. package/themes/cabana-poster/theme.yml +221 -0
  81. package/themes/cabana-poster/tokens.ts +34 -0
  82. package/themes/case-panel/THEME.md +126 -0
  83. package/themes/case-panel/audit.log.jsonl +2 -0
  84. package/themes/case-panel/tailwind.snippet.ts +15 -0
  85. package/themes/case-panel/theme.yml +153 -0
  86. package/themes/case-panel/tokens.ts +28 -0
  87. package/themes/cinematic-dark/THEME.md +97 -0
  88. package/themes/cinematic-dark/tokens.ts +195 -0
  89. package/themes/classic-car/THEME.md +86 -0
  90. package/themes/classic-car/tokens.ts +173 -0
  91. package/themes/cloud-friendly/THEME.md +152 -0
  92. package/themes/cloud-friendly/tokens.ts +181 -0
  93. package/themes/community-niche/THEME.md +102 -0
  94. package/themes/community-niche/tokens.ts +177 -0
  95. package/themes/corporate-grid/THEME.md +154 -0
  96. package/themes/corporate-grid/tokens.ts +182 -0
  97. package/themes/couture-luxury/THEME.md +85 -0
  98. package/themes/couture-luxury/tokens.ts +146 -0
  99. package/themes/creator-social/THEME.md +131 -0
  100. package/themes/creator-social/tokens.ts +249 -0
  101. package/themes/crypto-onchain/THEME.md +100 -0
  102. package/themes/crypto-onchain/tokens.ts +207 -0
  103. package/themes/cycling-brand/THEME.md +78 -0
  104. package/themes/cycling-brand/tokens.ts +185 -0
  105. package/themes/dating-friendly/THEME.md +102 -0
  106. package/themes/dating-friendly/tokens.ts +178 -0
  107. package/themes/dense-utility/THEME.md +85 -0
  108. package/themes/dense-utility/tokens.ts +155 -0
  109. package/themes/devtool-cli/THEME.md +100 -0
  110. package/themes/devtool-cli/tokens.ts +195 -0
  111. package/themes/devtool-docs/THEME.md +105 -0
  112. package/themes/devtool-docs/tokens.ts +177 -0
  113. package/themes/editorial/THEME.md +129 -0
  114. package/themes/editorial/audit.log.jsonl +2 -0
  115. package/themes/editorial/tailwind.snippet.ts +15 -0
  116. package/themes/editorial/theme.yml +173 -0
  117. package/themes/editorial/tokens.ts +29 -0
  118. package/themes/education-formal/THEME.md +154 -0
  119. package/themes/education-formal/audit.log.jsonl +1 -0
  120. package/themes/education-formal/tailwind.snippet.ts +15 -0
  121. package/themes/education-formal/theme.yml +186 -0
  122. package/themes/education-formal/tokens.ts +29 -0
  123. package/themes/education-warm/THEME.md +91 -0
  124. package/themes/education-warm/tokens.ts +185 -0
  125. package/themes/ember-poster/README.md +79 -0
  126. package/themes/ember-poster/THEME.md +101 -0
  127. package/themes/ember-poster/audit.log.jsonl +17 -0
  128. package/themes/ember-poster/package.json +34 -0
  129. package/themes/ember-poster/tailwind.snippet.ts +17 -0
  130. package/themes/ember-poster/theme.yml +109 -0
  131. package/themes/ember-poster/tokens.ts +27 -0
  132. package/themes/enterprise-cloud/THEME.md +139 -0
  133. package/themes/enterprise-cloud/tokens.ts +179 -0
  134. package/themes/enterprise-tech/.anchor-render.png +0 -0
  135. package/themes/enterprise-tech/THEME.md +167 -0
  136. package/themes/enterprise-tech/audit.log.jsonl +1 -0
  137. package/themes/enterprise-tech/tailwind.snippet.ts +15 -0
  138. package/themes/enterprise-tech/theme.yml +202 -0
  139. package/themes/enterprise-tech/tokens.ts +29 -0
  140. package/themes/ev-charging/THEME.md +94 -0
  141. package/themes/ev-charging/tokens.ts +185 -0
  142. package/themes/farm-direct/THEME.md +92 -0
  143. package/themes/farm-direct/tokens.ts +180 -0
  144. package/themes/fintech-card/THEME.md +96 -0
  145. package/themes/fintech-card/tokens.ts +191 -0
  146. package/themes/fintech-trust/THEME.md +94 -0
  147. package/themes/fintech-trust/tokens.ts +192 -0
  148. package/themes/food-blog/THEME.md +98 -0
  149. package/themes/food-blog/tokens.ts +183 -0
  150. package/themes/forum-classic/THEME.md +100 -0
  151. package/themes/forum-classic/tokens.ts +168 -0
  152. package/themes/fresh-plate/.anchor-render.png +0 -0
  153. package/themes/fresh-plate/THEME.md +144 -0
  154. package/themes/fresh-plate/audit.log.jsonl +2 -0
  155. package/themes/fresh-plate/dismissals.jsonl +3 -0
  156. package/themes/fresh-plate/tailwind.snippet.ts +16 -0
  157. package/themes/fresh-plate/theme.yml +189 -0
  158. package/themes/fresh-plate/tokens.ts +30 -0
  159. package/themes/furniture-modern/THEME.md +94 -0
  160. package/themes/furniture-modern/tokens.ts +176 -0
  161. package/themes/gaming-esports/THEME.md +146 -0
  162. package/themes/gaming-esports/tokens.ts +199 -0
  163. package/themes/gaming-streamer/THEME.md +139 -0
  164. package/themes/gaming-streamer/tokens.ts +201 -0
  165. package/themes/glassmorphic-modern/THEME.md +119 -0
  166. package/themes/glassmorphic-modern/tokens.ts +174 -0
  167. package/themes/government-civic/THEME.md +138 -0
  168. package/themes/government-civic/tokens.ts +164 -0
  169. package/themes/gym-chain/THEME.md +79 -0
  170. package/themes/gym-chain/tokens.ts +196 -0
  171. package/themes/healthcare-bright/THEME.md +95 -0
  172. package/themes/healthcare-bright/tokens.ts +184 -0
  173. package/themes/home-decor/THEME.md +94 -0
  174. package/themes/home-decor/tokens.ts +177 -0
  175. package/themes/hotel-boutique/THEME.md +110 -0
  176. package/themes/hotel-boutique/tokens.ts +179 -0
  177. package/themes/hyperminimal-mono/THEME.md +91 -0
  178. package/themes/hyperminimal-mono/tokens.ts +150 -0
  179. package/themes/indie-art-game/THEME.md +107 -0
  180. package/themes/indie-art-game/tokens.ts +216 -0
  181. package/themes/insurance-legacy/THEME.md +101 -0
  182. package/themes/insurance-legacy/tokens.ts +182 -0
  183. package/themes/insurance-modern/THEME.md +103 -0
  184. package/themes/insurance-modern/tokens.ts +192 -0
  185. package/themes/kaiju-reveal/THEME.md +97 -0
  186. package/themes/kaiju-reveal/tokens.ts +185 -0
  187. package/themes/kinetic-data/THEME.md +172 -0
  188. package/themes/kinetic-data/audit.log.jsonl +1 -0
  189. package/themes/kinetic-data/tailwind.snippet.ts +16 -0
  190. package/themes/kinetic-data/theme.yml +207 -0
  191. package/themes/kinetic-data/tokens.ts +30 -0
  192. package/themes/kinetic-headline/.anchor-render.png +0 -0
  193. package/themes/kinetic-headline/BUILD_BRIEF.md +156 -0
  194. package/themes/kinetic-headline/THEME.md +78 -0
  195. package/themes/kinetic-headline/audit.log.jsonl +4 -0
  196. package/themes/kinetic-headline/dismissals.jsonl +1 -0
  197. package/themes/kinetic-headline/tailwind.snippet.ts +16 -0
  198. package/themes/kinetic-headline/theme.yml +81 -0
  199. package/themes/kinetic-headline/tokens.ts +26 -0
  200. package/themes/law-firm/THEME.md +108 -0
  201. package/themes/law-firm/tokens.ts +158 -0
  202. package/themes/lawtech-modern/THEME.md +107 -0
  203. package/themes/lawtech-modern/tokens.ts +192 -0
  204. package/themes/linkedin-pro/THEME.md +102 -0
  205. package/themes/linkedin-pro/tokens.ts +174 -0
  206. package/themes/logistics-modern/THEME.md +94 -0
  207. package/themes/logistics-modern/tokens.ts +187 -0
  208. package/themes/magazine-glossy/THEME.md +74 -0
  209. package/themes/magazine-glossy/tokens.ts +158 -0
  210. package/themes/marker-mag/THEME.md +128 -0
  211. package/themes/marker-mag/audit.log.jsonl +1 -0
  212. package/themes/marker-mag/tailwind.snippet.ts +15 -0
  213. package/themes/marker-mag/theme.yml +159 -0
  214. package/themes/marker-mag/tokens.ts +27 -0
  215. package/themes/marketplace-modern/THEME.md +135 -0
  216. package/themes/marketplace-modern/tokens.ts +186 -0
  217. package/themes/marketplace-vintage/THEME.md +110 -0
  218. package/themes/marketplace-vintage/tokens.ts +185 -0
  219. package/themes/maximalist/THEME.md +96 -0
  220. package/themes/maximalist/tokens.ts +168 -0
  221. package/themes/mid-century/THEME.md +109 -0
  222. package/themes/mid-century/tokens.ts +162 -0
  223. package/themes/motorcycle-brand/THEME.md +86 -0
  224. package/themes/motorcycle-brand/tokens.ts +174 -0
  225. package/themes/museum/THEME.md +83 -0
  226. package/themes/museum/tokens.ts +147 -0
  227. package/themes/music-streaming/THEME.md +101 -0
  228. package/themes/music-streaming/tokens.ts +187 -0
  229. package/themes/music-vinyl/THEME.md +98 -0
  230. package/themes/music-vinyl/tokens.ts +167 -0
  231. package/themes/nature-distilled/.anchor-render.png +0 -0
  232. package/themes/nature-distilled/BUILD_BRIEF.md +158 -0
  233. package/themes/nature-distilled/THEME.md +81 -0
  234. package/themes/nature-distilled/audit.log.jsonl +2 -0
  235. package/themes/nature-distilled/tailwind.snippet.ts +16 -0
  236. package/themes/nature-distilled/theme.yml +91 -0
  237. package/themes/nature-distilled/tokens.ts +26 -0
  238. package/themes/news-tabloid/THEME.md +72 -0
  239. package/themes/news-tabloid/tokens.ts +158 -0
  240. package/themes/news-tech/THEME.md +75 -0
  241. package/themes/news-tech/tokens.ts +149 -0
  242. package/themes/newsletter/THEME.md +82 -0
  243. package/themes/newsletter/tokens.ts +138 -0
  244. package/themes/newspaper-classic/THEME.md +74 -0
  245. package/themes/newspaper-classic/tokens.ts +159 -0
  246. package/themes/nonprofit-arts/THEME.md +78 -0
  247. package/themes/nonprofit-arts/tokens.ts +157 -0
  248. package/themes/nonprofit-warm/THEME.md +105 -0
  249. package/themes/nonprofit-warm/tokens.ts +188 -0
  250. package/themes/outdoor-adventure/THEME.md +113 -0
  251. package/themes/outdoor-adventure/tokens.ts +181 -0
  252. package/themes/overland-broadside/THEME.md +119 -0
  253. package/themes/overland-broadside/audit.log.jsonl +1 -0
  254. package/themes/overland-broadside/tailwind.snippet.ts +17 -0
  255. package/themes/overland-broadside/theme.yml +138 -0
  256. package/themes/overland-broadside/tokens.ts +27 -0
  257. package/themes/performance-engineered/THEME.md +162 -0
  258. package/themes/performance-engineered/audit.log.jsonl +1 -0
  259. package/themes/performance-engineered/tailwind.snippet.ts +15 -0
  260. package/themes/performance-engineered/theme.yml +193 -0
  261. package/themes/performance-engineered/tokens.ts +29 -0
  262. package/themes/pet-food/THEME.md +78 -0
  263. package/themes/pet-food/tokens.ts +185 -0
  264. package/themes/pharma-clinical/THEME.md +164 -0
  265. package/themes/pharma-clinical/audit.log.jsonl +1 -0
  266. package/themes/pharma-clinical/tailwind.snippet.ts +15 -0
  267. package/themes/pharma-clinical/theme.yml +201 -0
  268. package/themes/pharma-clinical/tokens.ts +29 -0
  269. package/themes/pill-editorial/THEME.md +125 -0
  270. package/themes/pill-editorial/audit.log.jsonl +1 -0
  271. package/themes/pill-editorial/tailwind.snippet.ts +15 -0
  272. package/themes/pill-editorial/theme.yml +168 -0
  273. package/themes/pill-editorial/tokens.ts +31 -0
  274. package/themes/podcast-warm/THEME.md +103 -0
  275. package/themes/podcast-warm/tokens.ts +192 -0
  276. package/themes/publisher-indie/THEME.md +78 -0
  277. package/themes/publisher-indie/tokens.ts +148 -0
  278. package/themes/raw-concrete/BUILD_BRIEF.md +157 -0
  279. package/themes/raw-concrete/THEME.md +76 -0
  280. package/themes/raw-concrete/audit.log.jsonl +10 -0
  281. package/themes/raw-concrete/tailwind.snippet.ts +16 -0
  282. package/themes/raw-concrete/theme.yml +88 -0
  283. package/themes/raw-concrete/tokens.ts +27 -0
  284. package/themes/realestate-luxury/THEME.md +94 -0
  285. package/themes/realestate-luxury/tokens.ts +169 -0
  286. package/themes/realestate-marketplace/THEME.md +106 -0
  287. package/themes/realestate-marketplace/tokens.ts +183 -0
  288. package/themes/restaurant-modern/THEME.md +109 -0
  289. package/themes/restaurant-modern/tokens.ts +172 -0
  290. package/themes/runway-fashion/THEME.md +99 -0
  291. package/themes/runway-fashion/tokens.ts +167 -0
  292. package/themes/saturday-morning/THEME.md +117 -0
  293. package/themes/saturday-morning/tokens.ts +281 -0
  294. package/themes/schema.ts +235 -0
  295. package/themes/signal-dark/BUILD_BRIEF.md +168 -0
  296. package/themes/signal-dark/THEME.md +107 -0
  297. package/themes/signal-dark/tokens.ts +181 -0
  298. package/themes/soft-modern/THEME.md +91 -0
  299. package/themes/soft-modern/tokens.ts +166 -0
  300. package/themes/solar-residential/THEME.md +92 -0
  301. package/themes/solar-residential/tokens.ts +176 -0
  302. package/themes/sports-league/THEME.md +180 -0
  303. package/themes/sports-league/audit.log.jsonl +1 -0
  304. package/themes/sports-league/tailwind.snippet.ts +15 -0
  305. package/themes/sports-league/theme.yml +213 -0
  306. package/themes/sports-league/tokens.ts +32 -0
  307. package/themes/stadium-sport/THEME.md +114 -0
  308. package/themes/stadium-sport/tokens.ts +187 -0
  309. package/themes/streetwear-hype/THEME.md +100 -0
  310. package/themes/streetwear-hype/tokens.ts +174 -0
  311. package/themes/studio-architect/THEME.md +108 -0
  312. package/themes/studio-architect/tokens.ts +162 -0
  313. package/themes/studio-photographer/THEME.md +88 -0
  314. package/themes/studio-photographer/tokens.ts +164 -0
  315. package/themes/team-kanban/.anchor-render.png +0 -0
  316. package/themes/team-kanban/THEME.md +167 -0
  317. package/themes/team-kanban/audit.log.jsonl +2 -0
  318. package/themes/team-kanban/dismissals.jsonl +1 -0
  319. package/themes/team-kanban/tailwind.snippet.ts +15 -0
  320. package/themes/team-kanban/theme.yml +209 -0
  321. package/themes/team-kanban/tokens.ts +35 -0
  322. package/themes/telehealth-modern/THEME.md +95 -0
  323. package/themes/telehealth-modern/tokens.ts +197 -0
  324. package/themes/tourism-board/THEME.md +111 -0
  325. package/themes/tourism-board/tokens.ts +173 -0
  326. package/themes/toys-modern/THEME.md +79 -0
  327. package/themes/toys-modern/tokens.ts +200 -0
  328. package/themes/travel-luxury/THEME.md +95 -0
  329. package/themes/travel-luxury/tokens.ts +162 -0
  330. package/themes/vacation-rental/THEME.md +105 -0
  331. package/themes/vacation-rental/tokens.ts +174 -0
  332. package/themes/vault-reel/THEME.md +134 -0
  333. package/themes/vault-reel/audit.log.jsonl +3 -0
  334. package/themes/vault-reel/tailwind.snippet.ts +16 -0
  335. package/themes/vault-reel/theme.yml +167 -0
  336. package/themes/vault-reel/tokens.ts +30 -0
  337. package/themes/vet-modern/THEME.md +79 -0
  338. package/themes/vet-modern/tokens.ts +194 -0
  339. package/themes/web3-restraint/THEME.md +87 -0
  340. package/themes/web3-restraint/tokens.ts +154 -0
  341. package/themes/wellness-active/THEME.md +102 -0
  342. package/themes/wellness-active/tokens.ts +203 -0
  343. package/themes/wellness-spa/THEME.md +93 -0
  344. package/themes/wellness-spa/tokens.ts +173 -0
  345. package/themes/y2k-chrome/THEME.md +118 -0
  346. package/themes/y2k-chrome/tokens.ts +249 -0
  347. package/themes/yoga-studio/THEME.md +76 -0
  348. package/themes/yoga-studio/tokens.ts +163 -0
@@ -0,0 +1,103 @@
1
+ # Design Direction — Insurance-Modern
2
+
3
+ ## Ethos
4
+ Lemonade pink chatbot delight · Ethos life-insurance soft warmth · Hippo home peach clarity · Root mobile-first quote · Policygenius marketplace neutrality
5
+
6
+ ## Feel
7
+ Modern DTC insurance — quote in 90 seconds, claim in three taps, coverage explained like a friend. Soft pink and peach surfaces, rounded everything, generous whitespace, playful but never childish. The page reads "we redesigned insurance for the people who got rejected by State Farm for being too online." Lemonade's giving-back model and Ethos's grief-aware copy — warmth as a category position.
8
+
9
+ An insurance-modern surface that feels enterprise-cold, agent-network-traditional, or red-and-blue corporate is off-direction. The voice is friend-explaining-coverage-over-brunch.
10
+
11
+ ## Reference brands
12
+ - **Lemonade** (lemonade.com) → soft pink, chatbot Maya, friendly Inter, claims-in-seconds delight. The category-defining brand for DTC insurance design.
13
+ - **Ethos** (ethoslife.com) → warm peach, life-insurance accessibility, no-medical-exam clarity. Grief-adjacent product handled with grace.
14
+ - **Hippo** (hippo.com) → smart-home green-tinged peach, proactive coverage voice. Home insurance for the IoT generation.
15
+ - **Root Insurance** (joinroot.com) → mobile-first quote flow, telematics-driven personalization. The phone IS the underwriter.
16
+ - **Policygenius** (policygenius.com) → marketplace neutrality, compare-carriers structured layout. The Kayak-for-insurance flank.
17
+
18
+ ## Tokens
19
+ HSL triples in `src/index.css`. The peach background (`18 60% 97%`) is the brand-warmth signal — pure white reads enterprise, lavender reads telehealth, peach is the Lemonade/Ethos middle.
20
+
21
+ Brand tokens, all semantic:
22
+ - `pink` — alias of `--primary`. Lemonade signature pink. The CTA, the quote button, the active step.
23
+ - `pink-soft` / `pink-deep` — tints and hover-darken.
24
+ - `peach` / `peach-deep` — aliases of `--background` / `--secondary`. The Ethos surface stack.
25
+ - `coral` — secondary warmth accent for claim-paid checkmarks, coverage-active dots.
26
+ - `mint` — covered / good-status accent. Premium-on-track, deductible-met, claim-approved.
27
+
28
+ Color rules:
29
+ - **Pink is the brand voice.** Two pink elements per surface is fine — this is a quote-flow tool, not a magazine.
30
+ - **Mint is the "covered" tone, not the "growth" tone.** Use it semantically: a green check-mark on coverage that's active. Never as a marketing growth-stat.
31
+ - **Coral is a warmth accent.** A single coral icon per surface — the claim-paid hand-off moment, the "you're insured" confirmation.
32
+
33
+ ## Typography
34
+ - **Display:** Plus Jakarta Sans 500/600/700/800. Friendly geometric sans — the Lemonade/Ethos display register. Tracking `-0.02em`.
35
+ - **Body:** Inter, 16px, line-height 1.6. Standard DTC reading.
36
+ - **Mono:** JetBrains Mono. Policy numbers, premium amounts, deductible figures — tabular in the quote-summary card.
37
+
38
+ H1 uses `clamp(2.25rem, 5vw, 3.75rem)`.
39
+
40
+ ## Spacing
41
+ - **Container:** `max-w-6xl px-4 lg:px-8`.
42
+ - **Section padding tiers:**
43
+ - Hero: `pt-20 pb-14 lg:pt-28 lg:pb-20`
44
+ - Default: `py-14 lg:py-20`
45
+ - Tight: `py-10 lg:py-14`
46
+
47
+ ## Color
48
+ No hex. Pink is brand; mint is covered; coral is warmth; red is denied/gap. The peach background is structural — do not override with white.
49
+
50
+ ## Radius
51
+ `--radius: 1rem` (16px). **The Lemonade pillow signature.** Soft, friendly, DTC. **Pills allowed** — coverage-status, claim-state, premium-tier pills are core.
52
+
53
+ ## Shadows
54
+ **Soft.** Four utilities:
55
+ - `.shadow-soft` — standard card.
56
+ - `.shadow-soft-lg` — hover lift.
57
+ - `.shadow-popover` — modals, dropdowns.
58
+ - `.shadow-pink-glow` — the quote CTA hover; the "you're approved" moment. Use sparingly — once per page.
59
+
60
+ ## Motion
61
+ DTC-friendly, with a little delight.
62
+ - **Easing:** `cubic-bezier(0.22, 1, 0.36, 1)`
63
+ - **Durations:** reveal 500ms, loop 2400ms.
64
+ - **Keyframes:** `fade-rise` (entrance), `scale-in` (modals, claim-paid confirmation), `soft-pulse` (active step ring), `shimmer` (quote-loading skeleton).
65
+
66
+ `prefers-reduced-motion` honored.
67
+
68
+ ## Component patterns
69
+ - **Buttons:** primary = solid pink fill, white text, `rounded-2xl` (16px), `shadow-soft`. Hover lifts + 4% darken; quote CTA gets `shadow-pink-glow` on hover. Generous height (`h-12`) — mobile-first tap targets.
70
+ - **Cards:** `rounded-2xl`, white fill on peach, 1px warm border, `shadow-soft`. Quote-step cards use 4px top-border in pink (active) or mint (done). Policy-coverage card uses `pink-soft` inset background for the premium-amount row.
71
+ - **Inputs:** `rounded-xl` (12px), 1px warm border, white bg, `h-12`. Focus = 2px pink ring + `shadow-pink-glow`. Inline validation in mint or red.
72
+ - **CTAs:** voice is plain-English-friendly. *"Get a quote in 90 seconds"*, *"See what you'd pay"*, *"Start your claim"*. **Never** insurance-jargon (*"Bind coverage"*, *"Effective date election"*) in marketing CTAs.
73
+
74
+ ## Recommended rich media
75
+ Insurance-modern uses **lifestyle photography and friendly illustration** the way Lemonade does — the human is the hero, the policy is the supporting cast.
76
+
77
+ **Permitted:** lifestyle photography (a person at home with a dog; a young couple in their first apartment; a parent with kids) — warm-toned, natural light, real-looking-not-stock. Friendly spot illustrations in pink line-work for empty states, onboarding, claim-flow. The Lemonade chatbot avatar pattern (cute, anthropomorphic, never uncanny).
78
+
79
+ **Forbidden:** the agent-with-clipboard stock photo (that's insurance-legacy); the family-cooking-pasta-stock (overused); the red-tie-corporate-guy (off-brand); hospital photography (too clinical); car-crash photography (too grim); AI-rendered photoreal that ages badly.
80
+
81
+ **AI tools:** Midjourney/Flux for the lifestyle photography with prompts like *"warm natural-light photography, young person at home with a golden retriever, soft peach window light, candid not posed, Sony A7iv 50mm"*. Spot illustrations in Recraft or hand-drawn in Figma with single-line pink strokes.
82
+
83
+ **Aspect ratios:** 4:5 for lifestyle portraits, 16:9 for hero scenes, 1:1 for spot illustrations.
84
+
85
+ **Performance:** lifestyle hero ≤180 KB AVIF at 1600w; spot illustrations as inline SVG ≤6 KB. LCP under 2s.
86
+
87
+ ## Component families
88
+ None at install time. Anticipated families:
89
+ - **QuoteStepCard** — step number in mono small-caps, title in Plus Jakarta 700, current-step has pink top-border + soft-pulse ring.
90
+ - **PolicyCoverageCard** — Plus Jakarta heading, mono premium amount, mint "Active" pill, coral coverage-includes icons.
91
+ - **ClaimStatusTimeline** — vertical timeline with mint dots for done, pink-pulse for active, muted dots for upcoming.
92
+ - **PremiumBreakdownRow** — line item in Inter 500, mono amount right-aligned with tabular figures.
93
+
94
+ ## Details
95
+ - **Selection:** `hsl(var(--primary) / 0.22)` — pale pink highlight.
96
+ - **Focus ring:** `2px solid hsl(var(--ring) / 0.5)` — soft pink.
97
+ - **Scrollbar:** thin.
98
+
99
+ ## Exceptions
100
+ None yet. The claim-paid hand-off moment is the one place `.shadow-pink-glow` lands on a static card (not just hover) — record here when introduced.
101
+
102
+ ## Revisions
103
+ - Initial direction, authored at install time. Pairs distinctly with `insurance-legacy` — same industry, opposite voice. Insurance-modern is the DTC app; insurance-legacy is the State-Farm agent network.
@@ -0,0 +1,192 @@
1
+ import type { Direction } from "../schema";
2
+
3
+ // insurance-modern — Lemonade / Ethos / Hippo / Root / Policygenius.
4
+ // Modern DTC insurance. Soft pink/peach, friendly, quote-flow first.
5
+ // The opposite of legacy red+blue agent networks; this is the app.
6
+
7
+ export const insuranceModern: Direction = {
8
+ name: "insurance-modern" as Direction["name"],
9
+ ethos:
10
+ "Lemonade pink chatbot delight · Ethos life-insurance soft warmth · Hippo home peach clarity · Root mobile-first quote · Policygenius marketplace neutrality",
11
+ references: [
12
+ { brand: "Lemonade", trait: "soft pink + chatbot Maya, friendly Inter, claims-in-seconds delight" },
13
+ { brand: "Ethos", trait: "warm peach, life-insurance accessibility, no-medical-exam clarity" },
14
+ { brand: "Hippo", trait: "smart-home green-tinged peach, proactive coverage voice" },
15
+ { brand: "Root Insurance", trait: "mobile-first quote flow, telematics-driven personalization" },
16
+ { brand: "Policygenius", trait: "marketplace neutrality, compare-carriers structured layout" },
17
+ ],
18
+ feel:
19
+ "Modern DTC insurance — quote in 90 seconds, claim in three taps, coverage explained " +
20
+ "like a friend. Soft pink and peach surfaces, rounded everything, generous whitespace, " +
21
+ "playful but never childish. The page reads 'we redesigned insurance for the people " +
22
+ "who got rejected by State Farm for being too online.' Lemonade's giving-back model " +
23
+ "and Ethos's grief-aware copy — warmth as a category position.",
24
+
25
+ fonts: {
26
+ display: {
27
+ family: "Plus Jakarta Sans",
28
+ fallback: ["Inter", "system-ui", "-apple-system", "sans-serif"],
29
+ from: "Lemonade/Ethos display — friendly geometric sans, slightly humanist warmth",
30
+ googleFont: "Plus+Jakarta+Sans",
31
+ weights: [500, 600, 700, 800],
32
+ },
33
+ body: {
34
+ family: "Inter",
35
+ fallback: ["system-ui", "-apple-system", "BlinkMacSystemFont", "sans-serif"],
36
+ from: "clean sans body for policy language, quote-flow questions, claim-status updates",
37
+ googleFont: "Inter",
38
+ weights: [400, 500, 600],
39
+ },
40
+ mono: {
41
+ family: "JetBrains Mono",
42
+ fallback: ["ui-monospace", "SFMono-Regular", "Consolas", "monospace"],
43
+ from: "policy numbers, premium amounts, deductible figures — tabular for the quote-summary card",
44
+ googleFont: "JetBrains+Mono",
45
+ weights: [400, 500],
46
+ },
47
+ },
48
+
49
+ typography: {
50
+ headingTracking: "-0.02em", // friendly sans wants tight tracking
51
+ bodyTracking: "0",
52
+ fontFeatureSettings: '"cv11", "ss01", "tnum"',
53
+ h1ScaleClamp: "clamp(2.25rem, 5vw, 3.75rem)",
54
+ bodyBaseSize: "1rem",
55
+ bodyLineHeight: "1.6",
56
+ },
57
+
58
+ colors: {
59
+ background: { hsl: "18 60% 97%", from: "Ethos peach paper — softer than dashboard white, warmer than spa cream" },
60
+ foreground: { hsl: "346 38% 16%", from: "deep mauve-ink — reads on peach without enterprise navy coldness" },
61
+ card: { hsl: "0 0% 100%", from: "pure white card — lifts cleanly off peach background" },
62
+ popover: { hsl: "0 0% 100%", from: "same as card" },
63
+ primary: { hsl: "346 78% 56%", from: "Lemonade pink — the friendly category brand-mark" },
64
+ primaryForeground: { hsl: "0 0% 100%", from: "white on pink" },
65
+ secondary: { hsl: "18 45% 93%", from: "deeper peach panel — secondary surfaces, aside" },
66
+ secondaryForeground: { hsl: "346 38% 18%", from: "mauve ink on peach" },
67
+ muted: { hsl: "18 40% 95%", from: "table-row stripe softer than secondary" },
68
+ mutedForeground: { hsl: "346 14% 44%", from: "warm slate — captions, premium-breakdown helper text" },
69
+ accent: { hsl: "346 80% 95%", from: "pink tint — hover surface, step-active chip" },
70
+ accentForeground: { hsl: "346 70% 32%", from: "deep pink on tint" },
71
+ border: { hsl: "18 30% 88%", from: "warm hairline — Lemonade panel rule, never cool gray" },
72
+ input: { hsl: "18 30% 88%", from: "same as border" },
73
+ ring: { hsl: "346 78% 56%", from: "primary pink, used for focus" },
74
+ destructive: { hsl: "0 78% 56%", from: "claim-denied / coverage-gap red — warmer than enterprise red" },
75
+ destructiveForeground: { hsl: "0 0% 100%", from: "white on red" },
76
+ brand: {
77
+ pink: { hsl: "346 78% 56%", from: "= primary; Lemonade signature pink" },
78
+ "pink-soft": { hsl: "346 80% 95%", from: "= accent; pink tint for chips and step-active state" },
79
+ "pink-deep": { hsl: "346 80% 38%", from: "pink hover-darken" },
80
+ peach: { hsl: "18 60% 97%", from: "= background; Ethos peach paper" },
81
+ "peach-deep": { hsl: "18 45% 93%", from: "= secondary; deeper peach for aside panels" },
82
+ coral: { hsl: "8 75% 62%", from: "secondary warmth accent — claim-paid checkmark, coverage-active dot" },
83
+ "coral-soft": { hsl: "8 80% 95%", from: "coral tint — status pill" },
84
+ mint: { hsl: "165 50% 50%", from: "covered/good-status accent — premium-on-track, deductible-met" },
85
+ "mint-soft": { hsl: "165 55% 94%", from: "mint tint — covered chip" },
86
+ },
87
+ },
88
+
89
+ spacing: {
90
+ base: 4,
91
+ scale: [4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 64, 80],
92
+ containerMax: "max-w-6xl",
93
+ containerPadding: "px-4 lg:px-8",
94
+ sectionPadding: {
95
+ hero: "pt-20 pb-14 lg:pt-28 lg:pb-20",
96
+ default: "py-14 lg:py-20",
97
+ tight: "py-10 lg:py-14",
98
+ },
99
+ },
100
+
101
+ radius: {
102
+ base: "1rem", // 16px — DTC-soft, the Lemonade pillow signature
103
+ pillsAllowed: true, // pills core — coverage-status, claim-state, premium-tier
104
+ },
105
+
106
+ shadows: {
107
+ style: "soft",
108
+ utilities: {
109
+ "shadow-soft":
110
+ "0 2px 4px hsl(346 30% 40% / 0.04), 0 8px 24px hsl(346 30% 40% / 0.08)",
111
+ "shadow-soft-lg":
112
+ "0 4px 8px hsl(346 30% 40% / 0.06), 0 20px 48px hsl(346 30% 40% / 0.12)",
113
+ "shadow-popover":
114
+ "0 6px 16px hsl(346 30% 40% / 0.08), 0 24px 64px hsl(346 30% 40% / 0.16)",
115
+ "shadow-pink-glow":
116
+ "0 0 0 4px hsl(346 78% 56% / 0.12), 0 8px 24px hsl(346 60% 50% / 0.16)",
117
+ },
118
+ },
119
+
120
+ motion: {
121
+ easing: "cubic-bezier(0.22, 1, 0.36, 1)",
122
+ durations: {
123
+ reveal: 500,
124
+ loop: 2400,
125
+ ambient: 0,
126
+ },
127
+ keyframes: {
128
+ "fade-rise": {
129
+ css:
130
+ "from { opacity: 0; transform: translateY(12px); }\n" +
131
+ "to { opacity: 1; transform: translateY(0); }",
132
+ defaultDuration: 500,
133
+ iteration: "once",
134
+ purpose: "card and step entrance — DTC-friendly, not slow-magazine",
135
+ },
136
+ "scale-in": {
137
+ css:
138
+ "from { opacity: 0; transform: scale(0.94); }\n" +
139
+ "to { opacity: 1; transform: scale(1); }",
140
+ defaultDuration: 220,
141
+ iteration: "once",
142
+ purpose: "modal, popover, claim-paid confirmation — confirms with delight",
143
+ },
144
+ "soft-pulse": {
145
+ css:
146
+ "0%, 100% { transform: scale(1); opacity: 1; }\n" +
147
+ "50% { transform: scale(1.04); opacity: 0.9; }",
148
+ defaultDuration: 2400,
149
+ iteration: "infinite",
150
+ purpose: "active-step ring, live-quote-updating indicator — quiet delight",
151
+ },
152
+ "shimmer": {
153
+ css:
154
+ "0% { background-position: -200% 0; }\n" +
155
+ "100% { background-position: 200% 0; }",
156
+ defaultDuration: 1600,
157
+ iteration: "infinite",
158
+ purpose: "quote-loading skeleton",
159
+ },
160
+ },
161
+ respectsReducedMotion: true,
162
+ },
163
+
164
+ density: "medium",
165
+
166
+ patterns: {
167
+ button:
168
+ "Primary = solid pink fill, white text, rounded-2xl (16px), shadow-soft. " +
169
+ "Hover lifts to shadow-soft-lg + 4% darken; on the quote CTA, hover adds shadow-pink-glow. " +
170
+ "Secondary = white fill, 1px warm border, foreground text. Tertiary = pink text-link. " +
171
+ "Generous height (h-12) — DTC mobile-first tap targets.",
172
+ card:
173
+ "Rounded-2xl (16px), white fill on peach, 1px warm border, shadow-soft. " +
174
+ "Internal padding p-6 lg:p-8. Quote-step cards use a 4px top-border in pink for active, mint for done. " +
175
+ "Policy-coverage card uses pink-soft inset background for the premium-amount row.",
176
+ input:
177
+ "Rounded-xl (12px), 1px warm border, white background. Generous height (h-12). " +
178
+ "Label above in Inter 500. Focus = 2px pink ring at 40% opacity + shadow-pink-glow. " +
179
+ "Inline validation in mint (good) or red (problem).",
180
+ cta:
181
+ "Primary pink solid is the quote-flow default. " +
182
+ "Voice is plain-English-friendly: 'Get a quote in 90 seconds', 'See what you'd pay', 'Start your claim'. " +
183
+ "Never insurance-jargon ('Bind coverage', 'Effective date election') in marketing CTAs — that's policy-page language.",
184
+ },
185
+
186
+ details: {
187
+ selectionBg: "hsl(var(--primary) / 0.22)",
188
+ selectionFg: "hsl(var(--foreground))",
189
+ focusRing: "2px solid hsl(var(--ring) / 0.5)",
190
+ scrollbarStyle: "thin",
191
+ },
192
+ };
@@ -0,0 +1,97 @@
1
+ # Design Direction — Kaiju-Reveal
2
+
3
+ ## Ethos
4
+ Godzilla slow reveal · Blade Runner 2049 atmospheric dread · Denis Villeneuve monumental scale · Akira neon-dystopian · Dune monolithic
5
+
6
+ ## Feel
7
+ Monolithic scale. Ultra-slow reveals. Atmospheric haze and depth. One accent color carved out of darkness — either cold cyan (Villeneuve) or blood orange (Godzilla flame). Reads like a film trailer that takes 30 seconds to show its hand — the opposite of TikTok.
8
+
9
+ ## Reference brands
10
+ - **Godzilla** → slow-approach poster reveal. The silhouette emerges from haze; the title-card pacing earns the monster.
11
+ - **Blade Runner 2049** → Villeneuve scale, Roger Deakins orange/cyan grade, fog and atmosphere as primary surface.
12
+ - **Dune** → monumental dunes and brutalist sand scale. Monoliths against sky; humans as specks.
13
+ - **Akira** → neon dystopia, biker trails, the single saturated neon-pink line through black Neo-Tokyo.
14
+ - **IMAX trailers** → slow zoom and title-card pacing. The hand is shown last.
15
+ - **Roger Deakins** → atmospheric haze, the orange-and-teal cinematography that this direction grades to.
16
+
17
+ ## Tokens
18
+ HSL triples in `src/index.css`. Every token's `from:` comment names a brand·trait origin — untraceable tokens fail review. Brand tokens: `--flame` (Godzilla atomic-breath orange, also the primary), `--cyan-cold` (Blade Runner 2049 Joi-hologram accent, also the focus ring), `--monolith` (Dune ship void), `--dread-red` (deep blood, atomic-breath low-burn before flash), `--haze` (Villeneuve atmospheric fog), `--neon-pink` (Akira biker trail), `--trench` (the deep oceanic black, also semantic background).
19
+
20
+ Surface stack steps through 3-4% lightness from `bg (trench) → card → popover → secondary → muted → accent`, holding a constant `225` blue-biased hue. Depth comes from **atmospheric glow utilities and fog-shadow**, never from fill differentiation.
21
+
22
+ Pure black is forbidden — `--background` is `225 35% 4%`, a Pacific-trench black with a slight blue bias. Pure white is forbidden — `--foreground` is `25 8% 88%`, the muted haze-white of Villeneuve atmospheric grading.
23
+
24
+ ## Typography
25
+ - **Display:** Playfair Display Black (weights 400/700/900). Bodoni-equivalent ultra-bold serif at monumental title-card scale. Heading tracking `-0.02em` — tightens at scale, the way IMAX title cards crush.
26
+ - **Body:** Inter (400/500/600). Clean sans — its job is to disappear so the serif title carries the dramatic weight.
27
+ - **Mono:** JetBrains Mono. Reserved for Kanji-style metadata strips, runtime stamps, frame counts — the small instrument print under the title card.
28
+
29
+ H1 uses `clamp(3.5rem, 11vw, 9rem)` — IMAX-monumental. Body base is 16px with line-height **1.7** for atmospheric breathing. Font features: `"ss01", "tnum", "lnum"`. Display headings default to mixed-case for the serif drama; ALL CAPS is reserved for the ghost-outline button label ("APPROACH") and section eyebrows.
30
+
31
+ ## Spacing
32
+ - **Container:** `max-w-7xl px-6 lg:px-12` — wide. 2.39:1 cinema stills and aerial drone footage demand the screen.
33
+ - **Section padding tiers:**
34
+ - Hero: `pt-32 pb-24 lg:pt-48 lg:pb-40` — title cards earn their reveal time
35
+ - Default: `py-24 lg:py-40`
36
+ - Tight: `py-16 lg:py-24`
37
+ - **Allowed scale values:** 4 8 12 16 20 24 32 48 64 96 128 160 200 240. Low density — monumental scale demands breath.
38
+
39
+ ## Color
40
+ No hex anywhere in component files. All color via tokens. Opacity via `/N` modifier. The flame (`--flame`) and the cyan-cold (`--cyan-cold`) are **never used together at full saturation on the same surface** — they are the two opposing accents of Deakins grading, and they fight if combined. Convention: choose ONE accent per page or per hero — flame for warmth and Kaiju dread, cyan-cold for icy Villeneuve isolation. Use `--neon-pink` only for Akira-coded one-of-one moments — a biker-trail line, a single rare CTA, never general UI.
41
+
42
+ ## Radius
43
+ `--radius: 0`. **Monumental sharp — pillars, monoliths, not pebbles.** Pills are disallowed (`pillsAllowed: false`). If a UI element needs softness, achieve it through haze, glow, and whitespace, never through corner rounding.
44
+
45
+ ## Shadows
46
+ **Glow style.** Three utilities, all for media and monumental surfaces:
47
+ - `.atmospheric-glow` — `0 0 0 1px flame/0.25, 0 40px 120px flame/0.28, 0 80px 240px flame/0.22`. Massive 200px+ blurred radial halo in flame orange. Use on the single hero card per page, or behind the Kaiju silhouette in title sequences.
48
+ - `.atmospheric-glow-cyan` — same construction with `--cyan-cold`. Use on Villeneuve-coded hero cards, instrumented panels, anything that should feel like Joi's hologram lit from within.
49
+ - `.fog-shadow` — heavy bottom-blur, two layers in `--trench` (95% and 85%). The foreground hugs the deep; the monolith casts fog, not edge. Use on floating cards above the trench background.
50
+
51
+ Conventional drop shadows are forbidden. Glow and fog ARE the elevation language.
52
+
53
+ ## Motion
54
+ Three keyframes, all ultra-slow. Durations cluster at **3.5s (reveal), 8s (loop), 60s (ambient)** — the opposite of social-media pacing:
55
+ - `slow-reveal` (3500ms once) — opacity 0→1, scale 1.04→1, blur 8px→0. Three-to-four-second title-card crawl out of haze. Title cards and monumental section reveals only.
56
+ - `ken-burns-monumental` (60000ms infinite) — scale 1.02 → 1.10 with subtle translate. 60s drone push over aerial landscape. The drift is barely perceptible by design — you should not catch it unless you stare.
57
+ - `flame-flicker` (8000ms infinite) — subtle opacity and brightness pulse on accent color. The flame breathes like a distant fire; the cyan breathes like a hologram. 8s cycle, never faster.
58
+
59
+ Easing: `cubic-bezier(0.22, 1, 0.36, 1)`. `prefers-reduced-motion` is honored — every keyframe wraps in the media query and ambient loops drop to a static frame.
60
+
61
+ **Hard rule:** no quick cuts, no autoplay loops shorter than 6 seconds, no parallax that exceeds the ken-burns budget. This direction is *ultra-slow on purpose*.
62
+
63
+ ## Component patterns
64
+ - **Buttons:** primary is a **ghost monolithic outline** — thick foreground border, transparent fill, ALL CAPS sparse tracking (`tracking-[0.18em]`) for labels like *APPROACH*, *REVEAL*, *ENTER*. Hover inverts to a filled foreground face with the `.atmospheric-glow` halo. **Never a flame-orange fill button at rest** — flame is the carved accent, not a chrome surface. One hero action per page; everything else is a text-link in foreground color.
65
+ - **Cards:** sharp `rounded-none`, hairline `--border`, `bg-card` one stop above trench. Padding `p-8 lg:p-16` — monumental cards breathe. Optional `.atmospheric-glow` or `.atmospheric-glow-cyan` on the single hero card; `.fog-shadow` on floating monoliths above the deep.
66
+ - **Inputs:** emphasized 2px bottom border in `--foreground`, thin 1px `--border` on the other three sides, `bg-card`, radius 0. Label above in display serif at small size with `tracking-[0.1em] uppercase`. Focus ring is **cyan-cold, 1px** — never flame.
67
+ - **CTAs:** ghost monolithic outline button for the single hero action. Secondary CTAs are foreground text-link with cyan-cold underline-on-hover. **Never a chip, never a pill, never a gradient.** The language is carved stone, not glass.
68
+
69
+ ## Recommended rich media
70
+ Cover: aerial monumental landscape video (slow drone passes, fog, sun), close-up texture footage (sand dunes, ocean swells, neon raindrops on chrome), atmospheric stills with heavy haze grading. Color grading lives in the **Deakins orange-and-teal** dyad — flame highlights against cyan-cold shadow, never mid-tone saturation. Title cards are full-bleed serif on near-black.
71
+
72
+ **AI tool recommendations:**
73
+ - **Sora / Veo** — hero video at 21:9 or 2.39:1. Prompt with: *"Blade Runner 2049 cinematography, slow drone over fog-shrouded landscape, Roger Deakins cinematography, orange and teal grade, atmospheric haze, ultra-slow camera, anamorphic"*.
74
+ - **Midjourney / Flux** — stills. Include in every prompt: *"2.39:1 anamorphic, Deakins orange and teal grade, atmospheric fog, monumental scale, IMAX still"*. Add *"Villeneuve composition"* for landscapes; *"Akira neon Neo-Tokyo"* for rare neon-pink one-of-ones.
75
+ - **Topaz Video AI** — upscale stock or AI-generated footage to 4K; never downsample monumental footage to mobile-default crops.
76
+
77
+ **Aspect ratios:** **21:9 or 2.39:1 cinema only**, full-bleed. 16:9 is forbidden — it is web-default and undermines the monumental read. 1:1 and 9:16 are forbidden — they are social-media energy, the explicit opposite of this direction.
78
+
79
+ **Performance:** hero videos **≤8 MB**, encoded **AV1 or H.265**, `autoplay muted loop playsinline` — but never with a loop duration under 6 seconds. Mobile fallback to the still poster at 2.39:1 — never ship a sub-6s loop to small screens.
80
+
81
+ **Avoid:** any quick cuts, bright/saturated palettes, social-media energy, autoplay loops shorter than 6 seconds, 16:9 / 1:1 / 9:16 aspect ratios, lens-flare overlays (Y2K), gradient backgrounds (soft-modern), glassmorphic anything, drop-shadow product cutouts, AI footage with uncanny human faces in the foreground (Kaiju-reveal is monumental landscape and silhouette, not portrait), any color outside the orange/teal/dread-red/neon-pink/haze palette.
82
+
83
+ **Accessibility:** every video carries a still **poster** attribute graded to match. Alt-text describes the cinematic feel in full sentences — *"Aerial drone shot of fog rolling between Arrakis-like dunes at dusk, flame-orange sun low on the horizon, deep teal shadows in the valley"* is the bar. Captions on any video with dialogue or scored narration.
84
+
85
+ ## Component families
86
+ None at install time. Family conventions emerge as the project grows; the Director appends them here as they're established. Likely first families: `TitleCardReveal` (slow-reveal serif over haze), `MonolithCard` (atmospheric-glow framed hero), `MetadataStrip` (Kanji-style mono runtime stamps), `KenBurnsHero` (60s monumental drift).
87
+
88
+ ## Details
89
+ - **Selection:** `hsl(var(--flame) / 0.28)` background, foreground text. Flame, not cyan — selection is the warm carved accent, not the focus instrument.
90
+ - **Focus ring:** `1px solid hsl(var(--cyan-cold))`. Thin, icy — the Villeneuve instrument, never flame. Flame and cyan-cold are the two opposing accents and they switch jobs deliberately.
91
+ - **Scrollbar:** thin.
92
+
93
+ ## Exceptions
94
+ None yet. When an intentional one-of-one violation lands, add it here with the reason. The Director's consistency pass lists all exceptions for human review.
95
+
96
+ ## Revisions
97
+ - Initial direction, generated at install time.
@@ -0,0 +1,185 @@
1
+ import type { Direction } from "../schema";
2
+
3
+ export const kaijuReveal: Direction = {
4
+ name: "kaiju-reveal",
5
+ ethos:
6
+ "Godzilla slow reveal · Blade Runner 2049 atmospheric dread · Denis Villeneuve monumental scale · Akira neon-dystopian · Dune monolithic",
7
+ references: [
8
+ { brand: "Godzilla", trait: "slow-approach poster reveal and atmospheric title-card haze" },
9
+ { brand: "Blade Runner 2049", trait: "Villeneuve scale, orange/cyan grading, fog and atmosphere" },
10
+ { brand: "Dune", trait: "Villeneuve monumental dunes, brutalist sand scale" },
11
+ { brand: "Akira", trait: "neon dystopia, motorbike trails, biker pink" },
12
+ { brand: "IMAX trailers", trait: "slow zoom, title-card pacing, 30-second hand-reveal" },
13
+ { brand: "Roger Deakins", trait: "orange and teal cinematography, atmospheric haze" },
14
+ ],
15
+ feel:
16
+ "Monolithic scale. Ultra-slow reveals. Atmospheric haze and depth. " +
17
+ "One accent color carved out of darkness — either cold cyan (Villeneuve) or blood orange (Godzilla flame). " +
18
+ "Reads like a film trailer that takes 30 seconds to show its hand — the opposite of TikTok.",
19
+
20
+ fonts: {
21
+ display: {
22
+ family: "Playfair Display",
23
+ fallback: ["Bodoni 72", "Bodoni Moda", "Didot", "Georgia", "serif"],
24
+ from: "Playfair Display Black — Bodoni-equivalent ultra-bold serif at monumental title-card size",
25
+ googleFont: "Playfair+Display:wght@400;700;900",
26
+ weights: [400, 700, 900],
27
+ },
28
+ body: {
29
+ family: "Inter",
30
+ fallback: ["system-ui", "-apple-system", "BlinkMacSystemFont", "sans-serif"],
31
+ from: "clean sans — lets the serif title carry the dramatic weight",
32
+ googleFont: "Inter",
33
+ weights: [400, 500, 600],
34
+ },
35
+ mono: {
36
+ family: "JetBrains Mono",
37
+ fallback: ["Berkeley Mono", "ui-monospace", "SFMono-Regular", "Consolas", "monospace"],
38
+ from: "Kanji-style metadata strips and runtime stamps — small instrument print under the title card",
39
+ googleFont: "JetBrains+Mono",
40
+ weights: [400, 500],
41
+ },
42
+ },
43
+
44
+ typography: {
45
+ headingTracking: "-0.02em", // monumental ultra-bold serif tightens at scale
46
+ bodyTracking: "0.01em",
47
+ fontFeatureSettings: '"ss01", "tnum", "lnum"',
48
+ h1ScaleClamp: "clamp(3.5rem, 11vw, 9rem)", // IMAX title-card scale — monumental
49
+ bodyBaseSize: "1rem",
50
+ bodyLineHeight: "1.7", // generous — atmosphere needs air
51
+ },
52
+
53
+ colors: {
54
+ background: { hsl: "225 35% 4%", from: "deep oceanic black with slight blue bias — Pacific trench, Kaiju depth" },
55
+ foreground: { hsl: "25 8% 88%", from: "muted off-white — Villeneuve atmospheric haze, never pure" },
56
+ card: { hsl: "225 30% 7%", from: "elevated surface, one stop above the trench — fog-layer above the deep" },
57
+ popover: { hsl: "225 28% 9%", from: "popover/menu surface, two stops up — second fog layer" },
58
+ primary: { hsl: "14 95% 50%", from: "Godzilla flame orange / Villeneuve sun — the single carved accent" },
59
+ primaryForeground: { hsl: "225 35% 4%", from: "trench-black on flame orange" },
60
+ secondary: { hsl: "225 22% 11%", from: "Dune monolithic shadow tier — heavier than card, still in the deep" },
61
+ secondaryForeground: { hsl: "25 8% 88%", from: "haze on monolithic shadow" },
62
+ muted: { hsl: "225 18% 13%", from: "muted surface — same family as secondary, fractionally lifted" },
63
+ mutedForeground: { hsl: "25 8% 65%", from: "Villeneuve atmospheric fog — secondary text reads as distance" },
64
+ accent: { hsl: "225 16% 16%", from: "hover surface — Dune-stone highlight, Brutalist plinth" },
65
+ accentForeground: { hsl: "25 8% 88%", from: "haze on stone" },
66
+ border: { hsl: "225 16% 18%", from: "monolithic edge — sharp seam between fog layers" },
67
+ input: { hsl: "225 16% 18%", from: "same as border — one hairline language for the void" },
68
+ ring: { hsl: "195 85% 55%", from: "Blade Runner 2049 cold cyan — focus is the icy second accent, never flame" },
69
+ destructive: { hsl: "0 75% 35%", from: "dread-red deep blood — Kaiju eye-glow warning lamp" },
70
+ destructiveForeground: { hsl: "25 8% 88%", from: "haze on dread-red" },
71
+ brand: {
72
+ "cyan-cold": { hsl: "195 85% 55%", from: "Blade Runner 2049 cold accent — Joi hologram, K's coat" },
73
+ monolith: { hsl: "0 0% 8%", from: "Dune ship void — pure monolith black, the harvester's shadow" },
74
+ "dread-red": { hsl: "0 75% 35%", from: "deep blood — Godzilla atomic-breath low-burn before the flash" },
75
+ haze: { hsl: "25 8% 65%", from: "Villeneuve atmospheric fog — Sicario desert, BR2049 Vegas dust" },
76
+ "neon-pink": { hsl: "325 100% 60%", from: "Akira biker neon — Kaneda's bike trail in night Neo-Tokyo" },
77
+ flame: { hsl: "14 95% 50%", from: "Godzilla flame orange — semantic primary, also the sun in Arrakis dusk" },
78
+ trench: { hsl: "225 35% 4%", from: "the deep oceanic black — semantic background, the Pacific where Kaiju sleep" },
79
+ },
80
+ },
81
+
82
+ spacing: {
83
+ base: 4,
84
+ scale: [4, 8, 12, 16, 20, 24, 32, 48, 64, 96, 128, 160, 200, 240], // low density — monumental scale demands breath
85
+ containerMax: "max-w-7xl", // 2.39:1 cinema stills and aerial drone footage need the screen
86
+ containerPadding: "px-6 lg:px-12",
87
+ sectionPadding: {
88
+ hero: "pt-32 pb-24 lg:pt-48 lg:pb-40", // title cards earn their reveal time
89
+ default: "py-24 lg:py-40",
90
+ tight: "py-16 lg:py-24",
91
+ },
92
+ },
93
+
94
+ radius: {
95
+ base: "0", // monumental sharp — pillars, monoliths, not pebbles
96
+ pillsAllowed: false, // pills read app/dashboard; monumental UI uses rectangles only
97
+ },
98
+
99
+ shadows: {
100
+ style: "glow",
101
+ utilities: {
102
+ "atmospheric-glow":
103
+ "0 0 0 1px hsl(var(--flame) / 0.25), " +
104
+ "0 40px 120px hsl(var(--flame) / 0.28), " +
105
+ "0 80px 240px hsl(var(--flame) / 0.22)",
106
+ "atmospheric-glow-cyan":
107
+ "0 0 0 1px hsl(var(--cyan-cold) / 0.3), " +
108
+ "0 40px 120px hsl(var(--cyan-cold) / 0.3), " +
109
+ "0 80px 240px hsl(var(--cyan-cold) / 0.24)",
110
+ "fog-shadow":
111
+ "0 60px 100px -20px hsl(var(--trench) / 0.95), " +
112
+ "0 120px 200px -40px hsl(var(--trench) / 0.85)",
113
+ },
114
+ },
115
+
116
+ motion: {
117
+ easing: "cubic-bezier(0.22, 1, 0.36, 1)",
118
+ durations: {
119
+ reveal: 3500, // ultra-slow — the title-card crawl
120
+ loop: 8000, // flame-flicker pulse pace
121
+ ambient: 60000, // 60s monumental ken-burns — barely perceptible
122
+ },
123
+ keyframes: {
124
+ "slow-reveal": {
125
+ css:
126
+ "0% { opacity: 0; transform: scale(1.04); filter: blur(8px); }\n" +
127
+ "60% { opacity: 0.4; filter: blur(2px); }\n" +
128
+ "100% { opacity: 1; transform: scale(1); filter: blur(0); }",
129
+ defaultDuration: 3500,
130
+ iteration: "once",
131
+ purpose:
132
+ "three- to four-second opacity-and-scale crawl emerging from haze — title cards and monumental reveals only",
133
+ },
134
+ "ken-burns-monumental": {
135
+ css:
136
+ "0% { transform: scale(1.02) translate(0, 0); }\n" +
137
+ "100% { transform: scale(1.10) translate(-1.5%, -0.8%); }",
138
+ defaultDuration: 60000,
139
+ iteration: "infinite",
140
+ purpose:
141
+ "60s aerial-landscape drift — Villeneuve drone push, motion is barely perceptible by design",
142
+ },
143
+ "flame-flicker": {
144
+ css:
145
+ "0%, 100% { opacity: 1; filter: brightness(1); }\n" +
146
+ "45% { opacity: 0.92; filter: brightness(0.94); }\n" +
147
+ "55% { opacity: 1; filter: brightness(1.06); }",
148
+ defaultDuration: 8000,
149
+ iteration: "infinite",
150
+ purpose:
151
+ "subtle accent-brightness pulse — flame or cyan accent breathes like a distant fire, 8s cycle",
152
+ },
153
+ },
154
+ respectsReducedMotion: true,
155
+ },
156
+
157
+ density: "low",
158
+
159
+ patterns: {
160
+ button:
161
+ "Primary CTA is a ghost monolithic outline — thick foreground border, transparent fill, " +
162
+ "ALL CAPS sparse tracking (e.g. \"APPROACH\", \"REVEAL\", \"ENTER\"). " +
163
+ "Hover inverts to filled foreground with .atmospheric-glow halo. " +
164
+ "Never a flame-orange fill button at rest — flame is the carved accent, not a chrome surface. " +
165
+ "One hero action per page; everything else is a text-link in foreground color.",
166
+ card:
167
+ "Sharp 0 corners. Hairline --border, bg-card one stop above the trench. " +
168
+ "Padding p-8 lg:p-16 — monumental cards breathe. " +
169
+ "Optional .atmospheric-glow or .atmospheric-glow-cyan for hero cards holding cinema-aspect media; .fog-shadow for floating monoliths above the deep.",
170
+ input:
171
+ "Bottom border emphasized (2px --foreground), thin 1px --border on the other three sides, bg-card, radius 0. " +
172
+ "Label above in display serif at small size with tracking 0.1em uppercase. Focus ring is cyan-cold, 1px.",
173
+ cta:
174
+ "Ghost monolithic outline button for the single hero action. " +
175
+ "Secondary CTAs are foreground text-link with cyan-cold underline-on-hover. " +
176
+ "Never a chip, never a pill, never a gradient — the language is carved stone, not glass.",
177
+ },
178
+
179
+ details: {
180
+ selectionBg: "hsl(var(--flame) / 0.28)",
181
+ selectionFg: "hsl(var(--foreground))",
182
+ focusRing: "1px solid hsl(var(--cyan-cold))",
183
+ scrollbarStyle: "thin",
184
+ },
185
+ };