spirewise 1.7.0 → 1.8.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 +65 -37
  3. package/install.sh +3 -3
  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 -37
  125. package/skills/nvidia-product-inventor/SKILL.md +265 -227
  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,91 @@
1
+ # Example Page Structures — Motion Storytelling
2
+
3
+ Ready-to-assemble, **scroll-narrative** page blueprints. Each section names a layout (see
4
+ `layout-system.md`) and components (see `component-library.md`). Every page tells a story
5
+ through scenes — pinned/scrub/reveal — with big beats alternating with calm passages. No
6
+ borders between sections (separate by whitespace + animated background/scene transitions).
7
+
8
+ Legend: `SH-* / ST-* / F-* / P-* / C-* / Q-* / FT-*` layouts · components by name.
9
+
10
+ ## MANDATORY: 15+ page site map (≈20), 10+ scenes/page, clean URLs
11
+
12
+ Always ship a **full multipage website with 15+ pages (≈20)** — never a single landing page.
13
+ Every page carries **at least 10 sections/scenes (≈12)**, **no borders/dividers between
14
+ sections**, pure HTML/CSS/vanilla JS, **extensionless URLs**, and **reduced-motion + no
15
+ scroll-jack** behavior. Required 20-page map:
16
+
17
+ ```
18
+ / Home /customers Customers
19
+ /platform Platform /case-studies Case Studies
20
+ /solutions Solutions /developers Developers
21
+ /products Products /docs Documentation ← + DOC-A subpages
22
+ /features Features /about About
23
+ /ai-agents AI Agents /careers Careers
24
+ /enterprise Enterprise /blog Blog ← + article pages
25
+ /security Security /contact Contact
26
+ /pricing Pricing /partners Partners
27
+ /resources Resources /faq FAQ
28
+ ```
29
+
30
+ Each blueprint below is a **10-scene** skeleton — extend toward 12, never fewer than 10.
31
+ Every page must include: **Hero (kinetic/scrub) · Feature Scenes · Product Highlights ·
32
+ Trust Signals · Testimonials · Use Cases · Statistics · Integrations · CTA (finale) ·
33
+ Footer.** Mix big beats with calm passages.
34
+
35
+ ---
36
+
37
+ ## 1. Home (default) — the narrative arc
38
+ 1. **Navbar** + **Scroll Progress** — extensionless links
39
+ 2. **Hero** `SH-A/SH-B` — kinetic display H1 + scrub/atmosphere ← big beat (opener)
40
+ 3. **Logos Section** — staggered reveal (calm)
41
+ 4. **Pinned narrative** `ST-A` — one product, 3 beats as copy swaps ← big beat (setup)
42
+ 5. **Scrubbed demo** `ST-B` — product assembles on scroll ← big beat (product)
43
+ 6. **Feature Grid** `F-A` — Reveal Timeline (calm)
44
+ 7. **Statistics** — count-up metrics (calm proof)
45
+ 8. **Testimonials** — quotes (reveal or pinned swap)
46
+ 9. **Pricing** `P-A` (or teaser) — light motion
47
+ 10. **CTA finale** `C-A` (parallax payoff) + **Footer** `FT-A`
48
+
49
+ ## 2. Platform / Product
50
+ 1. Navbar · 2. **Hero** scrub `SH-B` · 3. **Pinned narrative** `ST-A` · 4. **Dashboard
51
+ Preview** (Pinned Sequence) · 5. **Parallax layers** `ST-E` feature · 6. Code Preview (type
52
+ on reveal) · 7. Use Cases (reveal) · 8. **Statistics** · 9. Testimonials · 10. CTA finale + Footer
53
+
54
+ ## 3. Features
55
+ 1. Navbar · 2. Hero · 3.–8. alternating **feature scenes** (`ST-A` pinned / `ST-B` scrub /
56
+ `ST-C` reveal / `ST-D` horizontal — used once, accessible) with calm sections between · 9.
57
+ Integrations · 10. CTA finale + Footer
58
+
59
+ ## 4. Developers / Documentation
60
+ - **Developers:** Navbar · **Hero** with **Terminal/Code** typing on scroll · Logos · Code
61
+ Preview (scrub/highlight) · Pinned "how it works" narrative · Use Cases · Statistics · CTA
62
+ ("Read docs"/"Get API key") · Footer (≥10).
63
+ - **Docs:** `DOC-A` three-pane, **mostly static** (reading), light reveals only — **never
64
+ gate docs content behind motion**; breadcrumb; sticky nav.
65
+
66
+ ## 5. Enterprise / Security
67
+ 1. Navbar · 2. Hero (outcome-led) · 3. Logos · 4. Pinned narrative · 5. **Enterprise** scene ·
68
+ 6. **Security** scene · 7. **Statistics**/ROI · 8. Testimonials (exec) · 9. CTA finale (contact)
69
+ · 10. Footer
70
+
71
+ ## 6. Pricing
72
+ 1. Navbar · 2. Hero (short + toggle) · 3. **Pricing** `P-A/P-B` (light motion) · 4. Feature
73
+ comparison (reveal) · 5. Enterprise band · 6. Logos · 7. Statistics · 8. Testimonials · 9.
74
+ **FAQ** `Q-A` · 10. CTA finale + Footer (keep decision moments calm — don't over-animate)
75
+
76
+ ## 7. Content pages (About, Customers, Case Studies, Careers, Blog, Partners, Resources, Contact, FAQ)
77
+ Reach **≥10 scenes** via story: Hero → narrative/story scenes (timeline of the company,
78
+ customer story scrubs, case-study walkthroughs) → Trust Signals → Statistics → Testimonials →
79
+ Integrations → CTA finale → Footer. **Blog articles stay reading-first** (light reveals only).
80
+
81
+ ---
82
+
83
+ ## Assembly notes
84
+ - **Scale is mandatory:** 15+ pages, **≥10 scenes each**. Never a single/thin page.
85
+ - **Storyboard first:** define the arc, then choose which scenes pin/scrub/reveal. **Alternate
86
+ big beats with calm passages** so the rhythm breathes — don't pin everything.
87
+ - **No borders/dividers between sections** — whitespace + animated `--bg-scene-*` transitions
88
+ + pinned depth. One idea + one strong motion per scene.
89
+ - **Reduced motion + no scroll-jack:** every scene degrades to a readable final state; native
90
+ scroll always works; provide a "Reduce motion" toggle.
91
+ - **Reading-heavy pages (docs, blog, pricing) stay calm.** Use real content; mark guesses `[PLACEHOLDER]`.
@@ -0,0 +1,79 @@
1
+ # Layout & Grid System — Motion Storytelling
2
+
3
+ A 12-column fluid grid + canonical **scene layouts** for scroll-driven narrative: pinned
4
+ scenes, scrubbed sequences, reveal timelines, horizontal scroll, and standard sections
5
+ between the big beats. **No borders between sections.**
6
+
7
+ ## Grid
8
+
9
+ ```css
10
+ :root { --grid-cols: 12; --grid-gap: clamp(16px, 2.2vw, 28px); }
11
+
12
+ .grid { display: grid; gap: var(--grid-gap);
13
+ grid-template-columns: repeat(var(--grid-cols), 1fr); }
14
+ .cols-1 { grid-template-columns: 1fr; }
15
+ .cols-2 { grid-template-columns: repeat(2, 1fr); }
16
+ .cols-3 { grid-template-columns: repeat(3, 1fr); }
17
+ .cols-4 { grid-template-columns: repeat(4, 1fr); }
18
+ .split { grid-template-columns: 1fr 1fr; }
19
+ @media (max-width: 900px){ .cols-3,.cols-4 { grid-template-columns: repeat(2,1fr); } }
20
+ @media (max-width: 820px){ .split { grid-template-columns: 1fr; } }
21
+ @media (max-width: 600px){ .cols-2,.cols-3,.cols-4 { grid-template-columns: 1fr; } }
22
+ ```
23
+
24
+ Breakpoints: `sm 480` · `md 768` · `lg 1024` · `xl 1280` · `2xl 1440`. Mobile-first;
25
+ collapse to single column by `md`, and **unpin/shorten scenes** on mobile (see spacing).
26
+
27
+ ## Scene scaffold (recap from spacing)
28
+ A motion scene = a tall **`.scene`** track wrapping a **`.scene__stage`** (`position:
29
+ sticky; height:100vh`). The stage holds the pinned content; the extra track height is the
30
+ scroll distance the scene animates over. On mobile, scenes unpin and become normal sections.
31
+
32
+ ## Canonical scene layouts
33
+
34
+ ### Hero / opener
35
+ - **SH-A Kinetic hero (default):** pinned stage — eyebrow → kinetic display H1 (line reveal)
36
+ → deck → CTA, with an animated gradient atmosphere; the headline/atmosphere respond to scroll.
37
+ - **SH-B Scrub hero:** a tall scrub track drives a **sequence** (image frames / SVG draw /
38
+ product assembling) in the pinned stage as you scroll into the page.
39
+ - **SH-C Reveal hero:** non-pinned, choreographed entrance of headline + media on load/scroll.
40
+
41
+ ### Story / feature scenes
42
+ - **ST-A Pinned narrative:** stage pins; **copy swaps** (beat 1 → 2 → 3) while a visual
43
+ persists/transforms — one product, three points, told on scroll.
44
+ - **ST-B Scrubbed demo:** a product/diagram assembles or animates step-by-step tied to scroll.
45
+ - **ST-C Reveal timeline:** a normal section whose elements stagger in as it enters.
46
+ - **ST-D Horizontal scene:** content scrolls **sideways** while you scroll down (translateX
47
+ of a track inside a pinned stage); used sparingly, **keyboard-accessible**, with a
48
+ vertical-stack fallback on mobile/reduced motion.
49
+ - **ST-E Parallax layers:** background/mid/foreground move at different rates for depth.
50
+
51
+ ### Standard sections (between beats — calm)
52
+ - **F-A Feature grid**, **F-C Bento**, logos, testimonials, metrics — lighter reveal motion,
53
+ letting the big scenes breathe.
54
+
55
+ ### Pricing / CTA / FAQ / Footer
56
+ - **P-A 3-tier** (middle highlighted) + toggle; **P-B 2-tier + enterprise**. Light reveal.
57
+ - **C-A CTA finale:** a closing pinned/parallax beat — big line + primary CTA, the story's
58
+ payoff. `--section-y-lg`, no border.
59
+ - **Q-A Accordion FAQ**; **FT-A Mega footer** (calm, minimal motion).
60
+
61
+ ### Dashboard / Docs
62
+ - **D-A Dashboard scene:** product shell revealed via scrub/pin.
63
+ - **DOC-A Three-pane docs:** mostly static (reading), light reveals only; never gate docs
64
+ content behind motion.
65
+
66
+ ## Composition rules
67
+
68
+ 1. **Separate scenes by background transition + space + depth, NEVER borders.** Animate
69
+ `--bg-scene-*`/overlay between chapters; `.section{border:0}`; no `<hr>` between sections.
70
+ 2. **Storyboard the page.** Alternate **big beats** (pinned/scrub) with **calm passages**
71
+ (standard sections) so the rhythm breathes — don't pin every section.
72
+ 3. **One idea per scene; one strong motion per scene.** Don't stack competing animations.
73
+ 4. **At least 10 sections/scenes per page**, **15+ pages.** Never thin.
74
+ 5. **Arc:** opener (hero) → setup → product beats (pinned/scrub) → proof (metrics/quotes) →
75
+ pricing → FAQ → finale CTA → footer. Make the narrative legible even when skimming.
76
+ 6. **Performance + a11y:** pinned/scrub via sticky + rAF/IO (see motion-system); on mobile
77
+ and reduced motion, unpin and show final states; never block normal scrolling.
78
+ 7. **Reflow:** multi-column → single column by `md`; horizontal scenes → vertical stacks;
79
+ tracks shorten/disable on mobile.
@@ -0,0 +1,116 @@
1
+ # Motion System — Motion Storytelling
2
+
3
+ This is the heart of the skill: a **performant, accessible, library-free** motion engine for
4
+ scroll-driven storytelling — reveals, pinned scenes, scrubbed sequences, parallax, and
5
+ kinetic type — built only with `IntersectionObserver`, rAF-throttled scroll, the CSS
6
+ Scroll-Linked Animations API where supported, `<canvas>`/SVG, and CSS transitions.
7
+
8
+ ## Tokens
9
+
10
+ ```css
11
+ :root {
12
+ --dur-fast: 160ms; --dur-base: 280ms; --dur-slow: 520ms; --dur-slower: 800ms;
13
+ --ease-out: cubic-bezier(0.2, 1, 0.3, 1);
14
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
15
+ --ease-emph: cubic-bezier(0.16, 1, 0.3, 1); /* emphasized decelerate */
16
+ }
17
+ ```
18
+
19
+ ## Principles
20
+ 1. **Compositor-only.** Animate `transform` + `opacity` (and `clip-path` for masks). Never
21
+ animate layout properties (top/left/width/height/margin) on scroll — that thrashes.
22
+ 2. **rAF-throttle scroll.** Read scroll once per frame; write transforms in the rAF; cache
23
+ measurements; recompute on resize (debounced). Use `IntersectionObserver` for enter/exit.
24
+ 3. **Prefer CSS scroll-linked animations** (`animation-timeline: view()/scroll()`) where
25
+ supported for jank-free scrubbing; JS rAF fallback otherwise.
26
+ 4. **One strong motion per scene.** Calm passages between beats. Restraint = smoothness.
27
+ 5. **Never block the user.** No scroll-jacking/hijack of native scroll. Pinning uses CSS
28
+ `position: sticky` (the page still scrolls normally); the user can always skim past.
29
+ 6. **Final state is the content.** Animations only change presentation; everything is present
30
+ and readable with motion off.
31
+
32
+ ## Patterns
33
+
34
+ ### Reveal (IntersectionObserver) — the workhorse
35
+ ```js
36
+ const io = new IntersectionObserver((es)=>es.forEach((e,i)=>{ if(e.isIntersecting){
37
+ e.target.style.transitionDelay = `${Math.min(i*70,360)}ms`;
38
+ e.target.classList.add('in'); io.unobserve(e.target);
39
+ }}, {threshold:.15});
40
+ document.querySelectorAll('[data-reveal]').forEach(el=>io.observe(el));
41
+ ```
42
+ ```css
43
+ [data-reveal]{ opacity:0; transform: translateY(20px);
44
+ transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
45
+ [data-reveal].in{ opacity:1; transform:none; }
46
+ ```
47
+
48
+ ### Pinned scene (CSS sticky — no library, no scroll-jack)
49
+ ```css
50
+ .scene { position: relative; height: var(--track); } /* tall track */
51
+ .scene__stage { position: sticky; top: 0; height: 100vh; overflow: clip; }
52
+ ```
53
+ Within the sticky stage, progress = how far the `.scene` has scrolled; compute a 0→1 value
54
+ and drive transforms/opacity (JS rAF) or use `animation-timeline: scroll()`.
55
+
56
+ ### Scrub progress (rAF, library-free)
57
+ ```js
58
+ const scenes = [...document.querySelectorAll('[data-scene]')];
59
+ let ticking = false;
60
+ function update(){
61
+ for (const s of scenes){
62
+ const r = s.getBoundingClientRect(), h = s.offsetHeight - innerHeight;
63
+ const p = Math.min(1, Math.max(0, -r.top / (h||1))); // 0→1 progress
64
+ s.style.setProperty('--p', p.toFixed(4)); // use in CSS calc()/JS
65
+ // e.g. drive a sequence frame: s.dataset.frame = Math.round(p*(FRAMES-1));
66
+ }
67
+ ticking = false;
68
+ }
69
+ addEventListener('scroll', ()=>{ if(!ticking){ requestAnimationFrame(update); ticking=true; }}, {passive:true});
70
+ addEventListener('resize', ()=>requestAnimationFrame(update)); update();
71
+ ```
72
+ Use `--p` in CSS: `transform: translateY(calc((1 - var(--p)) * 40px)); opacity: var(--p);`
73
+
74
+ ### Image-sequence / SVG scrub
75
+ - **Frames:** preload + `decode()` a small set of frames; draw to `<canvas>` (or toggle
76
+ `<img>`) by index = `round(p * (FRAMES-1))`. Provide a static final frame + alt.
77
+ - **SVG draw:** animate `stroke-dashoffset` from p; or `clip-path`/mask wipe for assembly.
78
+
79
+ ### Parallax (subtle)
80
+ `transform: translate3d(0, calc(var(--p) * var(--depth)), 0)` per layer; small `--depth`
81
+ (e.g. 20–80px). Foreground moves more than background. Off for reduced motion/touch.
82
+
83
+ ### Kinetic type (line reveal)
84
+ Wrap heading lines in `.line > span`; reveal `translateY(110%) → 0` on `.in` (see typography).
85
+
86
+ ### Horizontal scene
87
+ Pin a stage; translate an inner track on X by progress: `transform: translateX(calc(var(--p)
88
+ * -1 * (var(--track-w) - 100vw)))`. Make it keyboard-operable (focus advances) and stack
89
+ vertically on mobile/reduced motion.
90
+
91
+ ### Micro-interactions
92
+ Hover lift, magnetic buttons (translate toward pointer, small), link underline grow, nav
93
+ background morph on scroll, count-up, copy-check swap.
94
+
95
+ ## Reduced motion (CRITICAL)
96
+
97
+ ```css
98
+ @media (prefers-reduced-motion: reduce) {
99
+ *, *::before, *::after { animation-duration:.001ms !important;
100
+ animation-iteration-count:1 !important; transition-duration:.001ms !important;
101
+ scroll-behavior:auto !important; }
102
+ .scene { height: auto !important; } /* untrack */
103
+ .scene__stage { position: static !important; height: auto !important; }
104
+ }
105
+ ```
106
+ And in JS: `const RM = matchMedia('(prefers-reduced-motion: reduce)').matches;` — if `RM`,
107
+ **don't attach** scroll/scrub/parallax listeners, render every scene in its **final state**
108
+ (final frame, headings shown, counters at final value), unpin scenes, and disable horizontal/
109
+ parallax. The site must be fully usable and complete with zero motion.
110
+
111
+ ## Performance checklist
112
+ - Only `transform`/`opacity`/`clip-path` animate; `will-change` used sparingly on active scenes.
113
+ - Scroll handlers are `passive`, rAF-throttled, measurement-cached; resize debounced.
114
+ - Sequence frames are few, sized for viewport, preloaded + `decode()`d; use `<canvas>` for many.
115
+ - `content-visibility: auto` on offscreen heavy scenes; lazy-load media; target 60fps.
116
+ - Disable/spin down observers for scenes scrolled past; never run all scenes at once.
@@ -0,0 +1,83 @@
1
+ # Spacing System — Motion Storytelling
2
+
3
+ A strict **4-point base / 8-point rhythm**, plus **scroll-track** lengths that give pinned
4
+ and scrubbed scenes room to animate. Whitespace, scene depth, and background transitions
5
+ separate content — 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
+
17
+ /* Radii */
18
+ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px;
19
+ --radius-xl: 22px; --radius-2xl: 28px; --radius-pill: 999px;
20
+
21
+ /* Containers */
22
+ --container-sm: 680px; --container-md: 820px; --container-lg: 1060px;
23
+ --container-xl: 1200px; --container-2xl: 1360px; /* wide cinematic scenes */
24
+ --gutter: clamp(20px, 5vw, 48px);
25
+
26
+ /* Section / scene rhythm (fluid) */
27
+ --section-y: clamp(72px, 9vw, 140px);
28
+ --section-y-lg: clamp(104px, 13vw, 200px); /* hero / chapter openers */
29
+ --stack: clamp(16px, 2vw, 24px);
30
+
31
+ /* Scroll-track lengths (how long a scene "runs" while pinned/scrubbed) */
32
+ --track-short: 150vh; /* a short pinned beat */
33
+ --track: 250vh; /* standard pinned/scrub scene (1.5x extra scroll) */
34
+ --track-long: 400vh; /* a long scrubbed sequence (more frames/steps) */
35
+ }
36
+ ```
37
+
38
+ ## Usage map
39
+
40
+ - **4-pt system** (`--space-1..6`): inside components — icon↔label, button/badge padding,
41
+ caption gaps, list-item gaps.
42
+ - **8-pt system** (`--space-8..16`): between components — card gaps, copy↔media, form rows.
43
+ - **Container widths:** standard scenes `--container-lg/xl`; wide cinematic scenes
44
+ `--container-2xl`; prose/docs `--container-md`.
45
+ - **Section/scene spacing:** non-pinned sections use `padding-block: var(--section-y)`;
46
+ hero/chapter openers `--section-y-lg`.
47
+ - **Scroll tracks (the motion-specific part):** a **pinned/scrub scene** is a tall wrapper
48
+ (`height: var(--track)`) containing a `position: sticky; height: 100vh` inner stage. The
49
+ extra track height = the scroll distance over which the scene animates. Use `--track-short/
50
+ track/track-long` per how much choreography a scene needs.
51
+ - **Page spacing:** scenes stack with no extra margins and **no borders/dividers** —
52
+ `--section-y` whitespace + **background/scene transitions** + pinned depth separate them.
53
+
54
+ ## Rules
55
+
56
+ 1. **Only use scale values** for padding/gaps; tracks use the `--track-*` lengths.
57
+ 2. **Right-size the track.** More animation steps → longer track (`--track-long`); a quick
58
+ pin → `--track-short`. Avoid extremely long tracks (they feel slow/janky).
59
+ 3. **Pinned stage = 100vh sticky** inside a `--track`-tall wrapper. Keep the stage content
60
+ within safe padding so nothing clips during transforms.
61
+ 4. **Whitespace + scene transition > dividers.** Separate scenes this way, never lines.
62
+ 5. **Mobile:** shorten tracks (or disable pinning) so scenes aren't exhausting on small
63
+ screens; ensure normal scrolling always works.
64
+
65
+ ## Helpers
66
+
67
+ ```css
68
+ .container { width:100%; max-width: var(--container-xl);
69
+ margin-inline:auto; padding-inline: var(--gutter); }
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
+
74
+ /* Pinned / scrubbed scene scaffold (pure CSS sticky) */
75
+ .scene { position: relative; height: var(--track); } /* the scroll track */
76
+ .scene__stage { position: sticky; top: 0; height: 100vh; /* the pinned viewport */
77
+ display: grid; place-items: center; overflow: clip; }
78
+ @media (max-width: 768px){
79
+ .scene { height: auto; } /* unpin on mobile: */
80
+ .scene__stage { position: static; height: auto; padding-block: var(--section-y); }
81
+ }
82
+ .stack > * + * { margin-top: var(--stack); }
83
+ ```
@@ -0,0 +1,89 @@
1
+ # Typography System — Motion Storytelling
2
+
3
+ Bold, modern grotesk type that **moves with intent** — headlines assemble, mask-reveal, and
4
+ track the scroll (kinetic type), while body stays clean and is never animated word-by-word.
5
+ Legibility holds at every animation frame. Fluid scale across breakpoints.
6
+
7
+ ## Fonts
8
+
9
+ ```css
10
+ :root {
11
+ --font-sans: "Inter", "Geist", "Satoshi", -apple-system, BlinkMacSystemFont, "Segoe UI",
12
+ Roboto, Helvetica, Arial, sans-serif;
13
+ --font-display: var(--font-sans); /* or "Geist"/"Clash Display" for bolder kinetic headlines */
14
+ --font-mono: "Geist Mono", "JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace;
15
+ }
16
+ ```
17
+ A characterful display face (Geist, Clash Display, Satoshi) reads well in motion; keep body
18
+ in a neutral, highly legible sans. Mono for code/terminal scenes.
19
+
20
+ ## Fluid type scale (clamp) — cinematic
21
+
22
+ ```css
23
+ :root {
24
+ --fs-display: clamp(2.75rem, 1.4rem + 6.6vw, 6rem); /* 44 → 96px kinetic hero */
25
+ --fs-h1: clamp(2.25rem, 1.5rem + 3.4vw, 4rem); /* 36 → 64px */
26
+ --fs-h2: clamp(1.75rem, 1.3rem + 2.2vw, 2.875rem);/* 28 → 46px scene title */
27
+ --fs-h3: clamp(1.375rem, 1.15rem + 1.1vw, 1.875rem);/* 22 → 30px */
28
+ --fs-h4: clamp(1.125rem, 1.02rem + 0.5vw, 1.375rem);/* 18 → 22px */
29
+ --fs-lead: clamp(1.125rem, 1.02rem + 0.55vw, 1.4375rem);/* 18 → 23px */
30
+ --fs-body: 1rem; /* 16px base */
31
+ --fs-body-lg: 1.0625rem; /* 17px */
32
+ --fs-small: 0.875rem; /* 14px caption */
33
+ --fs-micro: 0.75rem; /* 12px labels/eyebrow/scene-number */
34
+ }
35
+ ```
36
+
37
+ ## Roles (each: size · weight · line-height · tracking)
38
+
39
+ | Role | Size | Weight | Line-height | Tracking | Color |
40
+ |---|---|---|---|---|---|
41
+ | **Display** (hero) | `--fs-display` | 600–800 | 1.0–1.05 | -0.02em to -0.03em | `--text-primary` / `--grad-text` |
42
+ | **H1** | `--fs-h1` | 600–700 | 1.06 | -0.02em | `--text-primary` |
43
+ | **H2** (scene title) | `--fs-h2` | 600 | 1.1 | -0.015em | `--text-primary` |
44
+ | **H3** | `--fs-h3` | 600 | 1.2 | -0.01em | `--text-primary` |
45
+ | **H4 / overline** | `--fs-h4` | 600 | 1.3 | 0 | `--text-primary` |
46
+ | **Eyebrow / scene number** | `--fs-micro` | 600 | 1.2 | 0.1em, UPPERCASE | `--accent`/`--text-muted` |
47
+ | **Lead / deck** | `--fs-lead` | 400 | 1.5 | 0 | `--text-secondary` |
48
+ | **Body** | `--fs-body`/`-lg` | 400 | 1.6 | 0 | `--text-secondary` |
49
+ | **Caption / meta** | `--fs-small` | 400–500 | 1.45 | 0 | `--text-muted` |
50
+ | **Kinetic word** | display sizes | 600–800 | — | — | `--text-primary`/accent (per beat) |
51
+ | **Button** | `--fs-body` (`0.9375rem`) | 600 | 1 | -0.005em | `--text-on-accent`/`--text-primary` |
52
+ | **Navigation** | `--fs-small`/`--fs-body` | 500 | 1 | 0 | `--text-secondary` → `--text-primary` |
53
+ | **Pricing amount** | `clamp(2.5rem,2rem+2vw,3.5rem)` | 700 | 1 | -0.02em | `--text-primary` |
54
+ | **Code / terminal** | `--fs-small` | 400–500 | 1.6 | 0 | mono, syntax-tinted |
55
+
56
+ ## Kinetic type rules (the craft)
57
+
58
+ 1. **Animate structure, keep legibility.** Reveal **headings line-by-line** (wrap lines in
59
+ `<span class="line">`) or with a **mask wipe** (`clip-path`/`background-clip`); never blur
60
+ text to illegibility or animate long paragraphs word-by-word.
61
+ 2. **Scroll-tracked headlines** (optional) can shift/scale slightly with scroll on a pinned
62
+ scene — keep amplitude small so text stays readable.
63
+ 3. **Final state is the real content.** Markup must contain the full text; animation only
64
+ affects presentation. With motion off, the heading is simply shown.
65
+ 4. **Gradient text** (`--grad-text`) on display/hero phrases only — verify contrast at the
66
+ lightest stop over its background; never on body/small text.
67
+ 5. **One display moment per scene** at most; calm passages between big kinetic beats.
68
+ 6. **Tighten as it grows;** body ~1.6, 0 tracking, measure ≤ 68ch. Numbers `tabular-nums`.
69
+
70
+ ## Base CSS
71
+
72
+ ```css
73
+ body { font-family: var(--font-sans); font-size: var(--fs-body); line-height: 1.6;
74
+ color: var(--text-secondary); -webkit-font-smoothing: antialiased;
75
+ text-rendering: optimizeLegibility; }
76
+ h1,h2,h3,h4 { color: var(--text-primary); font-family: var(--font-display);
77
+ font-weight: 700; text-wrap: balance; letter-spacing: -0.02em; }
78
+ h1 { font-size: var(--fs-h1); line-height: 1.06; }
79
+ .eyebrow { font-size: var(--fs-micro); font-weight:600; letter-spacing:.1em;
80
+ text-transform:uppercase; color: var(--accent); }
81
+ .lead { font-size: var(--fs-lead); color: var(--text-secondary); max-width: 60ch; }
82
+ /* kinetic line reveal — full text is in the DOM; only presentation animates */
83
+ .kinetic .line { display:block; overflow:hidden; }
84
+ .kinetic .line > span { display:block; transform: translateY(110%);
85
+ transition: transform var(--dur-slow) var(--ease-out); }
86
+ .kinetic.in .line > span { transform: none; }
87
+ p { max-width: 68ch; }
88
+ code, pre { font-family: var(--font-mono); }
89
+ ```
@@ -0,0 +1,200 @@
1
+ # Website Generation Rules — Motion Storytelling
2
+
3
+ How an agent turns this design system into a **production-ready, multi-page, scroll-driven
4
+ narrative website**. Output clean, semantic **pure HTML + CSS + vanilla JavaScript** plus
5
+ design tokens. The signature: each page tells a story through pinned/scrubbed/revealed
6
+ scenes — built **performantly and accessibly**, with **no animation libraries**. (The token/
7
+ spec system can be exported for other agents — see below — but the site itself is pure vanilla.)
8
+
9
+ ## Technology stack (MANDATORY — no frameworks, no libraries)
10
+
11
+ Build everything — including all scroll motion — with **HTML5 + CSS3 + vanilla JavaScript
12
+ only**. The generated site must contain **zero** of:
13
+
14
+ > ❌ React · ❌ Vue · ❌ Angular · ❌ Svelte/Next/Nuxt · ❌ Bootstrap · ❌ Tailwind ·
15
+ > ❌ jQuery · ❌ GSAP · ❌ ScrollMagic · ❌ Lenis/Locomotive · ❌ Framer · ❌ AOS ·
16
+ > ❌ any UI/CSS framework · ❌ any JS animation/scroll library
17
+
18
+ Motion is built only with `IntersectionObserver`, rAF-throttled passive scroll listeners,
19
+ the CSS Scroll-Linked Animations API (`animation-timeline: scroll()/view()`) where supported,
20
+ `<canvas>`/SVG, and CSS transitions. No build step, no npm, no CDN kits. Exporting
21
+ `tokens.json` for other agents is allowed; shipping the site in a framework/animation library
22
+ is not.
23
+
24
+ ## Mandatory scale & structure (read first)
25
+ - **Multipage: build 15+ pages (recommended ~20)** — a full site map, not one page.
26
+ - **Every page has at least 10 sections/scenes (recommend 12)** with a clear narrative arc.
27
+ - **No borders or dividers between sections** — separate scenes with **whitespace, animated
28
+ background/scene transitions (`--bg-scene-*`), and pinned-scene depth**. In CSS: `.section
29
+ { border: 0 }`; never `<hr>`/divider or `border-top/bottom` between sections.
30
+ - **Performant + accessible motion:** compositor-only (`transform`/`opacity`), rAF/IO,
31
+ **fully gated by `prefers-reduced-motion`** (final-state, unpinned), **no scroll-jacking**.
32
+ - **Clean, extensionless, Vercel-ready URLs** (`/pricing`, not `/pricing.html`).
33
+
34
+ ## Required pages (build all — 15+; ~20 recommended)
35
+ Home `/` · Platform `/platform` · Solutions `/solutions` · Products `/products` ·
36
+ Features `/features` · AI Agents `/ai-agents` · Enterprise `/enterprise` · Security
37
+ `/security` · Pricing `/pricing` · Customers `/customers` · Case Studies `/case-studies`
38
+ · Developers `/developers` · Documentation `/docs` · About `/about` · Careers `/careers`
39
+ · Blog `/blog` · Contact `/contact` · Partners `/partners` · Resources `/resources` ·
40
+ FAQ `/faq`. Add product/solution/blog/doc subpages freely.
41
+
42
+ ## Required sections (every page — ≥10, recommend 12)
43
+ Hero (kinetic/scrub) · Feature Scenes · Product Highlights · Trust Signals (logos) ·
44
+ Testimonials · Use Cases · Statistics (count-up) · Integrations · CTA (finale) · Footer. Add
45
+ more (Security, Enterprise, Pinned narrative, Bento, Code/Terminal) to reach 12. Mix **big
46
+ beats** (pinned/scrub) with **calm passages** (standard sections).
47
+
48
+ ## Site types this must support
49
+ Landing pages · startup websites · AI company websites · enterprise SaaS · developer
50
+ platforms · agentic-AI startups · infrastructure startups · launches. (See `example-page-structures.md`.)
51
+
52
+ ## What to generate
53
+ - **HTML** — semantic, accessible, one file per page; full content in DOM (motion = presentation).
54
+ - **CSS** — `tokens.css` (`:root` vars) + `styles.css` (base + scene scaffold + components +
55
+ reduced-motion block).
56
+ - **JavaScript** — vanilla **motion engine**: IO reveals, sticky-scene progress (rAF), scrub
57
+ (frames/SVG), parallax, kinetic type, nav, accordion, tabs, count-up — all reduced-motion-aware.
58
+ - **`vercel.json`** + **`sitemap.xml`** + **`robots.txt`**.
59
+ - **Design tokens** — `tokens.json` (token export only).
60
+ - **Component specifications** — when asked for the *system*, emit component + scene markup.
61
+ - **Accessibility + responsive guidance** inline (comments) and honored.
62
+
63
+ ## File/output layout (default — flat files + clean URLs)
64
+ ```
65
+ website/
66
+ ├── index.html # served at /
67
+ ├── platform.html solutions.html products.html features.html ai-agents.html
68
+ ├── enterprise.html security.html pricing.html customers.html case-studies.html
69
+ ├── developers.html docs.html about.html careers.html blog.html contact.html
70
+ ├── partners.html resources.html faq.html
71
+ ├── css/ { tokens.css, styles.css }
72
+ ├── js/ { main.js } # motion engine + nav + interactions
73
+ ├── assets/ # sequence frames, SVGs, media, og images
74
+ ├── tokens.json
75
+ ├── sitemap.xml robots.txt
76
+ └── vercel.json
77
+ ```
78
+ Alternative: folder-per-page `platform/index.html`. Either way **all internal links are
79
+ extensionless** (`href="/pricing"`).
80
+
81
+ ## Clean URLs & Vercel (MANDATORY)
82
+ - **No `.html` in any URL**, no `page.html` links, no ugly query params.
83
+ - Emit **`vercel.json`** so `.html` is stripped, refresh works, and deep links resolve:
84
+ ```json
85
+ {
86
+ "cleanUrls": true,
87
+ "trailingSlash": false,
88
+ "headers": [
89
+ { "source": "/assets/(.*)", "headers": [
90
+ { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" } ] }
91
+ ]
92
+ }
93
+ ```
94
+ `cleanUrls: true` serves `platform.html` at `/platform` and 301-redirects `.html`.
95
+ Provide a `404.html`. Every nav/footer/internal link is extensionless.
96
+
97
+ ## Navigation system (vanilla JS)
98
+ - **Desktop nav** with optional dropdown/mega-menu; may include **Scroll Progress** + chapter
99
+ dots. Keyboard + `aria-expanded`/`aria-haspopup`. **Never hijacks scroll.**
100
+ - **Mobile nav**: full-screen overlay, accordion, focus-trap, ESC.
101
+ - **Multi-level nav** + **breadcrumbs** on deep pages; `aria-current="page"`.
102
+
103
+ ## Hard rules
104
+ 1. **Vanilla only** — no animation/scroll libraries (see stack). Hand-build the motion engine.
105
+ 2. **Storyboard each page.** A clear arc; pinned/scrub/reveal scenes with designed
106
+ choreography; big beats alternate with calm passages; one strong motion per scene.
107
+ 3. **Reduced motion + no scroll-jack (non-negotiable).** Fully honor `prefers-reduced-motion`
108
+ (final-state, unpinned, no scrub/parallax); never hijack native scroll; content readable
109
+ without motion; provide a "Reduce motion" toggle.
110
+ 4. **Tokens first, once.** All colors/type/spacing as `:root` vars; no scattered hex/px.
111
+ 5. **No section borders.** Separate scenes with space + animated background transitions.
112
+ `.section{border:0}`.
113
+ 6. **Mobile-first + responsive**; **unpin/shorten scenes on mobile**; multi-column → single;
114
+ no unintended horizontal scroll.
115
+ 7. **Semantic + accessible** per `accessibility-system.md` (full content in DOM, contrast in
116
+ motion, focus, vestibular safety). Non-negotiable.
117
+ 8. **Components from the library** (incl. scene components). Every component responsive,
118
+ accessible, reusable, production-ready.
119
+ 9. **Performance:** compositor-only animation, rAF-throttled passive scroll, IO reveals,
120
+ `content-visibility` on offscreen scenes, decoded/lazy sequence frames; target 60fps; high
121
+ Lighthouse (90+). System/Inter fonts.
122
+ 10. **SEO on every page** (below). **Real content, not lorem** (mark guesses `[PLACEHOLDER]`).
123
+ 11. **Self-verify** against anti-patterns + every companion checklist before done.
124
+
125
+ ## SEO requirements (every page)
126
+ Unique `<title>` + meta description (150–160); **Open Graph** + **Twitter card**
127
+ (`summary_large_image`) + OG image; **canonical** (clean URL); **JSON-LD** (`Organization` +
128
+ `WebSite` site-wide; `Product`, `FAQPage`, `BreadcrumbList`, `Article` where relevant);
129
+ **`sitemap.xml`** + **`robots.txt`**. (Content lives in HTML, not only in JS-driven motion,
130
+ so crawlers index it.)
131
+
132
+ ## Performance requirements
133
+ 60fps motion, compositor-only properties, rAF/IO, `content-visibility` offscreen, lazy/decoded
134
+ media, one fixed background where possible, cached assets (via `vercel.json`), no libraries —
135
+ high Lighthouse.
136
+
137
+ ## Boilerplate `<head>`
138
+ ```html
139
+ <!doctype html><html lang="en"><head>
140
+ <meta charset="utf-8">
141
+ <meta name="viewport" content="width=device-width, initial-scale=1">
142
+ <meta name="color-scheme" content="dark light">
143
+ <title><!-- Page · Brand --></title>
144
+ <meta name="description" content="<!-- 150–160 chars -->">
145
+ <link rel="canonical" href="https://brand.com/path">
146
+ <meta property="og:type" content="website">
147
+ <meta property="og:title" content="<!-- Page · Brand -->">
148
+ <meta property="og:description" content="<!-- … -->">
149
+ <meta property="og:url" content="https://brand.com/path">
150
+ <meta property="og:image" content="https://brand.com/assets/og.png">
151
+ <meta name="twitter:card" content="summary_large_image">
152
+ <link rel="stylesheet" href="/css/tokens.css">
153
+ <link rel="stylesheet" href="/css/styles.css">
154
+ <script type="application/ld+json"><!-- Organization / WebSite JSON-LD --></script>
155
+ </head>
156
+ <body>
157
+ <a class="skip-link" href="#main">Skip to content</a>
158
+ <header><!-- Navbar + scroll progress (links extensionless: /platform, /pricing) --></header>
159
+ <main id="main"><!-- hero scene + 10–12 scenes, animated bg transitions, no dividers --></main>
160
+ <footer><!-- Footer + "Reduce motion" toggle --></footer>
161
+ <script src="/js/main.js" defer></script>
162
+ </body></html>
163
+ ```
164
+
165
+ ## Required base CSS (no section borders; scene scaffold; reduced motion)
166
+ ```css
167
+ html, body { background: var(--bg-base); color: var(--text-secondary); }
168
+ .section { padding-block: var(--section-y); border: 0; } /* no borders/dividers between sections */
169
+ .section + .section { border-top: 0; }
170
+ .scene { position: relative; height: var(--track); }
171
+ .scene__stage { position: sticky; top: 0; height: 100vh; overflow: clip; }
172
+ @media (prefers-reduced-motion: reduce){
173
+ .scene { height: auto; } .scene__stage { position: static; height: auto; padding-block: var(--section-y); }
174
+ *,*::before,*::after { transition-duration:.001ms !important; animation-duration:.001ms !important; }
175
+ }
176
+ /* Separation = whitespace + animated --bg-scene-* transitions + pinned depth; never <hr>/dividers. */
177
+ ```
178
+
179
+ ## tokens.json shape (excerpt)
180
+ ```json
181
+ {
182
+ "color": { "bgBase":"#05060a", "scene":["#070912","#0b0814","#060e12","#0e0a08"],
183
+ "text": {"primary":"#f5f6fb","secondary":"#c2c7d6","muted":"#939ab0"},
184
+ "accent": {"base":"#6366f1","2":"#06b6d4","3":"#ec4899"} },
185
+ "space": { "4":"16px","6":"24px","8":"32px","16":"64px" },
186
+ "track": { "short":"150vh","base":"250vh","long":"400vh" },
187
+ "radius": { "lg":"16px","xl":"22px","pill":"999px" },
188
+ "type": { "display":"clamp(2.75rem,1.4rem + 6.6vw,6rem)", "body":"1rem" }
189
+ }
190
+ ```
191
+
192
+ ## Definition of done
193
+ **15+ pages (≈20), each with ≥10 sections/scenes (≈12) and a clear narrative arc (pinned/
194
+ scrub/reveal beats + calm passages), no borders/dividers between sections.** Pure HTML/CSS/
195
+ vanilla JS (no frameworks/animation libraries); motion is compositor-only, rAF/IO, 60fps;
196
+ **fully reduced-motion-aware (final-state, unpinned) with a toggle, and no scroll-jacking**;
197
+ clean extensionless URLs with `vercel.json` (refresh + deep links work); desktop nav + mobile
198
+ + breadcrumb + scroll progress; per-page SEO + sitemap; tokens centralized; fully responsive
199
+ (scenes unpin on mobile); AA accessible (contrast in motion, focus, vestibular-safe); zero
200
+ anti-patterns; could sit next to Apple/Stripe scroll storytelling — smooth, meaningful, accessible.