@stylecrib/cli 0.3.1 → 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 +94 -9
  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 +1577 -463
  25. package/package.json +11 -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,173 @@
1
+ # Editorial — Family C, Editorial & Print.
2
+ #
3
+ # Photography-first quarterly register. Off-white gallery-canvas
4
+ # (#fafafa) with cold near-black ink (#0a0a0a) and ONE saturated
5
+ # vermilion accent (#b81a1a) used sparingly for issue markers and
6
+ # hover states. Sharp corners everywhere (0px radius). The photograph
7
+ # does 90% of the design work — type stays small, precise, and out of
8
+ # the way of the image.
9
+ #
10
+ # Authored 2026-07-04 as an upgrade to the v1 Editorial theme, which
11
+ # rendered as an archetype fallback rather than a full composition.
12
+ # Influence anchor (per Matt's pick): Aperture — a photography-forward
13
+ # quarterly. Placeholder brand: "HELIOGRAPH" — a fictional photo
14
+ # quarterly (heliograph is an early-photography term, sun-drawing).
15
+ # Original name, original copy — no reproductions of any reference.
16
+ #
17
+ # The register is DISTINCT from other Family C bases:
18
+ # - Ember Poster is warm-dark editorial serif with hand-drawn ornaments
19
+ # - Case Panel is agency portfolio bento
20
+ # - Marker Mag is punk zine chaos
21
+ # - Pill Editorial is 999px cultural editorial (Black-cultural studio)
22
+ # - Cabana Poster is vintage travel-poster warmth
23
+ # Editorial (Aperture-anchored) fills the PHOTOGRAPHY-FIRST QUARTERLY
24
+ # slot — where the image is the primary design element and the type
25
+ # is the caption underneath.
26
+ #
27
+ # Fifteenth theme via the v2 harness. Sixth Family C theme. This is
28
+ # an UPGRADE of an existing v1 theme, not a new-base candidate.
29
+
30
+ name: Editorial
31
+ concept: Photography-first quarterly register — off-white gallery canvas at #fafafa with cold near-black ink (#0a0a0a) and ONE saturated vermilion accent (#b81a1a) used sparingly. Massive full-bleed photograph real estate as the composition anchor; small precise type as caption. Sharp corners everywhere. Sequential photo essays with tiny caption strips beneath each frame. Contributor bios as small headshot grids. Reads like a fine-art photography quarterly, not a literary magazine.
32
+ influence: |
33
+ Fine-art photography quarterlies (Aperture at its most spartan,
34
+ Foam Magazine, IMA Magazine, The Photographic Journal). Gallery
35
+ publication design (Gagosian catalogues, David Zwirner books at
36
+ the type-restrained end). Distinct from other Family C bases
37
+ through PHOTOGRAPHY-AS-PRIMARY-DESIGN-ELEMENT — the image
38
+ dominates the composition; type is reduced to caption weight.
39
+
40
+ family: C
41
+ base_number: 29
42
+ base_note: |
43
+ Family C editorial subregion, PHOTOGRAPHY-FIRST slot. All other
44
+ Family C bases have significant type-driven display moves (monumental
45
+ serif, cut-and-paste zine chaos, cultural pill display, vintage
46
+ outlined wordmark). Editorial as an Aperture-anchored quarterly
47
+ inverts that — the type stays SMALL and PRECISE, and the FULL-BLEED
48
+ PHOTOGRAPHY carries 90% of the design impact. This is not a new-base
49
+ candidate; it's an upgrade of the existing v1 Editorial slug from
50
+ archetype-fallback to a proper bespoke composition.
51
+
52
+ render_url: http://localhost:5173/themes/editorial
53
+
54
+ surface: web
55
+
56
+ typography:
57
+ display: A precise geometric grotesk with quirky wide letterforms — the reference uses a Söhne / Grafik / Founders Grotesk / GT America family. Free fallback stack — "Neue Haas Grotesk Display", "Space Grotesk", "Inter", system-ui, sans-serif. Weight 500-700, mixed case for section titles + photographer names, UPPERCASE only for the nameplate wordmark. Top of scale ~48px for essay titles, 28px for section headings — deliberately RESTRAINED so the photograph carries the drama. Small caps at 10-11px for micro-labels (issue number, date, photographer credit).
58
+ body: The reference uses a text-optimized serif for essay body copy — Newsreader / Newzald / Domine / EB Garamond family. Free fallback stack — "Newsreader", "Domine", "Georgia", serif. Weight 400 for body, 400 italic for photographer credit lines. 14-15px body copy, line-height 1.55. Small captions at 11-12px in the display sans, not the body serif.
59
+ mono: none. Editorial is a consumer publication surface. Mono has no role.
60
+ scale: 1.25 (perfect fourth — restrained, so composition and photography carry the drama)
61
+ eyebrow_exception: |
62
+ Editorial LEGITIMATELY uses small uppercase 0.14em-tracked 10px
63
+ labels as ISSUE NAMEPLATE MARKS ("ISSUE 04 · MARCH 2026" in the
64
+ masthead, and "PLATE 07 / 12" for photo-sequence markers). This
65
+ is a THEME-SPECIFIC EXCEPTION to the universal slop-blocklist —
66
+ the reference publications use these EXACTLY in this register, as
67
+ diegetic publication markers rather than as decorative eyebrow
68
+ slop. Every use is deliberate and reference-anchored; every use
69
+ site must be manually preserved during harness grading.
70
+
71
+ palette:
72
+ bg: "#fafafa" # canvas — off-white gallery ground
73
+ surface: "#ffffff" # pure white — inverted band + card fill
74
+ ink: "#0a0a0a" # near-black cold press ink
75
+ accent: "#b81a1a" # vermilion — the one saturated accent
76
+ cream: "#f5f0e5" # warmer cream — used ONLY for cover-stock inverted band
77
+ darkInk: "#000000" # pure black — masthead nameplate
78
+ mute: "#6a6a6a" # dimmed ink — captions + micro-labels
79
+
80
+ density: airy
81
+
82
+ motion: |
83
+ Ships live in the section renderer (no external dependencies):
84
+ 1. Hero photograph fade-in — the full-bleed cover image opens from opacity 0 + scale(1.02) to opacity 1 + scale(1) over 1400ms cubic-bezier(0.23,1,0.32,1) on first paint.
85
+ 2. Progressive image reveal — every photograph on the page transitions from blur(8px) + opacity 0.3 → blur(0) + opacity 1 on IntersectionObserver at 25% visibility, 900ms cubic-bezier.
86
+ 3. Caption strip fade — each photograph's tiny caption strip fades in 200ms AFTER its photograph finishes revealing, so the caption reads AFTER the image is seen.
87
+ 4. Sticky reading progress — a thin horizontal bar in the vermilion accent grows across the top of the viewport as the user scrolls, indicating essay progress. Fixed position, 2px height.
88
+ 5. Contributor headshot reveal — bios fade in with 100ms per-bio stagger + 500ms cubic-bezier on IntersectionObserver visibility.
89
+ 6. Small essay-index hover — each entry in the numbered table of contents shifts the horizontal accent line from 0 → 100% width over 240ms cubic-bezier on hover, then reverses on hover-out.
90
+ 7. Nav shrink on scroll — the top masthead reduces from 88px → 52px height after 200px of scroll, transitioning font-size and padding over 300ms cubic-bezier.
91
+ 8. prefers-reduced-motion: reduce — hero photo shows at final scale; progressive image reveal disabled (photos show at final blur:0); caption strips show immediately; progress bar still tracks; contributor bios show all at once; hover accent-line still animates (interaction feedback); nav still shrinks (state change).
92
+
93
+ Motion character: gallery-quiet, precise, restrained. Custom cubic-bezier(0.23,1,0.32,1) for all reveals. The register lives in fine-art publication, not marketing web — motion should feel like turning a page in a printed quarterly, not like a SaaS product tour.
94
+
95
+ signature: |
96
+ Off-white gallery canvas at #fafafa — the register's non-negotiable
97
+ base (deliberately NOT pure white, deliberately NOT claude-cream,
98
+ deliberately NOT warm cream). Cold near-black ink at #0a0a0a. ONE
99
+ vermilion accent at #b81a1a used ONLY for the reading-progress bar
100
+ and hover states on essay-index rows. Sharp corners everywhere.
101
+ Composition begins with a MINIMAL MASTHEAD — small Söhne-style
102
+ wordmark left (HELIOGRAPH, 20px, uppercase, letter-spacing tight),
103
+ center nav row (6-8 links, 13px), right-column shows ISSUE NAMEPLATE
104
+ MARK (small caps "ISSUE 04 · MARCH 2026", 10px 0.14em tracked). Below
105
+ the masthead: a FULL-BLEED HERO PHOTOGRAPH occupying the entire
106
+ hero viewport (78-90vh) with a subtle bottom-gradient scrim; overlaid
107
+ on the bottom-left are the essay title (24-32px display sans mixed
108
+ case) + photographer credit line ("Photographs by Ren Havelock",
109
+ Newsreader italic 14px). Below the hero: a NUMBERED TABLE OF
110
+ CONTENTS with 6-10 numbered essay entries — each row is "01 · Essay
111
+ title · photographer name" in a horizontal layout with a hairline
112
+ bottom border and the vermilion hover-underline. Below the ToC: the
113
+ FEATURED ESSAY block, which alternates SEQUENTIAL PHOTOGRAPH FRAMES
114
+ at varied aspect ratios (3:2 wide, 4:5 tall, 1:1 square) with tiny
115
+ caption strips beneath each frame ("PLATE 07 / 12 · location, year").
116
+ A drop-cap opens the accompanying body text. Between essays: a PULL
117
+ QUOTE BAND — full-width italic Newsreader at 40-56px display size
118
+ centered on a cream inverted band. A CONTRIBUTOR BIO GRID follows
119
+ with 4-6 headshots (140x140 sharp squares) + micro-bio (100 words
120
+ max in body serif). A SUBSCRIBE/ORDER STRIP with a horizontal input
121
+ + a black filled submit button. Footer opens with a giant
122
+ wordmark repeat, colophon body block, and utility link column.
123
+ Six bespoke SVG marks (issue-number seal, plate-number bracket,
124
+ camera-shutter icon, photographer's dot mark, subscribe-form arrow,
125
+ colophon separator glyph) are dropped as PUNCTUATION at specific
126
+ compositional moments — never as a uniform icon row.
127
+
128
+ imagery: |
129
+ FULL-BLEED photography as the primary compositional element —
130
+ the reference uses fine-art documentary + portrait + landscape
131
+ photography shot at gallery/exhibition-print quality. FPO imagery
132
+ here should read as intentional photography (composed framing,
133
+ directional light, considered subject) — never generic stock, never
134
+ gradient blobs, never radial glow fallbacks. Every photograph is a
135
+ SHARP-EDGED rectangle with no border, no rounded corner, no drop
136
+ shadow. Caption strips beneath photographs use tiny sans-serif
137
+ labels (10-11px) with the PLATE number, subject, and year. NO stock
138
+ photography that reads as marketing-stock. NO 3D-rendered "photo"
139
+ placeholders. NO warm-glow gradient fills.
140
+
141
+ best_for:
142
+ - Fine-art photography journals and photobook publishers
143
+ - Small-run print quarterlies and independent magazines
144
+ - Gallery + museum publication websites (catalogues, exhibition sites)
145
+ - Photographer portfolios that need editorial framing
146
+ - Architecture / interior-design publications with photography focus
147
+ - Documentary photo essay platforms and photojournalism sites
148
+
149
+ avoid:
150
+ - "Warm cream canvas — Editorial's canvas is #fafafa (off-white gallery ground), deliberately COOLER and MORE NEUTRAL than the warm-cream family. Warm cream would collapse into a literary-quarterly register (which is a different theme)."
151
+ - "Multi-color accent palette — the whole register's move is ONE vermilion accent doing everything (progress bar, hover underline, issue-number mark). Introducing amber / green / any second accent collapses the discipline."
152
+ - "Rounded corners on cards, buttons, inputs, photograph frames — 0px radius everywhere. The gallery-print register is uncompromising on sharp edges."
153
+ - "Uniform 3-column photograph grid — sequential photo essays use VARIED aspect ratios and offsets. Uniform grids collapse into stock-photo-gallery slop."
154
+ - "Big monumental hero display type — Editorial's type stays RESTRAINED. The photograph carries the drama; type is caption weight. Any hero-sized (80px+) display type overrides the photograph and collapses the register."
155
+ - "Sans-serif body copy — body must be a text-optimized serif (Newsreader / Domine / EB Garamond). Sans body reads as marketing-web, not publication."
156
+ - "Serif display type — display face MUST be a precise geometric grotesk (Söhne / Grafik / Space Grotesk fallback). Serif display collapses into a literary register (which is a different theme)."
157
+ - "Drop shadows or glassmorphism on photographs — every photograph sits FLAT against the canvas with no shadow, no border. Frames are the AI-tell for placeholder imagery."
158
+ - "Mono-caps eyebrow labels outside the two legitimate use sites — ISSUE NAMEPLATE MARK (masthead) and PLATE-NUMBER STRIP (photo caption) are the ONLY permitted mono-caps uses. Any additional 'SECTION · X' / 'CHAPTER · Y' / 'READ TIME' plate is slop-blocklist violation."
159
+ - "Cycling headline words / auto-advancing sliders — no marketing motion. The photograph is STATIC, the pull quote is STATIC. Motion here is reveal-on-scroll + reading-progress bar + hover accent-line."
160
+
161
+ banned_defaults:
162
+ # Global blocklist from BESPOKE_THEME_SYSTEM.md
163
+ - "claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is off-white gallery ground #fafafa, distinct from claude-cream."
164
+ - "void+acid (near-black bg + single bright acid-green or vermilion accent) — this theme's canvas is LIGHT gallery ground with a saturated vermilion accent used SPARINGLY, not a void+acid register."
165
+ - "broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns on non-editorial content) — Editorial IS an editorial context so hairline rules and 0px radius are legitimate."
166
+ - "tech-bro purple gradient (purple→blue gradient hero + centered headline + double CTA + emoji icons)"
167
+ - "uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)"
168
+ # Base-specific
169
+ - "monumental-type-primary (Editorial's whole discipline is PHOTOGRAPHY-PRIMARY / TYPE-SECONDARY. Making the display type the compositional anchor inverts the register into a monumental-editorial base.)"
170
+ - "sans-body-serif-display (Editorial pairs SERIF BODY with SANS DISPLAY — the opposite of the marketing-web default. Flipping this pairing collapses the register.)"
171
+ - "photo-gallery-3col-grid (photograph sequences use VARIED aspect ratios and rhythmic offsets. Uniform 3-column photo grids are the AI-tell for stock-photo-gallery slop.)"
172
+ - "multi-accent-punctuation (ONE vermilion accent doing 100% of the punctuation work. Introducing green / blue / amber as a secondary punctuation accent collapses the discipline.)"
173
+ - "big-hero-marketing-copy (Editorial's essay-title overlay stays SMALL and RESTRAINED — this is a magazine cover, not a landing page hero. Any 80px+ hero-marketing display type collapses the register.)"
@@ -0,0 +1,29 @@
1
+ // Generated from theme.yml. Do not edit by hand — edit theme.yml + re-materialize.
2
+
3
+ export const tokens = {
4
+ slug: "editorial",
5
+ family: "C",
6
+ base: "29",
7
+ palette: {
8
+ "bg": "#fafafa",
9
+ "surface": "#ffffff",
10
+ "ink": "#0a0a0a",
11
+ "accent": "#b81a1a",
12
+ "cream": "#f5f0e5",
13
+ "darkInk": "#000000",
14
+ "mute": "#6a6a6a"
15
+ },
16
+ typography: {
17
+ "display": "A precise geometric grotesk with quirky wide letterforms — the reference uses a Söhne / Grafik / Founders Grotesk / GT America family. Free fallback stack — \"Neue Haas Grotesk Display\", \"Space Grotesk\", \"Inter\", system-ui, sans-serif. Weight 500-700, mixed case for section titles + photographer names, UPPERCASE only for the nameplate wordmark. Top of scale ~48px for essay titles, 28px for section headings — deliberately RESTRAINED so the photograph carries the drama. Small caps at 10-11px for micro-labels (issue number, date, photographer credit).",
18
+ "body": "The reference uses a text-optimized serif for essay body copy — Newsreader / Newzald / Domine / EB Garamond family. Free fallback stack — \"Newsreader\", \"Domine\", \"Georgia\", serif. Weight 400 for body, 400 italic for photographer credit lines. 14-15px body copy, line-height 1.55. Small captions at 11-12px in the display sans, not the body serif.",
19
+ "mono": "none. Editorial is a consumer publication surface. Mono has no role.",
20
+ "scale": "1.25 (perfect fourth — restrained, so composition and photography carry the drama)",
21
+ "eyebrow_exception": "Editorial LEGITIMATELY uses small uppercase 0.14em-tracked 10px\nlabels as ISSUE NAMEPLATE MARKS (\"ISSUE 04 · MARCH 2026\" in the\nmasthead, and \"PLATE 07 / 12\" for photo-sequence markers). This\nis a THEME-SPECIFIC EXCEPTION to the universal slop-blocklist —\nthe reference publications use these EXACTLY in this register, as\ndiegetic publication markers rather than as decorative eyebrow\nslop. Every use is deliberate and reference-anchored; every use\nsite must be manually preserved during harness grading.\n"
22
+ },
23
+ surface: "web",
24
+ density: "airy",
25
+ motion: "Ships live in the section renderer (no external dependencies):\n1. Hero photograph fade-in — the full-bleed cover image opens from opacity 0 + scale(1.02) to opacity 1 + scale(1) over 1400ms cubic-bezier(0.23,1,0.32,1) on first paint.\n2. Progressive image reveal — every photograph on the page transitions from blur(8px) + opacity 0.3 → blur(0) + opacity 1 on IntersectionObserver at 25% visibility, 900ms cubic-bezier.\n3. Caption strip fade — each photograph's tiny caption strip fades in 200ms AFTER its photograph finishes revealing, so the caption reads AFTER the image is seen.\n4. Sticky reading progress — a thin horizontal bar in the vermilion accent grows across the top of the viewport as the user scrolls, indicating essay progress. Fixed position, 2px height.\n5. Contributor headshot reveal — bios fade in with 100ms per-bio stagger + 500ms cubic-bezier on IntersectionObserver visibility.\n6. Small essay-index hover — each entry in the numbered table of contents shifts the horizontal accent line from 0 → 100% width over 240ms cubic-bezier on hover, then reverses on hover-out.\n7. Nav shrink on scroll — the top masthead reduces from 88px → 52px height after 200px of scroll, transitioning font-size and padding over 300ms cubic-bezier.\n8. prefers-reduced-motion: reduce — hero photo shows at final scale; progressive image reveal disabled (photos show at final blur:0); caption strips show immediately; progress bar still tracks; contributor bios show all at once; hover accent-line still animates (interaction feedback); nav still shrinks (state change).\n\nMotion character: gallery-quiet, precise, restrained. Custom cubic-bezier(0.23,1,0.32,1) for all reveals. The register lives in fine-art publication, not marketing web — motion should feel like turning a page in a printed quarterly, not like a SaaS product tour.\n",
26
+ signature: "Off-white gallery canvas at #fafafa — the register's non-negotiable\nbase (deliberately NOT pure white, deliberately NOT claude-cream,\ndeliberately NOT warm cream). Cold near-black ink at #0a0a0a. ONE\nvermilion accent at #b81a1a used ONLY for the reading-progress bar\nand hover states on essay-index rows. Sharp corners everywhere.\nComposition begins with a MINIMAL MASTHEAD — small Söhne-style\nwordmark left (HELIOGRAPH, 20px, uppercase, letter-spacing tight),\ncenter nav row (6-8 links, 13px), right-column shows ISSUE NAMEPLATE\nMARK (small caps \"ISSUE 04 · MARCH 2026\", 10px 0.14em tracked). Below\nthe masthead: a FULL-BLEED HERO PHOTOGRAPH occupying the entire\nhero viewport (78-90vh) with a subtle bottom-gradient scrim; overlaid\non the bottom-left are the essay title (24-32px display sans mixed\ncase) + photographer credit line (\"Photographs by Ren Havelock\",\nNewsreader italic 14px). Below the hero: a NUMBERED TABLE OF\nCONTENTS with 6-10 numbered essay entries — each row is \"01 · Essay\ntitle · photographer name\" in a horizontal layout with a hairline\nbottom border and the vermilion hover-underline. Below the ToC: the\nFEATURED ESSAY block, which alternates SEQUENTIAL PHOTOGRAPH FRAMES\nat varied aspect ratios (3:2 wide, 4:5 tall, 1:1 square) with tiny\ncaption strips beneath each frame (\"PLATE 07 / 12 · location, year\").\nA drop-cap opens the accompanying body text. Between essays: a PULL\nQUOTE BAND — full-width italic Newsreader at 40-56px display size\ncentered on a cream inverted band. A CONTRIBUTOR BIO GRID follows\nwith 4-6 headshots (140x140 sharp squares) + micro-bio (100 words\nmax in body serif). A SUBSCRIBE/ORDER STRIP with a horizontal input\n+ a black filled submit button. Footer opens with a giant\nwordmark repeat, colophon body block, and utility link column.\nSix bespoke SVG marks (issue-number seal, plate-number bracket,\ncamera-shutter icon, photographer's dot mark, subscribe-form arrow,\ncolophon separator glyph) are dropped as PUNCTUATION at specific\ncompositional moments — never as a uniform icon row.\n",
27
+ } as const;
28
+
29
+ export type Tokens = typeof tokens;
@@ -0,0 +1,154 @@
1
+ # Education Formal
2
+
3
+ > Ivy League institutional gravitas — deep Yale-blue canvas at
4
+
5
+ **Slug:** `education-formal` — **Surface:** web — **Density:** airy
6
+
7
+ ## Influence
8
+
9
+ Ivy League and Oxbridge university identity systems (Yale at its
10
+ most tradition-forward, Princeton for the palette gravitas, Trinity
11
+ College Dublin for the heraldic register). Distinct from consumer
12
+ editorial through the DEEP NAVY CANVAS + ALL-SERIF TYPOGRAPHY +
13
+ ONE GOLD ACCENT trio — which reads as institutional-and-old rather
14
+ than editorial-and-modern. The register carries the weight of
15
+ centuries; the design does not fight it.
16
+
17
+
18
+ ## Signature move
19
+
20
+ Deep Yale-blue canvas at #0e2a4a — the register's non-negotiable
21
+ base. Every card, button, input, border, timeline dot, program-list
22
+ divider ships at 0px border radius. Every ink is cream #f2ecd8 or
23
+ ONE aged-gold accent #b89a4a used sparingly for heraldic seal
24
+ strokes, hover underlines, and admissions-callout accents.
25
+
26
+ MASTHEAD — a Cormorant-family wordmark "REDCLIFFE COLLEGE" (ALL
27
+ CAPS, tracking 0.06em, ~24px) on the left, a horizontal nav
28
+ (Academics / Admissions / Campus Life / Research / Athletics /
29
+ Give) center, a filled aged-gold "Apply" button right-aligned.
30
+ Shrinks after 200px of scroll.
31
+
32
+ HERO — a two-column split. LEFT column carries the big Cormorant
33
+ display headline at ~80px ("A liberal-arts college for the next
34
+ century."), a body-copy lede paragraph in EB Garamond at 17px, and
35
+ a gold "Explore programs →" text link. RIGHT column carries a
36
+ HERALDIC SEAL SVG (~280x280px) — a bespoke oval crest with the
37
+ college name in a circular band around a central shield containing
38
+ three horizontal bars, a lamp, and a founding-year "Est. 1897" —
39
+ drawn in aged-gold with cream infill.
40
+
41
+ Below: NUMBERED PROGRAMS LIST — 6 program entries with roman-
42
+ numeral indices (I / II / III / IV / V / VI), each row shows the
43
+ program name (Cormorant 24px), department (small caps), and student
44
+ count (right-aligned). Rows fade in with 100ms stagger on scroll.
45
+ Hover state: gold underline sweeps left-to-right across the row.
46
+
47
+ FACULTY PORTRAIT BAND — an inverted cream band featuring a rotating
48
+ faculty portrait slot with 3 photographs cycling every 5s + a
49
+ faculty-name callout + a course reference. Portraits drawn as
50
+ bespoke SVG (formal academic portrait with warm interior light).
51
+
52
+ ADMISSIONS COUNTDOWN — a wide dark-navy band with a big gold
53
+ "Applications open" callout, a live counter showing days until the
54
+ admissions deadline, and a filled gold "Begin your application"
55
+ block button. The days counter is diegetic (calculated from actual
56
+ target date, not fake incrementing).
57
+
58
+ FULL-BLEED CAMPUS ARCHITECTURE PHOTOGRAPH — a wide band with a
59
+ bespoke SVG rendering of the college's central quadrangle at dusk
60
+ (Gothic buildings, gas lamps, evening light). Photograph translates
61
+ -8% Y as user scrolls past — subtle parallax.
62
+
63
+ ALUMNUS TESTIMONIAL — an italic Cormorant pull quote at 32px from
64
+ a named alumnus with graduation year and current role. Bordered
65
+ with a gold left rule.
66
+
67
+ FOOTER — deep-navy inverted band with the heraldic seal repeated
68
+ at ~120px, a "Founded 1897" datestamp, 4-column utility grid
69
+ (Academics / Admissions / About / Contact), a small colophon
70
+ paragraph, and legal / accessibility links.
71
+
72
+ Six bespoke SVG marks (heraldic seal, gothic-arch program divider,
73
+ campus architecture cluster, faculty portrait framing, admissions
74
+ countdown dot, gold Yale-blue watermark) — dropped as PUNCTUATION
75
+ at specific compositional moments, never as a uniform icon row.
76
+
77
+ ## Palette
78
+
79
+ - **bg:** `#0e2a4a`
80
+ - **surface:** `#16305c`
81
+ - **ink:** `#f2ecd8`
82
+ - **accent:** `#b89a4a`
83
+
84
+ ## Typography
85
+
86
+ - **Display:** A heavy transitional serif with strong stress contrast for maximum academic gravitas — the reference brand uses Yale New (proprietary). Free fallback stack — "Cormorant Garamond", "EB Garamond", "Playfair Display", Georgia, serif. Weight 500-700, mixed case for section titles, small-caps for micro-labels (LEGITIMATELY per academic tradition), ALL CAPS ONLY for the wordmark. Top of scale ~80px hero, 48px section headings, 32px h3. Letter-spacing -0.005em (subtle negative).
87
+ - **Body:** A warmer humanist serif for long-form reading — the reference uses Yale New. Free fallback stack — "EB Garamond", "Cormorant Garamond", "Iowan Old Style", Georgia, serif. Weight 400 for body copy, 500 for callouts. 16-17px body copy, line-height 1.65 (generous for long-form academic reading).
88
+ - **Mono:** none. Education Formal is a consumer institutional surface. Mono has no role.
89
+ - **Scale:** 1.414 (augmented fourth — comfortable for long-form academic reading with strong hierarchy contrast)
90
+
91
+ ## Motion
92
+
93
+ Ships live in the section renderer (no external dependencies):
94
+ 1. Hero display serif reveal — headline fades in from opacity 0 + translateY(24px) over 900ms cubic-bezier(0.23,1,0.32,1) on first paint. Body copy follows with 200ms delay.
95
+ 2. Heraldic seal SVG reveal — the seal fades + rotates from -5deg → 0deg over 1200ms cubic-bezier on first paint, subtle enough to read as institutional composure not marketing sparkle.
96
+ 3. Building photograph parallax — the full-bleed campus architecture photo translates -8% Y as the user scrolls past it, tied to scroll position via a single passive scroll listener.
97
+ 4. Faculty portrait rotation — a slot in the faculty band cycles between 3 portraits at 5000ms per portrait with a 400ms crossfade. Pauses on hover. State advances even in reduced-motion (crossfade becomes instant).
98
+ 5. Applications counter — the admissions callout counter counts up from 0 → target on first scroll into view via requestAnimationFrame, 2000ms ease-out.
99
+ 6. Programs list reveal — the numbered programs list rows fade in with 100ms per-row stagger + 500ms cubic-bezier when the section scrolls into view.
100
+ 7. Nav shrink on scroll — masthead height reduces from 92px → 56px after 200px of scroll with padding + wordmark font-size transitioning over 300ms cubic-bezier.
101
+ 8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier on IntersectionObserver at 25% threshold.
102
+ 9. prefers-reduced-motion: reduce — all reveals disabled; counter shows final; faculty rotates instantly (no crossfade); parallax disabled; state changes still fire.
103
+
104
+ Motion character: institutional composure, restrained, tradition-forward. Custom cubic-bezier(0.23,1,0.32,1) for all reveals. Never marketing-loud, never modern-startup — reads as a considered admissions viewbook, not a SaaS marketing page.
105
+
106
+
107
+ ## Imagery
108
+
109
+ BESPOKE SVG renderings of institutional / academic subjects — the
110
+ reference uses photography of Gothic architecture, faculty
111
+ portraits, seminar rooms, and library interiors under warm evening
112
+ light or overcast day light. FPO imagery here should read as
113
+ considered institutional photography (Gothic-arch buildings, warm-
114
+ lit reading rooms, formal faculty portraits under classroom light).
115
+ NO stock "smiling-students-on-quad" photography (that's the AI-tell
116
+ for university-marketing slop). NO warm-radial-gradient placeholder
117
+ fills. NO 3D-rendered campus mockups.
118
+
119
+ ## Best for
120
+
121
+ - Liberal arts colleges and Ivy League / Oxbridge-tier universities
122
+ - Graduate programs (MBA, JD, MD, PhD, MFA) with a heritage register
123
+ - Academic quarterlies and university presses
124
+ - Endowed research institutes (Rand, RIIA, Brookings, IAS) with an academic register
125
+ - Prep schools and international schools with a heritage brand
126
+ - Museum / cultural-institution sites with an academic-editorial register
127
+
128
+ ## Reject if
129
+
130
+ _Director grades each of the following as a pass/fail check. Any violation blocks the theme._
131
+
132
+ - Light canvas — Education Formal's canvas is DEEP YALE-BLUE at #0e2a4a. A cream / off-white canvas inverts the institutional-tradition register into a modern-editorial register (which is a different theme — Editorial v2).
133
+ - Sans-serif display or body — the whole point is all-serif academic tradition. Any sans-serif type (Inter Display, Söhne, Space Grotesk) collapses the register into a modern-startup-university mistake.
134
+ - Multi-color accent palette — the whole register's move is ONE aged-gold accent doing everything (heraldic strokes, hover underlines, admissions callouts, alumnus pull-quote border). Introducing amber / cyan / any secondary accent collapses the discipline.
135
+ - Rounded corners on cards, buttons, seal borders, program-list dividers — 0px radius everywhere. The heraldic seal is a bespoke SVG oval, not a border-radius on a div.
136
+ - Emoji or unicode marks (🎓 📚 🏛) — bespoke SVG only for all institutional ornament. Emoji is the biggest AI-tell for university-marketing slop.
137
+ - Stock 'smiling-students-on-quad' photography — imagery MUST feel institutional and considered (Gothic architecture, warm-lit reading rooms, formal faculty portraits under classroom light). Smiling-students-on-quad is the AI-tell for corporate-university slop.
138
+ - Warm-radial gradient placeholder fills — every FPO must read as institutional photography (bespoke SVG buildings, formal portraits, campus architecture). Warm-radial gradients are the AI-tell for missing imagery.
139
+ - Mono-caps eyebrow labels outside the legitimate use sites — PROGRAM MARKERS (PROGRAM I / PROGRAM II) and SECTION HEADERS (ACADEMICS / ADMISSIONS / CAMPUS LIFE) are the ONLY permitted uses. Any additional 'SECTION · X' / '5 MIN READ' plate is slop-blocklist violation.
140
+ - Cycling headline words / auto-advancing sliders / horizontal tickers — institutional register requires STATIC, TRADITION-FIRST motion. Marketing-web motion collapses into startup-marketing slop. The faculty portrait rotation IS legitimate per the reference (slow crossfade at 5s per portrait); any other cycling / advancing is out.
141
+ - Modern-tech-blue accents (electric blue / cyan / cobalt) — the accent is AGED GOLD only. Modern-blue accents read as tech-startup, not tradition-institutional.
142
+
143
+ ## Banned defaults (inherited + theme-specific)
144
+
145
+ - claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is DELIBERATELY dark navy, not cream. Any cream flood is a register violation.
146
+ - void+acid (near-black bg + single bright acid-green or vermilion accent) — accent is aged gold, not acid.
147
+ - broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns) — Education Formal is 0px radius but the composition is academic-quarterly, not broadsheet.
148
+ - tech-bro purple gradient (purple→blue gradient hero + centered headline + double CTA + emoji icons)
149
+ - uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)
150
+ - light-canvas-inversion (canvas is dark navy #0e2a4a. Swapping to cream / off-white collapses the institutional-tradition register into a modern-editorial register, which is a different theme.)
151
+ - sans-display-anywhere (all-serif typography is the register's fingerprint. Any sans-serif display collapses into modern-startup slop.)
152
+ - multi-accent-flood (ONE gold accent doing 100% of the punctuation. Introducing crimson / hunter-green / orange / any second accent collapses the discipline.)
153
+ - smiling-students-photography (imagery must feel considered and institutional. Stock 'smiling-students-on-quad' photography is the AI-tell for corporate-university slop.)
154
+ - modern-tech-blue-accent (the accent is aged GOLD, not modern blue. Any tech-startup-blue accent collapses the register.)
@@ -0,0 +1 @@
1
+ {"slug":"education-formal","gates":[{"gate":"slop-blocklist","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T01:00:05.358Z","dismissed":[]},{"gate":"regression-scan","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T01:00:05.371Z","dismissed":[]},{"gate":"avoid-rubric","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T01:00:44.116Z","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-05T01:00:44.118Z","dismissed":[]}],"overall":"PASS","ran_at":"2026-07-05T01:00:05.358Z"}
@@ -0,0 +1,15 @@
1
+ // Generated from theme.yml. Merge into your tailwind.config.ts under theme.extend.
2
+ // slug: education-formal
3
+ export const educationFormalTailwindExtend = {
4
+ colors: {
5
+ bg: "#0e2a4a",
6
+ surface: "#16305c",
7
+ ink: "#f2ecd8",
8
+ accent: "#b89a4a",
9
+ },
10
+ fontFamily: {
11
+ display: ["A heavy transitional serif with strong stress contrast for maximum academic gravitas — the reference brand uses Yale New (proprietary). Free fallback stack — \"Cormorant Garamond\", \"EB Garamond\", \"Playfair Display\", Georgia, serif. Weight 500-700, mixed case for section titles, small-caps for micro-labels (LEGITIMATELY per academic tradition), ALL CAPS ONLY for the wordmark. Top of scale ~80px hero, 48px section headings, 32px h3. Letter-spacing -0.005em (subtle negative)."],
12
+ body: ["A warmer humanist serif for long-form reading — the reference uses Yale New. Free fallback stack — \"EB Garamond\", \"Cormorant Garamond\", \"Iowan Old Style\", Georgia, serif. Weight 400 for body copy, 500 for callouts. 16-17px body copy, line-height 1.65 (generous for long-form academic reading)."],
13
+ mono: ["none. Education Formal is a consumer institutional surface. Mono has no role."],
14
+ },
15
+ };
@@ -0,0 +1,186 @@
1
+ # Education Formal — Family C, Editorial & Print (institutional-editorial subregion).
2
+ #
3
+ # Ivy League institutional gravitas. Deep Yale-blue canvas at #0e2a4a
4
+ # with warm cream ink (#f2ecd8) and ONE aged-gold accent (#b89a4a)
5
+ # used for heraldic seal accents, hover underlines, and admissions
6
+ # callouts. Sharp corners everywhere (0px radius). All-serif
7
+ # typography — Cormorant Garamond display + EB Garamond body for
8
+ # maximum academic gravitas.
9
+ #
10
+ # Influence anchor: Yale University corporate identity. Placeholder
11
+ # brand: "REDCLIFFE COLLEGE" — a fictional Ivy-adjacent institution.
12
+ # Original name, original copy, no reproductions of any reference.
13
+ #
14
+ # Distinct from other Family C bases:
15
+ # - Editorial (v2) is Aperture photography-first quarterly (light canvas)
16
+ # - Pharma Clinical is Genentech warm-professional pharma (cream canvas)
17
+ # - Ember Poster is warm-dark editorial serif with hand-drawn ornaments
18
+ # - Case Panel is agency portfolio bento
19
+ # - Marker Mag is punk zine chaos
20
+ # - Pill Editorial is 999px cultural editorial
21
+ # - Cabana Poster is vintage travel-poster warmth
22
+ # Education Formal fills the INSTITUTIONAL-EDITORIAL slot — dark navy
23
+ # academic-quarterly register with gold accents.
24
+ #
25
+ # Seventeenth theme via the v2 harness. Eighth Family C theme.
26
+ # Upgrade of the existing v1 archetype-fallback slug.
27
+
28
+ name: Education Formal
29
+ concept: Ivy League institutional gravitas — deep Yale-blue canvas at #0e2a4a with warm cream ink and ONE aged-gold accent used sparingly for heraldic seal accents, hover underlines, and admissions callouts. All-serif typography (Cormorant Garamond display + EB Garamond body). Full-bleed campus architecture photography, heraldic seal, numbered program listings, faculty portrait rotation, admissions countdown, and a slow-scroll parallax on the building photography. Reads like a Yale admissions viewbook — heavy, considered, tradition-forward.
30
+ influence: |
31
+ Ivy League and Oxbridge university identity systems (Yale at its
32
+ most tradition-forward, Princeton for the palette gravitas, Trinity
33
+ College Dublin for the heraldic register). Distinct from consumer
34
+ editorial through the DEEP NAVY CANVAS + ALL-SERIF TYPOGRAPHY +
35
+ ONE GOLD ACCENT trio — which reads as institutional-and-old rather
36
+ than editorial-and-modern. The register carries the weight of
37
+ centuries; the design does not fight it.
38
+
39
+ family: C
40
+ base_number: 32
41
+ base_note: |
42
+ Family C editorial subregion, INSTITUTIONAL-EDITORIAL slot. Distinct
43
+ from Editorial (v2) which is a light-canvas photography quarterly,
44
+ and from Pharma Clinical which is a warm-cream pharmaceutical
45
+ quarterly. Education Formal inverts to DEEP NAVY CANVAS with
46
+ academic all-serif typography and gold heraldic accents. Upgrade of
47
+ the existing v1 education-formal slug from archetype-fallback to a
48
+ full bespoke institutional-quarterly composition.
49
+
50
+ render_url: http://localhost:5173/themes/education-formal
51
+
52
+ surface: web
53
+
54
+ typography:
55
+ display: A heavy transitional serif with strong stress contrast for maximum academic gravitas — the reference brand uses Yale New (proprietary). Free fallback stack — "Cormorant Garamond", "EB Garamond", "Playfair Display", Georgia, serif. Weight 500-700, mixed case for section titles, small-caps for micro-labels (LEGITIMATELY per academic tradition), ALL CAPS ONLY for the wordmark. Top of scale ~80px hero, 48px section headings, 32px h3. Letter-spacing -0.005em (subtle negative).
56
+ body: A warmer humanist serif for long-form reading — the reference uses Yale New. Free fallback stack — "EB Garamond", "Cormorant Garamond", "Iowan Old Style", Georgia, serif. Weight 400 for body copy, 500 for callouts. 16-17px body copy, line-height 1.65 (generous for long-form academic reading).
57
+ mono: none. Education Formal is a consumer institutional surface. Mono has no role.
58
+ scale: 1.414 (augmented fourth — comfortable for long-form academic reading with strong hierarchy contrast)
59
+ eyebrow_exception: |
60
+ Education Formal LEGITIMATELY uses small-caps 0.14em-tracked 11-12px labels for PROGRAM MARKERS (PROGRAM I / PROGRAM II) and SECTION HEADERS (ACADEMICS / ADMISSIONS / CAMPUS LIFE). This is a THEME-SPECIFIC EXCEPTION — academic quarterly tradition uses small-caps EXACTLY in this register as institutional section markers, not as decorative eyebrow slop. Roman numeral index (I II III IV) is also legitimate here per centuries of academic-quarterly convention.
61
+
62
+ palette:
63
+ bg: "#0e2a4a" # canvas — deep Yale-blue navy
64
+ surface: "#16305c" # slightly-lifted panel for section bands
65
+ ink: "#f2ecd8" # warm cream — primary text on navy
66
+ accent: "#b89a4a" # aged gold — the ONE accent (heraldic + hover + callouts)
67
+ cream: "#f7f1e0" # bright cream for inverted band + hero secondary text
68
+ darkInk: "#050f22" # deepest navy for masthead and footer
69
+ mute: "#7a90b0" # dimmed cream / warm-blue for captions
70
+
71
+ density: airy
72
+
73
+ motion: |
74
+ Ships live in the section renderer (no external dependencies):
75
+ 1. Hero display serif reveal — headline fades in from opacity 0 + translateY(24px) over 900ms cubic-bezier(0.23,1,0.32,1) on first paint. Body copy follows with 200ms delay.
76
+ 2. Heraldic seal SVG reveal — the seal fades + rotates from -5deg → 0deg over 1200ms cubic-bezier on first paint, subtle enough to read as institutional composure not marketing sparkle.
77
+ 3. Building photograph parallax — the full-bleed campus architecture photo translates -8% Y as the user scrolls past it, tied to scroll position via a single passive scroll listener.
78
+ 4. Faculty portrait rotation — a slot in the faculty band cycles between 3 portraits at 5000ms per portrait with a 400ms crossfade. Pauses on hover. State advances even in reduced-motion (crossfade becomes instant).
79
+ 5. Applications counter — the admissions callout counter counts up from 0 → target on first scroll into view via requestAnimationFrame, 2000ms ease-out.
80
+ 6. Programs list reveal — the numbered programs list rows fade in with 100ms per-row stagger + 500ms cubic-bezier when the section scrolls into view.
81
+ 7. Nav shrink on scroll — masthead height reduces from 92px → 56px after 200px of scroll with padding + wordmark font-size transitioning over 300ms cubic-bezier.
82
+ 8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier on IntersectionObserver at 25% threshold.
83
+ 9. prefers-reduced-motion: reduce — all reveals disabled; counter shows final; faculty rotates instantly (no crossfade); parallax disabled; state changes still fire.
84
+
85
+ Motion character: institutional composure, restrained, tradition-forward. Custom cubic-bezier(0.23,1,0.32,1) for all reveals. Never marketing-loud, never modern-startup — reads as a considered admissions viewbook, not a SaaS marketing page.
86
+
87
+ signature: |
88
+ Deep Yale-blue canvas at #0e2a4a — the register's non-negotiable
89
+ base. Every card, button, input, border, timeline dot, program-list
90
+ divider ships at 0px border radius. Every ink is cream #f2ecd8 or
91
+ ONE aged-gold accent #b89a4a used sparingly for heraldic seal
92
+ strokes, hover underlines, and admissions-callout accents.
93
+
94
+ MASTHEAD — a Cormorant-family wordmark "REDCLIFFE COLLEGE" (ALL
95
+ CAPS, tracking 0.06em, ~24px) on the left, a horizontal nav
96
+ (Academics / Admissions / Campus Life / Research / Athletics /
97
+ Give) center, a filled aged-gold "Apply" button right-aligned.
98
+ Shrinks after 200px of scroll.
99
+
100
+ HERO — a two-column split. LEFT column carries the big Cormorant
101
+ display headline at ~80px ("A liberal-arts college for the next
102
+ century."), a body-copy lede paragraph in EB Garamond at 17px, and
103
+ a gold "Explore programs →" text link. RIGHT column carries a
104
+ HERALDIC SEAL SVG (~280x280px) — a bespoke oval crest with the
105
+ college name in a circular band around a central shield containing
106
+ three horizontal bars, a lamp, and a founding-year "Est. 1897" —
107
+ drawn in aged-gold with cream infill.
108
+
109
+ Below: NUMBERED PROGRAMS LIST — 6 program entries with roman-
110
+ numeral indices (I / II / III / IV / V / VI), each row shows the
111
+ program name (Cormorant 24px), department (small caps), and student
112
+ count (right-aligned). Rows fade in with 100ms stagger on scroll.
113
+ Hover state: gold underline sweeps left-to-right across the row.
114
+
115
+ FACULTY PORTRAIT BAND — an inverted cream band featuring a rotating
116
+ faculty portrait slot with 3 photographs cycling every 5s + a
117
+ faculty-name callout + a course reference. Portraits drawn as
118
+ bespoke SVG (formal academic portrait with warm interior light).
119
+
120
+ ADMISSIONS COUNTDOWN — a wide dark-navy band with a big gold
121
+ "Applications open" callout, a live counter showing days until the
122
+ admissions deadline, and a filled gold "Begin your application"
123
+ block button. The days counter is diegetic (calculated from actual
124
+ target date, not fake incrementing).
125
+
126
+ FULL-BLEED CAMPUS ARCHITECTURE PHOTOGRAPH — a wide band with a
127
+ bespoke SVG rendering of the college's central quadrangle at dusk
128
+ (Gothic buildings, gas lamps, evening light). Photograph translates
129
+ -8% Y as user scrolls past — subtle parallax.
130
+
131
+ ALUMNUS TESTIMONIAL — an italic Cormorant pull quote at 32px from
132
+ a named alumnus with graduation year and current role. Bordered
133
+ with a gold left rule.
134
+
135
+ FOOTER — deep-navy inverted band with the heraldic seal repeated
136
+ at ~120px, a "Founded 1897" datestamp, 4-column utility grid
137
+ (Academics / Admissions / About / Contact), a small colophon
138
+ paragraph, and legal / accessibility links.
139
+
140
+ Six bespoke SVG marks (heraldic seal, gothic-arch program divider,
141
+ campus architecture cluster, faculty portrait framing, admissions
142
+ countdown dot, gold Yale-blue watermark) — dropped as PUNCTUATION
143
+ at specific compositional moments, never as a uniform icon row.
144
+
145
+ imagery: |
146
+ BESPOKE SVG renderings of institutional / academic subjects — the
147
+ reference uses photography of Gothic architecture, faculty
148
+ portraits, seminar rooms, and library interiors under warm evening
149
+ light or overcast day light. FPO imagery here should read as
150
+ considered institutional photography (Gothic-arch buildings, warm-
151
+ lit reading rooms, formal faculty portraits under classroom light).
152
+ NO stock "smiling-students-on-quad" photography (that's the AI-tell
153
+ for university-marketing slop). NO warm-radial-gradient placeholder
154
+ fills. NO 3D-rendered campus mockups.
155
+
156
+ best_for:
157
+ - Liberal arts colleges and Ivy League / Oxbridge-tier universities
158
+ - Graduate programs (MBA, JD, MD, PhD, MFA) with a heritage register
159
+ - Academic quarterlies and university presses
160
+ - Endowed research institutes (Rand, RIIA, Brookings, IAS) with an academic register
161
+ - Prep schools and international schools with a heritage brand
162
+ - Museum / cultural-institution sites with an academic-editorial register
163
+
164
+ avoid:
165
+ - "Light canvas — Education Formal's canvas is DEEP YALE-BLUE at #0e2a4a. A cream / off-white canvas inverts the institutional-tradition register into a modern-editorial register (which is a different theme — Editorial v2)."
166
+ - "Sans-serif display or body — the whole point is all-serif academic tradition. Any sans-serif type (Inter Display, Söhne, Space Grotesk) collapses the register into a modern-startup-university mistake."
167
+ - "Multi-color accent palette — the whole register's move is ONE aged-gold accent doing everything (heraldic strokes, hover underlines, admissions callouts, alumnus pull-quote border). Introducing amber / cyan / any secondary accent collapses the discipline."
168
+ - "Rounded corners on cards, buttons, seal borders, program-list dividers — 0px radius everywhere. The heraldic seal is a bespoke SVG oval, not a border-radius on a div."
169
+ - "Emoji or unicode marks (🎓 📚 🏛) — bespoke SVG only for all institutional ornament. Emoji is the biggest AI-tell for university-marketing slop."
170
+ - "Stock 'smiling-students-on-quad' photography — imagery MUST feel institutional and considered (Gothic architecture, warm-lit reading rooms, formal faculty portraits under classroom light). Smiling-students-on-quad is the AI-tell for corporate-university slop."
171
+ - "Warm-radial gradient placeholder fills — every FPO must read as institutional photography (bespoke SVG buildings, formal portraits, campus architecture). Warm-radial gradients are the AI-tell for missing imagery."
172
+ - "Mono-caps eyebrow labels outside the legitimate use sites — PROGRAM MARKERS (PROGRAM I / PROGRAM II) and SECTION HEADERS (ACADEMICS / ADMISSIONS / CAMPUS LIFE) are the ONLY permitted uses. Any additional 'SECTION · X' / '5 MIN READ' plate is slop-blocklist violation."
173
+ - "Cycling headline words / auto-advancing sliders / horizontal tickers — institutional register requires STATIC, TRADITION-FIRST motion. Marketing-web motion collapses into startup-marketing slop. The faculty portrait rotation IS legitimate per the reference (slow crossfade at 5s per portrait); any other cycling / advancing is out."
174
+ - "Modern-tech-blue accents (electric blue / cyan / cobalt) — the accent is AGED GOLD only. Modern-blue accents read as tech-startup, not tradition-institutional."
175
+
176
+ banned_defaults:
177
+ - "claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is DELIBERATELY dark navy, not cream. Any cream flood is a register violation."
178
+ - "void+acid (near-black bg + single bright acid-green or vermilion accent) — accent is aged gold, not acid."
179
+ - "broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns) — Education Formal is 0px radius but the composition is academic-quarterly, not broadsheet."
180
+ - "tech-bro purple gradient (purple→blue gradient hero + centered headline + double CTA + emoji icons)"
181
+ - "uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)"
182
+ - "light-canvas-inversion (canvas is dark navy #0e2a4a. Swapping to cream / off-white collapses the institutional-tradition register into a modern-editorial register, which is a different theme.)"
183
+ - "sans-display-anywhere (all-serif typography is the register's fingerprint. Any sans-serif display collapses into modern-startup slop.)"
184
+ - "multi-accent-flood (ONE gold accent doing 100% of the punctuation. Introducing crimson / hunter-green / orange / any second accent collapses the discipline.)"
185
+ - "smiling-students-photography (imagery must feel considered and institutional. Stock 'smiling-students-on-quad' photography is the AI-tell for corporate-university slop.)"
186
+ - "modern-tech-blue-accent (the accent is aged GOLD, not modern blue. Any tech-startup-blue accent collapses the register.)"
@@ -0,0 +1,29 @@
1
+ // Generated from theme.yml. Do not edit by hand — edit theme.yml + re-materialize.
2
+
3
+ export const tokens = {
4
+ slug: "education-formal",
5
+ family: "C",
6
+ base: "32",
7
+ palette: {
8
+ "bg": "#0e2a4a",
9
+ "surface": "#16305c",
10
+ "ink": "#f2ecd8",
11
+ "accent": "#b89a4a",
12
+ "cream": "#f7f1e0",
13
+ "darkInk": "#050f22",
14
+ "mute": "#7a90b0"
15
+ },
16
+ typography: {
17
+ "display": "A heavy transitional serif with strong stress contrast for maximum academic gravitas — the reference brand uses Yale New (proprietary). Free fallback stack — \"Cormorant Garamond\", \"EB Garamond\", \"Playfair Display\", Georgia, serif. Weight 500-700, mixed case for section titles, small-caps for micro-labels (LEGITIMATELY per academic tradition), ALL CAPS ONLY for the wordmark. Top of scale ~80px hero, 48px section headings, 32px h3. Letter-spacing -0.005em (subtle negative).",
18
+ "body": "A warmer humanist serif for long-form reading — the reference uses Yale New. Free fallback stack — \"EB Garamond\", \"Cormorant Garamond\", \"Iowan Old Style\", Georgia, serif. Weight 400 for body copy, 500 for callouts. 16-17px body copy, line-height 1.65 (generous for long-form academic reading).",
19
+ "mono": "none. Education Formal is a consumer institutional surface. Mono has no role.",
20
+ "scale": "1.414 (augmented fourth — comfortable for long-form academic reading with strong hierarchy contrast)",
21
+ "eyebrow_exception": "Education Formal LEGITIMATELY uses small-caps 0.14em-tracked 11-12px labels for PROGRAM MARKERS (PROGRAM I / PROGRAM II) and SECTION HEADERS (ACADEMICS / ADMISSIONS / CAMPUS LIFE). This is a THEME-SPECIFIC EXCEPTION — academic quarterly tradition uses small-caps EXACTLY in this register as institutional section markers, not as decorative eyebrow slop. Roman numeral index (I II III IV) is also legitimate here per centuries of academic-quarterly convention.\n"
22
+ },
23
+ surface: "web",
24
+ density: "airy",
25
+ motion: "Ships live in the section renderer (no external dependencies):\n1. Hero display serif reveal — headline fades in from opacity 0 + translateY(24px) over 900ms cubic-bezier(0.23,1,0.32,1) on first paint. Body copy follows with 200ms delay.\n2. Heraldic seal SVG reveal — the seal fades + rotates from -5deg → 0deg over 1200ms cubic-bezier on first paint, subtle enough to read as institutional composure not marketing sparkle.\n3. Building photograph parallax — the full-bleed campus architecture photo translates -8% Y as the user scrolls past it, tied to scroll position via a single passive scroll listener.\n4. Faculty portrait rotation — a slot in the faculty band cycles between 3 portraits at 5000ms per portrait with a 400ms crossfade. Pauses on hover. State advances even in reduced-motion (crossfade becomes instant).\n5. Applications counter — the admissions callout counter counts up from 0 → target on first scroll into view via requestAnimationFrame, 2000ms ease-out.\n6. Programs list reveal — the numbered programs list rows fade in with 100ms per-row stagger + 500ms cubic-bezier when the section scrolls into view.\n7. Nav shrink on scroll — masthead height reduces from 92px → 56px after 200px of scroll with padding + wordmark font-size transitioning over 300ms cubic-bezier.\n8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier on IntersectionObserver at 25% threshold.\n9. prefers-reduced-motion: reduce — all reveals disabled; counter shows final; faculty rotates instantly (no crossfade); parallax disabled; state changes still fire.\n\nMotion character: institutional composure, restrained, tradition-forward. Custom cubic-bezier(0.23,1,0.32,1) for all reveals. Never marketing-loud, never modern-startup — reads as a considered admissions viewbook, not a SaaS marketing page.\n",
26
+ signature: "Deep Yale-blue canvas at #0e2a4a — the register's non-negotiable\nbase. Every card, button, input, border, timeline dot, program-list\ndivider ships at 0px border radius. Every ink is cream #f2ecd8 or\nONE aged-gold accent #b89a4a used sparingly for heraldic seal\nstrokes, hover underlines, and admissions-callout accents.\n\nMASTHEAD — a Cormorant-family wordmark \"REDCLIFFE COLLEGE\" (ALL\nCAPS, tracking 0.06em, ~24px) on the left, a horizontal nav\n(Academics / Admissions / Campus Life / Research / Athletics /\nGive) center, a filled aged-gold \"Apply\" button right-aligned.\nShrinks after 200px of scroll.\n\nHERO — a two-column split. LEFT column carries the big Cormorant\ndisplay headline at ~80px (\"A liberal-arts college for the next\ncentury.\"), a body-copy lede paragraph in EB Garamond at 17px, and\na gold \"Explore programs →\" text link. RIGHT column carries a\nHERALDIC SEAL SVG (~280x280px) — a bespoke oval crest with the\ncollege name in a circular band around a central shield containing\nthree horizontal bars, a lamp, and a founding-year \"Est. 1897\" —\ndrawn in aged-gold with cream infill.\n\nBelow: NUMBERED PROGRAMS LIST — 6 program entries with roman-\nnumeral indices (I / II / III / IV / V / VI), each row shows the\nprogram name (Cormorant 24px), department (small caps), and student\ncount (right-aligned). Rows fade in with 100ms stagger on scroll.\nHover state: gold underline sweeps left-to-right across the row.\n\nFACULTY PORTRAIT BAND — an inverted cream band featuring a rotating\nfaculty portrait slot with 3 photographs cycling every 5s + a\nfaculty-name callout + a course reference. Portraits drawn as\nbespoke SVG (formal academic portrait with warm interior light).\n\nADMISSIONS COUNTDOWN — a wide dark-navy band with a big gold\n\"Applications open\" callout, a live counter showing days until the\nadmissions deadline, and a filled gold \"Begin your application\"\nblock button. The days counter is diegetic (calculated from actual\ntarget date, not fake incrementing).\n\nFULL-BLEED CAMPUS ARCHITECTURE PHOTOGRAPH — a wide band with a\nbespoke SVG rendering of the college's central quadrangle at dusk\n(Gothic buildings, gas lamps, evening light). Photograph translates\n-8% Y as user scrolls past — subtle parallax.\n\nALUMNUS TESTIMONIAL — an italic Cormorant pull quote at 32px from\na named alumnus with graduation year and current role. Bordered\nwith a gold left rule.\n\nFOOTER — deep-navy inverted band with the heraldic seal repeated\nat ~120px, a \"Founded 1897\" datestamp, 4-column utility grid\n(Academics / Admissions / About / Contact), a small colophon\nparagraph, and legal / accessibility links.\n\nSix bespoke SVG marks (heraldic seal, gothic-arch program divider,\ncampus architecture cluster, faculty portrait framing, admissions\ncountdown dot, gold Yale-blue watermark) — dropped as PUNCTUATION\nat specific compositional moments, never as a uniform icon row.\n",
27
+ } as const;
28
+
29
+ export type Tokens = typeof tokens;