@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,314 @@
1
+ ---
2
+ version: alpha
3
+ name: Coral — Frame (video / frame layer)
4
+ description: >
5
+ Video-first companion to Coral's design.md. The unit is the frame (1920×1080), not the
6
+ slide-in-a-deck. Atoms are identical and sacred — the three-surface system (coral fire /
7
+ ink black / warm cream), Bebas Neue uppercase tracked + Inter body, the 45° diagonal hatch,
8
+ decorative wallpaper numerals, hard color-region splits, zero shadow, zero radius (save
9
+ circles). Composition, frame scale, and aspect-ratio behavior are rewritten for the frame.
10
+ Motion is 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
+ coral: "#E85D5D"
16
+ coral-dark: "#D44A4A"
17
+ cream: "#F5F0E8"
18
+ cream-dark: "#E8E0D4"
19
+ black: "#1A1A1A"
20
+ gray: "#6B6B6B"
21
+ light-gray: "#B0B0B0"
22
+ white: "#FFFFFF"
23
+
24
+ typography:
25
+ # — reading ramp (Inter) —
26
+ body: { fontFamily: "Inter", cqw: 1.0, weight: 400, lineHeight: 1.7 }
27
+ body-light: { fontFamily: "Inter", cqw: 1.5, weight: 300, lineHeight: 1.5, note: "pull-quote voice" }
28
+ section-label: { fontFamily: "Inter", px: 12, weight: 700, tracking: "4px", upper: true }
29
+ item-label: { fontFamily: "Inter", px: 11, weight: 700, tracking: "3px", upper: true }
30
+ quote-attribution: { fontFamily: "Inter", px: 14, weight: 600, tracking: "3px", upper: true }
31
+ quote-role: { fontFamily: "Inter", px: 12, weight: 400, tracking: "1px" }
32
+ # — display / hero ramp (Bebas Neue, uppercase, tracked) —
33
+ card-title: { fontFamily: "Bebas Neue", cqw: 1.9, weight: 400, lineHeight: 1.1, tracking: "1px", upper: true }
34
+ sidebar-value: { fontFamily: "Bebas Neue", cqw: 2.3, weight: 400, lineHeight: 1.0, upper: true }
35
+ bar-title: { fontFamily: "Bebas Neue", cqw: 2.3, weight: 400, lineHeight: 1.0, tracking: "2px", upper: true }
36
+ card-stat: { fontFamily: "Bebas Neue", cqw: 2.5, weight: 400, lineHeight: 1.0, upper: true }
37
+ column-title: { fontFamily: "Bebas Neue", cqw: 3.7, weight: 400, lineHeight: 1.0, tracking: "2px", upper: true }
38
+ section-headline:{ fontFamily: "Bebas Neue", cqw: 4.2, weight: 400, lineHeight: 1.0, tracking: "2px", upper: true }
39
+ stat-numeral: { fontFamily: "Bebas Neue", cqw: 5.0, weight: 400, lineHeight: 1.0, upper: true }
40
+ hero-title: { fontFamily: "Bebas Neue", cqw: 6.5, weight: 400, lineHeight: 0.9, tracking: "4px", upper: true }
41
+ jumbo-feature: { fontFamily: "Bebas Neue", cqw: 9.0, weight: 400, lineHeight: 1.0, tracking: "12px", upper: true }
42
+ # — decorative —
43
+ background-numeral: { fontFamily: "Bebas Neue", cqw: 10.0, weight: 400, color: "rgba(0,0,0,0.12)", note: "wallpaper numeral inside a coral region" }
44
+ giant-mark: { fontFamily: "Bebas Neue", cqw: 14.0, weight: 400, color: "rgba(0,0,0,0.35)", note: "decorative quote mark inside a coral region" }
45
+
46
+ spacing:
47
+ pad-x: "5cqw" # standard horizontal frame padding
48
+ pad-y: "4cqw"
49
+ pad-col: "3cqw"
50
+ gap-grid: "1.7cqw"
51
+ card-pad: "2cqw"
52
+
53
+ components:
54
+ diagonal-hatch:
55
+ backgroundImage: "repeating-linear-gradient(45deg, transparent 0 20px, rgba(0,0,0,.06) 20px 40px)"
56
+ placement: "::before overlay on {colors.coral} regions"
57
+ description: "Signature 45° hatch (6% ink). Variants −45° 30/60px, 90° vertical 60/62px 10% ink. Texture, never depth."
58
+ region-split:
59
+ layout: "two/three solid surfaces meeting at a hard edge; ratios 38/62 rows, 40/60 cols, 50/50"
60
+ rounded: "0"
61
+ description: "The primary layout device — no gradient, no rounded junction; the boundary is the layout."
62
+ card:
63
+ backgroundColor: "{colors.white}"
64
+ borderTop: "0.26cqw solid {colors.coral}"
65
+ rounded: "0"
66
+ shadow: "none"
67
+ typography: "{typography.card-title} + {typography.body}"
68
+ description: "5px coral TOP border is the only chrome; holds a card-icon, title, body, coral card-stat."
69
+ sidebar-item:
70
+ backgroundColor: "{colors.white}"
71
+ borderLeft: "0.2cqw solid {colors.coral}"
72
+ rounded: "0"
73
+ typography: "{typography.sidebar-value} + {typography.section-label}"
74
+ description: "4px coral LEFT border is the only chrome."
75
+ card-icon:
76
+ backgroundColor: "{colors.coral}"
77
+ textColor: "{colors.white}"
78
+ size: "2.5cqw square"
79
+ rounded: "0"
80
+ description: "The card mark — one white Bebas glyph centered."
81
+ accent-line:
82
+ backgroundColor: "{colors.coral}"
83
+ size: "4cqw × 0.25cqw (60×4 closing variant)"
84
+ rounded: "0"
85
+ description: "Sub-headline accent rule."
86
+ background-numeral:
87
+ typography: "{typography.background-numeral}"
88
+ color: "rgba(0,0,0,0.12)"
89
+ placement: "behind a {colors.coral} region's title"
90
+ description: "The wallpaper-numeral signature (12% ink)."
91
+ giant-mark:
92
+ typography: "{typography.giant-mark}"
93
+ color: "rgba(0,0,0,0.35)"
94
+ placement: "inside a {colors.coral} region"
95
+ description: "Oversized quote mark / character, half-decorative."
96
+ timeline:
97
+ line: "0.2cqw solid {colors.black} (gradient-dashed ::after)"
98
+ node: "{colors.coral} circle, {colors.cream} halo, 50% radius"
99
+ description: "Ink line with coral nodes + cream halos."
100
+ info-bar:
101
+ backgroundColor: "{colors.cream-dark}"
102
+ typography: "{typography.bar-title} + uppercase {typography.section-label}"
103
+ rounded: "0"
104
+ shadow: "none"
105
+ description: "Footer band beneath a feature region — Bebas title left, Inter meta right."
106
+ ---
107
+
108
+ # Coral — Frame (video / frame layer)
109
+
110
+ ## Overview
111
+
112
+ Coral at frame scale is a **bold magazine poster** built from three solid surfaces — coral fire,
113
+ ink black, warm cream — that meet at **hard color edges.** The region boundary IS the layout: a
114
+ frame splits into a coral plane + a cream plane, or a coral panel + an ink panel, each holding a
115
+ self-contained composition. No gradient transitions, no rounded junctions, no drop shadows.
116
+
117
+ The voice is a two-face hierarchy: **Bebas Neue** — tall condensed caps, always uppercase, always
118
+ tracked (1–12px) — carries every headline, stat, title, and meta figure; **Inter** carries every
119
+ body line, label, and attribution across weights 300–700. Bebas declares; Inter explains. The
120
+ signature atmospherics are the **45° diagonal hatch** (6% ink) over coral regions and the
121
+ **oversized wallpaper numeral** (12% ink) behind a region's title.
122
+
123
+ **Key characteristics at frame scale:**
124
+
125
+ - **Three surfaces, hard edges** — `{colors.coral}` / `{colors.black}` / `{colors.cream}` as solid regions.
126
+ - **Bebas uppercase + tracking** on every display element; **Inter** on every body/label.
127
+ - **45° hatch** (6% ink) on coral regions; **wallpaper numerals** (12%) and **giant marks** (35%) behind content.
128
+ - **Ink-on-fire** — Bebas on coral is always ink, never white. Eyebrows coral on cream/ink, ink on coral.
129
+ - **Flat** — no shadow, no elevation; radius only on circles (nav dots, timeline nodes).
130
+ - **Coral as accent AND environment** — 4–5px coral borders, 48px coral icon squares, and full coral regions.
131
+
132
+ ### Frame Craft Bar
133
+
134
+ Three eyeball tests gate every frame before any structural check:
135
+
136
+ - **Squint** — one element dominates at **3–6× its nearest neighbor**: the `hero-title`/`jumbo-feature` or a wallpaper numeral behind a region's title, never two rival headlines.
137
+ - **Silence** — coral/cream/ink regions read **40–55% empty**; the **three-column catalog is the one dense exception**. A coral region underfilled gets a wallpaper numeral, never more content.
138
+ - **Restraint** — coral fires as **either accent or one full region per frame** (not both at full strength); one giant-mark per quote; ink-on-fire (never white on coral).
139
+ - **Reference** — aim at a **sports-magazine cover / Saul Bass travel poster** (solid planes at hard edges, condensed caps as architecture); failure looks like a **soft drop-shadowed card deck**.
140
+
141
+ ## The Frame
142
+
143
+ - **Primary:** 1920×1080 (16:9). Display sizes authored in **`cqw`** (`px ÷ 1920 × 100 = cqw`).
144
+ - **Vertical:** 1080×1920 (9:16). **Square:** 1080×1080 (1:1).
145
+ - **Safe area:** `5cqw` (pad-x) standard frame padding; region edges may bleed full-frame.
146
+
147
+ **The container law (load-bearing).** Every frame ground sets `container-type: size`; ALL
148
+ frame-relative units are `cqw`/`cqh` resolved against it — **never `vw`.** A `vw`-sized frame
149
+ inflates whenever it isn't full-screen; `cqw` resolves against the frame at any render size.
150
+
151
+ ## Colors
152
+
153
+ Tokens identical to the source. At frame scale the three surfaces are intermixed by composition —
154
+ coral/cream, coral/ink, ink/cream, or single-surface. `{colors.coral}` is both accent (borders,
155
+ icon squares, timeline nodes, eyebrows on cream/ink) and environment (full regions). Headlines:
156
+ ink on cream/coral, cream on ink — **never gray, never white-on-coral.** Eyebrows: coral on
157
+ cream/ink, ink on coral — coral-on-coral does not exist. The only sanctioned gradient is the rare
158
+ 135° coral-dark→coral feature region; everything else is flat.
159
+
160
+ ## Typography
161
+
162
+ Two ramps. The **reading ramp** (Inter body 1.0cqw, body-light 1.5cqw, labels in px) carries copy
163
+ and eyebrows; the **display/hero ramp** (Bebas, `card-title` 1.9cqw → `jumbo-feature` 9.0cqw, plus
164
+ the decorative `background-numeral` 10cqw and `giant-mark` 14cqw) carries every headline and stat.
165
+
166
+ - **Legibility floor:** any load-bearing line ≥ **1.4cqw**; px labels are chrome only.
167
+ - **Fit-to-measure:** size the headline to its line length. Cap the block at **≤ 78cqw**; ≤3 words → `hero-title`/`jumbo-feature`; 4–6 → `section-headline`; 7+ → `column-title`.
168
+ - **Every Bebas element is uppercase with ≥1px tracking** (2px standard, 4px hero, 12px jumbo). **Every Inter label is uppercase, 1–4px tracked.** No italic, no underline, no sentence-case Bebas.
169
+
170
+ ## Depth & Surface
171
+
172
+ Flat, with hard color edges. Depth signals only:
173
+
174
+ - **Hard region boundaries** — the primary structural device.
175
+ - **Accent borders** — 5px coral top (cards), 4px coral left (sidebar tiles), 4px ink (timeline).
176
+ - **45° hatch** — 6% ink texture on coral regions (no depth).
177
+ - **Wallpaper typography** — numerals at 12%, giant marks at 35%, layered behind content.
178
+
179
+ **Ceiling:** no box-shadow, no elevated card, no soft gradient (save the one 135° coral feature), no rounded rectangle.
180
+
181
+ ## Shapes
182
+
183
+ - **0 radius** on every rectangle — regions, cards, sidebar tiles, icon squares, info bars, accent lines.
184
+ - **50%** on circles only — nav dots (10px), nav arrows (44px), timeline nodes (20px).
185
+
186
+ ## Components
187
+
188
+ - **region-split** — the layout device; surfaces meet at a hard edge.
189
+ - **card** (5px coral top) / **sidebar-item** (4px coral left) / **card-icon** (48px coral square) — the only chrome on each is its single coral border.
190
+ - **diagonal-hatch** / **background-numeral** / **giant-mark** — the atmospheric + wallpaper signatures on coral regions.
191
+ - **accent-line** — coral sub-headline rule. **timeline** — ink line, coral nodes, cream halos. **info-bar** — cream-dark footer band.
192
+
193
+ ## Frame Treatments
194
+
195
+ > Recipe per plate: ground · container · composes · focal · chrome · accent · silence · Fixed/Free · density.
196
+ > Lean centered where the move allows; vary anchor; one idea per region.
197
+
198
+ ### 1 · Region-Split Cover (identity · move: hard region edge · left)
199
+
200
+ **Ground** 38/62 split — `{colors.coral}` top band (hatch + wallpaper numeral) over `{colors.cream}`.
201
+ **Container** grid rows; brand + meta in the coral band, hero title in the cream field. **Composes**
202
+ region-split, diagonal-hatch, background-numeral, hero-title. **Focal** a 2-line `hero-title` in
203
+ ink, second line in `{colors.coral}`, left-anchored in the cream field. **Chrome** Bebas brand left
204
+
205
+ - Bebas meta right in the coral band. **Accent** coral band + coral second line. **Silence** the
206
+ cream field ~45% empty. **Fixed** ink-on-fire in band, hatch on coral, hard edge. **Free** title
207
+ copy, which line is coral, meta. **Density** sparse.
208
+
209
+ ### 2 · Feature Stat (anchor · move: scale · coral environment · left)
210
+
211
+ **Ground** full `{colors.coral}` with hatch. **Composes** diagonal-hatch, background-numeral,
212
+ section-label, stat headline, body-light. **Focal** a `stat-numeral`/`jumbo-feature` figure or
213
+ 2-line headline in ink, with a `background-numeral` (12% ink) behind it as wallpaper. **Chrome** an
214
+ ink `section-label` eyebrow; an optional Inter-300 support line ≤44cqw. **Accent** the coral ground
215
+ IS the environment; ink type, no white. **Silence** ~40% of the coral field empty. **Fixed**
216
+ ink-on-coral, hatch present, wallpaper numeral behind. **Free** the figure, headline, support copy.
217
+ **Density** sparse.
218
+
219
+ ### 3 · Quote Layout (quote · move: panel split · giant mark)
220
+
221
+ **Ground** 40/60 split — `{colors.coral}` left panel (hatch + giant-mark) + `{colors.black}` right
222
+ panel. **Composes** region-split, giant-mark, body-light, accent-line, quote-attribution.
223
+ **Focal** a 2–3 line pull quote in `{colors.cream}` Inter **weight 300** on the ink panel.
224
+ **Chrome** a `giant-mark` (35% ink) on the coral panel; a `60×4` coral accent-line above the
225
+ attribution. **Accent** coral panel + coral accent-line. **Silence** the coral panel is mostly the
226
+ mark. **Fixed** Inter-300 quote, ink panel, ink-on-coral mark. **Free** quote, attribution, mark
227
+ glyph. **Density** sparse.
228
+
229
+ ### 4 · Closing Plate (closer · move: cream field + coral band · centered)
230
+
231
+ **Ground** `{colors.cream}` field with a bottom `{colors.coral}` band (hatch). **Composes**
232
+ section-label, section-headline/hero-title, accent-line, info-bar. **Focal** a 2-line sign-off in
233
+ ink, centered, with a coral `accent-line` beneath. **Chrome** an ink eyebrow above; a coral band
234
+ footer carrying a Bebas sign-off + year. **Accent** coral band + coral accent-line. **Silence**
235
+ ~55% empty cream. **Fixed** centered, ink type, one coral band. **Free** sign-off copy, band
236
+ contents. **Density** sparse.
237
+
238
+ ### 5 · Three-Column Catalog (catalog · move: density — the dense frame · centered head)
239
+
240
+ **Ground** `{colors.cream}` (or `{colors.black}`), `pad-x`. **Composes** section-headline, 3× card.
241
+ **Focal** a centered `section-headline` over three white `card`s (5px coral top, 48px icon square,
242
+ Bebas title, Inter body, coral stat). **Accent** the three coral top borders + icon squares.
243
+ **Silence** tight — the density exception. **Fixed** 5px coral top as sole chrome, no shadow/radius.
244
+ **Free** the three cards' content. **Density** dense-exception.
245
+
246
+ ### 6 · Timeline (process · move: horizontal rail · left)
247
+
248
+ **Ground** `{colors.cream}`, `pad-x`. **Composes** section-headline, timeline. **Focal** the ink
249
+ timeline-line with 4–5 coral nodes (cream halos) and Bebas labels. **Accent** coral nodes.
250
+ **Silence** moderate. **Fixed** ink line, coral nodes, cream halos. **Free** node count, labels.
251
+ **Density** standard.
252
+
253
+ ## Composition Rules
254
+
255
+ ### Do
256
+
257
+ - Compose as **multi-surface region splits** — coral / ink / cream meeting at hard edges; the boundary is the layout.
258
+ - Set every Bebas element **uppercase + tracked** (2px standard, 4px hero, 12px jumbo); every Inter label uppercase, 1–4px.
259
+ - Render eyebrows **coral on cream/ink, ink on coral**; headlines ink on cream/coral, cream on ink.
260
+ - Apply the **45° hatch** (6% ink) on coral regions; fill underweight coral regions with a **12% wallpaper numeral**.
261
+ - Use the **5px coral top** (cards) / **4px coral left** (tiles) as the only chrome on those elements.
262
+ - Lean centered on cover sign-offs and catalog heads; left/panel-split on features and quotes.
263
+
264
+ ### Don't
265
+
266
+ - Don't render Bebas in sentence case or untracked; don't pair it with a non-Inter body sans.
267
+ - Don't add a fourth surface, a drop shadow, an elevation, or a rounded rectangle.
268
+ - Don't put white headlines on coral (always ink) or gray headlines anywhere (gray is body/meta).
269
+ - Don't soften a region boundary with a gradient (except the rare 135° coral feature).
270
+ - Don't fill a coral region with sparse fragments — fully populate it or add a wallpaper numeral / giant mark.
271
+ - Don't blow a headline edge-to-edge — step the ramp down for long lines.
272
+
273
+ ## Aspect-Ratio Behavior
274
+
275
+ | Treatment | 16:9 | 9:16 | 1:1 |
276
+ | -------------------- | -------------------------- | ------------------------------------ | -------------------- |
277
+ | Region-Split Cover | 38/62 rows, title left | taller coral band, title below | 40/60, title lower |
278
+ | Feature Stat | figure left, numeral right | figure top, numeral behind | centered figure |
279
+ | Quote Layout | 40/60 coral+ink | stacked: coral mark top, quote below | stacked |
280
+ | Closing Plate | cream + bottom coral band | cream + taller band | centered, band below |
281
+ | Three-Column Catalog | head over 3-up | head top, 3 stacked | head top, 2+1 |
282
+ | Timeline | horizontal rail | vertical rail | compact horizontal |
283
+
284
+ Safe area holds the `5cqw` padding on the short edge; re-step display per ratio so no load-bearing
285
+ line drops below the 1.4cqw floor. Bebas runs ~20% wider in CJK — adjust line breaks per ratio.
286
+
287
+ ## Approved Entities
288
+
289
+ No real customers, logos, or vendors are defined in the source — render any such mark as a
290
+ placeholder. The system supplies surfaces and geometry, not brands.
291
+
292
+ ## Numerals & Claims (hard rule)
293
+
294
+ Never invent figures, stats, dates, or counts at frame scale. Render slots as `— figure —`,
295
+ `{metric}`, `N×`. Real numerals appear only when the script supplies them — the feature stat,
296
+ catalog, and timeline especially carry placeholders, not fabricated values. Wallpaper numerals
297
+ (01, 02…) are decorative and may be ordinal.
298
+
299
+ ## Pre-Render Self-Audit
300
+
301
+ - **Squint** — one focal element per region dominates at 3–5× its neighbor.
302
+ - **Silence** — sparse frames 40–55% empty; only the catalog runs dense.
303
+ - **Surfaces** — two or three of coral/ink/cream, meeting at hard edges; no fourth surface.
304
+ - **Type** — Bebas uppercase + tracked, fit-to-measure; ink-on-coral; eyebrow color correct for surface; ≥1.4cqw floor.
305
+ - **Depth** — 0 shadow, 0 rounded rectangle; hatch + wallpaper carry texture.
306
+ - **Anchor** — centered on sign-offs/heads, panel/left on features/quotes; no 3 consecutive frames share an anchor.
307
+ - **Fabrication** — every numeral traces to the script, else placeholder.
308
+
309
+ ## Known Gaps
310
+
311
+ - **Motion intentionally out of scope.** frame.md specifies composition only; timing and transitions are a later stage. The 0.6s opacity fade in the source is a deck mechanic, not a frame spec.
312
+ - **Bebas Neue + Inter via Google Fonts.** CJK pairing (ZCOOL XiaoWei / Yozai) carries over from the source's CJK section; Bebas runs ~20% wider in CJK.
313
+ - **9:16 / 1:1 are guidance**, not pixel-locked; verify the legibility floor per ratio.
314
+ - The 45° hatch, wallpaper numerals, giant marks, and timeline dash are CSS-only; no external imagery is required.
@@ -0,0 +1,226 @@
1
+ <!--
2
+ Coral — 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 coral literal
14
+ 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 flat warm-cream block on a single ink hairline border — coral's hard-edge
23
+ geometry, square corners, ZERO radius, ZERO shadow (coral's depth is hard color edges,
24
+ never cast). Bebas Neue, uppercase + tracked, ink glyphs. Upcoming words sit in faint
25
+ ink; the current word gets a solid coral-fire flat block (the brand's signature
26
+ hard-edge fill — a square block, no blur, no radius) with ink reading on top; spoken
27
+ words settle to solid ink, fill cleared. Brand/key terms carry a coral hairline
28
+ underline (the counter inflection).
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 flat cream block — single ink hairline border, square corners (coral's hard-edge
70
+ geometry), ZERO radius, ZERO shadow */
71
+ .caption-pill {
72
+ max-width: 78%;
73
+ padding: 18px 44px 20px;
74
+ background: var(--cap-canvas, #f5f0e8);
75
+ border: 1px solid var(--cap-ink, #1a1a1a);
76
+ border-radius: 0;
77
+ }
78
+ .caption-line {
79
+ display: flex;
80
+ flex-wrap: wrap;
81
+ justify-content: center;
82
+ gap: 0.1em 0.3em;
83
+ font-family: var(--font-display, "Bebas Neue"), sans-serif;
84
+ font-weight: 400;
85
+ text-transform: uppercase;
86
+ font-size: clamp(44px, 4.8vw, 64px);
87
+ line-height: 1.04;
88
+ letter-spacing: 0.06em;
89
+ }
90
+
91
+ /* upcoming — faint ink, no fill */
92
+ .caption-word {
93
+ display: inline-block;
94
+ padding: 0 0.12em;
95
+ color: color-mix(in srgb, var(--cap-ink, #1a1a1a) 40%, var(--cap-canvas, #f5f0e8));
96
+ }
97
+ /* current word — THE coral-fire flat block (box-shadow spread = a hard square block
98
+ w/o layout shift; no blur, no radius), ink reading on top */
99
+ .caption-word.is-active {
100
+ color: var(--cap-ink, #1a1a1a);
101
+ background: var(--cap-accent, #e85d5d);
102
+ box-shadow: 0 0 0 0.1em var(--cap-accent, #e85d5d);
103
+ }
104
+ /* already spoken — solid ink, fill cleared */
105
+ .caption-word.is-spoken {
106
+ color: var(--cap-ink, #1a1a1a);
107
+ background: transparent;
108
+ box-shadow: none;
109
+ }
110
+
111
+ /* optional per-word accents (dormant until a word-classer tags them) */
112
+ /* brand / key term — a coral hairline underline (coral's only display inflection) */
113
+ .caption-word.cap-brand {
114
+ text-decoration: underline;
115
+ text-decoration-thickness: 0.06em;
116
+ text-decoration-color: var(--cap-accent, #e85d5d);
117
+ text-underline-offset: 0.12em;
118
+ }
119
+ /* numerals / data — Inter body voice, slightly recessed */
120
+ .caption-word.cap-num {
121
+ font-family: var(--font-body, "Inter"), ui-sans-serif, sans-serif;
122
+ color: color-mix(in srgb, var(--cap-ink, #1a1a1a) 72%, var(--cap-canvas, #f5f0e8));
123
+ }
124
+ /* emphasis — a coral-dark hairline underline (the counter accent) */
125
+ .caption-word.cap-cta {
126
+ text-decoration: underline;
127
+ text-decoration-thickness: 2px;
128
+ text-decoration-color: var(--cap-accent-2, #d44a4a);
129
+ text-underline-offset: 0.1em;
130
+ }
131
+
132
+ @media (max-aspect-ratio: 9/16) {
133
+ .caption-pill {
134
+ max-width: 92%;
135
+ }
136
+ .caption-line {
137
+ font-size: clamp(38px, 5.8vw, 54px);
138
+ }
139
+ }
140
+ </style>
141
+
142
+ <div
143
+ id="captions-root"
144
+ data-composition-id="captions"
145
+ data-timeline-locked
146
+ data-start="0"
147
+ data-duration="0"
148
+ data-fps="30"
149
+ data-width="0"
150
+ data-height="0"
151
+ >
152
+ <div class="caption-layer" aria-hidden="true">
153
+ <div id="caption-stage" class="caption-stage"></div>
154
+ </div>
155
+ </div>
156
+
157
+ <script>
158
+ // captions.mjs injects the engine's scene-aware groups + real duration here.
159
+ var GROUPS = [];
160
+ var DURATION = 0;
161
+
162
+ (function () {
163
+ var stage = document.getElementById("caption-stage");
164
+
165
+ // build DOM: one .caption-group per group, .caption-word per word
166
+ GROUPS.forEach(function (group, g) {
167
+ var groupEl = document.createElement("div");
168
+ groupEl.className = "caption-group";
169
+ groupEl.id = "caption-group-" + g;
170
+ var pill = document.createElement("div");
171
+ pill.className = "caption-pill";
172
+ var line = document.createElement("div");
173
+ line.className = "caption-line";
174
+ (group.words || []).forEach(function (w, i) {
175
+ var span = document.createElement("span");
176
+ span.className = "caption-word";
177
+ span.id = "caption-word-" + g + "-" + i;
178
+ span.textContent = String(w.text);
179
+ line.appendChild(span);
180
+ });
181
+ pill.appendChild(line);
182
+ groupEl.appendChild(pill);
183
+ stage.appendChild(groupEl);
184
+ });
185
+
186
+ window.__timelines = window.__timelines || {};
187
+ var tl = gsap.timeline({ paused: true });
188
+
189
+ GROUPS.forEach(function (group, g) {
190
+ var groupEl = document.getElementById("caption-group-" + g);
191
+ var words = group.words || [];
192
+ var next = GROUPS[g + 1];
193
+ var isLast = g === GROUPS.length - 1;
194
+ var start = Math.max(0, Number(group.start));
195
+ var end = isLast ? DURATION : Math.min(Number(next.start), Number(group.end) + 0.3);
196
+ if (end <= start) end = start + 0.01;
197
+
198
+ // group on/off — exactly one group visible at a time
199
+ tl.set(groupEl, { opacity: 1 }, start);
200
+ tl.set(groupEl, { opacity: 0 }, end);
201
+
202
+ // 3-state karaoke via className SETS — seek-safe (gsap.set applies on the
203
+ // engine's frame-by-frame seek; .call callbacks would NOT fire).
204
+ words.forEach(function (w, i) {
205
+ var el = document.getElementById("caption-word-" + g + "-" + i);
206
+ var at = Math.max(start, Number(w.start));
207
+ tl.set(el, { className: "caption-word" }, start); // upcoming (also resets on reverse-seek)
208
+ tl.set(el, { className: "caption-word is-active" }, at); // current
209
+ tl.fromTo(el, { scale: 0.97 }, { scale: 1, duration: 0.14, ease: "power2.out" }, at);
210
+ if (i + 1 < words.length) {
211
+ var nextAt = Math.max(start, Number(words[i + 1].start));
212
+ tl.set(el, { className: "caption-word is-spoken" }, nextAt); // demote when next activates
213
+ }
214
+ });
215
+ if (words.length) {
216
+ var lastEl = document.getElementById("caption-word-" + g + "-" + (words.length - 1));
217
+ var lastSpoken = Math.min(end, Number(words[words.length - 1].end) + 0.1);
218
+ tl.set(lastEl, { className: "caption-word is-spoken" }, lastSpoken);
219
+ }
220
+ });
221
+
222
+ // full-span anchor so the sub-comp timeline spans the whole video
223
+ tl.to({}, { duration: DURATION }, 0);
224
+ window.__timelines["captions"] = tl;
225
+ })();
226
+ </script>