# Switch an empty composer out, back and out again

## Delivery and limits

One 418-frame editing study, two original content variants, 1920×1080 at 60 fps.
This is a manual Resolve/Fusion construction guide plus editable Remotion code
and per-frame controls. No native project, import macro or verified Resolve execution is included.
The previews are real Remotion exports. Source-quality and independent moving
review remain open; package verification is not visual approval.

Use a 60 fps timeline before adding the composition. Set its inclusive local
range to 0..417, or an equivalent 418-frame clip. The source interval is
`NSqlZ1L81nQ` [2670,3088), using the retained source's 1/15360 time base and
256-tick frame duration. Local 0 maps to source 2670. Do not time-stretch the
motion or include the wider browser cut at source 3088. Use no audio track.

## Original inputs

Choose the entire Orchard `inputs/default.json` or Studio
`inputs/adaptation.json`. All labels, two explicit description lines and
recommendation are fictional. The six SVG inventory entries are three original
icon constructions in two palettes, not six unrelated artworks. Regenerate them
with `scripts/build-art.py` into a new directory. Do not import source frames,
partner logos, a screen recording or a flattened composer as editable artwork.

Use the bundled Geist font and retain its license. Match the loaded-font width
checks in `src/typography.ts`; character counts alone do not prove fit. Reject
overwide copy rather than shrinking type, clipping it or stretching timing.
Use Text+ elements for all copy, Background/Rectangle masks for card surfaces,
and editable shapes for plus, mic, chevron, folder, desktop and action glyphs.
If your Resolve build does not import an SVG directly, recreate its small path
construction with shape nodes; do not substitute a source-logo raster.

## Layer construction

The coordinates below are authored top-left pixel coordinates at 1920×1080.
For a Fusion center expressed with lower-left normalized axes, convert a box
`x,y,width,height` to `((x+width/2)/1920, 1-(y+height/2)/1080)` and dimensions
to `width/1920,height/1080`. Verify the axes and sizing on your actual node;
these instructions have not been executed in Resolve.

1. Create a very light off-white canvas with a subtle radial variation. Orchard
   uses green accents; Studio uses purple accents. Keep the same layout.
2. Place the rounded mode bar at 682,8 with size 394×65. Add a white selected
   thumb 210×65 at `thumbX`,8. Mode-label centers are 787 and 971; top 26,
   font 26 weight 550. Keep the labels stationary while the thumb slides.
3. Center the mode-specific heading in the 1325-pixel span beginning 218,447,
   font 42, line height 51, weight 480. Switch its text at the content gates.
4. Build the composer at 218,552, width 1325, height `cardHeight`, radius 46,
   white fill with a light border and subtle shadow. Keep its top fixed.
   The placeholder begins at local `89-58*growth`,28 inside the card,
   font 28/34. It shifts left as the card grows; it is not typed text.
5. Set bottom controls on local center y=`cardHeight-45`. Put plus at x31;
   model and chevron end 181 pixels from the right; mic begins 106 pixels
   from the right. The right action circle is 63×63, 14 pixels from the right,
   centered on the same row. Compact mode shows a voice waveform; expanded
   mode shows a pale upward arrow. Both are illustrative, not live controls.
6. Merge the rail behind the composer at 254,`552+cardHeight-3`, size 1254×78,
   lower corner radius 28. Its project label, three icon slots and desktop
   label remain separate editable elements. Apply `railOpacity` to this group.
7. Place the recommendation icon/copy at 249,`713+45*growth`, applying
   `recommendationOpacity`. During the reverse transition it briefly overlaps
   the fading outgoing rail. The card stays in front of both groups.
8. Expanded mode has an explanatory group at 435,`893+37*growth`, width 890.
   Use 32/42 weight 550 for its heading, then two 27/35 description lines after
   a 21-pixel gap. It moves downward as expansion settles. Remove the whole
   group immediately when compact mode commits.
9. Put the first hover tooltip at 780,83, size 398×51, radius 28; black fill,
   white 23-point text. It is visible only at local 83..102.
10. Place the original pointer on top using `pointerX/pointerY`; the shape
    changes to a hand over controls. This path, glyph and caret blink are
    authored approximations. Do not claim a recovered input trace.

## Timing and controls

`docs/controls.csv` has every local/source frame and numeric control. It is a
reference table, not an automatic Fusion import. Enter the selected keyframes
or expressions manually and check rendered frames against the table. Use a
step/constant change for mode content; do not fade all text together.

| Local frames | Mode content | Layout and supporting surfaces |
| --- | --- | --- |
| 0..82 | Compact | Height91; recommendation visible; thumb at682. |
| 83..102 | Compact | First hover tooltip visible; no mode commit yet. |
| 103..126 | Expanded | Content switches at103, before growth settles. Rail reveal follows. |
| 127..254 | Expanded | Height221, thumb866, full rail; empty input holds. |
| 255..270 | Compact | Content returns at 255 while card is still tall; contract and restore recommendation. |
| 271..284 | Compact | Height91, recommendation restored; no draft or typed text. |
| 285..306 | Expanded | Second immediate content commit followed by expansion and rail reveal. |
| 307..417 | Expanded | Hold the empty expanded surface; pointer travels to the tool row. |

For this authored reconstruction let `E(frame,start,end)` be
`1-(1-clamp((frame-start)/(end-start),0,1))^3`.
Before 255, growth is `E(frame,102,126)`; 255..284 uses
`1-E(frame,254,270)`; from 285 use `E(frame,284,306)`.
Height is `91+130*growth`. Thumb fraction uses corresponding intervals
101..108,253..260 reversed,284..291; `thumbX=682+184*fraction`.
Rail opacity before 255 is `E(frame,109,119)`,255..284 is
`0.08*(1-E(frame,255,260))`, and from 285 is `E(frame,289,300)`.
Recommendation opacity is 1 before 103, 0 until 255, then
`0.08+0.92*E(frame,255,270)` until 285, then 0. These curves are authored;
the observed source gates do not establish exact easing or alpha values.

The pointer anchors and caret cadence are explicit in `src/model.ts`.
Its numeric controls regenerate from that model. Use them for this adaptation,
not as an official source-motion measurement. Keep the three mode changes
together: they demonstrate one roundtrip, not three separate examples.

## Verification before export

Inspect local 82/83 and 102/103 for hover versus commit. Inspect 254/255 and
284/285 for immediate content changes while geometry remains in transit.
Check the fixed card top, moving bottom row, thumb glide, delayed rail,
recommendation restoration and final empty hold through 417. Confirm that no
typed query, generation, completed task, draft retention or plugin installation
is implied. The wider source cut must not appear in the 418-frame output.

Export a silent 1920×1080 H.264 MP4 at 60 fps with exactly 418 frames. Keep
the supplied Remotion movies and their matching manifests together. An actual
Resolve export should be checked independently for frame extent, layout,
font fit and the timing table; no such native export has been verified here.

## Open source differences

Original colors, copy, mode names and icons replace source branding and data.
Typography, shadow, subtle gradient, exact card radius, motion curves, transient
rail/recommendation opacity, pointer trajectory and caret blink differ or are
unmeasured. Source content commits were observed at 103,255,285; neighboring
samples constrain construction order, not complete visual equivalence.
The second expansion is timed separately rather than assuming identical source
easing. This historical interface study is not verified current OpenAI or Poe
behavior, and is not an all-hands product demo or a native Resolve approval.
