# Find the category, then browse across it

**Draft construction guide. Native Resolve operation and moving-source fidelity
are not verified.** This is one candidate, with two editable content variants.

## Timing and source

Official film identifier: `1PiLUnxd1b8`. Source interval
[1560,1860), 60/1 fps.
Create a silent 1920×1080 composition with 300 included frames,
local 0..299. Source ordinal=1560+local frame.
Local timeline duration=5.000 seconds. Do not
substitute 24/25/29.97 fps or append a closing hold. The hash-bound preserved
research excerpt is 960×540; native timing comes from its historical source ledger,
not a guessed rate or fresh full-master decode.

## Inputs and setup

Unpack the ZIP and run `python3 verify_package.py` before changing anything.
`project/` is a complete TypeScript/Remotion project. `inputs/default.json` and
`inputs/adaptation.json` hold the two invented content sets. The bundled Geist
font includes its license. Install it for Text+ and calibrate pixel sizes and
baselines against the rendered candidate. The chosen palette is original, not
an official brand token. No source movie, narration or source screenshot belongs
in the editable composition.

`node --experimental-strip-types scripts/controls.mjs` regenerates
`docs/controls.csv` from the same integer-frame model as Remotion. It contains
one row per included frame and only this treatment's animated controls. For
Fusion use global frame=composition start+CSV frame. A scalar step is a held key,
not a default spline. For a continuous value, either key every supplied frame or
recreate the declared smoothstep and compare all rows. Apply each local transform
before its parent. Native Resolve import/export and pixel parity remain untested.

## Fusion layers and geometry

| Group | Pixel geometry | Ownership |
| --- | --- | --- |
| Phone shell | x=725, y=39, w=470, h=1004,border 8, r=67 | Fixed; no camera zoom |
| Screen content viewport | shell-local x=18, y=102, w=418, h=793 | Independent clipping mask |
| Conversation | x=0, y=verticalY, w=418, h=1930 | Vertical child of viewport |
| First category | y=470, first object row y=540 | Travels vertically only |
| Second category | y=1262, second object row y=1333 | Heading travels vertically only |
| Each object row | w=418, h=402 clipping domain | Clips its own horizontal strip |
| Object strip | five cards,250 px pitch, w=242 per card | Second strip has horizontalX |
| Header / composer | y=0, h=102 / x=15, y=895, w=424, h=70 | Above content; fixed to shell |

1. Build the phone as a fixed rounded shell with separate content and chrome.
   Never apply the conversation transform to its header or composer.
2. The first category and body scroll with Conversation: verticalY holds 0
   through 10, then follows smoothstep to −1090 at 145. Hold that value through 299.
   Source samples constrain start/category-hold/end ordering, not this exact
   interpolation curve or distance; the original copy has different metrics.
3. The two object rows are separately clipped. The first strip keeps x=0. The
   second strip keeps x=0 through 252 and moves toward −565 on a smoothstep 252..315.
   The interval ends at 299 while that curve remains in progress. Do not add a
   finished swipe or extend the clip to 315.
4. The second category heading and following prose remain horizontally fixed
   while its cards travel sideways. Row mask belongs to Conversation and then
   inherits its held vertical offset; apply each transform exactly once.
5. The five bundled SVGs are original vector object studies. Rebuild their
   backgrounds, shadow ellipses, frame strokes, seat/back paths and linear fill
   gradients as separate Fusion shapes. Asset dimensions 480×560, rendered 238×278.
   Keep their viewBox and path coordinates; source product photos are not inputs.
6. Each object label is 20 px,600 weight, at(8,292),224 px box; caption 15 px at(8,349).
   Header, intro, category and summary boxes are defined in Scene.tsx. Use the
   generated CSV for the two animated offsets. Changing copy may require a new
   layout and review; no automatic shrink or fit is supplied.

The original photos, small device controls, exact momentum, category spacing and
source material quality remain differences. The retained source has subtle
background motion; this candidate uses a held original gradient field.


## Verification and limits

Compare both actual Remotion exports, not just their manifests. Check the first
and final included frames, event brackets and clipping domains. The source movie
is a research comparison only. The original artwork and this schematic UI do
not demonstrate real product behavior. Mechanical passes do not close the
published source gaps. No native .drp, automatic Resolve import or performance
claim is supplied. All timing interpolation between sampled anchors is authored.
