@hcu-lab.me/mcp-device 1.0.10 → 1.0.12

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 (491) hide show
  1. package/PRIVACY.md +21 -0
  2. package/README.md +57 -2
  3. package/SECURITY.md +67 -0
  4. package/config/revoked-approvals.json +1 -0
  5. package/control-plane/config/mcp-servers.example.toml +52 -0
  6. package/control-plane/config/mcp-servers.toml +52 -0
  7. package/control-plane/contracts/device-public-contract-v1.json +733 -0
  8. package/control-plane/scripts/GATEWAY-LICENSE.txt +7 -0
  9. package/control-plane/scripts/account-http.mjs +220 -0
  10. package/control-plane/scripts/account-store.mjs +368 -0
  11. package/control-plane/scripts/admin.mjs +68 -0
  12. package/control-plane/scripts/auth-session.mjs +411 -0
  13. package/control-plane/scripts/authenticated-mcp-wrapper.mjs +1281 -0
  14. package/control-plane/scripts/benchmark-command.mjs +9 -0
  15. package/control-plane/scripts/benchmark-mcp-catalog.mjs +174 -0
  16. package/control-plane/scripts/catalog-budget.mjs +87 -0
  17. package/control-plane/scripts/check-device-public-contract.mjs +20 -0
  18. package/control-plane/scripts/custom-tools/index.mjs +221 -0
  19. package/control-plane/scripts/custom-tools/path-utils.mjs +117 -0
  20. package/control-plane/scripts/custom-tools/response-utils.mjs +34 -0
  21. package/control-plane/scripts/dashboard-http.mjs +598 -0
  22. package/control-plane/scripts/device-access-policy.mjs +205 -0
  23. package/control-plane/scripts/device-admin.mjs +43 -0
  24. package/control-plane/scripts/device-audit.mjs +63 -0
  25. package/control-plane/scripts/device-broker.mjs +1461 -0
  26. package/control-plane/scripts/device-execution-tool-definitions.mjs +217 -0
  27. package/control-plane/scripts/device-inventory.mjs +128 -0
  28. package/control-plane/scripts/device-pairing-http.mjs +109 -0
  29. package/control-plane/scripts/device-pairing-store.mjs +245 -0
  30. package/control-plane/scripts/device-public-contract.mjs +165 -0
  31. package/control-plane/scripts/device-release.mjs +95 -0
  32. package/control-plane/scripts/device-secure-transport.mjs +128 -0
  33. package/control-plane/scripts/device-store.mjs +283 -0
  34. package/control-plane/scripts/device-usage.mjs +657 -0
  35. package/control-plane/scripts/embedded-device.mjs +149 -0
  36. package/control-plane/scripts/enduser-ui.mjs +45 -0
  37. package/control-plane/scripts/external-tool-broker.mjs +179 -0
  38. package/control-plane/scripts/oauth-authorization-server.mjs +589 -0
  39. package/control-plane/scripts/operator-dashboard-http.mjs +81 -0
  40. package/control-plane/scripts/project-inspection.mjs +227 -0
  41. package/control-plane/scripts/projects/project-id.mjs +69 -0
  42. package/control-plane/scripts/projects/trusted-roots-projects.mjs +375 -0
  43. package/control-plane/scripts/prompts/index.mjs +60 -0
  44. package/control-plane/scripts/remote-process-sessions.mjs +78 -0
  45. package/control-plane/scripts/remote-tool-result.mjs +9 -0
  46. package/control-plane/scripts/resources/index.mjs +166 -0
  47. package/control-plane/scripts/runtime-profile.mjs +54 -0
  48. package/control-plane/scripts/shell-tool-descriptor.mjs +17 -0
  49. package/control-plane/scripts/skill-source-safety.mjs +46 -0
  50. package/control-plane/scripts/skills/README.md +70 -0
  51. package/control-plane/scripts/skills/_upstream_licenses/anthropic-THIRD_PARTY_NOTICES.md +405 -0
  52. package/control-plane/scripts/skills/_upstream_licenses/hallmark-LICENSE.txt +21 -0
  53. package/control-plane/scripts/skills/_upstream_licenses/ponytail-LICENSE.txt +21 -0
  54. package/control-plane/scripts/skills/_upstream_licenses/stitch-skills-LICENSE.txt +201 -0
  55. package/control-plane/scripts/skills/_upstream_licenses/superpowers-LICENSE.txt +21 -0
  56. package/control-plane/scripts/skills/algorithmic-art/LICENSE.txt +202 -0
  57. package/control-plane/scripts/skills/algorithmic-art/SKILL.md +405 -0
  58. package/control-plane/scripts/skills/algorithmic-art/templates/generator_template.js +223 -0
  59. package/control-plane/scripts/skills/algorithmic-art/templates/viewer.html +599 -0
  60. package/control-plane/scripts/skills/brainstorming/SKILL.md +285 -0
  61. package/control-plane/scripts/skills/brainstorming/scripts/frame-template.html +213 -0
  62. package/control-plane/scripts/skills/brainstorming/scripts/helper.js +167 -0
  63. package/control-plane/scripts/skills/brainstorming/scripts/server.cjs +723 -0
  64. package/control-plane/scripts/skills/brainstorming/scripts/start-server.sh +209 -0
  65. package/control-plane/scripts/skills/brainstorming/scripts/stop-server.sh +120 -0
  66. package/control-plane/scripts/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  67. package/control-plane/scripts/skills/brainstorming/visual-companion.md +299 -0
  68. package/control-plane/scripts/skills/brand-guidelines/LICENSE.txt +202 -0
  69. package/control-plane/scripts/skills/brand-guidelines/SKILL.md +73 -0
  70. package/control-plane/scripts/skills/claude-api/LICENSE.txt +202 -0
  71. package/control-plane/scripts/skills/claude-api/SKILL.md +570 -0
  72. package/control-plane/scripts/skills/claude-api/csharp/claude-api/README.md +362 -0
  73. package/control-plane/scripts/skills/claude-api/csharp/claude-api/batches.md +14 -0
  74. package/control-plane/scripts/skills/claude-api/csharp/claude-api/files-api.md +25 -0
  75. package/control-plane/scripts/skills/claude-api/csharp/claude-api/streaming.md +28 -0
  76. package/control-plane/scripts/skills/claude-api/csharp/claude-api/tool-use.md +164 -0
  77. package/control-plane/scripts/skills/claude-api/curl/examples.md +256 -0
  78. package/control-plane/scripts/skills/claude-api/curl/managed-agents.md +371 -0
  79. package/control-plane/scripts/skills/claude-api/go/claude-api/README.md +188 -0
  80. package/control-plane/scripts/skills/claude-api/go/claude-api/files-api.md +23 -0
  81. package/control-plane/scripts/skills/claude-api/go/claude-api/streaming.md +43 -0
  82. package/control-plane/scripts/skills/claude-api/go/claude-api/tool-use.md +220 -0
  83. package/control-plane/scripts/skills/claude-api/go/managed-agents/README.md +564 -0
  84. package/control-plane/scripts/skills/claude-api/java/claude-api/README.md +238 -0
  85. package/control-plane/scripts/skills/claude-api/java/claude-api/files-api.md +27 -0
  86. package/control-plane/scripts/skills/claude-api/java/claude-api/streaming.md +24 -0
  87. package/control-plane/scripts/skills/claude-api/java/claude-api/tool-use.md +228 -0
  88. package/control-plane/scripts/skills/claude-api/java/managed-agents/README.md +443 -0
  89. package/control-plane/scripts/skills/claude-api/php/claude-api/README.md +174 -0
  90. package/control-plane/scripts/skills/claude-api/php/claude-api/batches.md +15 -0
  91. package/control-plane/scripts/skills/claude-api/php/claude-api/files-api.md +13 -0
  92. package/control-plane/scripts/skills/claude-api/php/claude-api/streaming.md +27 -0
  93. package/control-plane/scripts/skills/claude-api/php/claude-api/tool-use.md +253 -0
  94. package/control-plane/scripts/skills/claude-api/php/managed-agents/README.md +443 -0
  95. package/control-plane/scripts/skills/claude-api/python/claude-api/README.md +565 -0
  96. package/control-plane/scripts/skills/claude-api/python/claude-api/batches.md +198 -0
  97. package/control-plane/scripts/skills/claude-api/python/claude-api/files-api.md +170 -0
  98. package/control-plane/scripts/skills/claude-api/python/claude-api/sdk-upgrade.md +286 -0
  99. package/control-plane/scripts/skills/claude-api/python/claude-api/streaming.md +179 -0
  100. package/control-plane/scripts/skills/claude-api/python/claude-api/tool-use.md +627 -0
  101. package/control-plane/scripts/skills/claude-api/python/managed-agents/README.md +335 -0
  102. package/control-plane/scripts/skills/claude-api/ruby/claude-api/README.md +134 -0
  103. package/control-plane/scripts/skills/claude-api/ruby/claude-api/streaming.md +16 -0
  104. package/control-plane/scripts/skills/claude-api/ruby/claude-api/tool-use.md +41 -0
  105. package/control-plane/scripts/skills/claude-api/ruby/managed-agents/README.md +394 -0
  106. package/control-plane/scripts/skills/claude-api/shared/admin-api.md +179 -0
  107. package/control-plane/scripts/skills/claude-api/shared/agent-design.md +101 -0
  108. package/control-plane/scripts/skills/claude-api/shared/anthropic-cli.md +269 -0
  109. package/control-plane/scripts/skills/claude-api/shared/claude-platform-on-aws.md +59 -0
  110. package/control-plane/scripts/skills/claude-api/shared/cost-optimization.md +233 -0
  111. package/control-plane/scripts/skills/claude-api/shared/error-codes.md +262 -0
  112. package/control-plane/scripts/skills/claude-api/shared/live-sources.md +166 -0
  113. package/control-plane/scripts/skills/claude-api/shared/managed-agents-api-reference.md +455 -0
  114. package/control-plane/scripts/skills/claude-api/shared/managed-agents-client-patterns.md +220 -0
  115. package/control-plane/scripts/skills/claude-api/shared/managed-agents-core.md +359 -0
  116. package/control-plane/scripts/skills/claude-api/shared/managed-agents-environments.md +226 -0
  117. package/control-plane/scripts/skills/claude-api/shared/managed-agents-events.md +290 -0
  118. package/control-plane/scripts/skills/claude-api/shared/managed-agents-memory.md +201 -0
  119. package/control-plane/scripts/skills/claude-api/shared/managed-agents-multiagent.md +260 -0
  120. package/control-plane/scripts/skills/claude-api/shared/managed-agents-onboarding.md +82 -0
  121. package/control-plane/scripts/skills/claude-api/shared/managed-agents-outcomes.md +108 -0
  122. package/control-plane/scripts/skills/claude-api/shared/managed-agents-overview.md +77 -0
  123. package/control-plane/scripts/skills/claude-api/shared/managed-agents-scheduled-deployments.md +156 -0
  124. package/control-plane/scripts/skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +282 -0
  125. package/control-plane/scripts/skills/claude-api/shared/managed-agents-tools.md +504 -0
  126. package/control-plane/scripts/skills/claude-api/shared/managed-agents-webhooks.md +143 -0
  127. package/control-plane/scripts/skills/claude-api/shared/model-migration.md +1872 -0
  128. package/control-plane/scripts/skills/claude-api/shared/models.md +142 -0
  129. package/control-plane/scripts/skills/claude-api/shared/platform-availability.md +52 -0
  130. package/control-plane/scripts/skills/claude-api/shared/prompt-audit.md +223 -0
  131. package/control-plane/scripts/skills/claude-api/shared/prompt-caching.md +292 -0
  132. package/control-plane/scripts/skills/claude-api/shared/token-counting.md +56 -0
  133. package/control-plane/scripts/skills/claude-api/shared/tool-use-concepts.md +526 -0
  134. package/control-plane/scripts/skills/claude-api/typescript/claude-api/README.md +405 -0
  135. package/control-plane/scripts/skills/claude-api/typescript/claude-api/batches.md +106 -0
  136. package/control-plane/scripts/skills/claude-api/typescript/claude-api/files-api.md +98 -0
  137. package/control-plane/scripts/skills/claude-api/typescript/claude-api/streaming.md +178 -0
  138. package/control-plane/scripts/skills/claude-api/typescript/claude-api/tool-use.md +586 -0
  139. package/control-plane/scripts/skills/claude-api/typescript/managed-agents/README.md +359 -0
  140. package/control-plane/scripts/skills/dispatching-parallel-agents/SKILL.md +167 -0
  141. package/control-plane/scripts/skills/enhance-prompt/README.md +34 -0
  142. package/control-plane/scripts/skills/enhance-prompt/SKILL.md +204 -0
  143. package/control-plane/scripts/skills/enhance-prompt/references/KEYWORDS.md +114 -0
  144. package/control-plane/scripts/skills/executing-plans/SKILL.md +371 -0
  145. package/control-plane/scripts/skills/executing-plans/scripts/task-done +52 -0
  146. package/control-plane/scripts/skills/executing-plans/scripts/task-start +28 -0
  147. package/control-plane/scripts/skills/extract-design-md/SKILL.md +358 -0
  148. package/control-plane/scripts/skills/extract-design-md/examples/DESIGN.md +210 -0
  149. package/control-plane/scripts/skills/extract-design-md/references/angular.md +122 -0
  150. package/control-plane/scripts/skills/extract-design-md/references/plain-css.md +161 -0
  151. package/control-plane/scripts/skills/extract-design-md/references/react-tailwind.md +157 -0
  152. package/control-plane/scripts/skills/extract-design-md/references/svelte.md +101 -0
  153. package/control-plane/scripts/skills/extract-design-md/references/vue.md +107 -0
  154. package/control-plane/scripts/skills/finishing-a-development-branch/SKILL.md +225 -0
  155. package/control-plane/scripts/skills/frontend-design/LICENSE.txt +177 -0
  156. package/control-plane/scripts/skills/frontend-design/SKILL.md +71 -0
  157. package/control-plane/scripts/skills/hallmark/SKILL.md +558 -0
  158. package/control-plane/scripts/skills/hallmark/references/anti-patterns.md +418 -0
  159. package/control-plane/scripts/skills/hallmark/references/assets.md +406 -0
  160. package/control-plane/scripts/skills/hallmark/references/color.md +95 -0
  161. package/control-plane/scripts/skills/hallmark/references/component-cookbook.md +263 -0
  162. package/control-plane/scripts/skills/hallmark/references/components/c1-outlined-chip.md +12 -0
  163. package/control-plane/scripts/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -0
  164. package/control-plane/scripts/skills/hallmark/references/components/c3-typographic-link.md +8 -0
  165. package/control-plane/scripts/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -0
  166. package/control-plane/scripts/skills/hallmark/references/components/f1-bento-grid.md +20 -0
  167. package/control-plane/scripts/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -0
  168. package/control-plane/scripts/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -0
  169. package/control-plane/scripts/skills/hallmark/references/components/f4-step-sequence.md +11 -0
  170. package/control-plane/scripts/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -0
  171. package/control-plane/scripts/skills/hallmark/references/components/f6-product-card-grid.md +41 -0
  172. package/control-plane/scripts/skills/hallmark/references/components/ft1-mast-headed.md +13 -0
  173. package/control-plane/scripts/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -0
  174. package/control-plane/scripts/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -0
  175. package/control-plane/scripts/skills/hallmark/references/components/ft4-dense-typographic.md +10 -0
  176. package/control-plane/scripts/skills/hallmark/references/components/ft5-statement.md +21 -0
  177. package/control-plane/scripts/skills/hallmark/references/components/ft6-letter-close.md +19 -0
  178. package/control-plane/scripts/skills/hallmark/references/components/ft7-newsletter-first.md +27 -0
  179. package/control-plane/scripts/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -0
  180. package/control-plane/scripts/skills/hallmark/references/components/h1-marquee.md +15 -0
  181. package/control-plane/scripts/skills/hallmark/references/components/h2-split-diptych.md +15 -0
  182. package/control-plane/scripts/skills/hallmark/references/components/h3-quote-led.md +11 -0
  183. package/control-plane/scripts/skills/hallmark/references/components/h4-stat-led.md +14 -0
  184. package/control-plane/scripts/skills/hallmark/references/components/h5-letter-hero.md +11 -0
  185. package/control-plane/scripts/skills/hallmark/references/components/h6-photographic-fold.md +16 -0
  186. package/control-plane/scripts/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -0
  187. package/control-plane/scripts/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -0
  188. package/control-plane/scripts/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -0
  189. package/control-plane/scripts/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -0
  190. package/control-plane/scripts/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -0
  191. package/control-plane/scripts/skills/hallmark/references/components/n11-mega-menu.md +40 -0
  192. package/control-plane/scripts/skills/hallmark/references/components/n12-banner-retract.md +34 -0
  193. package/control-plane/scripts/skills/hallmark/references/components/n13-inline-cmdk-pill.md +39 -0
  194. package/control-plane/scripts/skills/hallmark/references/components/n1b-saas-three-section.md +35 -0
  195. package/control-plane/scripts/skills/hallmark/references/components/n2-floating-chip.md +14 -0
  196. package/control-plane/scripts/skills/hallmark/references/components/n3-side-rail.md +14 -0
  197. package/control-plane/scripts/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -0
  198. package/control-plane/scripts/skills/hallmark/references/components/n5-floating-pill.md +28 -0
  199. package/control-plane/scripts/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -0
  200. package/control-plane/scripts/skills/hallmark/references/components/n7-brutal-slab.md +22 -0
  201. package/control-plane/scripts/skills/hallmark/references/components/n8-terminal-command.md +21 -0
  202. package/control-plane/scripts/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -0
  203. package/control-plane/scripts/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -0
  204. package/control-plane/scripts/skills/hallmark/references/components/s2-hanging.md +13 -0
  205. package/control-plane/scripts/skills/hallmark/references/components/s3-sticky-pinned.md +19 -0
  206. package/control-plane/scripts/skills/hallmark/references/components/s4-inline-no-break.md +11 -0
  207. package/control-plane/scripts/skills/hallmark/references/components/s5-bottom-anchored.md +13 -0
  208. package/control-plane/scripts/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -0
  209. package/control-plane/scripts/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -0
  210. package/control-plane/scripts/skills/hallmark/references/components/t3-single-huge-quote.md +11 -0
  211. package/control-plane/scripts/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -0
  212. package/control-plane/scripts/skills/hallmark/references/contract.md +25 -0
  213. package/control-plane/scripts/skills/hallmark/references/copy.md +182 -0
  214. package/control-plane/scripts/skills/hallmark/references/custom-craft.md +626 -0
  215. package/control-plane/scripts/skills/hallmark/references/custom-theme.md +367 -0
  216. package/control-plane/scripts/skills/hallmark/references/design-md.md +116 -0
  217. package/control-plane/scripts/skills/hallmark/references/export-formats.md +329 -0
  218. package/control-plane/scripts/skills/hallmark/references/floating-nav.md +89 -0
  219. package/control-plane/scripts/skills/hallmark/references/genres/atmospheric.md +69 -0
  220. package/control-plane/scripts/skills/hallmark/references/genres/editorial.md +72 -0
  221. package/control-plane/scripts/skills/hallmark/references/genres/modern-minimal.md +71 -0
  222. package/control-plane/scripts/skills/hallmark/references/genres/playful.md +70 -0
  223. package/control-plane/scripts/skills/hallmark/references/hero-enrichment.md +475 -0
  224. package/control-plane/scripts/skills/hallmark/references/imagery-kit.md +170 -0
  225. package/control-plane/scripts/skills/hallmark/references/interaction-and-states.md +208 -0
  226. package/control-plane/scripts/skills/hallmark/references/layout-and-space.md +112 -0
  227. package/control-plane/scripts/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -0
  228. package/control-plane/scripts/skills/hallmark/references/macrostructures/02-long-document.md +34 -0
  229. package/control-plane/scripts/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -0
  230. package/control-plane/scripts/skills/hallmark/references/macrostructures/04-stat-led.md +34 -0
  231. package/control-plane/scripts/skills/hallmark/references/macrostructures/05-workbench.md +32 -0
  232. package/control-plane/scripts/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -0
  233. package/control-plane/scripts/skills/hallmark/references/macrostructures/07-manifesto.md +32 -0
  234. package/control-plane/scripts/skills/hallmark/references/macrostructures/08-photographic.md +34 -0
  235. package/control-plane/scripts/skills/hallmark/references/macrostructures/09-quote-led.md +32 -0
  236. package/control-plane/scripts/skills/hallmark/references/macrostructures/10-specimen.md +32 -0
  237. package/control-plane/scripts/skills/hallmark/references/macrostructures/11-catalogue.md +23 -0
  238. package/control-plane/scripts/skills/hallmark/references/macrostructures/12-letter.md +23 -0
  239. package/control-plane/scripts/skills/hallmark/references/macrostructures/13-index-first.md +23 -0
  240. package/control-plane/scripts/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -0
  241. package/control-plane/scripts/skills/hallmark/references/macrostructures/15-split-studio.md +23 -0
  242. package/control-plane/scripts/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
  243. package/control-plane/scripts/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -0
  244. package/control-plane/scripts/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -0
  245. package/control-plane/scripts/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -0
  246. package/control-plane/scripts/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -0
  247. package/control-plane/scripts/skills/hallmark/references/macrostructures/21-component-playground.md +23 -0
  248. package/control-plane/scripts/skills/hallmark/references/macrostructures.md +89 -0
  249. package/control-plane/scripts/skills/hallmark/references/microinteractions.md +258 -0
  250. package/control-plane/scripts/skills/hallmark/references/motion.md +109 -0
  251. package/control-plane/scripts/skills/hallmark/references/preview-examples.md +49 -0
  252. package/control-plane/scripts/skills/hallmark/references/responsive.md +138 -0
  253. package/control-plane/scripts/skills/hallmark/references/slop-test.md +192 -0
  254. package/control-plane/scripts/skills/hallmark/references/structure.md +160 -0
  255. package/control-plane/scripts/skills/hallmark/references/study.md +509 -0
  256. package/control-plane/scripts/skills/hallmark/references/themes/carnival.md +301 -0
  257. package/control-plane/scripts/skills/hallmark/references/themes/cobalt.md +146 -0
  258. package/control-plane/scripts/skills/hallmark/references/themes/grid.md +161 -0
  259. package/control-plane/scripts/skills/hallmark/references/themes/hum.md +403 -0
  260. package/control-plane/scripts/skills/hallmark/references/themes/lumen.md +478 -0
  261. package/control-plane/scripts/skills/hallmark/references/typography.md +243 -0
  262. package/control-plane/scripts/skills/hallmark/references/upstream/recipes.md +186 -0
  263. package/control-plane/scripts/skills/hallmark/references/upstream/study-examples.md +176 -0
  264. package/control-plane/scripts/skills/hallmark/references/upstream/tokens.css +1221 -0
  265. package/control-plane/scripts/skills/hallmark/references/verbs/audit.md +25 -0
  266. package/control-plane/scripts/skills/hallmark/references/verbs/redesign.md +269 -0
  267. package/control-plane/scripts/skills/human-comms/SKILL.md +29 -0
  268. package/control-plane/scripts/skills/index.mjs +432 -0
  269. package/control-plane/scripts/skills/internal-comms/LICENSE.txt +202 -0
  270. package/control-plane/scripts/skills/internal-comms/SKILL.md +32 -0
  271. package/control-plane/scripts/skills/internal-comms/examples/3p-updates.md +47 -0
  272. package/control-plane/scripts/skills/internal-comms/examples/company-newsletter.md +65 -0
  273. package/control-plane/scripts/skills/internal-comms/examples/faq-answers.md +30 -0
  274. package/control-plane/scripts/skills/internal-comms/examples/general-comms.md +16 -0
  275. package/control-plane/scripts/skills/mcp-adapter.mjs +94 -0
  276. package/control-plane/scripts/skills/mcp-builder/LICENSE.txt +202 -0
  277. package/control-plane/scripts/skills/mcp-builder/SKILL.md +236 -0
  278. package/control-plane/scripts/skills/mcp-builder/reference/evaluation.md +602 -0
  279. package/control-plane/scripts/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  280. package/control-plane/scripts/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  281. package/control-plane/scripts/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  282. package/control-plane/scripts/skills/mcp-builder/scripts/connections.py +151 -0
  283. package/control-plane/scripts/skills/mcp-builder/scripts/evaluation.py +373 -0
  284. package/control-plane/scripts/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  285. package/control-plane/scripts/skills/mcp-builder/scripts/requirements.txt +2 -0
  286. package/control-plane/scripts/skills/ponytail/SKILL.md +120 -0
  287. package/control-plane/scripts/skills/ponytail-audit/SKILL.md +41 -0
  288. package/control-plane/scripts/skills/ponytail-debt/SKILL.md +44 -0
  289. package/control-plane/scripts/skills/ponytail-gain/SKILL.md +50 -0
  290. package/control-plane/scripts/skills/ponytail-help/SKILL.md +71 -0
  291. package/control-plane/scripts/skills/ponytail-review/SKILL.md +57 -0
  292. package/control-plane/scripts/skills/receiving-code-review/SKILL.md +205 -0
  293. package/control-plane/scripts/skills/requesting-code-review/SKILL.md +95 -0
  294. package/control-plane/scripts/skills/requesting-code-review/code-reviewer.md +198 -0
  295. package/control-plane/scripts/skills/skill-creator/LICENSE.txt +202 -0
  296. package/control-plane/scripts/skills/skill-creator/SKILL.md +485 -0
  297. package/control-plane/scripts/skills/skill-creator/agents/analyzer.md +274 -0
  298. package/control-plane/scripts/skills/skill-creator/agents/comparator.md +202 -0
  299. package/control-plane/scripts/skills/skill-creator/agents/grader.md +223 -0
  300. package/control-plane/scripts/skills/skill-creator/assets/eval_review.html +146 -0
  301. package/control-plane/scripts/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  302. package/control-plane/scripts/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  303. package/control-plane/scripts/skills/skill-creator/references/schemas.md +430 -0
  304. package/control-plane/scripts/skills/skill-creator/scripts/__init__.py +0 -0
  305. package/control-plane/scripts/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  306. package/control-plane/scripts/skills/skill-creator/scripts/generate_report.py +326 -0
  307. package/control-plane/scripts/skills/skill-creator/scripts/improve_description.py +247 -0
  308. package/control-plane/scripts/skills/skill-creator/scripts/package_skill.py +136 -0
  309. package/control-plane/scripts/skills/skill-creator/scripts/quick_validate.py +103 -0
  310. package/control-plane/scripts/skills/skill-creator/scripts/run_eval.py +310 -0
  311. package/control-plane/scripts/skills/skill-creator/scripts/run_loop.py +328 -0
  312. package/control-plane/scripts/skills/skill-creator/scripts/utils.py +47 -0
  313. package/control-plane/scripts/skills/slack-gif-creator/LICENSE.txt +202 -0
  314. package/control-plane/scripts/skills/slack-gif-creator/SKILL.md +254 -0
  315. package/control-plane/scripts/skills/slack-gif-creator/core/easing.py +234 -0
  316. package/control-plane/scripts/skills/slack-gif-creator/core/frame_composer.py +176 -0
  317. package/control-plane/scripts/skills/slack-gif-creator/core/gif_builder.py +269 -0
  318. package/control-plane/scripts/skills/slack-gif-creator/core/validators.py +136 -0
  319. package/control-plane/scripts/skills/slack-gif-creator/requirements.txt +4 -0
  320. package/control-plane/scripts/skills/sources.json +401 -0
  321. package/control-plane/scripts/skills/sources.lock.json +416 -0
  322. package/control-plane/scripts/skills/subagent-driven-development/SKILL.md +570 -0
  323. package/control-plane/scripts/skills/subagent-driven-development/implementer-prompt.md +154 -0
  324. package/control-plane/scripts/skills/subagent-driven-development/re-review-prompt.md +115 -0
  325. package/control-plane/scripts/skills/subagent-driven-development/scripts/review-package +53 -0
  326. package/control-plane/scripts/skills/subagent-driven-development/scripts/sdd-workspace +82 -0
  327. package/control-plane/scripts/skills/subagent-driven-development/scripts/task-brief +43 -0
  328. package/control-plane/scripts/skills/subagent-driven-development/task-reviewer-prompt.md +207 -0
  329. package/control-plane/scripts/skills/systematic-debugging/CREATION-LOG.md +119 -0
  330. package/control-plane/scripts/skills/systematic-debugging/SKILL.md +283 -0
  331. package/control-plane/scripts/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  332. package/control-plane/scripts/skills/systematic-debugging/condition-based-waiting.md +115 -0
  333. package/control-plane/scripts/skills/systematic-debugging/defense-in-depth.md +122 -0
  334. package/control-plane/scripts/skills/systematic-debugging/find-polluter.sh +72 -0
  335. package/control-plane/scripts/skills/systematic-debugging/root-cause-tracing.md +169 -0
  336. package/control-plane/scripts/skills/systematic-debugging/test-academic.md +14 -0
  337. package/control-plane/scripts/skills/systematic-debugging/test-pressure-1.md +58 -0
  338. package/control-plane/scripts/skills/systematic-debugging/test-pressure-2.md +68 -0
  339. package/control-plane/scripts/skills/systematic-debugging/test-pressure-3.md +69 -0
  340. package/control-plane/scripts/skills/test-driven-development/SKILL.md +330 -0
  341. package/control-plane/scripts/skills/test-driven-development/writing-good-tests.md +198 -0
  342. package/control-plane/scripts/skills/theme-factory/LICENSE.txt +202 -0
  343. package/control-plane/scripts/skills/theme-factory/SKILL.md +59 -0
  344. package/control-plane/scripts/skills/theme-factory/theme-showcase.pdf +0 -0
  345. package/control-plane/scripts/skills/theme-factory/themes/arctic-frost.md +19 -0
  346. package/control-plane/scripts/skills/theme-factory/themes/botanical-garden.md +19 -0
  347. package/control-plane/scripts/skills/theme-factory/themes/desert-rose.md +19 -0
  348. package/control-plane/scripts/skills/theme-factory/themes/forest-canopy.md +19 -0
  349. package/control-plane/scripts/skills/theme-factory/themes/golden-hour.md +19 -0
  350. package/control-plane/scripts/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  351. package/control-plane/scripts/skills/theme-factory/themes/modern-minimalist.md +19 -0
  352. package/control-plane/scripts/skills/theme-factory/themes/ocean-depths.md +19 -0
  353. package/control-plane/scripts/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  354. package/control-plane/scripts/skills/theme-factory/themes/tech-innovation.md +19 -0
  355. package/control-plane/scripts/skills/using-git-worktrees/SKILL.md +167 -0
  356. package/control-plane/scripts/skills/verification-before-completion/SKILL.md +120 -0
  357. package/control-plane/scripts/skills/web-artifacts-builder/LICENSE.txt +202 -0
  358. package/control-plane/scripts/skills/web-artifacts-builder/SKILL.md +74 -0
  359. package/control-plane/scripts/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  360. package/control-plane/scripts/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  361. package/control-plane/scripts/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  362. package/control-plane/scripts/skills/webapp-testing/LICENSE.txt +202 -0
  363. package/control-plane/scripts/skills/webapp-testing/SKILL.md +96 -0
  364. package/control-plane/scripts/skills/webapp-testing/examples/console_logging.py +35 -0
  365. package/control-plane/scripts/skills/webapp-testing/examples/element_discovery.py +40 -0
  366. package/control-plane/scripts/skills/webapp-testing/examples/static_html_automation.py +33 -0
  367. package/control-plane/scripts/skills/webapp-testing/scripts/with_server.py +106 -0
  368. package/control-plane/scripts/skills/writing-plans/SKILL.md +192 -0
  369. package/control-plane/scripts/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
  370. package/control-plane/scripts/skills/writing-skills/SKILL.md +681 -0
  371. package/control-plane/scripts/skills/writing-skills/anthropic-best-practices.md +1150 -0
  372. package/control-plane/scripts/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  373. package/control-plane/scripts/skills/writing-skills/graphviz-conventions.dot +172 -0
  374. package/control-plane/scripts/skills/writing-skills/persuasion-principles.md +187 -0
  375. package/control-plane/scripts/skills/writing-skills/render-graphs.js +169 -0
  376. package/control-plane/scripts/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  377. package/control-plane/scripts/smoke-mcp-schemas.mjs +30 -0
  378. package/control-plane/scripts/surface-config.mjs +45 -0
  379. package/control-plane/scripts/sync-skills.mjs +370 -0
  380. package/control-plane/scripts/tool-metrics.mjs +74 -0
  381. package/control-plane/scripts/tool-risk.mjs +156 -0
  382. package/control-plane/scripts/tool-surface-stability.mjs +38 -0
  383. package/control-plane/scripts/upstreams/catalog-cache.mjs +28 -0
  384. package/control-plane/scripts/upstreams/config.mjs +158 -0
  385. package/control-plane/scripts/upstreams/diagnostics.mjs +21 -0
  386. package/control-plane/scripts/upstreams/http-client.mjs +67 -0
  387. package/control-plane/scripts/upstreams/manager.mjs +535 -0
  388. package/control-plane/scripts/upstreams/names.mjs +55 -0
  389. package/control-plane/scripts/upstreams/presets.mjs +60 -0
  390. package/control-plane/scripts/upstreams/resource-uri.mjs +29 -0
  391. package/control-plane/scripts/upstreams/stdio-client.mjs +73 -0
  392. package/control-plane/scripts/workspace-registry.mjs +147 -0
  393. package/dist/context/authorization.d.ts +5 -0
  394. package/dist/context/authorization.js +70 -0
  395. package/dist/context/capture.d.ts +46 -0
  396. package/dist/context/capture.js +187 -0
  397. package/dist/context/cli.d.ts +47 -0
  398. package/dist/context/cli.js +287 -0
  399. package/dist/context/device-adapter.d.ts +102 -0
  400. package/dist/context/device-adapter.js +79 -0
  401. package/dist/context/gateway.d.ts +354 -0
  402. package/dist/context/gateway.js +50 -0
  403. package/dist/context/graph.d.ts +63 -0
  404. package/dist/context/graph.js +214 -0
  405. package/dist/context/importer.d.ts +8 -0
  406. package/dist/context/importer.js +69 -0
  407. package/dist/context/indexer.d.ts +14 -0
  408. package/dist/context/indexer.js +57 -0
  409. package/dist/context/migrations/index.d.ts +4 -0
  410. package/dist/context/migrations/index.js +87 -0
  411. package/dist/context/redact.d.ts +15 -0
  412. package/dist/context/redact.js +43 -0
  413. package/dist/context/repositories.d.ts +9 -0
  414. package/dist/context/repositories.js +45 -0
  415. package/dist/context/search.d.ts +63 -0
  416. package/dist/context/search.js +207 -0
  417. package/dist/context/service.d.ts +278 -0
  418. package/dist/context/service.js +160 -0
  419. package/dist/context/store.d.ts +134 -0
  420. package/dist/context/store.js +722 -0
  421. package/dist/context/text.d.ts +4 -0
  422. package/dist/context/text.js +14 -0
  423. package/dist/context/tool-contract.d.ts +534 -0
  424. package/dist/context/tool-contract.js +45 -0
  425. package/dist/device/core.d.ts +29 -0
  426. package/dist/device/core.js +66 -0
  427. package/dist/device/device.d.ts +5 -1
  428. package/dist/device/device.js +87 -39
  429. package/dist/device/gateway-channel.d.ts +8 -1
  430. package/dist/device/gateway-channel.js +51 -3
  431. package/dist/device/gateway-tool-adapter.d.ts +9 -0
  432. package/dist/device/gateway-tool-adapter.js +20 -1
  433. package/dist/device/official-trust.d.ts +12 -0
  434. package/dist/device/official-trust.js +25 -1
  435. package/dist/device/runtime-owner.js +9 -1
  436. package/dist/distribution.d.ts +4 -0
  437. package/dist/distribution.js +8 -0
  438. package/dist/log-palace/cli.d.ts +7 -0
  439. package/dist/log-palace/cli.js +89 -0
  440. package/dist/log-palace/formats.d.ts +26 -0
  441. package/dist/log-palace/formats.js +126 -0
  442. package/dist/log-palace/store.d.ts +129 -0
  443. package/dist/log-palace/store.js +856 -0
  444. package/dist/mcp-device.js +27 -5
  445. package/dist/npm-scripts/remote.js +1 -0
  446. package/dist/platform/activity-journal.d.ts +16 -0
  447. package/dist/platform/activity-journal.js +68 -0
  448. package/dist/platform/cli.d.ts +1 -0
  449. package/dist/platform/cli.js +300 -0
  450. package/dist/platform/coordination-lock.d.ts +45 -0
  451. package/dist/platform/coordination-lock.js +233 -0
  452. package/dist/platform/device-runtime.d.ts +16 -0
  453. package/dist/platform/device-runtime.js +83 -0
  454. package/dist/platform/knowledge-contract.d.ts +46 -0
  455. package/dist/platform/knowledge-contract.js +1 -0
  456. package/dist/platform/knowledge-mcp.d.ts +29 -0
  457. package/dist/platform/knowledge-mcp.js +95 -0
  458. package/dist/platform/knowledge-router.d.ts +64 -0
  459. package/dist/platform/knowledge-router.js +320 -0
  460. package/dist/platform/plugin-child.d.ts +1 -0
  461. package/dist/platform/plugin-child.js +115 -0
  462. package/dist/platform/plugin-contract.d.ts +76 -0
  463. package/dist/platform/plugin-contract.js +53 -0
  464. package/dist/platform/plugin-driver.d.ts +8 -0
  465. package/dist/platform/plugin-driver.js +443 -0
  466. package/dist/platform/plugin-host.d.ts +88 -0
  467. package/dist/platform/plugin-host.js +817 -0
  468. package/dist/platform/plugin-policy.d.ts +3 -0
  469. package/dist/platform/plugin-policy.js +29 -0
  470. package/dist/platform/plugin-services.d.ts +14 -0
  471. package/dist/platform/plugin-services.js +32 -0
  472. package/dist/platform/process-identity.d.ts +9 -0
  473. package/dist/platform/process-identity.js +68 -0
  474. package/dist/platform/runtime-lease.d.ts +4 -0
  475. package/dist/platform/runtime-lease.js +58 -0
  476. package/dist/platform/runtime-root.d.ts +9 -0
  477. package/dist/platform/runtime-root.js +61 -0
  478. package/dist/platform/state-backup.d.ts +92 -0
  479. package/dist/platform/state-backup.js +399 -0
  480. package/dist/plugins/reference/plugin.d.ts +3 -0
  481. package/dist/plugins/reference/plugin.js +13 -0
  482. package/dist/server.js +5 -1
  483. package/dist/terminal-manager.d.ts +7 -0
  484. package/dist/terminal-manager.js +10 -0
  485. package/dist/tool-dispatcher.js +5 -1
  486. package/dist/tools/improved-process-tools.js +4 -0
  487. package/dist/types.d.ts +1 -0
  488. package/dist/version.d.ts +1 -1
  489. package/dist/version.js +1 -1
  490. package/package.json +29 -6
  491. package/skills/mcp-device-context/SKILL.md +40 -0
@@ -0,0 +1,1221 @@
1
+ /*
2
+ Hallmark — tokens
3
+ Twenty-four themes. Each occupies a distinct point in OKLCH space.
4
+ Paper colours span dark / cream / saturated / cool / warm; never adjacent.
5
+ Display fonts span category-level differences (serif / mono / condensed sans / italic);
6
+ no theme is a minor variation of another.
7
+ Switched via [data-theme="..."] on <html>.
8
+ */
9
+
10
+ /* ──────────────────────────────────────────────────────────────
11
+ SPECIMEN — warm oat editorial workshop · serif default
12
+ ────────────────────────────────────────────────────────────── */
13
+
14
+ :root,
15
+ [data-theme="specimen"] {
16
+ --color-paper: oklch(96% 0.018 80);
17
+ --color-paper-2: oklch(93% 0.020 80);
18
+ --color-paper-3: oklch(89% 0.022 75);
19
+ --color-rule: oklch(82% 0.014 75);
20
+ --color-rule-2: oklch(70% 0.012 70);
21
+ --color-muted: oklch(52% 0.012 65);
22
+ --color-neutral: oklch(38% 0.014 60);
23
+ --color-ink-2: oklch(26% 0.014 60);
24
+ --color-ink: oklch(18% 0.014 60);
25
+ --color-accent: #FC4C02;
26
+ --color-accent-ink: oklch(55% 0.21 32);
27
+ --color-focus: #FC4C02;
28
+
29
+ --font-display: "Fraunces", "Tiempos", ui-serif, Georgia, serif;
30
+ --font-body: "Geist", "Söhne", ui-sans-serif, sans-serif;
31
+ --font-serif: "Fraunces", ui-serif, Georgia, serif;
32
+ --font-label: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
33
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
34
+
35
+ --display-weight: 340;
36
+ --display-optical: 144;
37
+ --display-style: normal;
38
+ --display-soft: 20;
39
+
40
+ --text-xs: 0.75rem;
41
+ --text-sm: 0.875rem;
42
+ --text-base: 1rem;
43
+ --text-md: 1.125rem;
44
+ --text-lg: 1.375rem;
45
+ --text-xl: 1.75rem;
46
+ --text-2xl: 2.25rem;
47
+ --text-3xl: 2.75rem;
48
+ --text-display: clamp(3.0rem, 5.5vw + 1.0rem, 5.75rem);
49
+ --text-display-s: clamp(2rem, 3vw + 1rem, 3rem);
50
+
51
+ --lh-tight: 1.02;
52
+ --lh-snug: 1.18;
53
+ --lh-normal: 1.45;
54
+ --lh-relaxed: 1.6;
55
+
56
+ --tracking-display: -0.025em;
57
+ --tracking-tight: -0.01em;
58
+ --tracking-normal: 0;
59
+ --tracking-label: 0.12em;
60
+
61
+ --space-3xs: 0.125rem;
62
+ --space-2xs: 0.25rem;
63
+ --space-xs: 0.5rem;
64
+ --space-sm: 0.75rem;
65
+ --space-md: 1rem;
66
+ --space-lg: 1.5rem;
67
+ --space-xl: 2.5rem;
68
+ --space-2xl: 4rem;
69
+ --space-3xl: 6.5rem;
70
+ --space-4xl: 10rem;
71
+ --space-5xl: 13rem;
72
+
73
+ --section-gap: 6.5rem;
74
+ --section-head-gap: 1.5rem;
75
+
76
+ --page-max: 76rem;
77
+ --page-gutter: clamp(1.25rem, 4vw, 3rem);
78
+ --measure: 62ch;
79
+ --rule-hair: 0.5px;
80
+ --rule-fine: 1px;
81
+
82
+ /* Component shape — square by default; per-theme overrides below.
83
+ The radius / border-weight choice is part of each theme's voice:
84
+ editorial themes stay square (Specimen, Newsprint, Atelier),
85
+ technical themes stay square (Almanac, Midnight, Terminal),
86
+ brutalist themes get heavier borders (Brutal, Manifesto),
87
+ soft themes get rounded corners (Garden, Studio, Bloom). */
88
+ --radius-card: 0; /* .code, .tell cards, .install__body */
89
+ --radius-pill: 0; /* CTAs, dot indicators, badges */
90
+ --radius-input: 0; /* form fields, single-line code blocks */
91
+ --rule-card: 1px; /* card border thickness */
92
+ --shadow-card: none; /* card depth — most themes have no shadow */
93
+
94
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
95
+ --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
96
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
97
+ --dur-micro: 120ms;
98
+ --dur-short: 220ms;
99
+ --dur-long: 420ms;
100
+
101
+ --z-base: 1;
102
+ --z-raised: 10;
103
+ --z-dropdown: 100;
104
+ --z-sticky: 200; /* in-page sticky elements (section heads, sidebars) */
105
+ --z-sticky-nav: 300; /* top nav / banner — must out-paint in-page sticky so docked section heads slide UNDER it */
106
+ --z-modal: 400;
107
+ --z-toast: 500;
108
+ --z-tooltip: 600;
109
+
110
+ /* Banner height — every in-page sticky element must offset by this so it docks BELOW the nav, never overlaps. */
111
+ --banner-height: 44px;
112
+ }
113
+
114
+ /* ──────────────────────────────────────────────────────────────
115
+ MIDNIGHT — deep cool charcoal · technical
116
+ Paper: cool dark blue-tinted (was warm; now cool for stronger
117
+ differentiation from the warm-paper themes)
118
+ ────────────────────────────────────────────────────────────── */
119
+
120
+ [data-theme="midnight"] {
121
+ --color-paper: oklch(15% 0.022 250);
122
+ --color-paper-2: oklch(20% 0.024 250);
123
+ --color-paper-3: oklch(25% 0.026 250);
124
+ --color-rule: oklch(33% 0.024 245);
125
+ --color-rule-2: oklch(48% 0.020 240);
126
+ --color-muted: oklch(60% 0.018 240);
127
+ --color-neutral: oklch(72% 0.014 235);
128
+ --color-ink-2: oklch(86% 0.010 230);
129
+ --color-ink: oklch(95% 0.008 230);
130
+ --color-accent: oklch(72% 0.16 220);
131
+ --color-accent-ink: oklch(72% 0.16 220);
132
+ --color-focus: oklch(72% 0.16 220);
133
+
134
+ --font-display: "Geist", "Futura", "Avenir Next", ui-sans-serif, sans-serif;
135
+ --font-body: "Geist", "Söhne", ui-sans-serif, sans-serif;
136
+ --font-serif: "Instrument Serif", ui-serif, Georgia, serif;
137
+ --font-label: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
138
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
139
+
140
+ --display-weight: 300;
141
+ --display-optical: 144;
142
+ --display-soft: 0;
143
+
144
+ --text-display: clamp(2.75rem, 5.0vw + 1.0rem, 5.25rem);
145
+ --text-display-s: clamp(1.75rem, 2.5vw + 1rem, 2.75rem);
146
+
147
+ --tracking-display: -0.03em;
148
+ --tracking-label: 0.16em;
149
+
150
+ --section-gap: 6rem;
151
+ --section-head-gap: 1.5rem;
152
+ --measure: 60ch;
153
+ }
154
+
155
+ /* ──────────────────────────────────────────────────────────────
156
+ BRUTAL — stark white · heavy condensed · bright red
157
+ ────────────────────────────────────────────────────────────── */
158
+
159
+ [data-theme="brutal"] {
160
+ --color-paper: oklch(98% 0.001 0);
161
+ --color-paper-2: oklch(95% 0.002 0);
162
+ --color-paper-3: oklch(91% 0.003 0);
163
+ --color-rule: oklch(12% 0.005 0);
164
+ --color-rule-2: oklch(8% 0.005 0);
165
+ --color-muted: oklch(38% 0.005 0);
166
+ --color-neutral: oklch(22% 0.005 0);
167
+ --color-ink-2: oklch(12% 0.005 0);
168
+ --color-ink: oklch(8% 0.005 0);
169
+ --color-accent: #E63946;
170
+ --color-accent-ink: oklch(58% 0.24 25);
171
+ --color-focus: #E63946;
172
+
173
+ --font-display: "Albert Sans", "GT America", ui-sans-serif, sans-serif;
174
+ --font-body: "Albert Sans", "Hanken Grotesk", ui-sans-serif, sans-serif;
175
+ --font-serif: "Albert Sans", ui-sans-serif, sans-serif;
176
+ --font-label: "JetBrains Mono", ui-monospace, monospace;
177
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
178
+
179
+ --display-weight: 700;
180
+ --display-soft: 0;
181
+
182
+ --text-display: clamp(3.5rem, 6vw + 1.0rem, 6.5rem);
183
+ --text-display-s: clamp(2.25rem, 4vw + 1rem, 3.75rem);
184
+ --text-2xl: 2.75rem;
185
+ --text-xl: 2rem;
186
+ --text-lg: 1.5rem;
187
+
188
+ --tracking-display: -0.045em;
189
+ --tracking-tight: -0.02em;
190
+ --tracking-label: 0.04em;
191
+
192
+ /* Manifesto runs uppercase Anton on display heads — line-height < 1.0 makes
193
+ cap-tops of line N+1 collide with the comma / baseline of line N (visible
194
+ on multi-line section titles like "SAME PROMPT, TWO / DIFFERENT OUTPUTS").
195
+ 1.02 is the safe floor for all-caps condensed display. */
196
+ --lh-tight: 1.02;
197
+ --lh-snug: 1.08;
198
+
199
+ --section-gap: 5.5rem;
200
+ --section-head-gap: 1.25rem;
201
+
202
+ --rule-hair: 1px;
203
+ --rule-fine: 3px;
204
+ --measure: 58ch;
205
+ }
206
+
207
+ /* ──────────────────────────────────────────────────────────────
208
+ GARDEN — modern botanical almanac. REWORKED (was flat sage + rose +
209
+ Cormorant). Warm oat-cream paper · deep "botanical-ink" green · a living
210
+ leaf-green accent + one earthy clay pop. Young Serif (organic, roman-only)
211
+ for display over clean Hanken Grotesk body; Geist Mono for herbarium
212
+ specimen labels. References the antique seed-catalogue register
213
+ (Floret / Botanical Interests) made contemporary — earthy, alive, clean.
214
+ ────────────────────────────────────────────────────────────── */
215
+
216
+ [data-theme="garden"] {
217
+ --color-paper: oklch(95.5% 0.022 92); /* warm oat cream — never grey-sage */
218
+ --color-paper-2: oklch(92.5% 0.026 92); /* tinted band */
219
+ --color-paper-3: oklch(88.5% 0.030 90); /* hover / deeper */
220
+ --color-rule: oklch(83% 0.028 115); /* soft green-grey hairline */
221
+ --color-rule-2: oklch(62% 0.045 132); /* mossy rule */
222
+ --color-muted: oklch(48% 0.040 138); /* captions — muted green */
223
+ --color-neutral: oklch(40% 0.045 142);
224
+ --color-ink-2: oklch(33% 0.050 150); /* deep green body */
225
+ --color-ink: oklch(24% 0.052 152); /* botanical ink — warm near-black green */
226
+ --color-accent: oklch(47% 0.13 140); /* living leaf-green (primary) */
227
+ --color-accent-2: oklch(54% 0.14 46); /* earthy clay / terracotta pop */
228
+ --color-accent-ink: oklch(96% 0.02 92); /* cream on green / clay fills */
229
+ --color-focus: oklch(47% 0.13 140);
230
+
231
+ /* botanical tints — soft section bands (used by Garden builds) */
232
+ --tint-moss: oklch(47% 0.13 140 / 0.10);
233
+ --tint-clay: oklch(54% 0.14 46 / 0.10);
234
+
235
+ --font-display: "Young Serif", ui-serif, Georgia, serif;
236
+ --font-body: "Hanken Grotesk", "Geist", ui-sans-serif, system-ui, sans-serif;
237
+ --font-serif: "Newsreader", ui-serif, Georgia, serif; /* readable text-serif for prose; Young Serif is display-only */
238
+ --font-label: "Geist Mono", ui-monospace, monospace;
239
+ --font-mono: "Geist Mono", ui-monospace, monospace;
240
+
241
+ --display-weight: 400; /* Young Serif ships one organic weight */
242
+ --display-style: normal; /* roman — no italic headers */
243
+
244
+ --text-display: clamp(2.85rem, 5.2vw + 1rem, 5rem);
245
+ --text-display-s: clamp(2.1rem, 3.2vw + 1rem, 3.25rem);
246
+
247
+ --tracking-display: -0.006em;
248
+ --tracking-tight: -0.004em;
249
+ --tracking-label: 0.14em; /* herbarium specimen tags */
250
+
251
+ --lh-tight: 1.06;
252
+ --lh-snug: 1.22;
253
+
254
+ --section-gap: 6.5rem;
255
+ --section-head-gap: 1.6rem;
256
+ --measure: 58ch;
257
+
258
+ --shadow-card: 0 14px 34px -20px oklch(24% 0.05 150 / 0.22),
259
+ 0 1px 2px oklch(24% 0.05 150 / 0.08);
260
+ }
261
+
262
+ /* ──────────────────────────────────────────────────────────────
263
+ ATELIER — luxury fashion-house
264
+ Cool cream paper (low chroma so it reads "considered" not "warm")
265
+ + dark warm-brown ink + Playfair Display 900 (Didone-feel)
266
+ ────────────────────────────────────────────────────────────── */
267
+
268
+ [data-theme="atelier"] {
269
+ --color-paper: oklch(94% 0.005 60);
270
+ --color-paper-2: oklch(91% 0.006 60);
271
+ --color-paper-3: oklch(87% 0.008 55);
272
+ --color-rule: oklch(78% 0.006 55);
273
+ --color-rule-2: oklch(56% 0.008 50);
274
+ --color-muted: oklch(46% 0.010 50);
275
+ --color-neutral: oklch(28% 0.014 45);
276
+ --color-ink-2: oklch(18% 0.020 40);
277
+ --color-ink: oklch(12% 0.024 40);
278
+ --color-accent: oklch(22% 0.060 40);
279
+ --color-accent-ink: oklch(45% 0.13 60);
280
+ --color-focus: oklch(45% 0.13 60);
281
+
282
+ --font-display: "Playfair Display", "Cormorant Garamond", "Tiempos Headline", ui-serif, Georgia, serif;
283
+ --font-body: "Hanken Grotesk", "Geist", ui-sans-serif, sans-serif;
284
+ --font-serif: "Playfair Display", "Cormorant Garamond", ui-serif, Georgia, serif;
285
+ --font-label: "IBM Plex Mono", ui-monospace, monospace;
286
+ --font-mono: "IBM Plex Mono", ui-monospace, monospace;
287
+
288
+ --display-weight: 900;
289
+ --display-optical: 144;
290
+ --display-style: normal;
291
+ --display-soft: 0;
292
+
293
+ --text-display: clamp(3.75rem, 5.5vw + 1.0rem, 6.25rem);
294
+ --text-display-s: clamp(2.5rem, 4vw + 1rem, 4rem);
295
+
296
+ --tracking-display: -0.018em;
297
+ --tracking-tight: -0.008em;
298
+ --tracking-label: 0.24em;
299
+
300
+ --lh-tight: 1.0;
301
+ --lh-snug: 1.16;
302
+ --lh-normal: 1.55;
303
+ --lh-relaxed: 1.7;
304
+
305
+ --section-gap: 6.5rem;
306
+ --section-head-gap: 1.75rem;
307
+ --measure: 56ch;
308
+ --page-max: 64rem;
309
+ }
310
+
311
+ /* ──────────────────────────────────────────────────────────────
312
+ NEWSPRINT — broadsheet · salmon-pink paper · burgundy accent
313
+ FT-inspired pink (real)
314
+ ────────────────────────────────────────────────────────────── */
315
+
316
+ [data-theme="newsprint"] {
317
+ --color-paper: oklch(92% 0.045 50);
318
+ --color-paper-2: oklch(89% 0.050 50);
319
+ --color-paper-3: oklch(84% 0.054 45);
320
+ --color-rule: oklch(68% 0.030 40);
321
+ --color-rule-2: oklch(35% 0.020 35);
322
+ --color-muted: oklch(46% 0.022 35);
323
+ --color-neutral: oklch(30% 0.025 30);
324
+ --color-ink-2: oklch(20% 0.030 28);
325
+ --color-ink: oklch(15% 0.030 25);
326
+ --color-accent: oklch(32% 0.10 28);
327
+ --color-accent-ink: oklch(45% 0.13 30);
328
+ --color-focus: oklch(48% 0.18 30);
329
+
330
+ --font-display: "Playfair Display", "Crimson Pro", "Newsreader", ui-serif, Georgia, serif;
331
+ --font-body: "Crimson Pro", "Newsreader", ui-serif, Georgia, serif;
332
+ --font-serif: "Playfair Display", "Crimson Pro", ui-serif, Georgia, serif;
333
+ --font-label: "Inter", "Geist", ui-sans-serif, sans-serif;
334
+ --font-mono: "IBM Plex Mono", ui-monospace, monospace;
335
+
336
+ --display-weight: 700;
337
+ --display-optical: 48;
338
+ --display-style: normal;
339
+ --display-soft: 0;
340
+
341
+ --text-base: 1.0625rem;
342
+ --text-md: 1.1875rem;
343
+ --text-lg: 1.375rem;
344
+ --text-xl: 1.625rem;
345
+ --text-2xl: 2rem;
346
+ --text-display: clamp(2.75rem, 5.0vw + 1.0rem, 5.0rem);
347
+ --text-display-s: clamp(2rem, 3vw + 1rem, 2.875rem);
348
+
349
+ --tracking-display: -0.022em;
350
+ --tracking-tight: -0.008em;
351
+ --tracking-label: 0.06em;
352
+
353
+ --lh-normal: 1.55;
354
+ --lh-relaxed: 1.65;
355
+
356
+ --section-gap: 6rem;
357
+ --section-head-gap: 1.5rem;
358
+ --measure: 58ch;
359
+ }
360
+
361
+ /* ──────────────────────────────────────────────────────────────
362
+ TERMINAL — phosphor CRT · monospace everywhere
363
+ ────────────────────────────────────────────────────────────── */
364
+
365
+ [data-theme="terminal"] {
366
+ --color-paper: oklch(11% 0.018 145);
367
+ --color-paper-2: oklch(15% 0.022 145);
368
+ --color-paper-3: oklch(19% 0.024 145);
369
+ --color-rule: oklch(28% 0.030 140);
370
+ --color-rule-2: oklch(40% 0.050 140);
371
+ --color-muted: oklch(58% 0.090 140);
372
+ --color-neutral: oklch(68% 0.120 140);
373
+ --color-ink-2: oklch(78% 0.140 138);
374
+ --color-ink: oklch(86% 0.160 138);
375
+ --color-accent: oklch(78% 0.190 138);
376
+ --color-accent-ink: oklch(78% 0.190 138);
377
+ --color-focus: oklch(86% 0.190 138);
378
+
379
+ --font-display: "JetBrains Mono", "IBM Plex Mono", "Geist Mono", ui-monospace, monospace;
380
+ --font-body: "JetBrains Mono", "IBM Plex Mono", ui-monospace, monospace;
381
+ --font-serif: "JetBrains Mono", ui-monospace, monospace;
382
+ --font-label: "JetBrains Mono", ui-monospace, monospace;
383
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
384
+
385
+ --display-weight: 500;
386
+ --display-style: normal;
387
+
388
+ --text-display: clamp(2.25rem, 4.0vw + 1.0rem, 4.0rem);
389
+ --text-display-s: clamp(1.625rem, 2.25vw + 1rem, 2.5rem);
390
+ --text-xl: 1.5rem;
391
+ --text-2xl: 1.875rem;
392
+
393
+ --tracking-display: 0.01em;
394
+ --tracking-tight: 0;
395
+ --tracking-label: 0.18em;
396
+
397
+ --lh-tight: 1.2;
398
+ --lh-snug: 1.35;
399
+ --lh-normal: 1.55;
400
+
401
+ --section-gap: 5.5rem;
402
+ --section-head-gap: 1.25rem;
403
+ --measure: 70ch;
404
+ }
405
+
406
+ /* ──────────────────────────────────────────────────────────────
407
+ MANIFESTO — BLACK paper · ALL CAPS condensed · red colour-blocks
408
+ The opposite pole from Brutal: same red accent, inverted background.
409
+ ────────────────────────────────────────────────────────────── */
410
+
411
+ [data-theme="manifesto"] {
412
+ --color-paper: oklch(10% 0.005 60);
413
+ --color-paper-2: oklch(15% 0.006 60);
414
+ --color-paper-3: oklch(20% 0.008 60);
415
+ --color-rule: oklch(28% 0.010 60);
416
+ --color-rule-2: oklch(40% 0.012 60);
417
+ --color-muted: oklch(60% 0.012 65);
418
+ --color-neutral: oklch(72% 0.010 70);
419
+ --color-ink-2: oklch(88% 0.006 80);
420
+ --color-ink: oklch(98% 0.003 90);
421
+ --color-accent: #E51A1A;
422
+ --color-accent-ink: oklch(58% 0.24 28);
423
+ --color-focus: #E51A1A;
424
+
425
+ --font-display: "Anton", "Bebas Neue", "Albert Sans", sans-serif;
426
+ --font-body: "Public Sans", "Albert Sans", "Hanken Grotesk", ui-sans-serif, sans-serif;
427
+ --font-serif: "Anton", "Albert Sans", sans-serif;
428
+ --font-label: "JetBrains Mono", ui-monospace, monospace;
429
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
430
+
431
+ --display-weight: 400;
432
+ --display-optical: 96;
433
+ --display-style: normal;
434
+
435
+ --text-display: clamp(4.0rem, 8vw + 1.0rem, 9rem);
436
+ --text-display-s: clamp(2.75rem, 6vw + 1rem, 5.5rem);
437
+ --text-2xl: 3rem;
438
+ --text-xl: 2rem;
439
+
440
+ --tracking-display: 0.005em;
441
+ --tracking-tight: 0;
442
+ --tracking-label: 0.10em;
443
+
444
+ --lh-tight: 0.86;
445
+ --lh-snug: 1.0;
446
+
447
+ --section-gap: 5.5rem;
448
+ --section-head-gap: 1.25rem;
449
+
450
+ --rule-hair: 1px;
451
+ --rule-fine: 3px;
452
+ --measure: 56ch;
453
+ }
454
+
455
+ /* ──────────────────────────────────────────────────────────────
456
+ ALMANAC — encyclopaedic · COOL pale paper (not warm) · slate accent
457
+ Cool hue 245 is the key differentiator from the warm-cream cluster
458
+ + dense type · sticky labels · grid lines
459
+ ────────────────────────────────────────────────────────────── */
460
+
461
+ [data-theme="almanac"] {
462
+ --color-paper: oklch(94% 0.008 245);
463
+ --color-paper-2: oklch(91% 0.010 245);
464
+ --color-paper-3: oklch(86% 0.012 240);
465
+ --color-rule: oklch(74% 0.012 240);
466
+ --color-rule-2: oklch(38% 0.018 240);
467
+ --color-muted: oklch(46% 0.014 245);
468
+ --color-neutral: oklch(28% 0.016 245);
469
+ --color-ink-2: oklch(20% 0.018 245);
470
+ --color-ink: oklch(16% 0.020 245);
471
+ --color-accent: oklch(38% 0.135 250);
472
+ --color-accent-ink: oklch(40% 0.13 250);
473
+ --color-focus: oklch(38% 0.135 250);
474
+
475
+ --font-display: "Hanken Grotesk", "Inter", ui-sans-serif, sans-serif;
476
+ --font-body: "Hanken Grotesk", "Inter", "Geist", ui-sans-serif, sans-serif;
477
+ --font-serif: "Newsreader", ui-serif, Georgia, serif;
478
+ --font-label: "IBM Plex Mono", ui-monospace, monospace;
479
+ --font-mono: "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace;
480
+
481
+ --display-weight: 600;
482
+ --display-optical: 48;
483
+ --display-style: normal;
484
+
485
+ --text-xs: 0.6875rem;
486
+ --text-sm: 0.8125rem;
487
+ --text-base: 0.9375rem;
488
+ --text-md: 1.0625rem;
489
+ --text-lg: 1.25rem;
490
+ --text-xl: 1.5rem;
491
+ --text-2xl: 1.875rem;
492
+ --text-display: clamp(2.25rem, 3.5vw + 1.0rem, 3.75rem);
493
+ --text-display-s: clamp(1.5rem, 2vw + 1rem, 2.25rem);
494
+
495
+ --tracking-display: -0.014em;
496
+ --tracking-tight: -0.005em;
497
+ --tracking-label: 0.06em;
498
+
499
+ --lh-tight: 1.1;
500
+ --lh-snug: 1.22;
501
+ --lh-normal: 1.5;
502
+
503
+ --space-xl: 2rem;
504
+ --space-2xl: 3rem;
505
+ --space-3xl: 4.5rem;
506
+
507
+ --section-gap: 5.5rem;
508
+ --section-head-gap: 1.25rem;
509
+ --measure: 64ch;
510
+ --page-max: 84rem;
511
+ }
512
+
513
+ /* ──────────────────────────────────────────────────────────────
514
+ SPORT — crisp white · italic display · burnt orange accent
515
+ ────────────────────────────────────────────────────────────── */
516
+
517
+ [data-theme="sport"] {
518
+ --color-paper: oklch(98% 0.003 250);
519
+ --color-paper-2: oklch(95% 0.005 250);
520
+ --color-paper-3: oklch(91% 0.007 250);
521
+ --color-rule: oklch(78% 0.008 250);
522
+ --color-rule-2: oklch(36% 0.060 255);
523
+ --color-muted: oklch(50% 0.020 250);
524
+ --color-neutral: oklch(30% 0.040 255);
525
+ --color-ink-2: oklch(22% 0.060 258);
526
+ --color-ink: oklch(16% 0.080 260);
527
+ --color-accent: oklch(58% 0.190 35);
528
+ --color-accent-ink: oklch(54% 0.20 35);
529
+ --color-focus: oklch(58% 0.190 35);
530
+
531
+ --font-display: "Inter Tight", "Albert Sans", ui-sans-serif, sans-serif;
532
+ --font-body: "Albert Sans", "Hanken Grotesk", ui-sans-serif, sans-serif;
533
+ --font-serif: "Inter Tight", ui-sans-serif, sans-serif;
534
+ --font-label: "JetBrains Mono", ui-monospace, monospace;
535
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
536
+
537
+ --display-weight: 700;
538
+ --display-style: normal;
539
+ --display-optical: 96;
540
+
541
+ --text-display: clamp(3.5rem, 6vw + 1.0rem, 6.5rem);
542
+ --text-display-s: clamp(2.25rem, 4vw + 1rem, 4rem);
543
+ --text-2xl: 2.5rem;
544
+ --text-xl: 1.875rem;
545
+
546
+ --tracking-display: -0.04em;
547
+ --tracking-tight: -0.018em;
548
+ --tracking-label: 0.10em;
549
+
550
+ /* Sport runs uppercase Inter Tight on display heads — same collision risk
551
+ as Manifesto when titles wrap to two lines. 1.02 floor for all-caps. */
552
+ --lh-tight: 1.02;
553
+ --lh-snug: 1.06;
554
+
555
+ --section-gap: 5.5rem;
556
+ --section-head-gap: 1.25rem;
557
+
558
+ --rule-hair: 1px;
559
+ --rule-fine: 2px;
560
+ --measure: 58ch;
561
+ }
562
+
563
+ /* ──────────────────────────────────────────────────────────────
564
+ STUDIO — modern editorial agency · Fraunces italic display
565
+ Inspiration: 14islands, Mathieu Triay, Frame, Gretel, contemporary
566
+ studio portfolios in 2026. Forest-green accent — uncommon, distinctive.
567
+ Fraunces is a variable serif with conventional italic letterforms;
568
+ used here at high optical size + soft axis for the editorial agency feel.
569
+ Repalleted: paper shifts from warm-cream to cool-grey (hue 200, very low
570
+ chroma) so Studio's italic-Fraunces + forest-green accent reads against
571
+ a calm, scientific surface — like a research-studio rather than a
572
+ warm-bohemian-studio. The green accent is the identity, not the paper.
573
+ ────────────────────────────────────────────────────────────── */
574
+
575
+ [data-theme="studio"] {
576
+ --color-paper: oklch(96.5% 0.005 200);
577
+ --color-paper-2: oklch(93.5% 0.007 200);
578
+ --color-paper-3: oklch(89% 0.010 200);
579
+ --color-rule: oklch(82% 0.008 200);
580
+ --color-rule-2: oklch(68% 0.010 200);
581
+ --color-muted: oklch(48% 0.012 205);
582
+ --color-neutral: oklch(34% 0.016 205);
583
+ --color-ink-2: oklch(22% 0.020 205);
584
+ --color-ink: oklch(13% 0.024 205);
585
+ --color-accent: oklch(46% 0.140 145);
586
+ --color-accent-ink: oklch(46% 0.140 145);
587
+ --color-focus: oklch(46% 0.140 145);
588
+
589
+ --font-display: "Fraunces", "Tiempos", ui-serif, Georgia, serif;
590
+ --font-body: "Geist", "Söhne", ui-sans-serif, system-ui, sans-serif;
591
+ --font-serif: "Fraunces", ui-serif, Georgia, serif;
592
+ --font-label: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
593
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
594
+
595
+ --display-weight: 400;
596
+ --display-optical: 144;
597
+ --display-style: normal;
598
+ --display-soft: 30;
599
+
600
+ --text-display: clamp(3.5rem, 5.5vw + 1.0rem, 6.25rem);
601
+ --text-display-s: clamp(2.25rem, 4vw + 1rem, 4.25rem);
602
+
603
+ --tracking-display: -0.022em;
604
+ --tracking-label: 0.08em;
605
+ --section-gap: 6.5rem;
606
+ --section-head-gap: 1.5rem;
607
+
608
+ }
609
+
610
+ /* ──────────────────────────────────────────────────────────────
611
+ RISO — risograph print · Public Sans display, off-register
612
+ Inspiration: Are.na, e-flux, Frieze, indie magazine sites.
613
+ Warm peach paper, riso cyan + yellow as accents, slight CMYK
614
+ misregistration on display via text-shadow.
615
+ ────────────────────────────────────────────────────────────── */
616
+
617
+ [data-theme="riso"] {
618
+ --color-paper: oklch(91% 0.034 30);
619
+ --color-paper-2: oklch(87% 0.040 30);
620
+ --color-paper-3: oklch(82% 0.046 30);
621
+ --color-rule: oklch(70% 0.040 30);
622
+ --color-rule-2: oklch(56% 0.060 30);
623
+ --color-muted: oklch(46% 0.060 30);
624
+ --color-neutral: oklch(34% 0.060 30);
625
+ --color-ink-2: oklch(22% 0.060 30);
626
+ --color-ink: oklch(18% 0.060 30);
627
+ --color-accent: oklch(58% 0.170 220); /* riso cyan/teal */
628
+ --color-accent-2: oklch(78% 0.180 95); /* riso yellow */
629
+ --color-accent-ink: oklch(58% 0.170 220);
630
+ --color-focus: oklch(58% 0.170 220);
631
+
632
+ --font-display: "Public Sans", "Albert Sans", ui-sans-serif, system-ui, sans-serif;
633
+ --font-body: "Newsreader", "Tiempos", ui-serif, Georgia, serif;
634
+ --font-serif: "Newsreader", ui-serif, Georgia, serif;
635
+ --font-label: "Public Sans", "Albert Sans", ui-sans-serif, sans-serif;
636
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
637
+
638
+ --display-weight: 800;
639
+ --display-style: normal;
640
+
641
+ --text-display: clamp(3.25rem, 5.5vw + 1.0rem, 6.25rem);
642
+ --text-display-s: clamp(2.25rem, 3.5vw + 1rem, 3.75rem);
643
+
644
+ --tracking-display: -0.04em;
645
+ --tracking-tight: -0.014em;
646
+ --tracking-label: 0.06em;
647
+
648
+ --lh-tight: 0.92;
649
+ --lh-snug: 1.10;
650
+ --section-gap: 6rem;
651
+ --section-head-gap: 1.5rem;
652
+
653
+ }
654
+
655
+
656
+
657
+ /* ──────────────────────────────────────────────────────────────
658
+ BLOOM — clean warm-light minimal · one restrained warm accent ·
659
+ a single soft bloom. REWORKED from the old high-chroma pink wash to
660
+ a calm, airy, considered page: warm off-white paper, a muted coral
661
+ used sparingly, confident clean sans, generous space.
662
+ ────────────────────────────────────────────────────────────── */
663
+
664
+ [data-theme="bloom"] {
665
+ --color-paper: oklch(97% 0.010 72); /* calm warm off-white */
666
+ --color-paper-2: oklch(94.5% 0.012 72);
667
+ --color-paper-3: oklch(91% 0.014 68);
668
+ --color-rule: oklch(86% 0.012 70);
669
+ --color-rule-2: oklch(68% 0.016 64);
670
+ --color-muted: oklch(50% 0.018 58);
671
+ --color-neutral: oklch(40% 0.020 52);
672
+ --color-ink-2: oklch(30% 0.022 46);
673
+ --color-ink: oklch(20% 0.022 40); /* warm near-black */
674
+ --color-accent: oklch(56% 0.13 35); /* restrained terracotta-coral — used sparingly */
675
+ --color-accent-ink: oklch(98% 0.010 72);
676
+ --color-accent-2: oklch(64% 0.09 55); /* soft warm companion (bloom tint only) */
677
+ --color-focus: oklch(56% 0.13 35);
678
+
679
+ --font-display: "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
680
+ --font-body: "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
681
+ --font-serif: "Instrument Serif", ui-serif, Georgia, serif;
682
+ --font-label: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
683
+ --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
684
+
685
+ --display-weight: 600;
686
+ --display-style: normal;
687
+
688
+ --text-display: clamp(3.0rem, 6.0vw + 1.0rem, 5.75rem);
689
+ --text-display-s: clamp(2rem, 3vw + 1rem, 3.5rem);
690
+
691
+ --tracking-display: -0.022em;
692
+ --tracking-tight: -0.014em;
693
+ --tracking-label: 0.12em;
694
+
695
+ --lh-tight: 1.06;
696
+ --lh-snug: 1.2;
697
+
698
+ --section-gap: 7rem;
699
+ --section-head-gap: 1.6rem;
700
+ }
701
+
702
+ /* ──────────────────────────────────────────────────────────────
703
+ CORAL — modern-minimal · warm-grey paper · single coral accent
704
+ The "Stripe-not-Linear" register. Geist + General Sans. Pill CTAs,
705
+ warm greys instead of pure neutral. The accent is restrained — a
706
+ coral mark, not a flood.
707
+ ────────────────────────────────────────────────────────────── */
708
+
709
+ [data-theme="coral"] {
710
+ --color-paper: oklch(96.5% 0.005 50);
711
+ --color-paper-2: oklch(94% 0.006 50);
712
+ --color-paper-3: oklch(91% 0.008 50);
713
+ --color-rule: oklch(86% 0.008 50);
714
+ --color-rule-2: oklch(72% 0.010 50);
715
+ --color-muted: oklch(52% 0.012 50);
716
+ --color-neutral: oklch(38% 0.012 45);
717
+ --color-ink-2: oklch(26% 0.012 40);
718
+ --color-ink: oklch(20% 0.010 35);
719
+ --color-accent: oklch(64% 0.165 28); /* warm coral */
720
+ --color-accent-ink: oklch(98% 0.005 50);
721
+ --color-focus: oklch(64% 0.165 28);
722
+
723
+ --font-display: "Geist", "General Sans", ui-sans-serif, system-ui, sans-serif;
724
+ --font-body: "Geist", "General Sans", ui-sans-serif, system-ui, sans-serif;
725
+ --font-serif: ui-serif, Georgia, serif;
726
+ --font-label: "Geist Mono", ui-monospace, monospace;
727
+ --font-mono: "Geist Mono", ui-monospace, monospace;
728
+
729
+ --display-weight: 600;
730
+ --display-style: normal;
731
+
732
+ --text-display: clamp(2.5rem, 5.0vw + 0.5rem, 4.5rem);
733
+ --text-display-s: clamp(2rem, 3vw + 0.5rem, 3rem);
734
+
735
+ --tracking-display: -0.025em;
736
+ --tracking-tight: -0.015em;
737
+ --tracking-label: 0.05em;
738
+ --section-gap: 6rem;
739
+ --section-head-gap: 1.5rem;
740
+
741
+ }
742
+
743
+ /* ──────────────────────────────────────────────────────────────
744
+ COBALT — modern-minimal · cool engineered paper · electric cobalt
745
+ The dev-tool / API / docs register (the GitBook + Firecrawl school)
746
+ without the now-crowded orange. A calm cool-white ground, ruler-drawn
747
+ hairlines, one electric cobalt signal accent, and a code/API hero.
748
+ Space Grotesk display + Inter body + JetBrains Mono for code.
749
+ Distinct from Coral: cool (not warm) paper, electric blue (not coral),
750
+ mono-forward type (not Geist), bordered nav + tight technical radii.
751
+ ────────────────────────────────────────────────────────────── */
752
+
753
+ [data-theme="cobalt"] {
754
+ --color-paper: oklch(98.5% 0.004 250); /* cool engineered near-white */
755
+ --color-paper-2: oklch(96.5% 0.005 252); /* faint cool band */
756
+ --color-paper-3: oklch(94% 0.006 254); /* elevated cool surface */
757
+ --color-rule: oklch(91% 0.008 255); /* hairline — borders do the work */
758
+ --color-rule-2: oklch(83% 0.011 255);
759
+ --color-muted: oklch(56% 0.013 255); /* captions, meta */
760
+ --color-neutral: oklch(46% 0.015 255);
761
+ --color-ink-2: oklch(34% 0.018 257); /* body text */
762
+ --color-ink: oklch(24% 0.020 258); /* cool charcoal — never black */
763
+ --color-accent: oklch(58% 0.20 256); /* electric cobalt — the one signal */
764
+ --color-accent-ink: oklch(99% 0.004 256); /* on-cobalt text */
765
+ --color-focus: oklch(58% 0.20 256);
766
+ --color-graphite: oklch(24% 0.018 260); /* dark code-card ground */
767
+
768
+ --font-display: "Space Grotesk", "Inter Tight", ui-sans-serif, system-ui, sans-serif;
769
+ --font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
770
+ --font-serif: "Inter", ui-sans-serif, system-ui, sans-serif; /* Cobalt is all-sans — override the :root serif fallback */
771
+ --font-label: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
772
+ --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
773
+
774
+ --display-weight: 500;
775
+ --display-style: normal;
776
+
777
+ --text-display: clamp(2.5rem, 4.5vw + 0.75rem, 4.5rem);
778
+ --text-display-s: clamp(1.85rem, 3vw + 0.5rem, 2.75rem);
779
+
780
+ --tracking-display: -0.03em;
781
+ --tracking-tight: -0.015em;
782
+ --tracking-label: 0.06em;
783
+ --section-gap: 7rem;
784
+ --section-head-gap: 1.5rem;
785
+ }
786
+
787
+ /* ──────────────────────────────────────────────────────────────
788
+ AURORA — atmospheric · cool blue-green gradient on near-black
789
+ The Linear/Vercel-after-dark register. Sentient body, single cyan
790
+ accent, two cool blooms behind the content (cyan + teal-green).
791
+ ────────────────────────────────────────────────────────────── */
792
+
793
+ [data-theme="aurora"] {
794
+ --color-paper: oklch(11% 0.025 200); /* dark cool, cyan tilt */
795
+ --color-paper-2: oklch(15% 0.028 200);
796
+ --color-paper-3: oklch(18% 0.030 200);
797
+ --color-rule: oklch(28% 0.022 200);
798
+ --color-rule-2: oklch(38% 0.024 200);
799
+ --color-muted: oklch(60% 0.018 200);
800
+ --color-neutral: oklch(74% 0.014 200);
801
+ --color-ink-2: oklch(82% 0.012 200);
802
+ --color-ink: oklch(96% 0.010 200);
803
+ --color-accent: oklch(72% 0.170 200); /* cyan */
804
+ --color-accent-ink: oklch(11% 0.025 200);
805
+ --color-accent-2: oklch(64% 0.150 175); /* secondary teal-green */
806
+ --color-focus: oklch(72% 0.170 200);
807
+
808
+ --font-display: "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
809
+ --font-body: "Sentient", "Geist", ui-sans-serif, system-ui, sans-serif;
810
+ --font-serif: "Sentient", ui-serif, Georgia, serif;
811
+ --font-label: "Geist Mono", ui-monospace, monospace;
812
+ --font-mono: "Geist Mono", ui-monospace, monospace;
813
+
814
+ --display-weight: 600;
815
+ --display-style: normal;
816
+
817
+ --text-display: clamp(3.0rem, 6.0vw + 1.0rem, 5.75rem);
818
+ --text-display-s: clamp(2rem, 3vw + 1rem, 3.5rem);
819
+
820
+ --tracking-display: -0.035em;
821
+ --tracking-tight: -0.02em;
822
+ --tracking-label: 0.10em;
823
+
824
+ --lh-tight: 1.05;
825
+ --lh-snug: 1.18;
826
+ --section-gap: 6.5rem;
827
+ --section-head-gap: 1.5rem;
828
+
829
+ }
830
+
831
+ /* ──────────────────────────────────────────────────────────────
832
+ PER-THEME COMPONENT SHAPE — radius, border weight, shadow.
833
+ Defaults (in :root above): square edges, 1 px border, no shadow.
834
+ These overrides give each theme its own component voice without
835
+ touching colour or typography.
836
+
837
+ The discipline: editorial / brutalist / technical themes stay
838
+ square (the rule is the design); soft / modern themes get
839
+ measured radius (Bloom 16 px is the most rounded here — the
840
+ soft modern themes); brutalist / declarative themes get heavier
841
+ borders. Nothing is rounded "for fun".
842
+ ────────────────────────────────────────────────────────────── */
843
+
844
+ [data-theme="brutal"] { --rule-card: 2px; }
845
+ [data-theme="manifesto"] { --rule-card: 2px; }
846
+ [data-theme="sport"] { --rule-card: 1.5px; }
847
+ [data-theme="garden"] { --radius-card: 10px; --radius-pill: 8px; --radius-input: 8px; }
848
+ [data-theme="studio"] { --radius-card: 6px; --radius-pill: 4px; --shadow-card: 0 1px 2px oklch(20% 0.014 205 / 0.05); }
849
+ [data-theme="riso"] { --radius-card: 2px; --radius-pill: 2px; }
850
+ [data-theme="bloom"] { --radius-card: 16px; --radius-pill: 999px; --radius-input: 12px;
851
+ --shadow-card: 0 12px 32px -18px oklch(20% 0.03 60 / 0.12),
852
+ 0 1px 2px oklch(20% 0.03 60 / 0.06); }
853
+ [data-theme="coral"] { --radius-card: 8px; --radius-pill: 999px; --radius-input: 6px;
854
+ --shadow-card: 0 1px 2px oklch(20% 0.01 50 / 0.06); }
855
+ [data-theme="aurora"] { --radius-card: 12px; --radius-pill: 999px; --radius-input: 10px;
856
+ --shadow-card: 0 16px 40px -16px oklch(11% 0.04 200 / 0.65),
857
+ 0 1px 2px oklch(11% 0.04 200 / 0.4); }
858
+ [data-theme="cobalt"] { --radius-card: 10px; --radius-pill: 6px; --radius-input: 6px;
859
+ --shadow-card: 0 1px 2px oklch(24% 0.02 258 / 0.05); }
860
+ [data-theme="editorial"] { --radius-card: 0; --radius-pill: 0; --radius-input: 0; --rule-card: 0.5px; }
861
+
862
+
863
+ /* ──────────────────────────────────────────────────────────────
864
+ EDITORIAL — editorial-premium magazine voice
865
+ Warm cream paper + coral accent + Inter Tight display with
866
+ Playfair Display italic emphasis inside. Magazine-shaped: hairline
867
+ rules, asymmetric grids, Roman-numeral marginalia, 2-axis serif/sans
868
+ pairing.
869
+ ────────────────────────────────────────────────────────────── */
870
+
871
+ [data-theme="editorial"] {
872
+ --color-paper: oklch(94% 0.020 75); /* warm cream, slightly cooler than Specimen */
873
+ --color-paper-2: oklch(91% 0.022 72); /* card backs */
874
+ --color-paper-3: oklch(87% 0.024 70); /* dark-slab fallback */
875
+ --color-rule: oklch(80% 0.018 70); /* hairlines */
876
+ --color-rule-2: oklch(64% 0.014 68);
877
+ --color-muted: oklch(48% 0.014 60);
878
+ --color-neutral: oklch(34% 0.012 55);
879
+ --color-ink-2: oklch(28% 0.014 55);
880
+ --color-ink: oklch(15% 0.014 280); /* near-black with cool tilt */
881
+ --color-accent: oklch(60% 0.160 35); /* coral */
882
+ --color-accent-ink: oklch(98% 0.005 70);
883
+ --color-focus: oklch(62% 0.160 35);
884
+
885
+ --font-display: "Inter Tight", "Inter", ui-sans-serif, system-ui, sans-serif;
886
+ --font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
887
+ --font-serif: "Playfair Display", "Fraunces", ui-serif, Georgia, serif;
888
+ --font-label: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
889
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
890
+
891
+ --display-weight: 800;
892
+ --display-style: normal;
893
+
894
+ --text-display: clamp(2.5rem, 5.0vw + 0.75rem, 4.75rem);
895
+ --text-display-s: clamp(1.875rem, 3vw + 0.5rem, 2.875rem);
896
+
897
+ --tracking-display: -0.04em; /* tight, magazine-shaped */
898
+ --tracking-tight: -0.018em;
899
+ --tracking-label: 0.10em;
900
+ --section-gap: 6rem;
901
+ --section-head-gap: 1.5rem;
902
+
903
+ }
904
+
905
+
906
+ /* ──────────────────────────────────────────────────────────────
907
+ CARNIVAL — loud maximalist editorial · variable display
908
+ Tinted warm-cream paper, oxblood ink, duo-tone accents
909
+ (mustard primary + oxblood secondary). Big Shoulders variable
910
+ display with width axis. Decorative ornaments, hard-offset
911
+ shadows, layered colour blocks. Dropout TV / Fly.io / Stones
912
+ Throw / Third Man Records register.
913
+ See references/themes/carnival.md for signature moves + affinity.
914
+ ────────────────────────────────────────────────────────────── */
915
+
916
+ [data-theme="carnival"] {
917
+ --color-paper: oklch(92% 0.045 50); /* warm pink-cream (tinted, not white) */
918
+ --color-paper-2: oklch(88% 0.050 45); /* elevated, slightly deeper */
919
+ --color-paper-3: oklch(82% 0.060 40); /* hover */
920
+ --color-rule: oklch(40% 0.18 25); /* RULES IN OXBLOOD — decorative, not hairline */
921
+ --color-rule-2: oklch(18% 0.08 20); /* heavy rule = ink */
922
+ --color-muted: oklch(45% 0.05 30);
923
+ --color-neutral: oklch(35% 0.06 25);
924
+ --color-ink-2: oklch(28% 0.060 25);
925
+ --color-ink: oklch(18% 0.080 20); /* deep oxblood / aubergine, not black */
926
+ --color-accent: oklch(86% 0.18 95); /* mustard / sun yellow (primary accent) */
927
+ --color-accent-2: oklch(40% 0.21 25); /* deep oxblood-red (secondary accent) */
928
+ --color-accent-ink: oklch(18% 0.080 20); /* ink on yellow */
929
+ --color-focus: oklch(40% 0.21 25);
930
+
931
+ --font-display: "Big Shoulders Display", "Druk Wide", "Anton", ui-sans-serif, sans-serif;
932
+ --font-body: "DM Sans", "Inter Tight", ui-sans-serif, system-ui, sans-serif;
933
+ --font-serif: "Newsreader", ui-serif, Georgia, serif;
934
+ --font-label: "JetBrains Mono", ui-monospace, monospace;
935
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
936
+
937
+ --display-weight: 700; /* lightened from 800 — 800 + loose tracking read too heavy */
938
+ --display-style: normal;
939
+
940
+ --text-display: clamp(3.25rem, 6.5vw + 1rem, 6.5rem);
941
+ --text-display-s: clamp(2.25rem, 4vw + 0.75rem, 3.5rem);
942
+
943
+ --tracking-display: 0.02em; /* tight, professional (was 0.04em, which read as AI-spread) */
944
+ --tracking-display-loose: 0.04em; /* spread look — marquee banners only */
945
+ --tracking-tight: -0.005em;
946
+ --tracking-label: 0.18em; /* mono all-caps labels */
947
+
948
+ --section-gap: 5rem;
949
+ --section-head-gap: 1.25rem;
950
+
951
+ --radius-card: 8px;
952
+ --radius-pill: 999px;
953
+ --radius-input: 4px;
954
+ --rule-card: 2px; /* CHUNKY, never hairline */
955
+ --shadow-card: 4px 4px 0 oklch(18% 0.08 20); /* hard-offset, in ink colour */
956
+ }
957
+
958
+
959
+ /* ──────────────────────────────────────────────────────────────
960
+ LUMEN — premium AI-tool · apparatus, not orb · three-register type
961
+ Two palette drops: NIGHT FOUNDRY (default, dark · cool-violet
962
+ paper, molten-brass accent) emits light from a hand-built CSS
963
+ apparatus; DAY FOUNDRY (light · cool bone, deep indigo) refracts
964
+ light through a transparent prism with measurement annotations.
965
+ Three font families on one page: Instrument Serif (display, with
966
+ single italicised verb), Geist Sans (body/UI), JetBrains Mono
967
+ (technical labels, tabular-nums everywhere numbers appear).
968
+ Lumen tokens:
969
+ --color-glow · translucent halo around the apparatus
970
+ --color-paper-emit · faint accent wash behind the hero canvas
971
+ --rule-blueprint · grid-pattern hairline (4% opacity)
972
+ Diversification: Lumen sits hue 265 to exit Midnight's hue 250
973
+ cell; accent hue 50 (brass) sits clear of the amber 70 band.
974
+ Reference register: Modal · Anthropic · Together AI · ElevenLabs
975
+ · Cluely · Adept · Granola. See references/themes/lumen.md.
976
+ ────────────────────────────────────────────────────────────── */
977
+
978
+ [data-theme="lumen"] {
979
+ color-scheme: dark;
980
+
981
+ /* NIGHT FOUNDRY — default drop (cool-violet paper, molten brass) */
982
+ --color-paper: oklch(13% 0.014 265); /* late-night studio, violet tilt */
983
+ --color-paper-2: oklch(17% 0.016 265); /* elevated card */
984
+ --color-paper-3: oklch(22% 0.018 263); /* deeper hover */
985
+ --color-rule: oklch(30% 0.018 265); /* hairline border */
986
+ --color-rule-2: oklch(42% 0.020 263);
987
+ --color-muted: oklch(60% 0.016 263);
988
+ --color-neutral: oklch(72% 0.014 263);
989
+ --color-ink-2: oklch(82% 0.010 262); /* body */
990
+ --color-ink: oklch(96% 0.006 262); /* headlines */
991
+ --color-accent: oklch(76% 0.17 50); /* molten brass */
992
+ --color-accent-2: oklch(68% 0.16 18); /* coral chord (slight warm pull) */
993
+ --color-accent-ink: oklch(13% 0.014 265); /* ink on accent fill */
994
+ --color-focus: oklch(76% 0.17 50);
995
+ --color-glow: oklch(80% 0.16 50 / 0.42); /* brass halo, denser than amber */
996
+ --color-glow-2: oklch(80% 0.16 50 / 0.12); /* faint radial wash */
997
+ --color-paper-emit: oklch(76% 0.17 50 / 0.04); /* hero canvas inner-emit */
998
+ --rule-blueprint: oklch(96% 0.006 262 / 0.04); /* grid pattern, near-invisible */
999
+
1000
+ --font-display: "Instrument Serif", "Tiempos Headline", ui-serif, Georgia, serif;
1001
+ --font-body: "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
1002
+ --font-serif: "Instrument Serif", ui-serif, Georgia, serif;
1003
+ --font-label: "JetBrains Mono", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
1004
+ --font-mono: "JetBrains Mono", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
1005
+
1006
+ --display-weight: 400; /* Instrument Serif at 400 — delicate */
1007
+ --display-optical: 144;
1008
+ --display-style: normal; /* italic toggled per-word via <em> */
1009
+
1010
+ --text-display: clamp(3rem, 6.5vw + 0.75rem, 6.75rem); /* 1960s technical-journal masthead */
1011
+ --text-display-s: clamp(2.25rem, 3.75vw + 1rem, 3.75rem);
1012
+
1013
+ --tracking-display: -0.032em; /* tighter, more classical */
1014
+ --tracking-tight: -0.014em;
1015
+ --tracking-label: 0.10em; /* mono labels */
1016
+ --tracking-micro: 0.16em; /* leader-line callouts on the apparatus */
1017
+
1018
+ --lh-tight: 1.02;
1019
+ --lh-snug: 1.18;
1020
+ --lh-normal: 1.55;
1021
+ --lh-relaxed: 1.7;
1022
+
1023
+ --section-gap: 6.5rem;
1024
+ --section-head-gap: 1.75rem;
1025
+ --measure: 60ch;
1026
+
1027
+ --radius-card: 10px;
1028
+ --radius-pill: 999px;
1029
+ --radius-input: 8px;
1030
+ --rule-card: 1px; /* hairline borders */
1031
+ --shadow-card: 0 24px 60px -28px oklch(0% 0 0 / 0.55),
1032
+ 0 1px 2px oklch(0% 0 0 / 0.4);
1033
+
1034
+ /* Motion */
1035
+ --dur-headline: 1100ms;
1036
+ --dur-pulse: 4s; /* filament intensity oscillation */
1037
+ --ease-soft: cubic-bezier(0.22, 0.61, 0.36, 1);
1038
+ }
1039
+
1040
+ /* DAY FOUNDRY — light drop, violet-shifted indigo, refractive prism */
1041
+ [data-theme="lumen"][data-drop="day"] {
1042
+ color-scheme: light;
1043
+
1044
+ --color-paper: oklch(97% 0.008 265); /* cool bone, slight violet pull */
1045
+ --color-paper-2: oklch(94% 0.010 265);
1046
+ --color-paper-3: oklch(90% 0.012 263);
1047
+ --color-rule: oklch(86% 0.010 265);
1048
+ --color-rule-2: oklch(72% 0.012 265);
1049
+ --color-muted: oklch(52% 0.014 265);
1050
+ --color-neutral: oklch(38% 0.016 265);
1051
+ --color-ink-2: oklch(28% 0.016 265);
1052
+ --color-ink: oklch(18% 0.014 265);
1053
+ --color-accent: oklch(46% 0.24 268); /* deeper indigo, slight violet */
1054
+ --color-accent-2: oklch(68% 0.16 18); /* coral chord — chromatic exit */
1055
+ --color-accent-ink: oklch(97% 0.008 265);
1056
+ --color-focus: oklch(46% 0.24 268);
1057
+ --color-glow: oklch(58% 0.22 268 / 0.28);
1058
+ --color-glow-2: oklch(68% 0.16 18 / 0.10);
1059
+ --color-paper-emit: oklch(46% 0.24 268 / 0.03);
1060
+ --rule-blueprint: oklch(18% 0.014 265 / 0.04);
1061
+
1062
+ --shadow-card: 0 24px 60px -28px oklch(18% 0.04 265 / 0.22),
1063
+ 0 1px 2px oklch(18% 0.04 265 / 0.12);
1064
+ }
1065
+
1066
+
1067
+ /* ──────────────────────────────────────────────────────────────
1068
+ HUM — playful · vibrant · alive · multi-accent · rounded-sans
1069
+ The brilliant.org / Duolingo / PostHog register, on cream paper
1070
+ with pear-yellow primary + sky-cyan secondary + coral pop accent.
1071
+ No serif anywhere; rounded sans throughout. Mandatory hover-and-paint
1072
+ motion. One character moment per page. Sits in the `playful` genre
1073
+ cluster as the multi-accent, motion-forward playful register.
1074
+ See references/themes/hum.md.
1075
+ ────────────────────────────────────────────────────────────── */
1076
+
1077
+ [data-theme="hum"] {
1078
+ color-scheme: light;
1079
+
1080
+ /* Palette — multi-accent on cream */
1081
+ --color-paper: oklch(97% 0.012 95); /* cream, pear-yellow pull */
1082
+ --color-paper-2: oklch(94% 0.016 95); /* tinted band */
1083
+ --color-paper-3: oklch(91% 0.020 95); /* deeper hover */
1084
+ --color-rule: oklch(86% 0.014 90);
1085
+ --color-rule-2: oklch(70% 0.018 85);
1086
+ --color-muted: oklch(52% 0.014 90);
1087
+ --color-neutral: oklch(38% 0.014 100);
1088
+ --color-ink-2: oklch(28% 0.014 250);
1089
+ --color-ink: oklch(20% 0.012 250); /* never pure black, cool tilt */
1090
+ --color-accent: oklch(86% 0.18 95); /* pear-yellow (primary) */
1091
+ --color-accent-2: oklch(66% 0.18 235); /* sky-cyan (secondary) */
1092
+ --color-accent-3: oklch(68% 0.24 18); /* coral-red (pop, single moment) */
1093
+ --color-mint: oklch(80% 0.16 150); /* soft mint (sparingly) */
1094
+ --color-lavender: oklch(74% 0.16 305); /* lavender (sparingly) */
1095
+ --color-accent-ink: oklch(20% 0.012 250); /* ink on pear fill */
1096
+ --color-focus: oklch(66% 0.18 235); /* cyan focus ring */
1097
+
1098
+ /* Type — rounded sans only */
1099
+ --font-display: "Plus Jakarta Sans", "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
1100
+ --font-body: "Plus Jakarta Sans", "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
1101
+ --font-serif: "Plus Jakarta Sans", ui-sans-serif, sans-serif; /* override — no serif in Hum */
1102
+ --font-label: "JetBrains Mono", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
1103
+ --font-mono: "JetBrains Mono", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
1104
+
1105
+ --display-weight: 600; /* heavier than Lumen's 400 — confident */
1106
+ --display-style: normal;
1107
+
1108
+ --text-display: clamp(2.75rem, 5.5vw + 0.75rem, 5.25rem);
1109
+ --text-display-s: clamp(2rem, 3.25vw + 1rem, 3.25rem);
1110
+
1111
+ --tracking-display: -0.025em;
1112
+ --tracking-tight: -0.014em;
1113
+ --tracking-normal: 0;
1114
+ --tracking-label: 0.10em;
1115
+ --tracking-micro: 0.16em;
1116
+
1117
+ --lh-tight: 1.05;
1118
+ --lh-snug: 1.18;
1119
+ --lh-normal: 1.55;
1120
+ --lh-relaxed: 1.7;
1121
+
1122
+ --section-gap: 6.5rem;
1123
+ --section-head-gap: 1.75rem;
1124
+
1125
+ /* Generous rounded radii — the rounded theme */
1126
+ --radius-card: 20px;
1127
+ --radius-pill: 999px;
1128
+ --radius-input: 12px;
1129
+ --rule-card: 1px;
1130
+ --shadow-card: 0 12px 32px -16px oklch(20% 0.012 250 / 0.14),
1131
+ 0 1px 2px oklch(20% 0.012 250 / 0.06);
1132
+
1133
+ /* Motion — bouncy, alive */
1134
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
1135
+ --ease-snap: cubic-bezier(0.22, 1, 0.36, 1);
1136
+ --dur-wobble: 480ms;
1137
+ --dur-burst: 420ms;
1138
+ --dur-tick: 1200ms;
1139
+
1140
+ /* accent EDGE tones — the button's thickness + chunky card edges */
1141
+ --color-accent-deep: oklch(76% 0.20 95);
1142
+ --color-accent-2-deep: oklch(56% 0.20 235);
1143
+ --color-accent-3-deep: oklch(58% 0.26 18);
1144
+ --color-mint-deep: oklch(70% 0.18 150);
1145
+ --color-lavender-deep: oklch(64% 0.18 305);
1146
+
1147
+ /* per-accent tint surfaces — the colour-shift cards + section bands */
1148
+ --tint-pear: oklch(86% 0.18 95 / 0.16);
1149
+ --tint-cyan: oklch(66% 0.18 235 / 0.14);
1150
+ --tint-coral: oklch(68% 0.24 18 / 0.12);
1151
+ --tint-mint: oklch(80% 0.16 150 / 0.16);
1152
+ --tint-lavender: oklch(74% 0.16 305 / 0.14);
1153
+
1154
+ /* layout shell — one width model, every section obeys it */
1155
+ --page-max: 78rem;
1156
+ --page-gutter: clamp(1.25rem, 4vw, 3rem);
1157
+ --measure: 60ch;
1158
+
1159
+ /* type + space scales */
1160
+ --text-xs: 0.75rem; --text-sm: 0.8125rem; --text-base: 1rem; --text-md: 1.0625rem;
1161
+ --text-lg: 1.25rem; --text-xl: 1.5rem; --text-2xl: 2rem; --text-3xl: 2.5rem;
1162
+ --space-2xs: 0.25rem; --space-xs: 0.5rem; --space-sm: 0.75rem; --space-md: 1rem;
1163
+ --space-lg: 1.5rem; --space-xl: 2.5rem; --space-2xl: 4rem; --space-3xl: 6.5rem; --space-4xl: 10rem;
1164
+
1165
+ --shadow-card-hover: 0 24px 56px -20px oklch(20% 0.012 250 / 0.18),
1166
+ 0 2px 6px oklch(20% 0.012 250 / 0.08);
1167
+
1168
+ /* fuller motion set (calm options alongside the spring) */
1169
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
1170
+ --ease-soft: cubic-bezier(0.22, 0.61, 0.36, 1);
1171
+ --dur-micro: 120ms;
1172
+ --dur-short: 220ms;
1173
+ --dur-long: 420ms;
1174
+ }
1175
+
1176
+ /* ──────────────────────────────────────────────────────────────
1177
+ GRID - Swiss International, the grid made visible (editorial cluster)
1178
+ Near-white sheet, exposed 12-column hairlines, heavy neo-grotesque,
1179
+ and one signal ink spent on geometry: marks, one plate, giant cropped
1180
+ numerals. The skill picks the ink per page (signal red default;
1181
+ ultramarine or surface-only signal yellow are the alternates); the
1182
+ site shows the red face. Neutrals carry a whisper of cool chroma so
1183
+ no grey is flat. Axes: light / grotesk-heavy / one signal ink.
1184
+ ────────────────────────────────────────────────────────────── */
1185
+
1186
+ [data-theme="grid"] {
1187
+ --color-paper: oklch(99% 0.003 255); /* near-white sheet, faint cool, never #fff */
1188
+ --color-paper-2: oklch(97.2% 0.003 255);
1189
+ --color-paper-3: oklch(94.5% 0.004 255);
1190
+ --color-rule: oklch(88% 0.004 255); /* the exposed grid hairline */
1191
+ --color-rule-2: oklch(72% 0.005 255);
1192
+ --color-muted: oklch(48% 0.006 255);
1193
+ --color-neutral: oklch(34% 0.006 255);
1194
+ --color-ink-2: oklch(26% 0.008 255);
1195
+ --color-ink: oklch(16% 0.010 255); /* cool near-black */
1196
+ --color-accent: oklch(55% 0.21 28); /* the one signal red */
1197
+ --color-accent-ink: oklch(99% 0.003 255);
1198
+ --color-focus: oklch(55% 0.21 28);
1199
+
1200
+ --font-display: "Archivo", "Helvetica Neue", ui-sans-serif, system-ui, sans-serif;
1201
+ --font-body: "Archivo", "Helvetica Neue", ui-sans-serif, system-ui, sans-serif;
1202
+ /* No serif anywhere in Grid: surfaces that ask for one get the grotesk. */
1203
+ --font-serif: "Archivo", "Helvetica Neue", ui-sans-serif, system-ui, sans-serif;
1204
+ --font-label: "Archivo", ui-sans-serif, sans-serif;
1205
+ --font-mono: "Spline Sans Mono", "Geist Mono", ui-monospace, monospace;
1206
+
1207
+ --display-weight: 800;
1208
+ --display-style: normal;
1209
+
1210
+ --text-display: clamp(2.75rem, 7vw + 0.5rem, 6rem);
1211
+ --text-display-s: clamp(2rem, 3.5vw + 0.5rem, 3.25rem);
1212
+
1213
+ --tracking-display: -0.045em;
1214
+ --tracking-tight: -0.02em;
1215
+ --tracking-label: 0.04em;
1216
+ --section-gap: 6rem;
1217
+ --section-head-gap: 1.5rem;
1218
+
1219
+ --radius-card: 0; --radius-pill: 0; --radius-input: 0;
1220
+ --rule-card: 1px; --shadow-card: none;
1221
+ }