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,191 @@
1
+ ---
2
+ name: motion-storytelling-design-system
3
+ description: >-
4
+ A world-class, MOTION STORYTELLING design system for building scroll-driven narrative
5
+ websites — scrollytelling, pinned/sticky scenes, scrubbed sequences, choreographed
6
+ reveals, and parallax that tell a story as the visitor scrolls. Distilled from
7
+ motion-led references (Apple product pages, Stripe, Linear, Igloo Inc, Active Theory,
8
+ Cuberto, Awwwards winners) and modern AI sites (OpenAI, Anthropic, Perplexity, Cursor,
9
+ Runway). It gives coding/design/UI/branding/website-generation agents a complete,
10
+ reusable system: design philosophy, color/typography/spacing/grid/layout tokens, a
11
+ 17+ -component library (Scroll Scene, Pinned Sequence, Reveal Timeline…), a deep motion
12
+ system (scroll-linked, IntersectionObserver, scrub), accessibility + responsive rules,
13
+ and a production website-generation framework. The framework builds a multipage site
14
+ (15+ pages, 10+ sections/page, NO borders/dividers between sections) in PURE HTML/CSS/
15
+ vanilla JS (no React/Vue/GSAP/Framer/Tailwind/Bootstrap/jQuery/any library), with clean
16
+ Vercel-ready URLs (no `.html`), navigation, and full SEO. Use when the user asks for a
17
+ "scrollytelling / motion / animated narrative website", "scroll-driven story", "pinned
18
+ sections", "make it like Apple/Stripe scroll", or "a motion design system / tokens". The
19
+ full system is baked into the companion files (live research optional). Outputs a
20
+ generated site/system into a `website/` folder.
21
+ ---
22
+
23
+ # Motion Storytelling Design System
24
+
25
+ A complete, agent-ready design system for **scroll-driven narrative websites** — where the
26
+ page tells a story as you scroll: scenes **pin** while their content animates, sequences
27
+ **scrub** frame-by-frame to scroll position, elements **reveal** in choreographed order,
28
+ and gentle parallax adds depth. The craft of Apple product pages and award-winning
29
+ "scrollytelling," built **performantly and accessibly** in pure vanilla. Distilled from
30
+ Apple, Stripe, Linear, Igloo Inc, Active Theory, Cuberto, Awwwards winners, and modern AI
31
+ sites (OpenAI, Anthropic, Perplexity, Cursor, Runway).
32
+
33
+ This skill is the **single source of truth**. The detailed system lives in the companion
34
+ files in this folder — read the ones relevant to the task, then generate.
35
+
36
+ ## The core idea — the scroll is the narrator
37
+
38
+ - **Story beats, not just sections.** Each page is a sequence of **scenes** that advance a
39
+ narrative; scrolling is the timeline.
40
+ - **Pin + animate.** Key scenes use `position: sticky` to **pin** while their content
41
+ transforms (text swaps, layers move, a product assembles, a number counts).
42
+ - **Scrub sequences.** Hero/feature moments **scrub** an animation (image sequence, SVG
43
+ draw, transform) tied to scroll progress through a tall scroll track.
44
+ - **Choreographed reveals.** Elements enter in a deliberate order/stagger as they cross the
45
+ viewport (via `IntersectionObserver`), guiding the eye through the story.
46
+ - **Motion with meaning + restraint.** Every animation serves the narrative or clarifies
47
+ the product; it's smooth, performant, and **never** required to access content.
48
+
49
+ ## Hard structural requirements (MANDATORY — never skip)
50
+
51
+ These are non-negotiable and override any conflicting guidance elsewhere:
52
+
53
+ 1. **Multipage — 15+ pages (≈20).** Always generate a **full multipage website with
54
+ more than 15 distinct pages** (not a single landing page) — a real site map.
55
+ 2. **10+ sections per page (≈12).** Every page contains **at least 10 full sections /
56
+ scenes**, composed from the layout + component library.
57
+ 3. **No borders/dividers between sections.** **Zero border widths, lines, rules, or
58
+ `<hr>` between sections.** Separate scenes with **whitespace, background transitions,
59
+ pinned-scene depth, and motion choreography** — never a section border.
60
+ 4. **Pure HTML + CSS + vanilla JS — no frameworks/libraries.** The generated site uses
61
+ **only HTML5, CSS3, and vanilla JavaScript** for all motion — `IntersectionObserver`,
62
+ scroll listeners (rAF-throttled), the CSS Scroll-Linked Animations API
63
+ (`animation-timeline: scroll()/view()`) where supported, `<canvas>`/SVG. **No GSAP,
64
+ ScrollMagic, Lenis, Framer, Locomotive, AOS**, no React/Vue/Angular/Svelte/Next, no
65
+ Bootstrap/Tailwind/any CSS framework, no jQuery/any library, no build step. (Exporting
66
+ `tokens.json` for other agents is fine — that's data, not a framework.)
67
+ 5. **Clean, Vercel-ready URLs.** All routes are **extensionless** (`/pricing`, not
68
+ `/pricing.html`); ship a `vercel.json` (`cleanUrls: true`) plus `sitemap.xml` /
69
+ `robots.txt` so production refresh and deep links work.
70
+ 6. **Full navigation + SEO.** Desktop nav (dropdown/mega-menu where useful) + mobile menu
71
+ + breadcrumbs; per-page SEO (unique title/description, Open Graph, Twitter card,
72
+ canonical, JSON-LD). Every component: responsive, accessible, reusable, production-ready.
73
+
74
+ See `website-generation-rules.md` for the required page list, required sections/scenes, the
75
+ `vercel.json`, navigation, and SEO specifics. Enforce in code: `.section { border: 0 }` and
76
+ never place `<hr>`/divider elements between sections.
77
+
78
+ ## When to use
79
+
80
+ Building or designing any landing page, marketing site, or product site that should be
81
+ **scroll-driven / motion-led / cinematic** (Apple/Stripe/award-winning scrollytelling
82
+ energy) — for a product, AI startup, developer platform, or launch — or producing **design
83
+ tokens / a design system** for other agents.
84
+
85
+ ## The companion files (read what you need)
86
+
87
+ | File | What it gives you |
88
+ |---|---|
89
+ | `design-principles.md` | The storytelling philosophy, motion hierarchy, restraint, do/don'ts |
90
+ | `color-system.md` | Cinematic palette + scene-transition tokens (default dark) as CSS vars |
91
+ | `typography-system.md` | Fonts, fluid type scale, kinetic-type roles |
92
+ | `spacing-system.md` | 4/8-pt scale, container widths, scroll-track + scene rhythm |
93
+ | `layout-system.md` | Grid + canonical scene layouts (pinned, scrub, reveal, horizontal) |
94
+ | `component-library.md` | 17 components + Scroll Scene / Pinned Sequence / Reveal Timeline |
95
+ | `motion-system.md` | The engine: IntersectionObserver, scroll-link, scrub, reduced-motion |
96
+ | `accessibility-system.md` | Reduced motion (critical), focus, content-without-motion, vestibular safety |
97
+ | `website-generation-rules.md` | Pure-vanilla build: pages, clean URLs + `vercel.json`, nav, SEO |
98
+ | `example-page-structures.md` | Ready scroll-narrative page blueprints |
99
+
100
+ All tokens use the same names across files, so they compose into one stylesheet.
101
+
102
+ ## Phase 1 — Research is baked in (live analysis OPTIONAL)
103
+
104
+ The design intelligence extracted from the reference sites is **already encoded in the
105
+ companion files** — patterns, palettes, type scales, spacing, the motion engine, scene
106
+ components, choreography. **Do NOT re-scrape the references for the basics; use the baked-in
107
+ system** (saves tokens). Only browse live when the user wants a *current* look from a
108
+ specific site, a brand-new pattern not covered here, or to verify a font/feature.
109
+
110
+ What the baked-in system already captures (the Phase-1 extraction): design patterns, visual
111
+ hierarchy, typography/spacing/grid/layout systems, color + gradient systems, animation/
112
+ motion (the focus here), navigation, CTA + hero patterns, trust/enterprise/social-proof
113
+ components, footer/pricing/feature structures, interactive + micro-interactions, glassmorphism
114
+ usage, accessibility, mobile responsiveness, developer-experience patterns, and AI-startup
115
+ conversion patterns — all expressed as scroll-driven story.
116
+
117
+ ## Phase 2 — Generate (the workflow)
118
+
119
+ 1. **Clarify intent:** site type + the **story** to tell (problem → product → proof →
120
+ outcome), theme (default cinematic dark, or light), accent, and page set.
121
+ 2. **Lock the tokens:** start from `color-system.md` + `typography-system.md` +
122
+ `spacing-system.md`. Emit them once as `:root` CSS variables (and `tokens.json`).
123
+ 3. **Storyboard the scroll:** for each page, write the beat sheet — which scenes pin, which
124
+ scrub, which reveal — and the choreography order. Motion is designed, not sprinkled.
125
+ 4. **Compose layouts + components:** build scenes with Scroll Scene / Pinned Sequence /
126
+ Reveal Timeline + the standard components.
127
+ 5. **Engineer motion + a11y:** implement per `motion-system.md` (performant, rAF/IO based),
128
+ **fully gated by `prefers-reduced-motion`**; meet every rule in `accessibility-system.md`
129
+ (content readable with motion off).
130
+ 6. **Emit code:** follow `website-generation-rules.md` to produce clean, semantic, responsive
131
+ **pure HTML + CSS + vanilla JS** plus tokens, `vercel.json`, `sitemap.xml`, `robots.txt`.
132
+ 7. **Self-check** against the anti-patterns and the verification checklist below.
133
+
134
+ ## Output
135
+
136
+ Unless the user specifies otherwise, write the generated **multipage site (15+ pages, ~20)**
137
+ into a `website/` folder in the project root:
138
+ - `website/index.html` **plus 15+ additional pages** (≥10 scenes each, scroll-driven, no
139
+ inter-section borders), linked with **extensionless URLs** (`/pricing`)
140
+ - `website/css/tokens.css` + `website/css/styles.css`
141
+ - `website/js/main.js` (vanilla nav + the motion engine: IO, scroll-link, scrub)
142
+ - `website/vercel.json`, `website/sitemap.xml`, `website/robots.txt`
143
+ - `website/assets/` (sequence frames, SVGs, media, og images)
144
+ - `website/tokens.json` (machine-readable tokens for other agents)
145
+
146
+ When the user only wants the **system** (not a site), emit the tokens + component specs.
147
+
148
+ ## Default look (baked-in identity)
149
+
150
+ A cinematic dark canvas with deep, evolving gradients that **shift between scenes**, bold
151
+ display type that moves with intent (kinetic headlines), one vivid accent that traces the
152
+ story, layered depth (parallax), and product/SVG sequences that assemble on scroll. Smooth,
153
+ premium, and purposeful — never a jittery, janky, motion-for-its-own-sake mess. (Default
154
+ cinematic dark; a light theme is included. Siblings: `ai-dark-futuristic-design-system`,
155
+ `apple-premium-minimal-design-system`, `product-demo-first-design-system`,
156
+ `bento-grid-design-system`, `glassmorphism-design-system`, `editorial-luxury-design-system`.)
157
+
158
+ ## Anti-patterns (never ship these)
159
+
160
+ Outdated startup designs · Bootstrap/template look · generic SaaS layouts · poor typography
161
+ · weak visual hierarchy · overloaded gradients · excessive glassmorphism · poor accessibility
162
+ · inconsistent spacing · **motion for its own sake · janky/janking scroll-jacking that fights
163
+ the user · content trapped behind animation (unreadable until it plays) · no reduced-motion
164
+ fallback · heavy animation libraries · layout-thrashing/janky scroll · borders or dividers
165
+ between sections · single-page sites or thin pages with fewer than 10 sections · any
166
+ framework/library in the shipped site · `.html` in URLs**. The result must feel like Apple/
167
+ Stripe scroll storytelling — smooth, meaningful, accessible — never gimmicky.
168
+
169
+ ## Verification checklist (run before finishing)
170
+
171
+ 0. **Multipage scale met:** the site has **> 15 pages** (≈20), each page has **≥ 10
172
+ sections/scenes** (≈12), and there are **no borders/dividers between sections**.
173
+ 0b. **Storytelling met:** each page has a clear narrative arc; uses pinned/scrub/reveal
174
+ scenes with designed choreography (not random animation); motion serves the story.
175
+ 0c. **Reduced motion met (critical):** with `prefers-reduced-motion: reduce`, all content is
176
+ fully readable/usable in final state — no pinning that traps content, no scrub-gated text,
177
+ no essential info conveyed only by animation. No scroll-jacking that blocks normal scroll.
178
+ 0d. **Pure vanilla + clean URLs:** zero frameworks/animation libraries; routes extensionless
179
+ with a working `vercel.json` (`cleanUrls`), `sitemap.xml`, `robots.txt`.
180
+ 0e. **Nav + SEO:** desktop nav/dropdowns + mobile menu + breadcrumbs; per-page SEO + JSON-LD.
181
+ 1. Tokens emitted once (`:root`/`tokens.css`) and reused — no scattered one-off hex.
182
+ 2. Type uses the fluid scale; spacing uses the 4/8-pt scale; layout uses the grid +
183
+ container widths — all from the companion files.
184
+ 3. Every scene is a recognized layout; every component matches `component-library.md`.
185
+ 4. Body text ≥ 4.5:1 contrast, large text ≥ 3:1; visible focus; semantic landmarks + alt text.
186
+ 5. **Performance:** animations use `transform`/`opacity` (compositor-friendly), rAF-throttled
187
+ scroll, IO for reveals; no layout thrash; 60fps target; sequences lazy/decoded. Fully
188
+ responsive (360 → 1440+), no horizontal scroll (except intentional, keyboard-accessible
189
+ horizontal scenes), tap targets ≥ 44px.
190
+ 6. Trips **zero** anti-patterns; no scroll-jacking that fights the user; motion is smooth.
191
+ 7. Output feels like Apple/Stripe scroll storytelling — cinematic, meaningful, accessible.
@@ -0,0 +1,71 @@
1
+ # Accessibility System — Motion Storytelling
2
+
3
+ Scroll-driven motion is the **highest-risk** style for accessibility — animation can cause
4
+ vestibular discomfort, trap content, hijack scrolling, and break keyboard use. This system
5
+ bakes WCAG 2.1 AA (incl. 2.2.2 Pause/Stop/Hide and 2.3.3 Animation from Interactions) into
6
+ the craft so the storytelling stays inclusive.
7
+
8
+ ## Reduced motion (the non-negotiable rule)
9
+ - **Honor `prefers-reduced-motion: reduce` everywhere.** With it on: render every scene in
10
+ its **final state**, **unpin** scenes, disable scrub/parallax/horizontal/kinetic motion,
11
+ show final frames, set counters to final values. In JS, **don't attach** scroll/scrub/
12
+ parallax listeners when reduced motion is set (see motion-system).
13
+ - **No essential content is gated behind animation.** All text/visuals are present in the DOM
14
+ and readable without motion; an animation only changes presentation.
15
+ - Provide a **"Reduce motion" toggle** in the footer/settings for users who can't set the OS
16
+ preference; persist it (localStorage) and apply the same final-state path.
17
+
18
+ ## No scroll-jacking / safe scrolling
19
+ - **Never hijack native scroll** (no `preventDefault` on wheel, no forced smooth-snap that
20
+ fights the user, no animation libraries that take over scrolling). Pinning uses CSS
21
+ `position: sticky` so normal scrolling and skimming always work.
22
+ - The page must be **usable with keyboard, screen reader, and a mouse wheel** at any speed;
23
+ users can scroll past any scene to reach content quickly.
24
+ - Horizontal scenes must be **keyboard-operable** (focus moves through items, advancing the
25
+ scene) and have a vertical-stack fallback.
26
+
27
+ ## Color & contrast (during motion)
28
+ - **Body text ≥ 4.5:1**, large/UI ≥ 3:1, measured at the **brightest moment** of any moving
29
+ gradient/background the text passes over — verify mid-animation, not just at rest.
30
+ - Keep gradients/atmospheres **calm behind text**; dim/scrim where copy sits.
31
+ - **Non-text contrast ≥ 3:1** for controls, focus rings, progress indicators.
32
+ - Don't encode meaning in color/motion alone; provide text/state.
33
+
34
+ ## Focus & keyboard
35
+ - **Always-visible focus:** `:focus-visible { outline:2px solid var(--ring); outline-offset:2px }`.
36
+ - Logical tab order matching reading order; **focusing an element inside a pinned/scrolled
37
+ scene scrolls it into view** and doesn't break the pin. No keyboard traps (except intended
38
+ modal focus-trap, ESC). **Skip link** to `#main` first in DOM.
39
+
40
+ ## Semantics & structure
41
+ - One `<h1>` per page; ordered headings (size with CSS). Landmarks `<header><nav><main id=
42
+ "main"><section><footer>`. Numbered sequences `<ol>`; quotes `<blockquote><cite>`; code
43
+ `<pre><code>`. Native elements over ARIA; minimal correct ARIA.
44
+ - A **scroll progress** indicator uses `role="progressbar"` (or is decorative + `aria-hidden`);
45
+ chapter dots are a labelled `<nav>` with in-page links.
46
+
47
+ ## Vestibular safety
48
+ - Keep parallax/scale amplitudes small; avoid large, fast, or full-screen continuous motion.
49
+ - Avoid spinning/zooming the whole viewport; no rapid flashing (> 3×/sec).
50
+ - Auto-playing background motion (e.g., gradient drift) must be subtle and **pausable**
51
+ (reduced-motion freezes it).
52
+
53
+ ## Media & forms
54
+ - Informative images/sequences have meaningful **`alt`** (and a final static frame);
55
+ decorative atmospheres/chrome are `aria-hidden`/`alt=""`. Captions for narrated video.
56
+ - Labelled, error-accessible forms; inputs legible against any scene.
57
+
58
+ ## Touch & responsive
59
+ - **Tap targets ≥ 44×44px**; **unpin/shorten scenes on mobile**; no unintended horizontal
60
+ scroll; intentional horizontal scenes are touch- and keyboard-operable; 200% zoom OK;
61
+ pinch-zoom not disabled.
62
+
63
+ ## Checklist (run before finishing)
64
+ 1. Reduced motion → all scenes final-state, unpinned, no scrub/parallax/kinetic; content complete.
65
+ 2. No scroll-jacking; native scroll + keyboard + screen reader all work; can skim past any scene.
66
+ 3. Text meets AA over the brightest moving background; gradients calm behind text.
67
+ 4. Visible focus; focusing inside a scene scrolls it in; skip link; logical order; no traps.
68
+ 5. Real semantics (ol/blockquote/landmarks); progress/chapter nav labelled or hidden.
69
+ 6. Parallax/scale subtle; nothing flashes; background motion pausable.
70
+ 7. Informative media has alt + static final frame; "Reduce motion" toggle present.
71
+ 8. 44px targets; scenes unpin on mobile; 200% zoom; zoom not disabled.
@@ -0,0 +1,101 @@
1
+ # Color System — Motion Storytelling
2
+
3
+ A cinematic palette built for **scenes that shift as you scroll**: a dark canvas, deep
4
+ evolving gradients that transition between chapters, one vivid accent that traces the story,
5
+ and accessible text at every animation state. Ships **cinematic dark by default**; a light
6
+ theme is included. Scenes separate via background transitions + depth — **never borders**.
7
+ Override `--accent-*` to rebrand. Contrast: body ≥ 4.5:1 at every motion state.
8
+
9
+ ## Tokens (`:root`) — cinematic dark (default)
10
+
11
+ ```css
12
+ :root {
13
+ /* ---- Canvas + scene backgrounds (chapters transition between these) ---- */
14
+ --bg-base: #05060a; /* deepest canvas */
15
+ --bg-scene-1: #070912; /* chapter 1 (cool) */
16
+ --bg-scene-2: #0b0814; /* chapter 2 (violet) */
17
+ --bg-scene-3: #060e12; /* chapter 3 (teal) */
18
+ --bg-scene-4: #0e0a08; /* chapter 4 (warm) */
19
+ --bg-elevated:#12141d; /* cards/panels over a scene */
20
+
21
+ /* ---- Cinematic gradients (used as scene atmospheres; animate position/opacity) ---- */
22
+ --grad-scene: radial-gradient(60% 70% at 50% 30%, rgba(99,102,241,0.28), transparent 60%);
23
+ --grad-accent: linear-gradient(120deg, #6366f1 0%, #06b6d4 50%, #ec4899 100%);
24
+ --grad-aurora: radial-gradient(45% 55% at 20% 20%, rgba(99,102,241,0.30) 0%, transparent 60%),
25
+ radial-gradient(50% 60% at 80% 30%, rgba(6,182,212,0.24) 0%, transparent 60%),
26
+ radial-gradient(50% 60% at 60% 90%, rgba(236,72,153,0.18) 0%, transparent 62%);
27
+ --grad-text: linear-gradient(90deg, #ffffff 0%, #c7d2fe 55%, #67e8f9 100%);
28
+
29
+ /* ---- Surfaces ---- */
30
+ --surface-1: #12141d;
31
+ --surface-2: #181b27;
32
+ --surface-glass: rgba(18,20,29,0.5);
33
+
34
+ /* ---- Text ramp (must hold AA over moving gradients) ---- */
35
+ --text-primary: #f5f6fb;
36
+ --text-secondary: #c2c7d6;
37
+ --text-muted: #939ab0;
38
+ --text-faint: #636a80; /* decorative/disabled — non-essential only */
39
+ --text-on-accent: #0a0712;
40
+
41
+ /* ---- Borders / hairlines (panels/inputs — NOT between scenes) ---- */
42
+ --border-subtle: rgba(255,255,255,0.07);
43
+ --border-default: rgba(255,255,255,0.12);
44
+ --ring: #a5b4fc; /* focus ring (high-contrast) */
45
+
46
+ /* ---- Accent (the thread that traces the story) ---- */
47
+ --accent: #6366f1; /* indigo */
48
+ --accent-hover: #7c80f7;
49
+ --accent-press: #5457e6;
50
+ --accent-2: #06b6d4; /* cyan — secondary beat */
51
+ --accent-3: #ec4899; /* magenta — climactic beat (sparing) */
52
+ --accent-soft: rgba(99,102,241,0.16);
53
+
54
+ /* ---- Semantic ---- */
55
+ --success: #34d399; --success-soft: rgba(52,211,153,0.16);
56
+ --warning: #fbbf24; --warning-soft: rgba(251,191,36,0.16);
57
+ --error: #fb7185; --error-soft: rgba(251,113,133,0.16);
58
+ --info: #38bdf8; --info-soft: rgba(56,189,248,0.16);
59
+
60
+ /* ---- Elevation ---- */
61
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.5);
62
+ --shadow-md: 0 14px 40px rgba(0,0,0,0.45);
63
+ --shadow-lg: 0 30px 80px rgba(0,0,0,0.55);
64
+ --glow: 0 0 40px var(--accent-soft);
65
+ }
66
+ ```
67
+
68
+ ## Palette roles
69
+
70
+ - **Canvas + scene backgrounds** (`--bg-*`): the page is one dark canvas; **scenes/chapters
71
+ transition between `--bg-scene-*`** as the story progresses (animate `background-color`/an
72
+ overlay opacity on scroll). These shifts replace section borders.
73
+ - **Cinematic gradients** (`--grad-*`): scene atmospheres — animate their position/opacity
74
+ with scroll for living depth (`--grad-aurora` behind a hero; `--grad-scene` per chapter).
75
+ Keep low-contrast **behind text**.
76
+ - **Surfaces** (`--surface-*`): cards/panels that ride within a scene.
77
+ - **Text** (`--text-*`): must clear AA over the *brightest* gradient state a line can pass
78
+ through during animation — verify mid-transition, not just at rest. Never `--text-faint`
79
+ for content.
80
+ - **Borders** (`--border-*`): panel/input hairlines only — not scene dividers.
81
+ - **Accent** (`--accent`, `--accent-2/3`, `--grad-accent`): one thread tracing the story —
82
+ a line that draws, a highlight that moves; escalate to `--accent-2/3` at climactic beats.
83
+ - **Semantic**: status/badges/validation only.
84
+
85
+ ## Usage rules
86
+
87
+ 1. **Scenes are chapters of color.** Move between `--bg-scene-*` to signal narrative
88
+ progress — this *is* how sections separate (with motion + space), **never borders**.
89
+ 2. **Keep gradients calm behind text.** Animate atmosphere where there's no copy; dim/scrim
90
+ behind headlines and body so contrast holds at every frame.
91
+ 3. **One accent thread.** Don't scatter all three accents; escalate deliberately at beats.
92
+ 4. **Verify contrast in motion.** Test text against the gradient's brightest moment.
93
+ 5. **Respect reduced motion:** with motion off, scenes settle to a clean static state with
94
+ the same colors/contrast (no mid-animation freeze).
95
+
96
+ ## Optional light theme
97
+
98
+ `[data-theme="light"]`: `--bg-base:#f7f8fc; --bg-scene-1:#f3f5fb; --bg-scene-2:#f6f3fc;
99
+ --bg-scene-3:#eef7f8; --surface-1:#ffffff; --text-primary:#0b0d14; --text-secondary:#3a4055;
100
+ --text-muted:#5d6480; --accent:#4f46e5;` and re-verify contrast (incl. mid-transition).
101
+ **Cinematic dark is the default identity.**
@@ -0,0 +1,122 @@
1
+ # Component Library — Motion Storytelling
2
+
3
+ Specs for the 17 required components **plus the storytelling components** (Scroll Scene,
4
+ Pinned Sequence, Reveal Timeline, Horizontal Scene, Scroll Progress). Each: purpose, anatomy,
5
+ tokens, states, responsive + a11y. Semantic HTML; shared tokens; **no borders between
6
+ sections**; full text in the DOM (animation only affects presentation).
7
+
8
+ Shared primitives:
9
+
10
+ ```css
11
+ .btn { display:inline-flex; align-items:center; gap: var(--space-2);
12
+ font-weight:600; font-size:.9375rem; padding: var(--space-3) var(--space-6);
13
+ border-radius: var(--radius-pill); border:1px solid transparent; cursor:pointer;
14
+ transition: transform .15s ease, background .2s ease, box-shadow .2s ease; }
15
+ .btn:active { transform: translateY(1px); }
16
+ .btn-primary { background: var(--accent); color: var(--text-on-accent); box-shadow: var(--glow); }
17
+ .btn-primary:hover { background: var(--accent-hover); }
18
+ .btn-ghost { background: transparent; color: var(--text-primary); border-color: var(--border-default); }
19
+ .card { background: var(--surface-1); border:1px solid var(--border-subtle);
20
+ border-radius: var(--radius-xl); padding: var(--space-8); }
21
+ :where(a,button,input,[tabindex]):focus-visible { outline:2px solid var(--ring);
22
+ outline-offset:2px; border-radius: var(--radius-sm); }
23
+ ```
24
+
25
+ ## ★ Storytelling components (the signature)
26
+ - **Scroll Scene** (`.scene` + `.scene__stage`) — a pinned stage over a tall scroll track;
27
+ the base for pinned/scrub beats. Unpins on mobile/reduced motion (final state shown).
28
+ - **Pinned Sequence** — a Scroll Scene whose stage **scrubs** a sequence to scroll progress:
29
+ image frames (`<canvas>`/swapped `<img>`), an SVG draw (`stroke-dashoffset`), or transforms.
30
+ Full meaning available statically (final frame + alt/text). Performant (rAF, decoded frames).
31
+ - **Reveal Timeline** — a section whose children enter in an ordered stagger via
32
+ `IntersectionObserver` (`.in`); the workhorse for non-pinned scenes.
33
+ - **Horizontal Scene** — a pinned stage translating a track on the X axis as you scroll Y;
34
+ **keyboard-accessible** (focus advances it) with a vertical-stack fallback (mobile/reduced motion).
35
+ - **Scroll Progress** — a slim top progress bar and/or chapter dots for orientation;
36
+ `role="progressbar"`/nav; updates via scroll (rAF).
37
+
38
+ All motion: see `motion-system.md`. All gated by `prefers-reduced-motion`.
39
+
40
+ ---
41
+
42
+ ## 1. Navbar
43
+ Sticky bar; transparent over the hero, gains background/blur on scroll. Logo · nav links ·
44
+ primary CTA + "Sign in" · mobile hamburger. **Extensionless hrefs**. Optional dropdown/
45
+ mega-menu (vanilla). May host **Scroll Progress** + chapter dots. Mobile: full-screen
46
+ overlay, focus-trap, ESC. a11y: `aria-current`, `aria-expanded`; nav never hijacks scroll.
47
+
48
+ ## 2. Hero
49
+ Layout SH-A/SH-B/SH-C. Kinetic display H1 (line reveal) · deck · CTA pair · animated gradient
50
+ atmosphere or a scrub sequence. One H1, one primary CTA. Full headline text in DOM; motion
51
+ is presentation. Decorative atmosphere `aria-hidden`. Reduced motion → static hero.
52
+
53
+ ## 3. Feature Grid
54
+ `.grid.cols-3` of `.card`s revealed via **Reveal Timeline** (stagger). Icon · H3 · body ·
55
+ optional link. Calm passage between big beats. Hover lift.
56
+
57
+ ## 4. Bento Grid
58
+ Asymmetric tiles revealed in sequence; one tile may contain a mini scrub/clip. Single column
59
+ on mobile.
60
+
61
+ ## 5. Testimonials
62
+ Quotes revealed in sequence, or a pinned scene where quotes swap on scroll. `<blockquote>` +
63
+ `<cite>`. Carousel optional (buttons + `aria`).
64
+
65
+ ## 6. Logos Section
66
+ "Trusted by" + logo row; gentle staggered reveal or slow pausable marquee. `<img alt>`.
67
+
68
+ ## 7. Pricing
69
+ Layout P-A/P-B. Tier cards reveal in sequence; highlighted tier accent + "Most popular";
70
+ monthly/annual toggle. Light motion (don't over-animate a decision moment). a11y: real switch/radio.
71
+
72
+ ## 8. FAQ
73
+ Accordion; items reveal on enter. `<button>` + collapsible answer (height/opacity). a11y:
74
+ `aria-expanded`/`aria-controls`. Content readable without motion.
75
+
76
+ ## 9. CTA → **Finale**
77
+ Layout C-A: the story's payoff — a closing pinned/parallax beat with a big line + **primary
78
+ CTA**. `--section-y-lg`, no border. Reduced motion → static band.
79
+
80
+ ## 10. Footer
81
+ Mega footer; minimal motion (a subtle reveal at most). Brand · columns · legal · social.
82
+ `<footer>`, `<nav>` lists.
83
+
84
+ ## 11. Dashboard Preview
85
+ Product app shell revealed via **Pinned Sequence** (assembles/scrubs) or a clean reveal.
86
+ Real-looking data; final state is a complete static screenshot with alt. Decorative chrome `aria-hidden`.
87
+
88
+ ## 12. Agent Workflow Section
89
+ A **pinned narrative** (ST-A) or **reveal timeline**: steps (Plan → Retrieve → Act → Verify)
90
+ advance with scroll, a traveling accent connector tracing the flow. a11y: ordered `<ol>` text
91
+ equivalent; readable statically.
92
+
93
+ ## 13. Code Preview
94
+ Code in a window-framed card; lines can **type/highlight on reveal** (reduced motion → full
95
+ code shown). `<pre><code>`; copy `aria-label`. Never gate the code behind animation.
96
+
97
+ ## 14. Terminal Preview
98
+ Terminal card; command **types on scroll-in** (reduced motion → final output shown). Real text.
99
+
100
+ ## 15. Trust Section
101
+ Big metrics that **count up** on reveal (final value in DOM); accent on numbers. Often a calm
102
+ beat after a big scene. tabular-nums.
103
+
104
+ ## 16. Security Section
105
+ Compliance badges + assurances; gentle staggered reveal. Calm, factual. Badges alt text.
106
+
107
+ ## 17. Enterprise Section
108
+ "Built for enterprise" beat: value props reveal in sequence + "Talk to sales" CTA. No border.
109
+
110
+ ---
111
+
112
+ ## Component rules
113
+ - **Full content in the DOM; motion is presentation.** Every component is complete and
114
+ readable with motion disabled (reduced motion → final state).
115
+ - **Storytelling components gate on `prefers-reduced-motion`** and **unpin on mobile**; never
116
+ trap content or block normal scrolling.
117
+ - Compose from shared `.btn`/`.card`/`.scene`/tokens — no animation libraries.
118
+ - Every interactive element has hover **and** `:focus-visible`; horizontal scenes are
119
+ keyboard-operable; components reflow to single column by `md`/`sm`.
120
+ - Decorative visuals/atmospheres `aria-hidden`; informative media has meaningful `alt`.
121
+ - Restraint: one strong motion per scene; alternate big beats with calm sections; performant
122
+ (transform/opacity, rAF/IO) — **never** layout-thrashing or scroll-jacking.
@@ -0,0 +1,81 @@
1
+ # Design Principles — Motion Storytelling
2
+
3
+ The philosophy distilled from motion-led references (Apple product pages, Stripe, Linear,
4
+ Igloo Inc, Active Theory, Cuberto, Awwwards winners) and modern AI sites (OpenAI, Anthropic,
5
+ Perplexity, Cursor, Runway). The guiding tension: scroll-driven motion is captivating but
6
+ easy to ruin — this system makes it **purposeful, performant, and accessible**.
7
+
8
+ ## The one-sentence philosophy
9
+
10
+ **The scroll is the narrator.** Design each page as a story told through scroll — scenes
11
+ pin, sequences scrub, elements reveal in order — where every motion advances the narrative
12
+ or clarifies the product, and the content is always readable even with motion off.
13
+
14
+ ## Core principles
15
+
16
+ 1. **Story first, motion second.** Write the narrative (problem → product → proof → outcome)
17
+ before choreographing anything. Motion expresses the story; it isn't the story.
18
+ 2. **Every animation earns its place.** It advances a beat, reveals structure, demonstrates
19
+ the product, or directs attention. If it does none of these, cut it.
20
+ 3. **Pin to focus.** Use sticky **pinned scenes** to hold a moment while its content
21
+ transforms — the viewer dwells on one idea as it unfolds.
22
+ 4. **Scrub to demonstrate.** Tie a sequence (assembly, SVG draw, count, layer move) to
23
+ scroll progress so the viewer *controls* the reveal — satisfying and clear.
24
+ 5. **Choreograph reveals.** Elements enter in a deliberate order and stagger as they cross
25
+ the viewport, leading the eye along the narrative.
26
+ 6. **Depth through parallax — gently.** Layers move at different rates for cinematic depth;
27
+ keep it subtle to avoid disorientation.
28
+ 7. **Smooth, never janky.** 60fps via compositor-only properties (`transform`/`opacity`),
29
+ rAF-throttled scroll, `IntersectionObserver`. Performance *is* the aesthetic.
30
+ 8. **Never hijack the user.** No scroll-jacking that fights native scrolling, traps the
31
+ user, or makes content unreachable. The page must scroll normally and be skimmable.
32
+ 9. **Accessible by construction.** Content is fully readable with motion off; honor
33
+ `prefers-reduced-motion`; nothing essential is gated behind an animation.
34
+ 10. **Restraint within drama.** A few strong, well-built moments beat dozens of twitchy
35
+ effects. Calm passages let the big beats land.
36
+
37
+ ## Motion hierarchy (how much movement, where)
38
+
39
+ - **Hero / chapter beats:** the boldest motion — a scrub sequence or pinned kinetic headline.
40
+ - **Feature scenes:** medium — pinned product demos, layered reveals, transforms.
41
+ - **Supporting content:** light — staggered fade/rise reveals as sections enter.
42
+ - **Body/reading:** minimal — text appears cleanly; never animate long paragraphs in.
43
+ - **Micro:** hover/press feedback, magnetic buttons, link underlines, nav morphs.
44
+
45
+ ## Storytelling devices
46
+
47
+ - **Pinned scene:** a tall section whose inner content sticks and animates through scroll.
48
+ - **Scrubbed sequence:** scroll progress drives a timeline (frames/SVG/transform).
49
+ - **Reveal timeline:** ordered, staggered entrance of a scene's elements.
50
+ - **Scene transition:** background/gradient shifts between scenes (the "chapter change").
51
+ - **Horizontal scene:** a section that scrolls sideways as you scroll down (used sparingly,
52
+ keyboard-accessible, with a normal-scroll fallback).
53
+ - **Kinetic type:** headlines that assemble line-by-line, mask-reveal, or track the scroll.
54
+ - **Progress cue:** a slim scroll progress indicator / chapter dots for orientation.
55
+
56
+ ## Visual-hierarchy laws
57
+
58
+ - **One H1 per page**, the anchor of the opening scene.
59
+ - **Motion = importance.** The most important idea gets the strongest, most dwelt-on motion.
60
+ - **Contrast ladder** holds at every animation state — text stays AA mid-transition.
61
+ - **One primary CTA per viewport.**
62
+ - **Group by scene + space + background**, not borders between sections.
63
+ - **Accent traces the story** — one vivid accent threads through the narrative (a line that
64
+ draws, a highlight that moves), not scattered everywhere.
65
+
66
+ ## Reference cues (what each does well)
67
+
68
+ - **Apple:** scrubbed product sequences, pinned scenes, immaculate performance + restraint.
69
+ - **Stripe / Linear:** purposeful scroll reveals, gradient scene transitions, polish.
70
+ - **Igloo Inc / Active Theory / Cuberto / Awwwards:** cinematic, inventive scroll narratives
71
+ (borrow the craft; keep it accessible and performant).
72
+
73
+ ## Do / Don't
74
+
75
+ **Do:** storyboard first · pin to focus · scrub to demonstrate · choreograph reveals ·
76
+ subtle parallax · compositor-only 60fps motion · one accent tracing the story · readable
77
+ with motion off · scroll progress cues.
78
+
79
+ **Don't:** motion for its own sake · scroll-jacking that fights the user · content trapped
80
+ until an animation plays · janky/layout-thrashing effects · animation libraries · animating
81
+ long body text · disorienting parallax · no reduced-motion fallback · borders between scenes.