@mevdragon/vidfarm-devcli 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/embedded-captions/CATALOG.md +93 -0
- package/.agents/skills/embedded-captions/SKILL.md +286 -0
- package/.agents/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -0
- package/.agents/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -0
- package/.agents/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
- package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
- package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
- package/.agents/skills/embedded-captions/dna/README.md +148 -0
- package/.agents/skills/embedded-captions/dna/chrome.json +68 -0
- package/.agents/skills/embedded-captions/dna/cream.json +69 -0
- package/.agents/skills/embedded-captions/dna/documentary.json +62 -0
- package/.agents/skills/embedded-captions/dna/editorial.json +70 -0
- package/.agents/skills/embedded-captions/dna/glitch.json +82 -0
- package/.agents/skills/embedded-captions/dna/ink.json +65 -0
- package/.agents/skills/embedded-captions/dna/keynote.json +62 -0
- package/.agents/skills/embedded-captions/dna/loud.json +75 -0
- package/.agents/skills/embedded-captions/dna/neon.json +58 -0
- package/.agents/skills/embedded-captions/dna/velocity.json +89 -0
- package/.agents/skills/embedded-captions/modes/cinematic/README.md +48 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
- package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
- package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
- package/.agents/skills/embedded-captions/modes/cinematic/engine.html +355 -0
- package/.agents/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
- package/.agents/skills/embedded-captions/modes/standard/_motion.md +192 -0
- package/.agents/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
- package/.agents/skills/embedded-captions/references/aesthetic-principles.md +168 -0
- package/.agents/skills/embedded-captions/references/anti-patterns.md +188 -0
- package/.agents/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
- package/.agents/skills/embedded-captions/references/caption-grouping.md +130 -0
- package/.agents/skills/embedded-captions/references/composition-craft.md +522 -0
- package/.agents/skills/embedded-captions/references/direction-catalog.md +138 -0
- package/.agents/skills/embedded-captions/references/example-renders/champion.html +371 -0
- package/.agents/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
- package/.agents/skills/embedded-captions/references/failure-modes.md +145 -0
- package/.agents/skills/embedded-captions/references/layout-heuristics.md +238 -0
- package/.agents/skills/embedded-captions/references/motion-vocabulary.md +148 -0
- package/.agents/skills/embedded-captions/references/rail.md +68 -0
- package/.agents/skills/embedded-captions/references/reference-bar.md +47 -0
- package/.agents/skills/embedded-captions/references/scene-types.md +94 -0
- package/.agents/skills/embedded-captions/references/test-set.md +66 -0
- package/.agents/skills/embedded-captions/references/typographic-moves.md +266 -0
- package/.agents/skills/embedded-captions/references/typography-presets.md +63 -0
- package/.agents/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
- package/.agents/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
- package/.agents/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
- package/.agents/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
- package/.agents/skills/embedded-captions/scripts/check-timing.cjs +173 -0
- package/.agents/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
- package/.agents/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
- package/.agents/skills/embedded-captions/scripts/gen-stroke-path.py +46 -0
- package/.agents/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
- package/.agents/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
- package/.agents/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -0
- package/.agents/skills/embedded-captions/scripts/make-composition.cjs +404 -0
- package/.agents/skills/embedded-captions/scripts/make-theme.cjs +8781 -0
- package/.agents/skills/embedded-captions/scripts/matte.cjs +294 -0
- package/.agents/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
- package/.agents/skills/embedded-captions/scripts/prepare.sh +39 -0
- package/.agents/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
- package/.agents/skills/embedded-captions/scripts/render-and-composite.sh +509 -0
- package/.agents/skills/embedded-captions/scripts/render-theme.sh +34 -0
- package/.agents/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
- package/.agents/skills/embedded-captions/scripts/transcribe.cjs +349 -0
- package/.agents/skills/embedded-captions/themes/PORTING.md +49 -0
- package/.agents/skills/embedded-captions/themes/README.md +244 -0
- package/.agents/skills/embedded-captions/themes/anchor.json +27 -0
- package/.agents/skills/embedded-captions/themes/arcade.json +51 -0
- package/.agents/skills/embedded-captions/themes/aurora.json +41 -0
- package/.agents/skills/embedded-captions/themes/biolume.json +35 -0
- package/.agents/skills/embedded-captions/themes/brush.json +74 -0
- package/.agents/skills/embedded-captions/themes/chalkboard.json +52 -0
- package/.agents/skills/embedded-captions/themes/dossier.json +56 -0
- package/.agents/skills/embedded-captions/themes/graffiti.json +62 -0
- package/.agents/skills/embedded-captions/themes/hologram.json +41 -0
- package/.agents/skills/embedded-captions/themes/inkwater.json +43 -0
- package/.agents/skills/embedded-captions/themes/laser.json +46 -0
- package/.agents/skills/embedded-captions/themes/lastpage.json +33 -0
- package/.agents/skills/embedded-captions/themes/neonsign.json +53 -0
- package/.agents/skills/embedded-captions/themes/nightcity.json +56 -0
- package/.agents/skills/embedded-captions/themes/ordnance.json +54 -0
- package/.agents/skills/embedded-captions/themes/papercut.json +37 -0
- package/.agents/skills/embedded-captions/themes/popup.json +46 -0
- package/.agents/skills/embedded-captions/themes/ransom.json +62 -0
- package/.agents/skills/embedded-captions/themes/scoreboard.json +54 -0
- package/.agents/skills/embedded-captions/themes/spectrum.json +46 -0
- package/.agents/skills/embedded-captions/themes/stardust.json +29 -0
- package/.agents/skills/embedded-captions/themes/stomp.json +43 -0
- package/.agents/skills/embedded-captions/themes/terminal.json +49 -0
- package/.agents/skills/embedded-captions/themes/thunder.json +44 -0
- package/.agents/skills/embedded-captions/themes/transit.json +44 -0
- package/.agents/skills/embedded-captions/themes/vhs.json +47 -0
- package/.agents/skills/faceless-explainer/SKILL.md +209 -0
- package/.agents/skills/faceless-explainer/references/cut-catalog.md +215 -0
- package/.agents/skills/faceless-explainer/references/motion-language.md +156 -0
- package/.agents/skills/faceless-explainer/references/story-design.md +248 -0
- package/.agents/skills/faceless-explainer/references/visual-design.md +146 -0
- package/.agents/skills/faceless-explainer/scripts/assemble-index.mjs +570 -0
- package/.agents/skills/faceless-explainer/scripts/audio.mjs +260 -0
- package/.agents/skills/faceless-explainer/scripts/build-frame.mjs +536 -0
- package/.agents/skills/faceless-explainer/scripts/captions.mjs +508 -0
- package/.agents/skills/faceless-explainer/scripts/lib/assets.mjs +55 -0
- package/.agents/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
- package/.agents/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
- package/.agents/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -0
- package/.agents/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
- package/.agents/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
- package/.agents/skills/faceless-explainer/scripts/transitions.mjs +320 -0
- package/.agents/skills/faceless-explainer/sub-agents/frame-worker.md +75 -0
- package/.agents/skills/flockposter/LICENSE +17 -0
- package/.agents/skills/flockposter/README.md +72 -0
- package/.agents/skills/flockposter/SKILL.md +562 -0
- package/.agents/skills/flockposter/examples/cli-instagram-reel.sh +21 -0
- package/.agents/skills/flockposter/examples/cli-multi-platform.json +69 -0
- package/.agents/skills/flockposter/examples/cli-tiktok-upload-only.sh +22 -0
- package/.agents/skills/flockposter/examples/cli-x-thread.sh +17 -0
- package/.agents/skills/flockposter/examples/cli-youtube-short.sh +21 -0
- package/.agents/skills/flockposter/examples/public-api-instagram-reel.json +28 -0
- package/.agents/skills/general-video/SKILL.md +143 -0
- package/.agents/skills/hyperframes/SKILL.md +160 -0
- package/.agents/skills/hyperframes-animation/SKILL.md +84 -0
- package/.agents/skills/hyperframes-animation/adapters/animate-text.md +64 -0
- package/.agents/skills/hyperframes-animation/adapters/animejs.md +114 -0
- package/.agents/skills/hyperframes-animation/adapters/css-animations.md +143 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap.md +105 -0
- package/.agents/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
- package/.agents/skills/hyperframes-animation/adapters/lottie.md +117 -0
- package/.agents/skills/hyperframes-animation/adapters/three.md +131 -0
- package/.agents/skills/hyperframes-animation/adapters/typegpu.md +178 -0
- package/.agents/skills/hyperframes-animation/adapters/waapi.md +101 -0
- package/.agents/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
- package/.agents/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -0
- package/.agents/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -0
- package/.agents/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -0
- package/.agents/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -0
- package/.agents/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -0
- package/.agents/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -0
- package/.agents/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -0
- package/.agents/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -0
- package/.agents/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -0
- package/.agents/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
- package/.agents/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
- package/.agents/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -0
- package/.agents/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
- package/.agents/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
- package/.agents/skills/hyperframes-animation/blueprints-index.md +146 -0
- package/.agents/skills/hyperframes-animation/examples/assets/avatars/02.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/github.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/nvidia.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/visa.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/zoominfo.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
- package/.agents/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
- package/.agents/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
- package/.agents/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
- package/.agents/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
- package/.agents/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
- package/.agents/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
- package/.agents/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
- package/.agents/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
- package/.agents/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
- package/.agents/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
- package/.agents/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
- package/.agents/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
- package/.agents/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -0
- package/.agents/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -0
- package/.agents/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -0
- package/.agents/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -0
- package/.agents/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -0
- package/.agents/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -0
- package/.agents/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -0
- package/.agents/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -0
- package/.agents/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -0
- package/.agents/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -0
- package/.agents/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -0
- package/.agents/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -0
- package/.agents/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -0
- package/.agents/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -0
- package/.agents/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -0
- package/.agents/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -0
- package/.agents/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -0
- package/.agents/skills/hyperframes-animation/rules/gsap-effects.md +299 -0
- package/.agents/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -0
- package/.agents/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -0
- package/.agents/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -0
- package/.agents/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -0
- package/.agents/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -0
- package/.agents/skills/hyperframes-animation/rules/press-release-spring.md +296 -0
- package/.agents/skills/hyperframes-animation/rules/reactive-displacement.md +277 -0
- package/.agents/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -0
- package/.agents/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -0
- package/.agents/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -0
- package/.agents/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -0
- package/.agents/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -0
- package/.agents/skills/hyperframes-animation/rules/svg-path-draw.md +274 -0
- package/.agents/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -0
- package/.agents/skills/hyperframes-animation/rules/viewport-change.md +349 -0
- package/.agents/skills/hyperframes-animation/rules-index.md +86 -0
- package/.agents/skills/hyperframes-animation/scripts/animation-map.mjs +606 -0
- package/.agents/skills/hyperframes-animation/scripts/package-loader.mjs +288 -0
- package/.agents/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
- package/.agents/skills/hyperframes-animation/techniques.md +507 -0
- package/.agents/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -0
- package/.agents/skills/hyperframes-animation/transitions/catalog.md +127 -0
- package/.agents/skills/hyperframes-animation/transitions/css-3d.md +12 -0
- package/.agents/skills/hyperframes-animation/transitions/css-blur.md +51 -0
- package/.agents/skills/hyperframes-animation/transitions/css-cover.md +43 -0
- package/.agents/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
- package/.agents/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
- package/.agents/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
- package/.agents/skills/hyperframes-animation/transitions/css-grid.md +10 -0
- package/.agents/skills/hyperframes-animation/transitions/css-light.md +49 -0
- package/.agents/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
- package/.agents/skills/hyperframes-animation/transitions/css-other.md +25 -0
- package/.agents/skills/hyperframes-animation/transitions/css-push.md +41 -0
- package/.agents/skills/hyperframes-animation/transitions/css-radial.md +37 -0
- package/.agents/skills/hyperframes-animation/transitions/css-scale.md +24 -0
- package/.agents/skills/hyperframes-animation/transitions/overview.md +153 -0
- package/.agents/skills/hyperframes-cli/SKILL.md +113 -0
- package/.agents/skills/hyperframes-cli/references/doctor-browser.md +45 -0
- package/.agents/skills/hyperframes-cli/references/init-and-scaffold.md +55 -0
- package/.agents/skills/hyperframes-cli/references/lambda.md +132 -0
- package/.agents/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
- package/.agents/skills/hyperframes-cli/references/preview-render.md +149 -0
- package/.agents/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
- package/.agents/skills/hyperframes-core/SKILL.md +78 -0
- package/.agents/skills/hyperframes-core/references/composition-patterns.md +263 -0
- package/.agents/skills/hyperframes-core/references/data-attributes.md +70 -0
- package/.agents/skills/hyperframes-core/references/determinism-rules.md +68 -0
- package/.agents/skills/hyperframes-core/references/full-screen-motion.md +62 -0
- package/.agents/skills/hyperframes-core/references/minimal-composition.md +66 -0
- package/.agents/skills/hyperframes-core/references/script-format.md +49 -0
- package/.agents/skills/hyperframes-core/references/storyboard-format.md +95 -0
- package/.agents/skills/hyperframes-core/references/sub-compositions.md +237 -0
- package/.agents/skills/hyperframes-core/references/subagent-dispatch.md +41 -0
- package/.agents/skills/hyperframes-core/references/tailwind.md +125 -0
- package/.agents/skills/hyperframes-core/references/tracks-and-clips.md +76 -0
- package/.agents/skills/hyperframes-core/references/variables-and-media.md +90 -0
- package/.agents/skills/hyperframes-creative/SKILL.md +70 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
- package/.agents/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/monochrome.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
- package/.agents/skills/hyperframes-creative/references/audio-reactive.md +76 -0
- package/.agents/skills/hyperframes-creative/references/beat-direction.md +164 -0
- package/.agents/skills/hyperframes-creative/references/composition-patterns.md +199 -0
- package/.agents/skills/hyperframes-creative/references/data-in-motion.md +19 -0
- package/.agents/skills/hyperframes-creative/references/design-adherence.md +19 -0
- package/.agents/skills/hyperframes-creative/references/design-picker.md +123 -0
- package/.agents/skills/hyperframes-creative/references/design-spec.md +55 -0
- package/.agents/skills/hyperframes-creative/references/house-style.md +73 -0
- package/.agents/skills/hyperframes-creative/references/motion-principles.md +150 -0
- package/.agents/skills/hyperframes-creative/references/narration.md +92 -0
- package/.agents/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
- package/.agents/skills/hyperframes-creative/references/typography.md +218 -0
- package/.agents/skills/hyperframes-creative/references/video-composition.md +63 -0
- package/.agents/skills/hyperframes-creative/references/visual-styles.md +457 -0
- package/.agents/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -0
- package/.agents/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -0
- package/.agents/skills/hyperframes-creative/scripts/package-loader.mjs +288 -0
- package/.agents/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
- package/.agents/skills/hyperframes-creative/templates/design-picker.html +1432 -0
- package/.agents/skills/hyperframes-keyframes/SKILL.md +237 -0
- package/.agents/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
- package/.agents/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -0
- package/.agents/skills/motion-graphics/SKILL.md +172 -0
- package/.agents/skills/motion-graphics/agents/builder.md +40 -0
- package/.agents/skills/motion-graphics/agents/director.md +53 -0
- package/.agents/skills/motion-graphics/agents/finalize.md +17 -0
- package/.agents/skills/motion-graphics/catalog-map.md +40 -0
- package/.agents/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
- package/.agents/skills/motion-graphics/categories/charts/module.md +21 -0
- package/.agents/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
- package/.agents/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
- package/.agents/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
- package/.agents/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
- package/.agents/skills/motion-graphics/categories/maps/module.md +61 -0
- package/.agents/skills/motion-graphics/categories/news/module.md +56 -0
- package/.agents/skills/motion-graphics/categories/stat/module.md +21 -0
- package/.agents/skills/motion-graphics/categories/tweet/module.md +16 -0
- package/.agents/skills/motion-graphics/categories/webpage/module.md +21 -0
- package/.agents/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
- package/.agents/skills/motion-graphics/grounding/locate.mjs +227 -0
- package/.agents/skills/motion-graphics/phases/source/guide.md +21 -0
- package/.agents/skills/motion-graphics/references/builder-contract.md +38 -0
- package/.agents/skills/motion-graphics/references/motion-vocabulary.md +43 -0
- package/.agents/skills/motion-graphics/references/shot-plan-ir.md +54 -0
- package/.agents/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
- package/.agents/skills/product-launch-video/SKILL.md +208 -0
- package/.agents/skills/product-launch-video/references/cut-catalog.md +220 -0
- package/.agents/skills/product-launch-video/references/motion-language.md +156 -0
- package/.agents/skills/product-launch-video/references/story-design.md +373 -0
- package/.agents/skills/product-launch-video/references/visual-design.md +126 -0
- package/.agents/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
- package/.agents/skills/product-launch-video/scripts/audio.mjs +260 -0
- package/.agents/skills/product-launch-video/scripts/build-frame.mjs +536 -0
- package/.agents/skills/product-launch-video/scripts/captions.mjs +508 -0
- package/.agents/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
- package/.agents/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
- package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
- package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
- package/.agents/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
- package/.agents/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
- package/.agents/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
- package/.agents/skills/product-launch-video/scripts/lib/transitions.json +71 -0
- package/.agents/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
- package/.agents/skills/product-launch-video/scripts/transitions.mjs +327 -0
- package/.agents/skills/product-launch-video/sub-agents/frame-worker.md +75 -0
- package/.agents/skills/slideshow/SKILL.md +550 -0
- package/.agents/skills/slideshow/references/standalone-harness.md +1020 -0
- package/.agents/skills/talking-head-recut/NOTICE.md +39 -0
- package/.agents/skills/talking-head-recut/SKILL.md +1195 -0
- package/.agents/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
- package/.agents/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
- package/.agents/skills/talking-head-recut/references/frames/clean.html +92 -0
- package/.agents/skills/talking-head-recut/references/frames/hairline.html +171 -0
- package/.agents/skills/talking-head-recut/references/frames/polaroid.html +131 -0
- package/.agents/skills/talking-head-recut/references/layouts/overlay.html +164 -0
- package/.agents/skills/talking-head-recut/references/layouts/pip.html +143 -0
- package/.agents/skills/talking-head-recut/references/layouts/split.html +121 -0
- package/.agents/skills/talking-head-recut/references/layouts/stack.html +109 -0
- package/.agents/skills/talking-head-recut/references/styles/academic.html +172 -0
- package/.agents/skills/talking-head-recut/references/styles/audit.html +170 -0
- package/.agents/skills/talking-head-recut/references/styles/editorial.html +189 -0
- package/.agents/skills/talking-head-recut/references/styles/geom.html +181 -0
- package/.agents/skills/talking-head-recut/references/styles/minimal.html +130 -0
- package/.agents/skills/talking-head-recut/references/styles/spotlight.html +142 -0
- package/.agents/skills/talking-head-recut/references/styles/swiss.html +188 -0
- package/.agents/skills/talking-head-recut/references/styles/terminal.html +196 -0
- package/.agents/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
- package/.agents/skills/talking-head-recut/references/styles/xhs.html +206 -0
- package/.agents/skills/vidfarm-media/SKILL.md +85 -0
- package/.agents/skills/vidfarm-media/references/tts.md +54 -0
- package/.agents/skills/vidfarm-media/scripts/audio.mjs +628 -0
- package/.agents/skills/vidfarm-media/scripts/wait-bgm.mjs +31 -0
- package/.agents/skills/website-to-video/SKILL.md +145 -0
- package/.agents/skills/website-to-video/assets/sfx/CREDITS.md +35 -0
- package/.agents/skills/website-to-video/assets/sfx/manifest.json +97 -0
- package/.agents/skills/website-to-video/references/beat-builder-guide.md +263 -0
- package/.agents/skills/website-to-video/references/capabilities.md +713 -0
- package/.agents/skills/website-to-video/references/step-0-capture.md +55 -0
- package/.agents/skills/website-to-video/references/step-1-design.md +333 -0
- package/.agents/skills/website-to-video/references/step-2-brief.md +178 -0
- package/.agents/skills/website-to-video/references/step-3-storyboard.md +572 -0
- package/.agents/skills/website-to-video/references/step-4-vo.md +225 -0
- package/.agents/skills/website-to-video/references/step-5-build.md +483 -0
- package/.agents/skills/website-to-video/references/step-6-validate.md +341 -0
- package/.agents/skills/website-to-video/scripts/w2h-verify.mjs +759 -0
- package/SKILL.director.md +37 -0
- package/SKILL.platform.md +6 -1
- package/demo/dist/app.js +295 -11
- package/dist/src/app.js +317 -133
- package/dist/src/cli.js +529 -12
- package/dist/src/composition-runtime.js +262 -3
- package/dist/src/devcli/doctor.js +192 -0
- package/dist/src/devcli/hyperframes-cli.js +118 -0
- package/dist/src/devcli/skills.js +476 -0
- package/dist/src/devcli/stills.js +249 -0
- package/dist/src/editor-chat.js +255 -0
- package/dist/src/hyperframes/composition.js +5 -5
- package/dist/src/services/composition-lint.js +199 -0
- package/dist/src/services/hyperframes.js +67 -13
- package/package.json +2 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Direction catalog
|
|
2
|
+
|
|
3
|
+
10 distinct aesthetic directions the skill can express. Each is a complete look: font, motion, color, placement, rhetorical defaults. The agent picks by **content tone × shot type × platform**, not preset name.
|
|
4
|
+
|
|
5
|
+
Current shipped templates (`modes/cinematic/*`) cover about 30% of this catalog. The rest are future ship-ready aesthetics.
|
|
6
|
+
|
|
7
|
+
Classification matrix — pick direction by intersection:
|
|
8
|
+
|
|
9
|
+
| Tone ↓ / Platform → | 9:16 portrait | 16:9 landscape | 1:1 square |
|
|
10
|
+
| ------------------- | ---------------------------------------- | ------------------------ | ------------------------ |
|
|
11
|
+
| **Documentary** | documentary-dignified (vertical variant) | documentary-dignified | broadcast-dignified |
|
|
12
|
+
| **Conversational** | portrait-header + default | memory-wall OR champion | broadcast-dignified |
|
|
13
|
+
| **Energetic** | high-energy-vlog | high-energy-vlog-wide | high-energy-vlog-sq |
|
|
14
|
+
| **Poetic** | lyrical-poem-on-wall (portrait) | lyrical-poem-on-wall | chapter-card |
|
|
15
|
+
| **Keynote/tech** | — (9:16 not ideal) | tech-keynote-confident | tech-keynote-confident |
|
|
16
|
+
| **Investigative** | — | investigative-typewriter | investigative-typewriter |
|
|
17
|
+
| **Music video** | k-pop-lyric | k-pop-lyric | k-pop-lyric |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Direction specs
|
|
22
|
+
|
|
23
|
+
### 1. documentary-dignified _(Errol Morris / PBS Frontline)_ — Standard-mode direction (no prebuilt Cinematic template)
|
|
24
|
+
|
|
25
|
+
- **Family**: Söhne Mono OR GT Sectra for name cards; Inter for body
|
|
26
|
+
- **Weights**: 500 body, 700 name card
|
|
27
|
+
- **Color**: bone `#F5EFE6` on charcoal, OR charcoal `#1A1A1A` on bone. No accent.
|
|
28
|
+
- **Motion**: burn-in (no animation). Held 0.5s past last word.
|
|
29
|
+
- **Placement**: bottom-left block, 10% margin, locked position for whole interview.
|
|
30
|
+
- **Rules**: 2-line max. Speaker name card once at first utterance + after each cut. No emphasis styling — gravitas IS the style.
|
|
31
|
+
- **Rhetorical**: aggressive filler suppression. Every word is chosen.
|
|
32
|
+
|
|
33
|
+
### 2. cinematic-noir _(Kyle Cooper / Se7en)_
|
|
34
|
+
|
|
35
|
+
- **Family**: Distressed serif (Hoefler Text) + tight mono for detail
|
|
36
|
+
- **Weights**: 700 mostly; thin italic ONLY for whispers
|
|
37
|
+
- **Color**: off-white `#E8E0D0` with deep red `#8B0000` single-word accent for menace
|
|
38
|
+
- **Motion**: typewriter with 10% chance of 1px jitter on entry; scratched etch for chapter beats
|
|
39
|
+
- **Placement**: off-axis — avoid dead-center, slightly high-left or low-right
|
|
40
|
+
- **Rules**: no emoji, no rounded corners, everything hand-feeling
|
|
41
|
+
|
|
42
|
+
### 3. tech-keynote-confident _(Apple / Jony Ive ad)_
|
|
43
|
+
|
|
44
|
+
- **Family**: SF Pro Display OR Inter, nothing else
|
|
45
|
+
- **Weights**: 800 headline keyword, 400 context
|
|
46
|
+
- **Color**: pure white on any bg; `mix-blend-mode: difference` fallback for bright scenes
|
|
47
|
+
- **Motion**: swipe-reveal from bottom via clip-path (400ms); exit fades 400ms
|
|
48
|
+
- **Placement**: dead center, large. NOT lower-third.
|
|
49
|
+
- **Rules**: one caption on screen at a time. 2–5 words per caption. Long held silences between. Feels like slides.
|
|
50
|
+
|
|
51
|
+
### 4. lyrical-poem-on-wall _(extends current memory-wall template)_
|
|
52
|
+
|
|
53
|
+
- **Family**: Serif with personality — EB Garamond / GT Sectra / Caslon Italic
|
|
54
|
+
- **Weights**: 400–500 only. **This direction rejects bold.**
|
|
55
|
+
- **Color**: picks up wall via `mix-blend-mode: overlay`, opacity 0.85, no stroke
|
|
56
|
+
- **Motion**: etch in 600ms, hold 1.5–3s, etch out
|
|
57
|
+
- **Placement**: always on a surface in the scene (back wall, foam, whiteboard). Uses matte pipeline.
|
|
58
|
+
- **Rules**: captions are **fewer** than spoken text — 40–60%. Intentional silences. No other tool does this; strong differentiation.
|
|
59
|
+
|
|
60
|
+
### 5. high-energy-vlog _(controlled Hormozi)_
|
|
61
|
+
|
|
62
|
+
- **Family**: Inter ExtraBold, uppercase
|
|
63
|
+
- **Weights**: 900 always
|
|
64
|
+
- **Color**: white body + ONE accent (`#FFD600` or `#00E676`) + narrow 2px dark stroke
|
|
65
|
+
- **Motion**: word-pop with elastic, 60ms stagger; active word scales 1.15× on speech onset
|
|
66
|
+
- **Placement**: center-frame, ~35% from top
|
|
67
|
+
- **Rules**: max 3 words per frame. Hard break at breath pauses. Accent color on ~15% of words. **One full silence every 10s** (what Hormozi imitators miss).
|
|
68
|
+
|
|
69
|
+
### 6. chapter-card _(Wes Anderson / Grand Budapest)_
|
|
70
|
+
|
|
71
|
+
- **Family**: Futura Bold (modern) / Archer (warm) / Bodoni (formal)
|
|
72
|
+
- **Weights**: 700 chapter title, 400 attribution
|
|
73
|
+
- **Color**: pastel hue sampled from scene
|
|
74
|
+
- **Motion**: full-frame static card between interview segments
|
|
75
|
+
- **Placement**: centered card for chapters; lower-left name card during speech
|
|
76
|
+
- **Rules**: chapter cards get their own beat (0.8s silence before, 0.4s after). Feels authored.
|
|
77
|
+
|
|
78
|
+
### 7. investigative-typewriter _(Frontline / 60 Minutes / Morris Interrotron)_
|
|
79
|
+
|
|
80
|
+
- **Family**: IBM Plex Mono OR JetBrains Mono
|
|
81
|
+
- **Weights**: 500
|
|
82
|
+
- **Color**: white with 3px shadow, no stroke
|
|
83
|
+
- **Motion**: typewriter char-by-char 25ms/char; cursor blink 600ms after last char
|
|
84
|
+
- **Placement**: bottom band with 40% opacity gradient up — **NOT a hard box**
|
|
85
|
+
- **Rules**: one line only, two-line max. Every caption ends with 1-frame cursor-hold before next enters.
|
|
86
|
+
|
|
87
|
+
### 8. k-pop-lyric _(music video typographic flex)_
|
|
88
|
+
|
|
89
|
+
- **Family**: oversized display serif (Playfair Display / GT Super) + tiny mono detail line
|
|
90
|
+
- **Weights**: display 900, mono 400
|
|
91
|
+
- **Color**: deep saturated single hue per song/segment
|
|
92
|
+
- **Motion**: cascade entries alternating sides; words cross subject with mix-blend
|
|
93
|
+
- **Placement**: intentionally LARGE — sometimes bigger than the face
|
|
94
|
+
- **Rules**: emotional/musical moments only. Never informational content. **Breaks rule #1 (subject wins) on purpose** — that's the whole point.
|
|
95
|
+
|
|
96
|
+
### 9. broadcast-dignified _(BBC / NYT documentary standard)_
|
|
97
|
+
|
|
98
|
+
- **Family**: Helvetica Now / Neue Haas Grotesk
|
|
99
|
+
- **Weights**: 500 body, 700 name
|
|
100
|
+
- **Color**: white on 40% black gradient pill (not hard box, not plain shadow — gradient is the signature)
|
|
101
|
+
- **Motion**: 200ms fade-up, 150ms fade-down
|
|
102
|
+
- **Placement**: bottom-center, 10% margin, title-safe locked
|
|
103
|
+
- **Rules**: strict BBC — 160–180wpm, 32–34 chars/line, 2 lines max, 1.5s min gap. "Export to broadcast" mode. Boring on purpose. Never wrong.
|
|
104
|
+
|
|
105
|
+
### 10. conference-lower-third-killer _(B2B but not lame)_
|
|
106
|
+
|
|
107
|
+
- **Family**: GT America / Aktiv Grotesk
|
|
108
|
+
- **Weights**: dual-weight name card — role 400, name 700, same size
|
|
109
|
+
- **Color**: scene-sampled accent on name, white on role
|
|
110
|
+
- **Motion**: name card swipes in from left 400ms on first appearance only; subsequent static
|
|
111
|
+
- **Placement**: lower-left card + active-word highlight inline in dialogue above
|
|
112
|
+
- **Rules**: mode for podcast clips, founder interviews, keynote pulls. Sophisticated without being arty.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Which to ship next
|
|
117
|
+
|
|
118
|
+
Current templates: `memory-wall` (roughly direction #4), `champion` (roughly a mix of #5 and #9), `portrait-header` (default vertical).
|
|
119
|
+
|
|
120
|
+
Priority ship order based on competitive gap:
|
|
121
|
+
|
|
122
|
+
1. **documentary-dignified** — no one else does this well; Errol Morris aesthetic is an unserved niche
|
|
123
|
+
2. **lyrical-poem-on-wall** (as distinct template) — the one that most uses our matte-embed moat
|
|
124
|
+
3. **high-energy-vlog** — matches but out-designs Hormozi/Submagic presets
|
|
125
|
+
4. **tech-keynote-confident** — big for product launch videos
|
|
126
|
+
5. **investigative-typewriter** — niche but highly distinctive
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## How the agent picks
|
|
131
|
+
|
|
132
|
+
1. Classify the clip: `tone × shot × platform` (see matrix above)
|
|
133
|
+
2. Look up direction in matrix
|
|
134
|
+
3. Read that direction's spec in this file
|
|
135
|
+
4. Translate spec into plan.json parameters OR clone the canonical HTML from `examples/`
|
|
136
|
+
5. Tune layout per scene (agent judgment, see `aesthetic-principles.md §1–18`)
|
|
137
|
+
|
|
138
|
+
If no direction fits cleanly → **Standard mode**. Don't fake-fit an ill-matched direction.
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=1920, height=1080" />
|
|
6
|
+
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
|
7
|
+
<style>
|
|
8
|
+
* {
|
|
9
|
+
margin: 0;
|
|
10
|
+
padding: 0;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
}
|
|
13
|
+
html,
|
|
14
|
+
body {
|
|
15
|
+
margin: 0;
|
|
16
|
+
width: 1920px;
|
|
17
|
+
height: 1080px;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
background: #000;
|
|
20
|
+
font-family: "Inter", system-ui, sans-serif;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#a-roll {
|
|
24
|
+
position: absolute;
|
|
25
|
+
inset: 0;
|
|
26
|
+
width: 100%;
|
|
27
|
+
height: 100%;
|
|
28
|
+
object-fit: cover;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
This scene has no flat wall — subject is center with a busy
|
|
33
|
+
bookshelf backdrop. So instead of a wall-plane, we place a
|
|
34
|
+
HEADER band across the top of the frame with subtle perspective
|
|
35
|
+
(slight rotateX so it lies on the bookshelf rather than floats).
|
|
36
|
+
Screen-blend picks up the shelf's darker patches.
|
|
37
|
+
*/
|
|
38
|
+
#stage {
|
|
39
|
+
position: absolute;
|
|
40
|
+
top: 0;
|
|
41
|
+
left: 0;
|
|
42
|
+
width: 1920px;
|
|
43
|
+
height: 1080px;
|
|
44
|
+
perspective: 2400px;
|
|
45
|
+
perspective-origin: 25% 50%;
|
|
46
|
+
pointer-events: none;
|
|
47
|
+
z-index: 2;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/*
|
|
51
|
+
Left-column layout: subject fills x=550-1200, so the bookshelf
|
|
52
|
+
at x=0-550 is the clean zone. Captions right-align there, with
|
|
53
|
+
a mild perspective that makes them lie on the shelf.
|
|
54
|
+
*/
|
|
55
|
+
.left-plane {
|
|
56
|
+
position: absolute;
|
|
57
|
+
/* Upper-left region. Hands gesture widely below y≈460, so we
|
|
58
|
+
keep the plane above that line. Head sits to the right of
|
|
59
|
+
x≈600, so x=40-720 here is the clean bookshelf zone. */
|
|
60
|
+
top: 40px;
|
|
61
|
+
left: 40px;
|
|
62
|
+
width: 720px;
|
|
63
|
+
height: 420px;
|
|
64
|
+
transform-style: preserve-3d;
|
|
65
|
+
transform: rotateY(4deg);
|
|
66
|
+
transform-origin: left center;
|
|
67
|
+
padding: 24px 36px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Each cap stacks at the same absolute position within the plane
|
|
71
|
+
so hidden captions don't reserve flex space. */
|
|
72
|
+
.left-plane .cap {
|
|
73
|
+
position: absolute;
|
|
74
|
+
top: 24px;
|
|
75
|
+
right: 36px;
|
|
76
|
+
max-width: 648px; /* plane 720 - padding 36×2 */
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* A single "crown" caption placed center-stage for the payoff
|
|
80
|
+
("A WIMBLEDON CHAMPION") — deliberately crosses the head to
|
|
81
|
+
deliver the emphasis via cinematic occlusion. */
|
|
82
|
+
.crown-plane {
|
|
83
|
+
position: absolute;
|
|
84
|
+
top: 420px;
|
|
85
|
+
left: 0;
|
|
86
|
+
right: 0;
|
|
87
|
+
text-align: center;
|
|
88
|
+
pointer-events: none;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.cap {
|
|
92
|
+
display: block;
|
|
93
|
+
position: relative;
|
|
94
|
+
line-height: 1.02;
|
|
95
|
+
opacity: 0;
|
|
96
|
+
mix-blend-mode: screen;
|
|
97
|
+
color: #fff5df;
|
|
98
|
+
text-shadow:
|
|
99
|
+
0 0 18px rgba(255, 220, 170, 0.55),
|
|
100
|
+
0 3px 8px rgba(0, 0, 0, 0.85);
|
|
101
|
+
filter: brightness(1.12) contrast(1.08);
|
|
102
|
+
will-change: transform, opacity;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.cap .w {
|
|
106
|
+
display: inline-block;
|
|
107
|
+
opacity: 0;
|
|
108
|
+
will-change: opacity, transform;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/*
|
|
112
|
+
Story beats sized to emphasize meaning:
|
|
113
|
+
- intros / fillers = smaller italic
|
|
114
|
+
- key statement phrases = bigger upright
|
|
115
|
+
- emphasis phrases (incredible things) = largest bold
|
|
116
|
+
- crown (Wimbledon Champion) = huge, center-stage, behind subject
|
|
117
|
+
*/
|
|
118
|
+
.cap-intro {
|
|
119
|
+
font-size: 52px;
|
|
120
|
+
font-weight: 500;
|
|
121
|
+
font-style: italic;
|
|
122
|
+
letter-spacing: -0.005em;
|
|
123
|
+
}
|
|
124
|
+
.cap-phrase {
|
|
125
|
+
font-size: 60px;
|
|
126
|
+
font-weight: 600;
|
|
127
|
+
font-style: normal;
|
|
128
|
+
letter-spacing: -0.015em;
|
|
129
|
+
}
|
|
130
|
+
.cap-emph {
|
|
131
|
+
font-size: 70px;
|
|
132
|
+
font-weight: 800;
|
|
133
|
+
font-style: normal;
|
|
134
|
+
letter-spacing: -0.025em;
|
|
135
|
+
}
|
|
136
|
+
.cap-dream {
|
|
137
|
+
font-size: 64px;
|
|
138
|
+
font-weight: 700;
|
|
139
|
+
font-style: italic;
|
|
140
|
+
letter-spacing: -0.015em;
|
|
141
|
+
}
|
|
142
|
+
.cap-crown {
|
|
143
|
+
font-size: 140px;
|
|
144
|
+
font-weight: 900;
|
|
145
|
+
font-style: normal;
|
|
146
|
+
letter-spacing: -0.035em;
|
|
147
|
+
text-transform: uppercase;
|
|
148
|
+
line-height: 1;
|
|
149
|
+
}
|
|
150
|
+
</style>
|
|
151
|
+
</head>
|
|
152
|
+
<body>
|
|
153
|
+
<div
|
|
154
|
+
id="root"
|
|
155
|
+
data-composition-id="main"
|
|
156
|
+
data-start="0"
|
|
157
|
+
data-duration="12.08"
|
|
158
|
+
data-width="1920"
|
|
159
|
+
data-height="1080"
|
|
160
|
+
>
|
|
161
|
+
<video
|
|
162
|
+
id="a-roll"
|
|
163
|
+
class="clip"
|
|
164
|
+
src="source.mp4"
|
|
165
|
+
muted
|
|
166
|
+
playsinline
|
|
167
|
+
data-duration="12.08"
|
|
168
|
+
data-track-index="0"
|
|
169
|
+
style="z-index: 1"
|
|
170
|
+
></video>
|
|
171
|
+
|
|
172
|
+
<div id="stage">
|
|
173
|
+
<!-- Left column: G1-G5 live here, on the clean bookshelf -->
|
|
174
|
+
<div class="left-plane">
|
|
175
|
+
<div id="cg-0" class="cap cap-intro">
|
|
176
|
+
<span class="w" data-i="0">You</span>
|
|
177
|
+
<span class="w" data-i="1">know,</span>
|
|
178
|
+
<span class="w" data-i="2">for</span>
|
|
179
|
+
<span class="w" data-i="3">me</span>
|
|
180
|
+
</div>
|
|
181
|
+
<div id="cg-1" class="cap cap-phrase">
|
|
182
|
+
<span class="w" data-i="0">I've</span>
|
|
183
|
+
<span class="w" data-i="1">had</span>
|
|
184
|
+
<span class="w" data-i="2">this</span>
|
|
185
|
+
<span class="w" data-i="3">kind</span>
|
|
186
|
+
<span class="w" data-i="4">of</span>
|
|
187
|
+
<span class="w" data-i="5">upbringing</span>
|
|
188
|
+
</div>
|
|
189
|
+
<div id="cg-2" class="cap cap-phrase">
|
|
190
|
+
<span class="w" data-i="0">the</span>
|
|
191
|
+
<span class="w" data-i="1">great</span>
|
|
192
|
+
<span class="w" data-i="2">foundation</span>
|
|
193
|
+
</div>
|
|
194
|
+
<div id="cg-3" class="cap cap-emph">
|
|
195
|
+
<span class="w" data-i="0">I've</span>
|
|
196
|
+
<span class="w" data-i="1">achieved</span>
|
|
197
|
+
<span class="w" data-i="2">incredible</span>
|
|
198
|
+
<span class="w" data-i="3">things</span>
|
|
199
|
+
</div>
|
|
200
|
+
<div id="cg-4" class="cap cap-dream">
|
|
201
|
+
<span class="w" data-i="0">dreaming</span>
|
|
202
|
+
<span class="w" data-i="1">of</span>
|
|
203
|
+
<span class="w" data-i="2">becoming</span>
|
|
204
|
+
<span class="w" data-i="3">number</span>
|
|
205
|
+
<span class="w" data-i="4">one</span>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
<!-- Center-stage crown: the payoff. Sits where the subject is,
|
|
209
|
+
matte layering makes it *behind* him — the occlusion is the moment. -->
|
|
210
|
+
<div class="crown-plane">
|
|
211
|
+
<div id="cg-5" class="cap cap-crown">
|
|
212
|
+
<span class="w" data-i="0">Wimbledon</span>
|
|
213
|
+
<span class="w" data-i="1">Champion</span>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
|
|
218
|
+
<audio
|
|
219
|
+
id="a-roll-audio"
|
|
220
|
+
src="source.mp4"
|
|
221
|
+
data-start="0"
|
|
222
|
+
data-duration="12.08"
|
|
223
|
+
data-track-index="3"
|
|
224
|
+
data-volume="1"
|
|
225
|
+
></audio>
|
|
226
|
+
</div>
|
|
227
|
+
|
|
228
|
+
<script>
|
|
229
|
+
window.__timelines = window.__timelines || {};
|
|
230
|
+
const tl = gsap.timeline({ paused: true });
|
|
231
|
+
const DUR = 12.08;
|
|
232
|
+
|
|
233
|
+
/* Word-level transcript — ElevenLabs scribe_v2 */
|
|
234
|
+
const GROUPS = [
|
|
235
|
+
{
|
|
236
|
+
id: "cg-0",
|
|
237
|
+
in: 0.1,
|
|
238
|
+
out: 1.45,
|
|
239
|
+
tone: "soft",
|
|
240
|
+
words: [
|
|
241
|
+
{ text: "You", start: 0.18, end: 0.24 },
|
|
242
|
+
{ text: "know", start: 0.28, end: 0.36 },
|
|
243
|
+
{ text: "for", start: 0.46, end: 0.62 },
|
|
244
|
+
{ text: "me", start: 0.66, end: 0.86 },
|
|
245
|
+
],
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
id: "cg-1",
|
|
249
|
+
in: 1.4,
|
|
250
|
+
out: 3.35,
|
|
251
|
+
tone: "soft",
|
|
252
|
+
words: [
|
|
253
|
+
{ text: "I've", start: 1.5, end: 1.68 },
|
|
254
|
+
{ text: "had", start: 1.76, end: 1.94 },
|
|
255
|
+
{ text: "this", start: 1.98, end: 2.14 },
|
|
256
|
+
{ text: "kind", start: 2.2, end: 2.34 },
|
|
257
|
+
{ text: "of", start: 2.36, end: 2.44 },
|
|
258
|
+
{ text: "upbringing", start: 2.48, end: 3.06 },
|
|
259
|
+
],
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
id: "cg-2",
|
|
263
|
+
in: 3.5,
|
|
264
|
+
out: 5.35,
|
|
265
|
+
tone: "soft",
|
|
266
|
+
words: [
|
|
267
|
+
{ text: "the", start: 3.56, end: 3.64 },
|
|
268
|
+
{ text: "great", start: 3.7, end: 3.9 },
|
|
269
|
+
{ text: "foundation", start: 3.96, end: 4.6 },
|
|
270
|
+
],
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
id: "cg-3",
|
|
274
|
+
in: 6.05,
|
|
275
|
+
out: 8.3,
|
|
276
|
+
tone: "present",
|
|
277
|
+
words: [
|
|
278
|
+
{ text: "I've", start: 6.36, end: 6.5 },
|
|
279
|
+
{ text: "achieved", start: 6.62, end: 7.08 },
|
|
280
|
+
{ text: "incredible", start: 7.38, end: 7.86 },
|
|
281
|
+
{ text: "things", start: 7.88, end: 8.16 },
|
|
282
|
+
],
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
id: "cg-4",
|
|
286
|
+
in: 8.5,
|
|
287
|
+
out: 10.4,
|
|
288
|
+
tone: "present",
|
|
289
|
+
words: [
|
|
290
|
+
{ text: "dreaming", start: 8.54, end: 8.84 },
|
|
291
|
+
{ text: "of", start: 8.88, end: 9.0 },
|
|
292
|
+
{ text: "becoming", start: 9.04, end: 9.4 },
|
|
293
|
+
{ text: "number", start: 9.48, end: 9.64 },
|
|
294
|
+
{ text: "one", start: 9.72, end: 9.8 },
|
|
295
|
+
],
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
id: "cg-5",
|
|
299
|
+
in: 10.8,
|
|
300
|
+
out: 12.08,
|
|
301
|
+
tone: "present",
|
|
302
|
+
words: [
|
|
303
|
+
{ text: "Wimbledon", start: 10.92, end: 11.28 },
|
|
304
|
+
{ text: "Champion", start: 11.38, end: 11.84 },
|
|
305
|
+
],
|
|
306
|
+
},
|
|
307
|
+
];
|
|
308
|
+
|
|
309
|
+
GROUPS.forEach(function (g) {
|
|
310
|
+
var sel = "#" + g.id;
|
|
311
|
+
var words = g.words.map(function (_, i) {
|
|
312
|
+
return sel + " .w[data-i='" + i + "']";
|
|
313
|
+
});
|
|
314
|
+
var isSoft = g.tone === "soft";
|
|
315
|
+
|
|
316
|
+
/* Container visible just before entrance; single-layer fade is on words. */
|
|
317
|
+
tl.set(sel, { opacity: 1, y: 0 }, Math.max(0, g.in - 0.01));
|
|
318
|
+
|
|
319
|
+
g.words.forEach(function (w, i) {
|
|
320
|
+
if (isSoft) {
|
|
321
|
+
tl.fromTo(
|
|
322
|
+
words[i],
|
|
323
|
+
{ opacity: 0, y: 8 },
|
|
324
|
+
{ opacity: 1, y: 0, duration: 0.42, ease: "power2.out", overwrite: "auto" },
|
|
325
|
+
w.start,
|
|
326
|
+
);
|
|
327
|
+
} else {
|
|
328
|
+
tl.fromTo(
|
|
329
|
+
words[i],
|
|
330
|
+
{ opacity: 0, y: 6, scale: 1.04 },
|
|
331
|
+
{
|
|
332
|
+
opacity: 1,
|
|
333
|
+
y: 0,
|
|
334
|
+
scale: 1.0,
|
|
335
|
+
duration: 0.22,
|
|
336
|
+
ease: "power3.out",
|
|
337
|
+
transformOrigin: "50% 50%",
|
|
338
|
+
overwrite: "auto",
|
|
339
|
+
},
|
|
340
|
+
w.start,
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
/* Group exit — each group fades out before the next enters. */
|
|
346
|
+
if (g.out < DUR) {
|
|
347
|
+
tl.to(
|
|
348
|
+
sel,
|
|
349
|
+
{ opacity: 0, duration: 0.45, ease: "power2.in", overwrite: "auto" },
|
|
350
|
+
g.out - 0.45,
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
tl.set(sel, { opacity: 0, visibility: "hidden" }, g.out);
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
/* Self-lint */
|
|
357
|
+
GROUPS.forEach(function (g) {
|
|
358
|
+
var el = document.getElementById(g.id);
|
|
359
|
+
if (!el) return;
|
|
360
|
+
tl.seek(g.out + 0.01);
|
|
361
|
+
var cs = window.getComputedStyle(el);
|
|
362
|
+
if (cs.opacity !== "0" && cs.visibility !== "hidden") {
|
|
363
|
+
console.warn("[caption-lint] " + g.id + " visible at t=" + (g.out + 0.01).toFixed(2));
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
tl.seek(0);
|
|
367
|
+
|
|
368
|
+
window.__timelines["main"] = tl;
|
|
369
|
+
</script>
|
|
370
|
+
</body>
|
|
371
|
+
</html>
|