@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,284 @@
1
+ ---
2
+ version: alpha
3
+ name: Broadside — Frame (video / frame layer)
4
+ description: >
5
+ Video-first companion to Broadside's design.md. The unit is the frame (1920×1080). Atoms are
6
+ identical and sacred — the two-register surface system (dark ink-black / fire-orange), massive
7
+ Barlow in lowercase weight 900 treated as graphic primitive, IBM Plex Mono chrome (uppercase,
8
+ 0.14em), the single fire-orange accent, the flat plane, and 1px hairline dividers. Composition +
9
+ frame scale rewritten for the frame. Motion out of scope.
10
+ unit: the frame — 1920×1080 primary; 9:16 and 1:1 documented
11
+ principle: atoms are sacred · composition is free · numbers come from the script
12
+
13
+ colors:
14
+ ink-black: "#111111"
15
+ ink-black-alt: "#1A1A18"
16
+ fire-orange: "#E85D26"
17
+ cream: "#F0ECE5"
18
+ cream-muted: "#888880"
19
+ cream-hint: "#505048"
20
+ border-dark: "#282826"
21
+ ink-on-orange-muted: "rgba(17,17,17,0.75)"
22
+ ink-on-orange-hint: "rgba(17,17,17,0.55)"
23
+ ink-on-orange-faint: "rgba(17,17,17,0.40)"
24
+ ink-on-orange-border: "rgba(17,17,17,0.20)"
25
+
26
+ typography:
27
+ # — reading ramp —
28
+ body: { fontFamily: "Barlow", cqw: 1.2, weight: 400, lineHeight: 1.6 }
29
+ lead: { fontFamily: "Barlow", cqw: 1.6, weight: 400, lineHeight: 1.5 }
30
+ caption: { fontFamily: "Barlow", cqw: 0.9, weight: 400, lineHeight: 1.5 }
31
+ label: { fontFamily: "IBM Plex Mono", cqw: 0.72, weight: 500, tracking: "0.14em", upper: true }
32
+ # — display / hero ramp (Barlow, lowercase, negative tracking) —
33
+ h3: { fontFamily: "Barlow", cqw: 2.8, weight: 600, lineHeight: 1.2, lower: true }
34
+ quote-text:{ fontFamily: "Barlow", cqw: 3.8, weight: 700, lineHeight: 1.15, tracking: "-0.02em", lower: true }
35
+ h2: { fontFamily: "Barlow", cqw: 4.5, weight: 700, lineHeight: 1.1, tracking: "-0.02em", lower: true }
36
+ stat-value:{ fontFamily: "Barlow", cqw: 5.5, weight: 900, lineHeight: 1.0, tracking: "-0.04em" }
37
+ h1: { fontFamily: "Barlow", cqw: 7.5, weight: 800, lineHeight: 0.9, tracking: "-0.03em", lower: true }
38
+ fadelist-item:{ fontFamily: "Barlow", cqw: 7.5, weight: 900, lineHeight: 1.0, tracking: "-0.03em", lower: true }
39
+ quote-mark:{ fontFamily: "Barlow", cqw: 10.0, weight: 900, lineHeight: 0.6 }
40
+ fadelist-title:{ fontFamily: "Barlow", cqw: 10.5, weight: 900, lineHeight: 0.9, tracking: "-0.04em", lower: true }
41
+ display: { fontFamily: "Barlow", cqw: 13.0, weight: 900, lineHeight: 0.88, tracking: "-0.04em", lower: true }
42
+
43
+ spacing:
44
+ pad-x: "5.5cqw"
45
+ pad-y: "5.5cqw"
46
+ gap-lg: "3.5cqw"
47
+ gap-md: "2cqw"
48
+ gap-sm: "1cqw"
49
+
50
+ components:
51
+ registers:
52
+ dark: "ground {colors.ink-black}, text {colors.cream}, accent {colors.fire-orange}"
53
+ orange: "ground {colors.fire-orange}, text {colors.ink-black}"
54
+ description: "Two surfaces only — no cream/paper register. One register per frame."
55
+ slide-chrome:
56
+ rule: "1px solid {colors.border-dark} (dark) / 20% ink (orange)"
57
+ placement: "top + bottom bars (label left, number right)"
58
+ description: "SUPPRESSED on cover/chapter/statement/quote/end — declarative frames let type fill the field."
59
+ kicker:
60
+ typography: "{typography.label}"
61
+ color: "{colors.fire-orange} (dark) / 55% ink (orange)"
62
+ description: "Uppercase mono eyebrow."
63
+ rule:
64
+ backgroundColor: "{colors.fire-orange} (dark) / {colors.ink-black} (orange)"
65
+ size: "36×2px"
66
+ description: "Stub accent bar — the system's only ornament."
67
+ broadside-num:
68
+ typography: "{typography.label}"
69
+ placement: "top-left of orange cover/chapter, low opacity"
70
+ description: "Mono catalogue numeral."
71
+ stat-card:
72
+ borderTop: "1px solid {colors.border-dark}"
73
+ typography: "{typography.stat-value} (orange on dark / ink on orange) + {typography.body} + {typography.label}"
74
+ description: "Top-border-only block, no other borders."
75
+ bullet:
76
+ marker: "orange `/` mono via ::before"
77
+ typography: "{typography.lead}"
78
+ description: "Capped at THREE items."
79
+ bar-track:
80
+ borderLeft: "1px solid {colors.border-dark}"
81
+ bars: "{colors.cream-hint}, one .accent {colors.fire-orange}"
82
+ typography: "{typography.label} axis"
83
+ description: "Vertical bar chart, left axis only."
84
+ compare-panel:
85
+ layout: "two equal panels split by a 1px vertical rule"
86
+ payoff: "right panel may fill {colors.fire-orange}"
87
+ description: "Before/after."
88
+ fadelist:
89
+ typography: "{typography.fadelist-item} ×3 at opacity 1.0/0.5/0.22 + {typography.fadelist-title}"
90
+ description: "Three stacked words + one oversized title opposite."
91
+ ---
92
+
93
+ # Broadside — Frame (video / frame layer)
94
+
95
+ ## Overview
96
+
97
+ Broadside at frame scale is a **protest-poster system where type is so large it stops reading as
98
+ text and becomes graphic primitive.** Barlow `display` at 13cqw puts a single lowercase word
99
+ nearly across the frame. The system runs in **two registers**: a dark ink-black ground with cream
100
+ text for documentation, and a fire-orange ground with dark ink for declaration. Fire-orange is the
101
+ _only_ color — accent on dark, environment on orange. The plane is flat; hierarchy is weight, size,
102
+ and 1px hairlines.
103
+
104
+ **Barlow** carries every text role from display to body — expressive range from weight (400–900)
105
+ and size, not face contrast. **IBM Plex Mono** is chrome only (numbers, kickers, tags, axis labels,
106
+ the `/` bullet marker), always uppercase and tracked. Display is **lowercase** — the system's most
107
+ distinctive single decision, a deliberate inversion of the brutalist norm.
108
+
109
+ **Key characteristics at frame scale:**
110
+
111
+ - **Two registers** — dark (cream text) / orange (ink text). No cream/paper register.
112
+ - **Massive lowercase Barlow 900**, negative-tracked, as graphic primitive (display 13cqw).
113
+ - **Fire-orange is the only color** — accent on dark, full environment on orange.
114
+ - **IBM Plex Mono chrome** — uppercase, 0.14em; the `/` bullet marker; mono catalogue numbers.
115
+ - **Flat plane** — no shadow, no radius (save nav dots), no gradient; 1px hairlines carry structure.
116
+ - **Low density** — one statement per frame, bullets capped at three, chrome suppressed on declarative frames.
117
+
118
+ ## The Frame
119
+
120
+ ### Frame Craft Bar
121
+
122
+ Three eyeball tests gate every frame before any structural check:
123
+
124
+ - **Squint** — exactly **one display moment dominates** at 3–6× everything else; nothing competes.
125
+ - **Silence** — declarative frames read **45–55% empty**; the **stat grid is the one dense exception**.
126
+ - **Restraint** — **one register per frame**; **fire-orange is the only color** (accent on dark, environment on orange); one display moment; bullets capped at three.
127
+ - **Reference** — aim at **broadside printing / a SPACE10 report / a Wim Crouwel grid with one loud color**; failure looks like a **multi-accent corporate slide deck**.
128
+
129
+ - **Primary:** 1920×1080 (16:9). Type authored in **`cqw`** (`px ÷ 1920 × 100 = cqw`; or carry the source's `vw` 1:1).
130
+ - **Vertical:** 1080×1920 (9:16). **Square:** 1080×1080 (1:1).
131
+ - **Safe area:** `pad-x`/`pad-y` 5.5cqw — deliberately tight so the massive type crowds the frame edge.
132
+
133
+ **The container law (load-bearing).** Every frame ground sets `container-type: size`; ALL
134
+ frame-relative units are `cqw`/`cqh` against it — never `vw` (a `vw`-sized frame inflates when not
135
+ full-screen). 1px hairlines stay 1px.
136
+
137
+ ## Colors
138
+
139
+ Tokens identical to the source, in two registers. **Dark:** `{colors.ink-black}` ground,
140
+ `{colors.cream}` text, `{colors.fire-orange}` accent (kickers, accent stat, bullet `/`, lead bar,
141
+ quote mark, rule stub). **Orange:** `{colors.fire-orange}` ground, `{colors.ink-black}` headlines +
142
+ body, with the dark-ink overlays (75/55/40/20%) as the muted tones. Choose one register per frame
143
+ and commit. **No second accent color** — on orange, emphasis is weight/opacity on the ink, never a
144
+ new hue. Cream text on orange does not exist (ink-on-fire is absolute).
145
+
146
+ ## Typography
147
+
148
+ Two ramps. The **reading ramp** (Barlow body 1.2cqw, mono label 0.72cqw) carries copy + chrome; the
149
+ **display ramp** (Barlow `h2` 4.5cqw → `display` 13cqw, weight 700–900) carries every statement.
150
+
151
+ - **Legibility floor:** any load-bearing line ≥ **1.4cqw**; mono labels are chrome only.
152
+ - **Fit-to-measure:** size the headline to its length. Cap the block at **≤ 78cqw**; ≤2 words → `display`; 3–4 → `h1`; 5+ → `h2`. Broadside packs only ONE display moment per frame.
153
+ - **Barlow display is lowercase, weight 700–900, negative-tracked** (−0.04em largest, −0.02em h2). **Mono chrome is uppercase, 0.1em+.** No italic, no underline, no uppercase display.
154
+
155
+ ## Depth & Surface
156
+
157
+ Flat plane, the only technique. Hierarchy from:
158
+
159
+ - **Weight + size contrast** — the dominant signal (900 lowercase display).
160
+ - **1px hairlines** — chrome bars, stat-card top, compare divider, bar-track left, chart baseline.
161
+ - **Color shift** — orange on ink, ink on cream, cream-muted on cream.
162
+ - **Negative space** — generous, intentional empty regions.
163
+
164
+ **Ceiling:** no box-shadow, no elevation, no rounded surface (save nav dots), no gradient ground.
165
+
166
+ ## Shapes
167
+
168
+ - **0 radius everywhere** except nav dots (50%). Cards, panels, tags, stat blocks, bars — sharp rectangles.
169
+
170
+ ## Components
171
+
172
+ - **registers** — the two-surface system. **slide-chrome** — optional hairline bars, suppressed on declarative frames.
173
+ - **kicker** (mono eyebrow) / **rule** (36×2 stub) / **broadside-num** (catalogue mark) — the chrome ornament set.
174
+ - **stat-card** (top-border only) / **bullet** (orange `/`, max 3) / **bar-track** (one accent bar) / **compare-panel** (orange payoff) / **fadelist** (1.0/0.5/0.22 stack).
175
+
176
+ ## Frame Treatments
177
+
178
+ > Recipe: ground · register · composes · focal · chrome · accent · silence · Fixed/Free · density.
179
+ > One statement per frame; chrome suppressed on declarative frames.
180
+
181
+ ### 1 · Cover (identity · move: massive type · ORANGE register · left)
182
+
183
+ **Ground** fire-orange. **Composes** broadside-num, rule, kicker, display, lead. **Focal** a 1–2 word
184
+ Barlow `display` (13cqw) lowercase in ink, left-anchored, over a small ink rule stub + mono kicker; a
185
+ Barlow lead line beneath in 75% ink. **Chrome** mono catalogue number top-left, mono meta top-right
186
+ (no chrome bars). **Accent** the ink itself is the pop on orange. **Silence** ~45%. **Fixed** ink-on-fire,
187
+ lowercase 900, flat. **Free** the word, kicker, lead. **Density** low.
188
+
189
+ ### 2 · Statement (declarative · move: type IS composition · DARK register · left)
190
+
191
+ **Ground** ink-black. **Composes** kicker, display. **Focal** a 2–4 word Barlow `display`/`h1`
192
+ lowercase in cream, with ONE clause inked `{colors.fire-orange}`. **Chrome** mono kicker; no bars.
193
+ **Accent** the orange clause. **Silence** ~55%. **Fixed** lowercase 900, one orange clause, flat.
194
+ **Free** the statement, which clause is orange. **Density** low.
195
+
196
+ ### 3 · Stat Grid (data · move: top-border cards · DARK · the dense frame)
197
+
198
+ **Ground** ink-black, chrome bars present. **Composes** slide-chrome, kicker, 3× stat-card. **Focal** a
199
+ row of three top-border-only stat-cards — big Barlow-900 numeral in `{colors.fire-orange}`, Barlow
200
+ label, mono note. **Chrome** top + bottom hairline bars (label + number). **Accent** the orange
201
+ numerals. **Silence** moderate — the density exception. **Fixed** top-border-only cards, orange
202
+ numerals, 1px hairlines. **Free** figures (from script), labels. **Density** dense-exception.
203
+
204
+ ### 4 · Fadelist (narrative · move: opacity stack · DARK)
205
+
206
+ **Ground** ink-black. **Composes** fadelist (3 stacked Barlow-900 words at 1.0/0.5/0.22), fadelist-title.
207
+ **Focal** the three-stage word stack opposite an oversized display title in `{colors.fire-orange}`
208
+ (before/during/after). **Accent** the orange title. **Silence** moderate. **Fixed** the opacity
209
+ ladder, lowercase 900. **Free** the three words, the title. **Density** low-moderate.
210
+
211
+ ### 5 · Pull Quote (quote · move: oversized mark · DARK · left)
212
+
213
+ **Ground** ink-black, chrome suppressed. **Composes** quote-mark, quote-text, attribution. **Focal** a
214
+ Barlow `quote-text` (700, lowercase) at ≤78cqw under an oversized fire-orange `quote-mark` (10cqw,
215
+ line-height 0.6). **Chrome** mono attribution (name + role). **Accent** the orange quote mark. **Silence**
216
+ ~50%. **Fixed** orange mark, lowercase quote. **Free** quote, attribution. **Density** low.
217
+
218
+ ### 6 · Compare (argument · move: split + orange payoff · DARK→ORANGE)
219
+
220
+ **Ground** ink-black left panel + fire-orange right (payoff) panel, 1px divider. **Composes**
221
+ compare-panel pair, kicker, h3. **Focal** two panels — left documents (cream on dark), right declares
222
+ (ink on orange). **Chrome** mono panel labels. **Accent** the orange payoff panel. **Silence** moderate.
223
+ **Fixed** ink-on-fire right panel, 1px divider, flat. **Free** the before/after content. **Density** standard.
224
+
225
+ ## Composition Rules
226
+
227
+ ### Do
228
+
229
+ - Set every Barlow display in **lowercase weight 900**, negative-tracked — the system's signature.
230
+ - Use **fire-orange as full environment** on declarative frames, the **lone accent** on dark.
231
+ - Keep chrome in **IBM Plex Mono uppercase, 0.14em**; use the `/` mono bullet marker.
232
+ - **Cap bullets at three; one statement per frame**; build hierarchy from weight, size, 1px hairlines.
233
+ - Suppress chrome bars on cover/chapter/statement/quote/end; let type fill the field.
234
+ - Lean left on most frames; the type IS the composition.
235
+
236
+ ### Don't
237
+
238
+ - Never uppercase Barlow display; never add a second accent color.
239
+ - Never put cream text on orange (ink-on-fire is absolute); never a cream/paper register.
240
+ - No drop shadow, no rounded surface (save nav dots), no gradient ground.
241
+ - No serif companion; chrome is never Barlow.
242
+ - Don't pack two display moments into one frame; don't blow a long line edge-to-edge — step down.
243
+
244
+ ## Aspect-Ratio Behavior
245
+
246
+ | Treatment | 16:9 | 9:16 | 1:1 |
247
+ | ---------- | -------------------------- | -------------------------- | ---------------- |
248
+ | Cover | word left, lead below | word top, lead below | centered word |
249
+ | Statement | display left | display stacked taller | display centered |
250
+ | Stat Grid | 3 across | 3 stacked | 2+1 |
251
+ | Fadelist | stack + title side-by-side | stack over title | stack over title |
252
+ | Pull Quote | mark + quote left | mark top, quote below | centered |
253
+ | Compare | side-by-side panels | stacked (dark over orange) | stacked |
254
+
255
+ `pad-x` holds tight on the short edge; re-step display so the one big line stays ≤78cqw and above the
256
+ 1.4cqw floor. Mono chrome stays Latin/digit-only.
257
+
258
+ ## Approved Entities
259
+
260
+ No real customers, logos, or vendors are defined in the source — render any such mark as a
261
+ placeholder (the dashed `img-placeholder` at 55cqh). The system supplies type and one color, not brands.
262
+
263
+ ## Numerals & Claims (hard rule)
264
+
265
+ Never invent figures, percentages, dates, or counts at frame scale. Render slots as `— figure —`,
266
+ `{metric}`, `NN%`. Stat-card numerals and bar heights carry placeholders until the script supplies
267
+ them. Catalogue numbers (No. 01) are decorative chrome and may be sequential.
268
+
269
+ ## Pre-Render Self-Audit
270
+
271
+ - **Squint** — exactly one display moment dominates; nothing competes.
272
+ - **Silence** — declarative frames ~45–55% empty; only the stat grid runs dense.
273
+ - **Register** — one register per frame; ink-on-fire on orange, cream on dark; no second hue.
274
+ - **Type** — Barlow lowercase 900 negative-tracked, fit-to-measure; mono chrome uppercase 0.14em; ≥1.4cqw floor.
275
+ - **Depth** — 0 shadow, 0 radius (save nav dots); 1px hairlines only.
276
+ - **Bullets** — capped at three, orange `/` marker.
277
+ - **Fabrication** — every numeral traces to the script, else placeholder.
278
+
279
+ ## Known Gaps
280
+
281
+ - **Motion intentionally out of scope.** frame.md specifies composition only; the source's 0.8s deck slide + per-element entry animations are deck mechanics.
282
+ - **Barlow + IBM Plex Mono via Google Fonts**; Noto Sans SC is the CJK fallback (the lowercase-display signal has no CJK equivalent — the two-register color system carries the identity, per the source).
283
+ - **9:16 / 1:1 are guidance**; verify the one big line stays ≤78cqw and above the floor per ratio.
284
+ - Bars, compare panels, and the dashed image placeholder are CSS-only; no external imagery is required.
@@ -0,0 +1,225 @@
1
+ <!--
2
+ Broadside — 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 broadside 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 protest-poster lower third — an ink-black plate on a single 1px fire-orange
23
+ hairline, SHARP corners, NO shadow (broadside's plane is flat, never cast). Massive
24
+ lowercase Barlow 900 as graphic primitive, cream glyphs on ink. Upcoming words sit in
25
+ faint cream; the current word flips register — a hard flat fire-orange block with ink
26
+ reading on top (broadside's signature two-register flip, no blur), the brand's lone
27
+ accent; spoken words settle to solid cream, the orange block cleared.
28
+ -->
29
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
30
+
31
+ <!-- captions.mjs injects the project's :root tokens here -->
32
+ <style data-brand-tokens></style>
33
+
34
+ <style>
35
+ #captions-root {
36
+ position: absolute;
37
+ inset: 0;
38
+ pointer-events: none;
39
+ }
40
+ .caption-layer {
41
+ position: absolute;
42
+ inset: 0;
43
+ z-index: 20;
44
+ pointer-events: none;
45
+ }
46
+ /* the keep-out band, from captionBand(H) — frame content stays above it */
47
+ .caption-stage {
48
+ position: absolute;
49
+ left: 0;
50
+ right: 0;
51
+ top: var(--cap-band-top, 900px);
52
+ height: var(--cap-band-height, 180px);
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ }
57
+ .caption-group {
58
+ /* every group is absolutely stacked over the SAME band — exactly one shown at a
59
+ time via opacity. Must be absolute: in-flow groups would lay out side-by-side. */
60
+ position: absolute;
61
+ inset: 0;
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ opacity: 0;
66
+ }
67
+
68
+ /* THE ink-black plate — single 1px fire-orange hairline (broadside's lone accent),
69
+ SHARP corners (0 radius), NO shadow (the plane is flat) */
70
+ .caption-pill {
71
+ max-width: 80%;
72
+ padding: 18px 44px 22px;
73
+ background: var(--cap-ink, #111111);
74
+ border: 1px solid var(--cap-accent, #e85d26);
75
+ border-radius: 0;
76
+ }
77
+ .caption-line {
78
+ display: flex;
79
+ flex-wrap: wrap;
80
+ justify-content: center;
81
+ gap: 0.04em 0.3em;
82
+ font-family: var(--font-display, "Barlow"), system-ui, sans-serif;
83
+ font-weight: 900;
84
+ font-size: clamp(38px, 4.2vw, 56px);
85
+ line-height: 1.02;
86
+ letter-spacing: -0.03em;
87
+ text-transform: lowercase;
88
+ }
89
+
90
+ /* upcoming — faint cream, no block (massive lowercase Barlow 900 as graphic primitive) */
91
+ .caption-word {
92
+ display: inline-block;
93
+ padding: 0 0.08em;
94
+ color: color-mix(in srgb, var(--cap-canvas, #f0ece5) 42%, var(--cap-ink, #111111));
95
+ }
96
+ /* current word — THE register flip: a hard flat fire-orange block (box-shadow spread =
97
+ a sharp rectangle w/o layout shift; no blur), ink reading on top — the lone accent */
98
+ .caption-word.is-active {
99
+ color: var(--cap-ink, #111111);
100
+ background: var(--cap-accent, #e85d26);
101
+ box-shadow: 0 0 0 0.06em var(--cap-accent, #e85d26);
102
+ }
103
+ /* already spoken — solid cream, the orange block cleared */
104
+ .caption-word.is-spoken {
105
+ color: var(--cap-canvas, #f0ece5);
106
+ background: transparent;
107
+ box-shadow: none;
108
+ }
109
+
110
+ /* optional per-word accents (dormant until a word-classer tags them) */
111
+ /* brand / key term — fire-orange ink, the cream-on-ink register's only inflection */
112
+ .caption-word.cap-brand {
113
+ color: var(--cap-accent, #e85d26);
114
+ }
115
+ /* numerals / data — the IBM Plex Mono chrome voice, uppercase + tracked, recessed */
116
+ .caption-word.cap-num {
117
+ font-family: var(--font-body, "IBM Plex Mono"), ui-monospace, monospace;
118
+ font-weight: 500;
119
+ text-transform: uppercase;
120
+ letter-spacing: 0.06em;
121
+ color: color-mix(in srgb, var(--cap-canvas, #f0ece5) 72%, var(--cap-ink, #111111));
122
+ }
123
+ /* emphasis — a fire-orange hairline underline (no second hue; the lone accent again) */
124
+ .caption-word.cap-cta {
125
+ text-decoration: underline;
126
+ text-decoration-thickness: 2px;
127
+ text-decoration-color: var(--cap-accent-2, #e85d26);
128
+ text-underline-offset: 0.1em;
129
+ }
130
+
131
+ @media (max-aspect-ratio: 9/16) {
132
+ .caption-pill {
133
+ max-width: 92%;
134
+ }
135
+ .caption-line {
136
+ font-size: clamp(32px, 5.2vw, 46px);
137
+ }
138
+ }
139
+ </style>
140
+
141
+ <div
142
+ id="captions-root"
143
+ data-composition-id="captions"
144
+ data-timeline-locked
145
+ data-start="0"
146
+ data-duration="0"
147
+ data-fps="30"
148
+ data-width="0"
149
+ data-height="0"
150
+ >
151
+ <div class="caption-layer" aria-hidden="true">
152
+ <div id="caption-stage" class="caption-stage"></div>
153
+ </div>
154
+ </div>
155
+
156
+ <script>
157
+ // captions.mjs injects the engine's scene-aware groups + real duration here.
158
+ var GROUPS = [];
159
+ var DURATION = 0;
160
+
161
+ (function () {
162
+ var stage = document.getElementById("caption-stage");
163
+
164
+ // build DOM: one .caption-group per group, .caption-word per word
165
+ GROUPS.forEach(function (group, g) {
166
+ var groupEl = document.createElement("div");
167
+ groupEl.className = "caption-group";
168
+ groupEl.id = "caption-group-" + g;
169
+ var pill = document.createElement("div");
170
+ pill.className = "caption-pill";
171
+ var line = document.createElement("div");
172
+ line.className = "caption-line";
173
+ (group.words || []).forEach(function (w, i) {
174
+ var span = document.createElement("span");
175
+ span.className = "caption-word";
176
+ span.id = "caption-word-" + g + "-" + i;
177
+ span.textContent = String(w.text);
178
+ line.appendChild(span);
179
+ });
180
+ pill.appendChild(line);
181
+ groupEl.appendChild(pill);
182
+ stage.appendChild(groupEl);
183
+ });
184
+
185
+ window.__timelines = window.__timelines || {};
186
+ var tl = gsap.timeline({ paused: true });
187
+
188
+ GROUPS.forEach(function (group, g) {
189
+ var groupEl = document.getElementById("caption-group-" + g);
190
+ var words = group.words || [];
191
+ var next = GROUPS[g + 1];
192
+ var isLast = g === GROUPS.length - 1;
193
+ var start = Math.max(0, Number(group.start));
194
+ var end = isLast ? DURATION : Math.min(Number(next.start), Number(group.end) + 0.3);
195
+ if (end <= start) end = start + 0.01;
196
+
197
+ // group on/off — exactly one group visible at a time
198
+ tl.set(groupEl, { opacity: 1 }, start);
199
+ tl.set(groupEl, { opacity: 0 }, end);
200
+
201
+ // 3-state karaoke via className SETS — seek-safe (gsap.set applies on the
202
+ // engine's frame-by-frame seek; .call callbacks would NOT fire).
203
+ words.forEach(function (w, i) {
204
+ var el = document.getElementById("caption-word-" + g + "-" + i);
205
+ var at = Math.max(start, Number(w.start));
206
+ tl.set(el, { className: "caption-word" }, start); // upcoming (also resets on reverse-seek)
207
+ tl.set(el, { className: "caption-word is-active" }, at); // current
208
+ tl.fromTo(el, { scale: 0.92 }, { scale: 1, duration: 0.1, ease: "power3.out" }, at);
209
+ if (i + 1 < words.length) {
210
+ var nextAt = Math.max(start, Number(words[i + 1].start));
211
+ tl.set(el, { className: "caption-word is-spoken" }, nextAt); // demote when next activates
212
+ }
213
+ });
214
+ if (words.length) {
215
+ var lastEl = document.getElementById("caption-word-" + g + "-" + (words.length - 1));
216
+ var lastSpoken = Math.min(end, Number(words[words.length - 1].end) + 0.1);
217
+ tl.set(lastEl, { className: "caption-word is-spoken" }, lastSpoken);
218
+ }
219
+ });
220
+
221
+ // full-span anchor so the sub-comp timeline spans the whole video
222
+ tl.to({}, { duration: DURATION }, 0);
223
+ window.__timelines["captions"] = tl;
224
+ })();
225
+ </script>