@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,172 @@
1
+ # Kinetic Data
2
+
3
+ > Editorial data-journalism register — FT-pink cream canvas at
4
+
5
+ **Slug:** `kinetic-data` — **Surface:** web — **Density:** balanced
6
+
7
+ ## Influence
8
+
9
+ Modern editorial data-journalism (NYT Upshot section at its most
10
+ chart-forward, Financial Times Chart Doctor, Reuters Graphics,
11
+ Bloomberg Businessweek Graphics, ProPublica investigative
12
+ visualizations). Distinct from institutional dashboards through the
13
+ EDITORIAL VOICE + LONG-FORM NARRATIVE + HAND-DRAWN CALLOUT
14
+ ANNOTATIONS + SOURCE-CITATION discipline. The register carries a
15
+ reader through the data with editorial writing, not with an
16
+ interactive product tour.
17
+
18
+
19
+ ## Signature move
20
+
21
+ FT-pink cream canvas at #fff1e5 — the register's non-negotiable base
22
+ (deliberately warmer than pure cream, distinctly editorial-warm and
23
+ distinctly NOT the pharma cream #f7f3e8 or the Yale ivory #f7f1e0).
24
+ Charcoal ink #333333 (warmer than pure black) with ONE editorial-red
25
+ accent #c8102e used ONLY for chart lines, hand-drawn callout arrows,
26
+ hover states, and pull-quote borders. Sharp corners everywhere.
27
+
28
+ MASTHEAD — a "THE READOUT" serif display wordmark on the left in the
29
+ Playfair-family display at 28px (mixed case, letter-spacing -0.01em,
30
+ drop caps optional), horizontal nav (Charts / Economy / Politics /
31
+ Climate / Newsletter / About) center, filled editorial-red "Subscribe"
32
+ button right-aligned. Shrinks after 200px scroll.
33
+
34
+ LIVE DATA TICKER — a thin band directly below the masthead with 4
35
+ mono numeric readouts updating every 4 seconds (unemployment / market
36
+ close / inflation / consumer sentiment). Format: 'UNEMPLOYMENT · 3.7% ·
37
+ ▲ 0.1' in mono with red up/down deltas.
38
+
39
+ CHART OF THE DAY (hero) — a two-column split. LEFT column carries a
40
+ small caps 'CHART OF THE DAY · MARCH 2026' label + big Playfair
41
+ display headline ('When the labor market cooled') + editorial body
42
+ copy in Inter Tight at 16px + author byline. RIGHT column carries a
43
+ MONUMENTAL LINE CHART SVG at ~640x400px — the line draws via
44
+ stroke-dashoffset over 1800ms, then 3 red arrow-and-caption
45
+ ANNOTATIONS fade in pointing to specific data points ('Peak monthly
46
+ additions, February 2024', 'Fed pause, June 2024', 'Latest reading:
47
+ 47k below trend'). Chart axis labels in Inter Tight 11px, source line
48
+ in small caps ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026').
49
+
50
+ BY THE NUMBERS — 4-column monumental numeric callout grid. Each
51
+ column: 'Numeric callout (240% / 47k / -12% / 3.7% Playfair display
52
+ at 72px in editorial red) + short caption + source citation'. Numbers
53
+ count up from 0 → target on scroll into view.
54
+
55
+ BAR CHART SECTION — a two-column split. LEFT: Playfair headline
56
+ ('Where the jobs actually landed.') + editorial body + methodology
57
+ note. RIGHT: HORIZONTAL BAR CHART SVG at ~560x480px with 8 sectors,
58
+ bars grow from 0 to target width with 80ms per-bar stagger on scroll,
59
+ baseline red rule draws first, longest bar highlighted red with
60
+ numeric label at end of bar.
61
+
62
+ DATA NARRATIVE — long-form editorial paragraphs with INLINE SMALL
63
+ MULTIPLES (mini line charts at 120x60px embedded in the body copy
64
+ as reader-supporting visualizations). Drop-cap on first paragraph in
65
+ Playfair 88px red.
66
+
67
+ AREA CHART SECTION — full-width area chart at ~1200x480px showing a
68
+ historical trend with editorial red area fill revealing via clip-path
69
+ animation. 4 red arrow-and-caption annotations at inflection points.
70
+ Body copy beneath.
71
+
72
+ SMALL MULTIPLES GRID — 8 mini line charts in a 4×2 grid showing the
73
+ same measurement across 8 subjects (regions / industries / countries).
74
+ Each chart has its own line draw + region label + numeric value.
75
+ Stagger reveal 120ms per chart.
76
+
77
+ BYLINE + METHODOLOGY — an inverted white surface with author photo
78
+ (bespoke SVG portrait), author bio, and a small caps 'METHODOLOGY'
79
+ section explaining the data provenance and calculations.
80
+
81
+ NEWSLETTER SUBSCRIBE STRIP — a warm cream inverted band with a
82
+ bespoke SVG chart-worthy illustration + subscribe form with mono
83
+ input placeholder.
84
+
85
+ FOOTER — dark inverted band with a Playfair 'THE READOUT'
86
+ wordmark at ~120px, 4-column utility grid (Editorial / Data / About /
87
+ Newsletter), and a small caps 'A FICTIONAL DAILY DATA-JOURNALISM
88
+ OUTLET' colophon line.
89
+
90
+ Six bespoke SVG marks (arrow-annotation, mini-line-chart, mini-bar-
91
+ chart, callout-bracket, source-citation-mark, byline-mark) drop as
92
+ PUNCTUATION at specific compositional moments, never as a uniform
93
+ icon row.
94
+
95
+ ## Palette
96
+
97
+ - **bg:** `#fff1e5`
98
+ - **surface:** `#ffffff`
99
+ - **ink:** `#333333`
100
+ - **accent:** `#c8102e`
101
+ - **secondary:** `#0a5a5a`
102
+
103
+ ## Typography
104
+
105
+ - **Display:** An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — "Playfair Display", "PT Serif Display", "Georgia", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em.
106
+ - **Body:** A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — "Inter Tight", Inter, "Söhne", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts.
107
+ - **Mono:** A geometric mono for numeric data readouts and live ticker values — "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment.
108
+ - **Scale:** 1.333 (perfect fourth — comfortable for long-form data journalism with strong hierarchy contrast)
109
+
110
+ ## Motion
111
+
112
+ Ships live in the section renderer (no external dependencies):
113
+ 1. Hero + Chart of the Day reveal — headline fades in from opacity 0 + translateY(20px) over 800ms cubic-bezier(0.23,1,0.32,1) on first paint. The line chart draws via SVG stroke-dashoffset from 0 to full path length over 1800ms cubic-bezier immediately after headline lands.
114
+ 2. Chart callout annotations — 3 red arrow-and-caption annotations fade in AFTER the chart line finishes drawing, staggered 200ms each. Each annotation is anchored to a specific data point with a hand-drawn arrow.
115
+ 3. Live data ticker — 4 numeric readouts at the top of the page cycle their values every 4 seconds via mock event stream (small delta each tick — reads as live-updating BLS-style stats).
116
+ 4. Bar chart animation — bars grow from 0 to target height with 80ms per-bar stagger + 700ms cubic-bezier on IntersectionObserver at 35% threshold. Baseline red rule draws first.
117
+ 5. Area chart animation — area fill reveals via clip-path animation from left to right over 1600ms cubic-bezier on scroll into view. Line traces along the top edge.
118
+ 6. Small multiples grid stagger — 8 small line charts stagger reveal at 120ms per chart, each with its own stroke-dashoffset draw.
119
+ 7. Numeric callout counters — 'By the Numbers' section numbers count up from 0 → target on IntersectionObserver at 30% threshold, 2000ms ease-out.
120
+ 8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier at 25% threshold.
121
+ 9. Nav shrink on scroll after 200px.
122
+ 10. prefers-reduced-motion: reduce — all reveals disabled; chart lines show at full stroke; bars at full height; areas fully filled; ticker still updates (state readout); state changes still fire.
123
+
124
+ Motion character: editorial, measured, source-cited. Custom cubic-bezier(0.23,1,0.32,1) for reveals. Never marketing-loud, never product-launch — reads as a data-journalism piece landing, not a SaaS product.
125
+
126
+
127
+ ## Imagery
128
+
129
+ BESPOKE SVG chart illustrations — the reference uses hand-illustrated
130
+ editorial charts (line / bar / area / small multiples) with
131
+ hand-drawn callout annotations and clean typographic axis labels.
132
+ FPO imagery here should read as considered editorial data
133
+ visualization (custom-drawn SVG charts, editorial-red single-hue
134
+ color scheme, small annotation arrows, source-citation lines).
135
+ NO stock chart imagery, NO 3D-rendered chart mockups, NO
136
+ warm-radial-gradient placeholder fills.
137
+
138
+ ## Best for
139
+
140
+ - Editorial data-journalism outlets (NYT Upshot / FT Chart Doctor / Reuters Graphics style)
141
+ - Investigative data-forward publications (ProPublica, Bloomberg Businessweek Graphics)
142
+ - Financial-news editorial sites with a data emphasis
143
+ - Think-tank quarterly publications with chart-heavy analysis
144
+ - Government / academic statistical reports (BLS / EU statistics agencies)
145
+ - Data-forward economic newsletters (Stratechery, Money Stuff-style)
146
+
147
+ ## Reject if
148
+
149
+ _Director grades each of the following as a pass/fail check. Any violation blocks the theme._
150
+
151
+ - Dark canvas — Kinetic Data's canvas is FT-PINK CREAM #fff1e5. Dark canvas inverts the editorial data-journalism register into a monitoring-dashboard register (which is a different theme — Enterprise Tech).
152
+ - Pure white or claude-cream canvas — #fff1e5 is deliberately WARMER and MORE SATURATED than pure cream, matching FT's distinctive salmon-pink canvas. Swapping to white/pure-cream kills the specific warmth of this base.
153
+ - Sans-serif display — the display face MUST be an editorial serif (Playfair / PT Serif / Georgia fallback). Sans display collapses the register into modern SaaS.
154
+ - Multi-color chart palettes — the whole register's move is ONE editorial-red hue doing all the chart line/annotation/callout work. Introducing blue + green + orange for chart data series collapses the discipline into generic-dashboard slop.
155
+ - Rounded corners on cards, buttons, or chart-container frames — 0px radius everywhere.
156
+ - Static charts with no animation — the register REQUIRES kinetic reveal. Line via stroke-dashoffset, bars via animated height, areas via clip-path. Static rendering collapses the theme's own name.
157
+ - Marketing-loud copy ('game-changing insights', 'unlock your data') — the register requires MEASURED editorial voice. Marketing-loud copy collapses into SaaS slop.
158
+ - 3D-rendered chart mockups or glossy dashboard imagery — visuals must be bespoke SVG editorial charts. 3D renders read as consumer-tech, not editorial journalism.
159
+ - Mono-caps eyebrow labels outside the two legitimate use sites — CHART DESIGNATION markers ('CHART OF THE DAY') and SOURCE citation lines ('SOURCE · US BLS · MARCH 2026') are the ONLY permitted uses. Any additional 'SECTION · X' plate is slop-blocklist violation.
160
+
161
+ ## Banned defaults (inherited + theme-specific)
162
+
163
+ - claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is #fff1e5 FT-pink, distinct from claude-cream.
164
+ - void+acid (near-black bg + single bright acid-green or vermilion accent) — canvas is cream, not dark.
165
+ - broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns) — Kinetic Data IS editorial so newspaper columns are legitimate, but hairline rules + 0px radius + newspaper columns must serve the chart-forward register, not fight it.
166
+ - tech-bro purple gradient
167
+ - uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)
168
+ - dark-canvas-inversion (canvas is FT-pink cream. Swapping to dark inverts the editorial data-journalism register into a monitoring-dashboard register.)
169
+ - sans-display-anywhere (editorial serif display is the register's fingerprint. Sans display collapses into SaaS.)
170
+ - multi-color-chart-palettes (ONE editorial-red hue does 100% of the chart accent work. Introducing multi-color chart palettes collapses into generic-dashboard slop.)
171
+ - static-charts (the register's own name — kinetic — requires kinetic chart reveals. Static charts fail the register.)
172
+ - 3d-chart-mockups (charts must be bespoke SVG editorial illustrations. 3D renders read as consumer-tech.)
@@ -0,0 +1 @@
1
+ {"slug":"kinetic-data","gates":[{"gate":"slop-blocklist","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T05:59:43.467Z","dismissed":[]},{"gate":"regression-scan","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T05:59:43.478Z","dismissed":[]},{"gate":"avoid-rubric","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T06:00:21.381Z","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-05T06:00:21.381Z","dismissed":[]}],"overall":"PASS","ran_at":"2026-07-05T05:59:43.467Z"}
@@ -0,0 +1,16 @@
1
+ // Generated from theme.yml. Merge into your tailwind.config.ts under theme.extend.
2
+ // slug: kinetic-data
3
+ export const kineticDataTailwindExtend = {
4
+ colors: {
5
+ bg: "#fff1e5",
6
+ surface: "#ffffff",
7
+ ink: "#333333",
8
+ accent: "#c8102e",
9
+ secondary: "#0a5a5a",
10
+ },
11
+ fontFamily: {
12
+ display: ["An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — \"Playfair Display\", \"PT Serif Display\", \"Georgia\", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em."],
13
+ body: ["A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — \"Inter Tight\", Inter, \"Söhne\", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts."],
14
+ mono: ["A geometric mono for numeric data readouts and live ticker values — \"IBM Plex Mono\", \"JetBrains Mono\", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment."],
15
+ },
16
+ };
@@ -0,0 +1,207 @@
1
+ # Kinetic Data — Family C, Editorial & Print (data-journalism subregion).
2
+ #
3
+ # NYT Upshot / FT Chart Doctor-anchored editorial data journalism.
4
+ # FT-pink cream canvas at #fff1e5 + charcoal ink (#333333) + ONE
5
+ # editorial-red accent (#c8102e) used for chart lines, annotations,
6
+ # and callout arrows. Editorial display serif + sans body pair (NYT
7
+ # Cheltenham + Franklin fallback: Playfair + Inter). Custom animated
8
+ # charts (line / bar / area / small multiples) with drawn callout
9
+ # annotations pointing to specific data points. Sharp corners
10
+ # everywhere.
11
+ #
12
+ # Influence anchor: New York Times Upshot section + Financial Times
13
+ # Chart Doctor + Reuters Graphics. Placeholder brand: "THE READOUT" —
14
+ # a fictional daily data-journalism outlet.
15
+ #
16
+ # Distinct from other Family C bases:
17
+ # - Editorial (v2) is Aperture photography-first quarterly
18
+ # - Pharma Clinical is Genentech warm-professional pharma
19
+ # - Education Formal is Yale institutional (dark navy)
20
+ # - Ember Poster is warm-dark editorial with hand-drawn ornaments
21
+ # - Cabana Poster is vintage travel-poster warmth
22
+ # Kinetic Data fills the EDITORIAL DATA JOURNALISM slot — chart-forward
23
+ # editorial magazine with animated data reveals, monumental numeric
24
+ # callouts, and a live data ticker.
25
+ #
26
+ # Twentieth theme via the v2 harness. Ninth Family C theme.
27
+ # Upgrade of the existing v1 archetype-fallback slug.
28
+
29
+ name: Kinetic Data
30
+ concept: Editorial data-journalism register — FT-pink cream canvas at #fff1e5 with charcoal ink and ONE editorial-red accent used for chart lines, annotations, and callout arrows. Editorial display serif for headlines paired with sans body for chart labels. Custom animated line / bar / area / small-multiples charts drawn via SVG stroke-dashoffset and animated fill-height, with hand-drawn callout annotations pointing to specific data points. Live data ticker at the top updating every 4s, monumental numeric callouts ('240%' 'k' style) at Chart of the Day scale, and a long-form data narrative with inline small multiples. Reads like an NYT Upshot / FT Chart Doctor feature — measured, source-cited, chart-anchored.
31
+ influence: |
32
+ Modern editorial data-journalism (NYT Upshot section at its most
33
+ chart-forward, Financial Times Chart Doctor, Reuters Graphics,
34
+ Bloomberg Businessweek Graphics, ProPublica investigative
35
+ visualizations). Distinct from institutional dashboards through the
36
+ EDITORIAL VOICE + LONG-FORM NARRATIVE + HAND-DRAWN CALLOUT
37
+ ANNOTATIONS + SOURCE-CITATION discipline. The register carries a
38
+ reader through the data with editorial writing, not with an
39
+ interactive product tour.
40
+
41
+ family: C
42
+ base_number: 34
43
+ base_note: |
44
+ Family C editorial subregion, DATA-JOURNALISM slot. Distinct from
45
+ other Family C editorial bases through the CHART-FORWARD composition
46
+ (every section anchored by a custom SVG chart), the ANIMATED CHART
47
+ DRAWING signature (line via stroke-dashoffset, bars via animated
48
+ height, areas via clipPath), the HAND-DRAWN CALLOUT ANNOTATIONS
49
+ (small red arrows pointing to specific data points with editorial
50
+ captions), and the LIVE DATA TICKER at the top. Editorial v2 is
51
+ photography-first; Kinetic Data is chart-first. Upgrade of the
52
+ existing v1 kinetic-data slug from archetype-fallback.
53
+
54
+ render_url: http://localhost:5173/themes/kinetic-data
55
+
56
+ surface: web
57
+
58
+ typography:
59
+ display: An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — "Playfair Display", "PT Serif Display", "Georgia", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em.
60
+ body: A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — "Inter Tight", Inter, "Söhne", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts.
61
+ mono: A geometric mono for numeric data readouts and live ticker values — "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment.
62
+ scale: 1.333 (perfect fourth — comfortable for long-form data journalism with strong hierarchy contrast)
63
+ eyebrow_exception: |
64
+ Kinetic Data LEGITIMATELY uses two small-caps use sites — CHART DESIGNATION markers ('CHART OF THE DAY' / 'BY THE NUMBERS' / 'MEASURED') and SOURCE citation lines ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026'). These are DIEGETIC editorial-newspaper markers (chart-designation labels + source citations), not decorative eyebrow slop.
65
+
66
+ palette:
67
+ bg: "#fff1e5" # canvas — FT-pink cream, distinctive editorial warmth
68
+ surface: "#ffffff" # raised white panel for chart backgrounds
69
+ ink: "#333333" # charcoal ink (warmer than pure black — editorial reading)
70
+ accent: "#c8102e" # editorial red — chart lines, annotations, callouts
71
+ cream: "#fff1e5" # alias for bg
72
+ darkInk: "#0a0a0a" # near-black for masthead + inverted band
73
+ mute: "#8a8580" # dimmed warm-gray for captions, chart axis labels
74
+ secondary: "#0a5a5a" # deep teal — secondary chart data series (used sparingly)
75
+
76
+ density: balanced
77
+
78
+ motion: |
79
+ Ships live in the section renderer (no external dependencies):
80
+ 1. Hero + Chart of the Day reveal — headline fades in from opacity 0 + translateY(20px) over 800ms cubic-bezier(0.23,1,0.32,1) on first paint. The line chart draws via SVG stroke-dashoffset from 0 to full path length over 1800ms cubic-bezier immediately after headline lands.
81
+ 2. Chart callout annotations — 3 red arrow-and-caption annotations fade in AFTER the chart line finishes drawing, staggered 200ms each. Each annotation is anchored to a specific data point with a hand-drawn arrow.
82
+ 3. Live data ticker — 4 numeric readouts at the top of the page cycle their values every 4 seconds via mock event stream (small delta each tick — reads as live-updating BLS-style stats).
83
+ 4. Bar chart animation — bars grow from 0 to target height with 80ms per-bar stagger + 700ms cubic-bezier on IntersectionObserver at 35% threshold. Baseline red rule draws first.
84
+ 5. Area chart animation — area fill reveals via clip-path animation from left to right over 1600ms cubic-bezier on scroll into view. Line traces along the top edge.
85
+ 6. Small multiples grid stagger — 8 small line charts stagger reveal at 120ms per chart, each with its own stroke-dashoffset draw.
86
+ 7. Numeric callout counters — 'By the Numbers' section numbers count up from 0 → target on IntersectionObserver at 30% threshold, 2000ms ease-out.
87
+ 8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier at 25% threshold.
88
+ 9. Nav shrink on scroll after 200px.
89
+ 10. prefers-reduced-motion: reduce — all reveals disabled; chart lines show at full stroke; bars at full height; areas fully filled; ticker still updates (state readout); state changes still fire.
90
+
91
+ Motion character: editorial, measured, source-cited. Custom cubic-bezier(0.23,1,0.32,1) for reveals. Never marketing-loud, never product-launch — reads as a data-journalism piece landing, not a SaaS product.
92
+
93
+ signature: |
94
+ FT-pink cream canvas at #fff1e5 — the register's non-negotiable base
95
+ (deliberately warmer than pure cream, distinctly editorial-warm and
96
+ distinctly NOT the pharma cream #f7f3e8 or the Yale ivory #f7f1e0).
97
+ Charcoal ink #333333 (warmer than pure black) with ONE editorial-red
98
+ accent #c8102e used ONLY for chart lines, hand-drawn callout arrows,
99
+ hover states, and pull-quote borders. Sharp corners everywhere.
100
+
101
+ MASTHEAD — a "THE READOUT" serif display wordmark on the left in the
102
+ Playfair-family display at 28px (mixed case, letter-spacing -0.01em,
103
+ drop caps optional), horizontal nav (Charts / Economy / Politics /
104
+ Climate / Newsletter / About) center, filled editorial-red "Subscribe"
105
+ button right-aligned. Shrinks after 200px scroll.
106
+
107
+ LIVE DATA TICKER — a thin band directly below the masthead with 4
108
+ mono numeric readouts updating every 4 seconds (unemployment / market
109
+ close / inflation / consumer sentiment). Format: 'UNEMPLOYMENT · 3.7% ·
110
+ ▲ 0.1' in mono with red up/down deltas.
111
+
112
+ CHART OF THE DAY (hero) — a two-column split. LEFT column carries a
113
+ small caps 'CHART OF THE DAY · MARCH 2026' label + big Playfair
114
+ display headline ('When the labor market cooled') + editorial body
115
+ copy in Inter Tight at 16px + author byline. RIGHT column carries a
116
+ MONUMENTAL LINE CHART SVG at ~640x400px — the line draws via
117
+ stroke-dashoffset over 1800ms, then 3 red arrow-and-caption
118
+ ANNOTATIONS fade in pointing to specific data points ('Peak monthly
119
+ additions, February 2024', 'Fed pause, June 2024', 'Latest reading:
120
+ 47k below trend'). Chart axis labels in Inter Tight 11px, source line
121
+ in small caps ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026').
122
+
123
+ BY THE NUMBERS — 4-column monumental numeric callout grid. Each
124
+ column: 'Numeric callout (240% / 47k / -12% / 3.7% Playfair display
125
+ at 72px in editorial red) + short caption + source citation'. Numbers
126
+ count up from 0 → target on scroll into view.
127
+
128
+ BAR CHART SECTION — a two-column split. LEFT: Playfair headline
129
+ ('Where the jobs actually landed.') + editorial body + methodology
130
+ note. RIGHT: HORIZONTAL BAR CHART SVG at ~560x480px with 8 sectors,
131
+ bars grow from 0 to target width with 80ms per-bar stagger on scroll,
132
+ baseline red rule draws first, longest bar highlighted red with
133
+ numeric label at end of bar.
134
+
135
+ DATA NARRATIVE — long-form editorial paragraphs with INLINE SMALL
136
+ MULTIPLES (mini line charts at 120x60px embedded in the body copy
137
+ as reader-supporting visualizations). Drop-cap on first paragraph in
138
+ Playfair 88px red.
139
+
140
+ AREA CHART SECTION — full-width area chart at ~1200x480px showing a
141
+ historical trend with editorial red area fill revealing via clip-path
142
+ animation. 4 red arrow-and-caption annotations at inflection points.
143
+ Body copy beneath.
144
+
145
+ SMALL MULTIPLES GRID — 8 mini line charts in a 4×2 grid showing the
146
+ same measurement across 8 subjects (regions / industries / countries).
147
+ Each chart has its own line draw + region label + numeric value.
148
+ Stagger reveal 120ms per chart.
149
+
150
+ BYLINE + METHODOLOGY — an inverted white surface with author photo
151
+ (bespoke SVG portrait), author bio, and a small caps 'METHODOLOGY'
152
+ section explaining the data provenance and calculations.
153
+
154
+ NEWSLETTER SUBSCRIBE STRIP — a warm cream inverted band with a
155
+ bespoke SVG chart-worthy illustration + subscribe form with mono
156
+ input placeholder.
157
+
158
+ FOOTER — dark inverted band with a Playfair 'THE READOUT'
159
+ wordmark at ~120px, 4-column utility grid (Editorial / Data / About /
160
+ Newsletter), and a small caps 'A FICTIONAL DAILY DATA-JOURNALISM
161
+ OUTLET' colophon line.
162
+
163
+ Six bespoke SVG marks (arrow-annotation, mini-line-chart, mini-bar-
164
+ chart, callout-bracket, source-citation-mark, byline-mark) drop as
165
+ PUNCTUATION at specific compositional moments, never as a uniform
166
+ icon row.
167
+
168
+ imagery: |
169
+ BESPOKE SVG chart illustrations — the reference uses hand-illustrated
170
+ editorial charts (line / bar / area / small multiples) with
171
+ hand-drawn callout annotations and clean typographic axis labels.
172
+ FPO imagery here should read as considered editorial data
173
+ visualization (custom-drawn SVG charts, editorial-red single-hue
174
+ color scheme, small annotation arrows, source-citation lines).
175
+ NO stock chart imagery, NO 3D-rendered chart mockups, NO
176
+ warm-radial-gradient placeholder fills.
177
+
178
+ best_for:
179
+ - Editorial data-journalism outlets (NYT Upshot / FT Chart Doctor / Reuters Graphics style)
180
+ - Investigative data-forward publications (ProPublica, Bloomberg Businessweek Graphics)
181
+ - Financial-news editorial sites with a data emphasis
182
+ - Think-tank quarterly publications with chart-heavy analysis
183
+ - Government / academic statistical reports (BLS / EU statistics agencies)
184
+ - Data-forward economic newsletters (Stratechery, Money Stuff-style)
185
+
186
+ avoid:
187
+ - "Dark canvas — Kinetic Data's canvas is FT-PINK CREAM #fff1e5. Dark canvas inverts the editorial data-journalism register into a monitoring-dashboard register (which is a different theme — Enterprise Tech)."
188
+ - "Pure white or claude-cream canvas — #fff1e5 is deliberately WARMER and MORE SATURATED than pure cream, matching FT's distinctive salmon-pink canvas. Swapping to white/pure-cream kills the specific warmth of this base."
189
+ - "Sans-serif display — the display face MUST be an editorial serif (Playfair / PT Serif / Georgia fallback). Sans display collapses the register into modern SaaS."
190
+ - "Multi-color chart palettes — the whole register's move is ONE editorial-red hue doing all the chart line/annotation/callout work. Introducing blue + green + orange for chart data series collapses the discipline into generic-dashboard slop."
191
+ - "Rounded corners on cards, buttons, or chart-container frames — 0px radius everywhere."
192
+ - "Static charts with no animation — the register REQUIRES kinetic reveal. Line via stroke-dashoffset, bars via animated height, areas via clip-path. Static rendering collapses the theme's own name."
193
+ - "Marketing-loud copy ('game-changing insights', 'unlock your data') — the register requires MEASURED editorial voice. Marketing-loud copy collapses into SaaS slop."
194
+ - "3D-rendered chart mockups or glossy dashboard imagery — visuals must be bespoke SVG editorial charts. 3D renders read as consumer-tech, not editorial journalism."
195
+ - "Mono-caps eyebrow labels outside the two legitimate use sites — CHART DESIGNATION markers ('CHART OF THE DAY') and SOURCE citation lines ('SOURCE · US BLS · MARCH 2026') are the ONLY permitted uses. Any additional 'SECTION · X' plate is slop-blocklist violation."
196
+
197
+ banned_defaults:
198
+ - "claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is #fff1e5 FT-pink, distinct from claude-cream."
199
+ - "void+acid (near-black bg + single bright acid-green or vermilion accent) — canvas is cream, not dark."
200
+ - "broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns) — Kinetic Data IS editorial so newspaper columns are legitimate, but hairline rules + 0px radius + newspaper columns must serve the chart-forward register, not fight it."
201
+ - "tech-bro purple gradient"
202
+ - "uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)"
203
+ - "dark-canvas-inversion (canvas is FT-pink cream. Swapping to dark inverts the editorial data-journalism register into a monitoring-dashboard register.)"
204
+ - "sans-display-anywhere (editorial serif display is the register's fingerprint. Sans display collapses into SaaS.)"
205
+ - "multi-color-chart-palettes (ONE editorial-red hue does 100% of the chart accent work. Introducing multi-color chart palettes collapses into generic-dashboard slop.)"
206
+ - "static-charts (the register's own name — kinetic — requires kinetic chart reveals. Static charts fail the register.)"
207
+ - "3d-chart-mockups (charts must be bespoke SVG editorial illustrations. 3D renders read as consumer-tech.)"
@@ -0,0 +1,30 @@
1
+ // Generated from theme.yml. Do not edit by hand — edit theme.yml + re-materialize.
2
+
3
+ export const tokens = {
4
+ slug: "kinetic-data",
5
+ family: "C",
6
+ base: "34",
7
+ palette: {
8
+ "bg": "#fff1e5",
9
+ "surface": "#ffffff",
10
+ "ink": "#333333",
11
+ "accent": "#c8102e",
12
+ "cream": "#fff1e5",
13
+ "darkInk": "#0a0a0a",
14
+ "mute": "#8a8580",
15
+ "secondary": "#0a5a5a"
16
+ },
17
+ typography: {
18
+ "display": "An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — \"Playfair Display\", \"PT Serif Display\", \"Georgia\", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em.",
19
+ "body": "A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — \"Inter Tight\", Inter, \"Söhne\", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts.",
20
+ "mono": "A geometric mono for numeric data readouts and live ticker values — \"IBM Plex Mono\", \"JetBrains Mono\", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment.",
21
+ "scale": "1.333 (perfect fourth — comfortable for long-form data journalism with strong hierarchy contrast)",
22
+ "eyebrow_exception": "Kinetic Data LEGITIMATELY uses two small-caps use sites — CHART DESIGNATION markers ('CHART OF THE DAY' / 'BY THE NUMBERS' / 'MEASURED') and SOURCE citation lines ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026'). These are DIEGETIC editorial-newspaper markers (chart-designation labels + source citations), not decorative eyebrow slop.\n"
23
+ },
24
+ surface: "web",
25
+ density: "balanced",
26
+ motion: "Ships live in the section renderer (no external dependencies):\n1. Hero + Chart of the Day reveal — headline fades in from opacity 0 + translateY(20px) over 800ms cubic-bezier(0.23,1,0.32,1) on first paint. The line chart draws via SVG stroke-dashoffset from 0 to full path length over 1800ms cubic-bezier immediately after headline lands.\n2. Chart callout annotations — 3 red arrow-and-caption annotations fade in AFTER the chart line finishes drawing, staggered 200ms each. Each annotation is anchored to a specific data point with a hand-drawn arrow.\n3. Live data ticker — 4 numeric readouts at the top of the page cycle their values every 4 seconds via mock event stream (small delta each tick — reads as live-updating BLS-style stats).\n4. Bar chart animation — bars grow from 0 to target height with 80ms per-bar stagger + 700ms cubic-bezier on IntersectionObserver at 35% threshold. Baseline red rule draws first.\n5. Area chart animation — area fill reveals via clip-path animation from left to right over 1600ms cubic-bezier on scroll into view. Line traces along the top edge.\n6. Small multiples grid stagger — 8 small line charts stagger reveal at 120ms per chart, each with its own stroke-dashoffset draw.\n7. Numeric callout counters — 'By the Numbers' section numbers count up from 0 → target on IntersectionObserver at 30% threshold, 2000ms ease-out.\n8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier at 25% threshold.\n9. Nav shrink on scroll after 200px.\n10. prefers-reduced-motion: reduce — all reveals disabled; chart lines show at full stroke; bars at full height; areas fully filled; ticker still updates (state readout); state changes still fire.\n\nMotion character: editorial, measured, source-cited. Custom cubic-bezier(0.23,1,0.32,1) for reveals. Never marketing-loud, never product-launch — reads as a data-journalism piece landing, not a SaaS product.\n",
27
+ signature: "FT-pink cream canvas at #fff1e5 — the register's non-negotiable base\n(deliberately warmer than pure cream, distinctly editorial-warm and\ndistinctly NOT the pharma cream #f7f3e8 or the Yale ivory #f7f1e0).\nCharcoal ink #333333 (warmer than pure black) with ONE editorial-red\naccent #c8102e used ONLY for chart lines, hand-drawn callout arrows,\nhover states, and pull-quote borders. Sharp corners everywhere.\n\nMASTHEAD — a \"THE READOUT\" serif display wordmark on the left in the\nPlayfair-family display at 28px (mixed case, letter-spacing -0.01em,\ndrop caps optional), horizontal nav (Charts / Economy / Politics /\nClimate / Newsletter / About) center, filled editorial-red \"Subscribe\"\nbutton right-aligned. Shrinks after 200px scroll.\n\nLIVE DATA TICKER — a thin band directly below the masthead with 4\nmono numeric readouts updating every 4 seconds (unemployment / market\nclose / inflation / consumer sentiment). Format: 'UNEMPLOYMENT · 3.7% ·\n▲ 0.1' in mono with red up/down deltas.\n\nCHART OF THE DAY (hero) — a two-column split. LEFT column carries a\nsmall caps 'CHART OF THE DAY · MARCH 2026' label + big Playfair\ndisplay headline ('When the labor market cooled') + editorial body\ncopy in Inter Tight at 16px + author byline. RIGHT column carries a\nMONUMENTAL LINE CHART SVG at ~640x400px — the line draws via\nstroke-dashoffset over 1800ms, then 3 red arrow-and-caption\nANNOTATIONS fade in pointing to specific data points ('Peak monthly\nadditions, February 2024', 'Fed pause, June 2024', 'Latest reading:\n47k below trend'). Chart axis labels in Inter Tight 11px, source line\nin small caps ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026').\n\nBY THE NUMBERS — 4-column monumental numeric callout grid. Each\ncolumn: 'Numeric callout (240% / 47k / -12% / 3.7% Playfair display\nat 72px in editorial red) + short caption + source citation'. Numbers\ncount up from 0 → target on scroll into view.\n\nBAR CHART SECTION — a two-column split. LEFT: Playfair headline\n('Where the jobs actually landed.') + editorial body + methodology\nnote. RIGHT: HORIZONTAL BAR CHART SVG at ~560x480px with 8 sectors,\nbars grow from 0 to target width with 80ms per-bar stagger on scroll,\nbaseline red rule draws first, longest bar highlighted red with\nnumeric label at end of bar.\n\nDATA NARRATIVE — long-form editorial paragraphs with INLINE SMALL\nMULTIPLES (mini line charts at 120x60px embedded in the body copy\nas reader-supporting visualizations). Drop-cap on first paragraph in\nPlayfair 88px red.\n\nAREA CHART SECTION — full-width area chart at ~1200x480px showing a\nhistorical trend with editorial red area fill revealing via clip-path\nanimation. 4 red arrow-and-caption annotations at inflection points.\nBody copy beneath.\n\nSMALL MULTIPLES GRID — 8 mini line charts in a 4×2 grid showing the\nsame measurement across 8 subjects (regions / industries / countries).\nEach chart has its own line draw + region label + numeric value.\nStagger reveal 120ms per chart.\n\nBYLINE + METHODOLOGY — an inverted white surface with author photo\n(bespoke SVG portrait), author bio, and a small caps 'METHODOLOGY'\nsection explaining the data provenance and calculations.\n\nNEWSLETTER SUBSCRIBE STRIP — a warm cream inverted band with a\nbespoke SVG chart-worthy illustration + subscribe form with mono\ninput placeholder.\n\nFOOTER — dark inverted band with a Playfair 'THE READOUT'\nwordmark at ~120px, 4-column utility grid (Editorial / Data / About /\nNewsletter), and a small caps 'A FICTIONAL DAILY DATA-JOURNALISM\nOUTLET' colophon line.\n\nSix bespoke SVG marks (arrow-annotation, mini-line-chart, mini-bar-\nchart, callout-bracket, source-citation-mark, byline-mark) drop as\nPUNCTUATION at specific compositional moments, never as a uniform\nicon row.\n",
28
+ } as const;
29
+
30
+ export type Tokens = typeof tokens;
@@ -0,0 +1,156 @@
1
+ # Kinetic-Headline — Build Brief
2
+
3
+ > The contract this theme ships with. Read at commit time by the
4
+ > brief-enforcer subagent; handed to Claude Code via the Copy-for-Claude
5
+ > button on the theme detail page.
6
+
7
+ ---
8
+
9
+ ## MANDATORY BUILD DIRECTIVE — you MUST
10
+
11
+ 1. **Hold the paper canvas** — dark `#0B0B0F` on the dark canvas, cotton
12
+ `#FAFAFA` on the light canvas. Never pure black. Never pure white.
13
+ The canvas toggle swaps between them; the SIGNAL variant is
14
+ independent.
15
+ 2. **Use ONE accent color per page** — the palette variant. The accent
16
+ is used ONLY for: the studio "Say hello" nav CTA border + text, the
17
+ selected-work highlight, one link border in the body. Nothing else.
18
+ 3. **Set the hero display at the theme's variable-weight range:**
19
+ `fontFamily: "Bricolage Grotesque Variable"` (or `Neue Haas Grotesk
20
+ Display` fallback) with `font-variation-settings: 'wght' 400 → 700`
21
+ morphing on paint. `clamp(3rem, 8vw, 8rem)`, tracking -0.03em.
22
+ 4. **Restraint everywhere else.** Body copy in Uncut Sans / Inter at
23
+ 17px line-height 1.55. No mono anywhere as decorative label. Mono
24
+ permitted ONLY for the "sixty-second install" microcopy pattern
25
+ (code-shaped things).
26
+ 5. **Single-column body** — hero content stays under 900px max-width.
27
+ Multi-column layout ONLY on the "Selected work" project list and
28
+ "Recognition" awards strip.
29
+ 6. **Real Pexels photos for the featured-project and portrait bands.**
30
+ No SVG stand-ins for photo-worthy subjects. Photos: workspace
31
+ (project section), designer-at-monitor (portrait section), abstract
32
+ typography (recognition), each shot at 3:2 or 16:9.
33
+
34
+ ---
35
+
36
+ ## SLOP-BLOCKLIST — you MUST NOT
37
+
38
+ - **Mono-caps decorative eyebrows** (`FEATURED · X`, `SELECTED WORK`,
39
+ `THE STUDIO`). CSS fingerprint: `textTransform: uppercase` +
40
+ `letterSpacing ≥ 0.14em` at `fontSize < 20px`. Not on this theme's
41
+ chrome inventory.
42
+ - **Dot-separated decorative metadata** in visible copy
43
+ (`Featured · Herald Financial · 2026`, `Founded · Team · Location`).
44
+ Content-level `·` inside prose (e.g. `Zurich, Switzerland`) is fine.
45
+ - **`№` / N.º / no. / vol. ornaments.**
46
+ - **Auto-advancing hero sliders** (setInterval < 6s mutating a headline
47
+ word or image); **cycling headline words** (`we [design][build][ship]`).
48
+ - **3-pillar identical feature-card grids** as the marketing spine.
49
+ The Selected Work section is a LIST of projects, not a grid of
50
+ identical pillars.
51
+ - **Ticker bars** or horizontal marquees.
52
+ - **Vague trust copy:** hand-crafted, thoughtfully-made, considered,
53
+ for-teams-that-care.
54
+ - **Roman-numeral copyright** (`MMXXVI`).
55
+ - **Attribution of influence in visible copy** — Studio Feixen,
56
+ Pentagram, Base Design, MUBI can be studied but never NAMED in
57
+ slug, copy, or UI.
58
+ - **A second accent color** for hover / focus / status. There's ONE
59
+ accent per page.
60
+ - **Warm-glow radial gradients** as image fallbacks (Stripe/Linear
61
+ AI-default slop).
62
+
63
+ ---
64
+
65
+ ## CHROME INVENTORY — the allow-list
66
+
67
+ - **Sticky palette + canvas picker strip** — meta-UI at the top; the
68
+ brief-enforcer treats picker labels as picker chrome, not theme
69
+ composition. Labels use body font, sentence-case, no letter-spacing.
70
+ - **Masthead nav** — brand mark (small filled square in accent) +
71
+ studio wordmark (Bricolage 700 at 18px, letter-spacing -0.02em) +
72
+ 4 nav items (body font, sentence-case, 14px) + 1 accent-bordered
73
+ "Say hello" CTA (accent border + accent text, no fill).
74
+ - **Variable-weight morphing hero** — display at clamp(3rem, 8vw,
75
+ 8rem), `font-variation-settings: 'wght' 400 → 700` transition on
76
+ paint, tracking -0.03em, one line-break max.
77
+ - **Featured-project section** — real photo (3:2) + display h2 for
78
+ project title + body copy + "View case study →" ghost link with
79
+ accent underline. NOT a card, NOT a grid tile.
80
+ - **Selected-work list** — vertical stack, each row = display-font
81
+ project title + year in sentence-case body + one-line description +
82
+ accent underline on hover. Divider hairlines between rows. NEVER
83
+ a 3-col grid.
84
+ - **Portrait band** — designer photo (5:6 or 4:5) + display h3 +
85
+ 1-2 paragraphs of body copy + one accent-bordered ghost CTA.
86
+ - **Recognition strip** — 3-6 award / press logos, each in body font
87
+ at 16px, evenly spaced. NO ticker animation.
88
+ - **Contact CTA** — display h2 + accent-filled button (radius 4px,
89
+ accent bg + `footerInk` text) + optional email underneath.
90
+ - **Dark footer band** — inverted canvas (uses `footerBg` +
91
+ `footerInk`), brand wordmark + one-line note + 3 columns of
92
+ small links + tiny copyright (regular Arabic numerals).
93
+
94
+ ---
95
+
96
+ ## SIGNATURE MOVES — verbs, not adjectives
97
+
98
+ - **Morph the headline weight from 400 → 700** on paint over 400ms
99
+ cubic-bezier(0.22, 1, 0.36, 1). `font-variation-settings` transition
100
+ is the ONLY animation on the hero. No fade-rise, no ambient drift.
101
+ - **Underline selected-work rows with the accent** on hover — 1px
102
+ hairline animates from left to right over 240ms. This is how the
103
+ list reads as a portfolio, not a feature grid.
104
+ - **Set project titles in the body font at display scale** (48-64px)
105
+ — Bricolage Grotesque at 500 weight, sentence-case, tracking
106
+ -0.025em. Never uppercase. This is the tell that separates a
107
+ studio-portfolio register from a marketing-page register.
108
+ - **Photos are 3:2 landscape** except the portrait which is 4:5.
109
+ Warm shadow + cool highlight grade so the accent doesn't compete.
110
+ - **The accent-bordered CTA is the studio's signature move** —
111
+ transparent bg, 1px accent border, accent text, no glow. Never a
112
+ solid accent-filled button.
113
+ - **Restraint elsewhere** — every other section is single-column,
114
+ body font, one accent element per section max. The morphing hero
115
+ earns the moment by being the only maximalist thing on the page.
116
+
117
+ ---
118
+
119
+ ## COLOR TOKENS
120
+
121
+ **Dark canvas** — `bg #0B0B0F` / `surface #16161B` / `ink #F5F5F5` /
122
+ `mute #8B8B92`. Footer band inverts to `footerBg: #FAFAFA` +
123
+ `footerInk: #0B0B0F`.
124
+
125
+ **Light canvas** — `bg #FAFAFA` / `surface #F0F0F0` / `ink #0A0A0A` /
126
+ `mute #7A7A7A`. Footer band inverts to `footerBg: #0A0A0A` +
127
+ `footerInk: #FAFAFA`.
128
+
129
+ **Accent** (per palette variant — 10 studio-brand hues; default `cobalt`
130
+ `#3D5AFE` on dark, `#3D5AFE` on light).
131
+
132
+ ---
133
+
134
+ ## TYPOGRAPHY
135
+
136
+ - **Display:** Bricolage Grotesque Variable (fallback Neue Haas Grotesk
137
+ Display, Inter). Weight morphs 400 → 700 on paint. Hero clamp(3rem,
138
+ 8vw, 8rem), tracking -0.03em.
139
+ - **Body:** Uncut Sans (fallback Inter), 17px, line-height 1.55,
140
+ tracking -0.005em.
141
+ - **Mono:** IBM Plex Mono — ONLY for the "sixty-second install"
142
+ microcopy and code-shaped things. Never for decorative labels.
143
+
144
+ ---
145
+
146
+ ## SECTION SKELETON
147
+
148
+ 1. Sticky palette + canvas picker strip.
149
+ 2. Masthead nav (Studio Feixen wordmark + 4 nav items + "Say hello").
150
+ 3. Hero — variable-weight morphing display headline.
151
+ 4. Featured project — real photo + display title + body + ghost CTA.
152
+ 5. Selected work — vertical list of 6 projects.
153
+ 6. Studio / about split — designer portrait + body copy.
154
+ 7. Recognition — award / press credits row.
155
+ 8. Contact CTA — display + accent-filled button.
156
+ 9. Dark footer band.