:root{
  color-scheme:light dark;
  --bg:#f6f7f9; --panel:#ffffff; --panel-2:#f0f2f5; --line:#d8dee6;
  --fg:#15191e; --muted:#5c6773; --accent:#1f6feb; --accent-fg:#ffffff;
  --ok:#1a7f37; --warn:#9a6700; --bad:#cf222e; --mono:ui-monospace,SFMono-Regular,Menlo,monospace;
  --radius:10px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0d1117; --panel:#161b22; --panel-2:#1c232c; --line:#2d333b;
    --fg:#e6edf3; --muted:#9198a1; --accent:#4493f8; --accent-fg:#06101f;
    --ok:#3fb950; --warn:#d29922; --bad:#f85149;
  }
}
:root[data-theme="dark"]{
  --bg:#0d1117; --panel:#161b22; --panel-2:#1c232c; --line:#2d333b;
  --fg:#e6edf3; --muted:#9198a1; --accent:#4493f8; --accent-fg:#06101f;
  --ok:#3fb950; --warn:#d29922; --bad:#f85149;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
  font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;}
a{color:var(--accent)}
code,kbd,.mono{font-family:var(--mono);font-size:.88em}

.topbar{display:flex;align-items:center;gap:1rem;padding:.7rem 1rem;background:var(--panel);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;flex-wrap:wrap}
.brand{font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--fg)}
.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--accent)}
.topbar nav{display:flex;gap:.2rem;flex:1;flex-wrap:wrap}
.topbar nav a{padding:.35rem .7rem;border-radius:7px;text-decoration:none;color:var(--muted);font-weight:500}
.topbar nav a:hover{background:var(--panel-2);color:var(--fg)}
.topbar nav a.on{background:var(--panel-2);color:var(--fg)}
.who{display:flex;align-items:center;gap:.5rem;color:var(--muted);font-size:.86rem}
.who img{width:26px;height:26px;border-radius:50%}

.wrap{max-width:1080px;margin:0 auto;padding:1.25rem 1rem 4rem}
h1{font-size:1.4rem;margin:.2rem 0 .2rem;letter-spacing:-.02em}
h2{font-size:1.05rem;margin:0 0 .7rem}
.sub{color:var(--muted);margin:0 0 1.2rem}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:1rem;margin-bottom:1rem}
.grid{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}

.kit{display:block;text-decoration:none;color:inherit;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem;transition:border-color .12s}
.kit:hover{border-color:var(--accent)}
.kit .row{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem}
.kit .name{font-weight:650}
.kit .meta{color:var(--muted);font-size:.85rem;margin-top:.3rem}

.pill{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;font-weight:600;
  padding:.15rem .5rem;border-radius:999px;border:1px solid var(--line);white-space:nowrap}
.pill.on{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent)}
.pill.off{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent)}
.pill.busy{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,transparent)}
.pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor}

.tabs{display:flex;gap:.2rem;border-bottom:1px solid var(--line);margin:.4rem 0 1rem;overflow-x:auto}
.tabs a{padding:.5rem .85rem;text-decoration:none;color:var(--muted);border-bottom:2px solid transparent;
  white-space:nowrap;font-weight:500}
.tabs a.on{color:var(--fg);border-bottom-color:var(--accent)}

table{width:100%;border-collapse:collapse;font-size:.9rem}
th{text-align:left;color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;
  letter-spacing:.04em;padding:.4rem .55rem;border-bottom:1px solid var(--line)}
td{padding:.5rem .55rem;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
.tablewrap{overflow-x:auto}

button,.btn{font:inherit;font-weight:600;font-size:.88rem;padding:.45rem .9rem;border-radius:8px;
  border:1px solid var(--line);background:var(--panel-2);color:var(--fg);cursor:pointer;
  text-decoration:none;display:inline-block}
button:hover,.btn:hover{border-color:var(--accent)}
.btn-primary,button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}
.btn-danger{color:var(--bad)}
button:disabled{opacity:.5;cursor:not-allowed}

input[type=text],input[type=url],input[type=file],select{font:inherit;font-size:.9rem;padding:.45rem .6rem;
  border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg);width:100%}
label{font-size:.82rem;color:var(--muted);display:block;margin-bottom:.25rem;font-weight:600}
.field{margin-bottom:.8rem}
.inline{display:flex;gap:.5rem;align-items:flex-end;flex-wrap:wrap}
.inline .field{flex:1;min-width:200px;margin-bottom:0}

.note{background:var(--panel-2);border-left:3px solid var(--accent);padding:.6rem .8rem;
  border-radius:0 8px 8px 0;font-size:.87rem;color:var(--muted)}
.note.bad{border-left-color:var(--bad)}
.note.warn{border-left-color:var(--warn)}

.termshell{position:fixed;inset:0;display:flex;flex-direction:column;background:#000}
.termbar{display:flex;gap:.75rem;align-items:center;padding:.5rem .8rem;background:var(--panel);
  border-bottom:1px solid var(--line);flex-wrap:wrap}
.termbar .spacer{flex:1}
#term{flex:1;min-height:0;padding:.35rem}
.conn{font-size:.78rem;font-weight:600}
.conn.live{color:var(--ok)} .conn.lost{color:var(--bad)} .conn.retry{color:var(--warn)}

.muted{color:var(--muted)}
.right{text-align:right}
.nowrap{white-space:nowrap}
.empty{text-align:center;color:var(--muted);padding:2.5rem 1rem}

.signin{max-width:420px;margin:12vh auto;text-align:center}
.signin .card{padding:2rem}
.gbtn{display:inline-flex;align-items:center;gap:.7rem;background:#fff;color:#1f1f1f;border:1px solid #747775;
  border-radius:8px;padding:.6rem 1.1rem;font-weight:600;text-decoration:none;font-size:.95rem}
.gbtn:hover{background:#f4f4f4}
@media (max-width:480px){ .wrap{padding:1rem .8rem 3rem} .topbar{padding:.6rem .8rem} }
