howone 0.1.28 → 0.1.30

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 (224) hide show
  1. package/package.json +1 -1
  2. package/templates/vite/.howone/skills/hallmark/SKILL.md +48 -42
  3. package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +12 -6
  4. package/templates/vite/.howone/skills/hallmark/references/assets.md +7 -0
  5. package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +19 -10
  6. package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +1 -1
  7. package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +1 -1
  8. package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +1 -1
  9. package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +1 -1
  10. package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +1 -1
  11. package/templates/vite/.howone/skills/hallmark/references/components/n11-mega-menu.md +40 -0
  12. package/templates/vite/.howone/skills/hallmark/references/components/n12-banner-retract.md +34 -0
  13. package/templates/vite/.howone/skills/hallmark/references/components/n13-inline-cmdk-pill.md +39 -0
  14. package/templates/vite/.howone/skills/hallmark/references/components/n1b-saas-three-section.md +35 -0
  15. package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +1 -1
  16. package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +2 -2
  17. package/templates/vite/.howone/skills/hallmark/references/copy.md +8 -8
  18. package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +2 -2
  19. package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +50 -12
  20. package/templates/vite/.howone/skills/hallmark/references/export-formats.md +1 -1
  21. package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +11 -7
  22. package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +6 -4
  23. package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +10 -6
  24. package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +15 -10
  25. package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +13 -12
  26. package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +2 -1
  27. package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +4 -3
  28. package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +3 -1
  29. package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +1 -1
  30. package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +1 -1
  31. package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +1 -3
  32. package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +12 -12
  33. package/templates/vite/.howone/skills/hallmark/references/responsive.md +8 -8
  34. package/templates/vite/.howone/skills/hallmark/references/slop-test.md +72 -85
  35. package/templates/vite/.howone/skills/hallmark/references/structure.md +9 -13
  36. package/templates/vite/.howone/skills/hallmark/references/study.md +40 -17
  37. package/templates/vite/.howone/skills/hallmark/references/themes/carnival.md +301 -0
  38. package/templates/vite/.howone/skills/hallmark/references/themes/cobalt.md +146 -0
  39. package/templates/vite/.howone/skills/hallmark/references/themes/hum.md +403 -0
  40. package/templates/vite/.howone/skills/hallmark/references/themes/lumen.md +478 -0
  41. package/templates/vite/.howone/skills/hallmark/references/typography.md +3 -3
  42. package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +1 -1
  43. package/templates/vite/.howone/skills/howone/03-sdk/07-ai-action-calls.md +28 -86
  44. package/templates/vite/.howone/skills/howone/03-sdk/09-workflow-execute-sse.md +105 -0
  45. package/templates/vite/.howone/skills/howone/04-ai/03-ai-sdk-handoff.md +15 -13
  46. package/templates/vite/.howone/skills/howone/SKILL.md +2 -2
  47. package/templates/vite/package.json +1 -1
  48. package/templates/vite/.howone/skills/hallmark/LICENSE +0 -21
  49. package/templates/vite/.howone/skills/hallmark/README.md +0 -147
  50. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +0 -201
  51. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +0 -186
  52. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  53. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  54. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  55. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  56. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  57. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  58. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  59. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  60. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +0 -176
  61. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +0 -364
  62. package/templates/vite/.howone/skills/hallmark/package.json +0 -36
  63. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  64. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +0 -71
  65. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +0 -64
  66. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +0 -240
  67. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +0 -65
  68. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +0 -105
  69. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +0 -250
  70. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +0 -64
  71. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +0 -131
  72. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +0 -240
  73. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +0 -67
  74. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +0 -86
  75. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +0 -262
  76. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +0 -63
  77. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +0 -167
  78. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +0 -457
  79. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +0 -65
  80. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +0 -159
  81. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +0 -288
  82. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +0 -64
  83. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +0 -146
  84. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +0 -484
  85. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +0 -64
  86. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +0 -116
  87. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +0 -354
  88. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +0 -638
  89. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +0 -515
  90. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +0 -515
  91. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +0 -608
  92. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +0 -587
  93. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +0 -157
  94. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  95. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  96. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  97. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  98. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  99. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  100. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  101. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  102. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  103. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  104. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  105. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  106. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  107. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  108. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  109. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  110. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  111. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  112. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  113. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  114. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  115. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  116. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +0 -77
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +0 -238
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +0 -110
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +0 -326
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +0 -134
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +0 -262
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +0 -30
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +0 -17
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +0 -56
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +0 -160
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +0 -29
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +0 -63
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +0 -72
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +0 -374
  131. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +0 -52
  132. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +0 -29
  133. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +0 -61
  134. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +0 -193
  135. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +0 -66
  136. package/templates/vite/.howone/skills/hallmark/site/css/base.css +0 -194
  137. package/templates/vite/.howone/skills/hallmark/site/css/components.css +0 -4886
  138. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +0 -2072
  139. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +0 -1129
  140. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +0 -475
  141. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +0 -1584
  142. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +0 -96
  143. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +0 -344
  144. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +0 -103
  145. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +0 -1103
  146. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +0 -83
  147. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +0 -368
  148. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +0 -133
  149. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +0 -1062
  150. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +0 -97
  151. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +0 -84
  152. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +0 -446
  153. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +0 -1087
  154. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +0 -101
  155. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +0 -359
  156. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +0 -1168
  157. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +0 -81
  158. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +0 -5
  159. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +0 -5
  160. package/templates/vite/.howone/skills/hallmark/site/index.html +0 -1043
  161. package/templates/vite/.howone/skills/hallmark/site/js/main.js +0 -1175
  162. package/templates/vite/.howone/skills/hallmark/vercel.json +0 -6
  163. package/templates/vite/.howone/skills/impeccable/SKILL.md +0 -168
  164. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +0 -101
  165. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +0 -190
  166. package/templates/vite/.howone/skills/impeccable/reference/animate.md +0 -175
  167. package/templates/vite/.howone/skills/impeccable/reference/audit.md +0 -133
  168. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +0 -113
  169. package/templates/vite/.howone/skills/impeccable/reference/brand.md +0 -118
  170. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +0 -174
  171. package/templates/vite/.howone/skills/impeccable/reference/codex.md +0 -105
  172. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +0 -106
  173. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +0 -105
  174. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +0 -154
  175. package/templates/vite/.howone/skills/impeccable/reference/craft.md +0 -123
  176. package/templates/vite/.howone/skills/impeccable/reference/critique.md +0 -273
  177. package/templates/vite/.howone/skills/impeccable/reference/delight.md +0 -302
  178. package/templates/vite/.howone/skills/impeccable/reference/distill.md +0 -111
  179. package/templates/vite/.howone/skills/impeccable/reference/document.md +0 -427
  180. package/templates/vite/.howone/skills/impeccable/reference/extract.md +0 -69
  181. package/templates/vite/.howone/skills/impeccable/reference/harden.md +0 -347
  182. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +0 -234
  183. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +0 -195
  184. package/templates/vite/.howone/skills/impeccable/reference/layout.md +0 -141
  185. package/templates/vite/.howone/skills/impeccable/reference/live.md +0 -622
  186. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +0 -109
  187. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +0 -234
  188. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +0 -258
  189. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +0 -130
  190. package/templates/vite/.howone/skills/impeccable/reference/personas.md +0 -179
  191. package/templates/vite/.howone/skills/impeccable/reference/polish.md +0 -242
  192. package/templates/vite/.howone/skills/impeccable/reference/product.md +0 -62
  193. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +0 -99
  194. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +0 -114
  195. package/templates/vite/.howone/skills/impeccable/reference/shape.md +0 -165
  196. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +0 -100
  197. package/templates/vite/.howone/skills/impeccable/reference/teach.md +0 -156
  198. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +0 -124
  199. package/templates/vite/.howone/skills/impeccable/reference/typography.md +0 -159
  200. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +0 -107
  201. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
  202. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +0 -94
  203. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +0 -242
  204. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +0 -820
  205. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +0 -198
  206. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +0 -21
  207. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +0 -110
  208. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +0 -69
  209. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +0 -595
  210. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +0 -123
  211. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +0 -4860
  212. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +0 -75
  213. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +0 -18
  214. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +0 -446
  215. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +0 -200
  216. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +0 -48
  217. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +0 -838
  218. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +0 -254
  219. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +0 -47
  220. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +0 -632
  221. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +0 -247
  222. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +0 -141
  223. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  224. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +0 -214
@@ -1,1168 +0,0 @@
1
- /* Hallmark · pre-emit critique: P5 H5 E5 S5 R4 V5
2
- * Hallmark · genre: editorial · macrostructure: Marquee Hero · theme: Manifesto-dark
3
- * enrichment: Tier-A pure-CSS departure board + scrolling ticker · nav: N9 · footer: Ft4
4
- * tone: bold-airline-late-night · anchor hue: bleed red 25°
5
- */
6
-
7
- @import url("./tokens.css");
8
-
9
- *, *::before, *::after { box-sizing: border-box; }
10
-
11
- html, body {
12
- margin: 0;
13
- overflow-x: clip;
14
- background: var(--color-paper);
15
- color: var(--color-ink);
16
- font-family: var(--font-body);
17
- font-size: var(--text-base);
18
- line-height: 1.55;
19
- font-feature-settings: "kern", "liga", "onum";
20
- -webkit-font-smoothing: antialiased;
21
- text-rendering: optimizeLegibility;
22
- }
23
-
24
- img, svg { display: block; max-width: 100%; }
25
-
26
- a {
27
- color: inherit;
28
- text-decoration: none;
29
- text-underline-offset: 4px;
30
- text-decoration-thickness: 1px;
31
- }
32
-
33
- a:hover { text-decoration: underline; text-decoration-color: var(--color-accent); }
34
-
35
- ::selection { background: var(--color-accent); color: var(--color-paper); }
36
-
37
- :focus-visible {
38
- outline: 2px solid var(--color-focus);
39
- outline-offset: 3px;
40
- border-radius: var(--radius-xs);
41
- }
42
-
43
- button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; }
44
-
45
- /* ───────── Layout shell ───────── */
46
-
47
- .shell {
48
- width: 100%;
49
- max-width: 1320px;
50
- margin-inline: auto;
51
- padding-inline: clamp(var(--space-md), 4vw, var(--space-2xl));
52
- }
53
-
54
- /* ───────── Top ticker ───────── */
55
-
56
- .ticker {
57
- border-bottom: var(--rule-hair);
58
- background: var(--color-paper);
59
- overflow: hidden;
60
- position: relative;
61
- }
62
-
63
- .ticker::before,
64
- .ticker::after {
65
- content: "";
66
- position: absolute;
67
- top: 0;
68
- bottom: 0;
69
- width: 80px;
70
- z-index: 2;
71
- pointer-events: none;
72
- }
73
-
74
- .ticker::before {
75
- left: 0;
76
- background: linear-gradient(90deg, var(--color-paper) 0%, transparent 100%);
77
- }
78
-
79
- .ticker::after {
80
- right: 0;
81
- background: linear-gradient(270deg, var(--color-paper) 0%, transparent 100%);
82
- }
83
-
84
- .ticker-track {
85
- display: flex;
86
- gap: var(--space-xl);
87
- padding-block: var(--space-sm);
88
- white-space: nowrap;
89
- width: max-content;
90
- animation: ticker-scroll var(--dur-ticker) linear infinite;
91
- font-family: var(--font-mono);
92
- font-size: var(--text-xs);
93
- letter-spacing: 0.18em;
94
- text-transform: uppercase;
95
- color: var(--color-ink-mute);
96
- }
97
-
98
- .ticker:hover .ticker-track { animation-play-state: paused; }
99
-
100
- .ticker-track > span {
101
- display: inline-flex;
102
- align-items: center;
103
- gap: var(--space-md);
104
- flex-shrink: 0;
105
- }
106
-
107
- .ticker-track > span::after {
108
- content: "";
109
- width: 5px;
110
- height: 5px;
111
- border-radius: 50%;
112
- background: var(--color-accent);
113
- display: inline-block;
114
- }
115
-
116
- .ticker-track > span:last-child::after { display: none; }
117
-
118
- .ticker-track strong {
119
- color: var(--color-ink);
120
- font-weight: 500;
121
- }
122
-
123
- @keyframes ticker-scroll {
124
- 0% { transform: translateX(0); }
125
- 100% { transform: translateX(-50%); }
126
- }
127
-
128
- /* ───────── Nav · N9 edge-aligned minimal ───────── */
129
-
130
- .masthead {
131
- display: grid;
132
- grid-template-columns: auto 1fr auto;
133
- align-items: baseline;
134
- gap: var(--space-lg);
135
- padding-block: var(--space-lg) var(--space-md);
136
- border-bottom: var(--rule-hair);
137
- }
138
-
139
- .wordmark {
140
- font-family: var(--font-display);
141
- font-weight: 800;
142
- font-size: var(--text-xl);
143
- letter-spacing: -0.02em;
144
- color: var(--color-ink);
145
- }
146
-
147
- .wordmark::before {
148
- content: "✱ ";
149
- color: var(--color-accent);
150
- }
151
-
152
- .masthead-meta {
153
- font-family: var(--font-italic);
154
- font-style: italic;
155
- font-weight: 300;
156
- font-size: var(--text-sm);
157
- color: var(--color-ink-mute);
158
- letter-spacing: 0.01em;
159
- justify-self: center;
160
- }
161
-
162
- .masthead-links {
163
- display: flex;
164
- gap: var(--space-lg);
165
- font-family: var(--font-mono);
166
- font-size: var(--text-xs);
167
- text-transform: uppercase;
168
- letter-spacing: 0.12em;
169
- color: var(--color-ink-2);
170
- }
171
-
172
- .masthead-links a:hover { color: var(--color-ink); }
173
-
174
- /* ───────── Hero — Marquee with departure board ───────── */
175
-
176
- .hero {
177
- padding-block: var(--space-2xl) var(--space-3xl);
178
- position: relative;
179
- }
180
-
181
- .hero-strip {
182
- display: flex;
183
- flex-wrap: wrap;
184
- gap: var(--space-md) var(--space-xl);
185
- align-items: baseline;
186
- font-family: var(--font-mono);
187
- font-size: var(--text-xs);
188
- text-transform: uppercase;
189
- letter-spacing: 0.16em;
190
- color: var(--color-ink-mute);
191
- margin-bottom: var(--space-xl);
192
- }
193
-
194
- .hero-strip .live {
195
- display: inline-flex;
196
- align-items: center;
197
- gap: var(--space-xs);
198
- color: var(--color-ink);
199
- }
200
-
201
- .hero-strip .live::before {
202
- content: "";
203
- width: 8px;
204
- height: 8px;
205
- border-radius: 50%;
206
- background: var(--color-accent);
207
- display: inline-block;
208
- box-shadow: 0 0 10px var(--color-accent);
209
- }
210
-
211
- /* Hero composition: title block + corner stamp */
212
- .hero-composition {
213
- display: grid;
214
- grid-template-columns: minmax(0, 1fr) auto;
215
- align-items: start;
216
- gap: var(--space-xl);
217
- margin-bottom: var(--space-2xl);
218
- }
219
-
220
- .hero-title {
221
- font-family: var(--font-display);
222
- font-weight: 900;
223
- font-size: var(--text-mark);
224
- line-height: 0.92;
225
- letter-spacing: -0.04em;
226
- margin: 0 0 var(--space-md);
227
- color: var(--color-ink);
228
- max-width: 16ch;
229
- overflow-wrap: anywhere;
230
- min-width: 0;
231
- font-variation-settings: "wdth" 75, "opsz" 96;
232
- }
233
-
234
- .hero-title em {
235
- font-family: var(--font-italic);
236
- font-style: italic;
237
- font-weight: 300;
238
- color: var(--color-accent);
239
- letter-spacing: -0.02em;
240
- font-variation-settings: normal;
241
- }
242
-
243
- .hero-title span.tonk {
244
- display: inline-block;
245
- font-family: var(--font-mono);
246
- font-weight: 400;
247
- font-size: 0.32em;
248
- vertical-align: super;
249
- letter-spacing: 0.18em;
250
- color: var(--color-accent-2);
251
- margin-left: 0.4em;
252
- text-transform: uppercase;
253
- font-variation-settings: normal;
254
- }
255
-
256
- .hero-sub {
257
- font-family: var(--font-body);
258
- font-size: var(--text-lg);
259
- color: var(--color-ink-2);
260
- max-width: 52ch;
261
- margin: 0;
262
- line-height: 1.5;
263
- }
264
-
265
- /* Corner stamp — diegetic passport / customs */
266
- .hero-stamp {
267
- align-self: start;
268
- transform: rotate(-6deg);
269
- border: 2px solid var(--color-accent);
270
- padding: var(--space-md) var(--space-lg);
271
- text-align: center;
272
- font-family: var(--font-mono);
273
- text-transform: uppercase;
274
- letter-spacing: 0.14em;
275
- color: var(--color-accent);
276
- background: transparent;
277
- position: relative;
278
- width: 13rem;
279
- margin-top: var(--space-md);
280
- }
281
-
282
- .hero-stamp::before,
283
- .hero-stamp::after {
284
- content: "";
285
- position: absolute;
286
- height: 2px;
287
- background: var(--color-accent);
288
- left: var(--space-sm);
289
- right: var(--space-sm);
290
- }
291
-
292
- .hero-stamp::before { top: 6px; }
293
- .hero-stamp::after { bottom: 6px; }
294
-
295
- .hero-stamp .lg {
296
- display: block;
297
- font-family: var(--font-display);
298
- font-weight: 900;
299
- font-size: var(--text-2xl);
300
- line-height: 1;
301
- margin-block: var(--space-xs) var(--space-2xs);
302
- letter-spacing: -0.02em;
303
- }
304
-
305
- .hero-stamp .sm {
306
- display: block;
307
- font-size: 0.65rem;
308
- letter-spacing: 0.2em;
309
- color: var(--color-accent-2);
310
- }
311
-
312
- .hero-stamp .num {
313
- display: block;
314
- font-size: 0.7rem;
315
- margin-top: var(--space-xs);
316
- border-top: 1px solid var(--color-accent);
317
- padding-top: var(--space-xs);
318
- color: var(--color-accent-2);
319
- }
320
-
321
- /* ── The board ── */
322
-
323
- .board {
324
- border-top: 2px solid var(--color-ink);
325
- border-bottom: 2px solid var(--color-ink);
326
- background: var(--color-paper);
327
- margin-top: var(--space-xl);
328
- }
329
-
330
- .board-head {
331
- display: grid;
332
- grid-template-columns: 1.5rem 5.5rem minmax(0, 1fr) 4rem 6rem 7rem;
333
- gap: var(--space-md);
334
- padding: var(--space-sm) var(--space-md);
335
- border-bottom: var(--rule-hair);
336
- font-family: var(--font-mono);
337
- font-size: 0.7rem;
338
- text-transform: uppercase;
339
- letter-spacing: 0.16em;
340
- color: var(--color-ink-mute);
341
- }
342
-
343
- .board-row {
344
- display: grid;
345
- grid-template-columns: 1.5rem 5.5rem minmax(0, 1fr) 4rem 6rem 7rem;
346
- gap: var(--space-md);
347
- padding: var(--space-md);
348
- align-items: center;
349
- border-bottom: var(--rule-hair);
350
- position: relative;
351
- cursor: pointer;
352
- transition:
353
- background var(--dur-base) var(--ease-out),
354
- transform var(--dur-base) var(--ease-out);
355
- opacity: 0;
356
- transform: translateY(8px);
357
- animation: board-tick var(--dur-stagger) var(--ease-out) forwards;
358
- }
359
-
360
- .board-row:nth-child(1) { animation-delay: 60ms; }
361
- .board-row:nth-child(2) { animation-delay: 140ms; }
362
- .board-row:nth-child(3) { animation-delay: 220ms; }
363
- .board-row:nth-child(4) { animation-delay: 300ms; }
364
- .board-row:nth-child(5) { animation-delay: 380ms; }
365
- .board-row:nth-child(6) { animation-delay: 460ms; }
366
-
367
- .board-row:last-child { border-bottom: 0; }
368
-
369
- .board-row::before {
370
- content: "";
371
- position: absolute;
372
- left: 0;
373
- top: 0;
374
- bottom: 0;
375
- width: 0;
376
- background: var(--color-accent);
377
- transition: width var(--dur-base) var(--ease-out);
378
- }
379
-
380
- .board-row:hover {
381
- background: var(--color-paper-2);
382
- }
383
-
384
- .board-row:hover::before {
385
- width: 3px;
386
- }
387
-
388
- /* Boarding-now row — permanent treatment */
389
- .board-row[data-status="boarding"] {
390
- background: linear-gradient(90deg, var(--color-paper-2) 0%, var(--color-paper) 65%);
391
- }
392
-
393
- .board-row[data-status="boarding"]::before {
394
- width: 4px;
395
- box-shadow: 0 0 18px var(--color-accent);
396
- }
397
-
398
- .board-row[data-status="boarding"] .board-dest {
399
- font-size: var(--text-board-headline);
400
- }
401
-
402
- .board-row[data-status="boarding"] .board-time {
403
- color: var(--color-accent);
404
- }
405
-
406
- /* Day/night glyph */
407
- .board-glyph {
408
- width: 16px;
409
- height: 16px;
410
- color: var(--color-ink-mute);
411
- }
412
-
413
- .board-row[data-status="boarding"] .board-glyph { color: var(--color-accent-2); }
414
-
415
- .board-time {
416
- font-family: var(--font-mono);
417
- font-size: var(--text-base);
418
- font-weight: 500;
419
- color: var(--color-ink);
420
- letter-spacing: 0.04em;
421
- font-variant-numeric: tabular-nums;
422
- }
423
-
424
- .board-dest {
425
- font-family: var(--font-display);
426
- font-weight: 900;
427
- font-size: var(--text-board);
428
- line-height: 0.9;
429
- letter-spacing: -0.025em;
430
- color: var(--color-ink);
431
- min-width: 0;
432
- overflow-wrap: anywhere;
433
- display: flex;
434
- align-items: baseline;
435
- gap: var(--space-md);
436
- font-variation-settings: "wdth" 80, "opsz" 96;
437
- }
438
-
439
- .board-dest small {
440
- font-family: var(--font-italic);
441
- font-style: italic;
442
- font-weight: 300;
443
- font-size: 0.95rem;
444
- letter-spacing: 0;
445
- color: var(--color-ink-mute);
446
- margin-left: var(--space-xs);
447
- font-variation-settings: normal;
448
- }
449
-
450
- .board-row[data-status="boarding"] .board-dest small {
451
- color: var(--color-ink-2);
452
- font-size: 1.1rem;
453
- }
454
-
455
- .board-code {
456
- font-family: var(--font-mono);
457
- font-size: var(--text-sm);
458
- letter-spacing: 0.18em;
459
- color: var(--color-ink-2);
460
- text-transform: uppercase;
461
- font-variant-numeric: tabular-nums;
462
- }
463
-
464
- .board-status {
465
- font-family: var(--font-mono);
466
- font-size: 0.7rem;
467
- letter-spacing: 0.16em;
468
- text-transform: uppercase;
469
- color: var(--color-ink-2);
470
- display: inline-flex;
471
- align-items: center;
472
- gap: var(--space-2xs);
473
- }
474
-
475
- .board-status::before {
476
- content: "";
477
- width: 6px;
478
- height: 6px;
479
- border-radius: 50%;
480
- background: var(--color-status-hold);
481
- display: inline-block;
482
- }
483
-
484
- .board-row[data-status="boarding"] .board-status {
485
- color: var(--color-paper);
486
- background: var(--color-accent);
487
- padding: 4px var(--space-sm);
488
- border-radius: var(--radius-xs);
489
- font-weight: 600;
490
- }
491
-
492
- .board-row[data-status="boarding"] .board-status::before {
493
- background: var(--color-paper);
494
- animation: pulse-dot 1.4s ease-in-out infinite;
495
- }
496
-
497
- @keyframes pulse-dot {
498
- 0%, 100% { opacity: 1; }
499
- 50% { opacity: 0.35; }
500
- }
501
-
502
- .board-row[data-status="ontime"] .board-status::before { background: var(--color-status-go); }
503
- .board-row[data-status="open"] .board-status::before { background: var(--color-ink-2); }
504
-
505
- .board-fare {
506
- font-family: var(--font-mono);
507
- font-size: var(--text-base);
508
- font-weight: 500;
509
- color: var(--color-ink);
510
- text-align: right;
511
- font-variant-numeric: tabular-nums;
512
- letter-spacing: 0.02em;
513
- }
514
-
515
- .board-fare small {
516
- font-family: var(--font-italic);
517
- font-style: italic;
518
- font-weight: 300;
519
- font-size: 0.7rem;
520
- color: var(--color-ink-mute);
521
- text-transform: uppercase;
522
- letter-spacing: 0.1em;
523
- display: block;
524
- }
525
-
526
- .board-row[data-status="boarding"] .board-fare {
527
- font-size: var(--text-lg);
528
- color: var(--color-ink);
529
- }
530
-
531
- /* Board footnote */
532
- .board-foot {
533
- display: flex;
534
- flex-wrap: wrap;
535
- justify-content: space-between;
536
- gap: var(--space-md);
537
- padding-top: var(--space-md);
538
- font-family: var(--font-italic);
539
- font-style: italic;
540
- font-size: var(--text-sm);
541
- color: var(--color-ink-mute);
542
- }
543
-
544
- .board-foot kbd {
545
- font-family: var(--font-mono);
546
- font-size: 0.7rem;
547
- padding: 2px 6px;
548
- border: 1px solid var(--color-rule);
549
- border-radius: 3px;
550
- color: var(--color-ink-2);
551
- font-style: normal;
552
- }
553
-
554
- /* CTA row beneath board */
555
- .hero-cta {
556
- display: flex;
557
- flex-wrap: wrap;
558
- align-items: baseline;
559
- gap: var(--space-lg);
560
- margin-top: var(--space-2xl);
561
- }
562
-
563
- .btn {
564
- display: inline-flex;
565
- align-items: center;
566
- gap: var(--space-sm);
567
- padding: var(--space-sm) var(--space-lg);
568
- font-family: var(--font-mono);
569
- font-size: var(--text-xs);
570
- text-transform: uppercase;
571
- letter-spacing: 0.16em;
572
- border: 2px solid var(--color-accent);
573
- background: var(--color-accent);
574
- color: var(--color-paper);
575
- border-radius: var(--radius-xs);
576
- white-space: nowrap;
577
- font-weight: 600;
578
- transition:
579
- background var(--dur-base) var(--ease-out),
580
- color var(--dur-base) var(--ease-out),
581
- border-color var(--dur-base) var(--ease-out);
582
- }
583
-
584
- .btn:hover {
585
- background: var(--color-paper);
586
- border-color: var(--color-ink);
587
- color: var(--color-ink);
588
- text-decoration: none;
589
- }
590
-
591
- .btn-ghost {
592
- display: inline-flex;
593
- align-items: center;
594
- gap: var(--space-xs);
595
- font-family: var(--font-italic);
596
- font-style: italic;
597
- font-size: var(--text-base);
598
- color: var(--color-ink-2);
599
- }
600
-
601
- .btn-ghost::after {
602
- content: "→";
603
- transition: transform var(--dur-base) var(--ease-out);
604
- }
605
-
606
- .btn-ghost:hover::after { transform: translateX(4px); }
607
- .btn-ghost:hover { color: var(--color-ink); text-decoration: none; }
608
-
609
- /* ───────── Pitch ───────── */
610
-
611
- .pitch {
612
- padding-block: var(--space-3xl);
613
- border-top: var(--rule-hair);
614
- }
615
-
616
- .pitch-grid {
617
- display: grid;
618
- grid-template-columns: minmax(0, 4fr) minmax(0, 7fr);
619
- gap: var(--space-2xl);
620
- align-items: start;
621
- }
622
-
623
- .pitch-label {
624
- font-family: var(--font-mono);
625
- font-size: var(--text-xs);
626
- text-transform: uppercase;
627
- letter-spacing: 0.18em;
628
- color: var(--color-ink-mute);
629
- }
630
-
631
- .pitch-label::before {
632
- content: "§ ";
633
- color: var(--color-accent);
634
- }
635
-
636
- .pitch-body {
637
- font-family: var(--font-body);
638
- font-size: var(--text-xl);
639
- line-height: 1.5;
640
- color: var(--color-ink);
641
- max-width: 58ch;
642
- min-width: 0;
643
- }
644
-
645
- .pitch-body p + p { margin-top: var(--space-md); }
646
- .pitch-body em {
647
- font-family: var(--font-italic);
648
- font-style: italic;
649
- color: var(--color-accent-2);
650
- }
651
-
652
- /* ───────── Three picks ───────── */
653
-
654
- .picks {
655
- padding-block: var(--space-3xl);
656
- border-top: var(--rule-hair);
657
- }
658
-
659
- .picks-head {
660
- display: flex;
661
- align-items: baseline;
662
- justify-content: space-between;
663
- flex-wrap: wrap;
664
- gap: var(--space-md);
665
- margin-bottom: var(--space-2xl);
666
- }
667
-
668
- .picks-head h2 {
669
- font-family: var(--font-display);
670
- font-weight: 900;
671
- font-size: var(--text-4xl);
672
- letter-spacing: -0.035em;
673
- margin: 0;
674
- overflow-wrap: anywhere;
675
- min-width: 0;
676
- font-variation-settings: "wdth" 80, "opsz" 96;
677
- }
678
-
679
- .picks-head h2 em {
680
- font-family: var(--font-italic);
681
- font-style: italic;
682
- font-weight: 300;
683
- color: var(--color-accent);
684
- font-variation-settings: normal;
685
- }
686
-
687
- .picks-head .count {
688
- font-family: var(--font-mono);
689
- font-size: var(--text-xs);
690
- letter-spacing: 0.16em;
691
- text-transform: uppercase;
692
- color: var(--color-ink-mute);
693
- }
694
-
695
- .picks-grid {
696
- display: grid;
697
- grid-template-columns: repeat(3, minmax(0, 1fr));
698
- gap: var(--space-xl);
699
- }
700
-
701
- .pick {
702
- display: grid;
703
- grid-template-rows: auto 1fr auto;
704
- gap: var(--space-md);
705
- padding-top: var(--space-md);
706
- border-top: 2px solid var(--color-ink);
707
- min-width: 0;
708
- }
709
-
710
- .pick-num {
711
- font-family: var(--font-mono);
712
- font-size: var(--text-xs);
713
- letter-spacing: 0.18em;
714
- text-transform: uppercase;
715
- color: var(--color-ink-mute);
716
- display: flex;
717
- justify-content: space-between;
718
- }
719
-
720
- .pick-num span:last-child { color: var(--color-accent); }
721
-
722
- .pick-figure {
723
- position: relative;
724
- aspect-ratio: 4 / 5;
725
- background: var(--color-paper-2);
726
- overflow: hidden;
727
- border-radius: var(--radius-xs);
728
- display: grid;
729
- place-items: center;
730
- isolation: isolate;
731
- border: 1px solid var(--color-hairline);
732
- }
733
-
734
- .pick-figure::before {
735
- content: "";
736
- position: absolute;
737
- inset: 0;
738
- background:
739
- radial-gradient(circle at 30% 30%, var(--color-accent-mute) 0%, transparent 55%),
740
- radial-gradient(circle at 70% 80%, var(--color-paper-3) 0%, transparent 60%);
741
- z-index: -1;
742
- opacity: 0.6;
743
- }
744
-
745
- .pick-figure svg {
746
- width: 70%;
747
- height: auto;
748
- color: var(--color-ink-2);
749
- }
750
-
751
- .pick-figure-2::before {
752
- background:
753
- linear-gradient(135deg, var(--color-paper-3) 0%, var(--color-paper-2) 100%),
754
- radial-gradient(circle at 50% 30%, var(--color-accent-mute) 0%, transparent 60%);
755
- }
756
-
757
- .pick-figure-3::before {
758
- background:
759
- radial-gradient(ellipse at 50% 100%, var(--color-accent-mute) 0%, transparent 50%),
760
- linear-gradient(180deg, var(--color-paper-2) 0%, var(--color-paper-3) 100%);
761
- }
762
-
763
- .pick-title {
764
- font-family: var(--font-display);
765
- font-weight: 900;
766
- font-size: var(--text-2xl);
767
- letter-spacing: -0.025em;
768
- margin: 0;
769
- line-height: 0.95;
770
- overflow-wrap: anywhere;
771
- min-width: 0;
772
- font-variation-settings: "wdth" 80, "opsz" 72;
773
- }
774
-
775
- .pick-title small {
776
- font-family: var(--font-italic);
777
- font-style: italic;
778
- font-weight: 300;
779
- font-size: 0.65em;
780
- color: var(--color-ink-mute);
781
- letter-spacing: 0;
782
- margin-left: var(--space-xs);
783
- font-variation-settings: normal;
784
- }
785
-
786
- .pick-body {
787
- font-family: var(--font-body);
788
- font-size: var(--text-base);
789
- line-height: 1.55;
790
- color: var(--color-ink-2);
791
- margin: 0;
792
- }
793
-
794
- .pick-meta {
795
- display: flex;
796
- justify-content: space-between;
797
- font-family: var(--font-mono);
798
- font-size: var(--text-xs);
799
- text-transform: uppercase;
800
- letter-spacing: 0.14em;
801
- color: var(--color-ink-mute);
802
- padding-top: var(--space-sm);
803
- border-top: var(--rule-hair);
804
- }
805
-
806
- .pick-meta strong {
807
- color: var(--color-accent);
808
- font-weight: 500;
809
- }
810
-
811
- /* ───────── How it works ───────── */
812
-
813
- .process {
814
- padding-block: var(--space-3xl);
815
- border-top: var(--rule-hair);
816
- background: var(--color-paper-2);
817
- margin-inline: calc(50% - 50vw);
818
- padding-inline: calc(50vw - 50%);
819
- }
820
-
821
- .process-shell {
822
- width: 100%;
823
- max-width: 1320px;
824
- margin-inline: auto;
825
- padding-inline: clamp(var(--space-md), 4vw, var(--space-2xl));
826
- }
827
-
828
- .process-head {
829
- font-family: var(--font-mono);
830
- font-size: var(--text-xs);
831
- letter-spacing: 0.18em;
832
- text-transform: uppercase;
833
- color: var(--color-ink-mute);
834
- margin-bottom: var(--space-2xl);
835
- }
836
-
837
- .process-head::before {
838
- content: "§ ";
839
- color: var(--color-accent);
840
- }
841
-
842
- .process-grid {
843
- display: grid;
844
- grid-template-columns: repeat(3, minmax(0, 1fr));
845
- gap: var(--space-xl);
846
- }
847
-
848
- .stage {
849
- display: grid;
850
- gap: var(--space-md);
851
- min-width: 0;
852
- }
853
-
854
- .stage-num {
855
- font-family: var(--font-display);
856
- font-weight: 900;
857
- font-size: clamp(2.25rem, 4.5vw, 3.75rem);
858
- line-height: 0.85;
859
- color: var(--color-accent);
860
- letter-spacing: -0.04em;
861
- display: flex;
862
- align-items: baseline;
863
- justify-content: space-between;
864
- font-variation-settings: "wdth" 80, "opsz" 96;
865
- }
866
-
867
- .stage-num small {
868
- font-family: var(--font-mono);
869
- font-weight: 400;
870
- font-size: 0.7rem;
871
- color: var(--color-ink-mute);
872
- letter-spacing: 0.18em;
873
- text-transform: uppercase;
874
- font-variation-settings: normal;
875
- }
876
-
877
- .stage h3 {
878
- font-family: var(--font-italic);
879
- font-style: italic;
880
- font-weight: 400;
881
- font-size: var(--text-xl);
882
- letter-spacing: -0.01em;
883
- margin: 0;
884
- color: var(--color-ink);
885
- overflow-wrap: anywhere;
886
- min-width: 0;
887
- }
888
-
889
- .stage p {
890
- font-family: var(--font-body);
891
- font-size: var(--text-base);
892
- line-height: 1.55;
893
- color: var(--color-ink-2);
894
- margin: 0;
895
- max-width: 36ch;
896
- }
897
-
898
- /* ───────── A note (voice block) ───────── */
899
-
900
- .note {
901
- padding-block: var(--space-3xl);
902
- border-top: var(--rule-hair);
903
- display: grid;
904
- grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
905
- gap: var(--space-2xl);
906
- }
907
-
908
- .note-label {
909
- font-family: var(--font-mono);
910
- font-size: var(--text-xs);
911
- letter-spacing: 0.18em;
912
- text-transform: uppercase;
913
- color: var(--color-ink-mute);
914
- }
915
-
916
- .note-label::before {
917
- content: "§ ";
918
- color: var(--color-accent);
919
- }
920
-
921
- .note-body {
922
- font-family: var(--font-italic);
923
- font-style: italic;
924
- font-weight: 300;
925
- font-size: clamp(1.5rem, 2.6vw, 2.25rem);
926
- line-height: 1.3;
927
- color: var(--color-ink);
928
- max-width: 28ch;
929
- letter-spacing: -0.015em;
930
- overflow-wrap: anywhere;
931
- min-width: 0;
932
- }
933
-
934
- .note-body em {
935
- color: var(--color-accent);
936
- }
937
-
938
- .note-sig {
939
- font-family: var(--font-mono);
940
- font-size: var(--text-xs);
941
- text-transform: uppercase;
942
- letter-spacing: 0.16em;
943
- color: var(--color-ink-mute);
944
- margin-top: var(--space-lg);
945
- display: block;
946
- font-style: normal;
947
- }
948
-
949
- /* ───────── Final CTA strip ───────── */
950
-
951
- .final-cta {
952
- padding-block: var(--space-3xl);
953
- border-top: var(--rule-hair);
954
- display: flex;
955
- flex-wrap: wrap;
956
- gap: var(--space-xl);
957
- align-items: baseline;
958
- justify-content: space-between;
959
- }
960
-
961
- .final-cta h2 {
962
- font-family: var(--font-display);
963
- font-weight: 900;
964
- font-size: clamp(2.25rem, 5vw, 4rem);
965
- margin: 0;
966
- letter-spacing: -0.035em;
967
- max-width: 16ch;
968
- min-width: 0;
969
- overflow-wrap: anywhere;
970
- line-height: 0.95;
971
- color: var(--color-ink);
972
- font-variation-settings: "wdth" 80, "opsz" 96;
973
- }
974
-
975
- .final-cta h2 em {
976
- font-family: var(--font-italic);
977
- font-style: italic;
978
- font-weight: 300;
979
- color: var(--color-accent);
980
- font-variation-settings: normal;
981
- }
982
-
983
- /* ───────── Footer · Ft4 dense colophon ───────── */
984
-
985
- .colophon {
986
- border-top: 2px solid var(--color-ink);
987
- padding-block: var(--space-2xl);
988
- }
989
-
990
- .colophon-head {
991
- display: flex;
992
- align-items: baseline;
993
- justify-content: space-between;
994
- flex-wrap: wrap;
995
- gap: var(--space-md);
996
- padding-bottom: var(--space-lg);
997
- border-bottom: var(--rule-hair);
998
- }
999
-
1000
- .colophon-head .wordmark { font-size: var(--text-2xl); }
1001
-
1002
- .colophon-head em {
1003
- font-family: var(--font-italic);
1004
- font-style: italic;
1005
- font-weight: 300;
1006
- color: var(--color-ink-mute);
1007
- font-size: var(--text-base);
1008
- }
1009
-
1010
- .colophon-grid {
1011
- display: grid;
1012
- grid-template-columns: repeat(4, minmax(0, 1fr));
1013
- gap: var(--space-xl);
1014
- padding-block: var(--space-xl);
1015
- }
1016
-
1017
- .col-block dt {
1018
- font-family: var(--font-mono);
1019
- font-size: var(--text-xs);
1020
- letter-spacing: 0.18em;
1021
- text-transform: uppercase;
1022
- color: var(--color-ink-mute);
1023
- margin-bottom: var(--space-sm);
1024
- }
1025
-
1026
- .col-block dd {
1027
- margin: 0 0 var(--space-2xs);
1028
- font-size: var(--text-sm);
1029
- color: var(--color-ink);
1030
- }
1031
-
1032
- .col-block dd a:hover { color: var(--color-accent); }
1033
-
1034
- .colophon-foot {
1035
- display: flex;
1036
- justify-content: space-between;
1037
- flex-wrap: wrap;
1038
- gap: var(--space-md);
1039
- padding-top: var(--space-lg);
1040
- border-top: var(--rule-hair);
1041
- font-family: var(--font-mono);
1042
- font-size: var(--text-xs);
1043
- letter-spacing: 0.14em;
1044
- text-transform: uppercase;
1045
- color: var(--color-ink-mute);
1046
- }
1047
-
1048
- .colophon-foot .lead { color: var(--color-ink-2); }
1049
-
1050
- /* ───────── Animations ───────── */
1051
-
1052
- @keyframes board-tick {
1053
- 0% {
1054
- opacity: 0;
1055
- transform: translateY(8px);
1056
- filter: blur(2px);
1057
- }
1058
- 60% {
1059
- opacity: 1;
1060
- filter: blur(0);
1061
- }
1062
- 100% {
1063
- opacity: 1;
1064
- transform: translateY(0);
1065
- filter: blur(0);
1066
- }
1067
- }
1068
-
1069
- /* ───────── Responsive ───────── */
1070
-
1071
- @media (max-width: 880px) {
1072
- .pitch-grid,
1073
- .picks-grid,
1074
- .process-grid,
1075
- .note,
1076
- .colophon-grid {
1077
- grid-template-columns: minmax(0, 1fr);
1078
- gap: var(--space-xl);
1079
- }
1080
-
1081
- .colophon-grid { gap: var(--space-lg); }
1082
-
1083
- .hero-composition {
1084
- grid-template-columns: minmax(0, 1fr);
1085
- }
1086
-
1087
- .hero-stamp {
1088
- transform: rotate(-4deg);
1089
- width: 12rem;
1090
- margin-top: 0;
1091
- }
1092
-
1093
- .board-head { display: none; }
1094
-
1095
- .board-row {
1096
- grid-template-columns: 1.25rem 4.25rem minmax(0, 1fr);
1097
- grid-template-areas:
1098
- "glyph time dest"
1099
- ". code status"
1100
- "fare fare fare";
1101
- row-gap: var(--space-xs);
1102
- column-gap: var(--space-md);
1103
- padding: var(--space-md);
1104
- }
1105
-
1106
- .board-glyph { grid-area: glyph; align-self: center; }
1107
- .board-time { grid-area: time; }
1108
- .board-dest {
1109
- grid-area: dest;
1110
- font-size: clamp(1.5rem, 7vw, 2.25rem);
1111
- }
1112
- .board-row[data-status="boarding"] .board-dest {
1113
- font-size: clamp(1.85rem, 9vw, 2.85rem);
1114
- }
1115
- .board-code { grid-area: code; }
1116
- .board-status { grid-area: status; justify-self: end; }
1117
- .board-fare {
1118
- grid-area: fare;
1119
- text-align: left;
1120
- padding-top: var(--space-xs);
1121
- border-top: var(--rule-hair);
1122
- display: flex;
1123
- gap: var(--space-md);
1124
- align-items: baseline;
1125
- }
1126
- .board-fare small { display: inline; }
1127
-
1128
- .masthead {
1129
- grid-template-columns: 1fr auto;
1130
- gap: var(--space-sm);
1131
- }
1132
-
1133
- .masthead-meta { display: none; }
1134
- .masthead-links { gap: var(--space-md); }
1135
-
1136
- .colophon-head .wordmark { font-size: var(--text-xl); }
1137
- }
1138
-
1139
- @media (max-width: 480px) {
1140
- .hero { padding-block: var(--space-xl) var(--space-2xl); }
1141
- .pitch, .picks, .process, .note, .final-cta { padding-block: var(--space-2xl); }
1142
- .hero-strip { gap: var(--space-sm) var(--space-md); }
1143
- .hero-cta { gap: var(--space-md); }
1144
- .colophon-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
1145
- .ticker-track { gap: var(--space-lg); }
1146
- }
1147
-
1148
- /* ───────── Reduced motion ───────── */
1149
-
1150
- @media (prefers-reduced-motion: reduce) {
1151
- *, *::before, *::after {
1152
- animation-duration: 0.001ms !important;
1153
- animation-delay: 0ms !important;
1154
- transition-duration: 100ms !important;
1155
- transition-property: opacity, color, background-color, border-color !important;
1156
- }
1157
-
1158
- .board-row {
1159
- opacity: 1;
1160
- transform: none;
1161
- filter: none;
1162
- }
1163
-
1164
- .ticker-track {
1165
- animation: none !important;
1166
- transform: none !important;
1167
- }
1168
- }