.auth-error{color:color-mix(in srgb,var(--danger) 88%,var(--text) 12%)}.auth-success{color:color-mix(in srgb,var(--success) 82%,var(--text) 18%)}.auth-link{font-size:var(--text-sm);color:var(--muted);text-decoration:underline;text-underline-offset:2px}.auth-link:hover{color:var(--text)}.auth-hint{color:var(--muted);font-size:var(--text-sm)}.landing-shell{width:min(100%,52rem);margin:0 auto;display:grid;grid-gap:var(--space-5);gap:var(--space-5)}.landing-hero{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);box-shadow:var(--shadow);padding:var(--space-6)}.landing-kicker{margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:.12em;font-size:var(--text-xs);color:var(--muted)}.landing-subtitle{margin-top:var(--space-2);color:var(--muted)}.auth-card,.auth-grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.auth-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);box-shadow:var(--shadow);padding:var(--space-6)}.auth-card header{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.auth-card header p,.auth-field{color:var(--muted)}.auth-field{display:grid;grid-gap:var(--space-2);gap:var(--space-2);font-size:var(--text-md)}.auth-submit{width:100%}@media (max-width:40rem){.landing-shell{width:100%}.auth-card,.landing-hero{padding:var(--space-5)}}:root,html[data-theme=light]{color-scheme:light;--bg:#f3f6fb;--surface-1:#fff;--surface-2:#eef3fb;--surface-3:#e4ebf7;--bg-sidebar:color-mix(in srgb,var(--surface-3) 86%,var(--border) 14%);--text:#101828;--muted:#475467;--border:#d6deea;--shadow:0 16px 38px rgba(11,24,48,.12);--accent:#1d4ed8;--accent-strong:#1e40af;--text-on-accent:#f8fbff;--focus-ring:#3b82f6;--danger:#dc2626;--danger-soft:#fde7e7;--success:#15803d;--success-soft:#e5f6ea;--color-brand-500:var(--accent);--color-brand-600:var(--accent-strong);--color-danger-500:var(--danger);--color-success-500:var(--success);--color-warning-500:#d97706;--color-info-500:#0891b2;--color-focus-ring:var(--focus-ring);--color-danger-fg:color-mix(in srgb,var(--danger) 88%,var(--text) 12%);--color-danger-border:color-mix(in srgb,var(--danger) 44%,var(--border) 56%);--color-danger-bg:color-mix(in srgb,var(--danger) 12%,var(--surface-1));--color-danger-bg-hover:color-mix(in srgb,var(--danger) 18%,var(--surface-1));--button-primary-bg:var(--color-brand-500);--button-primary-bg-hover:var(--color-brand-600);--button-primary-border:var(--color-brand-600);--button-primary-text:#fff;--button-secondary-bg:var(--bg-surface);--button-secondary-bg-hover:var(--bg-surface-hover,var(--bg-surface));--button-secondary-border:var(--border-default);--button-secondary-text:var(--text-primary);--button-danger-bg:var(--color-danger-bg);--button-danger-bg-hover:var(--color-danger-bg-hover);--button-danger-border:var(--color-danger-border);--button-danger-text:var(--color-danger-fg);--graph-canvas:var(--bg-surface);--graph-grid:var(--border-default);--graph-edge:var(--text-muted);--graph-node-fill:var(--success-soft);--graph-node-fill-hover:color-mix(in srgb,var(--success) 25%,var(--success-soft));--graph-node-text:var(--text-primary);--graph-overlay-fill:color-mix(in srgb,var(--bg-surface) 94%,transparent);--graph-overlay-fill-muted:color-mix(in srgb,var(--bg-overlay) 82%,transparent);--graph-overlay-text:var(--text-secondary);--graph-overlay-text-muted:var(--text-muted);--graph-overlay-edge:var(--border-strong)}html[data-theme=dark]{color-scheme:dark;--bg:#0b1220;--surface-1:#111b2f;--surface-2:#18253d;--surface-3:#21304d;--text:#e2e8f3;--muted:#98a6c0;--border:#2a3b5b;--shadow:0 18px 40px rgba(0,0,0,.42);--accent:#60a5fa;--accent-strong:#3b82f6;--text-on-accent:#061024;--focus-ring:#93c5fd;--danger:#f87171;--danger-soft:#40202a;--success:#4ade80;--success-soft:#193225;--color-brand-500:var(--accent);--color-brand-600:var(--accent-strong);--color-danger-500:var(--danger);--color-success-500:var(--success);--color-warning-500:#f59e0b;--color-info-500:#22d3ee;--color-focus-ring:var(--focus-ring);--color-danger-fg:color-mix(in srgb,var(--danger) 88%,var(--text) 12%);--color-danger-border:color-mix(in srgb,var(--danger) 48%,var(--border) 52%);--color-danger-bg:color-mix(in srgb,var(--danger) 15%,var(--surface-1));--color-danger-bg-hover:color-mix(in srgb,var(--danger) 20%,var(--surface-1));--button-primary-bg:#2563eb;--button-primary-bg-hover:#1d4ed8;--button-primary-border:#1d4ed8;--button-primary-text:#fff;--button-secondary-bg:#1f2937;--button-secondary-bg-hover:#111827;--button-secondary-border:#374151;--button-secondary-text:#f3f4f6;--button-danger-bg:#7f1d1d;--button-danger-bg-hover:#991b1b;--button-danger-border:#b91c1c;--button-danger-text:#fee2e2;--graph-canvas:var(--bg-surface);--graph-grid:var(--border-default);--graph-edge:var(--text-muted);--graph-node-fill:color-mix(in srgb,var(--success) 40%,var(--success-soft));--graph-node-fill-hover:color-mix(in srgb,var(--success) 50%,var(--success-soft));--graph-node-text:var(--text-primary);--graph-overlay-fill:color-mix(in srgb,var(--bg-surface) 96%,transparent);--graph-overlay-fill-muted:color-mix(in srgb,var(--bg-overlay) 86%,transparent);--graph-overlay-text:var(--text-secondary);--graph-overlay-text-muted:var(--text-muted);--graph-overlay-edge:var(--border-strong)}body,html{max-width:100vw;min-height:100%;overflow-x:hidden;background:var(--bg);background-image:none}*{box-sizing:border-box;padding:0;margin:0}body{min-height:100dvh;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}:where(a,button,input,select,textarea,[role=button],[tabindex]):focus-visible{outline:var(--focus-ring-outline);outline-offset:var(--focus-ring-offset)}button,input,select,textarea{font:inherit}.muted{color:var(--muted)}.mono{font-family:var(--font-mono)}.context-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.empty-state{padding:var(--space-5);border-radius:var(--radius-md);border:1px solid var(--border);background:color-mix(in srgb,var(--surface-2) 84%,transparent);color:var(--muted)}.empty-state.error,.error-text{color:color-mix(in srgb,var(--danger) 88%,var(--text) 12%)}.success-text{color:color-mix(in srgb,var(--success) 82%,var(--text) 18%)}