@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,275 @@
1
+ ---
2
+ version: alpha
3
+ name: Bold Poster — Frame (video / frame layer)
4
+ description: >
5
+ Video-first companion to Bold Poster's design.md. The unit is the frame (1920×1080). Atoms are
6
+ identical and sacred — the four-color palette (white / brown-black ink / tomato red / off-white),
7
+ the three-face stack (Shrikhand display tilted at poster scale, Libre Baskerville serif body,
8
+ Space Grotesk mono chrome), the stacked text-shadow on red display, the 3px+1.5px double-border
9
+ grid, red leftbar cards, red em-dash bullets, and the red progress bar. Composition + frame scale
10
+ rewritten. Motion out of scope.
11
+ unit: the frame — 1920×1080 primary; 9:16 and 1:1 documented
12
+ principle: atoms are sacred · composition is free · numbers come from the script
13
+
14
+ colors:
15
+ bg: "#FFFFFF"
16
+ dark: "#1C1410"
17
+ red: "#D8000F"
18
+ light: "#F5F2EF"
19
+
20
+ typography:
21
+ # — reading + chrome ramp —
22
+ body: { fontFamily: "Libre Baskerville", cqw: 0.85, weight: 400, lineHeight: 1.75, color: "dark" }
23
+ body-cell:{ fontFamily: "Libre Baskerville", cqw: 0.7, weight: 400, lineHeight: 1.55 }
24
+ label: { fontFamily: "Space Grotesk", px: 10, weight: 600, tracking: "2px", upper: true, color: "red" }
25
+ bullet-body:{ fontFamily: "Space Grotesk", cqw: 0.62, weight: 400, lineHeight: 1.45 }
26
+ # — display / hero ramp (Shrikhand 400, tilted) —
27
+ card-title:{ fontFamily: "Shrikhand", cqw: 1.9, weight: 400, lineHeight: 1.1, color: "dark" }
28
+ cell-number:{ fontFamily: "Shrikhand", cqw: 2.7, weight: 400, lineHeight: 1.0, color: "red" }
29
+ section-header:{ fontFamily: "Shrikhand", cqw: 3.3, weight: 400, lineHeight: 1.0, color: "dark" }
30
+ red-quote:{ fontFamily: "Shrikhand", cqw: 4.7, weight: 400, lineHeight: 1.15, color: "bg", shadow: "stacked" }
31
+ hero-title-bottom:{ fontFamily: "Shrikhand", cqw: 10.4, weight: 400, lineHeight: 0.9, color: "dark", rotate: "2deg" }
32
+ hero-title:{ fontFamily: "Shrikhand", cqw: 11.5, weight: 400, lineHeight: 0.88, color: "dark" }
33
+ hero-title-red:{ fontFamily: "Shrikhand", cqw: 13.5, weight: 400, lineHeight: 0.85, color: "red", rotate: "-4deg" }
34
+ close-big:{ fontFamily: "Shrikhand", cqw: 13.5, weight: 400, lineHeight: 0.88, color: "red", rotate: "-5deg" }
35
+ stat-big:{ fontFamily: "Shrikhand", cqw: 22.0, weight: 400, lineHeight: 0.82, color: "red", rotate: "-6deg" }
36
+
37
+ spacing:
38
+ pad-slide: "3cqw 3.6cqw"
39
+ gap-grid: "1.5cqw 2cqw"
40
+
41
+ components:
42
+ progress-bar:
43
+ backgroundColor: "{colors.red}"
44
+ size: "0.5cqw tall, bottom edge, width grows with index"
45
+ description: "The most prominent chrome."
46
+ hero-title-stack:
47
+ typography: "{typography.hero-title} + {typography.hero-title-red} + {typography.hero-title-bottom}"
48
+ transform: "≥4 tilt (−4°/+2°), ≥1 line in {colors.red}"
49
+ description: "A 3-line Shrikhand composition — the signature opener."
50
+ stat-big:
51
+ typography: "{typography.stat-big}"
52
+ color: "{colors.red} (or {colors.bg} on red with stacked shadow)"
53
+ transform: "rotate(-6deg)"
54
+ description: "Hero numeral at poster scale."
55
+ fin-grid:
56
+ border: "0.3cqw solid {colors.dark} outer"
57
+ rule: "0.15cqw solid {colors.dark} inner (touching at intersections)"
58
+ rounded: "0"
59
+ typography: "{typography.cell-number} ({colors.red}) + {typography.label} + {typography.body-cell}"
60
+ description: "The double-border tabular signature."
61
+ red-leftbar-card:
62
+ borderLeft: "4px solid {colors.red}"
63
+ padding: "0 0 0 ~1cqw"
64
+ rounded: "0"
65
+ shadow: "none"
66
+ typography: "{typography.card-title} + {typography.body} + red em-dash bullets"
67
+ description: "Editorial card cantilevered off a red left rule — no outline."
68
+ red-panel:
69
+ backgroundColor: "{colors.red}"
70
+ textColor: "{colors.bg}"
71
+ description: "Full-bleed statement surface; display carries the stacked text-shadow."
72
+ dark-panel:
73
+ backgroundColor: "{colors.dark}"
74
+ textColor: "{colors.bg}"
75
+ description: "Full-bleed dark statement surface; red accents."
76
+ stacked-text-shadow:
77
+ shadow: "2px 2px 0 rgba(28,20,16,.25), 4px 4px 0 rgba(28,20,16,.2), 6px 6px 0 rgba(28,20,16,.15)"
78
+ appliesTo: "red display text on red panels only"
79
+ description: "The ONLY shadow in the system — text-shadow, not box-shadow."
80
+ bullet:
81
+ marker: "red em-dash (—) or round (•) glyph at absolute-left"
82
+ color: "{colors.red}"
83
+ description: "No default disc bullets; capped at three."
84
+ ---
85
+
86
+ # Bold Poster — Frame (video / frame layer)
87
+
88
+ ## Overview
89
+
90
+ Bold Poster at frame scale is a **populist editorial poster** — vintage Italian sports-magazine
91
+ display, classical serif body, one saturated tomato red, grids ruled in ink. Every frame should
92
+ feel _printed_: heavy display type at poster scale, locked to one red accent, on a white/off-white
93
+ sheet (or a full red/dark statement panel), with decoration kept to a strict minimum.
94
+
95
+ The voice is a three-face stack: **Shrikhand** (heavy slab-script, weight 400 only, routinely
96
+ tilted −6°..+2°) carries every hero title, section header, stat, and card title; **Libre
97
+ Baskerville** (literary serif) carries every body paragraph — it's what makes the system feel
98
+ printed; **Space Grotesk** (uppercase, 2–3px tracked) is chrome only — labels, eyebrows, counters,
99
+ bullet bodies. The plane is flat; the _only_ shadow is the stacked text-shadow on red display.
100
+
101
+ **Key characteristics at frame scale:**
102
+
103
+ - **Four colors only** — white / brown-black ink / tomato red / off-white. Red is the lone accent.
104
+ - **Shrikhand display, tilted** (−6° stat, −5° close, −4° hero-red, +2° hero-bottom) — the signature movement.
105
+ - **Libre Baskerville serif body** (line 1.75); **Space Grotesk** chrome (uppercase tracked).
106
+ - **Double-border grids** (3px outer + 1.5px inner ink); **red leftbar cards**; **red em-dash bullets** (max 3).
107
+ - **Stacked text-shadow** on red display — the only shadow; flat plane otherwise; square corners.
108
+ - **Red progress bar** at the bottom edge of every frame.
109
+
110
+ ## The Frame
111
+
112
+ ### Frame Craft Bar
113
+
114
+ Three eyeball tests gate every frame before any structural check:
115
+
116
+ - **Squint** — **one display moment dominates** at 3–6× everything else (the hero stack, `stat-big`, or `close-big`); nothing competes.
117
+ - **Silence** — statement frames reserve **~50–60% negative space**; the **financial grid is the one dense exception**.
118
+ - **Restraint** — **four colors only**, red the lone accent; one display moment per frame; the stacked text-shadow on red is the only shadow; bullets capped at three.
119
+ - **Reference** — aim at a **vintage Italian sports-magazine cover / mid-century European annual report**; failure looks like a **rounded, soft-shadowed multi-accent slide**.
120
+
121
+ - **Primary:** 1920×1080 (16:9). Display authored in **`cqw`** (`px ÷ 1920 × 100 = cqw`).
122
+ - **Vertical:** 1080×1920 (9:16). **Square:** 1080×1080 (1:1).
123
+ - **Safe area:** `pad-slide` ~3cqw — deliberately tight so the poster type crowds the frame.
124
+
125
+ **The container law (load-bearing).** Every frame ground sets `container-type: size`; ALL
126
+ frame-relative units are `cqw`/`cqh` against it — never `vw`. Borders stay px; rotation transforms hold.
127
+
128
+ ## Colors
129
+
130
+ Tokens identical to the source. `{colors.bg}` white is the default ground; `{colors.dark}` is body,
131
+ borders, headers; `{colors.red}` is the only accent — every numeral, section rule, eyebrow,
132
+ leftbar, bullet, progress bar, and the full statement-panel ground. `{colors.light}` off-white
133
+ stripes alternating panels. **No fifth color** (no green/blue/yellow); categorical difference comes
134
+ from position, label, and tilt. Red is never body text, never a tint, never an untexted fill.
135
+
136
+ ## Typography
137
+
138
+ Two ramps. The **reading/chrome ramp** (Baskerville body 0.85cqw, Space Grotesk labels in px)
139
+ carries copy + chrome; the **display ramp** (Shrikhand `section-header` 3.3cqw → `stat-big` 22cqw)
140
+ carries every statement and numeral.
141
+
142
+ - **Legibility floor:** any load-bearing line ≥ **1.4cqw**; mono labels are chrome only.
143
+ - **Fit-to-measure:** size the headline to its length. Cap the block at **≤ 78cqw**; ≤2 words → `stat-big`/`hero-title-red`; 3–4 → `hero-title`; 5+ → `section-header`. The hero is a stacked 3-line composition.
144
+ - **Shrikhand is weight 400, tilted on statement/hero elements, red on numerals**; **Baskerville body at line ≥1.5**; **Space Grotesk chrome uppercase, 2–3px**. Inline `<strong>` switches face to Space Grotesk 600. No italic display, no untilted red hero.
145
+
146
+ ## Depth & Surface
147
+
148
+ Flat plane. Depth from:
149
+
150
+ - **Heavy borders** — 3px+1.5px double-border grids, 2px global-card outline, 4px red leftbar rules.
151
+ - **Surface inversion** — full-bleed red or dark statement panels.
152
+ - **Tilt** — rotated Shrikhand breaks the baseline for perceived dimension.
153
+ - **The single shadow** — stacked text-shadow on red display only (text-shadow, three steps).
154
+
155
+ **Ceiling:** no box-shadow, no rounded surface (square corners; only the hint pill is 4px), no gradient.
156
+
157
+ ## Shapes
158
+
159
+ - **0 radius everywhere** except the hint pill (4px). Cards, cells, panels, callouts — sharp rectangles.
160
+
161
+ ## Components
162
+
163
+ - **hero-title-stack** — the 3-line tilted opener. **stat-big** — the poster numeral.
164
+ - **fin-grid** — the double-border tabular signature. **red-leftbar-card** — the cantilevered editorial card.
165
+ - **red-panel / dark-panel** — statement surfaces. **stacked-text-shadow** — the one shadow.
166
+ - **bullet** — red em-dash (max 3). **progress-bar** — the red bottom strip.
167
+
168
+ ## Frame Treatments
169
+
170
+ > Recipe: ground · register · composes · focal · chrome · accent · silence · Fixed/Free · density.
171
+ > One display moment per frame; statement frames reserve massive negative space.
172
+
173
+ ### 1 · Hero Stack (identity · move: 3-line tilted stack · left)
174
+
175
+ **Ground** white. **Composes** hero-title-stack, label, body tagline, progress-bar. **Focal** a
176
+ 3-line Shrikhand stack (e.g. ink / red-tilted / paper) — one red line, one+ tilted. **Chrome** mono
177
+ eyebrow + Baskerville tagline; bottom progress bar + counter. **Accent** the red line. **Silence**
178
+ right half open. **Fixed** Shrikhand 400, ≥1 tilt + ≥1 red, square. **Free** the words, line sizes.
179
+ **Density** low.
180
+
181
+ ### 2 · Hero Stat (statement · move: poster numeral · red panel · centered)
182
+
183
+ **Ground** full `{colors.red}`. **Composes** stat-big, label, body sub. **Focal** a `stat-big`
184
+ numeral rotated −6° in white with the stacked shadow, centered, with a mono label above + Baskerville
185
+ sub below. **Accent** the ink stacked-shadow on white. **Silence** ~60%. **Fixed** white-on-red +
186
+ stacked shadow, −6° tilt. **Free** the figure (from script), label. **Density** low.
187
+
188
+ ### 3 · Financial Grid (data · move: double-border matrix · the dense frame)
189
+
190
+ **Ground** white, `pad-slide`. **Composes** label, section-header, fin-grid. **Focal** a 3px-outer/
191
+ 1.5px-inner ink grid of cells (red Shrikhand numeral + mono label + Baskerville body). **Chrome** mono
192
+ eyebrow; progress bar. **Accent** the red numerals. **Silence** tight — the density exception.
193
+ **Fixed** double-border, red numerals, serif body. **Free** figures (from script), labels. **Density** dense-exception.
194
+
195
+ ### 4 · Pull Quote (quote · move: tilted/stacked display · red panel · left)
196
+
197
+ **Ground** full `{colors.red}`. **Composes** red-quote, Baskerville cite. **Focal** a 2-line Shrikhand
198
+ quote in white with the stacked shadow; a Baskerville cite beneath. **Accent** the stacked shadow.
199
+ **Silence** ~50%. **Fixed** white-on-red + stacked shadow. **Free** quote, cite. **Density** low.
200
+
201
+ ### 5 · Editorial Cards (content · move: red leftbar cards · left)
202
+
203
+ **Ground** white (or alternating off-white stripes). **Composes** label, section-header, 2–3×
204
+ red-leftbar-card. **Focal** cards cantilevered off 4px red rules — Shrikhand title + Baskerville body
205
+
206
+ - red em-dash bullets (max 3). **Accent** the red left rules + bullets. **Silence** moderate. **Fixed**
207
+ 4px red leftbar, em-dash bullets, no outline. **Free** card content. **Density** standard.
208
+
209
+ ### 6 · Closing Statement (closer · move: tilted close-big · centered/left)
210
+
211
+ **Ground** white or `{colors.dark}`. **Composes** close-big, label, body sub, progress-bar. **Focal**
212
+ a Shrikhand `close-big` (rotated −5°, red) sign-off; mono eyebrow + Baskerville contact line. **Accent**
213
+ the red tilted title. **Silence** ~60%. **Fixed** −5° tilt, red close-big. **Free** sign-off, contact.
214
+ **Density** low.
215
+
216
+ ## Composition Rules
217
+
218
+ ### Do
219
+
220
+ - Stack hero titles in 3 Shrikhand lines — at least one tilted, at least one red.
221
+ - Make every numeral **red Shrikhand**; tilt statement display **−5° to −6°**.
222
+ - Set eyebrows in **Space Grotesk 600 uppercase, 2–3px**, red; body in **Baskerville, line 1.75**.
223
+ - Build data grids with the **3px outer + 1.5px inner double border**; use red leftbar cards elsewhere.
224
+ - Use **red em-dash bullets, capped at three**; apply the stacked text-shadow on red display.
225
+ - One display moment per frame; reserve negative space on statement frames.
226
+
227
+ ### Don't
228
+
229
+ - No second accent color; no rounded corners (square only, save the hint pill).
230
+ - No drop shadow — the stacked text-shadow on red is the only one.
231
+ - No font substitutes; no Shrikhand body, no Baskerville labels, no Space Grotesk headlines.
232
+ - No default disc bullets; no untilted red statement display.
233
+ - Don't crowd a statement frame; don't blow a long line edge-to-edge (step down).
234
+
235
+ ## Aspect-Ratio Behavior
236
+
237
+ | Treatment | 16:9 | 9:16 | 1:1 |
238
+ | --------------- | ------------------------- | ------------------------ | -------------------- |
239
+ | Hero Stack | stack left, tagline below | stack centered, taller | stack, tagline below |
240
+ | Hero Stat | numeral centered | numeral centered, taller | centered |
241
+ | Financial Grid | 3 cells across | 2 across / stacked | 2×2 |
242
+ | Pull Quote | quote left | quote stacked | centered |
243
+ | Editorial Cards | 2–3 across | stacked | stacked |
244
+ | Closing | close-big centered | close-big stacked | centered |
245
+
246
+ `pad-slide` stays tight on the short edge; re-step display so the line stays ≤78cqw above the floor.
247
+ Tilts hold; the progress bar spans the bottom on every ratio.
248
+
249
+ ## Approved Entities
250
+
251
+ No real customers, logos, or vendors are defined in the source — render any such mark as a
252
+ placeholder. The system supplies type, one red, and ink rules, not brands.
253
+
254
+ ## Numerals & Claims (hard rule)
255
+
256
+ Never invent figures, financials, percentages, or dates at frame scale. Render slots as `— figure —`,
257
+ `{metric}`, `+NN%`. Fin-grid cells and stat-big especially carry placeholders until the script
258
+ supplies them. Catalogue numbers / progress are decorative.
259
+
260
+ ## Pre-Render Self-Audit
261
+
262
+ - **Squint** — one display moment dominates; nothing competes.
263
+ - **Silence** — statement frames reserve ~50–60% negative space; only the fin-grid runs dense.
264
+ - **Color** — four colors only; red is the lone accent; no red body text.
265
+ - **Type** — Shrikhand 400 tilted on statements, red numerals, fit-to-measure; Baskerville body line 1.75; mono chrome uppercase 2–3px; ≥1.4cqw floor.
266
+ - **Depth** — flat; the stacked text-shadow on red display is the only shadow; square corners.
267
+ - **Bullets** — red em-dash, capped at three.
268
+ - **Fabrication** — every numeral traces to the script, else placeholder.
269
+
270
+ ## Known Gaps
271
+
272
+ - **Motion intentionally out of scope.** frame.md specifies composition only; the source's 550ms slide transitions are deck mechanics.
273
+ - **Shrikhand + Libre Baskerville + Space Grotesk via Google Fonts.** CJK: Noto Serif SC 900/400 + Noto Sans SC; Shrikhand's slab-script has no Hanzi equal — keep tilts + red + double-borders to carry the identity.
274
+ - **9:16 / 1:1 are guidance**; verify the one big line ≤78cqw per ratio and that tilts don't clip.
275
+ - Grids, leftbar cards, and the stacked shadow are CSS-only; no external imagery is required.
@@ -0,0 +1,230 @@
1
+ <!--
2
+ Bold Poster — caption skin (preset-local source).
3
+
4
+ This is the preset's own lower-third karaoke caption look. product-launch-video's
5
+ Step 2 copies it into the project as caption-skin.html; captions.mjs then fills the
6
+ three reserved holes, wraps the fragment in a <template>, and writes
7
+ compositions/captions.html:
8
+ · the empty GROUPS array → the engine's scene-aware word groups
9
+ · the 0 duration + 0 width/height → real total + canvas size
10
+ · the empty data-brand-tokens style → :root tokens derived from the project's frame.md
11
+
12
+ Token contract — reference ONLY this fixed vocab (captions.mjs injects it from
13
+ frame.md, so the Step-2 brand overlay flows through; each var has a bold-poster
14
+ literal fallback for standalone preview):
15
+ --cap-ink · --cap-canvas · --cap-accent · --cap-accent-2 · --font-display ·
16
+ --font-body · --cap-band-top · --cap-band-height
17
+ Hooks (do not rename): .caption-group / .caption-word + states .is-active / .is-spoken,
18
+ root data-composition-id="captions", timeline at window.__timelines["captions"].
19
+ State changes use gsap.set({className}) (applied on the engine's frame-by-frame seek);
20
+ never tl.call() callbacks (seek does not fire them → wrong state on render).
21
+
22
+ Visual: a fresh-paper card with bold poster framing — a heavy 1.5px brown-black ink
23
+ rule plus a 4px tomato-red leftbar (the brand's cantilevered-card signature), SQUARE
24
+ corners, NO drop shadow (the system's only shadow is the stacked text-shadow on red
25
+ display). Serif body face, ink glyphs. Upcoming words sit in faint ink; the current
26
+ word slams into a tomato-red panel (the brand's signature surface inversion, a hard
27
+ square block on paper-white reading, no blur) with the stacked text-shadow on it;
28
+ spoken words settle to solid ink, panel cleared.
29
+ -->
30
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
31
+
32
+ <!-- captions.mjs injects the project's :root tokens here -->
33
+ <style data-brand-tokens></style>
34
+
35
+ <style>
36
+ #captions-root {
37
+ position: absolute;
38
+ inset: 0;
39
+ pointer-events: none;
40
+ }
41
+ .caption-layer {
42
+ position: absolute;
43
+ inset: 0;
44
+ z-index: 20;
45
+ pointer-events: none;
46
+ }
47
+ /* the keep-out band, from captionBand(H) — frame content stays above it */
48
+ .caption-stage {
49
+ position: absolute;
50
+ left: 0;
51
+ right: 0;
52
+ top: var(--cap-band-top, 900px);
53
+ height: var(--cap-band-height, 180px);
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ }
58
+ .caption-group {
59
+ /* every group is absolutely stacked over the SAME band — exactly one shown at a
60
+ time via opacity. Must be absolute: in-flow groups would lay out side-by-side. */
61
+ position: absolute;
62
+ inset: 0;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ opacity: 0;
67
+ }
68
+
69
+ /* THE paper card — heavy 1.5px brown-black ink rule + a 4px tomato-red leftbar
70
+ (bold poster's cantilevered red-leftbar-card signature), square corners, NO
71
+ drop shadow (the only shadow in the system is the stacked text-shadow on red) */
72
+ .caption-pill {
73
+ max-width: 78%;
74
+ padding: 20px 44px 24px;
75
+ background: var(--cap-canvas, #ffffff);
76
+ border: 1.5px solid var(--cap-ink, #1c1410);
77
+ border-left: 4px solid var(--cap-accent, #d8000f);
78
+ border-radius: 0;
79
+ }
80
+ .caption-line {
81
+ display: flex;
82
+ flex-wrap: wrap;
83
+ justify-content: center;
84
+ gap: 0.1em 0.34em;
85
+ font-family: var(--font-display, "Shrikhand"), Georgia, serif;
86
+ font-weight: 400;
87
+ font-size: clamp(40px, 4.4vw, 58px);
88
+ line-height: 1.16;
89
+ letter-spacing: -0.01em;
90
+ }
91
+
92
+ /* upcoming — faint brown-black ink, no panel */
93
+ .caption-word {
94
+ display: inline-block;
95
+ padding: 0 0.06em;
96
+ color: color-mix(in srgb, var(--cap-ink, #1c1410) 42%, var(--cap-canvas, #ffffff));
97
+ }
98
+ /* current word — THE tomato-red panel (box-shadow spread = a hard square block
99
+ w/o layout shift; no blur), paper-white reading on top carrying the stacked
100
+ text-shadow — bold poster's surface-inversion + only-shadow signatures */
101
+ .caption-word.is-active {
102
+ color: var(--cap-canvas, #ffffff);
103
+ background: var(--cap-accent, #d8000f);
104
+ box-shadow: 0 0 0 0.06em var(--cap-accent, #d8000f);
105
+ text-shadow:
106
+ 0.03em 0.03em 0 rgba(28, 20, 16, 0.25),
107
+ 0.06em 0.06em 0 rgba(28, 20, 16, 0.2),
108
+ 0.09em 0.09em 0 rgba(28, 20, 16, 0.15);
109
+ }
110
+ /* already spoken — solid brown-black ink, panel cleared */
111
+ .caption-word.is-spoken {
112
+ color: var(--cap-ink, #1c1410);
113
+ background: transparent;
114
+ box-shadow: none;
115
+ text-shadow: none;
116
+ }
117
+
118
+ /* optional per-word accents (dormant until a word-classer tags them) */
119
+ /* brand / key term — Shrikhand display, bold poster's display face inflection */
120
+ .caption-word.cap-brand {
121
+ font-family: var(--font-display, "Shrikhand"), Georgia, serif;
122
+ }
123
+ /* numerals / data — the mono chrome voice, slightly recessed */
124
+ .caption-word.cap-num {
125
+ font-family: var(--font-body, "Libre Baskerville"), ui-monospace, monospace;
126
+ color: color-mix(in srgb, var(--cap-ink, #1c1410) 72%, var(--cap-canvas, #ffffff));
127
+ }
128
+ /* emphasis — a tomato-red em-dash-weight underline (the lone accent) */
129
+ .caption-word.cap-cta {
130
+ text-decoration: underline;
131
+ text-decoration-thickness: 2px;
132
+ text-decoration-color: var(--cap-accent-2, #f5f2ef);
133
+ text-underline-offset: 0.1em;
134
+ }
135
+
136
+ @media (max-aspect-ratio: 9/16) {
137
+ .caption-pill {
138
+ max-width: 92%;
139
+ }
140
+ .caption-line {
141
+ font-size: clamp(34px, 5.4vw, 48px);
142
+ }
143
+ }
144
+ </style>
145
+
146
+ <div
147
+ id="captions-root"
148
+ data-composition-id="captions"
149
+ data-timeline-locked
150
+ data-start="0"
151
+ data-duration="0"
152
+ data-fps="30"
153
+ data-width="0"
154
+ data-height="0"
155
+ >
156
+ <div class="caption-layer" aria-hidden="true">
157
+ <div id="caption-stage" class="caption-stage"></div>
158
+ </div>
159
+ </div>
160
+
161
+ <script>
162
+ // captions.mjs injects the engine's scene-aware groups + real duration here.
163
+ var GROUPS = [];
164
+ var DURATION = 0;
165
+
166
+ (function () {
167
+ var stage = document.getElementById("caption-stage");
168
+
169
+ // build DOM: one .caption-group per group, .caption-word per word
170
+ GROUPS.forEach(function (group, g) {
171
+ var groupEl = document.createElement("div");
172
+ groupEl.className = "caption-group";
173
+ groupEl.id = "caption-group-" + g;
174
+ var pill = document.createElement("div");
175
+ pill.className = "caption-pill";
176
+ var line = document.createElement("div");
177
+ line.className = "caption-line";
178
+ (group.words || []).forEach(function (w, i) {
179
+ var span = document.createElement("span");
180
+ span.className = "caption-word";
181
+ span.id = "caption-word-" + g + "-" + i;
182
+ span.textContent = String(w.text);
183
+ line.appendChild(span);
184
+ });
185
+ pill.appendChild(line);
186
+ groupEl.appendChild(pill);
187
+ stage.appendChild(groupEl);
188
+ });
189
+
190
+ window.__timelines = window.__timelines || {};
191
+ var tl = gsap.timeline({ paused: true });
192
+
193
+ GROUPS.forEach(function (group, g) {
194
+ var groupEl = document.getElementById("caption-group-" + g);
195
+ var words = group.words || [];
196
+ var next = GROUPS[g + 1];
197
+ var isLast = g === GROUPS.length - 1;
198
+ var start = Math.max(0, Number(group.start));
199
+ var end = isLast ? DURATION : Math.min(Number(next.start), Number(group.end) + 0.3);
200
+ if (end <= start) end = start + 0.01;
201
+
202
+ // group on/off — exactly one group visible at a time
203
+ tl.set(groupEl, { opacity: 1 }, start);
204
+ tl.set(groupEl, { opacity: 0 }, end);
205
+
206
+ // 3-state karaoke via className SETS — seek-safe (gsap.set applies on the
207
+ // engine's frame-by-frame seek; .call callbacks would NOT fire).
208
+ words.forEach(function (w, i) {
209
+ var el = document.getElementById("caption-word-" + g + "-" + i);
210
+ var at = Math.max(start, Number(w.start));
211
+ tl.set(el, { className: "caption-word" }, start); // upcoming (also resets on reverse-seek)
212
+ tl.set(el, { className: "caption-word is-active" }, at); // current
213
+ tl.fromTo(el, { scale: 0.9 }, { scale: 1, duration: 0.16, ease: "back.out(2.2)" }, at);
214
+ if (i + 1 < words.length) {
215
+ var nextAt = Math.max(start, Number(words[i + 1].start));
216
+ tl.set(el, { className: "caption-word is-spoken" }, nextAt); // demote when next activates
217
+ }
218
+ });
219
+ if (words.length) {
220
+ var lastEl = document.getElementById("caption-word-" + g + "-" + (words.length - 1));
221
+ var lastSpoken = Math.min(end, Number(words[words.length - 1].end) + 0.1);
222
+ tl.set(lastEl, { className: "caption-word is-spoken" }, lastSpoken);
223
+ }
224
+ });
225
+
226
+ // full-span anchor so the sub-comp timeline spans the whole video
227
+ tl.to({}, { duration: DURATION }, 0);
228
+ window.__timelines["captions"] = tl;
229
+ })();
230
+ </script>