@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,78 @@
1
+ # Design Direction — Pet-Food
2
+
3
+ ## Ethos
4
+ The Farmer's Dog beige restraint · Open Farm pantry-label warmth · Ollie playful DTC chrome · Spot & Tango fresh-batch friendliness · Nom Nom homemade-recipe sincerity
5
+
6
+ ## Feel
7
+ Pantry-label honesty meets dog-walk warmth. Beige and oat-cream surfaces, soft terracotta as the principal action, sage as the wellness mark, brown ink instead of black. Friendly humanist sans for chrome, gentle italic serif for ingredient names. The page feels like a folded recipe card from a small kitchen, not a vet portal or a scary feed-bag.
8
+
9
+ ## Reference brands
10
+ - **The Farmer's Dog** → beige paper + brown ink + dog-portrait hero. The principal reference for surfaces and ink color.
11
+ - **Open Farm** → pantry-label transparency. Sourcing is the design — every ingredient is named, weighted, and origin-tagged.
12
+ - **Ollie** → playful DTC chrome. Pup-profile-first flow; the dog's name leads the page.
13
+ - **Spot & Tango** → fresh-batch friendly type, weekly-delivery cadence.
14
+ - **Nom Nom** → homemade-recipe sincerity, soft photography, vet-formulated but never clinical.
15
+
16
+ ## Tokens
17
+ Surface stack is **oat-cream** (background) → **lighter oat** (card) → **deeper beige / sage tint** (secondary / muted / accent). Brand tokens: `--terracotta`, `--sage`, `--oat`, `--kraft`, `--ink`, `--pumpkin`. Primary is `--terracotta` — the principal action. `--sage` is the wellness/transparency mark (sourcing, vet-approval). `--pumpkin` is the limited-edition playful accent — birthday treats, holiday recipes — never default.
18
+
19
+ ## Typography
20
+ - **Display:** Fraunces. Soft serif with optical sizes — reads pantry-label, not church-bulletin. Use weights 500–700 for headings; italic is reserved for ingredient names ("free-range chicken" set in italic mid-sentence).
21
+ - **Body:** DM Sans. Friendly humanist sans, low x-height, warm on cream. 16px base, line-height 1.6.
22
+ - **Mono:** DM Mono. Reserved for ingredient weights ("212g"), batch numbers, delivery dates — the kitchen-recipe instrument feel.
23
+
24
+ H1 uses `clamp(2.25rem, 5.5vw, 4rem)`. Tracking `-0.015em` on display.
25
+
26
+ ## Spacing
27
+ - **Container:** `max-w-6xl px-4 lg:px-8` — pantry-shelf width, not magazine column.
28
+ - **Section padding tiers:**
29
+ - Hero: `pt-20 pb-14 lg:pt-28 lg:pb-20`
30
+ - Default: `py-16 lg:py-24`
31
+ - Tight: `py-10 lg:py-14`
32
+ - **Allowed scale values:** 4 6 8 10 12 16 20 24 32 40 48 64 80.
33
+
34
+ ## Color
35
+ No hex in components — tokens only. Pure white and pure black are forbidden; use `--oat` (background) and `--ink` (brown-22°). Saturated brand-blue, brand-purple, or signal-red are out of palette. Wellness-positive is sage; alert is `--destructive` (allergy/contraindication rust). No "trust blue" — this brand earns trust through ingredient transparency, not enterprise polish.
36
+
37
+ ## Radius
38
+ `--radius: 1rem` (16px). Generous, friendlier than soft-modern. Pills are allowed for breed-tags, life-stage chips ("Puppy", "Senior 7+"), and ingredient filters. Square corners are forbidden — they read clinical.
39
+
40
+ ## Shadows
41
+ **Soft.** `.shadow-pantry` for cards (1+6 pantry-shadow), `.shadow-pantry-lg` for hover lift. No glows, no neon edges — this is a kitchen, not a console.
42
+
43
+ ## Motion
44
+ Three keyframes: `fade-rise` (500ms entrance), `tail-wag` (800ms playful rotation, hover-only on pup avatars and birthday chips — *never* on functional UI), `soft-pulse` (2200ms loop for next-delivery countdown). `prefers-reduced-motion` is honored.
45
+
46
+ Easing `cubic-bezier(0.22, 1, 0.36, 1)`.
47
+
48
+ ## Component patterns
49
+ - **Buttons:** primary = terracotta solid + oat text, rounded-2xl, shadow-pantry. Secondary = oat fill + kraft border + brown-ink text. Tertiary = terracotta text-link. Never gradient — pantry labels are flat.
50
+ - **Cards:** rounded-2xl, oat-card on oat-cream, 1px kraft border, shadow-pantry. Pup-profile cards get a 2px terracotta top-border when the plan is active.
51
+ - **Inputs:** rounded-xl, 1px kraft border, oat-card fill. Pup-name and breed inputs may show a small dog-emoji glyph in the left padding. Focus = 2px terracotta ring at 40% opacity. Placeholder italic in soft-brown.
52
+ - **Plan-builder flow:** step indicators are small terracotta dots connected by a dashed kraft line. The dog's name appears in Fraunces italic at the top of every step ("Marlow's plan, step 2 of 3").
53
+ - **Ingredient cards:** kraft-bordered, ingredient name in Fraunces italic, weight in DM Mono, source line in DM Sans muted-foreground. Vet-approved badge in sage pill.
54
+
55
+ ## Recommended rich media
56
+ Photography is the lead medium: dog portraits in natural window light, food in shallow ceramic bowls, raw ingredients on wood cutting boards. Color graded to warm honey shadow, never high-key studio. Aspect ratios 4:5 portrait for pups, 3:2 landscape for food. Never 16:9 cinematic (off-feel for DTC). Never 1:1 (too Instagram-stock). No illustrated dog-icon decoration. No 3D renders of kibble.
57
+
58
+ **AI tool recommendations:** Midjourney with *"natural window light, golden retriever portrait, Kodak Portra 400 film, soft cream tones, slight grain, shallow depth of field"*. For food: *"raw chicken and sweet potato on wooden cutting board, overhead, soft natural light, cream linen background, no garnish, food photography"*. Avoid bright commercial pet-food stock.
59
+
60
+ **Performance:** hero pup ≤140 KB AVIF at 1600w; ingredient inline ≤80 KB. LCP ≤2s.
61
+
62
+ **Avoid:** stock photos of "happy family with golden retriever", cartoon dog mascots, paw-print decoration, kibble-bag-product-shot heroes (this site sells fresh, not bags), gradient backgrounds, glassmorphic anything, dark-mode toggle, "scientifically formulated" lab-coat shots — that is competitor territory, not ours.
63
+
64
+ **Accessibility:** alt-text describes the dog by breed and posture — *"A senior beagle rests its chin on a hand in late afternoon kitchen light."* Not *"A dog."*
65
+
66
+ ## Component families
67
+ None at install time. Plan-builder, ingredient-card, and pup-profile-row are the three canonical bespoke families; the Director will codify them as they're reused.
68
+
69
+ ## Details
70
+ - **Selection:** `hsl(var(--terracotta) / 0.2)` background, foreground text.
71
+ - **Focus ring:** `2px solid hsl(var(--ring) / 0.55)`.
72
+ - **Scrollbar:** thin.
73
+
74
+ ## Exceptions
75
+ None yet.
76
+
77
+ ## Revisions
78
+ - Initial direction, generated at install time.
@@ -0,0 +1,185 @@
1
+ import type { Direction } from "../schema";
2
+
3
+ // pet-food — The Farmer's Dog / Open Farm / Ollie warm DTC. Beige paper,
4
+ // friendly humanist sans, a single dog-walk-on-a-fall-morning palette:
5
+ // oat cream, terracotta, sage, brown ink. The page reads like a pantry
6
+ // label, not a vet chart. Photography is dog-portrait warm, never clinical.
7
+ export const petFood: Direction = {
8
+ name: "pet-food" as Direction["name"],
9
+ ethos:
10
+ "The Farmer's Dog beige restraint · Open Farm pantry-label warmth · " +
11
+ "Ollie playful DTC chrome · Spot & Tango fresh-batch friendliness · " +
12
+ "Nom Nom homemade-recipe sincerity",
13
+ references: [
14
+ { brand: "The Farmer's Dog", trait: "beige paper + brown ink + dog-portrait hero" },
15
+ { brand: "Open Farm", trait: "pantry-label transparency, sourcing as design" },
16
+ { brand: "Ollie", trait: "playful DTC chrome, pup-profile-first flow" },
17
+ { brand: "Spot & Tango", trait: "fresh-batch friendly type, weekly-delivery cadence" },
18
+ { brand: "Nom Nom", trait: "homemade-recipe sincerity, soft photography" },
19
+ ],
20
+ feel:
21
+ "Pantry-label honesty meets dog-walk warmth. Beige and oat-cream surfaces, " +
22
+ "soft terracotta as the principal action, sage as the wellness mark, brown ink " +
23
+ "instead of black. Friendly humanist sans for chrome, gentle italic serif for " +
24
+ "ingredient names. The page feels like a folded recipe card from a small kitchen, " +
25
+ "not a vet portal or a scary feed-bag.",
26
+
27
+ fonts: {
28
+ display: {
29
+ family: "Fraunces",
30
+ fallback: ["Recoleta", "Iowan Old Style", "Georgia", "serif"],
31
+ from: "Open Farm / Farmer's Dog — soft serif with optical sizes, reads pantry-label not church-bulletin",
32
+ googleFont: "Fraunces",
33
+ weights: [400, 500, 600, 700],
34
+ },
35
+ body: {
36
+ family: "DM Sans",
37
+ fallback: ["Inter", "system-ui", "-apple-system", "sans-serif"],
38
+ from: "Ollie / Spot & Tango — friendly humanist sans, low x-height, reads warm on cream",
39
+ googleFont: "DM+Sans",
40
+ weights: [400, 500, 600],
41
+ },
42
+ mono: {
43
+ family: "DM Mono",
44
+ fallback: ["IBM Plex Mono", "ui-monospace", "monospace"],
45
+ from: "ingredient weights, batch numbers, delivery dates — kitchen-recipe instrument feel",
46
+ googleFont: "DM+Mono",
47
+ weights: [400, 500],
48
+ },
49
+ },
50
+
51
+ typography: {
52
+ headingTracking: "-0.015em",
53
+ bodyTracking: "0",
54
+ fontFeatureSettings: '"ss01", "calt", "liga"',
55
+ h1ScaleClamp: "clamp(2.25rem, 5.5vw, 4rem)",
56
+ bodyBaseSize: "1rem",
57
+ bodyLineHeight: "1.6",
58
+ },
59
+
60
+ colors: {
61
+ background: { hsl: "36 38% 95%", from: "Farmer's Dog oat-cream — warmer than soft-modern white, never pure" },
62
+ foreground: { hsl: "22 32% 18%", from: "deep brown ink — never black; Open Farm ingredient panel text" },
63
+ card: { hsl: "36 44% 98%", from: "lighter oat — card lifts a half-step off the pantry-paper background" },
64
+ popover: { hsl: "36 44% 98%", from: "same as card" },
65
+ primary: { hsl: "14 62% 52%", from: "Farmer's Dog terracotta — warm rust, principal action" },
66
+ primaryForeground: { hsl: "36 44% 98%", from: "oat-cream on terracotta" },
67
+ secondary: { hsl: "36 28% 90%", from: "deeper beige panel — secondary surface, like brown-bag kraft" },
68
+ secondaryForeground: { hsl: "22 32% 22%", from: "brown ink on beige" },
69
+ muted: { hsl: "36 24% 92%", from: "quiet beige — table-row, helper background" },
70
+ mutedForeground: { hsl: "22 18% 42%", from: "soft brown — captions, meta, ingredient sub-text" },
71
+ accent: { hsl: "150 28% 88%", from: "Open Farm pale sage — hover and wellness chip surface" },
72
+ accentForeground: { hsl: "150 38% 22%", from: "deep sage on tint" },
73
+ border: { hsl: "30 22% 84%", from: "warm hairline — kraft-paper edge, never cool gray" },
74
+ input: { hsl: "30 22% 84%", from: "same as border" },
75
+ ring: { hsl: "14 62% 52%", from: "primary terracotta, focus only" },
76
+ destructive: { hsl: "8 70% 48%", from: "deeper rust — allergy / contraindication, distinct from terracotta primary" },
77
+ destructiveForeground: { hsl: "36 44% 98%", from: "oat-cream on alert" },
78
+ brand: {
79
+ terracotta: { hsl: "14 62% 52%", from: "= primary; Farmer's Dog principal action color" },
80
+ "terracotta-soft": { hsl: "14 58% 92%", from: "terracotta tint — selected step, plan-included chip" },
81
+ sage: { hsl: "150 38% 38%", from: "Open Farm wellness sage — protein/source markers, vet-recommended" },
82
+ "sage-soft": { hsl: "150 28% 88%", from: "alias for accent — adherence-good and natural-source chip" },
83
+ oat: { hsl: "36 38% 95%", from: "alias for background — the pantry-paper itself" },
84
+ kraft: { hsl: "30 30% 78%", from: "Open Farm kraft accent — sourcing-panel border, brown-bag energy" },
85
+ ink: { hsl: "22 32% 18%", from: "alias for foreground — warm brown ink, never black" },
86
+ pumpkin: { hsl: "28 78% 58%", from: "Ollie playful accent — limited-time recipe and birthday-treat callout" },
87
+ },
88
+ },
89
+
90
+ spacing: {
91
+ base: 4,
92
+ scale: [4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 64, 80],
93
+ containerMax: "max-w-6xl",
94
+ containerPadding: "px-4 lg:px-8",
95
+ sectionPadding: {
96
+ hero: "pt-20 pb-14 lg:pt-28 lg:pb-20",
97
+ default: "py-16 lg:py-24",
98
+ tight: "py-10 lg:py-14",
99
+ },
100
+ },
101
+
102
+ radius: {
103
+ base: "1rem", // 16px — generous DTC roundness, friendlier than soft-modern
104
+ pillsAllowed: true, // pills core for breed-tags, ingredient chips, plan toggles
105
+ },
106
+
107
+ shadows: {
108
+ style: "soft",
109
+ utilities: {
110
+ "shadow-pantry":
111
+ "0 1px 2px hsl(22 30% 30% / 0.05), 0 6px 16px hsl(22 30% 30% / 0.06)",
112
+ "shadow-pantry-lg":
113
+ "0 2px 6px hsl(22 30% 30% / 0.05), 0 18px 40px hsl(22 30% 30% / 0.10)",
114
+ "shadow-pantry-inset":
115
+ "inset 0 1px 0 hsl(0 0% 100% / 0.55)",
116
+ },
117
+ },
118
+
119
+ motion: {
120
+ easing: "cubic-bezier(0.22, 1, 0.36, 1)",
121
+ durations: {
122
+ reveal: 500,
123
+ loop: 2200,
124
+ ambient: 18000,
125
+ },
126
+ keyframes: {
127
+ "fade-rise": {
128
+ css:
129
+ "from { opacity: 0; transform: translateY(10px); }\n" +
130
+ "to { opacity: 1; transform: translateY(0); }",
131
+ defaultDuration: 500,
132
+ iteration: "once",
133
+ purpose: "entrance for ingredient panels, plan cards, testimonial rows",
134
+ },
135
+ "tail-wag": {
136
+ css:
137
+ "0%, 100% { transform: rotate(-3deg); }\n" +
138
+ "50% { transform: rotate(3deg); }",
139
+ defaultDuration: 800,
140
+ iteration: "once",
141
+ purpose: "playful hover on pup avatars and birthday-treat chips — never on functional UI",
142
+ },
143
+ "soft-pulse": {
144
+ css:
145
+ "0%, 100% { opacity: 1; }\n" +
146
+ "50% { opacity: 0.7; }",
147
+ defaultDuration: 2200,
148
+ iteration: "infinite",
149
+ purpose: "next-delivery countdown and fresh-batch availability indicator",
150
+ },
151
+ },
152
+ respectsReducedMotion: true,
153
+ },
154
+
155
+ density: "medium",
156
+
157
+ patterns: {
158
+ button:
159
+ "Primary = solid terracotta fill, oat-cream text, rounded-2xl, shadow-pantry. " +
160
+ "Secondary = oat-cream fill with 1px kraft border, brown-ink text. " +
161
+ "Tertiary = text-link in terracotta with underline-on-hover. " +
162
+ "Pills allowed for breed-tags, life-stage chips, and ingredient filters. " +
163
+ "Hover: shadow-pantry-lg + 2% darken. Never gradient fills — pantry labels are flat.",
164
+ card:
165
+ "Rounded-2xl, oat-card fill on oat-cream background, 1px kraft border, shadow-pantry. " +
166
+ "Internal padding p-6 lg:p-8. Title in Fraunces 600 (display serif), body in DM Sans. " +
167
+ "Pup-profile cards may use a 2px terracotta top-border to indicate the active plan.",
168
+ input:
169
+ "Rounded-xl, 1px kraft border, oat-card background. Label sits above in DM Sans 500. " +
170
+ "Focus = 2px terracotta ring at 40% opacity. Placeholder italic in soft-brown. " +
171
+ "Pup-name and breed-search inputs may show a small dog-emoji icon inside the left padding.",
172
+ cta:
173
+ "Primary terracotta solid is the principal action. " +
174
+ "'Build my plan' CTAs always lead — never side-by-side with a low-commitment secondary. " +
175
+ "Sage ghost is reserved for wellness/transparency context (ingredient sourcing, vet-approval). " +
176
+ "Pumpkin is the playful limited-time accent — birthday treats, holiday recipes, never default.",
177
+ },
178
+
179
+ details: {
180
+ selectionBg: "hsl(var(--terracotta) / 0.2)",
181
+ selectionFg: "hsl(var(--foreground))",
182
+ focusRing: "2px solid hsl(var(--ring) / 0.55)",
183
+ scrollbarStyle: "thin",
184
+ },
185
+ };
@@ -0,0 +1,164 @@
1
+ # Pharma Clinical
2
+
3
+ > Warm-professional pharmaceutical register — cream canvas at
4
+
5
+ **Slug:** `pharma-clinical` — **Surface:** web — **Density:** balanced
6
+
7
+ ## Influence
8
+
9
+ Big-pharmaceutical corporate publishing (Genentech at its warmest and
10
+ most patient-forward, Roche investor communications, Regeneron
11
+ scientific brochures). Distinct from tech-bio surfaces through the
12
+ WARM CREAM canvas + BODONI DISPLAY SERIF + BURGUNDY ACCENT trio —
13
+ which reads as trust-and-tradition rather than startup-and-disruption.
14
+ The register lives at the intersection of clinical-journal typography
15
+ and boutique-agency editorial polish.
16
+
17
+
18
+ ## Signature move
19
+
20
+ Warm cream canvas at #f7f3e8 — the register's non-negotiable base
21
+ (deliberately warmer than editorial's gallery #fafafa, cooler than
22
+ cabana-poster's #eedfca, and distinct from claude-cream #F4F1EA).
23
+ Cold near-black ink #1a1a1a with ONE burgundy accent #6b1a1a used
24
+ ONLY for clinical-phase chip fills + section-marker underlines +
25
+ hover states + pull-quote marks. Sharp corners everywhere.
26
+
27
+ Composition begins with a MASTHEAD — a Bodoni-family wordmark
28
+ "WATERSHED" (ALL CAPS, letter-spacing 0.03em, ~24px) on the left,
29
+ a horizontal nav row center (For patients / For clinicians / Our
30
+ science / Our pipeline / Careers / Investors), a filled burgundy
31
+ rectangular "Contact" button right-aligned. The masthead shrinks
32
+ after 200px of scroll.
33
+
34
+ Hero: a two-column split — LEFT column carries the big Bodoni
35
+ display headline (~64px, mixed case) + a Inter Tight body-copy
36
+ lede paragraph + a burgundy "Learn about our science →" text
37
+ link with hover underline. RIGHT column carries a full-bleed
38
+ patient / scientist portrait photograph (studio-quality, warm
39
+ directional light) with a small caption strip beneath ("Photograph:
40
+ Dr. Ren Havelock, Head of Clinical Research, Watershed").
41
+
42
+ Below the hero: a NUMBERED PIPELINE STAGES section — a horizontal
43
+ progress bar with 5 phase markers (Discovery / Preclinical / Phase
44
+ 01 / Phase 02 / Phase 03), each marked by a small burgundy chip and
45
+ a molecule count. On scroll into view, the progress fill animates
46
+ from 0 → active-phase% and phase chips fade in with 160ms stagger.
47
+
48
+ A PATIENT STORY BAND follows — a full-width warm cream inverted
49
+ band with a large patient portrait photograph on the left and a
50
+ patient-quote pull with attribution on the right ("For the first
51
+ time in eleven years, I slept through a Tuesday." — Amara, on
52
+ starting an investigational treatment). Italic Bodoni for the
53
+ pull quote at 32px.
54
+
55
+ CLINICAL DATA CALLOUTS — a 3-column grid with counting numbers:
56
+ 247 (active trials), 12,483 (patients enrolled globally), 89%
57
+ (retention through phase 3). Each number counts up from 0 on
58
+ scroll into view. Below each number a body-copy explanation and
59
+ a small footnote citation.
60
+
61
+ SCIENTIFIC ILLUSTRATION section — a paired layout with a bespoke
62
+ MOLECULE SVG on one side (a stylized protein-fold visualization)
63
+ and a scientific-explanation paragraph on the other. The molecule
64
+ is drawn as line-art with subtle burgundy highlights, not as a 3D
65
+ render.
66
+
67
+ MILESTONE TIMELINE — a vertical timeline (rule + dots) with 6
68
+ historical entries (Founded 2003, First IPO, First approval, etc).
69
+ Dots animate in with 120ms per-dot stagger on scroll into view.
70
+
71
+ CAREERS BAND — warm cream inverted background with a "We're
72
+ hiring across research + clinical + regulatory + commercial"
73
+ monumental Bodoni headline + a 4-column open-role list + a
74
+ photograph of the actual laboratory space.
75
+
76
+ Footer: a dark inverted band with the big Bodoni wordmark
77
+ repeated, colophon paragraph, 4-column utility grid (About,
78
+ Patients, Investors, Legal), and small legal disclaimers.
79
+
80
+ Six bespoke SVG marks (molecule protein-fold, capsule outline,
81
+ microscope silhouette, patient-portrait framing bracket, phase-
82
+ chip separator glyph, timeline milestone dot) are dropped as
83
+ PUNCTUATION at specific compositional moments — never as a
84
+ uniform icon row.
85
+
86
+ ## Palette
87
+
88
+ - **bg:** `#f7f3e8`
89
+ - **surface:** `#ffffff`
90
+ - **ink:** `#1a1a1a`
91
+ - **accent:** `#6b1a1a`
92
+
93
+ ## Typography
94
+
95
+ - **Display:** A Bodoni-family display serif with strong stress contrast and elegant serifs — the reference uses Fenice / Bodoni Moda. Free fallback stack — "Bodoni Moda", "Playfair Display", "PT Serif Display", Georgia, serif. Weight 500-700, mixed case for section titles + patient-name callouts, ALL CAPS ONLY for the wordmark. Top of scale ~64px for hero headline, 40px for section headings, 28px for pull quotes. Never uppercase at body scale.
96
+ - **Body:** A clean geometric sans for body copy — Inter Tight / Söhne / Aktiv Grotesk. Free fallback stack — "Inter Tight", Inter, "Space Grotesk", system-ui, sans-serif. Weight 400 for body copy, 500 for small labels, 600 for phase-indicator chips. 15-16px body copy, line-height 1.55.
97
+ - **Mono:** none. Pharma Clinical is a consumer corporate publishing surface. Mono has no role.
98
+ - **Scale:** 1.333 (perfect fourth — restrained, comfortable for long-form medical copy)
99
+
100
+ ## Motion
101
+
102
+ Ships live in the section renderer (no external dependencies):
103
+ 1. Hero display serif reveal — headline fades in from opacity 0 + translateY(24px) over 800ms cubic-bezier(0.23,1,0.32,1) on first paint. Body copy follows with 200ms delay.
104
+ 2. Hero photograph fade + scale — the patient/scientist portrait opens from opacity 0.5 + scale(1.02) to opacity 1 + scale(1) over 1200ms cubic-bezier.
105
+ 3. Numbered pipeline progress bar — as the pipeline section scrolls into view (IntersectionObserver at 40%), the progress fill animates from 0% → active-phase% over 1400ms cubic-bezier. Phase-indicator chips fade in with 160ms per-chip stagger.
106
+ 4. Clinical data counters — each stat number rolls from 0 → target on first scroll into view via requestAnimationFrame, 2000ms ease-out.
107
+ 5. Patient portrait progressive reveal — the story-band portrait fades from blur(6px) + opacity 0.4 → blur(0) + opacity 1 over 900ms cubic-bezier.
108
+ 6. Timeline sequential reveal — milestone dots animate in with 120ms per-dot stagger + 500ms cubic-bezier when the timeline scrolls into view.
109
+ 7. Nav shrink on scroll — masthead height reduces from 88px → 56px after 200px of scroll, transitioning padding + wordmark font-size over 300ms cubic-bezier.
110
+ 8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier on IntersectionObserver at 25% threshold.
111
+ 9. prefers-reduced-motion: reduce — all reveals disabled; counters show final value; pipeline shows at active phase; nav still shrinks (state change); hover still works (interaction feedback).
112
+
113
+ Motion character: quiet, precise, trust-first. Custom cubic-bezier(0.23,1,0.32,1) for all reveals. Never marketing-loud, never startup-flashy — reads as a considered pharma annual report, not a SaaS product tour.
114
+
115
+
116
+ ## Imagery
117
+
118
+ EDITORIAL patient portrait + scientist portrait + laboratory
119
+ photography under warm directional light — the reference uses
120
+ quiet, dignified portraits of real patients and researchers, shot
121
+ in interior clinical / laboratory settings with soft window light.
122
+ FPO imagery here should read as considered documentary portraiture
123
+ (posed subject, warm interior light, minimal styling). NO stock
124
+ "diverse team in lab coats around a laptop" photography (that's the
125
+ AI-tell for corporate-pharma slop). NO 3D-rendered molecule
126
+ visualizations that read as game engine (bespoke SVG only). NO
127
+ warm-radial-gradient fills as placeholder decoration.
128
+
129
+ ## Best for
130
+
131
+ - Big-pharmaceutical and biopharmaceutical corporate sites
132
+ - Clinical trial recruitment and patient-facing pharma sites
133
+ - Medical research organizations and academic clinical research units
134
+ - Healthcare technology companies with a clinical / regulatory register
135
+ - Boutique specialty-med brands (fertility, precision oncology, rare disease)
136
+ - Corporate reports and investor communications for life-sciences firms
137
+
138
+ ## Reject if
139
+
140
+ _Director grades each of the following as a pass/fail check. Any violation blocks the theme._
141
+
142
+ - Dark canvas (near-black / true-black) as the primary background — Pharma Clinical's canvas is warm CREAM at #f7f3e8. A dark canvas inverts the trust-forward warm-professional register into a startup-biotech register (which is a different theme).
143
+ - Sans-serif display type — the display face MUST be a Bodoni-family serif with strong stress contrast (Bodoni Moda / Playfair Display fallback). Sans display collapses this into a modern-biotech register.
144
+ - Multi-color accent palette — the whole register's move is ONE burgundy accent doing everything (phase chips, hover states, underlines, pull-quote mark). Introducing amber / cyan / any second accent collapses the discipline into candy-corporate slop.
145
+ - Rounded corners on cards, buttons, phase-chip pills, timeline dots, or photograph frames — 0px radius everywhere.
146
+ - Stock diverse-team-in-lab-coat photography — imagery MUST feel like editorial documentary portraiture (quiet posed subjects under warm directional light). Stock team-around-laptop photography is the AI-tell for corporate pharma slop.
147
+ - 3D-rendered molecule visualizations — molecule illustrations MUST be bespoke SVG line-art with subtle burgundy highlights. Game-engine 3D renders read as tech-biotech, not warm-clinical.
148
+ - Mono-caps eyebrow labels outside the two legitimate use sites — CLINICAL-PHASE INDICATOR (PHASE 01) and SECTION MARKER (OUR SCIENCE) are the ONLY permitted mono-caps uses. Any additional 'SECTION · X' / 'CHAPTER · Y' / 'MIN READ' plate is slop-blocklist violation.
149
+ - Cycling headline words / auto-advancing sliders / horizontal tickers — pharma register requires STATIC, RESTRAINED motion. Marketing-web motion collapses into startup slop.
150
+ - Warm-radial gradient placeholder fills — every photograph FPO must read as documentary portraiture. Warm-radial gradients are the AI-tell for missing imagery.
151
+ - Big saturated hero-marketing display type at 200px+ — the register requires RESTRAINED display scale so the content (data callouts, patient stories, pipeline) carries the drama, not the type.
152
+
153
+ ## Banned defaults (inherited + theme-specific)
154
+
155
+ - claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is #f7f3e8, WARMER than claude-cream and distinct.
156
+ - void+acid (near-black bg + single bright acid-green or vermilion accent)
157
+ - broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns on non-editorial content)
158
+ - tech-bro purple gradient (purple→blue gradient hero + centered headline + double CTA + emoji icons)
159
+ - uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)
160
+ - dark-biotech-inversion (canvas is warm cream. Swapping to dark canvas collapses into a modern-biotech register that reads as startup, not big-pharma.)
161
+ - multi-accent-flood (ONE burgundy accent doing 100% of the punctuation. Introducing cyan / orange / any secondary accent collapses the discipline into candy-corporate.)
162
+ - stock-lab-coat-photography (imagery must feel documentary and considered. Stock diverse-team-in-lab is the AI-tell for corporate-pharma slop.)
163
+ - 3d-molecule-render (molecule visualization must be bespoke SVG line-art with burgundy highlights. 3D game-engine renders read as tech-startup, not warm-pharma.)
164
+ - monumental-marketing-hero (hero display stays RESTRAINED at ~64px so the pipeline / patient stories / data callouts carry the composition. Big marketing hero type collapses the register into SaaS slop.)
@@ -0,0 +1 @@
1
+ {"slug":"pharma-clinical","gates":[{"gate":"slop-blocklist","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T00:06:24.801Z","dismissed":[]},{"gate":"regression-scan","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T00:06:24.811Z","dismissed":[]},{"gate":"avoid-rubric","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T00:07:01.433Z","dismissed":[]},{"gate":"anchor-compare","verdict":{"passed":true,"failures":[],"skipped":"Family C rubric.md missing at /Users/mattfrischer/Taste/site/design-system/golden-set/C/rubric.md — anchor-compare skipped."},"ran_at":"2026-07-05T00:07:01.434Z","dismissed":[]}],"overall":"PASS","ran_at":"2026-07-05T00:06:24.801Z"}
@@ -0,0 +1,15 @@
1
+ // Generated from theme.yml. Merge into your tailwind.config.ts under theme.extend.
2
+ // slug: pharma-clinical
3
+ export const pharmaClinicalTailwindExtend = {
4
+ colors: {
5
+ bg: "#f7f3e8",
6
+ surface: "#ffffff",
7
+ ink: "#1a1a1a",
8
+ accent: "#6b1a1a",
9
+ },
10
+ fontFamily: {
11
+ display: ["A Bodoni-family display serif with strong stress contrast and elegant serifs — the reference uses Fenice / Bodoni Moda. Free fallback stack — \"Bodoni Moda\", \"Playfair Display\", \"PT Serif Display\", Georgia, serif. Weight 500-700, mixed case for section titles + patient-name callouts, ALL CAPS ONLY for the wordmark. Top of scale ~64px for hero headline, 40px for section headings, 28px for pull quotes. Never uppercase at body scale."],
12
+ body: ["A clean geometric sans for body copy — Inter Tight / Söhne / Aktiv Grotesk. Free fallback stack — \"Inter Tight\", Inter, \"Space Grotesk\", system-ui, sans-serif. Weight 400 for body copy, 500 for small labels, 600 for phase-indicator chips. 15-16px body copy, line-height 1.55."],
13
+ mono: ["none. Pharma Clinical is a consumer corporate publishing surface. Mono has no role."],
14
+ },
15
+ };