:root{--bg:#070708;--card:#0f0f11;--surf:#151518;--hover:#1c1c20;--bd:#232328;--bd2:#2e2e35;--fg:#f4f4f5;--mut:#a1a1aa;--brand:#ff6a2b;--brand2:#ff9a3d;--ok:#3ddc84;--bad:#f87171;--warn:#fbbf24;color-scheme:dark}
html.light{--bg:#f3f3f5;--card:#fff;--surf:#f6f6f8;--hover:#efeff2;--bd:#e4e4e8;--bd2:#d6d6dc;--fg:#18181b;--mut:#6b6b76;--ok:#15a34a;--bad:#dc2626;--warn:#b45309;color-scheme:light}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 Geist,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:"Bricolage Grotesque",Geist,sans-serif;letter-spacing:-.02em;margin:0}
a{color:var(--brand)}
button,input,select,textarea{font:inherit;color:inherit}
.logo{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--brand2),var(--brand));display:grid;place-items:center;color:#fff;font:800 20px "Bricolage Grotesque",sans-serif;box-shadow:0 8px 24px rgba(255,106,43,.3)}
.in{width:100%;background:var(--surf);border:1px solid var(--bd);border-radius:11px;padding:11px 13px;outline:none;transition:border-color .15s,box-shadow .15s}
.in:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,106,43,.18)}
textarea.in{min-height:90px;resize:vertical}
select.in{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}
label{display:block;font-size:13px;font-weight:500;color:var(--mut);margin:0 0 6px}
.fl{margin-bottom:14px}
.bt{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--bd);background:var(--surf);border-radius:11px;padding:9px 14px;font-weight:600;font-size:14px;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;white-space:nowrap;text-decoration:none;color:var(--fg)}
.bt:hover{background:var(--hover);border-color:var(--bd2)}
.bt.pr{background:linear-gradient(135deg,var(--brand2),var(--brand));border-color:transparent;color:#fff}
.bt.pr:hover{filter:brightness(1.06)}
.bt.dg{color:var(--bad)}
.bt.sm{padding:6px 10px;font-size:13px;border-radius:9px}
.bt[disabled]{opacity:.5;pointer-events:none}
.err{color:var(--bad);font-size:14px;min-height:20px;margin:4px 0 10px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:18px}
.mut{color:var(--mut)}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:11px;font-weight:600;font-size:14px;transition:.2s;pointer-events:none;z-index:99}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* login / setup */
.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:radial-gradient(900px 500px at 50% -10%,rgba(255,106,43,.14),transparent 60%),var(--bg)}
.auth .card{width:100%;max-width:400px;padding:32px 28px}
.auth .hd{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.auth .hd b{font:800 22px "Bricolage Grotesque",sans-serif}
.auth h1{font-size:24px;margin-bottom:6px}
.auth p.sub{color:var(--mut);margin:0 0 22px;font-size:14px}
.auth .bt.pr{width:100%;padding:12px}
.pw{position:relative}.pw .in{padding-right:44px}
.pw button{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:none;color:var(--mut);cursor:pointer;padding:6px;border-radius:8px}
.foot{text-align:center;color:var(--mut);font-size:13px;margin-top:18px}
