@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.
- 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.css +1 -1
- package/demo/dist/app.js +369 -85
- package/dist/src/app.js +630 -140
- package/dist/src/cli.js +529 -12
- package/dist/src/composition-runtime.js +262 -3
- package/dist/src/config.js +13 -0
- 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 +256 -0
- package/dist/src/frontend/homepage-client.js +50 -1
- package/dist/src/frontend/homepage-shared.js +197 -0
- package/dist/src/frontend/homepage-store.js +10 -1
- package/dist/src/frontend/homepage-view.js +43 -5
- package/dist/src/homepage.js +51 -18
- 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/dist/src/services/serverless-records.js +9 -0
- package/package.json +2 -1
- package/public/assets/homepage-client-app.js +23 -23
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: alpha
|
|
3
|
+
name: Claude — Frame (video / frame layer)
|
|
4
|
+
description: >
|
|
5
|
+
Video-first companion to Claude's design.md. The unit is the frame (1920×1080). Atoms are
|
|
6
|
+
identical and sacred — warm cream paper (never pure white, never cool), a single terracotta coral
|
|
7
|
+
as scarce "voltage", hairline ink elevation (no heavy shadow), EB Garamond for all
|
|
8
|
+
display + Inter body + JetBrains Mono for the index/code voice on a warm-navy code surface,
|
|
9
|
+
sentence-case display, and the ✱ coral spike mark. Composition + frame scale rewritten. Motion out
|
|
10
|
+
of scope.
|
|
11
|
+
unit: the frame — 1920×1080 primary; 9:16 and 1:1 documented
|
|
12
|
+
principle: atoms are sacred · composition is free · numbers come from the script
|
|
13
|
+
|
|
14
|
+
colors:
|
|
15
|
+
ink: "#141413"
|
|
16
|
+
cream: "#FAF9F5"
|
|
17
|
+
tile: "#EFE9DE"
|
|
18
|
+
tile-strong: "#ECE3D4"
|
|
19
|
+
coral: "#CC785C"
|
|
20
|
+
navy: "#181715"
|
|
21
|
+
navy-soft: "#1F1E1B"
|
|
22
|
+
navy-elev: "#252320"
|
|
23
|
+
|
|
24
|
+
borders: { hairline: "1px solid ink@12%", hairline-strong: "1px solid ink@20%", dark: "1px solid cream@14% (on navy)" }
|
|
25
|
+
shadows: { card: "0 1px 3px ink@8%, 0 4px 16px ink@4%", none: "none" }
|
|
26
|
+
|
|
27
|
+
typography:
|
|
28
|
+
# — reading + chrome ramp —
|
|
29
|
+
body: { fontFamily: "Inter", cqw: 1.5, weight: 400, lineHeight: 1.5 }
|
|
30
|
+
lead: { fontFamily: "Inter", cqw: 2.08, weight: 400, lineHeight: 1.5 }
|
|
31
|
+
card-title:{ fontFamily: "Inter", cqw: 2.3, weight: 500, lineHeight: 1.25, tracking: "-0.005em" }
|
|
32
|
+
button: { fontFamily: "Inter", cqw: 1.46, weight: 500, lineHeight: 1.0 }
|
|
33
|
+
tag-upper:{ fontFamily: "Inter", cqw: 1.35, weight: 500, tracking: "0.18em", upper: true }
|
|
34
|
+
kicker: { fontFamily: "JetBrains Mono", px: 28, cqw: 1.46, weight: 500, tracking: "0.16em", upper: true }
|
|
35
|
+
mono-label:{ fontFamily: "JetBrains Mono", px: 26, cqw: 1.35, weight: 500, tracking: "0.02em" }
|
|
36
|
+
code: { fontFamily: "JetBrains Mono", cqw: 1.67, weight: 400, lineHeight: 1.6 }
|
|
37
|
+
# — display ramp (EB Garamond 400, sentence case, negative tracking. Renderer embeds only 400/700 — author at 400; italic is the synthesized slant) —
|
|
38
|
+
headline:{ fontFamily: "EB Garamond", cqw: 4.6, weight: 400, lineHeight: 1.06, tracking: "-0.018em" }
|
|
39
|
+
quote-pull:{ fontFamily: "EB Garamond", cqw: 5.0, weight: 400, lineHeight: 1.12, tracking: "-0.012em", italic: true }
|
|
40
|
+
display-italic:{ fontFamily: "EB Garamond", cqw: 6.7, weight: 400, lineHeight: 1.05, tracking: "-0.012em", italic: true }
|
|
41
|
+
display:{ fontFamily: "EB Garamond", cqw: 7.3, weight: 400, lineHeight: 1.02, tracking: "-0.022em" }
|
|
42
|
+
number-hero:{ fontFamily: "EB Garamond", cqw: 9.4, weight: 400, lineHeight: 0.95, tracking: "-0.025em" }
|
|
43
|
+
display-cover:{ fontFamily: "EB Garamond", cqw: 9.9, weight: 400, lineHeight: 0.98, tracking: "-0.028em" }
|
|
44
|
+
number-unit:{ fontFamily: "JetBrains Mono", cqw: 2.08, weight: 500, lineHeight: 1.0 }
|
|
45
|
+
|
|
46
|
+
spacing:
|
|
47
|
+
slide-pad: "4.2cqw" # ~80px @1920
|
|
48
|
+
gap-md: "1.7cqw"
|
|
49
|
+
hairline: "1px"
|
|
50
|
+
radius-sm: "6px"
|
|
51
|
+
radius-md: "8px"
|
|
52
|
+
radius-lg: "12px"
|
|
53
|
+
radius-pill: "9999px"
|
|
54
|
+
|
|
55
|
+
components:
|
|
56
|
+
card-hairline:
|
|
57
|
+
backgroundColor: "{colors.cream} or {colors.tile}"
|
|
58
|
+
border: "1px solid {colors.ink}@12%"
|
|
59
|
+
rounded: "{spacing.radius-lg}"
|
|
60
|
+
shadow: "{shadows.card}"
|
|
61
|
+
typography: "{typography.card-title} + {typography.body}"
|
|
62
|
+
description: "The editorial content card. Elevation is the hairline + ONE soft warm shadow — never a heavy drop, glow, or gradient."
|
|
63
|
+
kicker-spike:
|
|
64
|
+
typography: "{typography.kicker}"
|
|
65
|
+
mark: "✱ coral spike prefix"
|
|
66
|
+
description: "The eyebrow — JetBrains Mono uppercase, indexical (2–5 words), prefixed with the coral ✱. Never plain text, never a sentence."
|
|
67
|
+
coral-callout:
|
|
68
|
+
backgroundColor: "{colors.coral} (full-bleed) or {colors.cream} with a coral edge"
|
|
69
|
+
textColor: "{colors.cream} on coral"
|
|
70
|
+
rounded: "{spacing.radius-md}"
|
|
71
|
+
typography: "{typography.button} / {typography.h2}"
|
|
72
|
+
description: "The ONE voltage moment per frame — the CTA, the single inline link, OR the full-bleed band. Never two corals in one frame."
|
|
73
|
+
number-lockup:
|
|
74
|
+
typography: "{typography.number-hero} figure + {typography.number-unit} unit"
|
|
75
|
+
description: "Hero stat — a EB Garamond figure paired with a JetBrains Mono unit (200K, +1,204, −318, 17 files). Figure is serif; the unit is ALWAYS mono, never the serif."
|
|
76
|
+
pull-quote:
|
|
77
|
+
typography: "{typography.quote-pull} (EB Garamond italic) + {typography.tag-upper} cite"
|
|
78
|
+
description: "A commit message, a reviewer line, or the thesis. EB Garamond italic, small Inter uppercase cite beneath."
|
|
79
|
+
section-rule:
|
|
80
|
+
rule: "1px solid {colors.ink}@12% (or {colors.cream}@14% on navy)"
|
|
81
|
+
description: "The only separator. A coral 1px rule may draw on to introduce a section. Never 2px+, never a heavy divider."
|
|
82
|
+
code-surface:
|
|
83
|
+
backgroundColor: "{colors.navy} body / {colors.navy-elev} title bar + status strip"
|
|
84
|
+
textColor: "{colors.cream} (JetBrains Mono); syntax in coral (keywords) / teal #5DB8A6 (strings) / amber #E8A55A (numbers)"
|
|
85
|
+
border: "1px solid {colors.cream}@14%"
|
|
86
|
+
rounded: "{spacing.radius-md}"
|
|
87
|
+
description: "The warm-navy code / terminal surface. The CODE ITSELF is rendered by the code-* registry blocks (code-diff / code-typing / code-snippet-*); this preset owns the surrounding surface, title bar, status strip, and mono chrome — not the code rendering."
|
|
88
|
+
spike-mark:
|
|
89
|
+
glyph: "✱ (U+2731), always {colors.coral}"
|
|
90
|
+
description: "The brand mark. Fades + scales 0.92→1 on a single emphasis beat; never spins."
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
# Claude — Frame (video / frame layer)
|
|
94
|
+
|
|
95
|
+
## Overview
|
|
96
|
+
|
|
97
|
+
Claude at frame scale is a **warm-editorial brand book come to life** — the register of a literary
|
|
98
|
+
imprint or a research note. The thesis is three colors: **cream is the ground, ink is the voice,
|
|
99
|
+
coral is the voltage** — and a fourth (warm navy) only where code shows itself. Every surface is
|
|
100
|
+
**warm cream** (never pure white, never cool gray); content gathers on a **tile** surface half a
|
|
101
|
+
step darker — the demarcation is a half-step, never a hard contrast. Elevation is a **1px hairline**
|
|
102
|
+
ink border at low alpha plus, rarely, one soft warm shadow. There are no heavy drops, no glows, no
|
|
103
|
+
gradients on content.
|
|
104
|
+
|
|
105
|
+
Three editorial voices, each in its own face: **EB Garamond** carries every display moment — covers,
|
|
106
|
+
headlines, pull-quotes, big stat numerals — at large display sizes with gentle negative tracking;
|
|
107
|
+
its **italic** is the expressive register. **Inter** carries body, leads, card titles, buttons, and
|
|
108
|
+
UI chrome. **JetBrains Mono** carries the indexical layer — kickers, technical labels, the code
|
|
109
|
+
window, status strips. Switching a voice's face collapses the register: a sans headline or a serif
|
|
110
|
+
label reads as a different brand.
|
|
111
|
+
|
|
112
|
+
**Key characteristics at frame scale:**
|
|
113
|
+
|
|
114
|
+
- **Cream / ink / coral trinity** + a warm-navy code surface; cream is the default ground, ink the voice, coral the scarce voltage.
|
|
115
|
+
- **EB Garamond** (sentence case, negative-tracked) for all display; **Inter** body/chrome; **JetBrains Mono** index + code.
|
|
116
|
+
- **Hairline elevation** — a 1px low-alpha ink border + at most one soft warm shadow. No heavy drop, glow, or gradient.
|
|
117
|
+
- **Coral is rationed** — at most ONE coral moment per frame (CTA, inline link, OR full-bleed band); coral never sets a headline or a body run.
|
|
118
|
+
- **Density is free** — fill the frame as the content wants; a frame may stand on a single focal or carry a dense, layered composition.
|
|
119
|
+
- **The ✱ coral spike** opens kickers; warm navy is reserved for the code/terminal surface.
|
|
120
|
+
|
|
121
|
+
## The Frame
|
|
122
|
+
|
|
123
|
+
### Frame Craft Bar
|
|
124
|
+
|
|
125
|
+
Eyeball tests gate every frame before any structural check:
|
|
126
|
+
|
|
127
|
+
- **Squint** — one EB Garamond display moment dominates at 3–6× its neighbor.
|
|
128
|
+
- **Trinity** — cream/tile ground, ink text, coral exactly **once**; warm navy only on the code surface; no cool gray / pure white / fourth hue.
|
|
129
|
+
- **Type** — EB Garamond sentence-case display (negative-tracked); Inter 400 body; JetBrains Mono kickers (uppercase 0.16em, coral ✱) + code.
|
|
130
|
+
|
|
131
|
+
- **Primary:** 1920×1080 (16:9). Display authored in **`cqw`** (`px ÷ 1920 × 100 = cqw`).
|
|
132
|
+
- **Vertical:** 1080×1920 (9:16). **Square:** 1080×1080 (1:1).
|
|
133
|
+
- **Safe area:** `slide-pad` ~4.2cqw; the kicker/mono chrome sit inside it.
|
|
134
|
+
|
|
135
|
+
**The container law (load-bearing).** Every frame ground sets `container-type: size`; ALL
|
|
136
|
+
frame-relative units are `cqw`/`cqh` against it — never `vw`. Hairlines stay 1px; card radii stay
|
|
137
|
+
6/8/12px; the warm-paper reading must survive every ratio.
|
|
138
|
+
|
|
139
|
+
## Colors
|
|
140
|
+
|
|
141
|
+
Tokens identical to the source. Default ground `{colors.cream}`; content gathers on
|
|
142
|
+
`{colors.tile}` / `{colors.tile-strong}` (half-step warm steps, never a hard contrast).
|
|
143
|
+
**Headlines & body:** `{colors.ink}` on cream/tile; `{colors.cream}` on navy. **Coral**
|
|
144
|
+
(`{colors.coral}`) is the scarce voltage — one moment per frame (CTA, inline link, or full-bleed
|
|
145
|
+
band), never body text, never a card fill. **Warm navy** (`{colors.navy}` / `navy-soft` /
|
|
146
|
+
`navy-elev`) is the code / terminal / dark-card surface — a structural anchor, not a fourth brand
|
|
147
|
+
hue. **No cool grays, no pure white, no pure black.**
|
|
148
|
+
|
|
149
|
+
**Fixed syntax colors (decoration, NOT remixable brand hues).** When a code line is hand-set rather
|
|
150
|
+
than rendered by a `code-*` block, keywords are coral, strings are **teal `#5DB8A6`**, numbers are
|
|
151
|
+
**amber `#E8A55A`**; status reads success `#5DB872` / warn `#C64545`. These track the code surface,
|
|
152
|
+
not the brand trinity — keep them out of the brand palette.
|
|
153
|
+
|
|
154
|
+
## Typography
|
|
155
|
+
|
|
156
|
+
Two ramps. The **reading/chrome ramp** (Inter `body` 1.5cqw / `lead` 2.08cqw weight 400; JetBrains
|
|
157
|
+
Mono `kicker`/`mono-label` in px) carries copy + chrome; the **display ramp** (EB Garamond `headline` 4.6cqw
|
|
158
|
+
→ `display-cover` 9.9cqw, weight 400, negative-tracked) carries every headline + stat.
|
|
159
|
+
|
|
160
|
+
- **Legibility floor:** any load-bearing line ≥ **1.4cqw**; mono px labels are chrome only.
|
|
161
|
+
- **Fit-to-measure:** size the headline to its length. Cap the block at **≤ 78cqw**; ≤3 words → `display-cover`; 4–6 → `display`; 7+ → `headline`. Reserve the 7.3–9.9cqw tier for cover / statement / stat.
|
|
162
|
+
- **EB Garamond display is sentence case** (NOT title case, NOT uppercase), weight 400, negative-tracked (−0.012..−0.028em); reach for **italic** when the line is a stance or a definition. **Inter body** sentence case weight 400. **JetBrains Mono** kickers UPPERCASE 0.16em with the coral ✱. No uppercase serif, no sans headline, no serif label.
|
|
163
|
+
|
|
164
|
+
## Depth & Surface
|
|
165
|
+
|
|
166
|
+
Hairline elevation:
|
|
167
|
+
|
|
168
|
+
- **1px hairline** ink border at ~12% alpha is the primary lift (cream@14% on navy).
|
|
169
|
+
- **One soft warm shadow** (`0 1px 3px ink@8%, 0 4px 16px ink@4%`) — used rarely, never heavy.
|
|
170
|
+
- **Half-step surface** — a `{colors.tile}` block on cream reads elevated by the warm step, not by a cast shadow.
|
|
171
|
+
|
|
172
|
+
**Ceiling:** no heavy drop shadow, no glow, no gradient on content, no tilt. The system has no light
|
|
173
|
+
to emit; it reads by warmth and hairline.
|
|
174
|
+
|
|
175
|
+
## Shapes
|
|
176
|
+
|
|
177
|
+
- **6px** small chrome, **8px** cards / code surface, **12px** large cards / quote frames, **9999px** true pills only. No square corners, no heavy rounding; the editorial register is gently rounded, never hard.
|
|
178
|
+
|
|
179
|
+
## Components
|
|
180
|
+
|
|
181
|
+
- **card-hairline** — the editorial content card (hairline + one soft shadow). **section-rule** — the only separator (1px, coral may draw on).
|
|
182
|
+
- **kicker-spike** — the ✱ coral eyebrow. **coral-callout** — the one voltage moment (CTA / inline link / full-bleed band).
|
|
183
|
+
- **number-lockup** — EB Garamond figure + mono unit (the PR `+N / −M`, `200K`, file counts). **pull-quote** — EB Garamond italic + cite (a commit message / reviewer line).
|
|
184
|
+
- **code-surface** — the warm-navy code / terminal surface; the code itself comes from the **`code-*` registry blocks**, this owns the surface + mono chrome.
|
|
185
|
+
- **spike-mark** — the ✱ brand glyph, always coral.
|
|
186
|
+
|
|
187
|
+
## Frame Treatments
|
|
188
|
+
|
|
189
|
+
> Recipe: ground · container · composes · focal · chrome · accent · Fixed/Free · density.
|
|
190
|
+
> One coral moment per frame; open with a kicker-spike.
|
|
191
|
+
|
|
192
|
+
### 1 · Cover (identity · move: oversized EB Garamond · cream)
|
|
193
|
+
|
|
194
|
+
**Ground** `{colors.cream}`, `slide-pad`. **Composes** kicker-spike, display-cover, lead, mono-label index. **Focal** a 2–3 line EB Garamond `display-cover` (sentence case, ink) under a coral ✱ kicker. **Chrome** mono index strip (repo · branch). **Accent** the single coral ✱. **Fixed** EB Garamond 400 sentence case, hairline, cream ground. **Free** title, the mono index, layout + how full the frame runs. **Density** free.
|
|
195
|
+
|
|
196
|
+
### 2 · Statement (statement · move: single EB Garamond line · cream or navy)
|
|
197
|
+
|
|
198
|
+
**Ground** `{colors.cream}` (or `{colors.navy}` for gravity). **Composes** kicker-spike, display, optional lead. **Focal** one 2-line EB Garamond `display` carrying the change in a sentence — reach for **italic** if it's a stance. **Chrome** mono kicker. **Accent** none — the serif carries it (or one coral word). **Fixed** sentence-case serif. **Free** the line, ground, layout + density. **Density** free.
|
|
199
|
+
|
|
200
|
+
### 3 · Code Surface (code · move: warm-navy code window · the PR-critical frame)
|
|
201
|
+
|
|
202
|
+
**Ground** `{colors.cream}` framing a `{colors.navy}` **code-surface** (8px, cream@14% hairline, `navy-elev` title bar + filename in mono). **Composes** mono-label filename, the **`code-*` block** (code-diff / code-typing / code-snippet-_), optional `section-rule`. **Focal** the code panel — the diff / before→after / typed-on snippet. **Chrome** mono filename + status strip. **Accent** syntax coral/teal/amber inside the panel; one coral marker outside (e.g. a `+`/`−` gutter cue). **Fixed** warm-navy surface, mono code, hairline. **Free** which code-_ block, the code (from the diff), how large the panel runs. **Density** dense.
|
|
203
|
+
|
|
204
|
+
### 4 · Number / Impact (data · move: oversized figure · cream)
|
|
205
|
+
|
|
206
|
+
**Ground** `{colors.cream}`, `slide-pad`. **Composes** kicker-spike, number-lockup, lead/caption, optional `section-rule`. **Focal** a EB Garamond `number-hero` figure with a mono unit over a 1px rule — the PR impact (`+1,204 / −318`, `17 files`, `2.1× faster`). **Chrome** mono tag. **Accent** the figure in ink; at most one coral unit. **Fixed** serif figure + mono unit, hairline rule. **Free** the figures (from the script), tag, layout + density. **Density** free.
|
|
207
|
+
|
|
208
|
+
### 5 · Pull-quote (quote · move: EB Garamond italic · cream)
|
|
209
|
+
|
|
210
|
+
**Ground** `{colors.cream}`. **Composes** kicker-spike, pull-quote, tag-upper cite. **Focal** a EB Garamond **italic** `quote-pull` — a commit message, a reviewer line, or the thesis — with a small Inter uppercase cite (author · role) beneath. **Chrome** mono kicker. **Accent** none, or one coral mark. **Fixed** EB Garamond italic quote + uppercase cite. **Free** quote, attribution, layout + density. **Density** free.
|
|
211
|
+
|
|
212
|
+
### 6 · Closing / CTA (closer · move: coral voltage · cream or navy)
|
|
213
|
+
|
|
214
|
+
**Ground** `{colors.cream}` (or `{colors.navy}`). **Composes** display sign-off, coral-callout, optional contributor row (`assets/<login>.png` avatars + mono names). **Focal** a short EB Garamond sign-off with the one **coral-callout** (the CTA or full-bleed band) and, for a "shipped-by" close, a row of hairline-ringed avatar chips. **Chrome** mono index. **Accent** the single coral voltage. **Fixed** one coral moment, hairline avatar rings, sentence-case serif. **Free** sign-off, who ships, layout + density. **Density** free.
|
|
215
|
+
|
|
216
|
+
## Composition Rules
|
|
217
|
+
|
|
218
|
+
### Do
|
|
219
|
+
|
|
220
|
+
- Stand every frame on the **warm cream floor**; gather content on a **half-step tile** surface.
|
|
221
|
+
- Set all display in **EB Garamond, sentence case**, negative-tracked; **Inter 400** body; **JetBrains Mono** kickers (uppercase, 0.16em, coral ✱) + code.
|
|
222
|
+
- Ration **coral to one moment per frame** — CTA, inline link, OR full-bleed band.
|
|
223
|
+
- Elevate with a **1px hairline** + at most one soft warm shadow; reserve **warm navy** for the code/terminal surface.
|
|
224
|
+
- Lead with **one clear focal**; open regions with a **kicker-spike**. Fill the frame as the content wants.
|
|
225
|
+
- Pair a EB Garamond figure with a **mono unit** for every stat; render code via the **`code-*` blocks** on the navy surface.
|
|
226
|
+
|
|
227
|
+
### Don't
|
|
228
|
+
|
|
229
|
+
- No pure white, no cool gray, no pure black; no fourth brand hue (navy is structural, syntax colors are decoration).
|
|
230
|
+
- No heavy drop shadow, glow, gradient on content, or tilt — hairline elevation only.
|
|
231
|
+
- No uppercase or title-case EB Garamond display; no sans headline; no serif label; no serif-set numeric unit.
|
|
232
|
+
- No two coral moments in one frame; coral never sets a headline or body run.
|
|
233
|
+
- Don't blow a headline past the measure — step the ramp down.
|
|
234
|
+
|
|
235
|
+
## Aspect-Ratio Behavior
|
|
236
|
+
|
|
237
|
+
| Treatment | 16:9 | 9:16 | 1:1 |
|
|
238
|
+
| ------------- | ----------------------- | --------------------------- | ---------------------- |
|
|
239
|
+
| Cover | display left, index top | display top, index below | display, index corner |
|
|
240
|
+
| Statement | line left/centered | line stacked | centered |
|
|
241
|
+
| Code Surface | panel framed in cream | panel taller, fewer lines | panel centered, square |
|
|
242
|
+
| Number/Impact | figure left | figure centered, taller | centered |
|
|
243
|
+
| Pull-quote | quote left | quote stacked | centered |
|
|
244
|
+
| Closing/CTA | sign-off + avatar row | sign-off top, avatars below | centered, avatars wrap |
|
|
245
|
+
|
|
246
|
+
`slide-pad` holds on the short edge; re-step display above the 1.4cqw floor. The code surface keeps
|
|
247
|
+
its hairline + mono chrome on every ratio; the avatar row wraps rather than shrinks below legibility.
|
|
248
|
+
|
|
249
|
+
## Approved Real Entities
|
|
250
|
+
|
|
251
|
+
No real customers, logos, or vendors are defined in the source — render any such mark as a
|
|
252
|
+
placeholder. Contributor avatars come from the project's `assets/<login>.png` (staged from the PR's
|
|
253
|
+
people graph); the ✱ spike, hairlines, and the code surface are CSS-only and need no external imagery.
|
|
254
|
+
|
|
255
|
+
## Numerals & Claims (hard rule)
|
|
256
|
+
|
|
257
|
+
Never invent figures, stats, diffs, or counts at frame scale. Render slots as `— figure —`,
|
|
258
|
+
`{metric}`, `+N / −M`. Number-lockups, code panels, and impact stats carry placeholders until the
|
|
259
|
+
script (from the PR ingest) supplies real values. Branch names, file counts, and `+/−` totals trace
|
|
260
|
+
to the diff; commit/issue numbers are chrome.
|
|
261
|
+
|
|
262
|
+
## Pre-Render Self-Audit
|
|
263
|
+
|
|
264
|
+
- **Squint** — one EB Garamond display moment dominates.
|
|
265
|
+
- **Trinity** — cream floor + tile step + ink voice; coral appears exactly once; warm navy only on the code surface; no cool gray / pure white / fourth hue.
|
|
266
|
+
- **Type** — EB Garamond sentence-case display (negative-tracked); Inter 400 body; JetBrains Mono kickers (uppercase 0.16em, coral ✱) + code; ≥1.4cqw floor.
|
|
267
|
+
- **Depth** — 1px hairline + at most one soft warm shadow; no heavy drop / glow / gradient / tilt; 6/8/12px radii.
|
|
268
|
+
- **Code** — code rendered by a `code-*` block on the warm-navy surface; syntax coral/teal/amber; figures paired with a mono unit.
|
|
269
|
+
- **Fabrication** — every numeral / diff traces to the PR, else placeholder.
|
|
270
|
+
|
|
271
|
+
## Known Gaps
|
|
272
|
+
|
|
273
|
+
- **Motion intentionally out of scope.** frame.md specifies composition only. Claude's motion register — short cross-dissolves, no overshoot/bounce/elastic, coral the only "draw-on", numbers count up, code types on line by line — lives in the workflow's `motion-language.md` + `hyperframes-animation`, not here.
|
|
274
|
+
- **EB Garamond + Inter + JetBrains Mono are all bundled in the HyperFrames renderer (`@fontsource` embedded data) — they resolve offline by name, with no Google Fonts dependency.** This is deliberate: every face here renders deterministically on a clean machine or AWS Lambda, so a frame needs no captured `.woff2` or `@font-face` for these three. The embedded set ships **weights 400 + 700 only and no true italic** — so author display at **weight 400** (700 reads as a heavy bold, off-register), and treat italic as the browser-synthesized slant (acceptable for the pull-quote register; ship a real EB Garamond italic `.woff2` + `@font-face` only if a project leans hard on it). EB Garamond is a warm old-style serif (low contrast, humanist); if it ever fails, fall to Georgia or another old-style serif — never to a sans. CJK: Noto Serif SC (display) / Noto Sans SC (body) / Noto Sans Mono CJK (code); the sentence-case warmth carries when the serif drops.
|
|
275
|
+
- **Syntax colors (teal `#5DB8A6` / amber `#E8A55A` / status) are fixed decoration**, declared in §Colors — they are NOT in the remixable `colors:` block, so a brand remix never repaints them.
|
|
276
|
+
- **The code itself is the `code-*` registry blocks**, not this preset — this preset owns only the surrounding warm-navy surface + mono chrome.
|
|
277
|
+
- **9:16 / 1:1 are guidance**; verify the legibility floor and that the cream/tile warmth + one-coral discipline hold per ratio.
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Claude — caption skin (preset-local source).
|
|
3
|
+
|
|
4
|
+
This is the preset's own lower-third karaoke caption look. product-launch-video's
|
|
5
|
+
(and pr-to-video's) Step 2 copies it into the project as caption-skin.html;
|
|
6
|
+
captions.mjs then fills the three reserved holes, wraps the fragment in a
|
|
7
|
+
<template>, and writes 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 claude 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 warm cream card lifted off the page on a 1px hairline ink border + one soft
|
|
23
|
+
warm shadow — claude's only elevation language, no tilt, editorial and precise.
|
|
24
|
+
EB Garamond sentence case, warm-ink glyphs. Upcoming words sit in faint ink; the current
|
|
25
|
+
word reads in full ink under a 3px coral "voltage" underline (the brand's inline-link
|
|
26
|
+
gesture, border-bottom = underline without layout shift); spoken words settle to solid
|
|
27
|
+
ink, underline 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 lifted cream card — warm cream fill, 1px hairline ink border, one soft warm
|
|
69
|
+
shadow (claude's only elevation language), 12px radius, no tilt */
|
|
70
|
+
.caption-pill {
|
|
71
|
+
max-width: 78%;
|
|
72
|
+
padding: 22px 44px 26px;
|
|
73
|
+
background: var(--cap-canvas, #faf9f5);
|
|
74
|
+
border: 1px solid color-mix(in srgb, var(--cap-ink, #141413) 12%, transparent);
|
|
75
|
+
border-radius: 12px;
|
|
76
|
+
box-shadow:
|
|
77
|
+
0 1px 3px color-mix(in srgb, var(--cap-ink, #141413) 8%, transparent),
|
|
78
|
+
0 4px 16px color-mix(in srgb, var(--cap-ink, #141413) 4%, transparent);
|
|
79
|
+
}
|
|
80
|
+
.caption-line {
|
|
81
|
+
display: flex;
|
|
82
|
+
flex-wrap: wrap;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
gap: 0.12em 0.3em;
|
|
85
|
+
font-family: var(--font-display, "EB Garamond"), Georgia, serif;
|
|
86
|
+
font-weight: 500;
|
|
87
|
+
font-size: clamp(40px, 4.4vw, 56px);
|
|
88
|
+
line-height: 1.24;
|
|
89
|
+
letter-spacing: -0.02em;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* upcoming — faint warm ink, no underline */
|
|
93
|
+
.caption-word {
|
|
94
|
+
display: inline-block;
|
|
95
|
+
padding: 0 0.02em 0.06em;
|
|
96
|
+
color: color-mix(in srgb, var(--cap-ink, #141413) 40%, var(--cap-canvas, #faf9f5));
|
|
97
|
+
border-bottom: 3px solid transparent;
|
|
98
|
+
}
|
|
99
|
+
/* current word — full ink under the coral voltage underline (the brand's signature
|
|
100
|
+
inline-link gesture; border-bottom = underline without layout shift) */
|
|
101
|
+
.caption-word.is-active {
|
|
102
|
+
color: var(--cap-ink, #141413);
|
|
103
|
+
border-bottom: 3px solid var(--cap-accent, #cc785c);
|
|
104
|
+
}
|
|
105
|
+
/* already spoken — solid warm ink, underline cleared */
|
|
106
|
+
.caption-word.is-spoken {
|
|
107
|
+
color: var(--cap-ink, #141413);
|
|
108
|
+
border-bottom: 3px solid transparent;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* optional per-word accents (dormant until a word-classer tags them) */
|
|
112
|
+
/* brand / key term — the expressive EB Garamond italic */
|
|
113
|
+
.caption-word.cap-brand {
|
|
114
|
+
font-style: italic;
|
|
115
|
+
color: var(--cap-ink, #141413);
|
|
116
|
+
}
|
|
117
|
+
.caption-word.cap-brand.is-active {
|
|
118
|
+
border-bottom: 3px solid var(--cap-accent, #cc785c);
|
|
119
|
+
}
|
|
120
|
+
/* numerals / data — slightly recessed warm ink */
|
|
121
|
+
.caption-word.cap-num {
|
|
122
|
+
color: color-mix(in srgb, var(--cap-ink, #141413) 72%, var(--cap-canvas, #faf9f5));
|
|
123
|
+
}
|
|
124
|
+
/* emphasis — a persistent coral voltage underline */
|
|
125
|
+
.caption-word.cap-cta {
|
|
126
|
+
border-bottom: 3px solid var(--cap-accent-2, #b5654a);
|
|
127
|
+
color: var(--cap-ink, #141413);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@media (max-aspect-ratio: 9/16) {
|
|
131
|
+
.caption-pill {
|
|
132
|
+
max-width: 92%;
|
|
133
|
+
}
|
|
134
|
+
.caption-line {
|
|
135
|
+
font-size: clamp(34px, 5.4vw, 46px);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
</style>
|
|
139
|
+
|
|
140
|
+
<div
|
|
141
|
+
id="captions-root"
|
|
142
|
+
data-composition-id="captions"
|
|
143
|
+
data-timeline-locked
|
|
144
|
+
data-start="0"
|
|
145
|
+
data-duration="0"
|
|
146
|
+
data-fps="30"
|
|
147
|
+
data-width="0"
|
|
148
|
+
data-height="0"
|
|
149
|
+
>
|
|
150
|
+
<div class="caption-layer" aria-hidden="true">
|
|
151
|
+
<div id="caption-stage" class="caption-stage"></div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
<script>
|
|
156
|
+
// captions.mjs injects the engine's scene-aware groups + real duration here.
|
|
157
|
+
var GROUPS = [];
|
|
158
|
+
var DURATION = 0;
|
|
159
|
+
|
|
160
|
+
(function () {
|
|
161
|
+
var stage = document.getElementById("caption-stage");
|
|
162
|
+
|
|
163
|
+
// build DOM: one .caption-group per group, .caption-word per word
|
|
164
|
+
GROUPS.forEach(function (group, g) {
|
|
165
|
+
var groupEl = document.createElement("div");
|
|
166
|
+
groupEl.className = "caption-group";
|
|
167
|
+
groupEl.id = "caption-group-" + g;
|
|
168
|
+
var pill = document.createElement("div");
|
|
169
|
+
pill.className = "caption-pill";
|
|
170
|
+
var line = document.createElement("div");
|
|
171
|
+
line.className = "caption-line";
|
|
172
|
+
(group.words || []).forEach(function (w, i) {
|
|
173
|
+
var span = document.createElement("span");
|
|
174
|
+
span.className = "caption-word";
|
|
175
|
+
span.id = "caption-word-" + g + "-" + i;
|
|
176
|
+
span.textContent = String(w.text);
|
|
177
|
+
line.appendChild(span);
|
|
178
|
+
});
|
|
179
|
+
pill.appendChild(line);
|
|
180
|
+
groupEl.appendChild(pill);
|
|
181
|
+
stage.appendChild(groupEl);
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
window.__timelines = window.__timelines || {};
|
|
185
|
+
var tl = gsap.timeline({ paused: true });
|
|
186
|
+
|
|
187
|
+
GROUPS.forEach(function (group, g) {
|
|
188
|
+
var groupEl = document.getElementById("caption-group-" + g);
|
|
189
|
+
var words = group.words || [];
|
|
190
|
+
var next = GROUPS[g + 1];
|
|
191
|
+
var isLast = g === GROUPS.length - 1;
|
|
192
|
+
var start = Math.max(0, Number(group.start));
|
|
193
|
+
var end = isLast ? DURATION : Math.min(Number(next.start), Number(group.end) + 0.3);
|
|
194
|
+
if (end <= start) end = start + 0.01;
|
|
195
|
+
|
|
196
|
+
// group on/off — exactly one group visible at a time
|
|
197
|
+
tl.set(groupEl, { opacity: 1 }, start);
|
|
198
|
+
tl.set(groupEl, { opacity: 0 }, end);
|
|
199
|
+
|
|
200
|
+
// 3-state karaoke via className SETS — seek-safe (gsap.set applies on the
|
|
201
|
+
// engine's frame-by-frame seek; .call callbacks would NOT fire).
|
|
202
|
+
words.forEach(function (w, i) {
|
|
203
|
+
var el = document.getElementById("caption-word-" + g + "-" + i);
|
|
204
|
+
var at = Math.max(start, Number(w.start));
|
|
205
|
+
tl.set(el, { className: "caption-word" }, start); // upcoming (also resets on reverse-seek)
|
|
206
|
+
tl.set(el, { className: "caption-word is-active" }, at); // current
|
|
207
|
+
tl.fromTo(el, { scale: 0.98 }, { scale: 1, duration: 0.16, ease: "power1.out" }, at);
|
|
208
|
+
if (i + 1 < words.length) {
|
|
209
|
+
var nextAt = Math.max(start, Number(words[i + 1].start));
|
|
210
|
+
tl.set(el, { className: "caption-word is-spoken" }, nextAt); // demote when next activates
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
if (words.length) {
|
|
214
|
+
var lastEl = document.getElementById("caption-word-" + g + "-" + (words.length - 1));
|
|
215
|
+
var lastSpoken = Math.min(end, Number(words[words.length - 1].end) + 0.1);
|
|
216
|
+
tl.set(lastEl, { className: "caption-word is-spoken" }, lastSpoken);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
// full-span anchor so the sub-comp timeline spans the whole video
|
|
221
|
+
tl.to({}, { duration: DURATION }, 0);
|
|
222
|
+
window.__timelines["captions"] = tl;
|
|
223
|
+
})();
|
|
224
|
+
</script>
|