howone 0.1.29 → 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 (219) 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/hallmark/LICENSE +0 -21
  44. package/templates/vite/.howone/skills/hallmark/README.md +0 -147
  45. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +0 -201
  46. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +0 -186
  47. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  48. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  49. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  50. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  51. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  52. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  53. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  54. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  55. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +0 -176
  56. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +0 -364
  57. package/templates/vite/.howone/skills/hallmark/package.json +0 -36
  58. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  59. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +0 -71
  60. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +0 -64
  61. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +0 -240
  62. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +0 -65
  63. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +0 -105
  64. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +0 -250
  65. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +0 -64
  66. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +0 -131
  67. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +0 -240
  68. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +0 -67
  69. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +0 -86
  70. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +0 -262
  71. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +0 -63
  72. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +0 -167
  73. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +0 -457
  74. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +0 -65
  75. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +0 -159
  76. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +0 -288
  77. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +0 -64
  78. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +0 -146
  79. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +0 -484
  80. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +0 -64
  81. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +0 -116
  82. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +0 -354
  83. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +0 -638
  84. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +0 -515
  85. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +0 -515
  86. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +0 -608
  87. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +0 -587
  88. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +0 -157
  89. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  90. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  91. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  92. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  93. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  94. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  95. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  96. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  97. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  98. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  99. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  100. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  101. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  102. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  103. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  104. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  105. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  106. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  107. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  108. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  109. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  110. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  111. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  112. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +0 -77
  113. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +0 -238
  114. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +0 -110
  115. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +0 -326
  116. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +0 -134
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +0 -262
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +0 -30
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +0 -17
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +0 -56
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +0 -160
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +0 -29
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +0 -63
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +0 -72
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +0 -374
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +0 -52
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +0 -29
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +0 -61
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +0 -193
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +0 -66
  131. package/templates/vite/.howone/skills/hallmark/site/css/base.css +0 -194
  132. package/templates/vite/.howone/skills/hallmark/site/css/components.css +0 -4886
  133. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +0 -2072
  134. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +0 -1129
  135. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +0 -475
  136. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +0 -1584
  137. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +0 -96
  138. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +0 -344
  139. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +0 -103
  140. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +0 -1103
  141. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +0 -83
  142. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +0 -368
  143. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +0 -133
  144. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +0 -1062
  145. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +0 -97
  146. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +0 -84
  147. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +0 -446
  148. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +0 -1087
  149. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +0 -101
  150. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +0 -359
  151. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +0 -1168
  152. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +0 -81
  153. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +0 -5
  154. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +0 -5
  155. package/templates/vite/.howone/skills/hallmark/site/index.html +0 -1043
  156. package/templates/vite/.howone/skills/hallmark/site/js/main.js +0 -1175
  157. package/templates/vite/.howone/skills/hallmark/vercel.json +0 -6
  158. package/templates/vite/.howone/skills/impeccable/SKILL.md +0 -168
  159. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +0 -101
  160. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +0 -190
  161. package/templates/vite/.howone/skills/impeccable/reference/animate.md +0 -175
  162. package/templates/vite/.howone/skills/impeccable/reference/audit.md +0 -133
  163. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +0 -113
  164. package/templates/vite/.howone/skills/impeccable/reference/brand.md +0 -118
  165. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +0 -174
  166. package/templates/vite/.howone/skills/impeccable/reference/codex.md +0 -105
  167. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +0 -106
  168. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +0 -105
  169. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +0 -154
  170. package/templates/vite/.howone/skills/impeccable/reference/craft.md +0 -123
  171. package/templates/vite/.howone/skills/impeccable/reference/critique.md +0 -273
  172. package/templates/vite/.howone/skills/impeccable/reference/delight.md +0 -302
  173. package/templates/vite/.howone/skills/impeccable/reference/distill.md +0 -111
  174. package/templates/vite/.howone/skills/impeccable/reference/document.md +0 -427
  175. package/templates/vite/.howone/skills/impeccable/reference/extract.md +0 -69
  176. package/templates/vite/.howone/skills/impeccable/reference/harden.md +0 -347
  177. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +0 -234
  178. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +0 -195
  179. package/templates/vite/.howone/skills/impeccable/reference/layout.md +0 -141
  180. package/templates/vite/.howone/skills/impeccable/reference/live.md +0 -622
  181. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +0 -109
  182. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +0 -234
  183. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +0 -258
  184. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +0 -130
  185. package/templates/vite/.howone/skills/impeccable/reference/personas.md +0 -179
  186. package/templates/vite/.howone/skills/impeccable/reference/polish.md +0 -242
  187. package/templates/vite/.howone/skills/impeccable/reference/product.md +0 -62
  188. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +0 -99
  189. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +0 -114
  190. package/templates/vite/.howone/skills/impeccable/reference/shape.md +0 -165
  191. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +0 -100
  192. package/templates/vite/.howone/skills/impeccable/reference/teach.md +0 -156
  193. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +0 -124
  194. package/templates/vite/.howone/skills/impeccable/reference/typography.md +0 -159
  195. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +0 -107
  196. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
  197. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +0 -94
  198. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +0 -242
  199. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +0 -820
  200. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +0 -198
  201. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +0 -21
  202. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +0 -110
  203. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +0 -69
  204. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +0 -595
  205. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +0 -123
  206. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +0 -4860
  207. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +0 -75
  208. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +0 -18
  209. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +0 -446
  210. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +0 -200
  211. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +0 -48
  212. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +0 -838
  213. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +0 -254
  214. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +0 -47
  215. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +0 -632
  216. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +0 -247
  217. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +0 -141
  218. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  219. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +0 -214
@@ -1,1103 +0,0 @@
1
- /* Hallmark · genre: atmospheric · macrostructure: Marquee Hero · theme: Bloom
2
- * polish: HP3 Cursor-spotlight (scoped to hero only · reduced-motion fallback at 50%/30%)
3
- * enrichment: none — typography only
4
- * nav: N5 Floating pill · footer: Ft5 Statement
5
- * accent: warm amber bloom (~3% page footprint) + secondary coral
6
- * studied: no
7
- */
8
-
9
- /* ── reset & root ─────────────────────────────────────────── */
10
-
11
- *, *::before, *::after { box-sizing: border-box; }
12
-
13
- html, body {
14
- margin: 0;
15
- padding: 0;
16
- overflow-x: clip;
17
- }
18
-
19
- html {
20
- background: var(--color-paper);
21
- color: var(--color-ink);
22
- font-family: var(--font-body);
23
- font-size: 16px;
24
- -webkit-font-smoothing: antialiased;
25
- text-rendering: optimizeLegibility;
26
- }
27
-
28
- body {
29
- position: relative;
30
- min-height: 100dvh;
31
- font-family: var(--font-body);
32
- font-size: var(--text-md);
33
- line-height: var(--leading-body);
34
- color: var(--color-ink);
35
- background: var(--color-paper);
36
- font-feature-settings: "ss01", "cv11";
37
- font-variant-ligatures: contextual;
38
- }
39
-
40
- img, svg { display: block; max-width: 100%; }
41
- button, input, select, textarea { font: inherit; color: inherit; }
42
- a { color: inherit; text-decoration: none; }
43
-
44
- ::selection {
45
- background: var(--color-accent);
46
- color: var(--color-accent-ink);
47
- }
48
-
49
- /* tabular-numbers utility */
50
- .tnum { font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }
51
-
52
- /* skip link */
53
- .skip {
54
- position: absolute;
55
- top: -40px;
56
- left: var(--space-md);
57
- padding: var(--space-xs) var(--space-md);
58
- background: var(--color-ink);
59
- color: var(--color-paper);
60
- border-radius: var(--radius-sm);
61
- font-size: var(--text-sm);
62
- z-index: 100;
63
- }
64
- .skip:focus { top: var(--space-md); }
65
-
66
- /* ── ambient blooms (atmospheric backdrop) ───────────────── */
67
-
68
- .ambient {
69
- position: fixed;
70
- inset: 0;
71
- z-index: -2;
72
- pointer-events: none;
73
- overflow: hidden;
74
- }
75
-
76
- .bloom {
77
- position: absolute;
78
- border-radius: 50%;
79
- filter: blur(80px);
80
- opacity: 0.55;
81
- will-change: opacity;
82
- }
83
-
84
- .bloom--1 {
85
- top: -10vmax;
86
- left: -8vmax;
87
- width: 60vmax;
88
- height: 60vmax;
89
- background: radial-gradient(
90
- closest-side,
91
- color-mix(in oklch, var(--color-bloom-1) 50%, transparent),
92
- transparent 70%
93
- );
94
- }
95
-
96
- .bloom--2 {
97
- bottom: -20vmax;
98
- right: -15vmax;
99
- width: 55vmax;
100
- height: 55vmax;
101
- background: radial-gradient(
102
- closest-side,
103
- color-mix(in oklch, var(--color-bloom-2) 38%, transparent),
104
- transparent 70%
105
- );
106
- }
107
-
108
- .grain {
109
- position: absolute;
110
- inset: 0;
111
- background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.95 0 0 0 0 0.94 0 0 0 0 0.92 0 0 0 0.06 0'/></filter><rect width='200' height='200' filter='url(%23n)' opacity='0.6'/></svg>");
112
- background-size: 200px 200px;
113
- opacity: 0.5;
114
- mix-blend-mode: overlay;
115
- }
116
-
117
- /* ── nav · N5 floating pill ──────────────────────────────── */
118
-
119
- .nav {
120
- position: sticky;
121
- top: var(--space-md);
122
- z-index: 40;
123
- padding: 0 var(--page-gutter);
124
- pointer-events: none;
125
- transition: top var(--dur-slow) var(--ease-out);
126
- }
127
-
128
- .nav[data-state="scrolled"] { top: var(--space-sm); }
129
-
130
- .nav__inner {
131
- pointer-events: auto;
132
- max-width: var(--max-width);
133
- margin: 0 auto;
134
- display: grid;
135
- grid-template-columns: auto 1fr auto;
136
- align-items: center;
137
- gap: var(--space-md);
138
- padding: var(--space-xs) var(--space-xs) var(--space-xs) var(--space-md);
139
- background: color-mix(in oklch, var(--color-paper) 76%, transparent);
140
- backdrop-filter: blur(18px) saturate(1.4);
141
- -webkit-backdrop-filter: blur(18px) saturate(1.4);
142
- border: var(--rule-hair) solid color-mix(in oklch, var(--color-rule-strong) 100%, transparent);
143
- border-radius: var(--radius-pill);
144
- transition:
145
- max-width var(--dur-slow) var(--ease-out),
146
- padding var(--dur-base) var(--ease-out),
147
- background var(--dur-base) var(--ease-out),
148
- border-color var(--dur-base) var(--ease-out),
149
- box-shadow var(--dur-slow) var(--ease-out),
150
- transform var(--dur-base) var(--ease-out);
151
- will-change: max-width, transform;
152
- }
153
-
154
- .nav[data-state="scrolled"] .nav__inner {
155
- max-width: 56rem;
156
- padding: var(--space-2xs) var(--space-2xs) var(--space-2xs) var(--space-md);
157
- background: color-mix(in oklch, var(--color-paper) 94%, transparent);
158
- border-color: color-mix(in oklch, var(--color-accent) 32%, var(--color-rule-strong));
159
- box-shadow:
160
- 0 12px 32px -10px color-mix(in oklch, var(--color-paper) 100%, transparent),
161
- 0 0 0 1px color-mix(in oklch, var(--color-accent) 12%, transparent),
162
- 0 0 60px -8px color-mix(in oklch, var(--color-accent) 28%, transparent);
163
- transform: scale(0.965);
164
- }
165
-
166
- /* nav details that respond to the scroll-state transformation */
167
- .nav__brand-num,
168
- .nav__links a {
169
- transition:
170
- color var(--dur-fast) var(--ease-out),
171
- opacity var(--dur-base) var(--ease-out),
172
- transform var(--dur-base) var(--ease-out);
173
- }
174
-
175
- .nav__links {
176
- transition:
177
- gap var(--dur-base) var(--ease-out),
178
- font-size var(--dur-base) var(--ease-out);
179
- }
180
-
181
- .nav[data-state="scrolled"] .nav__links {
182
- gap: var(--space-sm);
183
- font-size: var(--text-xs);
184
- }
185
-
186
- .nav[data-state="scrolled"] .nav__brand-num {
187
- opacity: 0.55;
188
- transform: translateX(-1px);
189
- }
190
-
191
- .nav[data-state="scrolled"] .nav__brand-dot {
192
- box-shadow: 0 0 18px color-mix(in oklch, var(--color-accent) 90%, transparent);
193
- }
194
-
195
- .nav__brand {
196
- display: inline-flex;
197
- align-items: center;
198
- gap: var(--space-xs);
199
- font-family: var(--font-display);
200
- font-weight: 700;
201
- font-size: var(--text-sm);
202
- letter-spacing: -0.01em;
203
- color: var(--color-ink);
204
- white-space: nowrap;
205
- }
206
-
207
- .nav__brand-dot {
208
- width: 8px;
209
- height: 8px;
210
- border-radius: 50%;
211
- background: var(--color-accent);
212
- box-shadow: 0 0 14px color-mix(in oklch, var(--color-accent) 70%, transparent);
213
- animation: pulse 2.4s var(--ease-in-out) infinite;
214
- }
215
-
216
- .nav__brand-num {
217
- color: var(--color-ink-3);
218
- font-weight: 500;
219
- margin-left: 1px;
220
- }
221
-
222
- .nav__links {
223
- display: flex;
224
- justify-content: center;
225
- gap: var(--space-md);
226
- font-size: var(--text-sm);
227
- color: var(--color-ink-2);
228
- }
229
-
230
- .nav__links a {
231
- padding: var(--space-2xs) var(--space-xs);
232
- border-radius: var(--radius-sm);
233
- transition: color var(--dur-fast) var(--ease-out);
234
- white-space: nowrap;
235
- }
236
- .nav__links a:hover { color: var(--color-ink); }
237
- .nav__links a:focus-visible {
238
- outline: 2px solid var(--color-focus);
239
- outline-offset: 2px;
240
- }
241
-
242
- .nav__cta {
243
- display: inline-flex;
244
- align-items: center;
245
- gap: var(--space-xs);
246
- padding: var(--space-xs) var(--space-md);
247
- background: var(--color-accent);
248
- color: var(--color-accent-ink);
249
- border-radius: var(--radius-pill);
250
- font-size: var(--text-sm);
251
- font-weight: 600;
252
- white-space: nowrap;
253
- transition:
254
- transform var(--dur-fast) var(--ease-out),
255
- background var(--dur-fast) var(--ease-out);
256
- }
257
- .nav__cta:hover {
258
- transform: translateY(-1px);
259
- background: color-mix(in oklch, var(--color-accent) 88%, var(--color-ink));
260
- }
261
- .nav__cta:active { transform: translateY(0); }
262
- .nav__cta:focus-visible {
263
- outline: 2px solid var(--color-focus);
264
- outline-offset: 3px;
265
- }
266
-
267
- @keyframes pulse {
268
- 0%, 100% { opacity: 1; transform: scale(1); }
269
- 50% { opacity: 0.6; transform: scale(0.85); }
270
- }
271
-
272
- /* ── hero · Marquee Hero + HP3 cursor spotlight ──────────── */
273
-
274
- .hero {
275
- position: relative;
276
- isolation: isolate;
277
- min-height: clamp(34rem, 84dvh, 52rem);
278
- padding: var(--space-3xl) var(--page-gutter) var(--space-4xl);
279
- display: grid;
280
- grid-template-rows: auto 1fr auto;
281
- gap: var(--space-xl);
282
- overflow: hidden;
283
- text-align: center;
284
- place-items: center;
285
- }
286
-
287
- .hero__spotlight {
288
- position: absolute;
289
- inset: 0;
290
- z-index: -1;
291
- background: radial-gradient(
292
- 520px circle at var(--mx, 50%) var(--my, 35%),
293
- color-mix(in oklch, var(--color-accent) 22%, transparent),
294
- transparent 60%
295
- );
296
- transition: background var(--dur-base) var(--ease-out);
297
- }
298
-
299
- .hero__rail {
300
- display: inline-flex;
301
- align-items: center;
302
- gap: var(--space-xs);
303
- padding: var(--space-2xs) var(--space-sm) var(--space-2xs) var(--space-xs);
304
- background: color-mix(in oklch, var(--color-paper-2) 90%, transparent);
305
- border: var(--rule-hair) solid var(--color-rule-strong);
306
- border-radius: var(--radius-pill);
307
- margin: 0 auto;
308
- width: max-content;
309
- max-width: 100%;
310
- font-family: var(--font-mono);
311
- font-size: var(--text-xs);
312
- letter-spacing: 0.04em;
313
- color: var(--color-ink-2);
314
- text-transform: uppercase;
315
- overflow: hidden;
316
- text-overflow: ellipsis;
317
- white-space: nowrap;
318
- }
319
-
320
- .hero__rail-dot {
321
- width: 6px;
322
- height: 6px;
323
- border-radius: 50%;
324
- background: var(--color-accent);
325
- box-shadow: 0 0 8px var(--color-accent);
326
- flex: 0 0 auto;
327
- animation: pulse 2.4s var(--ease-in-out) infinite;
328
- }
329
-
330
- .hero__display {
331
- font-family: var(--font-display);
332
- font-weight: 800;
333
- font-size: var(--text-display);
334
- line-height: var(--leading-display);
335
- letter-spacing: -0.045em;
336
- margin: 0 auto;
337
- display: flex;
338
- flex-direction: column;
339
- align-items: center;
340
- text-align: center;
341
- max-width: 18ch;
342
- overflow-wrap: anywhere;
343
- min-width: 0;
344
- }
345
-
346
- .hero__line {
347
- display: block;
348
- opacity: 0;
349
- transform: translateY(16px);
350
- animation: rise var(--dur-slow) var(--ease-out) forwards;
351
- }
352
-
353
- .hero__line:nth-child(1) { animation-delay: 60ms; }
354
- .hero__line:nth-child(2) { animation-delay: 160ms; }
355
- .hero__line:nth-child(3) { animation-delay: 260ms; }
356
-
357
- .hero__line em {
358
- font-family: var(--font-accent);
359
- font-style: italic;
360
- font-weight: 400;
361
- font-size: 1.18em;
362
- letter-spacing: -0.02em;
363
- color: var(--color-accent);
364
- font-feature-settings: normal;
365
- padding-right: 0.06em;
366
- }
367
-
368
- @keyframes rise {
369
- to { opacity: 1; transform: translateY(0); }
370
- }
371
-
372
- .hero__meta {
373
- display: flex;
374
- flex-wrap: wrap;
375
- justify-content: center;
376
- align-items: baseline;
377
- gap: var(--space-lg) var(--space-2xl);
378
- padding-top: var(--space-lg);
379
- border-top: var(--rule-hair) solid var(--color-rule);
380
- font-family: var(--font-mono);
381
- font-size: var(--text-sm);
382
- width: 100%;
383
- max-width: 56rem;
384
- }
385
-
386
- .hero__meta-cell {
387
- display: flex;
388
- flex-direction: column;
389
- align-items: center;
390
- text-align: center;
391
- gap: 2px;
392
- min-width: 0;
393
- }
394
-
395
- .hero__label {
396
- font-size: var(--text-xs);
397
- letter-spacing: 0.08em;
398
- text-transform: uppercase;
399
- color: var(--color-ink-3);
400
- }
401
-
402
- .hero__value {
403
- color: var(--color-ink);
404
- font-weight: 500;
405
- letter-spacing: -0.01em;
406
- white-space: nowrap;
407
- overflow: hidden;
408
- text-overflow: ellipsis;
409
- }
410
-
411
- /* ── shared · section heads ──────────────────────────────── */
412
-
413
- .section-head {
414
- max-width: var(--max-width);
415
- margin: 0 auto var(--space-2xl);
416
- padding: 0;
417
- display: grid;
418
- grid-template-columns: minmax(0, 1fr);
419
- gap: var(--space-xs);
420
- }
421
-
422
- .section-eyebrow {
423
- font-family: var(--font-mono);
424
- font-size: var(--text-xs);
425
- letter-spacing: 0.12em;
426
- text-transform: uppercase;
427
- color: var(--color-ink-3);
428
- margin: 0;
429
- display: inline-flex;
430
- align-items: baseline;
431
- gap: var(--space-xs);
432
- }
433
-
434
- .section-eyebrow .num {
435
- color: var(--color-accent);
436
- font-weight: 500;
437
- }
438
-
439
- .section-h {
440
- font-family: var(--font-display);
441
- font-weight: 700;
442
- font-size: var(--text-4xl);
443
- line-height: var(--leading-tight);
444
- letter-spacing: -0.025em;
445
- color: var(--color-ink);
446
- margin: 0;
447
- max-width: 22ch;
448
- overflow-wrap: anywhere;
449
- min-width: 0;
450
- }
451
-
452
- .section-note {
453
- margin: var(--space-xs) 0 0;
454
- color: var(--color-ink-3);
455
- font-size: var(--text-sm);
456
- max-width: var(--measure);
457
- }
458
-
459
- /* ── format band ─────────────────────────────────────────── */
460
-
461
- .format {
462
- position: relative;
463
- padding: var(--space-3xl) var(--page-gutter) var(--space-3xl);
464
- border-block: var(--rule-hair) solid var(--color-rule);
465
- background: color-mix(in oklch, var(--color-paper-2) 85%, transparent);
466
- }
467
-
468
- .format .section-head {
469
- margin-bottom: var(--space-2xl);
470
- }
471
-
472
- .format__schedule {
473
- list-style: none;
474
- margin: 0 auto var(--space-2xl);
475
- padding: 0;
476
- max-width: var(--max-width);
477
- display: flex;
478
- flex-direction: column;
479
- }
480
-
481
- .format__row {
482
- display: grid;
483
- grid-template-columns: minmax(7rem, 12rem) minmax(8rem, 16rem) 1fr;
484
- gap: var(--space-lg);
485
- padding: var(--space-lg) 0;
486
- border-top: var(--rule-hair) solid var(--color-rule);
487
- align-items: baseline;
488
- }
489
-
490
- .format__row:last-child { border-bottom: var(--rule-hair) solid var(--color-rule); }
491
-
492
- .format__time {
493
- font-family: var(--font-mono);
494
- font-size: var(--text-2xl);
495
- font-weight: 500;
496
- color: var(--color-ink);
497
- letter-spacing: -0.02em;
498
- white-space: nowrap;
499
- }
500
-
501
- .format__time small {
502
- font-size: 0.55em;
503
- color: var(--color-ink-3);
504
- margin-left: 4px;
505
- letter-spacing: 0.08em;
506
- text-transform: uppercase;
507
- }
508
-
509
- .format__label {
510
- font-family: var(--font-display);
511
- font-size: var(--text-lg);
512
- font-weight: 600;
513
- color: var(--color-ink);
514
- letter-spacing: -0.015em;
515
- }
516
-
517
- .format__note {
518
- color: var(--color-ink-2);
519
- font-size: var(--text-sm);
520
- line-height: var(--leading-snug);
521
- }
522
-
523
- .format__row--reveal .format__time,
524
- .format__row--reveal .format__label {
525
- color: var(--color-ink-3);
526
- }
527
- .format__row--reveal .format__label::after {
528
- content: " ◔";
529
- color: var(--color-accent);
530
- margin-left: 6px;
531
- font-size: 0.85em;
532
- }
533
-
534
- .format__cta {
535
- max-width: var(--max-width);
536
- margin: 0 auto;
537
- display: flex;
538
- flex-direction: column;
539
- align-items: flex-start;
540
- gap: var(--space-md);
541
- }
542
-
543
- .format__cta-note {
544
- color: var(--color-ink-3);
545
- font-size: var(--text-sm);
546
- font-family: var(--font-mono);
547
- margin: 0;
548
- }
549
-
550
- /* ── shared cta ──────────────────────────────────────────── */
551
-
552
- .cta {
553
- display: inline-flex;
554
- align-items: center;
555
- gap: var(--space-xs);
556
- padding: var(--space-sm) var(--space-lg);
557
- border-radius: var(--radius-pill);
558
- font-family: var(--font-body);
559
- font-weight: 600;
560
- font-size: var(--text-md);
561
- white-space: nowrap;
562
- transition:
563
- transform var(--dur-fast) var(--ease-out),
564
- background var(--dur-fast) var(--ease-out),
565
- box-shadow var(--dur-base) var(--ease-out);
566
- cursor: pointer;
567
- border: var(--rule-hair) solid transparent;
568
- letter-spacing: -0.01em;
569
- }
570
-
571
- .cta--primary {
572
- background: var(--color-accent);
573
- color: var(--color-accent-ink);
574
- box-shadow:
575
- 0 0 0 0 color-mix(in oklch, var(--color-accent) 0%, transparent),
576
- 0 6px 28px -8px color-mix(in oklch, var(--color-accent) 50%, transparent);
577
- }
578
- .cta--primary:hover {
579
- transform: translateY(-1px);
580
- background: color-mix(in oklch, var(--color-accent) 88%, var(--color-ink));
581
- box-shadow:
582
- 0 0 0 4px color-mix(in oklch, var(--color-accent) 18%, transparent),
583
- 0 10px 36px -8px color-mix(in oklch, var(--color-accent) 65%, transparent);
584
- }
585
- .cta--primary:active { transform: translateY(0); }
586
- .cta--primary:focus-visible {
587
- outline: 2px solid var(--color-focus);
588
- outline-offset: 3px;
589
- }
590
- .cta--primary[disabled] {
591
- opacity: 0.5;
592
- pointer-events: none;
593
- }
594
- .cta--primary[data-state="loading"] { background: var(--color-paper-3); color: var(--color-ink-2); }
595
- .cta--primary[data-state="success"] {
596
- background: color-mix(in oklch, var(--color-success) 80%, var(--color-ink));
597
- color: var(--color-paper);
598
- }
599
-
600
- .cta--lg { padding: var(--space-md) var(--space-xl); font-size: var(--text-md); }
601
-
602
- .cta__arrow,
603
- .nav__cta-arrow {
604
- transition: transform var(--dur-fast) var(--ease-out);
605
- }
606
- .cta:hover .cta__arrow,
607
- .nav__cta:hover .nav__cta-arrow {
608
- transform: translateX(3px);
609
- }
610
-
611
- /* ── why · pitch ─────────────────────────────────────────── */
612
-
613
- .why {
614
- position: relative;
615
- padding: var(--space-4xl) var(--page-gutter);
616
- max-width: var(--max-width);
617
- margin: 0 auto;
618
- }
619
-
620
- .why__body {
621
- max-width: 60ch;
622
- font-size: var(--text-lg);
623
- line-height: 1.65;
624
- color: var(--color-ink-2);
625
- display: flex;
626
- flex-direction: column;
627
- gap: var(--space-lg);
628
- }
629
-
630
- .why__lead {
631
- font-size: var(--text-xl);
632
- color: var(--color-ink);
633
- font-weight: 500;
634
- line-height: 1.5;
635
- letter-spacing: -0.015em;
636
- }
637
-
638
- .why__body em {
639
- font-style: italic;
640
- color: var(--color-ink);
641
- font-weight: 500;
642
- }
643
-
644
- .why__signoff {
645
- font-family: var(--font-mono);
646
- font-size: var(--text-sm);
647
- color: var(--color-ink-3);
648
- letter-spacing: 0;
649
- text-transform: none;
650
- margin-top: var(--space-md);
651
- }
652
-
653
- /* ── programme grid ──────────────────────────────────────── */
654
-
655
- .program {
656
- padding: var(--space-3xl) var(--page-gutter) var(--space-4xl);
657
- border-top: var(--rule-hair) solid var(--color-rule);
658
- }
659
-
660
- .program__grid {
661
- list-style: none;
662
- margin: 0 auto;
663
- padding: 0;
664
- max-width: var(--max-width);
665
- display: grid;
666
- grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
667
- gap: var(--space-md);
668
- }
669
-
670
- .card {
671
- position: relative;
672
- padding: var(--space-lg);
673
- border: var(--rule-hair) solid var(--color-rule);
674
- background: color-mix(in oklch, var(--color-paper-2) 92%, transparent);
675
- border-radius: var(--radius-md);
676
- display: flex;
677
- flex-direction: column;
678
- gap: var(--space-xs);
679
- transition:
680
- transform var(--dur-base) var(--ease-out),
681
- border-color var(--dur-base) var(--ease-out),
682
- background var(--dur-base) var(--ease-out);
683
- min-height: 14rem;
684
- }
685
-
686
- .card:hover {
687
- transform: translateY(-2px);
688
- border-color: var(--color-rule-strong);
689
- background: var(--color-paper-3);
690
- }
691
-
692
- .card__time {
693
- font-family: var(--font-mono);
694
- font-size: var(--text-sm);
695
- color: var(--color-accent);
696
- letter-spacing: -0.01em;
697
- margin: 0;
698
- font-weight: 500;
699
- }
700
-
701
- .card__type {
702
- font-family: var(--font-mono);
703
- font-size: var(--text-xs);
704
- color: var(--color-ink-3);
705
- letter-spacing: 0.08em;
706
- text-transform: uppercase;
707
- margin: 0;
708
- }
709
-
710
- .card__h {
711
- margin: var(--space-xs) 0 0;
712
- font-family: var(--font-display);
713
- font-weight: 600;
714
- font-size: var(--text-lg);
715
- line-height: 1.2;
716
- letter-spacing: -0.015em;
717
- color: var(--color-ink);
718
- overflow-wrap: anywhere;
719
- min-width: 0;
720
- }
721
-
722
- .card__sub {
723
- margin: 0;
724
- color: var(--color-ink-2);
725
- font-size: var(--text-sm);
726
- line-height: var(--leading-snug);
727
- flex: 1;
728
- }
729
-
730
- .card__name {
731
- margin: 0;
732
- padding-top: var(--space-sm);
733
- margin-top: auto;
734
- border-top: var(--rule-hair) dashed var(--color-rule);
735
- font-family: var(--font-mono);
736
- font-size: var(--text-xs);
737
- color: var(--color-ink-3);
738
- letter-spacing: 0.02em;
739
- }
740
-
741
- .card--launch {
742
- background: linear-gradient(
743
- 180deg,
744
- color-mix(in oklch, var(--color-accent) 12%, var(--color-paper-2)) 0%,
745
- var(--color-paper-2) 90%
746
- );
747
- border-color: color-mix(in oklch, var(--color-accent) 35%, var(--color-rule));
748
- }
749
- .card--launch .card__time { color: var(--color-accent); }
750
- .card--launch::before {
751
- content: "LIVE";
752
- position: absolute;
753
- top: var(--space-md);
754
- right: var(--space-md);
755
- font-family: var(--font-mono);
756
- font-size: 10px;
757
- letter-spacing: 0.18em;
758
- padding: 2px 8px;
759
- background: var(--color-accent);
760
- color: var(--color-accent-ink);
761
- border-radius: var(--radius-xs);
762
- font-weight: 600;
763
- }
764
-
765
- .card--keynote { border-color: color-mix(in oklch, var(--color-accent-2) 30%, var(--color-rule)); }
766
- .card--keynote .card__time { color: var(--color-accent-2); }
767
-
768
- .card--tba {
769
- background: transparent;
770
- border-style: dashed;
771
- border-color: var(--color-rule);
772
- }
773
- .card--tba .card__h { color: var(--color-ink-2); }
774
- .card--tba:hover { border-color: var(--color-rule-strong); }
775
-
776
- /* ── rsvp ────────────────────────────────────────────────── */
777
-
778
- .rsvp {
779
- padding: var(--space-3xl) var(--page-gutter);
780
- background: linear-gradient(
781
- 180deg,
782
- transparent 0%,
783
- color-mix(in oklch, var(--color-paper-2) 70%, transparent) 100%
784
- );
785
- border-top: var(--rule-hair) solid var(--color-rule);
786
- }
787
-
788
- .rsvp__inner {
789
- max-width: 56rem;
790
- margin: 0 auto;
791
- }
792
-
793
- .rsvp__h {
794
- font-family: var(--font-display);
795
- font-weight: 800;
796
- font-size: var(--text-4xl);
797
- line-height: var(--leading-tight);
798
- letter-spacing: -0.035em;
799
- margin: var(--space-xs) 0 var(--space-md);
800
- max-width: 18ch;
801
- overflow-wrap: anywhere;
802
- min-width: 0;
803
- }
804
-
805
- .rsvp__lead {
806
- max-width: var(--measure);
807
- color: var(--color-ink-2);
808
- font-size: var(--text-md);
809
- margin: 0 0 var(--space-2xl);
810
- line-height: var(--leading-body);
811
- }
812
-
813
- .rsvp__form {
814
- display: flex;
815
- flex-direction: column;
816
- gap: var(--space-md);
817
- }
818
-
819
- .rsvp__row {
820
- display: grid;
821
- grid-template-columns: 1fr auto;
822
- gap: var(--space-sm);
823
- align-items: stretch;
824
- }
825
-
826
- .rsvp__field {
827
- display: block;
828
- position: relative;
829
- }
830
-
831
- .rsvp__field-label {
832
- position: absolute;
833
- width: 1px;
834
- height: 1px;
835
- overflow: hidden;
836
- clip: rect(0 0 0 0);
837
- }
838
-
839
- .rsvp__field input {
840
- width: 100%;
841
- padding: var(--space-md) var(--space-lg);
842
- background: var(--color-paper);
843
- border: var(--rule-hair) solid var(--color-rule-strong);
844
- border-radius: var(--radius-pill);
845
- color: var(--color-ink);
846
- font-size: var(--text-md);
847
- transition:
848
- border-color var(--dur-fast) var(--ease-out),
849
- background var(--dur-fast) var(--ease-out);
850
- }
851
-
852
- .rsvp__field input::placeholder { color: var(--color-ink-3); }
853
-
854
- .rsvp__field input:hover { border-color: var(--color-paper-4); }
855
- .rsvp__field input:focus-visible {
856
- outline: 2px solid var(--color-focus);
857
- outline-offset: 2px;
858
- border-color: var(--color-accent);
859
- }
860
-
861
- .rsvp__field input:user-invalid {
862
- border-color: var(--color-error);
863
- }
864
-
865
- .rsvp__help {
866
- font-family: var(--font-mono);
867
- font-size: var(--text-xs);
868
- color: var(--color-ink-3);
869
- margin: 0;
870
- letter-spacing: 0.02em;
871
- }
872
-
873
- .rsvp__success {
874
- display: none;
875
- font-family: var(--font-mono);
876
- font-size: var(--text-sm);
877
- color: var(--color-success);
878
- letter-spacing: 0;
879
- padding: var(--space-sm) var(--space-md);
880
- background: color-mix(in oklch, var(--color-success) 12%, transparent);
881
- border: var(--rule-hair) solid color-mix(in oklch, var(--color-success) 40%, transparent);
882
- border-radius: var(--radius-md);
883
- }
884
- .rsvp__success[data-state="ok"] { display: block; }
885
-
886
- /* ── faq ─────────────────────────────────────────────────── */
887
-
888
- .faq {
889
- padding: var(--space-3xl) var(--page-gutter) var(--space-4xl);
890
- border-top: var(--rule-hair) solid var(--color-rule);
891
- }
892
-
893
- .faq__list {
894
- max-width: var(--max-width);
895
- margin: 0 auto;
896
- display: flex;
897
- flex-direction: column;
898
- }
899
-
900
- .faq__item {
901
- border-top: var(--rule-hair) solid var(--color-rule);
902
- }
903
- .faq__item:last-child { border-bottom: var(--rule-hair) solid var(--color-rule); }
904
-
905
- .faq__item summary {
906
- list-style: none;
907
- cursor: pointer;
908
- padding: var(--space-lg) 0;
909
- display: flex;
910
- align-items: baseline;
911
- justify-content: space-between;
912
- gap: var(--space-md);
913
- font-family: var(--font-display);
914
- font-size: var(--text-xl);
915
- font-weight: 500;
916
- letter-spacing: -0.015em;
917
- color: var(--color-ink);
918
- transition: color var(--dur-fast) var(--ease-out);
919
- }
920
-
921
- .faq__item summary::-webkit-details-marker { display: none; }
922
-
923
- .faq__item summary > span:first-child {
924
- flex: 1;
925
- min-width: 0;
926
- }
927
-
928
- .faq__item summary:hover { color: var(--color-accent); }
929
- .faq__item summary:focus-visible {
930
- outline: 2px solid var(--color-focus);
931
- outline-offset: 4px;
932
- border-radius: var(--radius-xs);
933
- }
934
-
935
- .faq__chev {
936
- font-family: var(--font-mono);
937
- font-size: var(--text-xl);
938
- color: var(--color-ink-3);
939
- transition: transform var(--dur-base) var(--ease-out);
940
- font-weight: 400;
941
- flex: 0 0 auto;
942
- line-height: 1;
943
- }
944
-
945
- .faq__item[open] .faq__chev {
946
- transform: rotate(45deg);
947
- color: var(--color-accent);
948
- }
949
-
950
- .faq__a {
951
- padding: 0 0 var(--space-lg);
952
- max-width: 60ch;
953
- color: var(--color-ink-2);
954
- font-size: var(--text-md);
955
- line-height: var(--leading-body);
956
- }
957
-
958
- .faq__a p { margin: 0; }
959
- .faq__a a { color: var(--color-accent); border-bottom: 1px dotted currentColor; }
960
- .faq__a a:hover { color: color-mix(in oklch, var(--color-accent) 88%, var(--color-ink)); }
961
-
962
- /* ── footer · Ft5 statement ──────────────────────────────── */
963
-
964
- .footer {
965
- padding: var(--space-3xl) var(--page-gutter) var(--space-2xl);
966
- border-top: var(--rule-hair) solid var(--color-rule);
967
- }
968
-
969
- .footer__inner {
970
- max-width: var(--max-width);
971
- margin: 0 auto;
972
- }
973
-
974
- .footer__statement {
975
- font-family: var(--font-display);
976
- font-weight: 500;
977
- font-size: var(--text-3xl);
978
- line-height: 1.15;
979
- letter-spacing: -0.025em;
980
- color: var(--color-ink);
981
- margin: 0 0 var(--space-3xl);
982
- max-width: 24ch;
983
- overflow-wrap: anywhere;
984
- min-width: 0;
985
- }
986
-
987
- .footer__statement em {
988
- font-style: italic;
989
- color: var(--color-accent);
990
- font-weight: 600;
991
- }
992
-
993
- .footer__meta {
994
- display: flex;
995
- flex-wrap: wrap;
996
- gap: var(--space-md) var(--space-2xl);
997
- align-items: baseline;
998
- justify-content: space-between;
999
- padding-top: var(--space-lg);
1000
- border-top: var(--rule-hair) solid var(--color-rule);
1001
- font-family: var(--font-mono);
1002
- font-size: var(--text-xs);
1003
- color: var(--color-ink-3);
1004
- letter-spacing: 0.03em;
1005
- }
1006
-
1007
- .footer__line { margin: 0; }
1008
-
1009
- .footer__links {
1010
- display: flex;
1011
- flex-wrap: wrap;
1012
- gap: var(--space-lg);
1013
- list-style: none;
1014
- margin: 0;
1015
- padding: 0;
1016
- }
1017
-
1018
- .footer__links a {
1019
- color: var(--color-ink-3);
1020
- transition: color var(--dur-fast) var(--ease-out);
1021
- white-space: nowrap;
1022
- }
1023
- .footer__links a:hover { color: var(--color-ink); }
1024
- .footer__links a:focus-visible {
1025
- outline: 2px solid var(--color-focus);
1026
- outline-offset: 3px;
1027
- border-radius: var(--radius-xs);
1028
- }
1029
-
1030
- /* ── responsive ──────────────────────────────────────────── */
1031
-
1032
- @media (max-width: 60rem) {
1033
- .nav__inner {
1034
- grid-template-columns: auto 1fr auto;
1035
- padding: var(--space-2xs) var(--space-2xs) var(--space-2xs) var(--space-md);
1036
- }
1037
- .nav__links { display: none; }
1038
- .nav__cta { font-size: var(--text-xs); padding: var(--space-2xs) var(--space-md); }
1039
-
1040
- .hero {
1041
- min-height: clamp(30rem, 76dvh, 44rem);
1042
- padding: var(--space-2xl) var(--page-gutter);
1043
- gap: var(--space-lg);
1044
- }
1045
-
1046
- .hero__display { letter-spacing: -0.035em; }
1047
-
1048
- .hero__meta {
1049
- flex-direction: column;
1050
- gap: var(--space-md);
1051
- padding-top: var(--space-md);
1052
- }
1053
-
1054
- .section-h { font-size: var(--text-3xl); }
1055
-
1056
- .format__row {
1057
- grid-template-columns: minmax(5rem, 7rem) 1fr;
1058
- grid-template-areas: "time label" "time note";
1059
- gap: var(--space-xs) var(--space-md);
1060
- padding: var(--space-md) 0;
1061
- }
1062
- .format__time { grid-area: time; font-size: var(--text-xl); align-self: start; padding-top: 4px; }
1063
- .format__label { grid-area: label; }
1064
- .format__note { grid-area: note; }
1065
-
1066
- .rsvp__row { grid-template-columns: 1fr; }
1067
- .rsvp__row .cta { justify-content: center; }
1068
- .rsvp__h { font-size: var(--text-3xl); }
1069
-
1070
- .faq__item summary { font-size: var(--text-lg); padding: var(--space-md) 0; }
1071
-
1072
- .footer__statement { font-size: var(--text-2xl); }
1073
- .footer__meta { flex-direction: column; align-items: flex-start; gap: var(--space-sm); }
1074
- }
1075
-
1076
- @media (max-width: 26rem) {
1077
- .nav__brand-num { display: none; }
1078
- .nav__cta span:first-child { display: none; }
1079
- .nav__cta { padding: var(--space-2xs) var(--space-sm); }
1080
-
1081
- .format__row {
1082
- grid-template-columns: 1fr;
1083
- grid-template-areas: "time" "label" "note";
1084
- }
1085
- .format__time { padding-top: 0; }
1086
- }
1087
-
1088
- /* ── reduced motion ──────────────────────────────────────── */
1089
-
1090
- @media (prefers-reduced-motion: reduce) {
1091
- *, *::before, *::after {
1092
- animation-duration: 0.001ms !important;
1093
- animation-iteration-count: 1 !important;
1094
- transition-duration: 0.001ms !important;
1095
- scroll-behavior: auto !important;
1096
- }
1097
-
1098
- .hero__line { opacity: 1; transform: none; animation: none; }
1099
- .nav__brand-dot,
1100
- .hero__rail-dot { animation: none; opacity: 1; }
1101
- .hero__spotlight { transition: none; --mx: 50%; --my: 35%; }
1102
- .bloom { opacity: 0.45; }
1103
- }