# Click Save and cross-dissolve a full upload wizard into a small processing modal over the list page

Manual DaVinci Resolve / Fusion construction guide generated from the recipe. It is not a tested .drp.
The accompanying Remotion project (recipe.json) is the executable definition; the numbers below are copied from it.
Neither construction establishes source fidelity: this is an original vector approximation of an inspected editing moment.

## Source and clock
Reference: OpenAI's "Record & Replay in Codex" (ZK3JhU73W18), published 2026-06-18.
Source interval [985, 1049) on the 24000/1001 fps master: 64 frames, 2.669333 s. Local frame 0 = source frame 985.
Create a 1920x1080 progressive timeline at 24000/1001 fps and a Fusion composition exactly 64 frames long. Keep integer frames; do not round the frame rate.
Background field: #f9f9f9. Export silent H.264 yuv420p to match the intended playback container.

## Observation
A large upload wizard (title, four-step progress, 'Save or publish' radio list with Private selected, a video preview card and link, a footer with processing status and a dark Save button) sits over a channel content page. The pointer rests on Save and clicks at ~f18. From ~f20 the wizard fades out while a much smaller 'Video processing' modal (title, sentence, thumbnail row, progress line, Close) fades in centred over the page; by ~f32 only the modal remains. Nothing moves; the swap is purely opacity and the page behind is visible through both.

## Mechanism
Cross-dissolve between two differently sized modals on the same page after a confirm click.

## Phases (local frames)
- 0: Wizard open, pointer on Save
- 18: Save clicked
- 20: Wizard begins fading out
- 22: Processing modal begins fading in
- 32: Dissolve complete; modal only
- 64: Hold

## Layer inventory (absolute 1920x1080 top-left pixels, back to front)
- page [rect] at (0, 0) size 1920x1080 fill #f9f9f9
- topbar [rect] at (0, 0) size 1920x64 fill #ffffff stroke #e5e7eb 1px
- search [rect] at (600, 16) size 700x32 radius 16 fill #f1f1f1
- nav [rect] at (0, 0) size 260x1080 fill #ffffff stroke #e5e7eb 1px
- avatar [ellipse] at (90, 90) size 80x80 fill #e5e7eb
- yourch [text] at (0, 190) size 260x0 text "Your channel" 15px weight 600 #111827
- nav0 [text] at (40, 260) text "Dashboard" 16px weight 400 #111827
- nav1 [text] at (40, 316) text "Content" 16px weight 600 #111827
- nav2 [text] at (40, 372) text "Analytics" 16px weight 400 #111827
- nav3 [text] at (40, 428) text "Community" 16px weight 400 #111827
- nav4 [text] at (40, 484) text "Settings" 16px weight 400 #111827
- nav5 [text] at (40, 540) text "Send feedback" 16px weight 400 #111827
- page-title [text] at (320, 110) text "Channel content" 30px weight 600 #111827
- tabs [text] at (320, 175) text "Inspiration     Videos     Shorts     Live     Playlists     Podcasts     Promotions" 15px weight 400 #4b5563
- tabs-line [line] at (0, 0) stroke #e5e7eb 1px
- row1-thumb [rect] at (340, 260) size 120x68 radius 4 fill #7c2d12
- row1-t [text] at (480, 266) text "Debug web apps with browser use" 15px weight 600 #111827
- row1-s [text] at (480, 292) size 700x0 text "Automation can now use the DevTools protocol to inspect console logs, runtime errors and network traffic." 13px weight 400 #6b7280
- row2-thumb [rect] at (340, 350) size 120x68 radius 4 fill #1e3a5f
- row2-t [text] at (480, 356) text "Introducing Sites in Codex" 15px weight 600 #111827
- row2-s [text] at (480, 382) size 700x0 text "Sites lets anyone on your team turn an idea into a secure application in minutes." 13px weight 400 #6b7280
- dialog [group] at (290, 150) size 1340x780 radius 10 fill #ffffff visible [0, 32)
    keyframes opacity: f20=1, f30=0 (in)
  - d-title [text] at (322, 174) text "Introducing Sites in Codex" 22px weight 600 #111827
  - d-saved [text] at (1370, 180) text "Saved as private" 13px weight 400 #6b7280
  - d-x [text] at (1580, 170) text "×" 24px weight 400 #6b7280
  - d-steps [text] at (400, 234) size 1120x0 text "Details            Video elements            Checks            Visibility" 15px weight 400 #111827
  - d-stepline [line] at (290, 150) stroke #111827 2px
  - d-dot0 [ellipse] at (422, 270) size 16x16 fill #111827
  - d-dot1 [ellipse] at (775, 270) size 16x16 fill #111827
  - d-dot2 [ellipse] at (1128, 270) size 16x16 fill #111827
  - d-dot3 [ellipse] at (1482, 270) size 16x16 fill #111827
  - d-box [rect] at (322, 320) size 800x470 radius 8 fill #ffffff stroke #e5e7eb 1px
  - d-savetitle [text] at (346, 340) text "Save or publish" 18px weight 600 #111827
  - d-savesub [text] at (346, 370) text "Make your video public, unlisted, or private" 14px weight 400 #6b7280
  - d-radio0 [ellipse] at (350, 420) size 22x22 fill #ffffff stroke #111827 2px
  - d-radio-dot [ellipse] at (356, 426) size 10x10 fill #111827
  - d-opt0 [text] at (390, 418) text "Private" 17px weight 600 #111827
  - d-opts0 [text] at (390, 446) text "Only you and people you choose can watch your video" 14px weight 400 #6b7280
  - d-radio1 [ellipse] at (350, 530) size 22x22 fill #ffffff stroke #9ca3af 2px
  - d-opt1 [text] at (390, 528) text "Unlisted" 17px weight 600 #111827
  - d-opts1 [text] at (390, 556) text "Anyone with the video link can watch your video" 14px weight 400 #6b7280
  - d-radio2 [ellipse] at (350, 640) size 22x22 fill #ffffff stroke #9ca3af 2px
  - d-opt2 [text] at (390, 638) text "Public" 17px weight 600 #111827
  - d-opts2 [text] at (390, 666) text "Everyone can watch your video" 14px weight 400 #6b7280
  - d-share [rect] at (390, 480) size 170x36 radius 18 fill #f1f1f1
  - d-share-t [text] at (390, 489) size 170x0 text "⇪  Share privately" 14px weight 400 #111827
  - d-prev [rect] at (1170, 320) size 400x225 radius 6 fill #1e3a5f
  - d-prev-t [text] at (1170, 400) size 400x0 text "Sites in Codex" 36px weight 700 #ffffff
  - d-prev-s [text] at (1170, 450) size 400x0 text "Processing video" 14px weight 400 #d1d5db
  - d-linklabel [text] at (1170, 570) text "Video link" 13px weight 400 #6b7280
  - d-link [text] at (1170, 592) text "https://vid.example/HYsj0ptcovg" 15px weight 400 #1d4ed8
  - d-footer [line] at (290, 150) stroke #e5e7eb 1px
  - d-progress [text] at (322, 880) text "⇧  Processing up to 4K … 3 minutes left" 14px weight 400 #4b5563
  - d-save [rect] at (1520, 868) size 80x38 radius 4 fill #111827
  - d-save-t [text] at (1520, 878) size 80x0 text "Save" 15px weight 600 #ffffff
- modal [group] at (660, 380) size 600x320 radius 10 fill #ffffff visible [22, 64)
    keyframes opacity: f22=0, f32=1 (out)
  - m-title [text] at (692, 408) text "Video processing" 22px weight 600 #111827
  - m-sub [text] at (692, 446) size 540x0 text "Your private video is still processing standard definition (SD)." 14px weight 400 #4b5563
  - m-row [rect] at (692, 490) size 536x90 radius 6 fill #f6f6f6
  - m-thumb [rect] at (704, 502) size 118x66 radius 4 fill #1e3a5f
  - m-item [text] at (840, 520) text "Introducing Sites in Codex" 15px weight 400 #111827
  - m-progress [text] at (692, 608) text "⇧  Processing up to 4K … 3 minutes left" 13px weight 400 #4b5563
  - m-close [rect] at (1156, 644) size 72x34 radius 4 fill #f1f1f1
  - m-close-t [text] at (1156, 653) size 72x0 text "Close" 14px weight 600 #111827
- pointer [cursor] at (1560, 880) clicks at [18]
    keyframes ty: f34=0, f50=40 (inOut)

## Construction steps
1. Timeline 1920x1080 at 23.976 fps; Fusion comp of 64 frames. Local 0 = master frame 985.
2. Page: #f9f9f9 with a white 260 px nav (avatar, six items), top bar with search pill, 'Channel content' 30 px title, tab row with a rule and two video rows (thumbnail rect + title + description).
3. Wizard: 1340x780 white group at (290,150) with a large drop shadow; 22 px title, four dots on a 2 px step line, an 800x470 option box with three radios (first filled), a 400x225 navy preview card with a link line, and a footer with status text and an 80x38 dark Save button.
4. Modal: 600x320 white group at (660,380): 22 px title, one-sentence subtitle, a 536x90 grey item row with a thumbnail, progress line and a Close button.
5. Dissolve: wizard Opacity 1 to 0 over frames 20–30 (ease in) and end its visibility at 32; modal Opacity 0 to 1 over 22–32 (ease out). Pointer click ring at 18 on Save, then drift 40 px down.
6. Easy mistake: scaling the wizard down into the modal. The source has no size or position change; both cards simply fade at fixed positions with a 2-frame offset.

## Content variants
Default copy:
- dialogTitle: Introducing Sites in Codex
- saved: Saved as private
- steps: Details            Video elements            Checks            Visibility
- saveTitle: Save or publish
- saveSub: Make your video public, unlisted, or private
- opt1: Private
- opt1s: Only you and people you choose can watch your video
- opt2: Unlisted
- opt2s: Anyone with the video link can watch your video
- opt3: Public
- opt3s: Everyone can watch your video
- share: Share privately
- previewTitle: Sites in Codex
- previewSub: Processing video
- linkLabel: Video link
- link: https://vid.example/HYsj0ptcovg
- progress: Processing up to 4K … 3 minutes left
- save: Save
- modalTitle: Video processing
- modalSub: Your private video is still processing standard definition (SD).
- modalItem: Introducing Sites in Codex
- modalProgress: Processing up to 4K … 3 minutes left
- close: Close
- pageTitle: Channel content
- tabs: Inspiration     Videos     Shorts     Live     Playlists     Podcasts     Promotions
- nav: Dashboard / Content / Analytics / Community / Settings / Send feedback
Adaptation changes:
- dialogTitle: Recording and replaying browser tests
- saved: Draft saved
- saveTitle: Choose an audience
- saveSub: Decide who can see this upload
- opt1: Team only
- opt1s: Only members of your workspace can watch
- opt2: Link
- opt2s: Anyone with the link can watch
- opt3: Everyone
- opt3s: Listed publicly on your channel
- previewTitle: Record & Replay
- modalTitle: Upload processing
- modalSub: Your team-only upload is still processing the preview rendition.
- modalItem: Recording and replaying browser tests
- modalProgress: Rendering up to 4K … about 2 minutes
- link: https://vid.example/Rr2xQ9
- pageTitle: Workspace uploads

## Limits
Easing names map to Fusion spline shapes: linear = linear, in/out/inOut = ease curves on the same frames, hold = step, spring/overshoot = slight overshoot past the target before settling.
Text reveal frames give the first and last unit; distribute characters/words evenly between them. Cursor click rings last 14 frames.
Vector illustration is an approximation of layout and motion, not the product UI or recovered production assets.
