@mevdragon/vidfarm-devcli 0.13.0 → 0.15.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 (427) hide show
  1. package/.agents/skills/embedded-captions/CATALOG.md +93 -0
  2. package/.agents/skills/embedded-captions/SKILL.md +286 -0
  3. package/.agents/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -0
  4. package/.agents/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -0
  5. package/.agents/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  6. package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  7. package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  8. package/.agents/skills/embedded-captions/dna/README.md +148 -0
  9. package/.agents/skills/embedded-captions/dna/chrome.json +68 -0
  10. package/.agents/skills/embedded-captions/dna/cream.json +69 -0
  11. package/.agents/skills/embedded-captions/dna/documentary.json +62 -0
  12. package/.agents/skills/embedded-captions/dna/editorial.json +70 -0
  13. package/.agents/skills/embedded-captions/dna/glitch.json +82 -0
  14. package/.agents/skills/embedded-captions/dna/ink.json +65 -0
  15. package/.agents/skills/embedded-captions/dna/keynote.json +62 -0
  16. package/.agents/skills/embedded-captions/dna/loud.json +75 -0
  17. package/.agents/skills/embedded-captions/dna/neon.json +58 -0
  18. package/.agents/skills/embedded-captions/dna/velocity.json +89 -0
  19. package/.agents/skills/embedded-captions/modes/cinematic/README.md +48 -0
  20. package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  21. package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  22. package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  23. package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  24. package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  25. package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  26. package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  27. package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  28. package/.agents/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  29. package/.agents/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
  30. package/.agents/skills/embedded-captions/modes/standard/_motion.md +192 -0
  31. package/.agents/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
  32. package/.agents/skills/embedded-captions/references/aesthetic-principles.md +168 -0
  33. package/.agents/skills/embedded-captions/references/anti-patterns.md +188 -0
  34. package/.agents/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  35. package/.agents/skills/embedded-captions/references/caption-grouping.md +130 -0
  36. package/.agents/skills/embedded-captions/references/composition-craft.md +522 -0
  37. package/.agents/skills/embedded-captions/references/direction-catalog.md +138 -0
  38. package/.agents/skills/embedded-captions/references/example-renders/champion.html +371 -0
  39. package/.agents/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  40. package/.agents/skills/embedded-captions/references/failure-modes.md +145 -0
  41. package/.agents/skills/embedded-captions/references/layout-heuristics.md +238 -0
  42. package/.agents/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  43. package/.agents/skills/embedded-captions/references/rail.md +68 -0
  44. package/.agents/skills/embedded-captions/references/reference-bar.md +47 -0
  45. package/.agents/skills/embedded-captions/references/scene-types.md +94 -0
  46. package/.agents/skills/embedded-captions/references/test-set.md +66 -0
  47. package/.agents/skills/embedded-captions/references/typographic-moves.md +266 -0
  48. package/.agents/skills/embedded-captions/references/typography-presets.md +63 -0
  49. package/.agents/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
  50. package/.agents/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
  51. package/.agents/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
  52. package/.agents/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
  53. package/.agents/skills/embedded-captions/scripts/check-timing.cjs +173 -0
  54. package/.agents/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
  55. package/.agents/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
  56. package/.agents/skills/embedded-captions/scripts/gen-stroke-path.py +46 -0
  57. package/.agents/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
  58. package/.agents/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
  59. package/.agents/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -0
  60. package/.agents/skills/embedded-captions/scripts/make-composition.cjs +404 -0
  61. package/.agents/skills/embedded-captions/scripts/make-theme.cjs +8781 -0
  62. package/.agents/skills/embedded-captions/scripts/matte.cjs +294 -0
  63. package/.agents/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
  64. package/.agents/skills/embedded-captions/scripts/prepare.sh +39 -0
  65. package/.agents/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
  66. package/.agents/skills/embedded-captions/scripts/render-and-composite.sh +509 -0
  67. package/.agents/skills/embedded-captions/scripts/render-theme.sh +34 -0
  68. package/.agents/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
  69. package/.agents/skills/embedded-captions/scripts/transcribe.cjs +349 -0
  70. package/.agents/skills/embedded-captions/themes/PORTING.md +49 -0
  71. package/.agents/skills/embedded-captions/themes/README.md +244 -0
  72. package/.agents/skills/embedded-captions/themes/anchor.json +27 -0
  73. package/.agents/skills/embedded-captions/themes/arcade.json +51 -0
  74. package/.agents/skills/embedded-captions/themes/aurora.json +41 -0
  75. package/.agents/skills/embedded-captions/themes/biolume.json +35 -0
  76. package/.agents/skills/embedded-captions/themes/brush.json +74 -0
  77. package/.agents/skills/embedded-captions/themes/chalkboard.json +52 -0
  78. package/.agents/skills/embedded-captions/themes/dossier.json +56 -0
  79. package/.agents/skills/embedded-captions/themes/graffiti.json +62 -0
  80. package/.agents/skills/embedded-captions/themes/hologram.json +41 -0
  81. package/.agents/skills/embedded-captions/themes/inkwater.json +43 -0
  82. package/.agents/skills/embedded-captions/themes/laser.json +46 -0
  83. package/.agents/skills/embedded-captions/themes/lastpage.json +33 -0
  84. package/.agents/skills/embedded-captions/themes/neonsign.json +53 -0
  85. package/.agents/skills/embedded-captions/themes/nightcity.json +56 -0
  86. package/.agents/skills/embedded-captions/themes/ordnance.json +54 -0
  87. package/.agents/skills/embedded-captions/themes/papercut.json +37 -0
  88. package/.agents/skills/embedded-captions/themes/popup.json +46 -0
  89. package/.agents/skills/embedded-captions/themes/ransom.json +62 -0
  90. package/.agents/skills/embedded-captions/themes/scoreboard.json +54 -0
  91. package/.agents/skills/embedded-captions/themes/spectrum.json +46 -0
  92. package/.agents/skills/embedded-captions/themes/stardust.json +29 -0
  93. package/.agents/skills/embedded-captions/themes/stomp.json +43 -0
  94. package/.agents/skills/embedded-captions/themes/terminal.json +49 -0
  95. package/.agents/skills/embedded-captions/themes/thunder.json +44 -0
  96. package/.agents/skills/embedded-captions/themes/transit.json +44 -0
  97. package/.agents/skills/embedded-captions/themes/vhs.json +47 -0
  98. package/.agents/skills/faceless-explainer/SKILL.md +209 -0
  99. package/.agents/skills/faceless-explainer/references/cut-catalog.md +215 -0
  100. package/.agents/skills/faceless-explainer/references/motion-language.md +156 -0
  101. package/.agents/skills/faceless-explainer/references/story-design.md +248 -0
  102. package/.agents/skills/faceless-explainer/references/visual-design.md +146 -0
  103. package/.agents/skills/faceless-explainer/scripts/assemble-index.mjs +570 -0
  104. package/.agents/skills/faceless-explainer/scripts/audio.mjs +260 -0
  105. package/.agents/skills/faceless-explainer/scripts/build-frame.mjs +536 -0
  106. package/.agents/skills/faceless-explainer/scripts/captions.mjs +508 -0
  107. package/.agents/skills/faceless-explainer/scripts/lib/assets.mjs +55 -0
  108. package/.agents/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
  109. package/.agents/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
  110. package/.agents/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -0
  111. package/.agents/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
  112. package/.agents/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
  113. package/.agents/skills/faceless-explainer/scripts/transitions.mjs +320 -0
  114. package/.agents/skills/faceless-explainer/sub-agents/frame-worker.md +75 -0
  115. package/.agents/skills/flockposter/LICENSE +17 -0
  116. package/.agents/skills/flockposter/README.md +72 -0
  117. package/.agents/skills/flockposter/SKILL.md +562 -0
  118. package/.agents/skills/flockposter/examples/cli-instagram-reel.sh +21 -0
  119. package/.agents/skills/flockposter/examples/cli-multi-platform.json +69 -0
  120. package/.agents/skills/flockposter/examples/cli-tiktok-upload-only.sh +22 -0
  121. package/.agents/skills/flockposter/examples/cli-x-thread.sh +17 -0
  122. package/.agents/skills/flockposter/examples/cli-youtube-short.sh +21 -0
  123. package/.agents/skills/flockposter/examples/public-api-instagram-reel.json +28 -0
  124. package/.agents/skills/general-video/SKILL.md +143 -0
  125. package/.agents/skills/hyperframes/SKILL.md +160 -0
  126. package/.agents/skills/hyperframes-animation/SKILL.md +84 -0
  127. package/.agents/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  128. package/.agents/skills/hyperframes-animation/adapters/animejs.md +114 -0
  129. package/.agents/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  130. package/.agents/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -0
  131. package/.agents/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  132. package/.agents/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -0
  133. package/.agents/skills/hyperframes-animation/adapters/gsap.md +105 -0
  134. package/.agents/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  135. package/.agents/skills/hyperframes-animation/adapters/lottie.md +117 -0
  136. package/.agents/skills/hyperframes-animation/adapters/three.md +131 -0
  137. package/.agents/skills/hyperframes-animation/adapters/typegpu.md +178 -0
  138. package/.agents/skills/hyperframes-animation/adapters/waapi.md +101 -0
  139. package/.agents/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  140. package/.agents/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -0
  141. package/.agents/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -0
  142. package/.agents/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -0
  143. package/.agents/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -0
  144. package/.agents/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -0
  145. package/.agents/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -0
  146. package/.agents/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -0
  147. package/.agents/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -0
  148. package/.agents/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -0
  149. package/.agents/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  150. package/.agents/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  151. package/.agents/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -0
  152. package/.agents/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  153. package/.agents/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  154. package/.agents/skills/hyperframes-animation/blueprints-index.md +146 -0
  155. package/.agents/skills/hyperframes-animation/examples/assets/avatars/02.avif +0 -0
  156. package/.agents/skills/hyperframes-animation/examples/assets/brands/github.avif +0 -0
  157. package/.agents/skills/hyperframes-animation/examples/assets/brands/nvidia.avif +0 -0
  158. package/.agents/skills/hyperframes-animation/examples/assets/brands/visa.avif +0 -0
  159. package/.agents/skills/hyperframes-animation/examples/assets/brands/zoominfo.avif +0 -0
  160. package/.agents/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  161. package/.agents/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  162. package/.agents/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  163. package/.agents/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  164. package/.agents/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  165. package/.agents/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  166. package/.agents/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  167. package/.agents/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  168. package/.agents/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  169. package/.agents/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  170. package/.agents/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  171. package/.agents/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  172. package/.agents/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  173. package/.agents/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -0
  174. package/.agents/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -0
  175. package/.agents/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -0
  176. package/.agents/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -0
  177. package/.agents/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -0
  178. package/.agents/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -0
  179. package/.agents/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -0
  180. package/.agents/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -0
  181. package/.agents/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -0
  182. package/.agents/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -0
  183. package/.agents/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -0
  184. package/.agents/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -0
  185. package/.agents/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -0
  186. package/.agents/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -0
  187. package/.agents/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -0
  188. package/.agents/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -0
  189. package/.agents/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -0
  190. package/.agents/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -0
  191. package/.agents/skills/hyperframes-animation/rules/gsap-effects.md +299 -0
  192. package/.agents/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -0
  193. package/.agents/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -0
  194. package/.agents/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -0
  195. package/.agents/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -0
  196. package/.agents/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -0
  197. package/.agents/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -0
  198. package/.agents/skills/hyperframes-animation/rules/press-release-spring.md +296 -0
  199. package/.agents/skills/hyperframes-animation/rules/reactive-displacement.md +277 -0
  200. package/.agents/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -0
  201. package/.agents/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -0
  202. package/.agents/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -0
  203. package/.agents/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -0
  204. package/.agents/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -0
  205. package/.agents/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -0
  206. package/.agents/skills/hyperframes-animation/rules/svg-path-draw.md +274 -0
  207. package/.agents/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -0
  208. package/.agents/skills/hyperframes-animation/rules/viewport-change.md +349 -0
  209. package/.agents/skills/hyperframes-animation/rules-index.md +86 -0
  210. package/.agents/skills/hyperframes-animation/scripts/animation-map.mjs +606 -0
  211. package/.agents/skills/hyperframes-animation/scripts/package-loader.mjs +288 -0
  212. package/.agents/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
  213. package/.agents/skills/hyperframes-animation/techniques.md +507 -0
  214. package/.agents/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -0
  215. package/.agents/skills/hyperframes-animation/transitions/catalog.md +127 -0
  216. package/.agents/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  217. package/.agents/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  218. package/.agents/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  219. package/.agents/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  220. package/.agents/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  221. package/.agents/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  222. package/.agents/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  223. package/.agents/skills/hyperframes-animation/transitions/css-light.md +49 -0
  224. package/.agents/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  225. package/.agents/skills/hyperframes-animation/transitions/css-other.md +25 -0
  226. package/.agents/skills/hyperframes-animation/transitions/css-push.md +41 -0
  227. package/.agents/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  228. package/.agents/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  229. package/.agents/skills/hyperframes-animation/transitions/overview.md +153 -0
  230. package/.agents/skills/hyperframes-cli/SKILL.md +113 -0
  231. package/.agents/skills/hyperframes-cli/references/doctor-browser.md +45 -0
  232. package/.agents/skills/hyperframes-cli/references/init-and-scaffold.md +55 -0
  233. package/.agents/skills/hyperframes-cli/references/lambda.md +132 -0
  234. package/.agents/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
  235. package/.agents/skills/hyperframes-cli/references/preview-render.md +149 -0
  236. package/.agents/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
  237. package/.agents/skills/hyperframes-core/SKILL.md +78 -0
  238. package/.agents/skills/hyperframes-core/references/composition-patterns.md +263 -0
  239. package/.agents/skills/hyperframes-core/references/data-attributes.md +70 -0
  240. package/.agents/skills/hyperframes-core/references/determinism-rules.md +68 -0
  241. package/.agents/skills/hyperframes-core/references/full-screen-motion.md +62 -0
  242. package/.agents/skills/hyperframes-core/references/minimal-composition.md +66 -0
  243. package/.agents/skills/hyperframes-core/references/script-format.md +49 -0
  244. package/.agents/skills/hyperframes-core/references/storyboard-format.md +95 -0
  245. package/.agents/skills/hyperframes-core/references/sub-compositions.md +237 -0
  246. package/.agents/skills/hyperframes-core/references/subagent-dispatch.md +41 -0
  247. package/.agents/skills/hyperframes-core/references/tailwind.md +125 -0
  248. package/.agents/skills/hyperframes-core/references/tracks-and-clips.md +76 -0
  249. package/.agents/skills/hyperframes-core/references/variables-and-media.md +90 -0
  250. package/.agents/skills/hyperframes-creative/SKILL.md +70 -0
  251. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  252. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  253. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  254. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  255. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  256. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  257. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  258. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  259. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  260. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  261. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  262. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  263. package/.agents/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  264. package/.agents/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  265. package/.agents/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  266. package/.agents/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  267. package/.agents/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  268. package/.agents/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  269. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  270. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  271. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  272. package/.agents/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -0
  273. package/.agents/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -0
  274. package/.agents/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -0
  275. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  276. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  277. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  278. package/.agents/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  279. package/.agents/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  280. package/.agents/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  281. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  282. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  283. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  284. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  285. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  286. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  287. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  288. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  289. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  290. package/.agents/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  291. package/.agents/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  292. package/.agents/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  293. package/.agents/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  294. package/.agents/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  295. package/.agents/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  296. package/.agents/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  297. package/.agents/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  298. package/.agents/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  299. package/.agents/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  300. package/.agents/skills/hyperframes-creative/references/beat-direction.md +164 -0
  301. package/.agents/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  302. package/.agents/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  303. package/.agents/skills/hyperframes-creative/references/design-adherence.md +19 -0
  304. package/.agents/skills/hyperframes-creative/references/design-picker.md +123 -0
  305. package/.agents/skills/hyperframes-creative/references/design-spec.md +55 -0
  306. package/.agents/skills/hyperframes-creative/references/house-style.md +73 -0
  307. package/.agents/skills/hyperframes-creative/references/motion-principles.md +150 -0
  308. package/.agents/skills/hyperframes-creative/references/narration.md +92 -0
  309. package/.agents/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  310. package/.agents/skills/hyperframes-creative/references/typography.md +218 -0
  311. package/.agents/skills/hyperframes-creative/references/video-composition.md +63 -0
  312. package/.agents/skills/hyperframes-creative/references/visual-styles.md +457 -0
  313. package/.agents/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -0
  314. package/.agents/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -0
  315. package/.agents/skills/hyperframes-creative/scripts/package-loader.mjs +288 -0
  316. package/.agents/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
  317. package/.agents/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  318. package/.agents/skills/hyperframes-keyframes/SKILL.md +237 -0
  319. package/.agents/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  320. package/.agents/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -0
  321. package/.agents/skills/motion-graphics/SKILL.md +172 -0
  322. package/.agents/skills/motion-graphics/agents/builder.md +40 -0
  323. package/.agents/skills/motion-graphics/agents/director.md +53 -0
  324. package/.agents/skills/motion-graphics/agents/finalize.md +17 -0
  325. package/.agents/skills/motion-graphics/catalog-map.md +40 -0
  326. package/.agents/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  327. package/.agents/skills/motion-graphics/categories/charts/module.md +21 -0
  328. package/.agents/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  329. package/.agents/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  330. package/.agents/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
  331. package/.agents/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
  332. package/.agents/skills/motion-graphics/categories/maps/module.md +61 -0
  333. package/.agents/skills/motion-graphics/categories/news/module.md +56 -0
  334. package/.agents/skills/motion-graphics/categories/stat/module.md +21 -0
  335. package/.agents/skills/motion-graphics/categories/tweet/module.md +16 -0
  336. package/.agents/skills/motion-graphics/categories/webpage/module.md +21 -0
  337. package/.agents/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  338. package/.agents/skills/motion-graphics/grounding/locate.mjs +227 -0
  339. package/.agents/skills/motion-graphics/phases/source/guide.md +21 -0
  340. package/.agents/skills/motion-graphics/references/builder-contract.md +38 -0
  341. package/.agents/skills/motion-graphics/references/motion-vocabulary.md +43 -0
  342. package/.agents/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  343. package/.agents/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  344. package/.agents/skills/product-launch-video/SKILL.md +208 -0
  345. package/.agents/skills/product-launch-video/references/cut-catalog.md +220 -0
  346. package/.agents/skills/product-launch-video/references/motion-language.md +156 -0
  347. package/.agents/skills/product-launch-video/references/story-design.md +373 -0
  348. package/.agents/skills/product-launch-video/references/visual-design.md +126 -0
  349. package/.agents/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
  350. package/.agents/skills/product-launch-video/scripts/audio.mjs +260 -0
  351. package/.agents/skills/product-launch-video/scripts/build-frame.mjs +536 -0
  352. package/.agents/skills/product-launch-video/scripts/captions.mjs +508 -0
  353. package/.agents/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
  354. package/.agents/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
  355. package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
  356. package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
  357. package/.agents/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
  358. package/.agents/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
  359. package/.agents/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
  360. package/.agents/skills/product-launch-video/scripts/lib/transitions.json +71 -0
  361. package/.agents/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
  362. package/.agents/skills/product-launch-video/scripts/transitions.mjs +327 -0
  363. package/.agents/skills/product-launch-video/sub-agents/frame-worker.md +75 -0
  364. package/.agents/skills/slideshow/SKILL.md +550 -0
  365. package/.agents/skills/slideshow/references/standalone-harness.md +1020 -0
  366. package/.agents/skills/talking-head-recut/NOTICE.md +39 -0
  367. package/.agents/skills/talking-head-recut/SKILL.md +1195 -0
  368. package/.agents/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
  369. package/.agents/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  370. package/.agents/skills/talking-head-recut/references/frames/clean.html +92 -0
  371. package/.agents/skills/talking-head-recut/references/frames/hairline.html +171 -0
  372. package/.agents/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  373. package/.agents/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  374. package/.agents/skills/talking-head-recut/references/layouts/pip.html +143 -0
  375. package/.agents/skills/talking-head-recut/references/layouts/split.html +121 -0
  376. package/.agents/skills/talking-head-recut/references/layouts/stack.html +109 -0
  377. package/.agents/skills/talking-head-recut/references/styles/academic.html +172 -0
  378. package/.agents/skills/talking-head-recut/references/styles/audit.html +170 -0
  379. package/.agents/skills/talking-head-recut/references/styles/editorial.html +189 -0
  380. package/.agents/skills/talking-head-recut/references/styles/geom.html +181 -0
  381. package/.agents/skills/talking-head-recut/references/styles/minimal.html +130 -0
  382. package/.agents/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  383. package/.agents/skills/talking-head-recut/references/styles/swiss.html +188 -0
  384. package/.agents/skills/talking-head-recut/references/styles/terminal.html +196 -0
  385. package/.agents/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  386. package/.agents/skills/talking-head-recut/references/styles/xhs.html +206 -0
  387. package/.agents/skills/vidfarm-media/SKILL.md +85 -0
  388. package/.agents/skills/vidfarm-media/references/tts.md +54 -0
  389. package/.agents/skills/vidfarm-media/scripts/audio.mjs +628 -0
  390. package/.agents/skills/vidfarm-media/scripts/wait-bgm.mjs +31 -0
  391. package/.agents/skills/website-to-video/SKILL.md +145 -0
  392. package/.agents/skills/website-to-video/assets/sfx/CREDITS.md +35 -0
  393. package/.agents/skills/website-to-video/assets/sfx/manifest.json +97 -0
  394. package/.agents/skills/website-to-video/references/beat-builder-guide.md +263 -0
  395. package/.agents/skills/website-to-video/references/capabilities.md +713 -0
  396. package/.agents/skills/website-to-video/references/step-0-capture.md +55 -0
  397. package/.agents/skills/website-to-video/references/step-1-design.md +333 -0
  398. package/.agents/skills/website-to-video/references/step-2-brief.md +178 -0
  399. package/.agents/skills/website-to-video/references/step-3-storyboard.md +572 -0
  400. package/.agents/skills/website-to-video/references/step-4-vo.md +225 -0
  401. package/.agents/skills/website-to-video/references/step-5-build.md +483 -0
  402. package/.agents/skills/website-to-video/references/step-6-validate.md +341 -0
  403. package/.agents/skills/website-to-video/scripts/w2h-verify.mjs +759 -0
  404. package/SKILL.director.md +60 -4
  405. package/SKILL.platform.md +7 -2
  406. package/demo/dist/app.css +1 -1
  407. package/demo/dist/app.js +485 -86
  408. package/dist/src/account-pages-legacy.js +9 -14
  409. package/dist/src/app.js +659 -159
  410. package/dist/src/cli.js +618 -17
  411. package/dist/src/composition-runtime.js +286 -6
  412. package/dist/src/devcli/composition-edit.js +176 -8
  413. package/dist/src/devcli/doctor.js +192 -0
  414. package/dist/src/devcli/hyperframes-cli.js +118 -0
  415. package/dist/src/devcli/skills.js +476 -0
  416. package/dist/src/devcli/stills.js +249 -0
  417. package/dist/src/devcli/transitions.js +205 -0
  418. package/dist/src/editor-chat.js +260 -4
  419. package/dist/src/frontend/template-editor-chat.js +6 -5
  420. package/dist/src/homepage.js +2 -48
  421. package/dist/src/hyperframes/composition.js +188 -7
  422. package/dist/src/services/composition-lint.js +199 -0
  423. package/dist/src/services/hyperframes.js +127 -28
  424. package/dist/src/services/serverless-records.js +7 -0
  425. package/dist/src/template-editor-shell.js +87 -48
  426. package/package.json +2 -1
  427. package/public/assets/page-runtime-client-app.js +31 -31
@@ -0,0 +1,227 @@
1
+ ---
2
+ name: 3d-page-scroll
3
+ description: Full webpage rendered as tilted 3D card that scrolls to reveal specific sections.
4
+ metadata:
5
+ tags: 3d, page, scroll, webpage, tilt, product-demo, perspective
6
+ ---
7
+
8
+ # 3D Page Scroll
9
+
10
+ A webpage (or long content) presented as a tilted 3D card. Spring-eased scroll reveals specific sections while the static 3D perspective adds physical depth.
11
+
12
+ ## How It Works
13
+
14
+ Two independent transforms combine:
15
+
16
+ 1. **3D tilt** — Static `rotateY` + `rotateX` with `perspective` on the card. The angle does **not** change during the scene.
17
+ 2. **Scroll** — The content inside the card translates vertically (`translateY` / `y` in GSAP) within a clipped container, driven by a GSAP tween. Spring-like deceleration via `ease: "power3.out"` or `"power4.out"`.
18
+
19
+ Optional layer:
20
+
21
+ 3. **Spotlight overlay** — A radial-gradient mask dims everything except a focal region after the scroll lands. Use to draw attention to one section.
22
+
23
+ For multi-step scrolling (scroll → pause → scroll), use multiple `tl.to(".page-content", { y: -<distance>, ... }, <position>)` calls at different timeline positions.
24
+
25
+ ## HTML
26
+
27
+ ```html
28
+ <div
29
+ class="scene"
30
+ id="page-scroll-scene"
31
+ data-composition-id="page-scroll-scene"
32
+ data-start="0"
33
+ data-duration="5"
34
+ data-track-index="0"
35
+ >
36
+ <div class="tilt-card">
37
+ <div class="page-content">
38
+ <!-- Full {Brand} webpage recreation, taller than card height so
39
+ scrolling matters. Each section is real DOM, not a screenshot. -->
40
+ <section class="page-hero">{heroContents}</section>
41
+ <section class="page-features">{featuresContents}</section>
42
+ <section class="page-target" id="target-section">{targetContents}</section>
43
+ <section class="page-cta">{ctaContents}</section>
44
+ </div>
45
+
46
+ <div class="spotlight"></div>
47
+ </div>
48
+ </div>
49
+ ```
50
+
51
+ ## CSS (hero-frame layout)
52
+
53
+ ```css
54
+ .scene {
55
+ position: relative;
56
+ width: 100%;
57
+ height: 100%;
58
+ }
59
+
60
+ .tilt-card {
61
+ position: absolute;
62
+ left: 50%;
63
+ top: 50%;
64
+ /* tilt + perspective set in CSS only if no other transform tween touches
65
+ this element. If GSAP also tweens scale on .tilt-card, set the tilt
66
+ via gsap.set() to avoid matrix overwrites. */
67
+ transform: translate(-50%, -50%) perspective({perspectivePx}) rotateY({tiltYDeg}) rotateX({tiltXDeg});
68
+ transform-style: preserve-3d;
69
+ width: {cardWidth};
70
+ height: {cardHeight};
71
+ border-radius: 24px;
72
+ background: {cardBackgroundColor};
73
+ overflow: hidden; /* clip the scrolling content */
74
+ /* shadow X-offset sign must match tiltY sign (negative tiltY ⇒ positive X) */
75
+ box-shadow: 40px 30px 80px rgba(0, 0, 0, 0.45);
76
+ }
77
+
78
+ .page-content {
79
+ position: absolute;
80
+ top: 0;
81
+ left: 0;
82
+ width: 100%;
83
+ /* height is intrinsic from sections — taller than .tilt-card.height */
84
+ }
85
+
86
+ .page-content section {
87
+ height: {sectionHeight}; /* sections sized so cumulative offset = target distance */
88
+ padding: 64px;
89
+ /* section-specific styling … */
90
+ }
91
+
92
+ .spotlight {
93
+ position: absolute;
94
+ inset: 0;
95
+ pointer-events: none;
96
+ opacity: 0;
97
+ background: radial-gradient(
98
+ ellipse 60% 35% at 50% 50%,
99
+ transparent 50%,
100
+ {spotlightDimColor} 100%
101
+ );
102
+ }
103
+ ```
104
+
105
+ ## GSAP Timeline
106
+
107
+ ```html
108
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
109
+ <script>
110
+ window.__timelines = window.__timelines || {};
111
+ const tl = gsap.timeline({ paused: true });
112
+
113
+ // Phase 1 — Card enters (optional, can skip if card is in from t=0)
114
+ // Phase 2 — Scroll to the target section.
115
+ // SCROLL_DISTANCE is measured at design time from the page layout
116
+ // (top of .page-content origin to vertical center of #target-section,
117
+ // accounting for card height).
118
+ tl.to(
119
+ ".page-content",
120
+ {
121
+ y: -SCROLL_DISTANCE,
122
+ duration: SCROLL_DUR,
123
+ ease: "power3.out",
124
+ },
125
+ SCROLL_AT,
126
+ );
127
+
128
+ // Phase 3 — Spotlight fades in on the target after scroll settles
129
+ tl.to(
130
+ ".spotlight",
131
+ {
132
+ opacity: 1,
133
+ duration: SPOTLIGHT_FADE_DUR,
134
+ ease: "power1.inOut",
135
+ },
136
+ SPOTLIGHT_AT,
137
+ );
138
+
139
+ window.__timelines["page-scroll-scene"] = tl;
140
+ </script>
141
+ ```
142
+
143
+ ### Multi-phase scroll variant
144
+
145
+ ```js
146
+ // Scroll to section A → hold → scroll to section B.
147
+ // SCROLL_DISTANCE_A and SCROLL_DISTANCE_B are both measured from the
148
+ // .page-content origin (NOT delta from previous step).
149
+ tl.to(
150
+ ".page-content",
151
+ { y: -SCROLL_DISTANCE_A, duration: SCROLL_DUR, ease: "power3.out" },
152
+ SCROLL_AT_A,
153
+ );
154
+ tl.to(
155
+ ".page-content",
156
+ { y: -SCROLL_DISTANCE_B, duration: SCROLL_DUR, ease: "power3.out" },
157
+ SCROLL_AT_B,
158
+ );
159
+ ```
160
+
161
+ GSAP composes successive `y:` tweens additively when targeting the same property — each tween starts from the value left by the previous tween.
162
+
163
+ ## How to Choose Values
164
+
165
+ - **tiltYDeg** — static Y rotation in CSS (or via `gsap.set()`).
166
+ - Range: -12 to -4 (left-leaning) or 4 to 12 (right-leaning); 0 = no perspective rotation.
167
+ - Effects: bigger magnitude = more dramatic 3D; near 0 collapses to a flat panel.
168
+ - Constraints: shadow X-offset sign must match (negative tiltY ⇒ positive box-shadow X).
169
+ - **tiltXDeg** — static X rotation.
170
+ - Range: 0-6
171
+ - Effects: positive tilts the top edge away from the viewer.
172
+ - **perspectivePx** — perspective distance.
173
+ - Range: 800-2000 px
174
+ - Effects: smaller = more dramatic foreshortening; larger = nearly orthographic.
175
+ - **cardWidth / cardHeight** — card frame size.
176
+ - Constraints: card height < total content height, otherwise scroll has nothing to reveal.
177
+ - **sectionHeight** — height of each scrolled section.
178
+ - Constraints: sum of all section heights ≥ cardHeight + SCROLL_DISTANCE so the target section ends up within frame after scroll.
179
+ - **SCROLL_AT** — timeline second at which the scroll tween begins.
180
+ - Constraints: must be ≥ end of any prior fade-in tweens on `.page-content`.
181
+ - **SCROLL_DUR** — duration of one scroll tween.
182
+ - Range: 0.8-1.8 s
183
+ - Effects: shorter feels like a hard cut; longer feels programmatic.
184
+ - **SCROLL_DISTANCE** — pixels to translate `.page-content` upward.
185
+ - Constraints: measured once at design time from the target section's offset; NOT a free tunable.
186
+ - **SPOTLIGHT_AT** — timeline second at which the spotlight begins fading in.
187
+ - Constraints: should be ≥ SCROLL_AT + SCROLL_DUR (or slightly earlier for overlapping handoff) so the spotlight reveals the freshly-arrived section.
188
+ - **SPOTLIGHT_FADE_DUR** — spotlight opacity fade-in duration.
189
+ - Range: 0.4-0.8 s
190
+ - Multi-phase variant — **SCROLL_AT_A / SCROLL_AT_B**: must satisfy `SCROLL_AT_A + SCROLL_DUR ≤ SCROLL_AT_B` so the two scrolls don't fight for the y property.
191
+
192
+ Ease family — discrete choice:
193
+
194
+ - `power3.out` — heavy deceleration; reads as a programmatic scroll that "lands". Default.
195
+ - `power4.out` — even heavier; reads as a momentum-driven scroll.
196
+ - `power2.inOut` — symmetric; reads as a cinematic camera pan rather than UI scroll.
197
+
198
+ Pick one and use it across all scrolls in the scene — mixing easings within one scene reads as jerky.
199
+
200
+ ## Key Principles
201
+
202
+ - **Tilt is static**, not animated. The card holds its angle the whole scene.
203
+ - **Shadow direction matches tilt**: a left-leaning card casts shadow to the right (positive X shadow offset). Mismatch breaks the 3D illusion.
204
+ - **Page content is real HTML**, not a screenshot. Screenshots can't be individually highlighted or scrolled-to with precision.
205
+ - **Use real layout for distances**: scroll target distance comes from the actual cumulative section heights, not estimated pixel values.
206
+ - **Spotlight as overlay**, not inside the page-content — overlay sits above scrolling content and stays fixed relative to the card.
207
+
208
+ ## Critical Constraints
209
+
210
+ - **`overflow: hidden` on `.tilt-card`** — scrolling content must clip at card boundaries, otherwise it leaks past the rounded corners
211
+ - **`transform-style: preserve-3d`** on `.tilt-card` — required for any 3D children (or for combining `perspective` with rotations cleanly)
212
+ - **Timeline must be paused**: `gsap.timeline({ paused: true })`. Never `tl.play()` — HF seeks frame-by-frame
213
+ - **Registry key = `data-composition-id`**: `window.__timelines["page-scroll-scene"]` must match scene root's `data-composition-id`
214
+ - **Finite scroll distance** — compute from actual content geometry; don't use arbitrary values that may overshoot the content end
215
+ - **Same easing across multi-phase scroll** — mixing `power3.out` and `power1.inOut` looks jerky; pick one for the scene
216
+
217
+ ## Combinations
218
+
219
+ - [asr-keyword-glow.md](asr-keyword-glow.md) — highlight elements on the page synced to voiceover word timestamps
220
+ - [multi-phase-camera.md](multi-phase-camera.md) — overall camera zoom while the page scrolls (zoom-in to target section as it lands)
221
+ - [cursor-click-ripple.md](cursor-click-ripple.md) — cursor lands on a UI element within the scrolled-into-view section
222
+
223
+ ## Pairs with HF skills
224
+
225
+ - `/hyperframes-animation` — timeline + ease reference; `y:` tween basics
226
+ - `/hyperframes-core` — composition wiring, `data-*` attributes
227
+ - `/hyperframes-cli` — `hyperframes lint` to verify the registry key + duration
@@ -0,0 +1,297 @@
1
+ ---
2
+ name: 3d-text-depth-layers
3
+ description: Multiple offset text layers create a stacked 3D shadow / extrusion effect on large typography — more impactful than CSS text-shadow because each layer is a full DOM element.
4
+ metadata:
5
+ tags: text, 3d, depth, layers, shadow, typography, stacked, extrusion
6
+ ---
7
+
8
+ # 3D Text Depth Layers
9
+
10
+ Renders the same text N times at increasing offsets, with back layers translucent and the front layer fully opaque. Creates a physical "stacked extrusion" depth illusion. Distinct from `text-shadow` (which can't have per-layer hue / opacity / animation) — each layer is a real DOM element.
11
+
12
+ ## How It Works
13
+
14
+ - N copies of the same text in a single container
15
+ - Each copy positioned absolutely with offset `(i * OFFSET_X, i * OFFSET_Y)`
16
+ - Back layers (high `i`) use translucent or darkened color
17
+ - Front layer (`i = 0`) is full opacity, full brand color
18
+ - Optionally: each layer fades in staggered, creating a "building up" depth animation
19
+
20
+ ## HTML
21
+
22
+ ```html
23
+ <div
24
+ class="scene"
25
+ id="depth-scene"
26
+ data-composition-id="depth-scene"
27
+ data-start="0"
28
+ data-duration="3"
29
+ data-track-index="0"
30
+ >
31
+ <div class="depth-stack">
32
+ <!-- Layers injected by script — LAYER_COUNT copies of {label} -->
33
+ </div>
34
+ </div>
35
+ ```
36
+
37
+ ## CSS
38
+
39
+ ```css
40
+ .scene {
41
+ position: relative;
42
+ width: 100%;
43
+ height: 100%;
44
+ display: grid;
45
+ place-items: center;
46
+ background: {bgColor};
47
+ }
48
+ .depth-stack {
49
+ position: relative;
50
+ /* Container size set by the front layer; back layers stack behind */
51
+ }
52
+ .depth-text {
53
+ font-family: {font};
54
+ font-weight: 900;
55
+ font-size: HERO_FONT_SIZE;
56
+ letter-spacing: HERO_LETTER_SPACING;
57
+ line-height: 1;
58
+ color: {frontColor};
59
+ text-transform: uppercase;
60
+ }
61
+ /* Back layers — absolute, stacked behind */
62
+ .depth-text.is-back {
63
+ position: absolute;
64
+ top: 0;
65
+ left: 0;
66
+ pointer-events: none;
67
+ }
68
+ /* Front layer — relative to define container size */
69
+ .depth-text.is-front {
70
+ position: relative;
71
+ z-index: 10;
72
+ }
73
+ ```
74
+
75
+ ## GSAP Timeline + Layer Setup
76
+
77
+ ```html
78
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
79
+ <script>
80
+ window.__timelines = window.__timelines || {};
81
+
82
+ const TEXT = "{label}";
83
+ const stack = document.querySelector(".depth-stack");
84
+
85
+ // Build layers — back-to-front so the FRONT (i=0) is the LAST appended
86
+ // and `position: relative` defines container size.
87
+ for (let i = LAYER_COUNT - 1; i >= 0; i--) {
88
+ const el = document.createElement("div");
89
+ el.className = "depth-text " + (i === 0 ? "is-front" : "is-back");
90
+ el.textContent = TEXT;
91
+ if (i > 0) {
92
+ const alpha = Math.max(BACK_ALPHA_MAX - i * BACK_ALPHA_STEP, BACK_ALPHA_MIN);
93
+ el.style.color = `rgba({backHueRGB}, ${alpha})`;
94
+ el.style.transform = `translate(${i * OFFSET_X}px, ${i * OFFSET_Y}px)`;
95
+ } else {
96
+ el.style.color = "{frontColor}";
97
+ }
98
+ el.dataset.layer = String(i);
99
+ stack.appendChild(el);
100
+ }
101
+
102
+ const tl = gsap.timeline({ paused: true });
103
+
104
+ // Layered entry — back layers appear first, building forward
105
+ const allLayers = stack.querySelectorAll(".depth-text");
106
+ allLayers.forEach((el) => {
107
+ const i = Number(el.dataset.layer);
108
+ const finalAlpha = el.classList.contains("is-front")
109
+ ? 1
110
+ : Math.max(BACK_ALPHA_MAX - i * BACK_ALPHA_STEP, BACK_ALPHA_MIN);
111
+ tl.fromTo(
112
+ el,
113
+ { opacity: 0 },
114
+ {
115
+ opacity: finalAlpha,
116
+ duration: LAYER_FADE_DUR,
117
+ ease: "power2.out",
118
+ },
119
+ LAYER_CASCADE_START + (LAYER_COUNT - 1 - i) * LAYER_CASCADE_STEP,
120
+ );
121
+ });
122
+
123
+ // Optional: depth grows on entry (offset interpolates from 0 → full)
124
+ const depthState = { p: 0 };
125
+ tl.to(
126
+ depthState,
127
+ {
128
+ p: 1,
129
+ duration: DEPTH_GROW_DUR,
130
+ ease: "power2.out",
131
+ onUpdate: () => {
132
+ stack.querySelectorAll(".depth-text.is-back").forEach((el) => {
133
+ const i = Number(el.dataset.layer);
134
+ const x = i * OFFSET_X * depthState.p;
135
+ const y = i * OFFSET_Y * depthState.p;
136
+ el.style.transform = `translate(${x}px, ${y}px)`;
137
+ });
138
+ },
139
+ },
140
+ DEPTH_GROW_START,
141
+ );
142
+
143
+ window.__timelines["depth-scene"] = tl;
144
+ </script>
145
+ ```
146
+
147
+ ## Variations
148
+
149
+ ### Static depth (no animation, single hero shot)
150
+
151
+ Skip the cascade — render all layers in their final positions from t=0, optionally fade the entire stack in:
152
+
153
+ ```js
154
+ tl.from(
155
+ stack,
156
+ { opacity: 0, scale: STATIC_ENTRY_SCALE, duration: STATIC_ENTRY_DUR, ease: "power3.out" },
157
+ 0,
158
+ );
159
+ ```
160
+
161
+ ### Dynamic depth pulse
162
+
163
+ Animate `OFFSET_X` / `OFFSET_Y` based on a heartbeat — depth grows and shrinks rhythmically:
164
+
165
+ ```js
166
+ const beat = { p: 0 };
167
+ tl.to(
168
+ beat,
169
+ {
170
+ p: Math.PI * 2 * BEAT_CYCLES,
171
+ duration: BEAT_DUR,
172
+ ease: "none",
173
+ onUpdate: () => {
174
+ const mult = 1 + Math.sin(beat.p) * BEAT_AMP;
175
+ stack.querySelectorAll(".is-back").forEach((el) => {
176
+ const i = Number(el.dataset.layer);
177
+ el.style.transform = `translate(${i * OFFSET_X * mult}px, ${i * OFFSET_Y * mult}px)`;
178
+ });
179
+ },
180
+ },
181
+ BEAT_START,
182
+ );
183
+ ```
184
+
185
+ ### Color-shift back layers
186
+
187
+ Instead of fading to translucent, shift to a different hue — depth reads as "casting a colored shadow":
188
+
189
+ ```js
190
+ el.style.color = `hsla(${HUE_BASE - i * HUE_STEP}, ${SAT_PCT}%, ${LIGHT_BASE - i * LIGHT_STEP}%, 1)`;
191
+ ```
192
+
193
+ ## How to Choose Values
194
+
195
+ ### Layer geometry
196
+
197
+ - **LAYER_COUNT** — number of stacked copies (back layers + 1 front).
198
+ - Range: 4-6. Below 4 the depth doesn't read as 3D; above 6 the stack visually clutters on tight kerning
199
+ - Effects: low end reads as subtle shadow; high end reads as chunky extrusion
200
+ - **OFFSET_X / OFFSET_Y** — per-layer translation offset, in px.
201
+ - Range: 1-3 px each. Above 4 px reads as a glitch / chromatic aberration rather than depth
202
+ - Effects: offset direction implies light direction. `(+x, +y)` = light from upper-left; `(-x, +y)` = light from upper-right. Pick one and keep it consistent across the composition
203
+ - Constraints: same sign convention throughout the composition
204
+
205
+ ### Back-layer color falloff
206
+
207
+ - **BACK_ALPHA_MAX** — alpha of the back layer nearest the front.
208
+ - Range: 0.6-0.85. Lower than 0.5 makes even the nearest back layer disappear; higher than 0.9 fights the front layer for dominance
209
+ - **BACK_ALPHA_STEP** — alpha decrement per layer further back.
210
+ - Range: 0.08-0.15. Smaller steps read as a soft gradient; larger steps read as discrete plates
211
+ - Constraints: choose so `BACK_ALPHA_MAX − (LAYER_COUNT − 2) × BACK_ALPHA_STEP ≥ BACK_ALPHA_MIN`
212
+ - **BACK_ALPHA_MIN** — floor below which back layers stop fading.
213
+ - Range: 0.1-0.2. Below 0.1 the deepest layer disappears entirely on dark backgrounds
214
+
215
+ ### Typography
216
+
217
+ - **HERO_FONT_SIZE** — front-layer font size, in px.
218
+ - Range: 60 px minimum to read as layered; 200-340 px for full-bleed hero shots. Thin text loses the layered illusion
219
+ - **HERO_LETTER_SPACING** — letter spacing.
220
+ - Range: −0.03em (tight) to 0 (normal). Negative spacing tightens the stack so the offsets read as depth instead of as repetition
221
+ - **{font}** — typeface; pick a black/900 weight family with strong horizontal strokes
222
+ - **{frontColor}** — front-layer color; the brand or accent color
223
+ - **{backHueRGB}** — RGB triplet for back layers (e.g. matched to a brand glow). Used inside `rgba({backHueRGB}, ${alpha})`
224
+
225
+ ### Cascade entry (default form)
226
+
227
+ - **LAYER_CASCADE_START** — timeline offset where the cascade begins.
228
+ - Constraints: ≥ 0; if another beat precedes, ≥ that beat's end
229
+ - **LAYER_CASCADE_STEP** — delay between each layer's fade-in.
230
+ - Range: 0.04-0.10 s. Smaller feels almost-simultaneous; larger feels stepped and mechanical
231
+ - **LAYER_FADE_DUR** — duration of each individual layer's fade-in.
232
+ - Range: 0.3-0.6 s
233
+
234
+ ### Depth-grow tween
235
+
236
+ - **DEPTH_GROW_START** — when the offset growth begins.
237
+ - Constraints: typically `≈ LAYER_CASCADE_START`; align so the first layer's fade and the depth growth start together
238
+ - **DEPTH_GROW_DUR** — duration over which offsets interpolate from 0 to full.
239
+ - Range: 0.4-0.8 s. Roughly match `LAYER_FADE_DUR × LAYER_COUNT / 2` so depth lands as the last layer fades in
240
+
241
+ ### Static-depth variation
242
+
243
+ - **STATIC_ENTRY_SCALE** — initial scale before the whole stack fades in.
244
+ - Range: 0.94-0.98 — subtle inflation; larger reads as a separate "pop" effect
245
+ - **STATIC_ENTRY_DUR** — fade-in duration for the whole stack.
246
+ - Range: 0.5-0.8 s
247
+
248
+ ### Dynamic-pulse variation
249
+
250
+ - **BEAT_CYCLES** — number of full beat cycles across `BEAT_DUR`.
251
+ - Range: `BEAT_DUR / 1.5s ≤ BEAT_CYCLES ≤ BEAT_DUR / 0.7s` (one beat per 0.7-1.5 s reads as a heartbeat)
252
+ - **BEAT_DUR** — pulse tween duration.
253
+ - Constraints: tied to the visible window of the depth stack
254
+ - **BEAT_AMP** — fractional amplitude of the offset pulse.
255
+ - Range: 0.2-0.6. Smaller is a gentle breathing depth; larger reads as a kick-drum thump
256
+ - **BEAT_START** — when the pulse begins.
257
+ - Constraints: `≥ DEPTH_GROW_START + DEPTH_GROW_DUR` so the pulse modulates a fully-grown stack
258
+
259
+ ### Color-shift variation
260
+
261
+ - **HUE_BASE / HUE_STEP** — base hue (front layer) and per-layer hue rotation.
262
+ - Range: `HUE_STEP` 4-12°. Larger steps cycle further around the color wheel and read as glitch
263
+ - **SAT_PCT** — fixed saturation for all layers.
264
+ - Range: 60-85%
265
+ - **LIGHT_BASE / LIGHT_STEP** — base lightness and per-layer darkening.
266
+ - Range: `LIGHT_STEP` 3-8 percentage points so back layers darken into the background
267
+
268
+ ## Key Principles
269
+
270
+ - **Layer count 4-6** — fewer than 4 doesn't read as 3D, more than 6 visually clutters on tight kerning
271
+ - **Offset 1-3 px per axis** — subtle is dramatic. `OFFSET = 6+` looks like a glitch rather than depth
272
+ - **Offset direction implies light direction** — `(+x, +y)` = light from upper-left; `(-x, +y)` = light from upper-right. Pick one and be consistent across the composition
273
+ - **Back layers translucent OR darker** — DON'T make them MORE saturated than the front (looks like a halo). Each back layer should be slightly more transparent (`alpha -= BACK_ALPHA_STEP per layer`) or slightly darker
274
+ - **Last (front) layer `position: relative`** to define container size; all others `position: absolute` stack behind
275
+ - **Bold/black weight + large size** — 900 weight, 60 px+ minimum. Thin text loses the layered illusion
276
+ - **Don't apply per-letter animation on top of layers** — character animations (hacker-flip, typewriter) on top of 6-layer depth = chaos. If you need both effects, drop depth to 2-3 layers OR apply layers only to the static post-reveal state
277
+
278
+ ## Critical Constraints
279
+
280
+ - **Timeline must be paused**: `gsap.timeline({ paused: true })`
281
+ - **Registry key = `data-composition-id`**
282
+ - **No CSS `text-shadow`** alongside layered depth — they compound and over-extrude
283
+ - **Use `transform: translate()` for offsets, not `top`/`left`** — translate composes cleanly with parent's centering and avoids reflow
284
+ - **`pointer-events: none` on back layers** — they're decorative; don't catch hover or selection
285
+ - **Set layer color via `rgba()` not opacity** — opacity on the whole element fades the rendered glyph including any shadow; rgba in `color` fades just the glyph
286
+
287
+ ## Combinations
288
+
289
+ - [counting-dynamic-scale.md](counting-dynamic-scale.md) — render the counter number with depth layers
290
+ - [sine-wave-loop.md](sine-wave-loop.md) — idle breathing on the front layer after reveal
291
+ - [center-outward-expansion.md](center-outward-expansion.md) — depth-stacked wordmark reveals after burst lands
292
+
293
+ ## Pairs with HF skills
294
+
295
+ - `/hyperframes-animation` — staggered fade-ins + onUpdate for dynamic depth
296
+ - `/hyperframes-core` — composition wiring
297
+ - `/hyperframes-cli` — `hyperframes lint`