diff --git a/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx b/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx
index 21ae6990..260a1bbf 100644
--- a/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx
+++ b/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx
@@ -49,8 +49,8 @@ const BeatSignIn: React.FC<{
};
const rows: Array<{ id: string; name: string; icon: React.ReactNode; onClick: () => void; hint?: string }> = [
- { id: 'google', name: 'Continue with Google', icon: , onClick: onGoogle, hint: waitingGoogle && !signedIn ? 'waiting for your browser...' : undefined },
- { id: 'email', name: 'Continue with email', icon: , onClick: () => { if (!signedIn) setEmailOpen(true); } },
+ { id: 'google', name: 'Continue with Google', icon: , onClick: onGoogle, hint: waitingGoogle && !signedIn ? 'Waiting for your browser...' : undefined },
+ { id: 'email', name: 'Continue with email', icon: , onClick: () => { if (!signedIn) setEmailOpen(true); } },
];
return (
@@ -65,42 +65,59 @@ const BeatSignIn: React.FC<{
wide
logo={}
>
-
- {rows.map((row, i) => (
-
+ {signedIn ? (
+ // Claude/ChatGPT-style done state: one quiet confirmation card, the buttons step aside.
+
-
- {row.name}
- {row.hint && {row.hint}}
-
- {row.icon}
+
-
- ))}
- {signedIn ? (
-
-
- Signed in{userEmail ? ` as ${userEmail}` : ''}
-
+
+ You're signed in
+ {userEmail && (
+ {userEmail}
+ )}
+
+
) : (
-
- Sign in to continue.
-
+ <>
+ {rows.map((row, i) => (
+ // The Claude/ChatGPT auth grammar: full-width white button, brand mark on the left,
+ // label centered, thin border, generous height. No decoration doing the talking.
+
+ {row.icon}
+
+ {row.hint ? row.hint : row.name}
+
+
+ ))}
+
+ Sign in to continue.
+
+ >
)}
{emailOpen && !signedIn && setEmailOpen(false)} />}