@mevdragon/vidfarm-devcli 0.14.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 (418) 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.js +295 -11
  407. package/dist/src/app.js +317 -133
  408. package/dist/src/cli.js +529 -12
  409. package/dist/src/composition-runtime.js +262 -3
  410. package/dist/src/devcli/doctor.js +192 -0
  411. package/dist/src/devcli/hyperframes-cli.js +118 -0
  412. package/dist/src/devcli/skills.js +476 -0
  413. package/dist/src/devcli/stills.js +249 -0
  414. package/dist/src/editor-chat.js +255 -0
  415. package/dist/src/hyperframes/composition.js +5 -5
  416. package/dist/src/services/composition-lint.js +199 -0
  417. package/dist/src/services/hyperframes.js +67 -13
  418. package/package.json +2 -1
@@ -0,0 +1,138 @@
1
+ # Direction catalog
2
+
3
+ 10 distinct aesthetic directions the skill can express. Each is a complete look: font, motion, color, placement, rhetorical defaults. The agent picks by **content tone × shot type × platform**, not preset name.
4
+
5
+ Current shipped templates (`modes/cinematic/*`) cover about 30% of this catalog. The rest are future ship-ready aesthetics.
6
+
7
+ Classification matrix — pick direction by intersection:
8
+
9
+ | Tone ↓ / Platform → | 9:16 portrait | 16:9 landscape | 1:1 square |
10
+ | ------------------- | ---------------------------------------- | ------------------------ | ------------------------ |
11
+ | **Documentary** | documentary-dignified (vertical variant) | documentary-dignified | broadcast-dignified |
12
+ | **Conversational** | portrait-header + default | memory-wall OR champion | broadcast-dignified |
13
+ | **Energetic** | high-energy-vlog | high-energy-vlog-wide | high-energy-vlog-sq |
14
+ | **Poetic** | lyrical-poem-on-wall (portrait) | lyrical-poem-on-wall | chapter-card |
15
+ | **Keynote/tech** | — (9:16 not ideal) | tech-keynote-confident | tech-keynote-confident |
16
+ | **Investigative** | — | investigative-typewriter | investigative-typewriter |
17
+ | **Music video** | k-pop-lyric | k-pop-lyric | k-pop-lyric |
18
+
19
+ ---
20
+
21
+ ## Direction specs
22
+
23
+ ### 1. documentary-dignified _(Errol Morris / PBS Frontline)_ — Standard-mode direction (no prebuilt Cinematic template)
24
+
25
+ - **Family**: Söhne Mono OR GT Sectra for name cards; Inter for body
26
+ - **Weights**: 500 body, 700 name card
27
+ - **Color**: bone `#F5EFE6` on charcoal, OR charcoal `#1A1A1A` on bone. No accent.
28
+ - **Motion**: burn-in (no animation). Held 0.5s past last word.
29
+ - **Placement**: bottom-left block, 10% margin, locked position for whole interview.
30
+ - **Rules**: 2-line max. Speaker name card once at first utterance + after each cut. No emphasis styling — gravitas IS the style.
31
+ - **Rhetorical**: aggressive filler suppression. Every word is chosen.
32
+
33
+ ### 2. cinematic-noir _(Kyle Cooper / Se7en)_
34
+
35
+ - **Family**: Distressed serif (Hoefler Text) + tight mono for detail
36
+ - **Weights**: 700 mostly; thin italic ONLY for whispers
37
+ - **Color**: off-white `#E8E0D0` with deep red `#8B0000` single-word accent for menace
38
+ - **Motion**: typewriter with 10% chance of 1px jitter on entry; scratched etch for chapter beats
39
+ - **Placement**: off-axis — avoid dead-center, slightly high-left or low-right
40
+ - **Rules**: no emoji, no rounded corners, everything hand-feeling
41
+
42
+ ### 3. tech-keynote-confident _(Apple / Jony Ive ad)_
43
+
44
+ - **Family**: SF Pro Display OR Inter, nothing else
45
+ - **Weights**: 800 headline keyword, 400 context
46
+ - **Color**: pure white on any bg; `mix-blend-mode: difference` fallback for bright scenes
47
+ - **Motion**: swipe-reveal from bottom via clip-path (400ms); exit fades 400ms
48
+ - **Placement**: dead center, large. NOT lower-third.
49
+ - **Rules**: one caption on screen at a time. 2–5 words per caption. Long held silences between. Feels like slides.
50
+
51
+ ### 4. lyrical-poem-on-wall _(extends current memory-wall template)_
52
+
53
+ - **Family**: Serif with personality — EB Garamond / GT Sectra / Caslon Italic
54
+ - **Weights**: 400–500 only. **This direction rejects bold.**
55
+ - **Color**: picks up wall via `mix-blend-mode: overlay`, opacity 0.85, no stroke
56
+ - **Motion**: etch in 600ms, hold 1.5–3s, etch out
57
+ - **Placement**: always on a surface in the scene (back wall, foam, whiteboard). Uses matte pipeline.
58
+ - **Rules**: captions are **fewer** than spoken text — 40–60%. Intentional silences. No other tool does this; strong differentiation.
59
+
60
+ ### 5. high-energy-vlog _(controlled Hormozi)_
61
+
62
+ - **Family**: Inter ExtraBold, uppercase
63
+ - **Weights**: 900 always
64
+ - **Color**: white body + ONE accent (`#FFD600` or `#00E676`) + narrow 2px dark stroke
65
+ - **Motion**: word-pop with elastic, 60ms stagger; active word scales 1.15× on speech onset
66
+ - **Placement**: center-frame, ~35% from top
67
+ - **Rules**: max 3 words per frame. Hard break at breath pauses. Accent color on ~15% of words. **One full silence every 10s** (what Hormozi imitators miss).
68
+
69
+ ### 6. chapter-card _(Wes Anderson / Grand Budapest)_
70
+
71
+ - **Family**: Futura Bold (modern) / Archer (warm) / Bodoni (formal)
72
+ - **Weights**: 700 chapter title, 400 attribution
73
+ - **Color**: pastel hue sampled from scene
74
+ - **Motion**: full-frame static card between interview segments
75
+ - **Placement**: centered card for chapters; lower-left name card during speech
76
+ - **Rules**: chapter cards get their own beat (0.8s silence before, 0.4s after). Feels authored.
77
+
78
+ ### 7. investigative-typewriter _(Frontline / 60 Minutes / Morris Interrotron)_
79
+
80
+ - **Family**: IBM Plex Mono OR JetBrains Mono
81
+ - **Weights**: 500
82
+ - **Color**: white with 3px shadow, no stroke
83
+ - **Motion**: typewriter char-by-char 25ms/char; cursor blink 600ms after last char
84
+ - **Placement**: bottom band with 40% opacity gradient up — **NOT a hard box**
85
+ - **Rules**: one line only, two-line max. Every caption ends with 1-frame cursor-hold before next enters.
86
+
87
+ ### 8. k-pop-lyric _(music video typographic flex)_
88
+
89
+ - **Family**: oversized display serif (Playfair Display / GT Super) + tiny mono detail line
90
+ - **Weights**: display 900, mono 400
91
+ - **Color**: deep saturated single hue per song/segment
92
+ - **Motion**: cascade entries alternating sides; words cross subject with mix-blend
93
+ - **Placement**: intentionally LARGE — sometimes bigger than the face
94
+ - **Rules**: emotional/musical moments only. Never informational content. **Breaks rule #1 (subject wins) on purpose** — that's the whole point.
95
+
96
+ ### 9. broadcast-dignified _(BBC / NYT documentary standard)_
97
+
98
+ - **Family**: Helvetica Now / Neue Haas Grotesk
99
+ - **Weights**: 500 body, 700 name
100
+ - **Color**: white on 40% black gradient pill (not hard box, not plain shadow — gradient is the signature)
101
+ - **Motion**: 200ms fade-up, 150ms fade-down
102
+ - **Placement**: bottom-center, 10% margin, title-safe locked
103
+ - **Rules**: strict BBC — 160–180wpm, 32–34 chars/line, 2 lines max, 1.5s min gap. "Export to broadcast" mode. Boring on purpose. Never wrong.
104
+
105
+ ### 10. conference-lower-third-killer _(B2B but not lame)_
106
+
107
+ - **Family**: GT America / Aktiv Grotesk
108
+ - **Weights**: dual-weight name card — role 400, name 700, same size
109
+ - **Color**: scene-sampled accent on name, white on role
110
+ - **Motion**: name card swipes in from left 400ms on first appearance only; subsequent static
111
+ - **Placement**: lower-left card + active-word highlight inline in dialogue above
112
+ - **Rules**: mode for podcast clips, founder interviews, keynote pulls. Sophisticated without being arty.
113
+
114
+ ---
115
+
116
+ ## Which to ship next
117
+
118
+ Current templates: `memory-wall` (roughly direction #4), `champion` (roughly a mix of #5 and #9), `portrait-header` (default vertical).
119
+
120
+ Priority ship order based on competitive gap:
121
+
122
+ 1. **documentary-dignified** — no one else does this well; Errol Morris aesthetic is an unserved niche
123
+ 2. **lyrical-poem-on-wall** (as distinct template) — the one that most uses our matte-embed moat
124
+ 3. **high-energy-vlog** — matches but out-designs Hormozi/Submagic presets
125
+ 4. **tech-keynote-confident** — big for product launch videos
126
+ 5. **investigative-typewriter** — niche but highly distinctive
127
+
128
+ ---
129
+
130
+ ## How the agent picks
131
+
132
+ 1. Classify the clip: `tone × shot × platform` (see matrix above)
133
+ 2. Look up direction in matrix
134
+ 3. Read that direction's spec in this file
135
+ 4. Translate spec into plan.json parameters OR clone the canonical HTML from `examples/`
136
+ 5. Tune layout per scene (agent judgment, see `aesthetic-principles.md §1–18`)
137
+
138
+ If no direction fits cleanly → **Standard mode**. Don't fake-fit an ill-matched direction.
@@ -0,0 +1,371 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=1920, height=1080" />
6
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+ html,
14
+ body {
15
+ margin: 0;
16
+ width: 1920px;
17
+ height: 1080px;
18
+ overflow: hidden;
19
+ background: #000;
20
+ font-family: "Inter", system-ui, sans-serif;
21
+ }
22
+
23
+ #a-roll {
24
+ position: absolute;
25
+ inset: 0;
26
+ width: 100%;
27
+ height: 100%;
28
+ object-fit: cover;
29
+ }
30
+
31
+ /*
32
+ This scene has no flat wall — subject is center with a busy
33
+ bookshelf backdrop. So instead of a wall-plane, we place a
34
+ HEADER band across the top of the frame with subtle perspective
35
+ (slight rotateX so it lies on the bookshelf rather than floats).
36
+ Screen-blend picks up the shelf's darker patches.
37
+ */
38
+ #stage {
39
+ position: absolute;
40
+ top: 0;
41
+ left: 0;
42
+ width: 1920px;
43
+ height: 1080px;
44
+ perspective: 2400px;
45
+ perspective-origin: 25% 50%;
46
+ pointer-events: none;
47
+ z-index: 2;
48
+ }
49
+
50
+ /*
51
+ Left-column layout: subject fills x=550-1200, so the bookshelf
52
+ at x=0-550 is the clean zone. Captions right-align there, with
53
+ a mild perspective that makes them lie on the shelf.
54
+ */
55
+ .left-plane {
56
+ position: absolute;
57
+ /* Upper-left region. Hands gesture widely below y≈460, so we
58
+ keep the plane above that line. Head sits to the right of
59
+ x≈600, so x=40-720 here is the clean bookshelf zone. */
60
+ top: 40px;
61
+ left: 40px;
62
+ width: 720px;
63
+ height: 420px;
64
+ transform-style: preserve-3d;
65
+ transform: rotateY(4deg);
66
+ transform-origin: left center;
67
+ padding: 24px 36px;
68
+ }
69
+
70
+ /* Each cap stacks at the same absolute position within the plane
71
+ so hidden captions don't reserve flex space. */
72
+ .left-plane .cap {
73
+ position: absolute;
74
+ top: 24px;
75
+ right: 36px;
76
+ max-width: 648px; /* plane 720 - padding 36×2 */
77
+ }
78
+
79
+ /* A single "crown" caption placed center-stage for the payoff
80
+ ("A WIMBLEDON CHAMPION") — deliberately crosses the head to
81
+ deliver the emphasis via cinematic occlusion. */
82
+ .crown-plane {
83
+ position: absolute;
84
+ top: 420px;
85
+ left: 0;
86
+ right: 0;
87
+ text-align: center;
88
+ pointer-events: none;
89
+ }
90
+
91
+ .cap {
92
+ display: block;
93
+ position: relative;
94
+ line-height: 1.02;
95
+ opacity: 0;
96
+ mix-blend-mode: screen;
97
+ color: #fff5df;
98
+ text-shadow:
99
+ 0 0 18px rgba(255, 220, 170, 0.55),
100
+ 0 3px 8px rgba(0, 0, 0, 0.85);
101
+ filter: brightness(1.12) contrast(1.08);
102
+ will-change: transform, opacity;
103
+ }
104
+
105
+ .cap .w {
106
+ display: inline-block;
107
+ opacity: 0;
108
+ will-change: opacity, transform;
109
+ }
110
+
111
+ /*
112
+ Story beats sized to emphasize meaning:
113
+ - intros / fillers = smaller italic
114
+ - key statement phrases = bigger upright
115
+ - emphasis phrases (incredible things) = largest bold
116
+ - crown (Wimbledon Champion) = huge, center-stage, behind subject
117
+ */
118
+ .cap-intro {
119
+ font-size: 52px;
120
+ font-weight: 500;
121
+ font-style: italic;
122
+ letter-spacing: -0.005em;
123
+ }
124
+ .cap-phrase {
125
+ font-size: 60px;
126
+ font-weight: 600;
127
+ font-style: normal;
128
+ letter-spacing: -0.015em;
129
+ }
130
+ .cap-emph {
131
+ font-size: 70px;
132
+ font-weight: 800;
133
+ font-style: normal;
134
+ letter-spacing: -0.025em;
135
+ }
136
+ .cap-dream {
137
+ font-size: 64px;
138
+ font-weight: 700;
139
+ font-style: italic;
140
+ letter-spacing: -0.015em;
141
+ }
142
+ .cap-crown {
143
+ font-size: 140px;
144
+ font-weight: 900;
145
+ font-style: normal;
146
+ letter-spacing: -0.035em;
147
+ text-transform: uppercase;
148
+ line-height: 1;
149
+ }
150
+ </style>
151
+ </head>
152
+ <body>
153
+ <div
154
+ id="root"
155
+ data-composition-id="main"
156
+ data-start="0"
157
+ data-duration="12.08"
158
+ data-width="1920"
159
+ data-height="1080"
160
+ >
161
+ <video
162
+ id="a-roll"
163
+ class="clip"
164
+ src="source.mp4"
165
+ muted
166
+ playsinline
167
+ data-duration="12.08"
168
+ data-track-index="0"
169
+ style="z-index: 1"
170
+ ></video>
171
+
172
+ <div id="stage">
173
+ <!-- Left column: G1-G5 live here, on the clean bookshelf -->
174
+ <div class="left-plane">
175
+ <div id="cg-0" class="cap cap-intro">
176
+ <span class="w" data-i="0">You</span>
177
+ <span class="w" data-i="1">know,</span>
178
+ <span class="w" data-i="2">for</span>
179
+ <span class="w" data-i="3">me</span>
180
+ </div>
181
+ <div id="cg-1" class="cap cap-phrase">
182
+ <span class="w" data-i="0">I've</span>
183
+ <span class="w" data-i="1">had</span>
184
+ <span class="w" data-i="2">this</span>
185
+ <span class="w" data-i="3">kind</span>
186
+ <span class="w" data-i="4">of</span>
187
+ <span class="w" data-i="5">upbringing</span>
188
+ </div>
189
+ <div id="cg-2" class="cap cap-phrase">
190
+ <span class="w" data-i="0">the</span>
191
+ <span class="w" data-i="1">great</span>
192
+ <span class="w" data-i="2">foundation</span>
193
+ </div>
194
+ <div id="cg-3" class="cap cap-emph">
195
+ <span class="w" data-i="0">I've</span>
196
+ <span class="w" data-i="1">achieved</span>
197
+ <span class="w" data-i="2">incredible</span>
198
+ <span class="w" data-i="3">things</span>
199
+ </div>
200
+ <div id="cg-4" class="cap cap-dream">
201
+ <span class="w" data-i="0">dreaming</span>
202
+ <span class="w" data-i="1">of</span>
203
+ <span class="w" data-i="2">becoming</span>
204
+ <span class="w" data-i="3">number</span>
205
+ <span class="w" data-i="4">one</span>
206
+ </div>
207
+ </div>
208
+ <!-- Center-stage crown: the payoff. Sits where the subject is,
209
+ matte layering makes it *behind* him — the occlusion is the moment. -->
210
+ <div class="crown-plane">
211
+ <div id="cg-5" class="cap cap-crown">
212
+ <span class="w" data-i="0">Wimbledon</span>
213
+ <span class="w" data-i="1">Champion</span>
214
+ </div>
215
+ </div>
216
+ </div>
217
+
218
+ <audio
219
+ id="a-roll-audio"
220
+ src="source.mp4"
221
+ data-start="0"
222
+ data-duration="12.08"
223
+ data-track-index="3"
224
+ data-volume="1"
225
+ ></audio>
226
+ </div>
227
+
228
+ <script>
229
+ window.__timelines = window.__timelines || {};
230
+ const tl = gsap.timeline({ paused: true });
231
+ const DUR = 12.08;
232
+
233
+ /* Word-level transcript — ElevenLabs scribe_v2 */
234
+ const GROUPS = [
235
+ {
236
+ id: "cg-0",
237
+ in: 0.1,
238
+ out: 1.45,
239
+ tone: "soft",
240
+ words: [
241
+ { text: "You", start: 0.18, end: 0.24 },
242
+ { text: "know", start: 0.28, end: 0.36 },
243
+ { text: "for", start: 0.46, end: 0.62 },
244
+ { text: "me", start: 0.66, end: 0.86 },
245
+ ],
246
+ },
247
+ {
248
+ id: "cg-1",
249
+ in: 1.4,
250
+ out: 3.35,
251
+ tone: "soft",
252
+ words: [
253
+ { text: "I've", start: 1.5, end: 1.68 },
254
+ { text: "had", start: 1.76, end: 1.94 },
255
+ { text: "this", start: 1.98, end: 2.14 },
256
+ { text: "kind", start: 2.2, end: 2.34 },
257
+ { text: "of", start: 2.36, end: 2.44 },
258
+ { text: "upbringing", start: 2.48, end: 3.06 },
259
+ ],
260
+ },
261
+ {
262
+ id: "cg-2",
263
+ in: 3.5,
264
+ out: 5.35,
265
+ tone: "soft",
266
+ words: [
267
+ { text: "the", start: 3.56, end: 3.64 },
268
+ { text: "great", start: 3.7, end: 3.9 },
269
+ { text: "foundation", start: 3.96, end: 4.6 },
270
+ ],
271
+ },
272
+ {
273
+ id: "cg-3",
274
+ in: 6.05,
275
+ out: 8.3,
276
+ tone: "present",
277
+ words: [
278
+ { text: "I've", start: 6.36, end: 6.5 },
279
+ { text: "achieved", start: 6.62, end: 7.08 },
280
+ { text: "incredible", start: 7.38, end: 7.86 },
281
+ { text: "things", start: 7.88, end: 8.16 },
282
+ ],
283
+ },
284
+ {
285
+ id: "cg-4",
286
+ in: 8.5,
287
+ out: 10.4,
288
+ tone: "present",
289
+ words: [
290
+ { text: "dreaming", start: 8.54, end: 8.84 },
291
+ { text: "of", start: 8.88, end: 9.0 },
292
+ { text: "becoming", start: 9.04, end: 9.4 },
293
+ { text: "number", start: 9.48, end: 9.64 },
294
+ { text: "one", start: 9.72, end: 9.8 },
295
+ ],
296
+ },
297
+ {
298
+ id: "cg-5",
299
+ in: 10.8,
300
+ out: 12.08,
301
+ tone: "present",
302
+ words: [
303
+ { text: "Wimbledon", start: 10.92, end: 11.28 },
304
+ { text: "Champion", start: 11.38, end: 11.84 },
305
+ ],
306
+ },
307
+ ];
308
+
309
+ GROUPS.forEach(function (g) {
310
+ var sel = "#" + g.id;
311
+ var words = g.words.map(function (_, i) {
312
+ return sel + " .w[data-i='" + i + "']";
313
+ });
314
+ var isSoft = g.tone === "soft";
315
+
316
+ /* Container visible just before entrance; single-layer fade is on words. */
317
+ tl.set(sel, { opacity: 1, y: 0 }, Math.max(0, g.in - 0.01));
318
+
319
+ g.words.forEach(function (w, i) {
320
+ if (isSoft) {
321
+ tl.fromTo(
322
+ words[i],
323
+ { opacity: 0, y: 8 },
324
+ { opacity: 1, y: 0, duration: 0.42, ease: "power2.out", overwrite: "auto" },
325
+ w.start,
326
+ );
327
+ } else {
328
+ tl.fromTo(
329
+ words[i],
330
+ { opacity: 0, y: 6, scale: 1.04 },
331
+ {
332
+ opacity: 1,
333
+ y: 0,
334
+ scale: 1.0,
335
+ duration: 0.22,
336
+ ease: "power3.out",
337
+ transformOrigin: "50% 50%",
338
+ overwrite: "auto",
339
+ },
340
+ w.start,
341
+ );
342
+ }
343
+ });
344
+
345
+ /* Group exit — each group fades out before the next enters. */
346
+ if (g.out < DUR) {
347
+ tl.to(
348
+ sel,
349
+ { opacity: 0, duration: 0.45, ease: "power2.in", overwrite: "auto" },
350
+ g.out - 0.45,
351
+ );
352
+ }
353
+ tl.set(sel, { opacity: 0, visibility: "hidden" }, g.out);
354
+ });
355
+
356
+ /* Self-lint */
357
+ GROUPS.forEach(function (g) {
358
+ var el = document.getElementById(g.id);
359
+ if (!el) return;
360
+ tl.seek(g.out + 0.01);
361
+ var cs = window.getComputedStyle(el);
362
+ if (cs.opacity !== "0" && cs.visibility !== "hidden") {
363
+ console.warn("[caption-lint] " + g.id + " visible at t=" + (g.out + 0.01).toFixed(2));
364
+ }
365
+ });
366
+ tl.seek(0);
367
+
368
+ window.__timelines["main"] = tl;
369
+ </script>
370
+ </body>
371
+ </html>