:root{--bg:#FFFFFF;--surface:#FFFFFF;--surface-2:#F8FAFC;--ink:#0F172A;--ink-2:#334155;--muted:#64748B;--subtle:#94A3B8;--line:#E2E8F0;--line-strong:#CBD5E1;--accent:#2563EB;--accent-soft:#EFF4FF;--btn:#0F172A;--btn-hover:#1E293B;--btn-ink:#FFFFFF;--ok:#16A34A;--ok-soft:#EAF7EE;--crit:#DC2626;--crit-soft:#FDECEC;--warn:#B45309;--focus:color-mix(in srgb, var(--accent) 18%, transparent);--font:'Inter','Segoe UI',system-ui,-apple-system,sans-serif;--mono:'JetBrains Mono',Consolas,'Courier New',monospace;--wallpaper:url(../assets/wallpapers/skyline.svg);color-scheme:light}[data-theme=dark]{--bg:#0B1220;--surface:#111A2E;--surface-2:#162036;--ink:#E5EAF3;--ink-2:#C3CCDA;--muted:#8C99AE;--subtle:#66748B;--line:#22304A;--line-strong:#2E3D5A;--accent:#60A5FA;--accent-soft:#15284A;--btn:#E5EAF3;--btn-hover:#FFFFFF;--btn-ink:#0B1220;--ok:#4ADE80;--ok-soft:#12301F;--crit:#F87171;--crit-soft:#3A1717;--warn:#FBBF24;--focus:rgba(96,165,250,.25);color-scheme:dark}[data-theme=dim]{--bg:#1E2533;--surface:#252D3D;--surface-2:#2B3447;--ink:#E6E9EF;--ink-2:#C8CEDA;--muted:#9AA4B5;--subtle:#758096;--line:#364054;--line-strong:#455067;--accent:#7AA7F7;--accent-soft:#2B3A5A;--btn:#E6E9EF;--btn-hover:#FFFFFF;--btn-ink:#1E2533;--ok:#5EDB8C;--ok-soft:#1F3A2C;--crit:#F58A8A;--crit-soft:#452628;--warn:#F5C451;--focus:rgba(122,167,247,.25);color-scheme:dark}[data-theme=contrast]{--bg:#000000;--surface:#000000;--surface-2:#0A0A0A;--ink:#FFFFFF;--ink-2:#FFFFFF;--muted:#D6D6D6;--subtle:#BDBDBD;--line:#FFFFFF;--line-strong:#FFFFFF;--accent:#FFD60A;--accent-soft:#2A2400;--btn:#FFD60A;--btn-hover:#FFE45C;--btn-ink:#000000;--ok:#3DFF7A;--ok-soft:#002B10;--crit:#FF6B6B;--crit-soft:#2B0000;--warn:#FFD60A;--focus:rgba(255,214,10,.45);color-scheme:dark}*{box-sizing:border-box}body,html{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}[hidden]{display:none!important}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.icon{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.icon.sm{width:15px;height:15px}.mono,code{font-family:var(--mono)}.auth{min-height:100vh;display:grid;grid-template-columns:minmax(440px,600px) 1fr}.auth-form{display:flex;flex-direction:column;padding:36px 64px 28px;min-width:0}.logo{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:17px;letter-spacing:-.02em;color:var(--ink)}.logo:hover{text-decoration:none}.logo img{width:28px;height:28px;object-fit:contain;flex:none}.logo>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html:not(.brand-ready) [data-brand-name],html:not(.brand-ready) img[data-brand-logo]{visibility:hidden}.form-wrap{flex:1;display:flex;flex-direction:column;justify-content:center;max-width:420px;width:100%;padding-block:40px}h1{margin:0;font-size:26px;font-weight:600;letter-spacing:-.025em}.sub{margin:8px 0 0;color:var(--muted);font-size:15px}.lead{margin:28px 0 0}.field{margin-top:18px}.field-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.label,label{display:block;font-size:13px;font-weight:500;color:var(--ink-2);margin-bottom:6px}.hint{margin:6px 0 0;font-size:12.5px;color:var(--muted)}.input-wrap{position:relative}.input{width:100%;height:42px;padding:0 12px;border:1px solid var(--line-strong);border-radius:8px;font:14px var(--font);color:var(--ink);background:var(--surface);transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--subtle)}.input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.input.with-btn{padding-right:44px}.input.code{font:600 22px var(--mono);letter-spacing:.45em;text-align:center;height:52px;padding-left:.45em}.reveal{position:absolute;right:4px;top:4px;width:34px;height:34px;border:0;background:0 0;color:var(--muted);cursor:pointer;border-radius:6px;display:grid;place-items:center}.reveal:hover{color:var(--ink);background:var(--surface-2)}.btn-primary,.btn-secondary{width:100%;height:44px;border-radius:8px;font:500 14px var(--font);cursor:pointer;transition:background .15s,border-color .15s;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-primary{margin-top:24px;border:0;background:var(--btn);color:var(--btn-ink)}.btn-primary:hover:not(:disabled){background:var(--btn-hover)}a.btn-primary,a.btn-primary:hover{text-decoration:none}.btn-secondary{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-primary:disabled,.btn-secondary:disabled{opacity:.6;cursor:default}.btn-row{display:flex;gap:10px;margin-top:24px}.btn-row .btn-primary{margin-top:0}.link-btn{background:0 0;border:0;padding:0;color:var(--accent);font:500 13px var(--font);cursor:pointer}.link-btn:hover{text-decoration:underline}.link-btn.muted{color:var(--muted)}.form-msg{margin:14px 0 0;font-size:13px;color:var(--muted)}.form-msg.error{color:var(--crit)}.form-msg.ok{color:var(--ok)}.notice{display:flex;gap:10px;align-items:flex-start;margin-top:20px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--ink-2);font-size:13px}.notice .icon{color:var(--accent);margin-top:1px}.meter{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:8px}.meter i{display:block;height:100%;width:0;transition:width .2s,background .2s;background:var(--crit)}.meter.fair i{background:#f59e0b}.meter.good i{background:var(--ok)}.auth-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.status{display:inline-flex;align-items:center;gap:8px;color:var(--ink-2)}.status i{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.method-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;margin-top:24px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}.method-tabs button{height:36px;border:0;border-radius:7px;background:0 0;color:var(--muted);font:500 13px var(--font);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}.method-tabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px var(--line)}.steps{display:flex;gap:6px;margin:0 0 28px;padding:0;list-style:none}.steps li{flex:1}.steps .bar{height:4px;border-radius:2px;background:var(--line)}.steps .name{display:block;margin-top:8px;font-size:12px;color:var(--subtle);font-weight:500}.steps li.done .bar,.steps li.on .bar{background:var(--accent)}.steps li.on .name{color:var(--ink)}.steps li.done .name{color:var(--ink-2)}.avatar-pick{display:flex;gap:16px;align-items:center;margin-top:8px}.avatar-lg{width:64px;height:64px;border-radius:50%;flex:none;display:grid;place-items:center;overflow:hidden;color:#fff;font:600 22px var(--font);letter-spacing:.02em}.avatar-lg img{width:100%;height:100%;object-fit:cover}.avatar-lg.ring{box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--line)}.avatar-actions{display:grid;gap:6px;justify-items:start}.file-btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface);color:var(--ink);font:500 13px var(--font);cursor:pointer}.file-btn:hover{background:var(--surface-2)}.file-btn input{position:absolute;inset:0;opacity:0;cursor:pointer}.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,44px);gap:8px;margin-top:12px}.avatar-opt{width:44px;height:44px;border-radius:50%;padding:0;border:2px solid transparent;background:var(--surface-2);cursor:pointer;overflow:hidden;display:grid;place-items:center;color:#fff;font:600 14px var(--font)}.avatar-opt img{width:100%;height:100%;object-fit:cover}.avatar-opt:hover{border-color:var(--line-strong)}.avatar-opt.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.c0{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}.c1{background:linear-gradient(135deg,#14b8a6,#0f766e)}.c2{background:linear-gradient(135deg,#8b5cf6,#6d28d9)}.c3{background:linear-gradient(135deg,#ec4899,#be185d)}.c4{background:linear-gradient(135deg,#f97316,#c2410c)}.c5{background:linear-gradient(135deg,#22c55e,#15803d)}.c6{background:linear-gradient(135deg,#0ea5e9,#0369a1)}.c7{background:linear-gradient(135deg,#64748b,#334155)}.qr-box{display:flex;gap:18px;align-items:center;margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);flex-wrap:wrap}.qr{width:156px;height:156px;flex:none;border-radius:8px;background:#fff;border:1px solid var(--line)}.qr-text{display:grid;gap:8px;min-width:180px;flex:1;font-size:13px;color:var(--ink-2)}.setup-key{font:500 14px var(--mono);letter-spacing:.06em;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px 10px;word-break:break-all}ol.howto{margin:18px 0 0;padding-left:20px;display:grid;gap:6px;color:var(--ink-2);font-size:13.5px}ol.howto code{font-size:12.5px;background:var(--surface-2);border:1px solid var(--line);border-radius:4px;padding:0 4px}.done-list{list-style:none;padding:0;margin:24px 0 0;display:grid;gap:10px}.done-list li{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.done-list .tick{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--ok-soft);color:var(--ok);flex:none}.done-list .tick.off{background:var(--surface-2);color:var(--subtle)}.done-list strong{display:block;font-weight:600}.done-list span{font-size:12.5px;color:var(--muted)}.auth-visual{position:relative;margin:12px;border-radius:16px;overflow:hidden;color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:48px 56px;background:linear-gradient(to top,rgba(6,14,32,.9) 0,rgba(6,14,32,.5) 38%,rgba(6,14,32,0) 70%),linear-gradient(to bottom,rgba(6,14,32,.5) 0,rgba(6,14,32,0) 22%),var(--wallpaper) center/cover no-repeat,#0b1b3a}.visual-top{display:flex;justify-content:space-between;align-items:center}.visual-top .logo{color:#fff}.visual-top .chip{font-size:12px;color:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:4px 12px;backdrop-filter:blur(6px);background:rgba(255,255,255,.07)}.visual-copy{max-width:480px}.visual-copy h2{margin:0;font-size:34px;line-height:1.15;font-weight:600;letter-spacing:-.03em}.visual-copy p{margin:16px 0 0;font-size:16px;line-height:1.6;color:rgba(255,255,255,.8)}.visual-stats{display:flex;gap:40px;margin-top:36px;padding-top:24px;border-top:1px solid rgba(255,255,255,.16);flex-wrap:wrap}.visual-stats b{display:block;font-size:15px;font-weight:600}.visual-stats span{font-size:13px;color:rgba(255,255,255,.68)}@media (max-width:1000px){.auth{grid-template-columns:1fr}.auth-visual{display:none}.auth-form{padding:28px 24px 20px;max-width:520px;margin:0 auto;width:100%}}.label-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.label-row .link-btn{font-size:12.5px}.auth-visual.tone-light{color:#0f172a;background:linear-gradient(to top,rgba(255,255,255,.88) 0,rgba(255,255,255,.45) 38%,rgba(255,255,255,0) 70%),linear-gradient(to bottom,rgba(255,255,255,.55) 0,rgba(255,255,255,0) 22%),var(--wallpaper) center/cover no-repeat,#f8fafc;box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}.tone-light .visual-top .logo{color:#0f172a}.tone-light .visual-top .chip{color:rgba(15,23,42,.75);border-color:rgba(15,23,42,.14);background:rgba(255,255,255,.6)}.tone-light .visual-copy p{color:rgba(15,23,42,.72)}.tone-light .visual-stats{border-top-color:rgba(15,23,42,.12)}.tone-light .visual-stats span{color:rgba(15,23,42,.6)}[data-accent=indigo]{--accent:#4F46E5;--accent-hover:#4338CA}[data-accent=violet]{--accent:#7C3AED;--accent-hover:#6D28D9}[data-accent=purple]{--accent:#9333EA;--accent-hover:#7E22CE}[data-accent=pink]{--accent:#DB2777;--accent-hover:#BE185D}[data-accent=rose]{--accent:#E11D48;--accent-hover:#BE123C}[data-accent=red]{--accent:#DC2626;--accent-hover:#B91C1C}[data-accent=orange]{--accent:#EA580C;--accent-hover:#C2410C}[data-accent=amber]{--accent:#B45309;--accent-hover:#92400E}[data-accent=green]{--accent:#16A34A;--accent-hover:#15803D}[data-accent=teal]{--accent:#0D9488;--accent-hover:#0F766E}[data-accent=cyan]{--accent:#0891B2;--accent-hover:#0E7490}[data-accent=graphite]{--accent:#475569;--accent-hover:#334155}[data-theme=dark][data-accent=indigo],[data-theme=dim][data-accent=indigo]{--accent:#6366F1;--accent-hover:#818CF8}[data-theme=dark][data-accent=violet],[data-theme=dim][data-accent=violet]{--accent:#8B5CF6;--accent-hover:#A78BFA}[data-theme=dark][data-accent=purple],[data-theme=dim][data-accent=purple]{--accent:#A855F7;--accent-hover:#C084FC}[data-theme=dark][data-accent=pink],[data-theme=dim][data-accent=pink]{--accent:#EC4899;--accent-hover:#F472B6}[data-theme=dark][data-accent=rose],[data-theme=dim][data-accent=rose]{--accent:#F43F5E;--accent-hover:#FB7185}[data-theme=dark][data-accent=red],[data-theme=dim][data-accent=red]{--accent:#EF4444;--accent-hover:#F87171}[data-theme=dark][data-accent=orange],[data-theme=dim][data-accent=orange]{--accent:#F97316;--accent-hover:#FB923C}[data-theme=dark][data-accent=amber],[data-theme=dim][data-accent=amber]{--accent:#F59E0B;--accent-hover:#FBBF24}[data-theme=dark][data-accent=green],[data-theme=dim][data-accent=green]{--accent:#22C55E;--accent-hover:#4ADE80}[data-theme=dark][data-accent=teal],[data-theme=dim][data-accent=teal]{--accent:#14B8A6;--accent-hover:#2DD4BF}[data-theme=dark][data-accent=cyan],[data-theme=dim][data-accent=cyan]{--accent:#06B6D4;--accent-hover:#22D3EE}[data-theme=dark][data-accent=graphite],[data-theme=dim][data-accent=graphite]{--accent:#64748B;--accent-hover:#94A3B8}[data-accent]:not([data-accent=blue]){--accent-soft:color-mix(in srgb, var(--accent) 12%, var(--surface));--focus:color-mix(in srgb, var(--accent) 22%, transparent)}[data-theme=dark][data-accent=amber] .btn.primary,[data-theme=dark][data-accent=amber] .nav-link.on,[data-theme=dim][data-accent=amber] .btn.primary,[data-theme=dim][data-accent=amber] .nav-link.on{color:#1c1917}[data-theme=contrast][data-accent]{--accent:#FFD60A;--accent-hover:#FFE45C;--accent-soft:#2A2400;--focus:rgba(255,214,10,.45)}.remember{display:flex;gap:10px;align-items:flex-start;margin:14px 0 18px;font-size:13px;color:var(--ink-2);cursor:pointer}.remember input{width:16px;height:16px;margin:2px 0 0;accent-color:var(--accent);flex:none}.remember small{display:block;margin-top:2px;font-size:12px;color:var(--muted)}