Design preview · not yet built

Account & guest/auth — restyled to the canon shell

Account is the signed-in page — guest becomes a member from here.

SizePortrait scrolls 375 · sideways is a slide deckNotes
Design brief — overview · scope · journey (closed)

The Account surface end-to-end — member page, guest mode, the AuthModal gate, the WaitlistModal funnel, and the credential-recovery banner (real content from AccountPage.tsx, AuthModal.tsx, WaitlistModal.tsx, CredentialRecoveryBanner.tsx, restyled to the canon shell).

GuestPreviewBanner → retired, PreviewStatusBanner is current row actions = text links, never buttons GUEST badge = muted · MEMBER badge = white glow preview always opens AuthModal on Sign In, even from a Sign Up tap CredentialRecoveryBanner = lantern "needs you" strip, first child of <main> (shipped 2026-08-22)

The widths drawn here are samples of a fluid continuum, not the only states that exist — content (spacing, type, gaps, card/column widths) scales continuously between them, each clamp reading a named container. Structure (rail, row↔stack, grid columns) steps only at sm 640 · md 768 · lg 1024; radius, hairlines, and pills never scale. Kit: design-canon.md U8.

Reading order in this document: § Desktop journey first — every desktop frame, full flow, journey order — then § Mobile journey — 375 below it — every mobile frame, same order, laid out side by side as a wrapping grid (never a tall single-file column of phone screens). Two sections, never interleaved — a review-document convention only (this repo's design-canon.md § Mockup review reading order). Mobile 375px is still designed and scored FIRST in the /design ritual (kit canon U5/U8) — the two rules never conflate.

Part I · Active — build now
Signed in
MystFlo Platform Preview
· Peyton
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Company
Account status
Active · Created Mar 12, 2026 · ✓ Verified
Sign-in & security
Sign in with any active method. Your last used method is noted below.
Google
Last used: Jul 18, 2026, 9:04 AM
Connected
Email & Password
Password set: Jun 2, 2026
Change password →
Data & privacy
Everything we store about you, what we keep, and how to remove it.
WhatsApp Business 428 messages · 12 templates Erase data
Delete your account 30-day grace period Delete my account
Legal
Terms of Service Accepted Mar 12, 2026 · v2.1View Terms ↗
Privacy Policy Accepted Mar 12, 2026 · v2.1View Privacy Policy ↗
Account page — member (AccountPage.tsx)
  • Identity block = the ONE contained surface (avatar, name/email, USR-2381 id chip); everything below is flat hairline rows.
  • Row actions are text links ("Change password →", "Erase data", "View Terms ↗") — never buttons.
  • "Verified" = colorless checkmark, not the source's green badge (open Peyton call).
What changes for a guest
  • Header: Member → GUEST badge (muted, no glow — status label, not a click target; auth via the header's Sign in / Get early access, UX-11); wallet pill → Sign in / Get early access text actions.
  • PreviewStatusBanner pill floats under the header for both audiences (dismissible, per-audience memory).
  • Profile fields disabled with "Guest User" / "guest@mystflo.com" placeholders; Account status = Inactive / "Created N/A"; every edit action → "Sign Up →".
  • Data & privacy + Legal sections absent for guests (gated on !isGuest) — not degraded, absent.
MystFlo Platform Preview
Sign in Get early access
Building in public. Assistants aren't live yet. Help build this → ✕
Account
Your profile and security
Profile
G
Guest User
Full name
Email address
Company
Account status
Inactive · Created N/A
Sign-in & security
Sign up to add a sign-in method.
Google
OAuth authentication
Sign Up →
Email & Password
Traditional authentication
Sign Up →
Data & privacy and Legal sections appear after you sign up.
768 not yet drawn for this flow. Desktop and 375 are the contract.
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Account status
Active·✓ Verified
Sign-in & security
Google
Connected
Connected
Email & Password
Set Jun 2, 2026
Change →
Mobile 375px
  • Field rows stack label-over-input (component's sm:flex-row breakpoint) — never a side-by-side squeeze under 375px.
2Guest mode — mobile 375px
Get early access Sign in
Building in public. Help build →
Account
Profile
G
Guest User
Google
OAuth
Sign Up →
Email & Password
Traditional
Sign Up →
Guest mobile
  • Mobile header collapses to brand-only; Sign in / Get early access move to their own row (MobileActionBar).
  • The pill drops the subline (width).
AuthModal gate behavior
  • "Sign Up →" passes defaultMode="signup", but preview sign-up is closed (isPublicSignupOpen()) → modal forces the Sign In tab regardless of intent.
  • Sign Up tab reachable but shows an early-access invite, not a form — first-seen state is A, never B.
3Signup gate modal — AuthModal, centered dialog · State A
When this shows (CredentialRecoveryBanner.tsx — retroactive doc of shipped code, not a pre-build proposal)
  • Signed-in, non-guest, hasPassword === false AND no linked google identity — the state every fresh private-beta invitee starts in (magic-link arrival via Callback.tsx). Trigger is account state, not the invite flag.
  • Rendered as <main>'s first child in PlatformLayout.tsx — it spans the content column on EVERY page, under the header, right of the rail (inheriting the sidebar offset). Drawn here on Account, where its actions resolve.
  • Self-retires: once a password is set or Google is linked, the condition is never true again for that account. Dismiss (✕) persists per-user in localStorage — it returns in a new browser; fixing the state is the real exit.
MystFlo Platform Preview
· Peyton
You're signed in with a link, not a password. Set a password or link Google so you can always get back in. Link Google Set a password ✕
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Account status
Active · Created Aug 22, 2026 · ✓ Verified
Sign-in & security
Sign in with any active method. Your last used method is noted below.
Google
OAuth authentication
Email & Password
Available • Set as backup
Set Password
Profile fields, Data & privacy, and Legal continue below — unchanged from frame 1. This frame shows the credential-less member state: the Google row carries NO action (linking routes through the banner or sign-in, not a row button), and Email & Password reads "Available • Set as backup" with the shipped "Set Password" button.
States + copy (verbatim from shipped code)
  • Message: lantern lead sentence ("You're signed in with a link, not a password.") + fg-70 remainder. Actions: Link Google (outline — reads "Opening Google…" while redirecting) · Set a password (primary) · dismiss ✕.
  • "Set a password" opens the existing ChangePasswordModal (hasPassword=false) — on success: toast "Password set / You're all set — you can sign in with it any time." and the banner dismisses. Not re-drawn (existing component).
  • "Link Google" routes through the normal Google sign-in (loginWithGoogle()) — NOT manual identity linking, which is disabled server-side; Supabase same-email auto-linking attaches Google to this account (#3860).
  • Dismissed state = frame 1 exactly (banner absent) — not re-drawn.
Review flags (documented drift — fix candidates, not part of the contract)
  • Background is bg-white/[0.03] — off the surface ladder (.04/.06/.08), kit U1.
  • While it shows, lantern appears twice on one shell (banner + header Private Beta badge) — U12 "one moment per view" tension. Acceptable as a transient nudge; flagged for the next lantern sweep.
  • Dismiss target is 28px (h-7 w-7) — under the 44px mobile touch minimum.
768 not yet drawn for this flow. Desktop and 375 are the contract.
You're signed in with a link, not a password. Set a password or link Google so you can always get back in. Link Google Set a password ✕
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Sign-in & security
Google
OAuth authentication
Email & Password
Available • Set as backup
Set Password
Mobile 375px — credential-recovery banner
  • The strip is flex-wrap: message wraps first, the action cluster (ml-auto) drops to its own right-aligned row.
  • Security row buttons go full-width (w-full sm:w-auto); the banner's own buttons do NOT — they stay auto-width in the wrapped cluster.
  • 28px dismiss target — under the 44px minimum, flagged above.
Help

Let MystFlo help setup — the switch lives here (#4858 PR-2, Peyton 2026-09-15). Account is the canonical home of the grant: one new section between Sign-in & security and Data & privacy — the consent sentence, ONE hairline row with the only switch on the page, and the non-delegable line. The header link and the mobile drawer row (shell.html H1 / H1-m) navigate here; there is no sheet and no modal anywhere in this flow. Four states, each a complete page: OFF · ON, nothing yet · ON with activity · revoked · 768 · 375. Header drawn here keeps this file's existing stand-in (Preview badge — ledger row 4 already flags it stale); the shipped header with the new link is the shell file's contract.

MystFlo Platform Preview
· Peyton
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Company
Account status
Active · Created Mar 12, 2026 · ✓ Verified
Sign-in & security
Sign in with any active method. Your last used method is noted below.
Google
Last used: Jul 18, 2026, 9:04 AM
Connected
Email & Password
Password set: Jun 2, 2026
Change password →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
Off · nothing added yet
Terms, payments, and your WhatsApp login always stay with you.
Data & privacy
Everything we store about you, what we keep, and how to remove it.
WhatsApp Business 428 messages · 12 templates Erase data
Delete your account 30-day grace period Delete my account
Legal
Terms of Service Accepted Mar 12, 2026 · v2.1View Terms ↗
Privacy Policy Accepted Mar 12, 2026 · v2.1View Privacy Policy ↗
H-acct-1 — the section, OFF (AccountPage.tsx, new section between Sign-in & security and Data & privacy)
  • Anatomy = the page's existing grammar: eyebrow "Help from MystFlo" → one caption (the consent sentence, three short lines) → ONE hairline row: title "Let MystFlo help setup" + status sub-line on the left, a switch on the right (the only switch on the page) → one quiet caption naming what never moves: terms, payments, WhatsApp login (#4858 non-delegable set). No box, no card, no button.
  • Consent = the sentence above the switch. Flipping ON is the consent; there is no confirm dialog, no checkbox, no second step. OFF is instant. Copy is honest by construction: "You'll see everything we add" is true because every support write is stamped on the Brain page (brain.html BL-1s / 2.3-qa-D).
  • Arrival from the header link / drawer row (shell.html H1): /account#help lands scrolled to this eyebrow with the switch focused (visible focus ring, no motion, no highlight wash).
  • Status line vocabulary, OFF: "Off · nothing added yet". Guest: the whole section is absent (gated on !isGuest, like Data & privacy) — never rendered disabled.
  • What does NOT happen: no toast on flip, no banner elsewhere, no Slack copy shown to her (the ops alert on grant creation is backend-only), no lantern (kit U12 — this is not "needs you").
MystFlo Platform Preview
· Peyton
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Company
Account status
Active · Created Mar 12, 2026 · ✓ Verified
Sign-in & security
Sign in with any active method. Your last used method is noted below.
Google
Last used: Jul 18, 2026, 9:04 AM
Connected
Email & Password
Password set: Jun 2, 2026
Change password →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
On since 15 Sep · nothing added yet
Terms, payments, and your WhatsApp login always stay with you.
Data & privacy
Everything we store about you, what we keep, and how to remove it.
WhatsApp Business 428 messages · 12 templates Erase data
Delete your account 30-day grace period Delete my account
Legal
Terms of Service Accepted Mar 12, 2026 · v2.1View Terms ↗
Privacy Policy Accepted Mar 12, 2026 · v2.1View Privacy Policy ↗
H-acct-2 — ON, nothing added yet
  • Switch reads on (white track, black thumb — shadcn Switch checked state, no custom colour). Status line: 6px emerald dot (C12 connected/healthy) + "On since 15 Sep · nothing added yet". The date is granted_at.
  • Header link and drawer row now read "● Help on" (shell.html H2) — same dot, same data.
  • Nothing else on the page changes. The count appears only once support has written something (H-acct-3).
MystFlo Platform Preview
· Peyton
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Company
Account status
Active · Created Mar 12, 2026 · ✓ Verified
Sign-in & security
Sign in with any active method. Your last used method is noted below.
Google
Last used: Jul 18, 2026, 9:04 AM
Connected
Email & Password
Password set: Jun 2, 2026
Change password →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
On since 15 Sep · 14 items added by MystFlo · See them on Brain →
Terms, payments, and your WhatsApp login always stay with you.
Data & privacy
Everything we store about you, what we keep, and how to remove it.
WhatsApp Business 428 messages · 12 templates Erase data
Delete your account 30-day grace period Delete my account
Legal
Terms of Service Accepted Mar 12, 2026 · v2.1View Terms ↗
Privacy Policy Accepted Mar 12, 2026 · v2.1View Privacy Policy ↗
H-acct-3 — ON with recent support activity
  • Status line: "On since 15 Sep · 14 items added by MystFlo · See them on Brain →". The count is the number of rows/version entries stamped support for this account; "See them on Brain" is the page's standard text-link action (never a button) and lands on /brain, where the rows carry the "Added by MystFlo · 15 Sep" chip and Activity lists "MystFlo added 12 FAQs and your policies".
  • The count is the ONLY number on the section; no per-item list is drawn here — Brain owns what was added, Account owns the switch (one home per fact).
  • Still no lantern: seeded facts land confirmed (#4858, hand-held beta founders); the stamp is the honesty signal, not a review queue.
MystFlo Platform Preview
· Peyton
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Company
Account status
Active · Created Mar 12, 2026 · ✓ Verified
Sign-in & security
Sign in with any active method. Your last used method is noted below.
Google
Last used: Jul 18, 2026, 9:04 AM
Connected
Email & Password
Password set: Jun 2, 2026
Change password →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
Off since 20 Sep · 14 items stay on your Brain
Terms, payments, and your WhatsApp login always stay with you.
Data & privacy
Everything we store about you, what we keep, and how to remove it.
WhatsApp Business 428 messages · 12 templates Erase data
Delete your account 30-day grace period Delete my account
Legal
Terms of Service Accepted Mar 12, 2026 · v2.1View Terms ↗
Privacy Policy Accepted Mar 12, 2026 · v2.1View Privacy Policy ↗
H-acct-4 — revoked
  • Switch off, monochrome status: "Off since 20 Sep · 14 items stay on your Brain". The date is revoked_at; the count stays so the sentence is honest about history — nothing is deleted by switching off (#4858: "history stays").
  • Flipping ON again creates a new grant row — the status line simply returns to "On since <today> · 14 items added by MystFlo".
  • Header link / drawer row return to the OFF wording (shell.html H1 / H1-m).
MystFlo Platform Preview
· Peyton
Account
Your profile and security
Sign-in & security
Google
Last used: Jul 18, 2026, 9:04 AM
Connected
Email & Password
Password set: Jun 2, 2026
Change password →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
Off · nothing added yet
Terms, payments, and your WhatsApp login always stay with you.
Data & privacy
Everything we store about you, what we keep, and how to remove it.
WhatsApp Business 428 messages · 12 templatesErase data
768 — tier RULE, not four twins. The Account column is a single 640px measure at every width ≥ sm (.a-col); at 768 the rail collapses to icons and the same row renders unchanged — title + status left, switch right. The four states (H-acct-1 → H-acct-4) differ only in the status sub-line and the switch position, which are tier-invariant. Drawn once here, OFF, in page context; the row above and below it are the real neighbours.
H-acct-1-mMobile 375 — Help from MystFlo — OFF (the default)
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Account status
Active·✓ Verified
Sign-in & security
Google
Connected
Connected
Email & Password
Set Jun 2, 2026
Change →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
Off · nothing added yet
Terms, payments, and your WhatsApp login always stay with you.
H-acct-1-m · 375 — Help from MystFlo — OFF (the default)
  • Same section, same order, one column. The whole row is the 44px tap (switch + label); the switch itself stays the shadcn size. Status line wraps under the title; "See them on Brain →" wraps to its own line when present, never truncates.
  • Arrives here from the drawer row (shell.html H1-m), scrolled to the eyebrow.
H-acct-2-mMobile 375 — ON — just switched, nothing added yet
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Account status
Active·✓ Verified
Sign-in & security
Google
Connected
Connected
Email & Password
Set Jun 2, 2026
Change →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
On since 15 Sep · nothing added yet
Terms, payments, and your WhatsApp login always stay with you.
H-acct-2-m · 375 — ON — just switched, nothing added yet
  • Same section, same order, one column. The whole row is the 44px tap (switch + label); the switch itself stays the shadcn size. Status line wraps under the title; "See them on Brain →" wraps to its own line when present, never truncates.
  • Arrives here from the drawer row (shell.html H1-m), scrolled to the eyebrow.
H-acct-3-mMobile 375 — ON with recent support activity
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Account status
Active·✓ Verified
Sign-in & security
Google
Connected
Connected
Email & Password
Set Jun 2, 2026
Change →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
On since 15 Sep · 14 items added by MystFlo · See them on Brain →
Terms, payments, and your WhatsApp login always stay with you.
H-acct-3-m · 375 — ON with recent support activity
  • Same section, same order, one column. The whole row is the 44px tap (switch + label); the switch itself stays the shadcn size. Status line wraps under the title; "See them on Brain →" wraps to its own line when present, never truncates.
  • Arrives here from the drawer row (shell.html H1-m), scrolled to the eyebrow.
H-acct-4-mMobile 375 — Revoked — switched off, history stays
Account
Your profile and security
Profile
PT
Peyton Ty
USR-2381
Full name
Email address
Account status
Active·✓ Verified
Sign-in & security
Google
Connected
Connected
Email & Password
Set Jun 2, 2026
Change →
Help from MystFlo
Our team can add and update your business details for you. You'll see everything we add. Switch off anytime.
Let MystFlo help setup
Off since 20 Sep · 14 items stay on your Brain
Terms, payments, and your WhatsApp login always stay with you.
H-acct-4-m · 375 — Revoked — switched off, history stays
  • Same section, same order, one column. The whole row is the 44px tap (switch + label); the switch itself stays the shadcn size. Status line wraps under the title; "See them on Brain →" wraps to its own line when present, never truncates.
  • Arrives here from the drawer row (shell.html H1-m), scrolled to the eyebrow.
Auth
Now
Browsing as Guest
GUEST badge · Account page fields disabled
→
Taps a gated action
"Sign Up →" or "Get early access"
Any edit row, or the header CTA
→
Preview is closed
AuthModal forces Sign In tab
Sign Up tab → early-access invite only
→
Joins the list
WaitlistModal · name + email/WhatsApp
"You're in" — waits to be let in
→
Invited
Real signup or sign-in unlocks
MEMBER badge · full Account page
Gate mechanics
  • The gate = Supabase's project-level "Allow new signups" toggle, not a per-field lock.
  • Every disabled field / "Sign Up →" row routes to the SAME AuthModal → lands on Sign In → Sign Up = early-access funnel into WaitlistModal.
  • No "member preview" tier — fully GUEST or fully MEMBER; a rejected Google OAuth callback redirects to ?earlyAccess=1 → same WaitlistModal.
  • Post-launch reopen changes only AuthModal's default tab + whether Sign Up renders invite or a real form. not built
768 not yet drawn for this flow. Desktop and 375 are the contract.
Get early access Sign in
Account
Profile
G
Guest User
Google
OAuth
Sign Up →
Email & Password
Traditional
Sign Up →
Sign in to run assistants✕
Sign UpSign In
Continue with Google
Or
Email
PasswordForgot password?
Sign In
Or send me a magic link instead
State A — default open (preview)
  • Google button keeps its white Google-brand fill (sanctioned exception — brand mark, not status).
  • Email/password + "Forgot password?" + magic-link fallback all inline in ONE modal — no stacked modal for forgot/magic-sent.
3Signup gate modal — AuthModal, centered dialog · State B
Get early access Sign in
Account
Profile
G
Guest User
Google
OAuth
Sign Up →
Email & Password
Traditional
Sign Up →
Sign up to run assistants✕
Sign UpSign In

We're building in public — assistants aren't live yet.

Join early access and we'll let you in as we open the doors.

Get early access
State B — Sign Up tab tapped
  • No real signup form renders (server rejects new accounts); "Get early access" closes AuthModal → opens WaitlistModal.
  • Post-launch reopen: this tab reverts to the real Google + email/password form. not built
4Waitlist modal — "Get early access" · form state
Get early access Sign in
Account
Profile
G
Guest User
Google
OAuth
Sign Up →
Email & Password
Traditional
Sign Up →
Get early access✕

How should we reach you? (fill at least one)

US +1
Waitlist updates only. Nothing else.
Get early access
Form state
  • Name, then one combined "reach you" group (email + country-code/WhatsApp); at-least-one validation.
  • Opened from the guest gate only: quiet "Already got private access? Sign in →" line under submit (other usages don't carry it).
4Waitlist modal — "Get early access" · success state
Get early access Sign in
Account
Profile
G
Guest User
Google
OAuth
Sign Up →
Email & Password
Traditional
Sign Up →
✓

You're in.

We'll message you on WhatsApp.

Browse and save favorites
Want to help build this?
Test early. Personal setup. Dedicated support. Get a slot for a custom-built assistant for your business.
Success state
  • Confirmation copy branches on channel (WhatsApp / email / both / "already on the list") — WhatsApp branch shown.
  • "Help build this" custom-build upsell panel appears on every success variant.
Part II · Future — build later
No deferred frames — everything above is the current build contract. The post-launch sign-up reopen is noted inline (frames 3 · 5, not built chips), not drawn; it gets a Future frame only once Peyton confirms timing.