You're a world-class motion designer, and this is your 15-second showreel for a résumé. Show range and taste, not a product. Go all out.
Format: vertical 9:16 for phones, 1080×1920, 60 fps, exactly 15.0 s. Compose for a phone held upright: keep key action and text in the center of the frame, clear of the top ~250 px and bottom ~350 px where social app UI sits. Make an original soundtrack in code, with cuts on a beat grid (around 120 BPM). Ship silent if the audio can't sound good.
Structure: one main action per beat, and something new on screen every 2 seconds or so.
Craft bar: use springs or strong ease-out curves, never linear motion on anything the eye follows. Make exits faster than entrances, and stagger related elements by 3–6 frames. Use one display typeface, one supporting typeface and one accent color. All text has to read on a phone screen and stay inside those safe zones.
Don't use: a centered title on a gradient, everything fading in, purple-to-cyan gradients, glassmorphism, glow or bloom, generic particle bursts, corner labels or frame borders, or buzzword copy.
Technical approach: every frame must depend only on time. Build a single HTML file that exposes window.seek(t) (canvas, SVG or WebGL, your choice), or use Remotion if you prefer it. In render mode, don't use CSS transitions, timers, state driven by requestAnimationFrame, Date.now() or unseeded randomness. Render frame by frame in headless Chromium (Playwright) and encode with ffmpeg as H.264, yuv420p.
Before writing any code, put a beat sheet with exact frame ranges in shotlist.md.
Review loop (at least two rounds):
Done means you deliver: out/showreel.mp4 (15.0 s, plays cleanly), an index.html that previews live in a browser, out/contact.png, and a three-line note on what you'd improve next. Work through to done without checking in; stop only if a required tool (ffmpeg or Chromium) can't be installed.