# Establish the corner menu before magnifying it **Draft manual construction guide. Moving-source fidelity and native Resolve execution remain unverified.** Two original content variants form one example. ## Source and composition Official film `qh93rLRPw80`, selected native interval [1139,1289), 30000/1001 fps. Use a silent 1920×1080 square-pixel composition containing local frames 0–149. Exact duration: 150150/30000 seconds (5.005000 s). Source ordinal = 1139 + local frame. No frame-rate rounding, extra opening pause, closing hold or narration belongs to this study. The comparison is a retained, hash-bound 960×540 research excerpt. Preserved native metadata and PTS ledgers bind its clock; the historical full master is absent, so this is not a fresh full-master decode. Samples informed the build. Intermediate paths and measured-looking coordinates below are authored reconstruction controls, not official product timing, latency or design tokens. ## Setup and common coordinate rules Verify the unmodified kit with `python3 verify_package.py`, then follow `project/README.md`. Choose either input JSON content set. Install the bundled licensed Geist font for Text+, and calibrate pixels, weight, tracking and baselines against the supplied MP4; a font name alone does not guarantee parity. Regenerate `docs/controls.csv` with `node --experimental-strip-types scripts/controls.mjs`. Each row includes the local frame, source ordinal and exact sampled controls. Fusion global frame = composition start + CSV frame. Coordinates here use pixels from top-left, Y down. For a point in normalized Fusion image coordinates, X=pixelX/1920 and Y=1−pixelY/1080; convert top-left rectangles through their centers. Check the installed tool's coordinate direction instead of assuming CSS and Fusion match. Parent transforms apply after local transforms. A uniform pivoted transform is pivot + scale×(point−pivot), followed by the stated translation. Convert angles to your tool's convention. CSS rotations are clockwise in this Y-down space. Continuous controls use the CSV per-frame values, not an unspecified default spline. Held gates, text prefixes, colors and row indexes use stepped keys. Smoothstep is t²(3−2t), with t clamped to [0,1]; linear progress is clamped t. Rectangle masks need pixel-correct width and height; normalized X/Y values are not interchangeable on a non-square raster. Match opacity, clipping and layer order before attempting a moving comparison. ## Disclose the corner menu before the camera moves Use a white chapter screen with centered 96-pixel, weight-600 type and tracking −3 pixels. Reveal the first max(1,floor(length×chapterProgress)) characters; the last character completes by local 4, then holds. Hard-cut at 72 to the wide application. This is a chapter boundary, not a crossfade. 1. Build a white app window at (218,124), 1480×836, corner radius 13, on an original pale lilac/pink background. The left navigation is 235 pixels wide. Add the fictional brand, six rows, centered prompt heading and blank input. The account disc is window-local (16,786), diameter 31. 2. The six-row menu is window-local (20,592+menuOffsetY), 310×190, with a white rounded panel, border and shadow. It has five pixels of inner padding, 30-pixel rows and size-18 type. Map `hoverRow` to a subtle row fill. 3. Set `menuOpacity` from 0→1 over 93–96 and `menuOffsetY` from 4→0 over that same bracket. The menu is completely visible while cameraScale is still 1. 4. Put the entire app and pointer under a parent camera whose pivot is (245,955). Apply uniform `cameraScale`, then screen translations (`cameraX`,`cameraY`). The camera runs only over 120–136: scale 1→2.22, translation (0,0)→(−115,32). The lower-left menu remains the stable target. 5. Keep the pointer in the same parent group, at the CSV's untransformed (`cursorX`,`cursorY`). Its late movement is authored. `hoverRow` switches from −1 to 5 at 142, then to 4 at 146. These are held row fills, not route changes or selected permissions. End at local 149 with the menu open. No sharing command is selected in this source interval. Do not add successful sharing, membership, permission changes or a settings destination. The useful contract is menu disclosure before magnification, unlike enlarging a panel first and only then opening its menu. Reconstructed labels, menu dimensions, cursor path and camera easing differ from the source. The preserved native PTS ledger is millisecond-quantized. Its residuals fit the 30000/1001 cadence within .001 seconds; do not claim exact integer source ticks. These supplied outputs use exact 1001-tick frames at time base 1/30000. ## Verification boundary Inspect both actual exports at their native cadence, including entry/exit, hard gates, layering, width, masks and holds. Shipped code checks font loading and selected text-width budgets before rendering; it rejects oversized copy instead of silently shrinking it. This is not arbitrary-input readability approval or a guarantee that an independent Text+ rebuild fits. The kit contains editable original geometry, fixtures, controls and tests; source screenshots/movies are not renderer inputs. Native .drp execution, tested Resolve import, independent moving-source review and source-quality approval are not included. Existing matching pinned dependencies were used, not a clean dependency install. A modified input needs a new render and review.