:root{--bg: #0f172a;--bg-elevated: #1e293b;--bg-input: #0b1220;--text: #f1f5f9;--text-dim: #cbd5e1;--text-muted: #94a3b8;--accent: #60a5fa;--accent-strong: #3b82f6;--border: #334155;--danger: #f87171;--success: #4ade80;--warning: #fbbf24;--admin-content-max-width: 1380px;--admin-content-padding-x: 2rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;line-height:1.5;color:var(--text);background:var(--bg);color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text)}.portal-loading{display:grid;place-items:center;min-height:100vh;font-size:1.2rem;color:var(--text-dim)}.portal-signin{max-width:32rem;margin:4rem auto;padding:2rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px}.portal-signin-logo-wrap{display:flex;justify-content:center;margin-bottom:1.25rem}.portal-signin-logo{height:40px;width:auto}.portal-signin h1{margin:0 0 1rem;font-size:1.5rem;color:var(--text);text-align:center}.portal-signin form{display:grid;gap:.75rem}.portal-signin label{display:grid;gap:.25rem;font-size:.875rem;font-weight:600;color:var(--text-dim)}.portal-signin input{padding:.625rem .75rem;font-size:1rem;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:6px}.portal-signin input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}.portal-signin button{padding:.7rem 1rem;font-size:1rem;font-weight:600;background:var(--accent-strong);color:#fff;border:0;border-radius:6px;cursor:pointer}.portal-signin button:hover:not(:disabled){filter:brightness(1.1)}.portal-signin button[disabled]{opacity:.6;cursor:not-allowed}.portal-signin-password-rules{margin:.5rem 0 1rem 1.25rem;padding:0;font-size:14px;color:var(--text-muted)}.portal-signin-password-rules li{margin:.25rem 0}.portal-signin-qr{display:flex;justify-content:center;margin:1rem 0;padding:1rem;background:#fff;border-radius:8px}.portal-signin-totp-fallback{margin:.5rem 0 1rem;padding:.5rem .75rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;font-size:14px}.portal-signin-totp-fallback summary{cursor:pointer;user-select:none;color:var(--accent)}.portal-signin-cancel{margin-top:.5rem!important;background:transparent!important;border:1px solid var(--border)!important;color:var(--text-dim)!important;font-size:14px!important;padding:.5rem 1rem!important}.portal-signin-cancel:hover:not(:disabled){background:#f8717114!important;color:var(--danger)!important;border-color:var(--danger)!important}.portal-error{padding:.75rem 1rem;background:#f871711f;border-left:4px solid var(--danger);color:var(--text);border-radius:6px;margin-bottom:1rem}.portal-btn,.portal-link-button{padding:.625rem 1rem;font-size:1rem;font-weight:600;background:var(--accent-strong);color:#fff;border:0;border-radius:6px;cursor:pointer;font-family:inherit;text-decoration:none;display:inline-block}.portal-btn:hover:not(:disabled),.portal-link-button:hover{filter:brightness(1.1)}.portal-btn:disabled{opacity:.6;cursor:not-allowed}.password-input{position:relative;display:block}.password-input input{width:100%;padding-right:2.75rem;box-sizing:border-box}.password-input .password-toggle{position:absolute;top:0;right:0;height:100%;width:2.75rem;margin:0;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:6px;color:#cbd5e1;cursor:pointer}.password-input .password-toggle:hover:not(:disabled),.password-input .password-toggle:focus-visible{background:transparent;filter:none;color:var(--text)}.password-input .password-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.password-input .password-toggle:disabled{cursor:not-allowed;opacity:.6}.password-input .password-toggle svg{width:20px;height:20px;display:block}.portal-toast-stack{position:fixed;top:1rem;right:1rem;z-index:9000;display:flex;flex-direction:column;gap:.5rem;max-width:420px;pointer-events:none}.portal-toast{display:grid;grid-template-columns:24px 1fr 24px;gap:.75rem;align-items:start;padding:.75rem .875rem;border-radius:8px;border:1px solid var(--border);background:#0f172af2;backdrop-filter:blur(6px);color:var(--text);box-shadow:0 6px 20px #00000059;font-size:14px;line-height:1.45;pointer-events:auto;animation:portal-toast-in .22s ease-out}@keyframes portal-toast-in{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.portal-toast-success{border-color:#22c55e73;background:linear-gradient(180deg,#22c55e1a,#0f172af2 40%)}.portal-toast-success .portal-toast-icon{color:#4ade80}.portal-toast-error{border-color:#f871718c;background:linear-gradient(180deg,#f871711f,#0f172af2 40%)}.portal-toast-error .portal-toast-icon{color:#f87171}.portal-toast-info{border-color:#6366f173;background:linear-gradient(180deg,#6366f11a,#0f172af2 40%)}.portal-toast-info .portal-toast-icon{color:var(--accent)}.portal-toast-icon{font-size:17px;font-weight:700;text-align:center}.portal-toast-body{min-width:0}.portal-toast-title{font-weight:600;color:var(--text);word-break:break-word}.portal-toast-detail{margin-top:4px;font-size:14px;color:#cbd5e1;white-space:pre-wrap;word-break:break-word}.portal-toast-close{background:transparent;border:none;color:var(--text-muted);font-size:18px;line-height:1;cursor:pointer;padding:0;width:24px;height:24px;border-radius:4px}.portal-toast-close:hover{background:#ffffff14;color:var(--text)}.portal-signin .portal-toast-close{padding:0;background:transparent;color:var(--text-muted);font-size:18px;font-weight:400;line-height:1;width:24px;height:24px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center}.portal-signin .portal-toast-close:hover:not(:disabled){background:#ffffff14;color:var(--text);filter:none}
