howone 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/package.json +1 -1
  2. package/templates/vite/.howone/skills/hallmark/SKILL.md +48 -42
  3. package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +12 -6
  4. package/templates/vite/.howone/skills/hallmark/references/assets.md +7 -0
  5. package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +19 -10
  6. package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +1 -1
  7. package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +1 -1
  8. package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +1 -1
  9. package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +1 -1
  10. package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +1 -1
  11. package/templates/vite/.howone/skills/hallmark/references/components/n11-mega-menu.md +40 -0
  12. package/templates/vite/.howone/skills/hallmark/references/components/n12-banner-retract.md +34 -0
  13. package/templates/vite/.howone/skills/hallmark/references/components/n13-inline-cmdk-pill.md +39 -0
  14. package/templates/vite/.howone/skills/hallmark/references/components/n1b-saas-three-section.md +35 -0
  15. package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +1 -1
  16. package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +2 -2
  17. package/templates/vite/.howone/skills/hallmark/references/copy.md +8 -8
  18. package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +2 -2
  19. package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +50 -12
  20. package/templates/vite/.howone/skills/hallmark/references/export-formats.md +1 -1
  21. package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +11 -7
  22. package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +6 -4
  23. package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +10 -6
  24. package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +15 -10
  25. package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +13 -12
  26. package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +2 -1
  27. package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +4 -3
  28. package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +3 -1
  29. package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +1 -1
  30. package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +1 -1
  31. package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +1 -3
  32. package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +12 -12
  33. package/templates/vite/.howone/skills/hallmark/references/responsive.md +8 -8
  34. package/templates/vite/.howone/skills/hallmark/references/slop-test.md +72 -85
  35. package/templates/vite/.howone/skills/hallmark/references/structure.md +9 -13
  36. package/templates/vite/.howone/skills/hallmark/references/study.md +40 -17
  37. package/templates/vite/.howone/skills/hallmark/references/themes/carnival.md +301 -0
  38. package/templates/vite/.howone/skills/hallmark/references/themes/cobalt.md +146 -0
  39. package/templates/vite/.howone/skills/hallmark/references/themes/hum.md +403 -0
  40. package/templates/vite/.howone/skills/hallmark/references/themes/lumen.md +478 -0
  41. package/templates/vite/.howone/skills/hallmark/references/typography.md +3 -3
  42. package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +1 -1
  43. package/templates/vite/.howone/skills/howone/03-sdk/07-ai-action-calls.md +28 -86
  44. package/templates/vite/.howone/skills/howone/03-sdk/09-workflow-execute-sse.md +105 -0
  45. package/templates/vite/.howone/skills/howone/04-ai/03-ai-sdk-handoff.md +15 -13
  46. package/templates/vite/.howone/skills/howone/SKILL.md +2 -2
  47. package/templates/vite/package.json +1 -1
  48. package/templates/vite/.howone/skills/hallmark/LICENSE +0 -21
  49. package/templates/vite/.howone/skills/hallmark/README.md +0 -147
  50. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +0 -201
  51. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +0 -186
  52. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  53. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  54. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  55. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  56. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  57. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  58. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  59. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  60. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +0 -176
  61. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +0 -364
  62. package/templates/vite/.howone/skills/hallmark/package.json +0 -36
  63. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  64. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +0 -71
  65. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +0 -64
  66. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +0 -240
  67. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +0 -65
  68. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +0 -105
  69. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +0 -250
  70. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +0 -64
  71. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +0 -131
  72. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +0 -240
  73. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +0 -67
  74. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +0 -86
  75. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +0 -262
  76. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +0 -63
  77. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +0 -167
  78. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +0 -457
  79. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +0 -65
  80. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +0 -159
  81. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +0 -288
  82. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +0 -64
  83. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +0 -146
  84. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +0 -484
  85. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +0 -64
  86. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +0 -116
  87. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +0 -354
  88. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +0 -638
  89. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +0 -515
  90. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +0 -515
  91. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +0 -608
  92. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +0 -587
  93. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +0 -157
  94. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  95. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  96. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  97. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  98. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  99. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  100. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  101. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  102. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  103. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  104. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  105. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  106. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  107. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  108. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  109. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  110. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  111. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  112. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  113. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  114. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  115. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  116. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +0 -77
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +0 -238
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +0 -110
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +0 -326
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +0 -134
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +0 -262
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +0 -30
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +0 -17
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +0 -56
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +0 -160
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +0 -29
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +0 -63
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +0 -72
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +0 -374
  131. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +0 -52
  132. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +0 -29
  133. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +0 -61
  134. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +0 -193
  135. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +0 -66
  136. package/templates/vite/.howone/skills/hallmark/site/css/base.css +0 -194
  137. package/templates/vite/.howone/skills/hallmark/site/css/components.css +0 -4886
  138. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +0 -2072
  139. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +0 -1129
  140. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +0 -475
  141. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +0 -1584
  142. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +0 -96
  143. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +0 -344
  144. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +0 -103
  145. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +0 -1103
  146. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +0 -83
  147. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +0 -368
  148. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +0 -133
  149. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +0 -1062
  150. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +0 -97
  151. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +0 -84
  152. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +0 -446
  153. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +0 -1087
  154. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +0 -101
  155. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +0 -359
  156. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +0 -1168
  157. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +0 -81
  158. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +0 -5
  159. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +0 -5
  160. package/templates/vite/.howone/skills/hallmark/site/index.html +0 -1043
  161. package/templates/vite/.howone/skills/hallmark/site/js/main.js +0 -1175
  162. package/templates/vite/.howone/skills/hallmark/vercel.json +0 -6
  163. package/templates/vite/.howone/skills/impeccable/SKILL.md +0 -168
  164. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +0 -101
  165. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +0 -190
  166. package/templates/vite/.howone/skills/impeccable/reference/animate.md +0 -175
  167. package/templates/vite/.howone/skills/impeccable/reference/audit.md +0 -133
  168. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +0 -113
  169. package/templates/vite/.howone/skills/impeccable/reference/brand.md +0 -118
  170. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +0 -174
  171. package/templates/vite/.howone/skills/impeccable/reference/codex.md +0 -105
  172. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +0 -106
  173. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +0 -105
  174. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +0 -154
  175. package/templates/vite/.howone/skills/impeccable/reference/craft.md +0 -123
  176. package/templates/vite/.howone/skills/impeccable/reference/critique.md +0 -273
  177. package/templates/vite/.howone/skills/impeccable/reference/delight.md +0 -302
  178. package/templates/vite/.howone/skills/impeccable/reference/distill.md +0 -111
  179. package/templates/vite/.howone/skills/impeccable/reference/document.md +0 -427
  180. package/templates/vite/.howone/skills/impeccable/reference/extract.md +0 -69
  181. package/templates/vite/.howone/skills/impeccable/reference/harden.md +0 -347
  182. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +0 -234
  183. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +0 -195
  184. package/templates/vite/.howone/skills/impeccable/reference/layout.md +0 -141
  185. package/templates/vite/.howone/skills/impeccable/reference/live.md +0 -622
  186. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +0 -109
  187. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +0 -234
  188. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +0 -258
  189. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +0 -130
  190. package/templates/vite/.howone/skills/impeccable/reference/personas.md +0 -179
  191. package/templates/vite/.howone/skills/impeccable/reference/polish.md +0 -242
  192. package/templates/vite/.howone/skills/impeccable/reference/product.md +0 -62
  193. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +0 -99
  194. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +0 -114
  195. package/templates/vite/.howone/skills/impeccable/reference/shape.md +0 -165
  196. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +0 -100
  197. package/templates/vite/.howone/skills/impeccable/reference/teach.md +0 -156
  198. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +0 -124
  199. package/templates/vite/.howone/skills/impeccable/reference/typography.md +0 -159
  200. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +0 -107
  201. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
  202. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +0 -94
  203. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +0 -242
  204. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +0 -820
  205. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +0 -198
  206. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +0 -21
  207. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +0 -110
  208. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +0 -69
  209. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +0 -595
  210. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +0 -123
  211. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +0 -4860
  212. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +0 -75
  213. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +0 -18
  214. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +0 -446
  215. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +0 -200
  216. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +0 -48
  217. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +0 -838
  218. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +0 -254
  219. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +0 -47
  220. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +0 -632
  221. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +0 -247
  222. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +0 -141
  223. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  224. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +0 -214
@@ -1,484 +0,0 @@
1
- /* Hallmark · macrostructure: Bento Grid · F1 bento knobs: tiles=6, spans=irregular, accent=corner-only
2
- * theme: Newsprint · accent: warm-deep-red ~3% · enrichment: tier-A CSS logo grid (8 mono wordmarks)
3
- * studied: no · context: explicit · v0.6.0
4
- */
5
-
6
- :root {
7
- --color-paper: oklch(95% 0.014 80);
8
- --color-paper-2: oklch(92% 0.016 80);
9
- --color-rule: oklch(78% 0.018 70);
10
- --color-ink: oklch(20% 0.014 50);
11
- --color-ink-soft: oklch(40% 0.014 50);
12
- --color-ink-muted: oklch(58% 0.014 50);
13
- --color-accent: oklch(48% 0.16 28);
14
- --color-accent-dim: oklch(60% 0.12 28);
15
-
16
- --font-display: "Source Serif 4", "Iowan Old Style", Georgia, serif;
17
- --font-body: "Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
18
- --font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, monospace;
19
-
20
- --space-3xs: 0.25rem;
21
- --space-2xs: 0.5rem;
22
- --space-xs: 0.75rem;
23
- --space-sm: 1rem;
24
- --space-md: 1.5rem;
25
- --space-lg: 2rem;
26
- --space-xl: 3rem;
27
- --space-2xl: 4.5rem;
28
- --space-3xl: 6.5rem;
29
-
30
- --radius-tile: 4px;
31
- --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
32
- --dur-micro: 120ms;
33
- --dur-short: 240ms;
34
- }
35
-
36
- * { box-sizing: border-box; }
37
- html, body { overflow-x: clip; }
38
-
39
- body {
40
- margin: 0;
41
- background: var(--color-paper);
42
- color: var(--color-ink);
43
- font-family: var(--font-body);
44
- font-size: 0.9375rem;
45
- line-height: 1.55;
46
- -webkit-font-smoothing: antialiased;
47
- }
48
-
49
- .page { max-width: 80rem; margin: 0 auto; padding: 0 var(--space-lg); }
50
-
51
- /* Masthead — newspaper banner */
52
- .masthead {
53
- display: grid;
54
- grid-template-columns: 1fr auto 1fr;
55
- align-items: center;
56
- padding: var(--space-md) 0;
57
- border-block-end: 3px double var(--color-ink);
58
- font-family: var(--font-mono);
59
- font-size: 0.75rem;
60
- letter-spacing: 0.06em;
61
- text-transform: uppercase;
62
- color: var(--color-ink-soft);
63
- }
64
-
65
- .masthead__brand {
66
- font-family: var(--font-display);
67
- font-size: 1.25rem;
68
- font-weight: 600;
69
- letter-spacing: -0.005em;
70
- color: var(--color-ink);
71
- text-transform: none;
72
- }
73
- .masthead__brand .dot { color: var(--color-accent); }
74
-
75
- .masthead__nav {
76
- display: flex;
77
- gap: var(--space-md);
78
- justify-content: end;
79
- }
80
-
81
- .masthead__nav a {
82
- color: var(--color-ink-soft);
83
- text-decoration: none;
84
- transition: color var(--dur-micro) var(--ease-out);
85
- }
86
-
87
- .masthead__nav a:hover, .masthead__nav a:focus-visible { color: var(--color-accent); }
88
- .masthead__nav a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
89
-
90
- /* Hero */
91
- .hero {
92
- display: grid;
93
- grid-template-columns: 1.4fr 1fr;
94
- gap: var(--space-2xl);
95
- align-items: end;
96
- padding: var(--space-3xl) 0 var(--space-2xl);
97
- border-block-end: 1px solid var(--color-rule);
98
- }
99
-
100
- .hero__copy { max-width: 36rem; }
101
-
102
- .hero__eyebrow {
103
- font-family: var(--font-mono);
104
- font-size: 0.75rem;
105
- letter-spacing: 0.12em;
106
- text-transform: uppercase;
107
- color: var(--color-accent);
108
- margin: 0 0 var(--space-md);
109
- }
110
-
111
- .hero__head {
112
- font-family: var(--font-display);
113
- font-size: clamp(2.5rem, 6vw, 4.5rem);
114
- font-weight: 600;
115
- line-height: 1.02;
116
- letter-spacing: -0.02em;
117
- margin: 0 0 var(--space-md);
118
- color: var(--color-ink);
119
- }
120
-
121
- .hero__head em { font-style: italic; color: var(--color-accent); }
122
-
123
- .hero__sub {
124
- font-family: var(--font-body);
125
- font-size: 1.0625rem;
126
- line-height: 1.6;
127
- color: var(--color-ink-soft);
128
- margin: 0 0 var(--space-lg);
129
- max-width: 56ch;
130
- }
131
-
132
- .hero__cta { display: flex; gap: var(--space-sm); flex-wrap: wrap; }
133
-
134
- .btn {
135
- display: inline-flex;
136
- align-items: center;
137
- gap: 0.5ch;
138
- padding: var(--space-sm) var(--space-md);
139
- font-family: var(--font-body);
140
- font-size: 0.9375rem;
141
- font-weight: 500;
142
- text-decoration: none;
143
- border: 1px solid var(--color-rule);
144
- background: transparent;
145
- color: var(--color-ink);
146
- cursor: pointer;
147
- line-height: 1;
148
- border-radius: 2px;
149
- transition: background var(--dur-micro) var(--ease-out),
150
- border-color var(--dur-micro) var(--ease-out),
151
- color var(--dur-micro) var(--ease-out);
152
- }
153
-
154
- .btn--primary { background: var(--color-accent); color: var(--color-paper); border-color: var(--color-accent); }
155
- .btn--primary:hover, .btn--primary:focus-visible { background: var(--color-ink); border-color: var(--color-ink); }
156
- .btn:hover, .btn:focus-visible { border-color: var(--color-accent); color: var(--color-accent); }
157
- .btn--primary:hover, .btn--primary:focus-visible { color: var(--color-paper); }
158
- .btn:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
159
-
160
- /* Hero pull-quote panel */
161
- .hero__pull {
162
- background: var(--color-paper-2);
163
- border-inline-start: 3px solid var(--color-accent);
164
- padding: var(--space-md);
165
- font-family: var(--font-display);
166
- }
167
-
168
- .hero__pull-quote {
169
- font-style: italic;
170
- font-size: 1.125rem;
171
- line-height: 1.45;
172
- color: var(--color-ink);
173
- margin: 0 0 var(--space-sm);
174
- }
175
-
176
- .hero__pull-attr {
177
- font-family: var(--font-mono);
178
- font-size: 0.75rem;
179
- letter-spacing: 0.06em;
180
- color: var(--color-ink-soft);
181
- font-style: normal;
182
- }
183
-
184
- /* Bento grid */
185
- .bento {
186
- padding: var(--space-2xl) 0;
187
- display: grid;
188
- grid-template-columns: repeat(6, 1fr);
189
- gap: var(--space-md);
190
- border-block-end: 1px solid var(--color-rule);
191
- }
192
-
193
- .tile {
194
- background: var(--color-paper-2);
195
- border: 1px solid var(--color-rule);
196
- border-radius: var(--radius-tile);
197
- padding: var(--space-lg);
198
- display: flex;
199
- flex-direction: column;
200
- gap: var(--space-sm);
201
- position: relative;
202
- }
203
-
204
- .tile__corner {
205
- position: absolute;
206
- inset-block-start: 0;
207
- inset-inline-end: 0;
208
- width: 1.5rem;
209
- height: 1.5rem;
210
- background: var(--color-accent);
211
- clip-path: polygon(100% 0, 0 0, 100% 100%);
212
- }
213
-
214
- .tile__label {
215
- font-family: var(--font-mono);
216
- font-size: 0.75rem;
217
- letter-spacing: 0.12em;
218
- text-transform: uppercase;
219
- color: var(--color-ink-soft);
220
- }
221
-
222
- .tile__head {
223
- font-family: var(--font-display);
224
- font-size: 1.5rem;
225
- font-weight: 600;
226
- line-height: 1.1;
227
- letter-spacing: -0.015em;
228
- color: var(--color-ink);
229
- margin: 0;
230
- }
231
-
232
- .tile__body {
233
- font-size: 0.9375rem;
234
- line-height: 1.55;
235
- color: var(--color-ink-soft);
236
- }
237
-
238
- .tile--stat { grid-column: span 3; grid-row: span 2; display: grid; grid-template-rows: auto 1fr auto; }
239
- .tile--logos { grid-column: span 3; }
240
- .tile--pricing { grid-column: span 3; }
241
- .tile--testimonial { grid-column: span 3; }
242
- .tile--features { grid-column: span 3; }
243
- .tile--faq { grid-column: span 3; }
244
-
245
- /* Big stat tile */
246
- .tile__stat {
247
- font-family: var(--font-display);
248
- font-size: clamp(5rem, 14vw, 11rem);
249
- font-weight: 600;
250
- line-height: 0.9;
251
- letter-spacing: -0.03em;
252
- color: var(--color-ink);
253
- margin: var(--space-lg) 0;
254
- }
255
-
256
- .tile__stat-dot { color: var(--color-accent); }
257
-
258
- .tile__stat-cap {
259
- font-family: var(--font-display);
260
- font-size: 1.125rem;
261
- font-style: italic;
262
- color: var(--color-ink-soft);
263
- margin: 0;
264
- line-height: 1.4;
265
- }
266
-
267
- /* Logo grid */
268
- .logos {
269
- display: grid;
270
- grid-template-columns: repeat(4, 1fr);
271
- gap: var(--space-sm);
272
- margin-block-start: var(--space-sm);
273
- }
274
-
275
- .logos__item {
276
- border: 1px solid var(--color-rule);
277
- border-radius: 2px;
278
- padding: var(--space-md) var(--space-sm);
279
- text-align: center;
280
- font-family: var(--font-display);
281
- font-size: 0.875rem;
282
- font-weight: 600;
283
- letter-spacing: 0.04em;
284
- color: var(--color-ink);
285
- background: var(--color-paper);
286
- }
287
-
288
- .logos__item .dot { color: var(--color-accent); }
289
-
290
- /* Pricing tile */
291
- .tiers {
292
- display: grid;
293
- grid-template-columns: repeat(3, 1fr);
294
- gap: var(--space-sm);
295
- margin-block-start: var(--space-sm);
296
- }
297
-
298
- .tier-card {
299
- border: 1px solid var(--color-rule);
300
- border-radius: 2px;
301
- padding: var(--space-sm);
302
- background: var(--color-paper);
303
- }
304
-
305
- .tier-card--feature {
306
- border-color: var(--color-accent);
307
- border-width: 2px;
308
- position: relative;
309
- }
310
-
311
- .tier-card--feature::before {
312
- content: "popular";
313
- position: absolute;
314
- inset-inline-end: -1px;
315
- inset-block-start: -10px;
316
- background: var(--color-accent);
317
- color: var(--color-paper);
318
- font-family: var(--font-mono);
319
- font-size: 0.625rem;
320
- letter-spacing: 0.08em;
321
- text-transform: uppercase;
322
- padding: 2px 6px;
323
- border-radius: 2px;
324
- }
325
-
326
- .tier-card__name {
327
- font-family: var(--font-mono);
328
- font-size: 0.6875rem;
329
- letter-spacing: 0.1em;
330
- text-transform: uppercase;
331
- color: var(--color-ink-soft);
332
- margin: 0 0 var(--space-3xs);
333
- }
334
-
335
- .tier-card__price {
336
- font-family: var(--font-display);
337
- font-size: 1.25rem;
338
- font-weight: 600;
339
- color: var(--color-ink);
340
- margin: 0;
341
- }
342
-
343
- .tier-card__per {
344
- font-family: var(--font-body);
345
- font-size: 0.75rem;
346
- color: var(--color-ink-soft);
347
- font-weight: 400;
348
- }
349
-
350
- /* Testimonial tile */
351
- .tile__quote {
352
- font-family: var(--font-display);
353
- font-style: italic;
354
- font-size: 1.125rem;
355
- line-height: 1.4;
356
- margin: 0;
357
- color: var(--color-ink);
358
- }
359
-
360
- .tile__attr {
361
- font-family: var(--font-mono);
362
- font-size: 0.75rem;
363
- letter-spacing: 0.04em;
364
- color: var(--color-ink-soft);
365
- margin: var(--space-sm) 0 0;
366
- }
367
-
368
- .tile__attr strong { color: var(--color-ink); font-weight: 500; }
369
-
370
- /* Features tile (compact list) */
371
- .feat-list {
372
- list-style: none;
373
- padding: 0;
374
- margin: 0;
375
- display: grid;
376
- gap: var(--space-2xs);
377
- }
378
-
379
- .feat-list li {
380
- display: grid;
381
- grid-template-columns: 4ch 1fr;
382
- gap: var(--space-2xs);
383
- font-size: 0.875rem;
384
- color: var(--color-ink);
385
- }
386
-
387
- .feat-list .num {
388
- font-family: var(--font-mono);
389
- color: var(--color-accent);
390
- font-size: 0.8125rem;
391
- }
392
-
393
- /* FAQ tile */
394
- .faq-list {
395
- list-style: none;
396
- padding: 0;
397
- margin: 0;
398
- display: grid;
399
- gap: var(--space-2xs);
400
- }
401
-
402
- .faq-list li {
403
- font-family: var(--font-display);
404
- font-size: 1rem;
405
- font-weight: 500;
406
- color: var(--color-ink);
407
- border-block-end: 1px solid var(--color-rule);
408
- padding-block-end: var(--space-2xs);
409
- }
410
-
411
- .faq-list li:last-child { border-block-end: none; }
412
-
413
- .faq-list a {
414
- color: inherit;
415
- text-decoration: none;
416
- display: flex;
417
- justify-content: space-between;
418
- align-items: baseline;
419
- gap: var(--space-sm);
420
- transition: color var(--dur-micro) var(--ease-out);
421
- }
422
-
423
- .faq-list a::after { content: "↗"; color: var(--color-accent); font-family: var(--font-body); }
424
-
425
- .faq-list a:hover, .faq-list a:focus-visible { color: var(--color-accent); }
426
- .faq-list a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
427
-
428
- /* Final CTA strip */
429
- .cta-strip {
430
- padding: var(--space-2xl) 0;
431
- display: grid;
432
- grid-template-columns: 1fr auto;
433
- gap: var(--space-lg);
434
- align-items: center;
435
- border-block-end: 1px solid var(--color-rule);
436
- }
437
-
438
- .cta-strip__head {
439
- font-family: var(--font-display);
440
- font-size: clamp(1.75rem, 3.5vw, 2.5rem);
441
- font-weight: 600;
442
- letter-spacing: -0.015em;
443
- line-height: 1.1;
444
- margin: 0;
445
- color: var(--color-ink);
446
- }
447
-
448
- .cta-strip__head em { font-style: italic; color: var(--color-accent); }
449
-
450
- .cta-strip__cta { display: flex; gap: var(--space-sm); }
451
-
452
- /* Colophon */
453
- .colophon {
454
- padding: var(--space-md) 0;
455
- display: flex;
456
- justify-content: space-between;
457
- flex-wrap: wrap;
458
- gap: var(--space-sm);
459
- font-family: var(--font-mono);
460
- font-size: 0.75rem;
461
- letter-spacing: 0.06em;
462
- text-transform: uppercase;
463
- color: var(--color-ink-soft);
464
- }
465
-
466
- .colophon a { color: var(--color-ink-soft); text-decoration: none; transition: color var(--dur-micro) var(--ease-out); }
467
- .colophon a:hover, .colophon a:focus-visible { color: var(--color-accent); }
468
- .colophon a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
469
-
470
- @media (max-width: 64rem) {
471
- .bento { grid-template-columns: 1fr 1fr; }
472
- .tile--stat, .tile--logos, .tile--pricing, .tile--testimonial, .tile--features, .tile--faq { grid-column: span 2; grid-row: auto; }
473
- }
474
-
475
- @media (max-width: 48rem) {
476
- .hero { grid-template-columns: 1fr; }
477
- .bento { grid-template-columns: 1fr; }
478
- .tile--stat, .tile--logos, .tile--pricing, .tile--testimonial, .tile--features, .tile--faq { grid-column: span 1; }
479
- .logos { grid-template-columns: repeat(2, 1fr); }
480
- .tiers { grid-template-columns: 1fr; }
481
- .cta-strip { grid-template-columns: 1fr; }
482
- .masthead { grid-template-columns: 1fr; gap: var(--space-2xs); text-align: center; }
483
- .masthead__nav { justify-content: center; }
484
- }
@@ -1,64 +0,0 @@
1
- # Test 08 v2 — Cohort (cohort-based courses platform)
2
-
3
- ## The prompt (verbatim, same as v1)
4
-
5
- > "Build a landing page for Cohort — the platform for cohort-based courses. Run live courses with 30 to 500 students. Built for educators, not LMS sales teams. Audience: course operators + indie creators. Tone: warm, salon-room, editorial."
6
-
7
- ## Step 0 · Pre-flight
8
-
9
- > *"No pre-flight signals — proceeding with full Hallmark stack."*
10
-
11
- ## Step 1 · Design-context gate — fully answered
12
-
13
- Audience, use, tone all explicit.
14
-
15
- ## Step 2.5 · Project memory rotation
16
-
17
- > *"Previous run on this brief picked Marquee Hero + Salon + Tier-A continuous marquee. Picking from {Stat-Led, Long Document, Workbench} for the macro this time — Stat-Led wins because the brief itself leads with a number range ('30 to 500 students'); a stat hero answers the brief literally."*
18
- >
19
- > *"Theme rotation: Salon (light · mono-display · warm-amber) → Linen (light · geometric-sans · warm-amber). Differs on display style. Accent stays warm-amber. One axis differs — passes (the rule requires at least one)."*
20
-
21
- ## Step 3 · Visual ruleset loaded
22
-
23
- `macrostructures.md` (Stat-Led), `component-cookbook.md` (H8 huge-stat hero, three-stat supporting row, testimonial-card), `typography.md` (Linen pairing — Inter Tight display + Inter Tight body), `color.md` (Linen palette — warm beige, warm-amber accent), `microinteractions.md` (default-on for marketing — counter on hero stat, no marquee), `anti-patterns.md`.
24
-
25
- ## Step 4 · Hero enrichment
26
-
27
- > *"Enrichment: none (typography only). The brief's range '30–500' is itself the visual — set it at 22 rem and the page can carry the rest typographically. No marquee (v1 had it; the rotation rule pushes us off it). No mockup (the page isn't selling a screen)."*
28
-
29
- ## Step 5 · Preview
30
-
31
- ```markdown
32
- **Hallmark · v0.6.0**
33
-
34
- - **Macrostructure** · Stat-Led
35
- - **Theme** · Linen (warm beige paper · Inter Tight geometric-sans · warm-amber accent ~3%)
36
- - **Enrichment** · none (typography only — the range "30–500" is the visual)
37
- - **Sections** · Masthead · Hero stat · Three supporting stats · Two operator testimonials · Two-tier pricing · CTA · Colophon
38
- - **Motion** · counter on hero stat (1 primitive)
39
- - **Slop test** · 38 / 38 ✓
40
- - **Diversification** · differs from v1 (Marquee Hero/Salon) on macrostructure + display style
41
- ```
42
-
43
- ## Step 6 · Macrostructure stamp
44
-
45
- ```
46
- /* Hallmark · macrostructure: Stat-Led · H8 hero knobs: stat=range, size=22rem, weight=display-light
47
- * theme: Linen · accent: warm-amber ~3% · enrichment: none (typography only — the range is the visual)
48
- * studied: no · context: explicit · v0.6.0
49
- */
50
- ```
51
-
52
- ## What changed vs v1
53
-
54
- - **Macro:** Marquee Hero → Stat-Led. v1 led with a continuous-scroll marquee of course titles + instructor names; v2 leads with the brief's own range "30–500" sized at 22 rem. The rest of the page carries supporting stats and operator testimonials.
55
- - **Theme:** Salon → Linen. Both warm, both light. Salon was IBM Plex Mono display + Cormorant body (mono-display); Linen is Inter Tight throughout (geometric-sans). Display style differs.
56
- - **Enrichment:** v1's continuous marquee → v2's typography-only hero. Stat-Led can carry the page without a moving element.
57
- - **Voice:** v1 opened with "Cohort runs live courses the way your favourite teacher would — with a date, a roster, and a room"; v2 opens with the range first, voice in the supporting copy.
58
-
59
- ## What stayed the same
60
-
61
- - Brand: Cohort, course platform, educator audience.
62
- - Two-tier pricing (Run your first cohort / Scale).
63
- - Slop test: 38 / 38 ✓.
64
- - Warm paper band.
@@ -1,116 +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" />
6
- <title>Cohort — live courses for educators</title>
7
- <meta name="description" content="The platform for cohort-based courses. Run live courses with 30 to 500 students. Built for educators, not LMS sales teams." />
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=Inter+Tight:ital,wght@0,300;0,400;0,500;0,600;1,400&family=JetBrains+Mono:wght@400;500&display=swap" />
11
- <link rel="stylesheet" href="style.css" />
12
- </head>
13
- <body>
14
- <main class="page">
15
- <header class="masthead">
16
- <span class="masthead__brand">Cohort<span class="dot">.</span></span>
17
- <nav class="masthead__nav">
18
- <a href="#proof">Proof</a>
19
- <a href="#pricing">Pricing</a>
20
- <a href="#">Docs</a>
21
- <a href="#">Sign in</a>
22
- </nav>
23
- </header>
24
-
25
- <section class="hero">
26
- <p class="hero__eyebrow">Built for educators · not LMS sales teams</p>
27
- <p class="hero__stat">30 <span class="hero__stat-em">—</span> 500</p>
28
- <h1 class="hero__head">Live courses, sized for the <em>class</em> you actually have.</h1>
29
- <p class="hero__sub">
30
- Cohort runs courses with thirty to five hundred students at once — the size of a real
31
- classroom, the size of a real lecture, and a few sizes between. With a date, a roster, and
32
- a room.
33
- </p>
34
- <div class="hero__cta">
35
- <a class="btn btn--primary" href="#">Run your first cohort →</a>
36
- <a class="btn" href="#">90-second tour</a>
37
- </div>
38
- </section>
39
-
40
- <section class="support-stats" id="proof">
41
- <div class="s-stat">
42
- <p class="s-stat__num">186<em>.</em></p>
43
- <p class="s-stat__cap">cohorts run in 2025</p>
44
- <p class="s-stat__sub">across writing, design, engineering, healthcare and the humanities</p>
45
- </div>
46
- <div class="s-stat">
47
- <p class="s-stat__num">93<em>%</em></p>
48
- <p class="s-stat__cap">finish-rate, median</p>
49
- <p class="s-stat__sub">vs. 4–8 % on async-only platforms (industry studies, 2024)</p>
50
- </div>
51
- <div class="s-stat">
52
- <p class="s-stat__num">4.7<em>/5</em></p>
53
- <p class="s-stat__cap">operator NPS</p>
54
- <p class="s-stat__sub">among educators running their second-or-later cohort with us</p>
55
- </div>
56
- </section>
57
-
58
- <section class="tm">
59
- <article class="tm__card">
60
- <p class="tm__quote">
61
- "I was running courses on Notion + Zoom + a clipboard. Cohort folded the three of them
62
- into a single Tuesday-morning view. My ops time dropped sixty per cent the first month."
63
- </p>
64
- <p class="tm__attr">— <strong>D. Perell</strong>, writing instructor · 320 students this term</p>
65
- </article>
66
- <article class="tm__card">
67
- <p class="tm__quote">
68
- "We needed a roster, an attendance log, and a place to grade weekly assignments. Cohort
69
- gave us all three without a single Zapier. The students didn't even notice it existed."
70
- </p>
71
- <p class="tm__attr">— <strong>M. Poulin</strong>, course operator · two cohorts in parallel</p>
72
- </article>
73
- </section>
74
-
75
- <section class="pricing" id="pricing">
76
- <h2 class="pricing__head">Two plans, <em>both honest.</em></h2>
77
- <article class="tier">
78
- <p class="tier__name">First cohort</p>
79
- <p class="tier__price">$0 <span class="per">first run</span></p>
80
- <ul class="tier__list">
81
- <li>Up to 50 students</li>
82
- <li>One cohort, one term</li>
83
- <li>Live + recording, attendance, gradebook</li>
84
- <li>Stripe payouts (3 % platform fee)</li>
85
- </ul>
86
- <a class="btn" href="#">Start free</a>
87
- </article>
88
- <article class="tier tier--feature">
89
- <p class="tier__name">Operator</p>
90
- <p class="tier__price">$199 <span class="per">/ month</span></p>
91
- <ul class="tier__list">
92
- <li>Up to 500 students per cohort</li>
93
- <li>Unlimited cohorts</li>
94
- <li>Multi-instructor, TA roles, office hours</li>
95
- <li>Stripe payouts (1 % platform fee)</li>
96
- <li>Course library + alumni rooms</li>
97
- </ul>
98
- <a class="btn btn--primary" href="#">14-day trial</a>
99
- </article>
100
- </section>
101
-
102
- <section class="cta-strip">
103
- <h2 class="cta-strip__head">Pick a date. Open the roster. <em>Teach Tuesday.</em></h2>
104
- <div class="cta-strip__cta">
105
- <a class="btn btn--primary" href="#">Run your first cohort →</a>
106
- <a class="btn" href="#">Talk to us</a>
107
- </div>
108
- </section>
109
-
110
- <footer class="colophon">
111
- <span>Cohort · Lisbon &amp; Brooklyn · est. 2024</span>
112
- <span><a href="#">docs</a> · <a href="#">changelog</a> · <a href="#">support</a> · <a href="#">community</a></span>
113
- </footer>
114
- </main>
115
- </body>
116
- </html>