First sign-in: a short welcome (W), then the in-page Get started panel (A) that reacts to the answers.
Plan: docs/plans/2026-11-02-first-run-onboarding.md (§ Decisions, rounds 2 and 3). Self-review: REVIEW.md.
Each file has a state bar at the bottom; every state is also a URL (?state=connected&theme=dark).
Full screen, three one-tap questions (who for · starting from · why dotsy). Every one skippable, and “Skip, take me to dotsy” is always there. Finishing lands on A.
The empty Sites page becomes a 3-step stepper. Step 1 asks which AI you use: the tile you click is the answer (Claude · Cursor · ChatGPT · Other · I don’t use one yet, which opens a “get an assistant” guide). Uses the welcome answers: the move prompt pre-filled, client prompts + checklist for agencies.
One step per screen, progress on top, “Skip for now”. Its look became W’s chrome.
Keeps the empty state; one big “Connect your AI” card with prompt chips under it.
who 1 · from 2 · from-url (URL field) · why 3 · why-other (typing). Answers ride in the URL (who=clients&from=existing&url=…) and carry over to A.fresh 0 · returning (last pick selected, &ai=cursor) · none-yet · waiting 1 · connected 2 · site 3 · checklist 4 · checklist-agency · other. The state bar has a welcome-answer switcher (skipped · move + URL · agency); the AI pick is made on the step-1 tiles (ai=claude|cursor|chatgpt|other|none).fresh · waiting · connected · site · checklist · other.&device=phone (375px), &theme=dark, &client=cursor|chatgpt.shots/ (re-shoot: node ../../docs/mockups/onboarding/shoot.mjs [W|A|B|C] from tools/editor-harness).