.hub{touch-action:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0;overflow:hidden}.hub-stage,.hub-stage canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.hub-hud{top:max(12px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));right:max(12px, env(safe-area-inset-right));pointer-events:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute}.hub-hud>*{pointer-events:auto}.hub-hud__who,.hub-btn{border:1px solid var(--border);background:#1b1e23d9;border-radius:8px;align-items:center;gap:8px;height:36px;padding:0 14px;font-size:14px;display:inline-flex}.hub-hud__tools{gap:8px;display:flex}.hub-btn{cursor:pointer}.hub-btn:hover{border-color:var(--muted)}.hub-btn[aria-pressed=true]{border-color:var(--accent)}.hub-btn.is-busy .btn__spinner{display:block}.hub-dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.hub[data-status=online] .hub-dot{background:var(--ok)}.hub[data-status=reconnecting] .hub-dot{background:var(--warn)}.hub[data-status=offline] .hub-dot,.hub[data-status=outdated] .hub-dot,.hub[data-status=replaced] .hub-dot{background:var(--danger)}.hub-toast{top:calc(max(12px, env(safe-area-inset-top)) + 48px);right:max(12px, env(safe-area-inset-right));background:var(--surface);border:1px solid var(--danger);color:var(--danger);border-radius:8px;margin:0;padding:8px 12px;font-size:14px;position:absolute}.hub-labels{pointer-events:none;position:absolute;inset:0}.hub-label{color:var(--text);white-space:nowrap;will-change:transform;background:#121417b3;border-radius:4px;padding:1px 6px;font-size:12px;position:absolute;top:0;left:0}.hub-label--self{color:var(--accent)}.hub-net{top:calc(max(12px, env(safe-area-inset-top)) + 48px);right:max(12px, env(safe-area-inset-right));border:1px solid var(--border);min-width:220px;font:13px/1.6 var(--mono);background:#1b1e23eb;border-radius:8px;padding:10px 14px;position:absolute}.hub-net__rows{grid-template-columns:1fr auto;gap:0 16px;margin:0;display:grid}.hub-net__rows dt{color:var(--muted)}.hub-net__rows dd{text-align:right;margin:0}.hub-overlay{background:#121417bf;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.hub-overlay__card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-align:center;justify-items:center;gap:12px;max-width:360px;padding:24px;display:grid}.hub-overlay__title{margin:0;font-size:18px;font-weight:600}.hub-overlay__text{color:var(--muted);margin:0;font-size:15px}.hub-overlay--banner{inset:auto 0 max(16px, env(safe-area-inset-bottom));pointer-events:none;background:0 0}.hub-overlay--banner .hub-overlay__card{text-align:left;grid-auto-flow:column;align-items:center;padding:10px 16px}.hub-overlay--banner .hub-overlay__title{font-size:15px}.hub-overlay--banner .hub-overlay__text{font-size:14px}.stick-ghost,.stick{pointer-events:none;border:2px solid #e6e8eb40;border-radius:50%;position:absolute}.stick-ghost{left:max(32px, env(safe-area-inset-left));bottom:max(32px, env(safe-area-inset-bottom));width:120px;height:120px;display:none}.hub.is-touch .stick-ghost{display:block}.stick-ghost.is-gone{visibility:hidden}.stick{display:none;top:0;left:0}.stick__knob{background:#e6e8eb59;border-radius:50%;width:48px;height:48px;margin:-24px 0 0 -24px;position:absolute;top:50%;left:50%}.hub-rotate{display:none}@media (orientation:portrait) and (pointer:coarse){.hub-rotate{z-index:10;background:var(--bg);color:var(--muted);text-align:center;place-items:center;padding:24px;display:grid;position:absolute;inset:0}}:root{--bg:#121417;--surface:#1b1e23;--surface-2:#23272d;--border:#30353d;--text:#e6e8eb;--muted:#9aa1ab;--accent:#4f8cff;--accent-text:#fff;--danger:#f06262;--ok:#4cc38a;--warn:#e8a33d;--radius:10px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{height:100%}[hidden]{display:none!important}body{background:var(--bg);color:var(--text);font:16px/1.5 var(--font);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;margin:0}#ui{min-height:100%}button,input{font:inherit;color:inherit}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.noscript{text-align:center;padding:24px}.page{min-height:100vh;min-height:100dvh;padding:max(24px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));place-items:center;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:400px;padding:24px}.card__head{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;font-size:14px;display:flex}.card__brand{color:var(--text);font-weight:600}.card__title{margin:0 0 4px;font-size:22px;font-weight:600;line-height:1.3}.card__text{color:var(--muted);margin:0 0 20px;font-size:15px}.card__title+.form,.card__title+.card__actions{margin-top:20px}.card__actions{gap:12px;display:grid}.conn{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.conn__dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.conn[data-state=up] .conn__dot{background:var(--ok)}.conn[data-state=down] .conn__dot{background:var(--danger)}.conn[data-state=outdated] .conn__dot{background:var(--warn)}.form{gap:16px;display:grid}.form__alt{text-align:center;color:var(--muted);margin:0;font-size:14px}.field{gap:6px;display:grid}.field__label{font-size:14px;font-weight:500}.field__box{position:relative}.field__input{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;width:100%;height:44px;padding:0 12px;font-size:16px}.field__box--reveal .field__input{padding-right:92px}.field__input::placeholder{color:var(--muted);opacity:.6}.field__input:focus{border-color:var(--accent);outline:none}.field[data-state=error] .field__input{border-color:var(--danger)}.field__reveal{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 12px;font-size:14px;position:absolute;top:4px;bottom:4px;right:4px}.field__reveal:hover{color:var(--text)}.field__status{min-height:1.4em;color:var(--muted);margin:0;font-size:13px;line-height:1.4}.field__status[data-kind=error]{color:var(--danger)}.field__status[data-kind=ok]{color:var(--ok)}.field__status[data-kind=warn]{color:var(--warn)}.form-error{color:var(--danger);background:#f062621f;border-radius:8px;margin:0;padding:10px 12px;font-size:14px}.btn{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;height:44px;padding:0 18px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--muted)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn--primary:hover{border-color:var(--accent);filter:brightness(1.08)}.btn:disabled{cursor:default;opacity:.7}.spinner,.btn__spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}.btn__spinner{display:none}.btn.is-busy .btn__spinner{display:block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner,.btn__spinner{animation-duration:2s}}
