Banned list —Beat grid —Build method —Self-review —
<direction>
An 8-second pre-launch waitlist film as a single self-contained HTML page driven by GSAP (1280x720, 30fps, seek-driven timeline). House style: near-black #0a0a0a background, panels #141414, borders #2a2a2a, text #ffffff/#c9c9c9, ONE accent #ff5c1a, Arial/Helvetica bold, no webfonts. This run's accent: #ff5c1a. The film sells restraint: a milestone counter, one email field, and a no-spam pledge. Fictional product; the count is labelled a sample in the film. No gradients, no stock photos, no real brand logos, no lorem ipsum, no purple/blue tech gradient.
</direction>
<structure>
0.0-2.0s — Kicker "WAITLIST FILM — Orbit Post". "SOMETHING'S COMING" in small caps, then the wordmark slams in, tagline under it.
2.0-4.4s — A waitlist card: the counter animates 9,412 → 10,000 under the label "ON THE WAITLIST — SAMPLE COUNT", a progress bar fills to the end, and the line "Spot #10,000 could be yours" sets the hook.
4.4-6.4s — An email field types "you@studio.com" character by character next to the "JOIN THE WAITLIST" pill; the pill presses (scale dip) as the last character lands. Caption: "ONE EMAIL AT LAUNCH — THAT'S THE WHOLE DEAL".
6.4-8.0s — The pledge card: "NO DATE PROMISED. NO SPAM. ONE EMAIL." + the fictional-product fine print.
</structure>
<build>
One paused GSAP timeline registered on window.__timelines["main"]; the host captures by seeking, so no wall-clock logic. Typing = a tween on an object whose onUpdate slices the string. Counter = object tween with toLocaleString formatting in onUpdate.
</build>
<gotchas>
- Write the product name in caps directly in the copy (Orbit Post is a reminder, not a transform) — no CSS text-transform tricks that desync from the seek capture.
- The sample-count label is part of the film, not the page: a repost of the raw video must still be honest.
- Keep the caret visible after typing finishes; a blinking caret needs a stepped tween, not a CSS animation.
</gotchas>
Before you finish: step through the timeline at five points and fix anything that overlaps, clips the frame, or drifts off the beat grid.