MCP-1821 — OAuth login-required = calm Sign-in CTA

4 / 4 scenarios PASS. Frontend renders OAuth login-required as a calm amber Sign-in CTA (replacing the red Server-Error/file-a-bug panel), with a re-auth error variant and quarantine coexistence. Unit: 138/138 vitest pass (16 cover this change); vue-tsc clean; make build embeds the bundle. States driven by route-mocked /api/v1/servers against a live mcpproxy on :18091.
PASS Servers list — amber Sign-in chips

Expected: All three OAuth servers show health.action='login'.

Observed: Each card status chip reads a calm amber 'Sign-in required' (not red 'Disconnected'/'Unhealthy') with a Login button. The quarantined card keeps its quarantine warning.

PASS Detail — first-time login (calm CTA)

Expected: github-oauth: health.action='login', diagnostic MCPX_OAUTH_LOGIN_REQUIRED carrying a stale 'Report a bug' fix step.

Observed: Calm amber SignInPanel '🔑 Sign in to github-oauth' with a primary [Log in] button and docs link replaces the red ErrorPanel. The 'issues/new' bug-report CTA is suppressed. Header badge = amber 'Sign-in required'.

PASS Detail — expired session (re-auth)

Expected: gdrive-expired: diagnostic MCPX_OAUTH_REFRESH_EXPIRED.

Observed: Error-toned panel '🔑 Session expired — sign in to gdrive-expired' leads with a primary [Re-login] button. Keeps the error tone but stays actionable.

PASS Detail — login + quarantine coexist

Expected: slack-quarantined-oauth: health.action='login' AND quarantined=true.

Observed: Sign-in panel shows plus a note: login is allowed now, but tools stay blocked until Approve. The separate Security Quarantine panel (Approve) also renders — both gates surfaced.