@mevdragon/vidfarm-devcli 0.14.0 → 0.16.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 +37 -0
  405. package/SKILL.platform.md +6 -1
  406. package/demo/dist/app.css +1 -1
  407. package/demo/dist/app.js +369 -85
  408. package/dist/src/app.js +630 -140
  409. package/dist/src/cli.js +529 -12
  410. package/dist/src/composition-runtime.js +262 -3
  411. package/dist/src/config.js +13 -0
  412. package/dist/src/devcli/doctor.js +192 -0
  413. package/dist/src/devcli/hyperframes-cli.js +118 -0
  414. package/dist/src/devcli/skills.js +476 -0
  415. package/dist/src/devcli/stills.js +249 -0
  416. package/dist/src/editor-chat.js +256 -0
  417. package/dist/src/frontend/homepage-client.js +50 -1
  418. package/dist/src/frontend/homepage-shared.js +197 -0
  419. package/dist/src/frontend/homepage-store.js +10 -1
  420. package/dist/src/frontend/homepage-view.js +43 -5
  421. package/dist/src/homepage.js +51 -18
  422. package/dist/src/hyperframes/composition.js +5 -5
  423. package/dist/src/services/composition-lint.js +199 -0
  424. package/dist/src/services/hyperframes.js +67 -13
  425. package/dist/src/services/serverless-records.js +9 -0
  426. package/package.json +2 -1
  427. package/public/assets/homepage-client-app.js +23 -23
@@ -0,0 +1,170 @@
1
+ <!doctype html>
2
+ <!--
3
+ TEMPLATE: portrait-header
4
+ STYLE LOCKED. LAYOUT OPEN.
5
+
6
+ Look: 9:16 portrait talking-head, captions on a horizontal strip across
7
+ the top above the subject. Optional crown at bottom if waist+ visible.
8
+
9
+ Locked: 5 typography slots (intro/phrase/emph/dream/crown), screen blend,
10
+ single-caption swap (caps absolute-positioned in header strip).
11
+
12
+ Open via plan.json: header strip top/height, crown enable+top, font_scale.
13
+ -->
14
+ <html lang="en">
15
+ <head>
16
+ <meta charset="UTF-8" />
17
+ <meta name="viewport" content="width={{WIDTH}}, height={{HEIGHT}}" />
18
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
19
+ <style>
20
+ :root { --font-scale: {{FONT_SCALE}}; }
21
+
22
+ * { margin: 0; padding: 0; box-sizing: border-box; }
23
+ html, body {
24
+ margin: 0;
25
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
26
+ overflow: hidden;
27
+ background: #000;
28
+ font-family: "Inter", system-ui, sans-serif;
29
+ }
30
+ #a-roll { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
31
+ #stage {
32
+ position: absolute;
33
+ top: 0; left: 0;
34
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
35
+ pointer-events: none;
36
+ z-index: 2;
37
+ }
38
+
39
+ /* LAYOUT */
40
+ .header-plane {
41
+ position: absolute;
42
+ top: {{HEADER_TOP}}px;
43
+ left: 0; right: 0;
44
+ height: {{HEADER_HEIGHT}}px;
45
+ padding: 24px 40px;
46
+ }
47
+ .header-plane .cap {
48
+ position: absolute;
49
+ top: 24px;
50
+ left: 40px; right: 40px;
51
+ max-width: calc(100% - 80px);
52
+ text-align: center;
53
+ }
54
+ .crown-plane {
55
+ position: absolute;
56
+ top: {{CROWN_TOP}}px;
57
+ left: 0; right: 0;
58
+ text-align: center;
59
+ pointer-events: none;
60
+ }
61
+
62
+ /* STYLE (locked) */
63
+ .cap {
64
+ display: block;
65
+ position: relative;
66
+ line-height: 1.05;
67
+ opacity: 0;
68
+ mix-blend-mode: {{BLEND_MODE}};
69
+ color: {{CAP_COLOR}};
70
+ text-shadow: {{TEXT_SHADOW}};
71
+ filter: {{TEXT_FILTER}};
72
+ will-change: transform, opacity;
73
+ }
74
+ .cap .w { display: inline-block; opacity: 0; will-change: opacity, transform; }
75
+
76
+ .cap-intro { font-size: calc(72px * var(--font-scale));
77
+ font-weight: 500; font-style: italic;
78
+ letter-spacing: -0.005em; line-height: 1.1; }
79
+ .cap-phrase { font-size: calc(88px * var(--font-scale));
80
+ font-weight: 600;
81
+ letter-spacing: -0.015em; line-height: 1.05; }
82
+ .cap-emph { font-size: calc(104px * var(--font-scale));
83
+ font-weight: 800;
84
+ letter-spacing: -0.025em; line-height: 1.0; }
85
+ .cap-dream { font-size: calc(92px * var(--font-scale));
86
+ font-weight: 700; font-style: italic;
87
+ letter-spacing: -0.015em; line-height: 1.05; }
88
+ .cap-crown { font-size: calc(130px * var(--font-scale));
89
+ font-weight: 900;
90
+ letter-spacing: -0.035em; text-transform: uppercase;
91
+ line-height: 1.0; }
92
+ </style>
93
+ </head>
94
+ <body>
95
+ <div
96
+ id="root"
97
+ data-composition-id="main"
98
+ data-start="0"
99
+ data-duration="{{DURATION}}"
100
+ data-width="{{WIDTH}}"
101
+ data-height="{{HEIGHT}}"
102
+ >
103
+ <video
104
+ id="a-roll"
105
+ src="source.mp4"
106
+ muted
107
+ playsinline
108
+ data-duration="{{DURATION}}"
109
+ data-track-index="0"
110
+ style="z-index: 1"
111
+ ></video>
112
+
113
+ <div id="stage">
114
+ <div class="header-plane">{{GROUPS_HTML}}</div>
115
+ <div class="crown-plane">{{CROWN_HTML}}</div>
116
+ </div>
117
+
118
+ <audio
119
+ id="a-roll-audio"
120
+ src="source.mp4"
121
+ data-start="0"
122
+ data-duration="{{DURATION}}"
123
+ data-track-index="3"
124
+ data-volume="1"
125
+ ></audio>
126
+ </div>
127
+
128
+ <script>
129
+ window.__timelines = window.__timelines || {};
130
+ const tl = gsap.timeline({ paused: true });
131
+ const DUR = {{DURATION}};
132
+ const GROUPS = {{GROUPS_JSON}};
133
+ const CROWN = {{CROWN_JSON}};
134
+
135
+ function animateGroup(g) {
136
+ var sel = "#" + g.id;
137
+ var isSoft = g.tone === "soft";
138
+ tl.set(sel, { opacity: 1, y: 0 }, Math.max(0, g.in - 0.01));
139
+
140
+ g.words.forEach(function (w, i) {
141
+ var wsel = sel + " .w[data-i='" + i + "']";
142
+ if (isSoft) {
143
+ tl.fromTo(wsel,
144
+ { opacity: 0, y: 8 },
145
+ { opacity: 1, y: 0, duration: 0.42, ease: "power2.out", overwrite: "auto" },
146
+ w.start);
147
+ } else {
148
+ tl.fromTo(wsel,
149
+ { opacity: 0, y: 6, scale: 1.04 },
150
+ { opacity: 1, y: 0, scale: 1.0, duration: 0.22,
151
+ ease: "power3.out", overwrite: "auto", transformOrigin: "50% 50%" },
152
+ w.start);
153
+ }
154
+ });
155
+
156
+ if (g.out < DUR) {
157
+ tl.to(sel, { opacity: 0, duration: 0.45, ease: "power2.in", overwrite: "auto" },
158
+ g.out - 0.45);
159
+ }
160
+ tl.set(sel, { opacity: 0, visibility: "hidden" }, g.out);
161
+ }
162
+
163
+ GROUPS.forEach(animateGroup);
164
+ if (CROWN) animateGroup(CROWN);
165
+
166
+ tl.seek(0);
167
+ window.__timelines["main"] = tl;
168
+ </script>
169
+ </body>
170
+ </html>
@@ -0,0 +1,16 @@
1
+ # cinematic-cream — spec
2
+
3
+ The authoritative spec lives in [template.html](template.html)'s header comment (DNA-only:
4
+ what's LOCKED vs OPEN, the LAYOUT/planes contract, READING ORDER + hand-off, hero sizing).
5
+ Read that header before authoring plan.json. Quick contract:
6
+
7
+ - LOCKED: Inter, soft/present motion, warm-cream palette, screen blend, shadow logic.
8
+ - OPEN per group (css field): size/weight/style/transform/spacing + position WITHIN a plane.
9
+ - LAYOUT: run scripts/safe-zones.cjs first. Narration planes HUG the silhouette — use
10
+ zones.hugLeft/hugRight (2-6% gap from the subject's edge); a plane parked in the far
11
+ corner reads as disconnected floating text, not an embed. The ONE hero stays BIG
12
+ (~0.22-0.34·h) centered ON the subject (heroAnchor / heroBands.best), target ~30-55%
13
+ occlusion. fg is the LAST resort: only when heroBands.feasible=false (no band ≤62%).
14
+ hero BIG (~0.22-0.34·h) centered ON the subject (heroAnchor), target ~30-55% occlusion.
15
+ - plan.json: groups[] with per-word transcript timings (use scripts/fill-timings.cjs),
16
+ fit via scripts/fit-fonts.cjs, compile via scripts/make-composition.cjs.
@@ -0,0 +1,226 @@
1
+ <!doctype html>
2
+ <!--
3
+ TEMPLATE: cinematic-cream
4
+ DNA-ONLY template. No slot structure. No preset typography classes.
5
+ The agent composes each caption group's typography per-scene via the
6
+ plan.json `css` field.
7
+
8
+ What's LOCKED (DNA — do not override):
9
+ - font-family: Inter (+ fallback)
10
+ - Motion vocabulary: per-word soft/present reveal curves from the
11
+ validated memory-wall timeline (tone: "soft" | "present")
12
+ - Color palette defaults (cream on dark scenes, deep warm on light)
13
+ - mix-blend-mode defaults, text-shadow / filter auto-picked from
14
+ cap_color luminance (via make-composition.py)
15
+ - Animation: 0.7s container fade-in (at g.in-0.01 via tl.set), per-word
16
+ reveal at w.start, group fade-out 0.5s before g.out
17
+
18
+ What's OPEN per group (agent decides per scene via `css` field):
19
+ - font-size, font-weight, font-style (italic or not), text-transform
20
+ (uppercase or not), letter-spacing, line-height
21
+ - Position: top / left / right / bottom / transform / text-align
22
+ - Layer: bg (embed via matte) | fg (announcement on top)
23
+ - Tone: soft | present (motion curve)
24
+ - scale: optional shortcut for size multiplication
25
+
26
+ LAYOUT — FIRST run the safe-zone precompute, THEN compose into PLANES:
27
+ - Run `node scripts/safe-zones.cjs <project>` and read `safe-zones.json`. From the
28
+ matte it gives subject coverage%, the clearer side, the largest CLEAN rectangles
29
+ (left/right/top), and a verdict:
30
+ · "fg" → subject fills the frame; NO room to embed behind it. Use
31
+ `caption_layer:"fg"` (screen-blend on top). Do NOT fight it with bg embeds —
32
+ that's the 9:16 case that costs many failed occlusion rounds.
33
+ · "embed"→ NARRATION planes go INSIDE the reported clean zones (prefer the clearer
34
+ side / top). The HERO is the EXCEPTION — see the next bullet. Don't guess
35
+ narration positions — use the zones safe-zones gives you.
36
+ - NARRATION: define 2-4 named planes in plan.json `planes {}`, each inside a clean zone
37
+ from safe-zones.json. Give each narration group a `plane`; groups STACK within it (a
38
+ plane is a flex column → lines accumulate, aligned + coherent). Narration must be CLEAR.
39
+ - THE HERO (the one promoted peak word) is the OPPOSITE of narration — BIG, and ON the
40
+ subject. It is the scarce, earned PEAK; it must feel like it BURSTS, not a polite label:
41
+ · BIG + dominant — **~0.22–0.34 × frame height**. Give it a WIDE plane (≈ centered,
42
+ spanning the subject), NEVER a narrow margin column. (fit-fonts won't enlarge — if
43
+ the hero's box is narrow it stays small; widen the box.)
44
+ · CENTERED on the subject (use safe-zones `heroAnchor` = the subject's center),
45
+ CROSSING it so the head/torso occludes the MIDDLE — **target ~30–55% occlusion**.
46
+ That occlusion IS the effect. A hero shoved into a clean margin (~10% graze) is
47
+ WRONG — it reads as a small floating word, not an embed behind the subject.
48
+ · Exactly ONE hero per clip (scarcity = impact). Mark it `"hero": true` in the plan.
49
+ - Do NOT hand-position every group with its own scattered absolute `top%` — that
50
+ produces the unbalanced, occluded layouts the gate rejects (many re-tries). Planes
51
+ first; per-group `css` only fine-tunes WITHIN a plane. (Position fields above apply
52
+ per-group only when a group is NOT in a plane — the exception, not the default.)
53
+
54
+ READING ORDER — on-screen position follows SPOKEN order; a promoted word appears once:
55
+ - For groups sharing a column/region, vertical (top→bottom) order MUST match spoken
56
+ order. A promoted hero must NOT sit below words that come after it.
57
+ (e.g. "judge us by the [ACTIONS] that we take" → ACTIONS reads BETWEEN "by the" and
58
+ "that we take", NEVER below "that we take".)
59
+ - The promoted word is lifted OUT of the narration (appears once, as the hero — never
60
+ also in a narration line). For the words AFTER it, two options, in order:
61
+ 1. PREFERRED — flow them directly BELOW the hero (in reading order) or merge them
62
+ into the hero's group, IF that area is clean (check safe-zones). One continuous
63
+ read, no clearing.
64
+ 2. FALLBACK — if below/merge would land on the subject (occluded), do the Standard
65
+ hand-off: the pre-hero narration CLEARS, then the post-hero words appear fresh
66
+ (page-flip); the hero may hold across the flip.
67
+ Prefer promoting a CLAUSE-FINAL word when you can — then nothing follows to place.
68
+
69
+ Philosophy:
70
+ - Number of groups = content decides (3? 7? 12? whatever the speech
71
+ warrants)
72
+ - Each group's typography = scene decides (italic for soft moments,
73
+ uppercase for punch, mixed case for narration — per group)
74
+ - No more "cap-1 must be italic 600" rules. Those were slots.
75
+ - The agent reads the scene + transcript and composes. The template
76
+ only guarantees the DNA feels coherent (Inter family, same motion
77
+ library, warm-cream or deep-warm palette, same shadow logic).
78
+
79
+ See `references/typographic-moves.md` for RECOMMENDED typography
80
+ combinations (NOT rules) — italic 600 for openers, uppercase 900 for
81
+ climaxes, etc. These are suggestions the agent can pick from or deviate.
82
+ -->
83
+ <html lang="en">
84
+ <head>
85
+ <meta charset="UTF-8" />
86
+ <meta name="viewport" content="width={{WIDTH}}, height={{HEIGHT}}" />
87
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
88
+ <style>
89
+ :root { --font-scale: {{FONT_SCALE}}; --h: {{HEIGHT}}px; --w: {{WIDTH}}px; }
90
+
91
+ * { margin: 0; padding: 0; box-sizing: border-box; }
92
+ html, body {
93
+ margin: 0;
94
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
95
+ overflow: hidden;
96
+ background: #000;
97
+ font-family: "Inter", "Helvetica Neue", system-ui, sans-serif;
98
+ }
99
+ #a-roll { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
100
+ #stage {
101
+ position: absolute;
102
+ top: 0; left: 0;
103
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
104
+ pointer-events: none;
105
+ z-index: 2;
106
+ }
107
+
108
+ /* BASE — everything shared across groups */
109
+ .cap {
110
+ display: block;
111
+ position: absolute;
112
+ opacity: 0;
113
+ mix-blend-mode: {{BLEND_MODE}};
114
+ color: {{CAP_COLOR}};
115
+ text-shadow: {{TEXT_SHADOW}};
116
+ filter: {{TEXT_FILTER}};
117
+ line-height: 1.0;
118
+ will-change: transform, opacity;
119
+ /* Free-mode defaults (when cap is a direct child of #stage):
120
+ per-group `top:` positions the element's TOP edge from the
121
+ frame top. Agent writes top/left/right per group. */
122
+ top: 50%; left: 0; right: 0; text-align: center;
123
+ }
124
+ .cap .w { display: inline-block; opacity: 0; will-change: opacity, transform; }
125
+
126
+ /* Plane mode — when .cap is nested inside .plane, switch to flow
127
+ layout so the plane's flex/grid can own the stacking. Agent writes
128
+ typography only per group; positions are delegated to the plane.
129
+ This is the memory-wall / champion architecture: a shared parent
130
+ container handles spatial coherence, caps inside don't fight for
131
+ top% values. */
132
+ .plane { position: absolute; pointer-events: none; }
133
+ .plane > .cap {
134
+ position: relative;
135
+ top: auto; left: auto; right: auto; bottom: auto;
136
+ }
137
+
138
+ {{PLANES_CSS}}
139
+
140
+ /* Per-group typography (agent-authored). */
141
+ {{CUSTOM_CSS}}
142
+ </style>
143
+ </head>
144
+ <body>
145
+ <div
146
+ id="root"
147
+ data-composition-id="main"
148
+ data-start="0"
149
+ data-duration="{{DURATION}}"
150
+ data-width="{{WIDTH}}"
151
+ data-height="{{HEIGHT}}"
152
+ >
153
+ <video
154
+ id="a-roll"
155
+ src="source.mp4"
156
+ muted
157
+ playsinline
158
+ data-duration="{{DURATION}}"
159
+ data-track-index="0"
160
+ style="z-index: 1"
161
+ ></video>
162
+
163
+ <div id="stage">{{GROUPS_HTML}}</div>
164
+
165
+ <audio
166
+ id="a-roll-audio"
167
+ src="source.mp4"
168
+ data-start="0"
169
+ data-duration="{{DURATION}}"
170
+ data-track-index="3"
171
+ data-volume="1"
172
+ ></audio>
173
+ </div>
174
+
175
+ <script>
176
+ window.__timelines = window.__timelines || {};
177
+ const tl = gsap.timeline({ paused: true });
178
+ const DUR = {{DURATION}};
179
+ const GROUPS = {{GROUPS_JSON}};
180
+
181
+ /* Motion vocabulary — LOCKED.
182
+ soft: gentle fade with 8px y-drift, 0.45s power2.out
183
+ present: snappier pop with 6px y + 1.04 scale, 0.22s power3.out
184
+ Both target per-WORD spans. Container fade-in via tl.set at g.in-0.01. */
185
+ GROUPS.forEach(function (g) {
186
+ var sel = "#" + g.id;
187
+ var isSoft = g.tone === "soft";
188
+
189
+ // Enter: reveal opacity at g.in-0.01. The cap has been reserving flex
190
+ // space all along (opacity: 0 but display: block from CSS), so no
191
+ // layout reflow when it fades in — matches memory-wall canonical.
192
+ tl.set(sel, { opacity: 1 }, Math.max(0, g.in - 0.01));
193
+
194
+ g.words.forEach(function (w, i) {
195
+ var wsel = sel + " .w[data-i='" + i + "']";
196
+ if (isSoft) {
197
+ tl.fromTo(wsel,
198
+ { opacity: 0, y: 8 },
199
+ { opacity: 1, y: 0, duration: 0.45, ease: "power2.out", overwrite: "auto" },
200
+ w.start);
201
+ } else {
202
+ tl.fromTo(wsel,
203
+ { opacity: 0, y: 6, scale: 1.04 },
204
+ { opacity: 1, y: 0, scale: 1.0, duration: 0.22,
205
+ ease: "power3.out", overwrite: "auto", transformOrigin: "50% 50%" },
206
+ w.start);
207
+ }
208
+ });
209
+
210
+ if (g.out < DUR) {
211
+ tl.to(sel, { opacity: 0, duration: 0.5, ease: "power2.in", overwrite: "auto" },
212
+ g.out - 0.5);
213
+ }
214
+ // Exit: display:none releases flex space so the next sentence-block's
215
+ // caps can take the top slot. All caps in ONE block share the same
216
+ // `out` so this fires synchronously for the block — one clean reflow
217
+ // at the boundary, no per-cap jitter. Plan must share `out` within a
218
+ // block; staggered per-cap exits are forbidden in plane mode.
219
+ tl.set(sel, { opacity: 0, display: "none" }, g.out);
220
+ });
221
+
222
+ tl.seek(0);
223
+ window.__timelines["main"] = tl;
224
+ </script>
225
+ </body>
226
+ </html>