@font-face{font-family:Inter;src:url(/Inter-Medium.ttf)format("truetype");font-weight:100 900;font-display:swap}:root{--bg:#f4f6fb;--surface:#fff;--surface-2:#eef1f8;--text:#0f172a;--muted:#5b6478;--border:#dde2ee;--primary:#3b6cff;--primary-text:#fff;--ok:#10b981;--warn:#f59e0b;--danger:#e5484d;--shadow:0 10px 30px #0f172a14;--radius:16px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b1020;--surface:#131a2e;--surface-2:#1b2340;--text:#e8ecf8;--muted:#94a0bd;--border:#252f50;--primary:#5b8cff;--shadow:0 10px 30px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0b1020;--surface:#131a2e;--surface-2:#1b2340;--text:#e8ecf8;--muted:#94a0bd;--border:#252f50;--primary:#5b8cff;--shadow:0 10px 30px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;font:15px/1.5 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}input{-webkit-user-select:text;user-select:text}#app{min-height:100%;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left))}:root[data-platform=darwin] #app{padding-top:40px}main{flex-direction:column;gap:16px;max-width:440px;margin:0 auto;display:flex}h1,h2,p{margin:0}h2{font-size:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.auth{padding-top:6vh}.brand{text-align:center;justify-items:center;gap:6px;margin-bottom:8px;display:grid}.brand h1{letter-spacing:-.02em;font-size:28px}.brand p{color:var(--muted)}.logo{display:block}.tabs{background:var(--surface-2);border-radius:12px;grid-template-columns:1fr 1fr;padding:4px;display:grid}.tab{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;padding:10px;font-weight:600}.tab.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001f}.form{flex-direction:column;gap:14px;display:flex}label{color:var(--muted);gap:6px;font-size:13px;font-weight:600;display:grid}input{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;outline:none;width:100%;padding:12px 14px}input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 25%, transparent)}.btn{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:12px;padding:12px 16px;font-weight:600}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn:disabled{opacity:.6;cursor:default}.btn.loading{color:#0000;position:relative}.btn.loading:after{content:"";border:2px solid var(--primary-text);border-right-color:#0000;border-radius:50%;width:18px;height:18px;margin:auto;animation:.8s linear infinite spin;position:absolute;inset:0}.link{color:var(--primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:4px;font-weight:600}.link.center{align-self:center}.icon-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:6px 8px;font-size:14px}.icon-btn:hover{background:var(--surface-2);color:var(--danger)}.row{justify-content:flex-end;gap:10px;display:flex}.topbar{justify-content:space-between;align-items:center;display:flex}.brand-sm{align-items:center;gap:10px;font-size:18px;font-weight:700;display:flex}.brand-sm .logo{width:34px;height:34px}.who{color:var(--muted);align-items:center;gap:8px;min-width:0;display:flex}.who small{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.status{text-align:center;justify-items:center;gap:10px;padding:24px 0 8px;display:grid}.power{--ring:var(--border);cursor:pointer;background:var(--surface);width:168px;height:168px;box-shadow:var(--shadow);color:var(--text);font:inherit;border:0;border-radius:50%;font-size:17px;font-weight:700;position:relative}.power-ring{border:6px solid var(--ring);border-radius:50%;transition:border-color .3s;position:absolute;inset:10px}.state-connected .power{--ring:var(--ok)}.state-connecting .power,.state-disconnecting .power{--ring:var(--warn)}.state-connecting .power-ring,.state-disconnecting .power-ring{border-right-color:#0000;animation:1.1s linear infinite spin}.state-error .power{--ring:var(--danger)}.state-label{font-size:20px;font-weight:700}.state-connected .state-label{color:var(--ok)}.state-error{color:var(--danger);min-height:0;font-size:13px}.state-error:empty{display:none}.stats{grid-template-columns:repeat(2,1fr);gap:10px;width:100%;display:grid}.stats:empty{display:none}.stats div{background:var(--surface);border:1px solid var(--border);text-align:left;border-radius:12px;padding:10px 12px}.stats span{color:var(--muted);font-size:12px;display:block}.stats b{font-variant-numeric:tabular-nums}.web-note{gap:12px;display:grid}.web-note p{color:var(--muted)}.section-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.devices{margin:0;padding:0;list-style:none;display:grid}.devices li{border-top:1px solid var(--border);align-items:center;gap:12px;padding:10px 0;display:flex}.devices li:first-child{border-top:0}.devices .grow{flex:1;min-width:0;display:grid}.devices small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.devices .empty{color:var(--muted);justify-content:center}.dot{background:var(--border);border-radius:50%;flex:none;width:9px;height:9px}.dot.online{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb, var(--ok) 25%, transparent)}.dialog{border:1px solid var(--border);width:min(92vw,400px);color:var(--text)}.dialog::backdrop{background:#00000073}.toast{left:50%;bottom:max(24px, env(safe-area-inset-bottom));color:#fff;opacity:0;z-index:10;max-width:min(92vw,420px);box-shadow:var(--shadow);border-radius:12px;padding:12px 16px;font-weight:600;transition:all .25s;position:fixed;transform:translate(-50%,20px)}.toast.show{opacity:1;transform:translate(-50%)}.toast-error{background:var(--danger)}.toast-ok{background:var(--ok)}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:0s!important}}
