Entrance choreography (on launch)
0–600msGradient fades up from black + begins its slow continuous drift (18s loop).
200msMascot springs in 0.6→1 and plays its standing wave → giggle loop; glow pulses behind. (placeholder clip until the dedicated wave→giggle render)
350ms“Suni” wordmark fades + rises 12px.
500msTagline fades + rises 10px.
650msCTA + sign-in rise 16px + fade. Settles ~900ms.
Interactions & transitions
Get started → goes straight into Face capture — no signup wall (account is created later, after the first-magic wow, via quick Apple/Google). Time-to-wow over friction.
Sign in → existing-account login sheet. Exit motion: content fades/scales 1→1.04 out, the gradient persists into the next screen (shared backdrop = one continuous space across all of onboarding).
States
First-run (default) — animated mascot waves then giggles in a smooth loop · Returning user — recognized session shows the user's profile photo + “Welcome back” + Face ID unlock + Continue.
Loading — on tap, CTA label swaps to a small inline spinner. Reduced-motion — gradient holds still, elements fade only (no rise), jewel shimmer off. No-network on Sign in — inline error toast.
Copy (final)
Wordmark “Suni” (name still tentative — flagged) · Tagline “See yourself in anything.”
CTA “Get started” · “I already have an account · Sign in” · legal line under the CTA.