/* portal/CSS/login.css: the minimal estate glass for the sign-in page.
   System fonts until 3b self-hosts Inter; 3b replaces this file wholesale. */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{--bg:#050a14;--card:rgba(255,255,255,0.04);--line:rgba(77,166,255,0.22);--text:#fff;--muted:rgba(255,255,255,0.6);--faint:rgba(255,255,255,0.35);--blue:#4da6ff;--amber:#f5b342;--red:#ff6b6b;--field:rgba(0,0,0,0.35)}
[data-theme="light"]{--bg:#eef1f6;--card:rgba(255,255,255,0.7);--line:rgba(43,127,212,0.3);--text:#1a1a2e;--muted:rgba(0,0,0,0.6);--faint:rgba(0,0,0,0.42);--blue:#1a66b5;--amber:#b3761a;--red:#c0392b;--field:rgba(255,255,255,0.9)}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{min-height:100%}
body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5;letter-spacing:0.01em;display:flex;align-items:center;justify-content:center;padding:24px}
::selection{background:rgba(245,179,66,0.32);color:#fff}
[data-theme="light"] ::selection{background:rgba(245,179,66,0.5);color:#1a1a2e}
#llLoader{display:none}
html.ll-loading #llLoader{display:block;position:fixed;inset:0;z-index:10001;background:#050a14;opacity:1;transition:opacity 0.25s ease}
html[data-theme="light"].ll-loading #llLoader{background:#eef1f6}
html.ll-loading #llLoader.done{opacity:0;pointer-events:none}
.scanlines{position:fixed;inset:0;pointer-events:none;z-index:9999;background:repeating-linear-gradient(0deg,rgba(3,5,10,0.5) 0 1px,transparent 1px 3px);opacity:0.045}
[data-theme="light"] .scanlines{opacity:0.028}
.auth{position:relative;z-index:1;width:100%;max-width:400px}
.auth-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:32px 28px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 20px 60px rgba(0,0,0,0.25)}
.auth-logo{display:block;margin:0 auto 18px;filter:drop-shadow(0 0 12px rgba(77,166,255,0.35))}
.light-only{display:none}
[data-theme="light"] .dark-only{display:none}
[data-theme="light"] .light-only{display:block}
.auth-eyebrow{font-size:11px;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;color:var(--blue);text-align:center;margin-bottom:6px}
.auth-eyebrow .prompt{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.auth-title{font-size:22px;font-weight:800;letter-spacing:-0.03em;text-align:center}
.auth-sub{font-size:14px;color:var(--muted);text-align:center;margin:8px 0 20px}
.auth-error{color:var(--red);font-size:14px;margin:0 0 14px;text-align:center}
.auth-sent{color:var(--amber);font-size:14px;margin:0 0 14px;text-align:center;overflow-wrap:anywhere}
.auth-form{display:flex;flex-direction:column;gap:10px}
.auth-label{font-size:12px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--faint)}
.auth-input{width:100%;min-height:44px;padding:10px 14px;font:inherit;font-size:16px;color:var(--text);background:var(--field);border:1px solid var(--line);border-radius:8px;outline:none}
.auth-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(77,166,255,0.2)}
.auth-input-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:22px;letter-spacing:0.3em;text-align:center}
.auth-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.auth-btn{min-height:44px;margin-top:6px;padding:10px 16px;font:inherit;font-weight:700;color:#050a14;background:var(--blue);border:0;border-radius:8px;cursor:pointer}
.auth-btn:hover{filter:brightness(1.08)}
.auth-btn:disabled{opacity:0.6;cursor:default}
.auth-btn:focus-visible,.auth-link:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
[data-theme="light"] .auth-btn{color:#fff}
.auth-link{min-height:44px;background:none;border:0;color:var(--blue);font:inherit;font-size:14px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.auth-foot{margin-top:18px;text-align:center;font-size:12px;letter-spacing:0.08em;text-transform:uppercase;color:var(--faint)}
@media (prefers-reduced-motion:reduce){html.ll-loading #llLoader{transition:none}}
