# Build scattered phrases in color, hold white, then erase

**Application-unverified manual.** No imported Fusion setup, `.drp`, `.dra` or
native Resolve render is supplied. Two original content variants form one draft
example. The separate source clip is research only, never a render input.

## Clock and inputs

Create a silent 1920×1080 square-pixel Fusion composition at exact 24000/1001
(23.976 label), with 96 frames indexed 0–95. Source film `0j9yDUDMrBs` uses the
same ordinals in this selected interval [0,96). Exact duration is 96096/24000
seconds, or 4.004 seconds. Do not use 24 fps, append a hold or include the new
shot at source96. Frame95 is deliberately free of title text.

Choose the complete `inputs/default.json` or `inputs/adaptation.json`. Default
uses a sketch/studio still life; adaptation uses a survey/garden still life.
Both use original SVGs and editable text, not source photography, performers,
logos, copy or sound. The supplied `docs/source-timing.json` binds actual source
and excerpt integer PTS; `docs/controls.csv` holds authored implementation states.
These are distinct records. The historical absent master is not claimed equal
to the retained rendition.

## Layer graph and coordinates

Use an opaque canvas below these Over merges, in this exact back-to-front order:

1. `RoomGroup`: rebuild `public/art/<theme>-room.svg` as gradient Background,
   polygon/Bezier masks, architectural line paths and translucent light areas.
   Its domain is 1950×1080. Position top-left at (`sceneDrift`,0).
2. `ObjectsGroup`: rebuild the selected `objects.svg` in a transparent 710×625
   domain, including shadow, tabletop, shaded vessel and variant-specific
   drawing tools/paper or leaves/map. Position at (1090+0.6×sceneDrift,455).
3. `UnderlayGroup`: reconstruct both filled Bezier contours from `underlay.svg`
   in a 2820×1450 transparent domain. Keep its two source path opacities and
   order. Position at (`underlayX`,`underlayY`). It crosses above the room and
   objects but below every Text+ branch. This is an abstract coverage substitute,
   not a recovered physical foreground object or full-screen scene wipe.
4. Eight independent Text+ branches, merged in this order: first, second,
   third, fourth, fifth, sixth, seventh, attribution. Each has its own text,
   color, placement and held gate. Do not parent them to RoomGroup or Underlay.

Read exact contours, stops, fills and opacity from the editable SVG XML. There
are six SVG bindings: three constructions in each of two themes. Do not load
flattened screenshots into any group. SVG coordinates are pixels with Y down.
Preserve each declared viewBox and clip only at the final composition edge.

For a point in a W×H group, normalized Fusion position is (x/W,1−y/H). Place a
top-left rectangle using its center ((x+w/2)/W,1−(y+h/2)/H), not its corner.
Then apply the parent's pixel translation before normalization in the 1920×1080
canvas. Keep oversized transparent domains; do not crop an offscreen group to
its visible fragment. Verify coordinate direction with an asymmetric corner.

## Typography and fixed layout

Install the bundled licensed Geist font. Use weight600, lineHeight1 and -3px
tracking for the seven large phrases; attribution uses -1.5px tracking. White
is `#ffffff`. Calibrate Text+ glyph bounds/baseline against the corresponding
Remotion render; Resolve Size is not assumed to be CSS pixels. Do not shrink
copy to fit or substitute fonts without a new review.

| Field | Left | Top | Box width | Font px |
|---|---:|---:|---:|---:|
| first |96|`firstY`|1080|128|
| second |954|218|680|128|
| third |230|383|440|128|
| fourth |813|383|270|128|
| fifth |430|570|780|128|
| sixth |654|750|180|128|
| seventh |856|750|800|128|
| attribution |1238|922|620|54|

Boxes have height1.2×font size and remain fixed. Align left except fifth, which
is centered in its box throughout, and third, which becomes centered in its
same box from85 during erasure. This alignment is an authored approximation;
do not claim measured source glyph positions. No other text reflows when a
neighbor disappears. Set firstY=240 through11,154 at12,92 at13 and76 from14.
These four held positions approximate the observed early upward relocation.

## Mixed entry and erasure

Every reveal uses stepped StyledText prefixes, not a continuous rectangular
wipe, fade or uniform-rate typewriter. For a ratio r and complete content of
length L, show the first max(1,floor(L×r+0.00000001)) characters when r>0.
For r=0, disable the branch completely. Ratios adapt original event gates to
new copy; they are not a claim that the source words have these new lengths.
Use CSV ratios directly for each integer frame. Hold between listed gates.

| Field | Frame:ratio keys |
|---|---|
| first |0:0,1:5/13,2:7/13,4:10/13,5:11/13,6:1,87:0|
| second |0:0,14:1,89:0|
| third |0:0,16:2/6,17:3/6,19:4/6,22:5/6,24:1,85:5/6,87:4/6,88:3/6,90:0|
| fourth |0:0,19:1,89:0|
| fifth |0:0,23:2/7,24:3/7,25:1,93:0|
| sixth |0:0,26:1,91:0|
| seventh |0:0,30:1,92:0.8,93:0.5,94:0.3,95:0|
| attribution |0:0,33:4/17,38:7/17,39:10/17,40:12/17,41:15/17,42:1,86:0|

Third is exactly six characters in the supported content schema. Other fields
have their own length/width bounds in `src/model.ts` and `src/typography.ts`.
Per-frame replacement keys are sufficient; an uncalibrated Follower or Write On
animation is not equivalent. The first, second, fourth, fifth, sixth and
attribution disappear whole. Third and seventh shorten before their final gate.

## Temporary accents

Use these held accent intervals, then white; there is no interpolated color fade.

| Field | Accent frames | Studio | Garden |
|---|---|---|---|
| second |[14,20)|`#70cf93`|`#a8d890`|
| third |[16,25)|`#f0b4c3`|`#f1b7a4`|
| fourth |[19,25)|`#f89b53`|`#ffc16c`|
| fifth |[23,30)|`#f89b53`|`#ffc16c`|
| seventh |[30,36)|`#c1a8fb`|`#b5c1f1`|

First, sixth and attribution stay white whenever visible. The full eight-phrase
white composition holds from42 through84. The palette is original, not sampled
or asserted to be an official color specification.

## Underlay movement and final checks

Use the CSV's continuous values or linear keys without automatic Bezier easing.
sceneDrift runs linearly from0 at0 to−18 at95. UnderlayX is1920 through33,
−390 at44,−520 at54 and−2840 at66, held thereafter. UnderlayY is−640 through33,
−110 at44, held through54, then−330 at66 and thereafter. No text fades or changes
coordinate system during coverage. The source has live-action motion; this
linear vector path is a disclosed substitute, not a recovered camera move.

Check all listed entry, accent, relocation and release gates against their
preceding frame. In particular inspect19/20,24/25,29/30,35/36,41/42,84/85,
85/86,86/87,88/89,89/90,90/91,91/92,92/93,94/95. At95 all eight branches are
off and only the original background remains. Compare both silent exports at
native cadence before claiming a moving match. Mechanical render checks and
sampled still inspection do not establish independent/source-quality approval.
