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,587 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
6
- <title>Alma — Two minutes a day. The dark holds the rest.</title>
7
- <meta name="description" content="A voice journal that takes two minutes a day, transcribes the audio, and forgets the entry after a year unless you save it." />
8
- <link rel="preconnect" href="https://fonts.googleapis.com" />
9
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
- <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&family=Newsreader:ital,opsz,wght@1,6..72,400;1,6..72,500&display=swap" />
11
- <style>
12
- /* Hallmark · macrostructure: Quote-Led · theme: Halo · enrichment: Tier-A concentric rings SVG
13
- * tone: atmospheric intimate austere · anchor hue: warm amber
14
- * studied: no · pre-emit critique: P5 H4 E4 S5 R5 V4
15
- */
16
-
17
- :root {
18
- /* Halo — dark · geometric-sans · warm (charcoal + amber) */
19
- --color-paper: oklch(13% 0.005 60);
20
- --color-paper-2: oklch(17% 0.008 60);
21
- --color-paper-3: oklch(22% 0.012 62);
22
- --color-rule: oklch(28% 0.012 60);
23
- --color-rule-2: oklch(38% 0.016 62);
24
- --color-muted: oklch(58% 0.018 65);
25
- --color-ink-2: oklch(82% 0.020 68);
26
- --color-ink: oklch(96% 0.014 70);
27
- --color-accent: oklch(74% 0.16 70); /* warm amber */
28
- --color-focus: oklch(74% 0.16 70);
29
-
30
- --font-display: "Geist", ui-sans-serif, system-ui, sans-serif;
31
- --font-body: "Geist", ui-sans-serif, system-ui, sans-serif;
32
- --font-serif: "Newsreader", ui-serif, Georgia, serif;
33
- --font-label: "Geist Mono", ui-monospace, monospace;
34
- --font-mono: "Geist Mono", ui-monospace, monospace;
35
-
36
- --text-xs: 0.75rem;
37
- --text-sm: 0.875rem;
38
- --text-md: 1.0625rem;
39
- --text-lg: 1.375rem;
40
- --text-xl: 1.875rem;
41
- --text-2xl: 2.5rem;
42
- --text-display: clamp(2.75rem, 6.5vw + 0.5rem, 5.5rem);
43
-
44
- --tracking-display: -0.02em;
45
- --tracking-tight: -0.015em;
46
- --tracking-label: 0.14em;
47
- --lh-tight: 1.05;
48
- --lh-snug: 1.25;
49
- --lh-relaxed: 1.6;
50
-
51
- --space-3xs: 0.25rem;
52
- --space-2xs: 0.5rem;
53
- --space-xs: 0.75rem;
54
- --space-sm: 1rem;
55
- --space-md: 1.5rem;
56
- --space-lg: 2rem;
57
- --space-xl: 3rem;
58
- --space-2xl: 4.5rem;
59
- --space-3xl: 7rem;
60
-
61
- --rule-hair: 1px;
62
- --radius-pill: 999px;
63
- --page-gutter: clamp(1.25rem, 4vw, 3rem);
64
- --page-max: 72rem;
65
-
66
- --dur-micro: 80ms;
67
- --dur-short: 150ms;
68
- --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
69
- }
70
-
71
- *, *::before, *::after { box-sizing: border-box; }
72
- html, body { overflow-x: clip; }
73
-
74
- html {
75
- background: var(--color-paper);
76
- color: var(--color-ink);
77
- font-family: var(--font-body);
78
- font-size: 16px;
79
- line-height: var(--lh-relaxed);
80
- -webkit-font-smoothing: antialiased;
81
- text-rendering: optimizeLegibility;
82
- }
83
-
84
- body {
85
- position: relative;
86
- margin: 0;
87
- padding-inline: var(--page-gutter);
88
- min-height: 100dvh;
89
- }
90
-
91
- /* Halo glow — fixed warm bloom anchored top-right */
92
- body::before {
93
- content: "";
94
- position: fixed;
95
- inset: 0 0 auto 0;
96
- height: 80vh;
97
- pointer-events: none;
98
- z-index: 0;
99
- background:
100
- radial-gradient(ellipse 60% 80% at 80% 0%,
101
- color-mix(in oklch, var(--color-accent) 22%, transparent) 0%,
102
- transparent 65%);
103
- }
104
-
105
- main {
106
- margin-inline: auto;
107
- max-width: var(--page-max);
108
- position: relative;
109
- z-index: 1;
110
- }
111
-
112
- a { color: inherit; text-decoration: none; }
113
- a:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 3px; }
114
-
115
- img, svg { display: block; max-width: 100%; }
116
-
117
- h1, h2, h3, p, ul, ol, dl { margin: 0; }
118
-
119
- /* — Masthead ———————————————————————————————————————— */
120
- .masthead {
121
- display: flex;
122
- align-items: baseline;
123
- justify-content: space-between;
124
- gap: var(--space-md);
125
- padding-block: var(--space-md);
126
- border-block-end: var(--rule-hair) solid var(--color-rule);
127
- font-family: var(--font-label);
128
- font-size: var(--text-xs);
129
- letter-spacing: var(--tracking-label);
130
- text-transform: uppercase;
131
- color: var(--color-muted);
132
- }
133
-
134
- .masthead__wordmark {
135
- font-family: var(--font-display);
136
- font-weight: 600;
137
- font-size: var(--text-md);
138
- letter-spacing: 0;
139
- text-transform: none;
140
- color: var(--color-ink);
141
- }
142
-
143
- .masthead__nav {
144
- display: flex;
145
- gap: var(--space-md);
146
- }
147
-
148
- .masthead__nav a:hover { color: var(--color-ink); }
149
-
150
- @media (max-width: 36rem) {
151
- .masthead__nav { display: none; }
152
- }
153
-
154
- /* — Quote-led hero ————————————————————————————————— */
155
- .hero {
156
- display: grid;
157
- grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
158
- align-items: center;
159
- gap: var(--space-2xl);
160
- padding-block: var(--space-3xl) var(--space-2xl);
161
- }
162
-
163
- @media (max-width: 56rem) {
164
- .hero {
165
- grid-template-columns: 1fr;
166
- gap: var(--space-xl);
167
- }
168
- }
169
-
170
- .hero__copy {
171
- display: grid;
172
- gap: var(--space-md);
173
- }
174
-
175
- .hero__eyebrow {
176
- font-family: var(--font-label);
177
- font-size: var(--text-xs);
178
- letter-spacing: var(--tracking-label);
179
- text-transform: uppercase;
180
- color: var(--color-accent);
181
- margin-block-end: var(--space-sm);
182
- }
183
-
184
- .hero__quote {
185
- margin: 0;
186
- padding: 0;
187
- }
188
-
189
- .hero__quote p {
190
- font-family: var(--font-display);
191
- font-weight: 500;
192
- font-size: var(--text-display);
193
- line-height: var(--lh-tight);
194
- letter-spacing: var(--tracking-display);
195
- color: var(--color-ink);
196
- max-width: 18ch;
197
- overflow-wrap: anywhere;
198
- min-width: 0;
199
- }
200
-
201
- .hero__quote em {
202
- font-style: italic;
203
- font-family: var(--font-serif);
204
- font-weight: 400;
205
- color: var(--color-accent);
206
- }
207
-
208
- .hero__attrib {
209
- margin-block-start: var(--space-md);
210
- font-family: var(--font-label);
211
- font-size: var(--text-xs);
212
- letter-spacing: var(--tracking-label);
213
- text-transform: uppercase;
214
- color: var(--color-muted);
215
- }
216
-
217
- .hero__lede {
218
- margin-block-start: var(--space-md);
219
- font-family: var(--font-body);
220
- font-size: var(--text-lg);
221
- line-height: var(--lh-snug);
222
- color: var(--color-ink-2);
223
- max-width: 42ch;
224
- }
225
-
226
- .hero__cta-row {
227
- display: flex;
228
- gap: var(--space-md);
229
- margin-block-start: var(--space-md);
230
- flex-wrap: wrap;
231
- }
232
-
233
- .cta {
234
- display: inline-block;
235
- padding: 0.7rem 1.2rem;
236
- font-family: var(--font-label);
237
- font-size: var(--text-xs);
238
- letter-spacing: var(--tracking-label);
239
- text-transform: uppercase;
240
- color: var(--color-paper);
241
- background: var(--color-ink);
242
- border: 1px solid var(--color-ink);
243
- border-radius: var(--radius-pill);
244
- transition: background-color var(--dur-micro) var(--ease-out);
245
- }
246
- .cta:hover { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-paper); }
247
-
248
- .cta--ghost {
249
- color: var(--color-ink);
250
- background: transparent;
251
- border-color: var(--color-rule-2);
252
- }
253
- .cta--ghost:hover { color: var(--color-paper); background: var(--color-ink); border-color: var(--color-ink); }
254
-
255
- /* — Concentric rings illustration ——————————————————— */
256
- .rings {
257
- position: relative;
258
- aspect-ratio: 1 / 1;
259
- width: 100%;
260
- max-width: 24rem;
261
- margin-inline: auto;
262
- justify-self: end;
263
- }
264
-
265
- .rings__svg {
266
- width: 100%;
267
- height: 100%;
268
- color: var(--color-accent);
269
- }
270
-
271
- .rings__center {
272
- position: absolute;
273
- top: 50%;
274
- left: 50%;
275
- width: 12px;
276
- height: 12px;
277
- margin: -6px 0 0 -6px;
278
- border-radius: 50%;
279
- background: var(--color-accent);
280
- box-shadow: 0 0 24px 6px color-mix(in oklch, var(--color-accent) 60%, transparent);
281
- animation: pulse 4s var(--ease-out) infinite;
282
- }
283
-
284
- @keyframes pulse {
285
- 0%, 100% { transform: scale(1); opacity: 1; }
286
- 50% { transform: scale(1.4); opacity: 0.85; }
287
- }
288
-
289
- @media (prefers-reduced-motion: reduce) {
290
- .rings__center { animation: none; }
291
- }
292
-
293
- /* — Two-minute section ————————————————————————————— */
294
- .two-min {
295
- padding-block: var(--space-3xl) var(--space-2xl);
296
- border-block-start: var(--rule-hair) solid var(--color-rule);
297
- display: grid;
298
- grid-template-columns: minmax(10rem, 14rem) minmax(0, 1fr);
299
- gap: var(--space-2xl);
300
- }
301
-
302
- @media (max-width: 56rem) {
303
- .two-min { grid-template-columns: 1fr; gap: var(--space-md); }
304
- }
305
-
306
- .two-min__label {
307
- font-family: var(--font-label);
308
- font-size: var(--text-xs);
309
- letter-spacing: var(--tracking-label);
310
- text-transform: uppercase;
311
- color: var(--color-muted);
312
- }
313
-
314
- .two-min__body {
315
- display: grid;
316
- gap: var(--space-md);
317
- }
318
-
319
- .two-min__title {
320
- font-family: var(--font-display);
321
- font-weight: 500;
322
- font-size: clamp(1.875rem, 3.5vw + 0.5rem, 3rem);
323
- line-height: var(--lh-snug);
324
- letter-spacing: var(--tracking-tight);
325
- color: var(--color-ink);
326
- max-width: 28ch;
327
- }
328
-
329
- .two-min__title em {
330
- font-style: italic;
331
- font-family: var(--font-serif);
332
- font-weight: 400;
333
- color: var(--color-accent);
334
- }
335
-
336
- .two-min__steps {
337
- list-style: none;
338
- padding: 0;
339
- display: grid;
340
- border-block-start: var(--rule-hair) solid var(--color-rule);
341
- margin-block-start: var(--space-md);
342
- }
343
-
344
- .two-min__step {
345
- display: grid;
346
- grid-template-columns: 4rem minmax(0, 1fr);
347
- gap: var(--space-md);
348
- align-items: baseline;
349
- padding-block: var(--space-md);
350
- border-block-end: var(--rule-hair) solid var(--color-rule);
351
- }
352
-
353
- .two-min__step-num {
354
- font-family: var(--font-display);
355
- font-weight: 500;
356
- font-size: var(--text-xl);
357
- color: var(--color-accent);
358
- font-feature-settings: "tnum";
359
- }
360
-
361
- .two-min__step-body {
362
- font-family: var(--font-body);
363
- font-size: var(--text-md);
364
- line-height: var(--lh-relaxed);
365
- color: var(--color-ink-2);
366
- }
367
-
368
- .two-min__step-body strong { color: var(--color-ink); font-weight: 600; }
369
-
370
- /* — Forgetting band ——————————————————————————————— */
371
- .forget {
372
- padding-block: var(--space-3xl);
373
- border-block-start: var(--rule-hair) solid var(--color-rule);
374
- border-block-end: var(--rule-hair) solid var(--color-rule);
375
- text-align: center;
376
- }
377
-
378
- .forget__phrase {
379
- font-family: var(--font-display);
380
- font-weight: 600;
381
- font-size: clamp(1.875rem, 4vw + 0.5rem, 3.25rem);
382
- line-height: var(--lh-snug);
383
- letter-spacing: var(--tracking-tight);
384
- color: var(--color-ink);
385
- max-width: 30ch;
386
- margin-inline: auto;
387
- }
388
-
389
- .forget__phrase em {
390
- font-style: italic;
391
- font-family: var(--font-serif);
392
- font-weight: 400;
393
- color: var(--color-accent);
394
- }
395
-
396
- /* — Privacy ledger ————————————————————————————————— */
397
- .privacy {
398
- padding-block: var(--space-3xl) var(--space-2xl);
399
- display: grid;
400
- grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
401
- gap: var(--space-2xl);
402
- }
403
-
404
- @media (max-width: 56rem) {
405
- .privacy { grid-template-columns: 1fr; gap: var(--space-md); }
406
- }
407
-
408
- .privacy__head {
409
- display: grid;
410
- gap: var(--space-md);
411
- align-content: start;
412
- }
413
-
414
- .privacy__label {
415
- font-family: var(--font-label);
416
- font-size: var(--text-xs);
417
- letter-spacing: var(--tracking-label);
418
- text-transform: uppercase;
419
- color: var(--color-muted);
420
- }
421
-
422
- .privacy__title {
423
- font-family: var(--font-display);
424
- font-weight: 500;
425
- font-size: var(--text-2xl);
426
- line-height: var(--lh-snug);
427
- letter-spacing: var(--tracking-tight);
428
- color: var(--color-ink);
429
- max-width: 18ch;
430
- }
431
-
432
- .privacy__title em {
433
- font-style: italic;
434
- font-family: var(--font-serif);
435
- font-weight: 400;
436
- color: var(--color-accent);
437
- }
438
-
439
- .privacy__list {
440
- list-style: none;
441
- padding: 0;
442
- display: grid;
443
- gap: 0;
444
- border-block-start: var(--rule-hair) solid var(--color-rule);
445
- }
446
-
447
- .privacy__row {
448
- display: grid;
449
- grid-template-columns: minmax(0, 1fr) auto;
450
- gap: var(--space-md);
451
- align-items: baseline;
452
- padding-block: var(--space-md);
453
- border-block-end: var(--rule-hair) solid var(--color-rule);
454
- font-family: var(--font-body);
455
- font-size: var(--text-md);
456
- color: var(--color-ink-2);
457
- }
458
-
459
- .privacy__row-key { color: var(--color-ink); font-weight: 500; }
460
-
461
- .privacy__row-value {
462
- font-family: var(--font-label);
463
- font-size: var(--text-xs);
464
- letter-spacing: var(--tracking-label);
465
- text-transform: uppercase;
466
- color: var(--color-accent);
467
- }
468
-
469
- /* — Colophon ————————————————————————————————————— */
470
- .colophon {
471
- margin-block-start: var(--space-2xl);
472
- padding-block: var(--space-xl) var(--space-md);
473
- border-block-start: var(--rule-hair) solid var(--color-rule);
474
- display: grid;
475
- gap: var(--space-md);
476
- font-family: var(--font-label);
477
- font-size: var(--text-xs);
478
- letter-spacing: var(--tracking-label);
479
- text-transform: uppercase;
480
- color: var(--color-muted);
481
- }
482
-
483
- .colophon__row {
484
- display: flex;
485
- justify-content: space-between;
486
- flex-wrap: wrap;
487
- gap: var(--space-md);
488
- }
489
-
490
- .colophon strong { color: var(--color-ink); font-weight: 500; }
491
- </style>
492
- </head>
493
- <body>
494
-
495
- <main>
496
-
497
- <header class="masthead">
498
- <span class="masthead__wordmark">Alma</span>
499
- <nav class="masthead__nav" aria-label="Primary">
500
- <a href="#how">How it works</a>
501
- <a href="#privacy">Privacy</a>
502
- <a href="#install">Get it</a>
503
- </nav>
504
- </header>
505
-
506
- <section class="hero" aria-labelledby="h-quote">
507
- <div class="hero__copy">
508
- <p class="hero__eyebrow">A voice journal</p>
509
- <blockquote class="hero__quote">
510
- <p id="h-quote">"Two minutes a day. The <em>dark</em> holds the rest."</p>
511
- </blockquote>
512
- <p class="hero__attrib">— What Alma is</p>
513
- <p class="hero__lede">
514
- Speak for two minutes on the way home. Alma transcribes the audio, leaves the file in your private library, and forgets the entry after a year — unless you say keep it. There is no feed. No share button. No coach.
515
- </p>
516
- <div class="hero__cta-row">
517
- <a class="cta" href="#install">Open Alma &rarr;</a>
518
- <a class="cta cta--ghost" href="#privacy">Read the privacy ledger</a>
519
- </div>
520
- </div>
521
-
522
- <figure class="rings" aria-hidden="true">
523
- <svg class="rings__svg" viewBox="0 0 240 240" fill="none" stroke="currentColor">
524
- <circle cx="120" cy="120" r="110" stroke-width="0.6" stroke-opacity="0.5" />
525
- <circle cx="120" cy="120" r="86" stroke-width="0.7" stroke-opacity="0.65" />
526
- <circle cx="120" cy="120" r="62" stroke-width="0.85" stroke-opacity="0.8" />
527
- <circle cx="120" cy="120" r="38" stroke-width="1" stroke-opacity="0.9" />
528
- <circle cx="120" cy="120" r="16" stroke-width="1.2" />
529
- </svg>
530
- <span class="rings__center"></span>
531
- </figure>
532
- </section>
533
-
534
- <section class="two-min" id="how" aria-labelledby="t-title">
535
- <p class="two-min__label">02 / The two minutes</p>
536
- <div class="two-min__body">
537
- <h2 class="two-min__title" id="t-title">Speak. Alma <em>writes it down</em>. The session ends on its own.</h2>
538
- <ol class="two-min__steps">
539
- <li class="two-min__step">
540
- <span class="two-min__step-num">i</span>
541
- <p class="two-min__step-body"><strong>Open Alma. Tap the dot.</strong> The dot pulses for two minutes, then stops. There is no countdown ring.</p>
542
- </li>
543
- <li class="two-min__step">
544
- <span class="two-min__step-num">ii</span>
545
- <p class="two-min__step-body"><strong>Speak.</strong> Whatever's on your mind. The transcription happens on-device — the audio never leaves your phone.</p>
546
- </li>
547
- <li class="two-min__step">
548
- <span class="two-min__step-num">iii</span>
549
- <p class="two-min__step-body"><strong>The dot stops.</strong> Alma saves the transcript and the audio to your private library. You can mark "keep" or do nothing — the default is forget.</p>
550
- </li>
551
- </ol>
552
- </div>
553
- </section>
554
-
555
- <section class="forget" aria-hidden="true">
556
- <p class="forget__phrase">After 365 days, Alma <em>forgets</em> what you didn't keep.</p>
557
- </section>
558
-
559
- <section class="privacy" id="privacy" aria-labelledby="p-title">
560
- <header class="privacy__head">
561
- <p class="privacy__label">04 / The ledger</p>
562
- <h2 class="privacy__title" id="p-title">What stays on your <em>phone</em>. What never leaves.</h2>
563
- </header>
564
- <ul class="privacy__list">
565
- <li class="privacy__row"><span class="privacy__row-key">Audio recording</span><span class="privacy__row-value">on device only</span></li>
566
- <li class="privacy__row"><span class="privacy__row-key">Transcription</span><span class="privacy__row-value">on device only</span></li>
567
- <li class="privacy__row"><span class="privacy__row-key">Library backup</span><span class="privacy__row-value">end-to-end encrypted</span></li>
568
- <li class="privacy__row"><span class="privacy__row-key">Analytics</span><span class="privacy__row-value">none collected</span></li>
569
- <li class="privacy__row"><span class="privacy__row-key">Default retention</span><span class="privacy__row-value">365 days, then forget</span></li>
570
- </ul>
571
- </section>
572
-
573
- <footer class="colophon" id="install">
574
- <div class="colophon__row">
575
- <p>Alma <strong>· iOS 17+ · Free until summer</strong></p>
576
- <p>v0.4 · 2026</p>
577
- </div>
578
- <div class="colophon__row">
579
- <p>Set in <strong>Geist</strong> &amp; <strong>Newsreader italic</strong>.</p>
580
- <p>The dark holds the rest.</p>
581
- </div>
582
- </footer>
583
-
584
- </main>
585
-
586
- </body>
587
- </html>