Stage 5 — motion. A scroll-scrubbed intro built with the scroll-film engine (scroll-film.js, video mode). Source: our own 60 fps recording of stage 8 (captures/stage-8-60fps.mp4, frame-capture record.py), cut to 0–10 s and run through prep.py video at 800 px, 15 fps, GOP 4, no B-frames. Generating footage (motion-assets / scroll-film keyframes and legs): DOCUMENTED-NOT-RUN, no paid API calls. Below the film: the stage-4 scene, with a flight that starts when the scene scrolls into view.
Sub-sections not run cursor-rig: DOCUMENTED-NOT-RUN. It needs a painted character plus 2–8 image-to-video head-turn clips. There is no character in this brief, and the clips would be paid generation.
alpha-cutout: DOCUMENTED-NOT-RUN. It needs a clip generated on a chroma plate. The film is a render with an opaque sky and ground, so there is nothing to key.

The film is a recording of stage 8, made with frame-capture and scrubbed by scroll. The pipeline takes any clip — a render, a turntable, or generated footage via motion-assets.

Front, no composition. The same frame stage 0 gave you.

One camera move, three seconds. Nothing else changes.

The hero vantage. Now the frame is a decision, not a default.

The same scroll drives the exploded view.