*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#f3f7fa;--card:#fff;--border:#d9e3ec;--text:#0f2540;--muted:#5d7690;--accent:#0090b3;--accent-hover:#007a99;--navy:#036;--danger:#dc2626;--success:#16a34a;color-scheme:light}[data-theme=dark]{--bg:#0a1526;--card:#122238;--border:#24384f;--text:#ecf2f8;--muted:#93a8bd;--accent:#17b1d4;--accent-hover:#3cc3e0;--navy:#9db1c5;--danger:#ef4444;--success:#22c55e;color-scheme:dark}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.auth-wrap,body{min-height:100vh}.auth-wrap{display:flex;align-items:center;justify-content:center;padding:16px}.auth-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:32px;width:100%;max-width:400px}.auth-card h1{font-size:20px;margin-bottom:4px}.auth-card .sub{color:var(--muted);font-size:14px;margin-bottom:24px}label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:14px;margin-bottom:16px}input:focus{outline:none;border-color:var(--accent)}button{width:100%;padding:10px 12px;border-radius:8px;border:none;background:var(--accent);color:#fff;font-size:14px;font-weight:600;cursor:pointer}button:hover{background:var(--accent-hover)}button:disabled{opacity:.6;cursor:not-allowed}.error{background:rgba(239,68,68,.1);border:1px solid var(--danger);color:var(--danger);border-radius:8px}.error,.success-msg{padding:10px 12px;font-size:13px;margin-bottom:16px}.success-msg{background:rgba(34,197,94,.1);border:1px solid var(--success);color:var(--success);border-radius:8px}.theme-fab{position:fixed;right:18px;bottom:18px;width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:var(--card);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 12px rgba(0,0,0,.12);z-index:999;padding:0;font-size:18px;line-height:1}.theme-fab:hover{color:var(--accent);background:var(--card)}.auth-card,body,button,input{transition:background .2s ease,color .2s ease,border-color .2s ease}