:root{--brand-50:#f5f3ff;--brand-100:#ede9fe;--brand-200:#ddd6fe;--brand-300:#c4b5fd;--brand-400:#a78bfa;--brand-500:#8b5cf6;--brand-600:#7c3aed;--brand-700:#6d28d9;--brand-800:#5b21b6;--brand-900:#4c1d95;--brand-950:#2e1065;--ink-50:#fafafa;--ink-100:#f4f4f5;--ink-200:#e4e4e7;--ink-300:#d4d4d8;--ink-400:#a1a1aa;--ink-500:#71717a;--ink-600:#52525b;--ink-700:#3f3f46;--ink-800:#27272a;--ink-900:#18181b;--ink-950:#0b0b0f;--ok-500:#10b981;--ok-100:#d1fae5;--warn-500:#f59e0b;--warn-100:#fef3c7;--danger-500:#ef4444;--danger-100:#fee2e2;--info-500:#0ea5e9;--info-100:#e0f2fe;--ok-700:#047857;--warn-700:#b45309;--danger-600:#dc2626;--info-700:#0369a1;--bg:var(--ink-100);--surface:#ffffff;--surface-sunk:var(--ink-50);--border:var(--ink-200);--border-strong:var(--ink-300);--text:var(--ink-900);--text-muted:var(--ink-500);--text-inverse:#ffffff;--page-wash:radial-gradient(1200px 600px at 12% -8%,rgba(124,58,237,0.10),transparent 60%),radial-gradient(900px 500px at 92% 4%,rgba(14,165,233,0.07),transparent 55%);--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--text-xs:0.75rem;--text-sm:0.8125rem;--text-base:0.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--weight-normal:400;--weight-medium:500;--weight-semi:600;--weight-bold:700;--leading-tight:1.25;--leading-normal:1.55;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:6px;--radius:10px;--radius-lg:14px;--radius-xl:20px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(11,11,15,0.05);--shadow:0 1px 3px rgba(11,11,15,0.07),0 8px 24px -12px rgba(11,11,15,0.12);--shadow-lg:0 2px 6px rgba(11,11,15,0.06),0 24px 48px -24px rgba(11,11,15,0.22);--ring:0 0 0 3px rgba(124,58,237,0.28);--ease:cubic-bezier(0.16,1,0.3,1);--dur-fast:120ms;--dur:220ms;--dur-slow:420ms;--sidebar-width:264px;--topbar-height:60px}[data-theme="dark"]{--bg:var(--ink-950);--surface:#141419;--surface-sunk:#101015;--border:#26262e;--border-strong:#33333d;--text:var(--ink-100);--text-muted:var(--ink-400);--page-wash:radial-gradient(1200px 600px at 12% -8%,rgba(124,58,237,0.16),transparent 60%),radial-gradient(900px 500px at 92% 4%,rgba(14,165,233,0.08),transparent 55%);--shadow-sm:0 1px 2px rgba(0,0,0,0.4);--shadow:0 1px 3px rgba(0,0,0,0.5),0 8px 24px -12px rgba(0,0,0,0.6);--shadow-lg:0 2px 6px rgba(0,0,0,0.5),0 24px 48px -24px rgba(0,0,0,0.75);--ok-100:rgba(16,185,129,0.16);--ok-700:#6ee7b7;--warn-100:rgba(245,158,11,0.16);--warn-700:#fcd34d;--danger-100:rgba(239,68,68,0.16);--danger-600:#fca5a5;--info-100:rgba(14,165,233,0.16);--info-700:#7dd3fc}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0ms;--dur:0ms;--dur-slow:0ms}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{margin:0;color:var(--text);font-weight:var(--weight-semi);line-height:var(--leading-tight);letter-spacing:-0.01em}p{margin:0}a{color:var(--brand-700);text-decoration:none;transition:color var(--dur-fast) var(--ease)}a:hover{color:var(--brand-800);text-decoration:underline}a:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-sm)}img,svg{max-width:100%;height:auto;vertical-align:middle}.icon{flex:none;display:inline-block}code,pre{font-family:var(--font-mono);font-size:0.9em}.linkbtn{background:none;border:0;padding:0;font:inherit;color:var(--brand-700);cursor:pointer;text-decoration:none}.linkbtn:hover{color:var(--brand-800);text-decoration:underline}.linkbtn:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dot{display:inline-block;width:7px;height:7px;border-radius:var(--radius-pill);margin-right:var(--space-2);flex:none;background:var(--ink-300)}.dot--violet{background:var(--brand-500)}.dot--cyan{background:var(--info-500)}.dot--amber{background:var(--warn-500)}.dot--green{background:var(--ok-500)}.dot--red{background:var(--danger-500)}.form{display:flex;flex-direction:column;gap:var(--space-5)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field__labelrow{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.field__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text)}.field__aside{font-size:var(--text-sm)}.field__input,.field__select,.field__textarea{width:100%;padding:var(--space-3) var(--space-4);font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease)}.field__textarea{min-height:120px;resize:vertical}.field__input::placeholder{color:var(--ink-400)}.field__input:hover:not(:disabled),.field__select:hover:not(:disabled){border-color:var(--ink-400)}.field__input:focus,.field__select:focus,.field__textarea:focus{outline:none;border-color:var(--brand-500);box-shadow:var(--ring)}.field__input:disabled,.field__select:disabled{background:var(--surface-sunk);color:var(--text-muted);cursor:not-allowed}.field--invalid .field__input,.field--invalid .field__select,.field--invalid .field__textarea{border-color:var(--danger-500)}.field--invalid .field__input:focus{box-shadow:0 0 0 3px rgba(239,68,68,0.25)}.field__error{font-size:var(--text-sm);color:var(--danger-500)}.field__hint{font-size:var(--text-sm);color:var(--text-muted)}.field__group{position:relative;display:flex}.field__group .field__input{padding-right:44px}.field__reveal{position:absolute;top:0;right:0;bottom:0;width:40px;display:flex;align-items:center;justify-content:center;background:transparent;border:0;border-radius:var(--radius);color:var(--text-muted);cursor:pointer;transition:color var(--dur-fast) var(--ease)}.field__reveal:hover{color:var(--text)}.field__reveal:focus-visible{outline:none;box-shadow:var(--ring)}.field__reveal[aria-pressed="true"]{color:var(--brand-700)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);font:inherit;font-weight:var(--weight-medium);border:1px solid transparent;border-radius:var(--radius);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur) var(--ease)}.btn[hidden]{display:none}.btn:hover{text-decoration:none}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn:disabled{opacity:0.55;cursor:not-allowed;transform:none}.btn--block{width:100%}.btn--lg{padding:var(--space-4) var(--space-8);font-size:var(--text-md);font-weight:var(--weight-semi);border-radius:var(--radius-lg)}.btn--primary{background:var(--brand-700);color:var(--text-inverse)}.btn--primary:hover:not(:disabled){background:var(--brand-800);color:var(--text-inverse)}.btn--ghost{background:transparent;color:var(--text);border-color:var(--border-strong)}.btn--ghost:hover:not(:disabled){background:var(--surface-sunk)}.btn--danger{background:var(--danger-500);color:var(--text-inverse)}.btn--danger:hover:not(:disabled){background:#dc2626;color:var(--text-inverse)}.flash-stack{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-5)}.flash{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-sm);background:var(--surface-sunk);color:var(--text);animation:flash-in var(--dur) var(--ease) both}@keyframes flash-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.flash__glyph{flex:none;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--weight-bold);line-height:1}.flash__text{padding-top:1px}.flash--success{background:var(--ok-100);border-color:#a7f3d0}.flash--success .flash__glyph{background:var(--ok-500);color:#ffffff}.flash--error{background:var(--danger-100);border-color:#fecaca}.flash--error .flash__glyph{background:var(--danger-500);color:#ffffff}.flash--warning{background:var(--warn-100);border-color:#fde68a}.flash--warning .flash__glyph{background:var(--warn-500);color:#ffffff}.flash--info{background:var(--info-100);border-color:#bae6fd}.flash--info .flash__glyph{background:var(--info-500);color:#ffffff}.flash{position:relative}.flash__close{margin-left:auto;background:transparent;border:0;color:inherit;opacity:0.55;cursor:pointer;padding:0 var(--space-1);font-size:var(--text-md);line-height:1}.flash__close:hover{opacity:1}.flash--leaving{animation:flash-out var(--dur) var(--ease) forwards}@keyframes flash-out{to{opacity:0;transform:translateY(-6px);height:0;margin:0;padding-top:0;padding-bottom:0}}[data-theme="dark"] .flash--success{background:rgba(16,185,129,0.12);border-color:rgba(16,185,129,0.3)}[data-theme="dark"] .flash--error{background:rgba(239,68,68,0.12);border-color:rgba(239,68,68,0.3)}[data-theme="dark"] .flash--warning{background:rgba(245,158,11,0.12);border-color:rgba(245,158,11,0.3)}[data-theme="dark"] .flash--info{background:rgba(14,165,233,0.12);border-color:rgba(14,165,233,0.3)}.auth-page{min-height:100vh;background-color:var(--bg)}.auth-shell{display:grid;grid-template-columns:1fr;min-height:100vh}@media (min-width:900px){.auth-shell{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}}.auth-aside{display:none;position:relative;overflow:hidden;background:radial-gradient(900px 520px at 18% 8%,rgba(167,139,250,0.30),transparent 62%),radial-gradient(700px 460px at 82% 78%,rgba(14,165,233,0.20),transparent 60%),linear-gradient(150deg,var(--brand-950) 0%,#3b0f6f 48%,var(--brand-900) 100%)}@media (min-width:900px){.auth-aside{display:block}}.auth-aside--image{background-image:linear-gradient(180deg,rgba(20,10,40,0.62),rgba(20,10,40,0.30) 45%,rgba(20,10,40,0.68)),var(--auth-image),linear-gradient(150deg,var(--brand-950),var(--brand-900));background-size:cover,cover,cover;background-position:center,center,center;background-repeat:no-repeat}.auth-aside--image::after{display:none}.auth-aside--image .auth-aside__inner{justify-content:flex-start}.auth-aside::after{content:"";position:absolute;inset:0;opacity:0.16;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E")}.auth-aside__inner{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-12);padding:var(--space-12) var(--space-12);color:rgba(255,255,255,0.92)}.auth-brand{display:flex;align-items:center;gap:var(--space-3)}.auth-brand__mark{width:34px;height:34px;border-radius:var(--radius-sm);object-fit:contain;background:rgba(255,255,255,0.10);padding:4px}.auth-brand__name{font-size:var(--text-md);font-weight:var(--weight-semi);letter-spacing:-0.01em;color:#ffffff}.auth-aside__pitch{max-width:26rem}.auth-aside__pitch h2{color:#ffffff;font-size:var(--text-3xl);font-weight:var(--weight-semi);letter-spacing:-0.02em;margin-bottom:var(--space-4);animation:aside-rise var(--dur-slow) var(--ease) both}.auth-aside__pitch p{color:rgba(255,255,255,0.72);font-size:var(--text-md);animation:aside-rise var(--dur-slow) var(--ease) 80ms both}.auth-aside__points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3);font-size:var(--text-sm);color:rgba(255,255,255,0.78)}.auth-aside__points li{display:flex;align-items:center;animation:aside-rise var(--dur-slow) var(--ease) both}.auth-aside__points li:nth-child(1){animation-delay:140ms}.auth-aside__points li:nth-child(2){animation-delay:200ms}.auth-aside__points li:nth-child(3){animation-delay:260ms}@keyframes aside-rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-6);padding:var(--space-8) var(--space-5);background-color:var(--bg);background-image:var(--page-wash);background-repeat:no-repeat}@media (min-width:900px){.auth-main{background-image:none}}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-8);animation:card-rise var(--dur-slow) var(--ease) both}@keyframes card-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.auth-card__brand{margin-bottom:var(--space-6)}.auth-card__logo{height:34px;width:auto}@media (min-width:900px){.auth-card__brand{display:none}}.auth-head{margin-bottom:var(--space-6)}.auth-head h1{color:var(--text);font-size:var(--text-xl);margin-bottom:var(--space-1)}.auth-head p{color:var(--text-muted);font-size:var(--text-sm)}.auth-alt{margin-top:var(--space-5);text-align:center;font-size:var(--text-sm);color:var(--text-muted)}.auth-foot{font-size:var(--text-xs);color:var(--text-muted);display:flex;align-items:center;gap:var(--space-2)}.authdialog{max-width:26rem;width:calc(100% - var(--space-8));padding:var(--space-8);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow-lg);text-align:center}.authdialog::backdrop{background:rgba(11,11,15,0.5);backdrop-filter:blur(2px)}.authdialog__icon{display:grid;place-items:center;width:44px;height:44px;margin:0 auto var(--space-4);border-radius:var(--radius-pill);background:var(--brand-100);color:var(--brand-700)}.authdialog__title{font-size:var(--text-lg);font-weight:var(--weight-semi);color:var(--text);margin-bottom:var(--space-2)}.authdialog__body{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-6)}