:root{--bg: #0b1220;--surface: #131c2e;--surface-raised: #1b2740;--border: #27344f;--text: #eef2f9;--text-dim: #9aa8c0;--accent: #4d8dff;--accent-text: #ffffff;--ok: #3ddc84;--warn: #ffb454;--danger: #ff6b6b;--radius: 14px;--tap: 48px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:dark light}@media(prefers-color-scheme:light){:root{--bg: #f4f6fb;--surface: #ffffff;--surface-raised: #eef2f9;--border: #d8dfec;--text: #101728;--text-dim: #5a687f;--accent: #1f6feb;--ok: #14894b;--warn: #a55a00;--danger: #c92a2a}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font:16px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%;overscroll-behavior-y:contain}#root{min-height:100dvh}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit}.app{display:flex;flex-direction:column;min-height:100dvh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:10px;padding:calc(var(--safe-top) + 10px) 14px 10px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.topbar h1{margin:0;font-size:1.05rem;font-weight:650;letter-spacing:-.01em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar__back{display:grid;place-items:center;width:var(--tap);height:var(--tap);margin-left:-12px;border:0;border-radius:50%;background:transparent;font-size:1.5rem;line-height:1}.topbar__back:active{background:var(--surface-raised)}.content{flex:1;padding:14px 14px 24px;padding-bottom:calc(var(--safe-bottom) + 88px)}.content--with-dock{padding-bottom:calc(var(--safe-bottom) + 168px)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:6px 10px calc(var(--safe-bottom) + 6px);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--border)}.tabbar button{position:relative;min-height:var(--tap);border:0;border-radius:12px;background:transparent;color:var(--text-dim);font-size:.82rem;font-weight:600}.tabbar button[aria-current=page]{background:var(--surface-raised);color:var(--text)}.tabbar .badge{position:absolute;top:4px;right:12px;min-width:20px;padding:1px 6px;border-radius:10px;background:var(--accent);color:var(--accent-text);font-size:.7rem;font-weight:700}.tabbar .badge--warn{background:var(--danger)}.dock{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;flex-direction:column;gap:8px;padding:12px 14px calc(var(--safe-bottom) + 72px);background:linear-gradient(to top,var(--bg) 62%,transparent);pointer-events:none}.dock>*{pointer-events:auto}.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:54px;padding:0 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);font-size:1rem;font-weight:650;text-decoration:none}.btn:active:not(:disabled){transform:scale(.985)}.btn:disabled{opacity:.45}.btn--primary{border-color:transparent;background:var(--accent);color:var(--accent-text)}.btn--danger{border-color:transparent;background:var(--danger);color:#fff}.btn--quiet{min-height:var(--tap);background:transparent;font-weight:600;color:var(--text-dim)}.card{padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.card+.card,.card+.list,.list+.card{margin-top:12px}.card__title{margin:0 0 6px;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.list{display:flex;flex-direction:column;gap:8px}.row{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:left}.row:active{background:var(--surface-raised)}.row--disabled{opacity:.55}.row__body{flex:1;min-width:0}.row__title{display:block;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row__sub{display:block;margin-top:2px;font-size:.84rem;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row__chevron{color:var(--text-dim);font-size:1.2rem}.dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:var(--text-dim)}.dot--online{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent)}.dot--offline{background:var(--text-dim)}.dot--unknown{background:var(--warn)}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:var(--surface-raised);font-size:.76rem;font-weight:650;white-space:nowrap}.pill--ok{background:color-mix(in srgb,var(--ok) 20%,transparent);color:var(--ok)}.pill--warn{background:color-mix(in srgb,var(--warn) 20%,transparent);color:var(--warn)}.pill--danger{background:color-mix(in srgb,var(--danger) 20%,transparent);color:var(--danger)}.field{display:block;margin-bottom:14px}.field__label{display:block;margin-bottom:6px;font-size:.86rem;font-weight:600;color:var(--text-dim)}.field input{width:100%;min-height:52px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:16px}.field input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.search{position:relative;margin-bottom:12px}.search input{width:100%;min-height:48px;padding:0 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font-size:16px}.stack{display:flex;flex-direction:column;gap:12px}.muted{color:var(--text-dim)}.small{font-size:.85rem}.center{text-align:center}.error{padding:12px 14px;border:1px solid color-mix(in srgb,var(--danger) 45%,var(--border));border-radius:var(--radius);background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--text);font-size:.9rem}.notice{padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);font-size:.9rem}.kv{display:grid;grid-template-columns:minmax(0,7.5rem) 1fr;gap:6px 12px;font-size:.92rem}.kv dt{color:var(--text-dim)}.kv dd{margin:0;overflow-wrap:anywhere}.secret{display:flex;align-items:center;gap:10px;padding:14px;border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface-raised)}.secret code{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.32rem;letter-spacing:.06em;overflow-wrap:anywhere}.steps{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.steps li{display:flex;align-items:center;gap:12px;min-height:44px;color:var(--text-dim)}.steps li[data-state=done]{color:var(--text)}.steps li[data-state=active]{color:var(--text);font-weight:650}.steps__marker{display:grid;place-items:center;width:24px;height:24px;border:2px solid var(--border);border-radius:50%;font-size:.8rem}.steps li[data-state=done] .steps__marker{border-color:var(--ok);background:var(--ok);color:#04150b}.steps li[data-state=active] .steps__marker{border-color:var(--accent);border-top-color:transparent;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.steps li[data-state=active] .steps__marker{animation:none;border-color:var(--accent)}.btn:active:not(:disabled){transform:none}}.spinner{display:inline-block;width:18px;height:18px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.sheet-backdrop{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;background:#03071299}.sheet{width:100%;max-height:86dvh;overflow-y:auto;padding:18px 14px calc(var(--safe-bottom) + 18px);border-radius:20px 20px 0 0;background:var(--bg);border-top:1px solid var(--border)}.sheet h2{margin:0 0 4px;font-size:1.15rem}.sheet__option{display:block;width:100%;margin-top:10px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:left}.sheet__option:active{background:var(--surface-raised)}.sheet__option strong{display:block;margin-bottom:3px}.sheet__option span{display:block;font-size:.86rem;color:var(--text-dim)}
