chore: import upstream snapshot with attribution
regression / regression-shards (style-16-prod style-9-prod style-17-prod iframe-render-compat variables-prod mp4-h265-sdr, shard-4) (push) Has been cancelled
regression / regression-shards (style-4-prod style-11-prod style-2-prod animejs-adapter typegpu-adapter parallel-capture-regression, shard-5) (push) Has been cancelled
regression / regression-shards (style-7-prod style-8-prod style-10-prod css-spinner-render-compat webm-transparency mp4-h264-sdr webm-vp9, shard-3) (push) Has been cancelled
regression / regression-shards (sub-composition-video style-18-prod raf-ball-render-compat font-variant-numeric sub-comp-t0 sub-comp-id-selector, shard-7) (push) Has been cancelled
Windows render verification / Detect changes (push) Has been cancelled
Windows render verification / Preflight (lint + format) (push) Has been cancelled
Windows render verification / Render on windows-latest (push) Has been cancelled
Windows render verification / Tests on windows-latest (push) Has been cancelled
CI / Detect changes (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Fallow audit (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Producer: integration tests (push) Has been cancelled
CI / Producer: unit tests (push) Has been cancelled
CI / File size check (push) Has been cancelled
CI / Test: skills (push) Has been cancelled
CI / Skills: manifest in sync (push) Has been cancelled
CI / CLI: npx shim (macos-latest) (push) Has been cancelled
CI / CLI: npx shim (ubuntu-latest) (push) Has been cancelled
CI / CLI: npx shim (windows-latest) (push) Has been cancelled
CI / SDK: unit + contract + smoke (push) Has been cancelled
CI / Test: runtime contract (push) Has been cancelled
CI / Studio: load smoke (push) Has been cancelled
CI / Smoke: global install (push) Has been cancelled
CI / CLI smoke (required) (push) Has been cancelled
CI / Semantic PR title (push) Has been cancelled
Player perf / Detect changes (push) Has been cancelled
Player perf / Preflight (lint + format) (push) Has been cancelled
Player perf / player-perf (push) Has been cancelled
Player perf / Perf: drift (push) Has been cancelled
Player perf / Perf: fps (push) Has been cancelled
Player perf / Perf: parity (push) Has been cancelled
Player perf / Perf: scrub (push) Has been cancelled
Player perf / Perf: load (push) Has been cancelled
preview-regression / Detect changes (push) Has been cancelled
preview-regression / Preflight (lint + format) (push) Has been cancelled
preview-regression / Preview parity (push) Has been cancelled
preview-regression / preview-regression (push) Has been cancelled
regression / regression (push) Has been cancelled
regression / Detect changes (push) Has been cancelled
regression / Preflight (lint + format) (push) Has been cancelled
regression / regression-shards (hdr-regression style-5-prod style-3-prod mov-prores, shard-1) (push) Has been cancelled
regression / regression-shards (overlay-montage-prod style-12-prod chat missing-host-comp-id png-sequence portrait-edge-bleed, shard-6) (push) Has been cancelled
regression / regression-shards (style-13-prod style-6-prod vignelli-stacking gsap-letters-render-compat audio-mux-parity, shard-8) (push) Has been cancelled
regression / regression-shards (style-15-prod hdr-hlg-regression style-1-prod many-cuts vfr-screen-recording render-symlinked-assets, shard-2) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Docs / Validate docs (push) Has been cancelled
Sync skills to ClawHub / Publish changed skills (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 12:58:35 +08:00
commit 85453da49f
4031 changed files with 710987 additions and 0 deletions
+148
View File
@@ -0,0 +1,148 @@
# DNA registry — pick a visual language, not a preset
A **DNA** is a complete, art-directed visual language: typeface, palette logic, motion
grammar, and hero orchestration. It **parameterizes per scene** instead of shipping a
fixed look: the accent color is sampled from THIS scene, the contact shadow falls along
THIS scene's light, embed text blur matches THIS scene's depth-of-field, and the hero's
entrance amplitude follows how hard the word was actually spoken (RMS).
This replaces the template grab-bag. Six deep languages × scene adaptation beats 54
shallow presets — every render is already fitted to its footage.
## Category lock (deliveries field, enforced by the compilers)
Every classic DNA's **home is Cinematic (column)** — that is where all ten were
built and validated. (Standard/rail mode was retired 2026-06-12; the verbatim-rail
need is served by the `anchor` theme. The old rail combos live in
`~/Downloads/embedded-captions-archive/`.)
## The ten
| DNA | Register | Scene fit | Voice |
| --------------- | -------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **cream** | premium-warm | dark / mid warm scenes (band luma < 150) | Inter, warm cream, screen blend, glowing emergence hero. The poetic default. |
| **ink** | premium | **bright scenes (band luma > 150)** | Inter, near-black, multiply blend — type reads as _printed on_ the wall. Fixes the bright-scene hole. |
| **editorial** | editorial-luxe | introspective / fashion / poetic, mid-dark | Bodoni Moda, bone, _lowercase italic hero_ — magazine elegance over shout. |
| **keynote** | tech-premium | product / launch / founder updates | Inter 800, opaque white, line-wipe reveals, hero wipes UP. Stillness = confidence. |
| **documentary** | formal | interviews, serious subject matter | Inter, bone, **burn-in reveals**, no hero. Gravitas IS the style. |
| **loud** | loud | hype / sport / music / social | Anton, scene-sampled accent hero, single-unit slam + caption-layer ripple; **body announces in front** (`bodyLayer: "fg"` — k-pop depth, deliberate). |
| **neon** | loud-cyber | cyberpunk / nightlife / tech-noir (dark scenes) | Orbitron + electric cyan; words flicker-ignite like tubes; the hero **powers ON** with a strobe and hums (glow 0.5). |
| **glitch** | loud-cyber | digital / hacker / AI / dystopia | Space Grotesk; **RGB-split echo layers converge** as each beat lands; 0.100.12s machine percussion; landing bumps co-visible captions 2px. |
| **chrome** | loud-luxe | Y2K / fashion-tech / music | Audiowide cast in a **liquid-metal gradient** (background-clip:text on the word spans); one sheen sweep crosses the hero during the hold. |
| **velocity** | loud-sport | sport / automotive / fitness | Teko italic; every word arrives **along its motion vector** (streak + skew settling upright); the hero passes through with blurred speed-trail echoes and looms while held. |
### fx fields (hero block) the engine understands
`entrance: emergence | settle | slam | rise | wipe-up | flicker-on | streak` ·
`glow` (00.5) · `echoes: [{dx,dy,color,opacity,blur}]` (converge-on-land duplicates) ·
`sheen: true` (gradient sweep — pair with `wordCss` background-clip) · `wordCss`
(per-word treatment; required for background-clip:text, which can't clip through
composited children) · `ripple` (px — landing bump, captions only) · `loom` / `breathe`
(hold-life) · `letterBlur` · `bodyLayer` (top-level: default layer for narration lines).
## How to pick (agent)
1. Read `safe-zones.json``heroAnchor.bandLuma` + `palette.temperature`.
2. Bright band (>150) → **ink** (never fight a bright scene with cream/screen).
3. Else pick by content register: poetic/warm → **cream** · introspective/luxe →
**editorial** · product/tech → **keynote** · serious/interview → **documentary** ·
hype/social → **loud**.
4. State the pick + why in one line; the user decides (SKILL.md Step 0 still applies).
## Authoring
- Cinematic mode: `cinematic.json``"dna": "<name>"` (drop the `template` field).
- Locked per DNA: family, palette scheme, blend, motion curves, hero orchestration.
- Open per group (unchanged): size / weight / style / case / spacing + planes.
- `var(--accent)` is available in per-group CSS — it resolves to the scene-sampled accent.
## What the engine generates from the DNA (no authoring needed)
- **Hero three-act**: co-visible captions dim 0.35s before the hero lands (setup) →
entrance with per-letter stagger, amplitude ∝ spoken loudness (impact) → slow breathe
- glow until exit (afterglow).
- **Scene optics**: depth-match blur on embed captions, light-direction contact shadow.
- All deterministic — measured from files, no randomness.
## Climax selection — what earns the promotion
Pick the **payoff, not the topic**: the words you would quote when paraphrasing the
beat. "The stars were only limited by the pixel size" — the payoff is **pixel size**
(the surprising claim), not "stars" (the subject). Test: would the word alone, big on
screen, make the listener nod? A topic word makes them wait.
- **Phrases are legal** (`match: "pixel size"` / `"skin food"`): a peak is a semantic
unit, not necessarily one token. 24 words max — beyond that it's a sentence, not a
peak.
- **Prefer clause-final** — nothing left dangling to place after the lift.
- **Never strand a determiner**: lifting "stars" out of "The stars…" leaves an orphan
"The" that vanishes mid-air. The compiler auto-absorbs a line-leading article into
the promoted phrase; mid-line, match the phrase including its article.
- Sizes are TARGETED by the compiler, not just floored — author sizes are hints:
- **apex = frame event**: under 88% of usable width → raised toward a 93% fill.
Std height cap = `sizeRange[1] × 1.25` (≤46cqh; formal register ×1.0) — a std apex
bursts a rail, not a body composition. Cinematic cap = `sizeRange[1]`.
- **short words fill with TRACKING**: when the height cap binds before the width
target (SHINE — 5 glyphs), the compiler letterspaces up to +0.32em until the word
owns ~88% of the width (film-title craft: HER / DUNE). Long words fill by scale,
short words by air — impact is WIDTH-led either way.
- **minor = damped beat in the apex family**: `max(3× rail, 0.55× apex-final)`,
width-capped. A peak that reads as a label is a bug.
- **lockup context is RATIO-LOCKED**: kicker/tail = `0.26× hero` (clamped
0.050.085·h), recomputed after any width-fit raise. Don't hand-tune context
sizes — size the hero; the context follows like a poster system.
## Climax placement — the lockup is the default, NOT the only composition
A hero line takes `"placement": "subject" | "column"`:
- **subject** (default) — the **ORBIT lockup** centered ON the subject. NOT a centered
sandwich: context anchors to the hero's EDGES like a poster kicker/tagline —
pre-context flush-left off the hero's top-left corner, post-context flush-right off
its bottom-right — so the small lines land BESIDE the head/shoulder (on the scene),
never on the face, and therefore EMBED (bg) like everything else. The eye reads a
diagonal: kicker ↘ HERO ↘ tail. Only the hero crosses the silhouette (the
matte-occlusion showcase). The context's job is reading continuity — it gets the
margins; the hero's job is the cinematic event — it gets the subject. Right when the
peak is THE dramatic moment: cream / loud / glitch / neon / velocity lean here.
- **column** — the apex stays IN its column's reading flow and BURSTS it (oversized,
full hero motion + dim/glow privileges, but composed within the sentence's home
zone; spills toward the subject naturally when oversized). Right when the content
is a continuous read and the column is the narrative's home: keynotes, tutorials,
explainers, documentary. Registers: keynote / documentary / editorial lean here.
Applying ONE composition to every peak is monoculture — the same failure the motion
review caught. Pick per beat: a 15s explainer might run column peaks throughout and
save the subject lockup for the single apex. (A third pattern — the editorial split,
bg context upper + fg hero lower-third — lives in references/composition-craft.md and
is the next placement candidate.)
## The motion language (five layers, each DNA answers all five)
A DNA's animation is not a parameter tweak on a shared fade — it's a distinct physics:
| Layer | What it governs | Where it lives |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------- |
| **word entrance** | how each word materializes on its beat ({y,x,blur,scale,rot,dur,ease} or burn) | `motion.soft/present/impact` |
| **line exit** | direction + speed of leaving, optional top-to-bottom cascade | `motion.exit` ({dur,y,x,scale,ease,stagger}) |
| **hold-life** | what text does while on screen — stillness is a deliberate choice | `hero.breathe` / `hero.loom` (0 = print-still) |
| **hero orchestration** | the three-act entrance signature (emergence / settle / slam / rise / **wipe-up**) + glow / letterBlur / **ripple** | `hero.*` |
| **timing physics** | the duration & easing register everything obeys (percussive 0.15s ↔ atmospheric 0.6s) | implied by the values above — keep one family per DNA |
Shipped signatures: cream = _light condenses_ (blur-settle, drift-up exits) · ink =
_letterpress_ (scale-press, no float, dead-still) · editorial = _the pen glides_
(x-glide with the italic, cascade-out page turns) · keynote = _surgical reveal_
(burn words + line wipe + hero wipe-up, exits never move) · documentary = _burn and
hold_ (motion's absence IS the language) · loud = _percussion_ (back-eased punches,
alternating tilt, hero ripple that bumps every caption — never the footage).
Rules inherited from hyperframes motion-principles: exits faster than entrances; vary
ease families BETWEEN DNAs (not within one); `.out` enters, `.in` leaves; never two
transform tweens on one element in the same window (wipe-up is clip-path so the
afterglow scale channel stays free; loom subsumes breathe).
## Adding a DNA
Copy an existing `dna/<name>.json`, change the voice, keep the schema. The engine
(`modes/cinematic/engine.html`) and both compilers consume it as-is. A DNA earns its
place by being a _distinct voice with a reason to exist_ — not a recolor.
+68
View File
@@ -0,0 +1,68 @@
{
"name": "chrome",
"title": "Chrome — Y2K liquid metal",
"register": "loud-luxe",
"when": "fashion-tech, music, Y2K-revival, product-flex content. The hero is cast in liquid metal — a gradient sheen sweeps across it once during the hold. Supporting lines stay cool steel.",
"font": {
"family": "Audiowide",
"weights": [400]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#e8edf2",
"blend": "normal",
"accent": "#9fb6cc",
"accent_fallback": "#9fb6cc"
},
"optics": {
"depthMatch": true,
"contactShadow": true,
"warmBloom": false
},
"filter": "none",
"motion": {
"soft": {
"y": 6,
"scale": 1.04,
"dur": 0.3,
"ease": "power3.out"
},
"present": {
"y": 6,
"scale": 1.06,
"dur": 0.26,
"ease": "power3.out"
},
"impact": {
"y": 8,
"scale": 1.1,
"dur": 0.22,
"ease": "power4.out"
},
"exit": {
"dur": 0.25,
"ease": "power2.in",
"stagger": 0
}
},
"hero": {
"entrance": "settle",
"perLetter": false,
"letterStagger": 0,
"glow": 0.15,
"dimOthers": 0.4,
"breathe": 0.008,
"sheen": true,
"case": "uppercase",
"tracking": "0.02em",
"sizeRange": [0.18, 0.3],
"css": "",
"wordCss": "background: linear-gradient(105deg,#3a4350 0%,#f6fbff 20%,#8fa0b2 38%,#ffffff 50%,#2e3742 64%,#eef6fd 82%,#6b7888 100%); background-size: 220% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; text-shadow: none;"
},
"css": "",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "signature = liquid-metal wordCss + sheen sweep (engine fx) — std ignores wordCss/fx"
}
}
+69
View File
@@ -0,0 +1,69 @@
{
"name": "cream",
"title": "Warm cream — the poetic default",
"register": "premium-warm",
"when": "dark / mid-tone warm scenes (band luma < 150): studios, evening interiors, moody interviews. Introspective, narrative, emotional content. The successor of cinematic-cream.",
"font": {
"family": "Inter",
"weights": [500, 600, 700, 900]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#fff5df",
"blend": "screen",
"accent": "scene",
"accent_fallback": "#e3c06a"
},
"optics": {
"depthMatch": true,
"contactShadow": true,
"warmBloom": true
},
"filter": "contrast(1.08)",
"motion": {
"soft": {
"y": 8,
"blur": 2.5,
"dur": 0.5,
"ease": "power2.out"
},
"present": {
"y": 6,
"blur": 1.5,
"scale": 1.03,
"dur": 0.3,
"ease": "power3.out"
},
"impact": {
"y": 12,
"blur": 1.5,
"scale": 1.08,
"dur": 0.24,
"ease": "power4.out"
},
"exit": {
"dur": 0.45,
"y": -8,
"ease": "sine.in",
"stagger": 0
}
},
"hero": {
"entrance": "emergence",
"perLetter": true,
"letterStagger": 0.016,
"glow": 0.3,
"dimOthers": 0.45,
"breathe": 0.012,
"case": "uppercase",
"tracking": "-0.03em",
"sizeRange": [0.2, 0.34],
"letterBlur": 2.5
},
"css": "",
"deliveries": {
"home": "column",
"rail": "validated",
"note": "standard-mode lineage IS cinematic-cream; validated std renders (jimeng)"
}
}
@@ -0,0 +1,62 @@
{
"name": "documentary",
"title": "Documentary — Errol Morris dignity",
"register": "formal",
"when": "interviews, serious subject matter, journalism, testimonial. Burn-in reveals (no animation), bone on charcoal, a deliberately modest hero. Gravitas IS the style — stillness, no accent color, no glow.",
"font": {
"family": "Inter",
"weights": [500, 700]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#F5EFE6",
"blend": "normal",
"accent": "#F5EFE6",
"accent_fallback": "#F5EFE6"
},
"optics": {
"depthMatch": true,
"contactShadow": true,
"warmBloom": false
},
"filter": "none",
"motion": {
"soft": {
"reveal": "burn"
},
"present": {
"y": 0,
"dur": 0.18,
"ease": "power1.out"
},
"impact": {
"y": 6,
"scale": 1.03,
"dur": 0.2,
"ease": "power2.out"
},
"exit": {
"dur": 0.15,
"ease": "power1.in",
"stagger": 0
}
},
"hero": {
"entrance": "rise",
"perLetter": false,
"letterStagger": 0,
"glow": 0,
"dimOthers": 0.3,
"breathe": 0,
"case": "none",
"tracking": "-0.015em",
"sizeRange": [0.09, 0.15],
"css": "font-weight: 700;"
},
"css": "",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "the lower-third IS documentary's home register (Errol Morris); column stays deliberately modest"
}
}
@@ -0,0 +1,70 @@
{
"name": "editorial",
"title": "Editorial — serif voice, magazine cadence",
"register": "editorial-luxe",
"when": "introspective monologue, fashion / beauty, poetic or lyrical content, premium brand films on mid/dark scenes. The serif italic carries intimacy that a grotesque can't. The hero stays lowercase italic — elegance over shout.",
"font": {
"family": "Bodoni Moda",
"weights": [400, 700]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#f2ead8",
"blend": "screen",
"accent": "scene",
"accent_fallback": "#c9a36a"
},
"optics": {
"depthMatch": true,
"contactShadow": true,
"warmBloom": true
},
"filter": "contrast(1.06)",
"motion": {
"soft": {
"x": -10,
"y": 0,
"dur": 0.55,
"ease": "power2.out"
},
"present": {
"x": -8,
"y": 0,
"scale": 1.02,
"dur": 0.34,
"ease": "power2.out"
},
"impact": {
"x": -10,
"y": 0,
"scale": 1.06,
"dur": 0.28,
"ease": "power3.out"
},
"exit": {
"dur": 0.4,
"x": 8,
"ease": "sine.in",
"stagger": 0.07
}
},
"hero": {
"entrance": "emergence",
"perLetter": true,
"letterStagger": 0.022,
"glow": 0.18,
"dimOthers": 0.5,
"breathe": 0.01,
"case": "none",
"tracking": "-0.01em",
"sizeRange": [0.18, 0.3],
"css": "font-style: italic; font-weight: 700;",
"letterBlur": 1.5
},
"css": "",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "italic serif rail reads fine; the signature x-glide + line cascade-out exits don't exist in the std enum"
}
}
+82
View File
@@ -0,0 +1,82 @@
{
"name": "glitch",
"title": "Glitch — signal corruption",
"register": "loud-cyber",
"when": "digital / hacker / AI / dystopia content; anything that wants the captions to feel like a corrupted feed. RGB-split echoes snap together as each beat lands; timing is machine-percussive; nothing eases politely.",
"font": {
"family": "Space Grotesk",
"weights": [400, 700]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#eaffff",
"blend": "screen",
"accent": "#ff3df0",
"accent_fallback": "#ff3df0"
},
"optics": {
"depthMatch": false,
"contactShadow": false,
"warmBloom": false
},
"filter": "none",
"motion": {
"soft": {
"x": -6,
"stretchX": 1.12,
"dur": 0.12,
"ease": "power4.out"
},
"present": {
"x": -8,
"stretchX": 1.18,
"dur": 0.11,
"ease": "power4.out"
},
"impact": {
"x": -10,
"stretchX": 1.25,
"dur": 0.1,
"ease": "power4.out"
},
"exit": {
"dur": 0.1,
"scale": 1.02,
"ease": "power4.in",
"stagger": 0
}
},
"hero": {
"entrance": "settle",
"perLetter": false,
"letterStagger": 0,
"glow": 0.18,
"dimOthers": 0.45,
"breathe": 0,
"ripple": 2,
"case": "uppercase",
"tracking": "0.01em",
"sizeRange": [0.2, 0.32],
"css": "font-weight: 700;",
"echoes": [
{
"dx": -5,
"dy": 0,
"color": "#22e6ff",
"opacity": 0.75
},
{
"dx": 5,
"dy": 1,
"color": "#ff3df0",
"opacity": 0.75
}
]
},
"css": "",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "signature = RGB-split echoes converge (engine fx) — rail keeps only a tinted skin"
}
}
+65
View File
@@ -0,0 +1,65 @@
{
"name": "ink",
"title": "Ink — printed on the scene",
"register": "premium",
"when": "BRIGHT scenes (band luma > 150): white offices, daylight, pale walls — the scenes where cream/screen washes out. Multiply blend makes the type read as printed ON the wall, picking up its texture. Confident, editorial-tech tone.",
"font": {
"family": "Inter",
"weights": [500, 700, 900]
},
"palette": {
"scheme": "dark-on-light",
"cap_color": "#1b1714",
"blend": "multiply",
"accent": "scene",
"accent_fallback": "#9a3b2e"
},
"optics": {
"depthMatch": true,
"contactShadow": true,
"warmBloom": false
},
"filter": "contrast(1.05)",
"motion": {
"soft": {
"y": 0,
"scale": 1.06,
"dur": 0.22,
"ease": "power3.out"
},
"present": {
"y": 0,
"scale": 1.08,
"dur": 0.2,
"ease": "power3.out"
},
"impact": {
"y": 0,
"scale": 1.12,
"dur": 0.18,
"ease": "power4.out"
},
"exit": {
"dur": 0.22,
"ease": "power2.in",
"stagger": 0
}
},
"hero": {
"entrance": "settle",
"perLetter": false,
"letterStagger": 0.014,
"glow": 0,
"dimOthers": 0.4,
"breathe": 0,
"case": "uppercase",
"tracking": "-0.035em",
"sizeRange": [0.2, 0.34]
},
"css": "",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "rail works (scale-press→settle) but the letterpress identity wants a scene surface to press INTO"
}
}
+62
View File
@@ -0,0 +1,62 @@
{
"name": "keynote",
"title": "Keynote — Apple-grade confidence",
"register": "tech-premium",
"when": "product walkthroughs, launches, founder updates, tech explainers. Opaque white type, dead-center planes, few words held long. Confidence comes from mass and stillness, not motion.",
"font": {
"family": "Inter",
"weights": [400, 600, 800]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#ffffff",
"blend": "normal",
"accent": "scene",
"accent_fallback": "#8ab4ff"
},
"optics": {
"depthMatch": true,
"contactShadow": true,
"warmBloom": false
},
"filter": "none",
"motion": {
"soft": {
"reveal": "burn"
},
"present": {
"reveal": "burn"
},
"impact": {
"reveal": "burn"
},
"lineReveal": {
"type": "wipe-x",
"dur": 0.4,
"ease": "expo.out"
},
"exit": {
"dur": 0.3,
"ease": "power2.in",
"stagger": 0
}
},
"hero": {
"entrance": "wipe-up",
"perLetter": false,
"letterStagger": 0,
"glow": 0,
"dimOthers": 0.35,
"breathe": 0,
"case": "uppercase",
"tracking": "-0.045em",
"sizeRange": [0.16, 0.3],
"css": "font-weight: 800;"
},
"css": "",
"deliveries": {
"home": "column",
"rail": "validated",
"note": "wipe-up maps to the std entrance enum; keynote_std validated (Shine)"
}
}
+75
View File
@@ -0,0 +1,75 @@
{
"name": "loud",
"title": "Loud — the sanctioned blast",
"register": "loud",
"when": "hype, social reels, sport, music, motivational shorts — content that WANTS the type to compete with the face (k-pop-lyric lineage; deliberately breaks 'subject wins' at the hero). Machine-gun letter staggers, slam entrances, scene-sampled saturated accent on the hero. Body lines ANNOUNCE in front of the subject (bodyLayer:fg — k-pop lyric depth); only the hero embeds behind.",
"font": {
"family": "Anton",
"weights": [400]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#ffffff",
"blend": "normal",
"accent": "scene",
"accent_fallback": "#ffd600",
"heroColor": "accent",
"accentMode": "counter"
},
"optics": {
"depthMatch": false,
"contactShadow": true,
"warmBloom": false
},
"filter": "none",
"motion": {
"soft": {
"y": 0,
"scale": 1.3,
"rot": 1.2,
"dur": 0.18,
"ease": "back.out(1.7)"
},
"present": {
"y": 0,
"scale": 1.35,
"rot": 1.2,
"dur": 0.18,
"ease": "back.out(1.7)"
},
"impact": {
"y": 0,
"scale": 1.45,
"rot": 1.5,
"dur": 0.16,
"ease": "back.out(1.9)"
},
"exit": {
"dur": 0.14,
"scale": 0.96,
"ease": "power3.in",
"stagger": 0
}
},
"hero": {
"entrance": "slam",
"perLetter": false,
"letterStagger": 0.01,
"glow": 0.25,
"dimOthers": 0.55,
"breathe": 0.016,
"case": "uppercase",
"tracking": "-0.005em",
"sizeRange": [0.26, 0.4],
"css": "-webkit-text-stroke: 2px rgba(0,0,0,0.35); paint-order: stroke fill;",
"ripple": 3,
"loom": 0.03
},
"css": "",
"bodyLayer": "fg",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "slam maps; bodyLayer:fg already a std-shaped hybrid; validated both"
}
}
+58
View File
@@ -0,0 +1,58 @@
{
"name": "neon",
"title": "Neon — the sign in the scene",
"register": "loud-cyber",
"when": "cyberpunk / nightlife / tech-noir / music content on dark scenes. The captions ARE neon signage hanging in the room: electric cyan tubes, ignition flicker, a hum of glow. The hero powers ON like a sign being lit.",
"font": {
"family": "Orbitron",
"weights": [400, 700]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#d9f7ff",
"blend": "screen",
"accent": "#22e6ff",
"accent_fallback": "#22e6ff",
"heroColor": "accent"
},
"optics": {
"depthMatch": false,
"contactShadow": false,
"warmBloom": false
},
"filter": "none",
"motion": {
"soft": {
"reveal": "flicker"
},
"present": {
"reveal": "flicker"
},
"impact": {
"reveal": "flicker"
},
"exit": {
"dur": 0.18,
"ease": "power2.in",
"stagger": 0
}
},
"hero": {
"entrance": "flicker-on",
"perLetter": false,
"letterStagger": 0,
"glow": 0.5,
"dimOthers": 0.4,
"breathe": 0.01,
"case": "uppercase",
"tracking": "0.04em",
"sizeRange": [0.18, 0.3],
"css": "text-shadow: 0 0 14px rgba(34,230,255,0.65), 0 0 40px rgba(34,230,255,0.35), 0 0 80px rgba(34,230,255,0.18);"
},
"css": ".cap { text-shadow: 0 0 10px rgba(34,230,255,0.4), 0 0 26px rgba(34,230,255,0.2); }",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "signature = flicker-on + glow layer (engine hero fx) — rail keeps only the cyan skin"
}
}
@@ -0,0 +1,89 @@
{
"name": "velocity",
"title": "Velocity — speed lines",
"register": "loud-sport",
"when": "sport, automotive, fitness, anything kinetic. Every word arrives ALONG its own motion vector (streak + skew settles upright); the hero passes through with speed trails behind it. Condensed italic forward lean.",
"font": {
"family": "Teko",
"weights": [400, 700]
},
"palette": {
"scheme": "light-on-dark",
"cap_color": "#ffffff",
"blend": "normal",
"accent": "scene",
"accent_fallback": "#ffd600",
"heroColor": "accent",
"accentMode": "counter"
},
"optics": {
"depthMatch": false,
"contactShadow": true,
"warmBloom": false
},
"filter": "none",
"motion": {
"soft": {
"x": -22,
"skewX": -8,
"stretchX": 1.3,
"dur": 0.22,
"ease": "expo.out"
},
"present": {
"x": -26,
"skewX": -10,
"stretchX": 1.35,
"dur": 0.2,
"ease": "expo.out"
},
"impact": {
"x": -32,
"skewX": -12,
"stretchX": 1.45,
"dur": 0.18,
"ease": "expo.out"
},
"exit": {
"dur": 0.16,
"x": 14,
"ease": "power3.in",
"stagger": 0.04
}
},
"hero": {
"entrance": "streak",
"perLetter": false,
"letterStagger": 0,
"glow": 0,
"dimOthers": 0.5,
"breathe": 0,
"loom": 0.025,
"case": "uppercase",
"tracking": "0.015em",
"sizeRange": [0.24, 0.38],
"css": "font-weight: 700; font-style: italic;",
"echoes": [
{
"dx": -10,
"dy": 0,
"color": "#ffffff",
"opacity": 0.22,
"blur": 1
},
{
"dx": -20,
"dy": 0,
"color": "#ffffff",
"opacity": 0.1,
"blur": 2
}
]
},
"css": "",
"deliveries": {
"home": "column",
"rail": "unvalidated",
"note": "signature = streak + trail echoes along the speed vector (engine fx) — rail loses all of it"
}
}