spirewise 1.7.1 → 1.9.0

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 (210) hide show
  1. package/README.md +0 -15
  2. package/bin/cli.js +63 -44
  3. package/install.sh +8 -8
  4. package/package.json +2 -4
  5. package/skills/README.md +0 -1
  6. package/skills/ai-agent-os-design-system/README.md +105 -0
  7. package/skills/ai-agent-os-design-system/SKILL.md +195 -0
  8. package/skills/ai-agent-os-design-system/accessibility-system.md +67 -0
  9. package/skills/ai-agent-os-design-system/color-system.md +102 -0
  10. package/skills/ai-agent-os-design-system/component-library.md +147 -0
  11. package/skills/ai-agent-os-design-system/design-principles.md +79 -0
  12. package/skills/ai-agent-os-design-system/example-page-structures.md +93 -0
  13. package/skills/ai-agent-os-design-system/layout-system.md +74 -0
  14. package/skills/ai-agent-os-design-system/motion-system.md +85 -0
  15. package/skills/ai-agent-os-design-system/spacing-system.md +87 -0
  16. package/skills/ai-agent-os-design-system/typography-system.md +91 -0
  17. package/skills/ai-agent-os-design-system/website-generation-rules.md +192 -0
  18. package/skills/ai-dark-futuristic-design-system/README.md +91 -0
  19. package/skills/ai-dark-futuristic-design-system/SKILL.md +179 -0
  20. package/skills/ai-dark-futuristic-design-system/accessibility-system.md +61 -0
  21. package/skills/ai-dark-futuristic-design-system/color-system.md +99 -0
  22. package/skills/ai-dark-futuristic-design-system/component-library.md +140 -0
  23. package/skills/ai-dark-futuristic-design-system/design-principles.md +66 -0
  24. package/skills/ai-dark-futuristic-design-system/example-page-structures.md +124 -0
  25. package/skills/ai-dark-futuristic-design-system/layout-system.md +85 -0
  26. package/skills/ai-dark-futuristic-design-system/motion-system.md +76 -0
  27. package/skills/ai-dark-futuristic-design-system/spacing-system.md +73 -0
  28. package/skills/ai-dark-futuristic-design-system/typography-system.md +89 -0
  29. package/skills/ai-dark-futuristic-design-system/website-generation-rules.md +220 -0
  30. package/skills/apple-premium-minimal-design-system/README.md +95 -0
  31. package/skills/apple-premium-minimal-design-system/SKILL.md +166 -0
  32. package/skills/apple-premium-minimal-design-system/accessibility-system.md +60 -0
  33. package/skills/apple-premium-minimal-design-system/color-system.md +100 -0
  34. package/skills/apple-premium-minimal-design-system/component-library.md +136 -0
  35. package/skills/apple-premium-minimal-design-system/design-principles.md +65 -0
  36. package/skills/apple-premium-minimal-design-system/example-page-structures.md +90 -0
  37. package/skills/apple-premium-minimal-design-system/layout-system.md +89 -0
  38. package/skills/apple-premium-minimal-design-system/motion-system.md +75 -0
  39. package/skills/apple-premium-minimal-design-system/spacing-system.md +73 -0
  40. package/skills/apple-premium-minimal-design-system/typography-system.md +86 -0
  41. package/skills/apple-premium-minimal-design-system/website-generation-rules.md +207 -0
  42. package/skills/bento-grid-design-system/README.md +97 -0
  43. package/skills/bento-grid-design-system/SKILL.md +185 -0
  44. package/skills/bento-grid-design-system/accessibility-system.md +54 -0
  45. package/skills/bento-grid-design-system/color-system.md +98 -0
  46. package/skills/bento-grid-design-system/component-library.md +138 -0
  47. package/skills/bento-grid-design-system/design-principles.md +72 -0
  48. package/skills/bento-grid-design-system/example-page-structures.md +91 -0
  49. package/skills/bento-grid-design-system/layout-system.md +93 -0
  50. package/skills/bento-grid-design-system/motion-system.md +81 -0
  51. package/skills/bento-grid-design-system/spacing-system.md +77 -0
  52. package/skills/bento-grid-design-system/typography-system.md +85 -0
  53. package/skills/bento-grid-design-system/website-generation-rules.md +193 -0
  54. package/skills/brutalist-tech-design-system/README.md +100 -0
  55. package/skills/brutalist-tech-design-system/SKILL.md +185 -0
  56. package/skills/brutalist-tech-design-system/accessibility-system.md +61 -0
  57. package/skills/brutalist-tech-design-system/color-system.md +101 -0
  58. package/skills/brutalist-tech-design-system/component-library.md +117 -0
  59. package/skills/brutalist-tech-design-system/design-principles.md +73 -0
  60. package/skills/brutalist-tech-design-system/example-page-structures.md +92 -0
  61. package/skills/brutalist-tech-design-system/layout-system.md +74 -0
  62. package/skills/brutalist-tech-design-system/motion-system.md +80 -0
  63. package/skills/brutalist-tech-design-system/spacing-system.md +86 -0
  64. package/skills/brutalist-tech-design-system/typography-system.md +94 -0
  65. package/skills/brutalist-tech-design-system/website-generation-rules.md +195 -0
  66. package/skills/crunchbase-profile-generator/README.md +64 -0
  67. package/skills/crunchbase-profile-generator/SKILL.md +189 -0
  68. package/skills/editorial-luxury-design-system/README.md +98 -0
  69. package/skills/editorial-luxury-design-system/SKILL.md +187 -0
  70. package/skills/editorial-luxury-design-system/accessibility-system.md +63 -0
  71. package/skills/editorial-luxury-design-system/color-system.md +95 -0
  72. package/skills/editorial-luxury-design-system/component-library.md +131 -0
  73. package/skills/editorial-luxury-design-system/design-principles.md +77 -0
  74. package/skills/editorial-luxury-design-system/example-page-structures.md +94 -0
  75. package/skills/editorial-luxury-design-system/layout-system.md +80 -0
  76. package/skills/editorial-luxury-design-system/motion-system.md +82 -0
  77. package/skills/editorial-luxury-design-system/spacing-system.md +77 -0
  78. package/skills/editorial-luxury-design-system/typography-system.md +107 -0
  79. package/skills/editorial-luxury-design-system/website-generation-rules.md +194 -0
  80. package/skills/enterprise-data-viz-design-system/README.md +98 -0
  81. package/skills/enterprise-data-viz-design-system/SKILL.md +195 -0
  82. package/skills/enterprise-data-viz-design-system/accessibility-system.md +68 -0
  83. package/skills/enterprise-data-viz-design-system/color-system.md +112 -0
  84. package/skills/enterprise-data-viz-design-system/component-library.md +142 -0
  85. package/skills/enterprise-data-viz-design-system/design-principles.md +75 -0
  86. package/skills/enterprise-data-viz-design-system/example-page-structures.md +89 -0
  87. package/skills/enterprise-data-viz-design-system/layout-system.md +75 -0
  88. package/skills/enterprise-data-viz-design-system/motion-system.md +86 -0
  89. package/skills/enterprise-data-viz-design-system/spacing-system.md +85 -0
  90. package/skills/enterprise-data-viz-design-system/typography-system.md +100 -0
  91. package/skills/enterprise-data-viz-design-system/website-generation-rules.md +196 -0
  92. package/skills/f6s-copywriting/README.md +16 -6
  93. package/skills/f6s-copywriting/SKILL.md +162 -46
  94. package/skills/glassmorphism-design-system/README.md +98 -0
  95. package/skills/glassmorphism-design-system/SKILL.md +190 -0
  96. package/skills/glassmorphism-design-system/accessibility-system.md +62 -0
  97. package/skills/glassmorphism-design-system/color-system.md +128 -0
  98. package/skills/glassmorphism-design-system/component-library.md +120 -0
  99. package/skills/glassmorphism-design-system/design-principles.md +77 -0
  100. package/skills/glassmorphism-design-system/example-page-structures.md +92 -0
  101. package/skills/glassmorphism-design-system/layout-system.md +81 -0
  102. package/skills/glassmorphism-design-system/motion-system.md +86 -0
  103. package/skills/glassmorphism-design-system/spacing-system.md +73 -0
  104. package/skills/glassmorphism-design-system/typography-system.md +90 -0
  105. package/skills/glassmorphism-design-system/website-generation-rules.md +195 -0
  106. package/skills/linkedin-copywriting/README.md +15 -8
  107. package/skills/linkedin-copywriting/SKILL.md +129 -51
  108. package/skills/motion-storytelling-design-system/README.md +100 -0
  109. package/skills/motion-storytelling-design-system/SKILL.md +191 -0
  110. package/skills/motion-storytelling-design-system/accessibility-system.md +71 -0
  111. package/skills/motion-storytelling-design-system/color-system.md +101 -0
  112. package/skills/motion-storytelling-design-system/component-library.md +122 -0
  113. package/skills/motion-storytelling-design-system/design-principles.md +81 -0
  114. package/skills/motion-storytelling-design-system/example-page-structures.md +91 -0
  115. package/skills/motion-storytelling-design-system/layout-system.md +79 -0
  116. package/skills/motion-storytelling-design-system/motion-system.md +116 -0
  117. package/skills/motion-storytelling-design-system/spacing-system.md +83 -0
  118. package/skills/motion-storytelling-design-system/typography-system.md +89 -0
  119. package/skills/motion-storytelling-design-system/website-generation-rules.md +200 -0
  120. package/skills/nvidia-inception-idea-booster/README.md +43 -24
  121. package/skills/nvidia-inception-idea-booster/SKILL.md +260 -116
  122. package/skills/nvidia-inception-starter/README.md +6 -5
  123. package/skills/nvidia-inception-starter/SKILL.md +80 -43
  124. package/skills/nvidia-product-inventor/README.md +44 -40
  125. package/skills/nvidia-product-inventor/SKILL.md +265 -247
  126. package/skills/nvidia-startup-idea-founder/README.md +66 -26
  127. package/skills/nvidia-startup-idea-founder/SKILL.md +245 -189
  128. package/skills/product-demo-first-design-system/README.md +96 -0
  129. package/skills/product-demo-first-design-system/SKILL.md +185 -0
  130. package/skills/product-demo-first-design-system/accessibility-system.md +58 -0
  131. package/skills/product-demo-first-design-system/color-system.md +109 -0
  132. package/skills/product-demo-first-design-system/component-library.md +142 -0
  133. package/skills/product-demo-first-design-system/design-principles.md +66 -0
  134. package/skills/product-demo-first-design-system/example-page-structures.md +95 -0
  135. package/skills/product-demo-first-design-system/layout-system.md +76 -0
  136. package/skills/product-demo-first-design-system/motion-system.md +82 -0
  137. package/skills/product-demo-first-design-system/spacing-system.md +74 -0
  138. package/skills/product-demo-first-design-system/typography-system.md +87 -0
  139. package/skills/product-demo-first-design-system/website-generation-rules.md +194 -0
  140. package/skills/website-design-skills/01-proof/README.md +0 -47
  141. package/skills/website-design-skills/01-proof/SKILL.md +0 -303
  142. package/skills/website-design-skills/02-kajabi/README.md +0 -42
  143. package/skills/website-design-skills/02-kajabi/SKILL.md +0 -272
  144. package/skills/website-design-skills/03-lattice/README.md +0 -42
  145. package/skills/website-design-skills/03-lattice/SKILL.md +0 -271
  146. package/skills/website-design-skills/04-petal/README.md +0 -42
  147. package/skills/website-design-skills/04-petal/SKILL.md +0 -271
  148. package/skills/website-design-skills/05-dropbox-sign/README.md +0 -42
  149. package/skills/website-design-skills/05-dropbox-sign/SKILL.md +0 -271
  150. package/skills/website-design-skills/06-distributional/README.md +0 -42
  151. package/skills/website-design-skills/06-distributional/SKILL.md +0 -271
  152. package/skills/website-design-skills/07-appcues/README.md +0 -42
  153. package/skills/website-design-skills/07-appcues/SKILL.md +0 -271
  154. package/skills/website-design-skills/08-memberstack/README.md +0 -42
  155. package/skills/website-design-skills/08-memberstack/SKILL.md +0 -271
  156. package/skills/website-design-skills/09-flank/README.md +0 -42
  157. package/skills/website-design-skills/09-flank/SKILL.md +0 -275
  158. package/skills/website-design-skills/10-slidebean/README.md +0 -42
  159. package/skills/website-design-skills/10-slidebean/SKILL.md +0 -275
  160. package/skills/website-design-skills/11-formstack/README.md +0 -42
  161. package/skills/website-design-skills/11-formstack/SKILL.md +0 -275
  162. package/skills/website-design-skills/12-thalamus/README.md +0 -42
  163. package/skills/website-design-skills/12-thalamus/SKILL.md +0 -275
  164. package/skills/website-design-skills/13-grow/README.md +0 -42
  165. package/skills/website-design-skills/13-grow/SKILL.md +0 -275
  166. package/skills/website-design-skills/14-gemnote/README.md +0 -42
  167. package/skills/website-design-skills/14-gemnote/SKILL.md +0 -275
  168. package/skills/website-design-skills/15-draftbit/README.md +0 -42
  169. package/skills/website-design-skills/15-draftbit/SKILL.md +0 -275
  170. package/skills/website-design-skills/16-payman/README.md +0 -42
  171. package/skills/website-design-skills/16-payman/SKILL.md +0 -273
  172. package/skills/website-design-skills/17-effortel/README.md +0 -42
  173. package/skills/website-design-skills/17-effortel/SKILL.md +0 -272
  174. package/skills/website-design-skills/18-adopt/README.md +0 -42
  175. package/skills/website-design-skills/18-adopt/SKILL.md +0 -273
  176. package/skills/website-design-skills/19-kraftful/README.md +0 -42
  177. package/skills/website-design-skills/19-kraftful/SKILL.md +0 -273
  178. package/skills/website-design-skills/20-greenhouse/README.md +0 -42
  179. package/skills/website-design-skills/20-greenhouse/SKILL.md +0 -273
  180. package/skills/website-design-skills/21-weavy/README.md +0 -42
  181. package/skills/website-design-skills/21-weavy/SKILL.md +0 -273
  182. package/skills/website-design-skills/22-safetykit/README.md +0 -42
  183. package/skills/website-design-skills/22-safetykit/SKILL.md +0 -273
  184. package/skills/website-design-skills/23-modulify/README.md +0 -42
  185. package/skills/website-design-skills/23-modulify/SKILL.md +0 -270
  186. package/skills/website-design-skills/24-realm/README.md +0 -42
  187. package/skills/website-design-skills/24-realm/SKILL.md +0 -270
  188. package/skills/website-design-skills/25-modyfi/README.md +0 -42
  189. package/skills/website-design-skills/25-modyfi/SKILL.md +0 -269
  190. package/skills/website-design-skills/26-altitude/README.md +0 -42
  191. package/skills/website-design-skills/26-altitude/SKILL.md +0 -270
  192. package/skills/website-design-skills/27-way/README.md +0 -42
  193. package/skills/website-design-skills/27-way/SKILL.md +0 -270
  194. package/skills/website-design-skills/28-zentail/README.md +0 -42
  195. package/skills/website-design-skills/28-zentail/SKILL.md +0 -270
  196. package/skills/website-design-skills/29-zams/README.md +0 -42
  197. package/skills/website-design-skills/29-zams/SKILL.md +0 -270
  198. package/skills/website-design-skills/30-user-interviews/README.md +0 -44
  199. package/skills/website-design-skills/30-user-interviews/SKILL.md +0 -273
  200. package/skills/website-design-skills/31-bland/README.md +0 -44
  201. package/skills/website-design-skills/31-bland/SKILL.md +0 -273
  202. package/skills/website-design-skills/32-nauto/README.md +0 -44
  203. package/skills/website-design-skills/32-nauto/SKILL.md +0 -273
  204. package/skills/website-design-skills/33-bill/README.md +0 -44
  205. package/skills/website-design-skills/33-bill/SKILL.md +0 -273
  206. package/skills/website-design-skills/34-localyzer/README.md +0 -44
  207. package/skills/website-design-skills/34-localyzer/SKILL.md +0 -273
  208. package/skills/website-design-skills/35-jasper/README.md +0 -44
  209. package/skills/website-design-skills/35-jasper/SKILL.md +0 -273
  210. package/skills/website-design-skills/README.md +0 -108
@@ -0,0 +1,94 @@
1
+ # Example Page Structures — Editorial Luxury
2
+
3
+ Ready-to-assemble, **editorial** page blueprints. Each section names a layout (see
4
+ `layout-system.md`) and components (see `component-library.md`). Compose on the asymmetric
5
+ grid with serif display type, kickers/decks/pull quotes/captions, and dramatic whitespace.
6
+ No borders between sections (separate by whitespace + alternating paper tone).
7
+
8
+ Legend: `EH-* / F-* / P-* / C-* / Q-* / FT-*` layouts · components by name.
9
+
10
+ ## MANDATORY: 15+ page site map (≈20), 10+ sections/page, clean URLs
11
+
12
+ Always ship a **full multipage website with 15+ pages (≈20)** — never a single landing
13
+ page. Every page carries **at least 10 sections (≈12)**, **no borders/dividers between
14
+ sections**, pure HTML/CSS/vanilla JS, **extensionless URLs**. Required 20-page map:
15
+
16
+ ```
17
+ / Home /customers Customers
18
+ /platform Platform /case-studies Case Studies
19
+ /solutions Solutions /developers Developers
20
+ /products Products /docs Documentation ← + DOC-A subpages
21
+ /features Features /about About / Story
22
+ /ai-agents AI Agents /careers Careers
23
+ /enterprise Enterprise /journal Journal (Blog) ← + article pages
24
+ /security Security /contact Contact
25
+ /pricing Pricing /partners Partners
26
+ /resources Resources /faq FAQ
27
+ ```
28
+
29
+ Each blueprint below is a **10-section** skeleton — extend toward 12, never fewer than 10.
30
+ Every page must include: **Hero (editorial) · Feature/Story Sections · Product Highlights
31
+ (plates) · Trust Signals · Testimonials (pull quotes) · Use Cases · Statistics (figures) ·
32
+ Integrations · CTA (chapter opener) · Footer.**
33
+
34
+ ---
35
+
36
+ ## 1. Home (default)
37
+ 1. **Navbar** (slim, quiet) — extensionless links
38
+ 2. **Hero** `EH-A` — kicker · large serif display H1 (offset) · deck · understated CTA ·
39
+ art-directed image (full-bleed `.bleed` below)
40
+ 3. **Logos / Press** — "As featured in" small-caps + refined logo row
41
+ 4. **Feature/Story** `F-B` alternating plates — image ↔ text, captions
42
+ 5. **Pull Quote** — large italic serif testimonial breaking the measure
43
+ 6. **Index** `F-C` — numbered editorial list of capabilities ("01 — …", hairline rows)
44
+ 7. **Statistics** — editorial figures (serif numbers, small-caps labels, count-up)
45
+ 8. **Feature essay** `F-A` — offset column, drop cap, a pull quote
46
+ 9. **Pricing** `P-A` (or teaser) — quiet typographic tiers
47
+ 10. **CTA** `C-A` chapter opener (on `--paper-ink` plate) + **Footer** `FT-A`
48
+
49
+ ## 2. About / Story (brand essay)
50
+ 1. Navbar · 2. **Hero** `EH-C` type-only opener · 3. Feature essay `F-A` (the story, drop
51
+ cap) · 4. Full-bleed plate + caption · 5. Pull quote · 6. **Index** (values/principles
52
+ "01–04") · 7. Statistics (figures) · 8. Team plates (image+caption grid) · 9. CTA chapter
53
+ opener · 10. Footer
54
+
55
+ ## 3. Platform / Product
56
+ 1. Navbar · 2. **Hero** `EH-A` (product plate) · 3. Feature plates `F-B` · 4. **Dashboard
57
+ Preview** (editorial plate + caption) · 5. Feature essay `F-A` · 6. Code Preview (inset) ·
58
+ 7. Use Cases · 8. Statistics · 9. Pull quote · 10. CTA + Footer
59
+
60
+ ## 4. Journal (blog) / Article
61
+ - **Journal index:** Navbar · Hero (kicker + serif title) · featured article plate · an
62
+ **index** of articles (F-C, image + kicker + serif title + date) · categories · pull
63
+ quote · newsletter · CTA · Footer (≥10).
64
+ - **Article:** offset reading column (`--container-text`), drop cap, pull quotes, figures
65
+ with captions/credits, related articles, breadcrumb. `NewsArticle` JSON-LD.
66
+
67
+ ## 5. Enterprise / Security
68
+ 1. Navbar · 2. Hero (outcome-led, serif) · 3. Logos/press · 4. Feature essay · 5.
69
+ **Enterprise** passage (value list, hairline rules) · 6. **Security** (compliance marks) ·
70
+ 7. Statistics/ROI · 8. Pull quote (exec) · 9. CTA "Speak with our team" · 10. Footer
71
+
72
+ ## 6. Pricing
73
+ 1. Navbar · 2. Hero (short, serif + toggle) · 3. **Pricing** `P-A` typographic tiers · 4.
74
+ Feature comparison (hairline-ruled list) · 5. Enterprise/bespoke note · 6. Logos · 7.
75
+ Statistics · 8. Pull quote · 9. **FAQ** `Q-A` (numbered, hairline rows) · 10. CTA + Footer
76
+
77
+ ## 7. Content pages (Careers, Customers, Case Studies, Partners, Resources, Contact, FAQ)
78
+ Reach **≥10 sections** with editorial composition: Hero → body sections (open roles list,
79
+ customer plates, case-study essay with pull quotes + figures, partner index, resource
80
+ cards, contact with a refined form) → Trust Signals → Pull Quote → Statistics →
81
+ Integrations → CTA chapter opener → Footer.
82
+
83
+ ---
84
+
85
+ ## Assembly notes
86
+ - **Scale is mandatory:** 15+ pages, **≥10 sections each**. Never a single/thin page.
87
+ - **Lead with serif display + dramatic whitespace**; compose asymmetrically on the grid;
88
+ use kickers, decks, pull quotes, captions, and numbered indices.
89
+ - **No borders/dividers between sections** — whitespace + alternating paper tone (and the
90
+ occasional `--paper-ink` plate). Hairlines only *inside* compositions.
91
+ - **Pace the reader:** vary density and image scale section to section (spacious → dense →
92
+ full-bleed → quiet quote) like a magazine.
93
+ - **Understated CTAs**; one accent moment per section at most; real, art-directed imagery
94
+ with captions/credits. Mark guesses `[PLACEHOLDER]`.
@@ -0,0 +1,80 @@
1
+ # Layout & Grid System — Editorial Luxury
2
+
3
+ A **12-column asymmetric editorial grid** + canonical magazine-style layouts. Compositions
4
+ are off-center and considered, with generous margins, columns, captions, and pull quotes.
5
+ **No borders between sections.**
6
+
7
+ ## Grid
8
+
9
+ ```css
10
+ :root { --grid-cols: 12; --grid-gap: var(--col-gap); }
11
+
12
+ .grid { display: grid; gap: var(--grid-gap);
13
+ grid-template-columns: repeat(var(--grid-cols), 1fr); }
14
+
15
+ /* Editorial column spans (asymmetric by design) */
16
+ .col-text { grid-column: 2 / 8; } /* offset reading column */
17
+ .col-wide { grid-column: 2 / 12; }
18
+ .col-left { grid-column: 1 / 7; }
19
+ .col-right { grid-column: 7 / 13; }
20
+ .col-aside { grid-column: 9 / 12; } /* margin notes / captions */
21
+ .col-full { grid-column: 1 / -1; }
22
+
23
+ @media (max-width: 900px){
24
+ .col-text,.col-wide,.col-left,.col-right,.col-aside { grid-column: 1 / -1; }
25
+ }
26
+ ```
27
+
28
+ Breakpoints: `sm 480` · `md 768` · `lg 1024` · `xl 1280` · `2xl 1440`. Mobile-first;
29
+ the editorial grid collapses to a single column by `md` (asymmetry → linear flow).
30
+
31
+ ## Canonical editorial layouts
32
+
33
+ ### Hero / chapter opener
34
+ - **EH-A Editorial hero (default):** small-caps **kicker** → large serif **display** H1
35
+ (offset left on the grid) → **deck** → understated CTA, with a large art-directed image
36
+ to one side or full-bleed below. Dramatic whitespace.
37
+ - **EH-B Cover:** a full-bleed image with the title set over it (magazine cover), kicker +
38
+ serif title + deck; scrim/positioning ensures legibility.
39
+ - **EH-C Type-only opener:** an oversized serif statement centered or offset with vast
40
+ whitespace and a single hairline — no image (Stripe Press feel).
41
+
42
+ ### Feature / story
43
+ - **F-A Feature essay:** offset reading column (`.col-text`) with a drop cap, pull quotes
44
+ breaking the measure, and figures with captions — long-form editorial.
45
+ - **F-B Alternating plates:** image ↔ text rows, full-bleed or inset images with captions,
46
+ flipping sides; generous space between.
47
+ - **F-C Index / list:** a numbered editorial index ("01 — …") of features/articles as a
48
+ typographic list with hairline rules between rows (rules *within* the list, not between sections).
49
+ - **F-D Two-column editorial:** asymmetric `.col-left` headline + `.col-right` body/columns.
50
+
51
+ ### Pricing / CTA / FAQ / Footer
52
+ - **P-A Editorial pricing:** tiers as quiet typographic columns (serif amount, hairline
53
+ rules, understated CTA) — not loud cards. **P-B 2-tier + bespoke/enterprise** note.
54
+ - **C-A CTA opener:** a chapter-opener-style band (large serif line + understated CTA) on a
55
+ `--paper-bone` or `--paper-ink` plate. `--section-y-lg`, no border.
56
+ - **Q-A Editorial FAQ:** a numbered list with hairline rules between items; serif questions.
57
+ - **FT-A Editorial footer:** brand wordmark + columns + fine print, hairline at the top edge
58
+ only, small-caps labels. **FT-B minimal.**
59
+
60
+ ### Dashboard / Docs
61
+ - **D-A Plate:** product imagery as a full-bleed/inset editorial plate with a caption.
62
+ - **DOC-A Editorial docs:** offset prose column (`--container-text`) + margin notes
63
+ (`.col-aside`) + a fine TOC; serif headings, sans body, hairline rules.
64
+
65
+ ## Composition rules
66
+
67
+ 1. **Separate sections by whitespace + paper tone, NEVER borders.** Alternate `--paper`/
68
+ `--paper-bone` (and the occasional `--paper-ink` plate); `.section{border:0}`; no `<hr>`
69
+ between sections. Editorial **hairlines live inside compositions** (under kickers,
70
+ between index/FAQ rows, in the footer) — never as section dividers.
71
+ 2. **Compose asymmetrically on the grid.** Offset the reading column; let images and quotes
72
+ break the measure. Keep alignment precise.
73
+ 3. **One idea per section, paced.** Vary density and image scale section to section for a
74
+ magazine rhythm (spacious → dense → full-bleed → quiet quote).
75
+ 4. **At least 10 sections per page**, **15+ pages.** Never thin.
76
+ 5. **Rhythm:** Editorial hero → kicker/intro → feature essay/plates → pull quote → index →
77
+ metrics/testimonials → pricing → FAQ → CTA opener → editorial footer.
78
+ 6. **Prose measure capped** (`--container-text`, ~66ch); full-bleed images use `.bleed`.
79
+ 7. **Reflow gracefully:** asymmetric spans collapse to a single, well-spaced column on
80
+ mobile; images stack with captions; whitespace scales down but stays generous.
@@ -0,0 +1,82 @@
1
+ # Motion System — Editorial Luxury
2
+
3
+ Motion is **quiet, slow, and elegant** — type settles in line by line, images reveal behind
4
+ a soft curtain, and elements fade up with grace. Nothing bounces or rushes. The pacing
5
+ feels like turning the pages of a beautiful magazine. Everything degrades under
6
+ `prefers-reduced-motion`.
7
+
8
+ Distilled from luxury/editorial sites (Aesop, Hermès, Cartier — restrained, refined) and
9
+ OpenAI/Anthropic/Perplexity/Cursor (calm) for structure.
10
+
11
+ ## Tokens
12
+
13
+ ```css
14
+ :root {
15
+ --dur-fast: 200ms; --dur-base: 360ms; --dur-slow: 560ms; --dur-slower: 900ms;
16
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1); /* soft, refined decelerate */
17
+ --ease-editorial: cubic-bezier(0.22, 0.61, 0.36, 1);
18
+ }
19
+ ```
20
+ Note: durations are **slightly longer** than typical SaaS — luxury motion is unhurried.
21
+
22
+ ## Principles
23
+ 1. **Slow and graceful.** Reveals run 360–900ms with soft easing; nothing snappy.
24
+ 2. **Type is choreographed.** Headlines can settle **line by line**; kickers fade first,
25
+ then the headline, then the deck — a considered cadence.
26
+ 3. **Move a little.** Fade + 16–28px rise; image scale 1.04→1.0 reveal. No bounce/spin.
27
+ 4. **One focal motion per viewport.** Calm, paced, never busy.
28
+ 5. **Cheap props only** (`transform`/`opacity`/`clip-path`).
29
+
30
+ ## Patterns
31
+
32
+ - **Scroll reveal (signature):** elements start `opacity:0; translateY(24px)` → `.in` via
33
+ `IntersectionObserver`, `--dur-slow` `--ease-out`. Reveal once; unhurried.
34
+ - **Line-by-line headings:** wrap heading lines in spans; reveal each with a small stagger
35
+ (~90ms) and a soft rise — the editorial "type settling" effect.
36
+ - **Image curtain:** images reveal via `clip-path` wipe (or mask) + a slight scale-down
37
+ (1.05→1.0), `--dur-slower`. Feels like a printed plate appearing.
38
+ - **Drop cap / pull quote:** fade in slightly after their paragraph for emphasis.
39
+ - **Hover:** links grow their hairline underline (animate `border`/underline); buttons
40
+ shift ink→accent; image plates lift subtly (`--shadow-md`→`--shadow-lg`) and scale ≤1.02.
41
+ - **Nav on scroll:** paper background + hairline fade in under the bar after ~24px.
42
+ - **Section/page transitions:** slow cross-fade + gentle rise; consider a brief full-page
43
+ fade on navigation for a "turning the page" feel (keep it fast enough, ≤300ms).
44
+ - **Counters:** editorial figures count up on reveal (final value in DOM).
45
+ - **Marquee (logos):** very slow, linear, pausable — or simply static (luxury often is).
46
+
47
+ ## Reduced motion (required)
48
+
49
+ ```css
50
+ @media (prefers-reduced-motion: reduce) {
51
+ *, *::before, *::after { animation-duration:.001ms !important;
52
+ animation-iteration-count:1 !important; transition-duration:.001ms !important;
53
+ scroll-behavior:auto !important; }
54
+ }
55
+ ```
56
+ Under reduced motion: show all reveals/headings/images in final state immediately; no
57
+ line-by-line, curtain, parallax, marquee, or page-fade; counters render final value.
58
+
59
+ ## Minimal vanilla helpers
60
+
61
+ ```js
62
+ // reveal (incl. line-by-line headings via [data-lines])
63
+ const io = new IntersectionObserver((es)=>es.forEach(e=>{ if(e.isIntersecting){
64
+ const el=e.target;
65
+ if(el.hasAttribute('data-lines')){
66
+ el.querySelectorAll('.line').forEach((ln,i)=> ln.style.transitionDelay = `${i*90}ms`);
67
+ }
68
+ el.classList.add('in'); io.unobserve(el);
69
+ }}, {threshold:.2}));
70
+ document.querySelectorAll('[data-reveal],[data-lines]').forEach(el=>io.observe(el));
71
+ ```
72
+ ```css
73
+ [data-reveal]{ opacity:0; transform: translateY(24px);
74
+ transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
75
+ [data-reveal].in{ opacity:1; transform:none; }
76
+ [data-lines] .line{ display:block; opacity:0; transform: translateY(0.5em);
77
+ transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out); }
78
+ [data-lines].in .line{ opacity:1; transform:none; }
79
+ .plate img{ clip-path: inset(0 0 100% 0); transform: scale(1.05);
80
+ transition: clip-path var(--dur-slower) var(--ease-editorial), transform var(--dur-slower) var(--ease-editorial); }
81
+ .plate.in img{ clip-path: inset(0 0 0 0); transform: scale(1); }
82
+ ```
@@ -0,0 +1,77 @@
1
+ # Spacing System — Editorial Luxury
2
+
3
+ A strict **4-point base / 8-point rhythm** with **dramatic, magazine-grade whitespace** and
4
+ **generous outer margins**. Space + the editorial grid + paper tone separate content —
5
+ never borders.
6
+
7
+ ## Scale tokens
8
+
9
+ ```css
10
+ :root {
11
+ /* 4-pt base, 8-pt rhythm */
12
+ --space-0: 0; --space-1: 4px; --space-2: 8px; --space-3: 12px;
13
+ --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px;
14
+ --space-10: 40px; --space-12: 48px; --space-16: 64px; --space-20: 80px;
15
+ --space-24: 96px; --space-28: 112px;--space-32: 128px;--space-40: 160px;
16
+ --space-48: 192px; --space-56: 224px; /* editorial XL whitespace */
17
+
18
+ /* Radii — luxury leans crisp: small radii or none; insets soft */
19
+ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-xl: 16px;
20
+ --radius-pill: 999px;
21
+
22
+ /* Containers — editorial measures */
23
+ --container-text: 680px; /* reading column / prose measure */
24
+ --container-md: 840px;
25
+ --container-lg: 1040px;
26
+ --container-xl: 1200px;
27
+ --container-2xl: 1360px; /* wide editorial spreads / full-bleed insets */
28
+ --margin: clamp(24px, 7vw, 120px); /* generous editorial outer margin */
29
+
30
+ /* Section rhythm (fluid, dramatic) */
31
+ --section-y: clamp(80px, 11vw, 176px);
32
+ --section-y-lg: clamp(112px, 15vw, 240px); /* hero / chapter openers */
33
+ --stack: clamp(16px, 2vw, 24px);
34
+ --col-gap: clamp(24px, 4vw, 72px); /* gap between editorial columns */
35
+ }
36
+ ```
37
+
38
+ ## Usage map
39
+
40
+ - **4-pt system** (`--space-1..6`): inside components — kicker↔headline, caption gaps,
41
+ button/badge padding, list-item gaps, rule margins.
42
+ - **8-pt system** (`--space-8..16`): between elements — headline↔deck, deck↔body, image↔
43
+ caption, form rows.
44
+ - **Editorial XL** (`--space-20..56`): the dramatic gaps that define luxury — around heroes,
45
+ between a quote and the next block, framing full-bleed images.
46
+ - **Outer margin** (`--margin`): generous, fluid side margins (up to ~120px) — content sits
47
+ inset from the page edge, magazine-style. Full-bleed images may break to the edge.
48
+ - **Container widths:** prose at `--container-text` (680, ~66ch); standard sections
49
+ `--container-lg/xl`; wide spreads `--container-2xl`.
50
+ - **Section spacing:** `padding-block: var(--section-y)`; hero/chapter openers
51
+ `--section-y-lg`. This big rhythm is the luxury signal.
52
+ - **Page spacing:** sections stack with no extra margins and **no borders/dividers** —
53
+ `--section-y` whitespace + alternating paper tone separate them.
54
+
55
+ ## Rules
56
+
57
+ 1. **Only use scale values.** No arbitrary `13px`/`27px`.
58
+ 2. **Be generous.** When unsure, add space. Cramped layouts kill the luxury feel.
59
+ 3. **Asymmetric margins are fine.** The editorial grid often offsets content; keep the
60
+ *system* (gaps/margins from tokens) even when the composition is asymmetric.
61
+ 4. **Prose measure 62–75ch.** Never run body text full width; cap with `--container-text`.
62
+ 5. **Whitespace + paper tone > dividers.** Separate sections with space and tone, never lines.
63
+
64
+ ## Helpers
65
+
66
+ ```css
67
+ .container { width:100%; max-width: var(--container-xl);
68
+ margin-inline:auto; padding-inline: var(--margin); }
69
+ .container--text { max-width: var(--container-text); } /* reading column */
70
+ .container--wide { max-width: var(--container-2xl); }
71
+ .section { padding-block: var(--section-y); border: 0; } /* never a section border */
72
+ .section--opener { padding-block: var(--section-y-lg); }
73
+ .section--bone { background: var(--paper-bone); } /* alternate paper tone, not a line */
74
+ .section--ink { background: var(--paper-ink); color: var(--text-on-ink); } /* dark plate */
75
+ .stack > * + * { margin-top: var(--stack); }
76
+ .bleed { width: 100vw; margin-inline: calc(50% - 50vw); } /* full-bleed image break-out */
77
+ ```
@@ -0,0 +1,107 @@
1
+ # Typography System — Editorial Luxury
2
+
3
+ Typography **is** this system. A high-contrast **serif display** family carries headlines,
4
+ pull quotes, and decks; a clean **sans** (or a refined serif) handles UI/body. The scale is
5
+ dramatic, the details are fine, and the craft is the point.
6
+
7
+ ## Fonts
8
+
9
+ ```css
10
+ :root {
11
+ /* Serif display — expressive, high-contrast (the signature) */
12
+ --font-serif: "Canela", "GT Sectra", "Tiempos Headline", "Freight Display",
13
+ "Playfair Display", "Cormorant Garamond", Georgia, "Times New Roman", serif;
14
+ /* Sans — clean, neutral for UI/body */
15
+ --font-sans: "Inter", "Geist", "Söhne", -apple-system, BlinkMacSystemFont,
16
+ "Helvetica Neue", Arial, sans-serif;
17
+ /* Optional refined serif for long-read body */
18
+ --font-serif-text: "Tiempos Text", "Lyon Text", "Newsreader", Georgia, serif;
19
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, Menlo, monospace;
20
+
21
+ --font-display: var(--font-serif); /* headlines + display */
22
+ --font-body: var(--font-sans); /* body/UI (or --font-serif-text for editorial long-reads) */
23
+ }
24
+ ```
25
+ Notes:
26
+ - Prefer a real high-contrast display serif (Canela, GT Sectra, Tiempos Headline, Freight).
27
+ Free fallbacks: **Playfair Display**, **Cormorant Garamond**, **Newsreader**, Georgia.
28
+ - Pair the serif display with a quiet sans for UI so the serif stays special.
29
+ - For magazine long-reads, set body in `--font-serif-text` instead of sans.
30
+
31
+ ## Fluid type scale (clamp) — dramatic
32
+
33
+ ```css
34
+ :root {
35
+ --fs-display: clamp(3rem, 1.6rem + 6.4vw, 6.5rem); /* 48 → 104px editorial hero */
36
+ --fs-h1: clamp(2.5rem, 1.6rem + 4vw, 4.5rem); /* 40 → 72px */
37
+ --fs-h2: clamp(2rem, 1.4rem + 2.6vw, 3.25rem); /* 32 → 52px */
38
+ --fs-h3: clamp(1.5rem, 1.2rem + 1.4vw, 2.125rem); /* 24 → 34px */
39
+ --fs-h4: clamp(1.25rem, 1.1rem + 0.6vw, 1.5rem); /* 20 → 24px */
40
+ --fs-deck: clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem);/* 20 → 26px standfirst/deck */
41
+ --fs-quote: clamp(1.75rem, 1.3rem + 2vw, 2.75rem); /* 28 → 44px pull quote */
42
+ --fs-lead: clamp(1.125rem, 1.04rem + 0.45vw, 1.375rem);/* 18 → 22px */
43
+ --fs-body: 1.0625rem; /* 17px base (comfortable reading) */
44
+ --fs-body-lg: 1.1875rem; /* 19px long-read */
45
+ --fs-small: 0.875rem; /* 14px caption */
46
+ --fs-kicker: 0.75rem; /* 12px small-caps kicker */
47
+ }
48
+ ```
49
+
50
+ ## Roles (each: family · weight · line-height · tracking)
51
+
52
+ | Role | Family | Size | Weight | LH | Tracking |
53
+ |---|---|---|---|---|---|
54
+ | **Display** (hero) | serif | `--fs-display` | 400–500 | 1.02–1.06 | -0.01em to -0.02em |
55
+ | **H1** | serif | `--fs-h1` | 400–500 | 1.06 | -0.015em |
56
+ | **H2** (section) | serif | `--fs-h2` | 500 | 1.1 | -0.01em |
57
+ | **H3** | serif | `--fs-h3` | 500 | 1.2 | -0.005em |
58
+ | **H4** | serif/sans | `--fs-h4` | 500–600 | 1.3 | 0 |
59
+ | **Kicker / eyebrow** | sans | `--fs-kicker` | 600 | 1.2 | 0.16em, UPPERCASE (small-caps) |
60
+ | **Deck / standfirst** | serif/sans | `--fs-deck` | 400 | 1.4 | 0 |
61
+ | **Pull quote** | serif | `--fs-quote` | 400 | 1.2 | -0.01em, often italic |
62
+ | **Lead** | sans/serif | `--fs-lead` | 400 | 1.5 | 0 |
63
+ | **Body** | sans or serif-text | `--fs-body`/`-lg` | 400 | 1.65–1.75 | 0 |
64
+ | **Caption / credit** | sans | `--fs-small` | 400 (credit italic) | 1.45 | 0.01em |
65
+ | **Button** | sans | `--fs-body` (`0.9375rem`) | 600 | 1 | 0.01em |
66
+ | **Navigation** | sans | `--fs-small`/`--fs-body` | 500 | 1 | 0.02em |
67
+ | **Pricing amount** | serif | `clamp(2.5rem,2rem+2vw,3.75rem)` | 400–500 | 1 | -0.01em |
68
+
69
+ ## Editorial type rules (the craft)
70
+
71
+ 1. **Serif headlines, light weight.** High-contrast display serifs look best at **400–500**
72
+ weight (not bold) at large sizes — let the contrast of the letterforms carry it.
73
+ 2. **Generous leading on body.** Body line-height **1.65–1.75**; measure **62–75ch**
74
+ (`max-width: 68ch`). Long reads can use `--font-serif-text`.
75
+ 3. **Kickers are small-caps + tracked.** Uppercase, ~0.16em tracking, muted or accent,
76
+ with a hairline rule under them.
77
+ 4. **Drop cap** (one per page max): oversized serif initial on a key opening paragraph
78
+ (`p.has-dropcap::first-letter`).
79
+ 5. **Pull quotes** break the column in large italic serif with a hairline above; keep them short.
80
+ 6. **Hanging punctuation / true quotes/dashes.** Use proper "" '' — – characters; enable
81
+ `font-feature-settings` ligatures/oldstyle figures where the face supports them.
82
+ 7. **One display moment per page** (the hero). Don't make every heading enormous.
83
+ 8. **Numbers** in stats/pricing can use oldstyle or tabular figures (`font-variant-numeric`).
84
+
85
+ ## Base CSS
86
+
87
+ ```css
88
+ body { font-family: var(--font-body); font-size: var(--fs-body); line-height: 1.7;
89
+ color: var(--text-secondary); -webkit-font-smoothing: antialiased;
90
+ text-rendering: optimizeLegibility; font-feature-settings: "liga","kern"; }
91
+ h1,h2,h3 { font-family: var(--font-serif); color: var(--ink); font-weight: 500;
92
+ text-wrap: balance; letter-spacing: -0.015em; }
93
+ h1 { font-size: var(--fs-h1); line-height: 1.06; font-weight: 450; }
94
+ .kicker { font-family: var(--font-sans); font-size: var(--fs-kicker); font-weight:600;
95
+ letter-spacing:.16em; text-transform:uppercase; color: var(--text-muted); }
96
+ .kicker::after { content:""; display:block; width:40px; height:1px;
97
+ background: var(--rule-default); margin-top: var(--space-3); }
98
+ .deck { font-size: var(--fs-deck); color: var(--text-secondary); max-width: 56ch; }
99
+ .pull-quote { font-family: var(--font-serif); font-size: var(--fs-quote); font-style: italic;
100
+ line-height:1.2; color: var(--ink); max-width: 24ch; }
101
+ .has-dropcap::first-letter { font-family: var(--font-serif); float:left; font-size: 3.4em;
102
+ line-height:.8; padding-right:.08em; color: var(--ink); }
103
+ figcaption { font-size: var(--fs-small); color: var(--text-muted); }
104
+ figcaption .credit { font-style: italic; }
105
+ a { color: var(--accent); text-underline-offset: 3px; text-decoration-thickness: 1px; }
106
+ p { max-width: 68ch; }
107
+ ```
@@ -0,0 +1,194 @@
1
+ # Website Generation Rules — Editorial Luxury
2
+
3
+ How an agent turns this design system into a **production-ready, multi-page, editorial
4
+ luxury website**. Output clean, semantic **pure HTML + CSS + vanilla JavaScript** plus
5
+ design tokens. The signature: serif display type, an asymmetric editorial grid, dramatic
6
+ whitespace, and impeccable typographic craft. (The token/spec system can be exported for
7
+ other agents — see below — but the generated website itself is always pure vanilla.)
8
+
9
+ ## Technology stack (MANDATORY — no frameworks, no libraries)
10
+
11
+ Build everything with **HTML5 + CSS3 + vanilla JavaScript only**. The generated site must
12
+ contain **zero** of:
13
+
14
+ > ❌ React · ❌ Vue · ❌ Angular · ❌ Svelte/Next/Nuxt · ❌ Bootstrap · ❌ Tailwind ·
15
+ > ❌ jQuery · ❌ any UI library · ❌ any CSS framework · ❌ any JS animation/utility library
16
+
17
+ No build step, no npm dependencies, no CDN kits. The editorial grid is CSS Grid; reveals/
18
+ line-by-line type/image curtains are native CSS + `IntersectionObserver`. Exporting
19
+ `tokens.json` for other agents is allowed; shipping the site in a framework is not.
20
+
21
+ ## Mandatory scale & structure (read first)
22
+ - **Multipage: build 15+ pages (recommended ~20)** — a full site map, not one page.
23
+ - **Every page has at least 10 sections (recommend 12)** from the layouts/components.
24
+ - **No borders or dividers between sections** — separate with **whitespace, alternating
25
+ paper tone (`--paper`/`--paper-bone`/occasional `--paper-ink` plate), and type hierarchy**.
26
+ In CSS: `.section { border: 0 }`; never `<hr>`/divider or `border-top/bottom` between
27
+ sections. (Editorial **hairline rules** are allowed *inside* compositions — under kickers,
28
+ between index/FAQ rows, in the footer — never as a divider between page sections.)
29
+ - **Clean, extensionless, Vercel-ready URLs** (`/pricing`, not `/pricing.html`).
30
+
31
+ ## Required pages (build all — 15+; ~20 recommended)
32
+ Home `/` · Platform `/platform` · Solutions `/solutions` · Products `/products` ·
33
+ Features `/features` · AI Agents `/ai-agents` · Enterprise `/enterprise` · Security
34
+ `/security` · Pricing `/pricing` · Customers `/customers` · Case Studies `/case-studies`
35
+ · Developers `/developers` · Documentation `/docs` · About `/about` · Careers `/careers`
36
+ · Blog (Journal) `/journal` · Contact `/contact` · Partners `/partners` · Resources
37
+ `/resources` · FAQ `/faq`. (For brand sites you may rename to Story/Craft/Collection/
38
+ Journal/Press, but still ship 15+ pages.) Add subpages freely.
39
+
40
+ ## Required sections (every page — ≥10, recommend 12)
41
+ Hero (editorial) · Feature/Story Sections · Product Highlights (plates) · Trust Signals
42
+ (logos/press) · Testimonials (pull quotes) · Use Cases · Statistics (editorial figures) ·
43
+ Integrations · CTA (chapter opener) · Footer. Add more (Security, Enterprise, Index, Pull
44
+ Quote, Pricing, FAQ) to reach 12.
45
+
46
+ ## Site types this must support
47
+ Landing pages · startup websites · AI company websites · enterprise SaaS · developer
48
+ platforms · agentic-AI startups · infrastructure startups · brand/publication sites. (See
49
+ `example-page-structures.md`.)
50
+
51
+ ## What to generate
52
+ - **HTML** — semantic, accessible, one file per page; figures with captions/credits.
53
+ - **CSS** — `tokens.css` (`:root` vars) + `styles.css` (base + editorial grid + components).
54
+ - **JavaScript** — vanilla: nav/menu, scroll reveal, line-by-line headings, image curtains,
55
+ accordion, tabs, toggle, copy, counters. Usable without JS.
56
+ - **`vercel.json`** + **`sitemap.xml`** + **`robots.txt`**.
57
+ - **Design tokens** — `tokens.json` (token export only).
58
+ - **Component specifications** — when asked for the *system*, emit component markup + token
59
+ usage from `component-library.md`.
60
+ - **Accessibility + responsive guidance** inline (comments) and honored.
61
+
62
+ ## File/output layout (default — flat files + clean URLs)
63
+ ```
64
+ website/
65
+ ├── index.html # served at /
66
+ ├── platform.html solutions.html products.html features.html ai-agents.html
67
+ ├── enterprise.html security.html pricing.html customers.html case-studies.html
68
+ ├── developers.html docs.html about.html careers.html journal.html contact.html
69
+ ├── partners.html resources.html faq.html
70
+ ├── css/ { tokens.css, styles.css }
71
+ ├── js/ { main.js } # nav, reveal, line-headings, curtains, accordion, copy
72
+ ├── assets/ # editorial imagery, icons, og images, fonts (if self-hosting)
73
+ ├── tokens.json
74
+ ├── sitemap.xml robots.txt
75
+ └── vercel.json
76
+ ```
77
+ Alternative: folder-per-page `platform/index.html`. Either way **all internal links are
78
+ extensionless** (`href="/pricing"`).
79
+
80
+ ## Clean URLs & Vercel (MANDATORY)
81
+ - **No `.html` in any URL**, no `page.html` links, no ugly query params.
82
+ - Emit **`vercel.json`** so `.html` is stripped, refresh works, and deep links resolve:
83
+ ```json
84
+ {
85
+ "cleanUrls": true,
86
+ "trailingSlash": false,
87
+ "headers": [
88
+ { "source": "/assets/(.*)", "headers": [
89
+ { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" } ] }
90
+ ]
91
+ }
92
+ ```
93
+ `cleanUrls: true` serves `platform.html` at `/platform` and 301-redirects `.html`.
94
+ Provide a `404.html`. Every nav/footer/internal link is extensionless.
95
+
96
+ ## Navigation system (vanilla JS)
97
+ - **Desktop nav** = slim quiet bar with an optional refined **dropdown** (clean paper panel,
98
+ hairline-separated columns); keyboard + `aria-expanded`/`aria-haspopup`.
99
+ - **Mobile nav**: full-screen paper overlay, serif links, generous spacing, focus-trap, ESC.
100
+ - **Multi-level nav** + **breadcrumbs** on deep pages (journal/case studies/docs);
101
+ `aria-current="page"`.
102
+
103
+ ## Hard rules
104
+ 1. **Vanilla only.** No frameworks/libraries in the shipped site.
105
+ 2. **Editorial craft.** Serif display headlines; asymmetric editorial grid; dramatic
106
+ whitespace; kickers/decks/pull quotes/captions; understated CTAs (never loud gradients).
107
+ 3. **Tokens first, once.** All colors/type/spacing as `:root` vars; no scattered hex/px;
108
+ rebrand = change `--accent-*` (single accent).
109
+ 4. **No section borders.** Separate with whitespace + paper tone. `.section{border:0}`;
110
+ hairlines only *inside* compositions.
111
+ 5. **Mobile-first + responsive**; asymmetric grid → single well-spaced column by `md`; no
112
+ 320px scroll; prose measure capped (62–75ch).
113
+ 6. **Semantic + accessible** per `accessibility-system.md` (figure/blockquote/ol, contrast
114
+ on warm neutrals, cover-text scrims, focus, reduced motion). Non-negotiable.
115
+ 7. **Components from the library** (editorial). Every component: responsive, accessible,
116
+ reusable, production-ready, animation-ready.
117
+ 8. **Performance:** self-host or `font-display: swap` the serif (and subset it); lazy-load
118
+ below-the-fold imagery (`loading="lazy"`); animate transform/opacity/clip-path only;
119
+ minimal JS, no libraries; high Lighthouse (90+).
120
+ 9. **SEO on every page** (below). **Real, considered copy** (kickers/decks/captions written
121
+ like an editor); mark guesses `[PLACEHOLDER]`.
122
+ 10. **Self-verify** against anti-patterns + every companion checklist before done.
123
+
124
+ ## SEO requirements (every page)
125
+ Unique `<title>` + meta description (150–160); **Open Graph** + **Twitter card**
126
+ (`summary_large_image`) + OG image; **canonical** (clean URL); **JSON-LD** (`Organization`
127
+ + `WebSite` site-wide; `Article`/`NewsArticle` for journal, `Product`, `FAQPage`,
128
+ `BreadcrumbList` where relevant); **`sitemap.xml`** + **`robots.txt`**.
129
+
130
+ ## Performance requirements
131
+ Fast first paint, minimal vanilla JS, subset/self-hosted serif with `swap`, optimized/
132
+ centralized CSS, lazy imagery, cached assets (via `vercel.json`), no blocking libraries.
133
+
134
+ ## Boilerplate `<head>`
135
+ ```html
136
+ <!doctype html><html lang="en"><head>
137
+ <meta charset="utf-8">
138
+ <meta name="viewport" content="width=device-width, initial-scale=1">
139
+ <meta name="color-scheme" content="light dark">
140
+ <title><!-- Page · Brand --></title>
141
+ <meta name="description" content="<!-- 150–160 chars -->">
142
+ <link rel="canonical" href="https://brand.com/path">
143
+ <meta property="og:type" content="website">
144
+ <meta property="og:title" content="<!-- Page · Brand -->">
145
+ <meta property="og:description" content="<!-- … -->">
146
+ <meta property="og:url" content="https://brand.com/path">
147
+ <meta property="og:image" content="https://brand.com/assets/og.png">
148
+ <meta name="twitter:card" content="summary_large_image">
149
+ <link rel="stylesheet" href="/css/tokens.css">
150
+ <link rel="stylesheet" href="/css/styles.css">
151
+ <script type="application/ld+json"><!-- Organization / WebSite JSON-LD --></script>
152
+ </head>
153
+ <body>
154
+ <a class="skip-link" href="#main">Skip to content</a>
155
+ <header><!-- Navbar (links extensionless: /about, /pricing) --></header>
156
+ <main id="main"><!-- editorial hero + 10–12 sections, alternating paper tone, no dividers --></main>
157
+ <footer><!-- Editorial footer --></footer>
158
+ <script src="/js/main.js" defer></script>
159
+ </body></html>
160
+ ```
161
+
162
+ ## Required base CSS (no section borders; paper tone)
163
+ ```css
164
+ html, body { background: var(--paper); color: var(--text-secondary); }
165
+ .section { padding-block: var(--section-y); border: 0; } /* no borders/dividers between sections */
166
+ .section--bone { background: var(--paper-bone); } /* alternate paper tone by COLOR, not lines */
167
+ .section--ink { background: var(--paper-ink); color: var(--text-on-ink); }
168
+ .section + .section { border-top: 0; } /* explicitly: no rule between sections */
169
+ /* Separation = whitespace (--section-y) + paper tone + type hierarchy.
170
+ Editorial hairlines live INSIDE compositions (kickers, lists, footer), never between sections. */
171
+ ```
172
+
173
+ ## tokens.json shape (excerpt)
174
+ ```json
175
+ {
176
+ "color": { "paper": {"base":"#faf8f3","bone":"#f4f1ea","ink":"#1a1814"},
177
+ "text": {"ink":"#17150f","primary":"#221f18","secondary":"#4a463c","muted":"#726c5e"},
178
+ "rule":"rgba(23,21,15,0.18)", "accent":"#7a2e2e", "gold":"#9a7b2e" },
179
+ "space": { "8":"32px","16":"64px","24":"96px","40":"160px" },
180
+ "container": { "text":"680px","xl":"1200px" },
181
+ "type": { "serif":"Canela, 'Playfair Display', Georgia, serif",
182
+ "display":"clamp(3rem,1.6rem + 6.4vw,6.5rem)", "body":"1.0625rem" }
183
+ }
184
+ ```
185
+
186
+ ## Definition of done
187
+ **15+ pages (≈20), each with ≥10 sections (≈12), composed on the asymmetric editorial grid
188
+ with serif display type and dramatic whitespace, no borders/dividers between sections.**
189
+ Pure HTML/CSS/vanilla JS (no frameworks/libraries); clean extensionless URLs with
190
+ `vercel.json` (refresh + deep links work); refined desktop nav + mobile + breadcrumb;
191
+ per-page SEO + sitemap; tokens centralized; fully responsive (graceful grid reflow); AA
192
+ accessible (warm-neutral contrast, cover-text scrims, semantics); quiet elegant motion with
193
+ reduced-motion fallback; high Lighthouse; zero anti-patterns; could sit next to Aesop/
194
+ Hermès/Kinfolk/Stripe Press without looking like a template.