Step 1 — Welcome (full detail)

The brand moment. One job: make her feel the promise and tap Get started. Left = first-run default, right = returning user. Motion + states + copy notes underneath. (Gradient drifts and the jewel shimmers live.)

First-run — default
9:41
Suni waving hello
Suni
See yourself in anything.
Get started
Returning user — recognized session
9:41
Welcome back, Maya
Your Suni is ready.
Face ID to unlock
Continue

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.

Step 1 in full. Tweak copy, the jewel/brand mark, motion timings, or the no-signup-wall call — or approve it and I'll move to Step 2a — Face capture.