:root{
  --bg:#f5f5f7; --surface:#fff; --text:#1d1d1f; --muted:#6e6e73; --faint:#86868b;
  --line:rgba(0,0,0,.1); --fill:rgba(0,0,0,.05); --fill-2:rgba(0,0,0,.08);
  --accent:#0071e3; --accent-h:#0077ed; --danger:#d70015; --ok:#1d8a3a; --warn:#b25e00;
  --bar:rgba(245,245,247,.8); --radius:12px;
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",Helvetica,Arial,sans-serif;
  color-scheme:light dark;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#000; --surface:#1c1c1e; --text:#f5f5f7; --muted:#a1a1a6; --faint:#86868b;
  --line:rgba(255,255,255,.14); --fill:rgba(255,255,255,.08); --fill-2:rgba(255,255,255,.14);
  --accent:#2997ff; --accent-h:#4aa8ff; --danger:#ff453a; --ok:#32d74b; --warn:#ff9f0a; --bar:rgba(0,0,0,.72);
}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:17px/1.47 var(--font);letter-spacing:-.022em;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.022em}
p{margin:0}

/* top bar */
.bar{position:sticky;top:0;z-index:10;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line)}
.bar-in{max-width:980px;margin:0 auto;padding:0 22px;height:48px;display:flex;align-items:center;gap:28px}
.brand{color:var(--text);font-weight:600;font-size:17px;letter-spacing:-.02em}.brand:hover{text-decoration:none}
.bar nav{display:flex;gap:22px;flex:1}
.bar nav a,.bar .out{color:var(--muted);font-size:13px;letter-spacing:-.01em}
.bar nav a:hover,.bar .out:hover{color:var(--text);text-decoration:none}
.bar nav a.on{color:var(--text)}
.bar form{margin:0}.bar .out{background:none;border:0;padding:0;font:inherit;font-size:13px;cursor:pointer}
.count{display:inline-block;min-width:18px;height:18px;padding:0 5px;margin-left:5px;border-radius:9px;background:var(--accent);color:#fff;font-size:11px;line-height:18px;text-align:center;vertical-align:1px}

/* page */
.wrap{max-width:720px;margin:0 auto;padding:44px 22px 96px}
.wrap.wide{max-width:980px}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:28px}
.head h1{font-size:40px;line-height:1.1;font-weight:700;letter-spacing:-.03em}
.sub{color:var(--muted);margin-top:6px;font-size:17px}
.crumb{font-size:14px;margin-bottom:10px;display:block}
h2.sec{font-size:13px;font-weight:400;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);margin:34px 16px 8px}
.note{font-size:13px;color:var(--muted);margin:8px 16px 0;line-height:1.4}

/* grouped list */
.list{background:var(--surface);border-radius:var(--radius);overflow:hidden}
.row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;min-height:52px;color:inherit;position:relative}
.list>.row:not(:first-child)::before{content:"";position:absolute;left:16px;right:0;top:0;border-top:1px solid var(--line)}
a.row:hover{background:var(--fill);text-decoration:none}
a.row.go::after{content:"";width:7px;height:7px;border-top:1.5px solid var(--faint);border-right:1.5px solid var(--faint);transform:rotate(45deg);flex:none;margin-left:2px}
.row .t{font-size:17px;min-width:0;overflow:hidden;text-overflow:ellipsis}
.row .s{font-size:14px;color:var(--muted);line-height:1.35;margin-top:1px}
.row .r{color:var(--muted);font-size:15px;display:flex;align-items:center;gap:12px;flex:none;text-align:right}
.row .l{min-width:0;flex:1}
.row.col{flex-direction:column;align-items:stretch;gap:10px}
.empty{padding:34px 16px;text-align:center;color:var(--muted);font-size:15px}
.list form{margin:0}

/* status */
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--faint);margin-right:7px;vertical-align:1px}
.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--danger)}.dot.blue{background:var(--accent)}

/* buttons */
.btn{display:inline-block;appearance:none;border:0;border-radius:980px;background:var(--accent);color:#fff;font:inherit;font-size:15px;letter-spacing:-.01em;padding:8px 18px;line-height:1.3;cursor:pointer;text-align:center}
.btn:hover{background:var(--accent-h);text-decoration:none;color:#fff}
.btn.quiet{background:var(--fill);color:var(--text)}.btn.quiet:hover{background:var(--fill-2);color:var(--text)}
.btn.small{font-size:13px;padding:5px 13px}
.btn.block{display:block;width:100%;padding:12px 18px;font-size:17px}
.link{appearance:none;background:none;border:0;padding:0;font:inherit;font-size:inherit;color:var(--accent);cursor:pointer;letter-spacing:inherit}
.link:hover{text-decoration:underline}.link.danger{color:var(--danger)}
.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* forms */
input[type=text],input[type=email],input[type=password],input[type=number],textarea,select{
  width:100%;appearance:none;border:0;background:transparent;color:var(--text);font:inherit;letter-spacing:-.022em;padding:0;outline:0}
textarea{resize:vertical;min-height:64px}
input::placeholder,textarea::placeholder{color:var(--faint)}
.fields{background:var(--surface);border-radius:var(--radius);overflow:hidden}
.fields .f{padding:13px 16px;position:relative}
.fields .f+.f::before{content:"";position:absolute;left:16px;right:0;top:0;border-top:1px solid var(--line)}
.fields .f:focus-within{background:var(--fill)}
.fields label{display:block;font-size:12px;color:var(--muted);margin-bottom:1px}
.inline-form{display:flex;gap:10px;align-items:center}
.inline-form input{background:var(--fill);border-radius:10px;padding:8px 12px;font-size:15px}
.err{color:var(--danger);font-size:14px;margin:10px 16px 0}
.ok-msg{color:var(--ok);font-size:14px;margin:10px 16px 0}
.hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}

/* switch */
.switch{position:relative;display:inline-block;width:51px;height:31px;flex:none}
.switch input{appearance:none;position:absolute;inset:0;margin:0;width:100%;height:100%;border-radius:16px;background:var(--fill-2);cursor:pointer;transition:background .2s}
.switch input::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px rgba(0,0,0,.25);transition:transform .2s}
.switch input:checked{background:#34c759}.switch input:checked::after{transform:translateX(20px)}
.switch input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* auth */
.auth{max-width:380px;margin:0 auto;padding-top:56px}
.auth h1{font-size:32px;font-weight:700;text-align:center;letter-spacing:-.03em;margin-bottom:8px}
.auth .sub{text-align:center;margin:0 0 30px;font-size:15px}
.auth .btn{margin-top:22px}
.auth .alt{text-align:center;font-size:14px;color:var(--muted);margin-top:22px;line-height:2}

/* device detail */
.qr{background:#fff;border-radius:var(--radius);padding:14px;width:min(260px,100%);margin:0 auto}
.qr svg{display:block;width:100%;height:auto}
.mono{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:14px;letter-spacing:0}
dialog{border:0;border-radius:14px;padding:22px;width:min(420px,calc(100% - 32px));background:var(--surface);color:var(--text);box-shadow:0 20px 60px rgba(0,0,0,.3)}
dialog::backdrop{background:rgba(0,0,0,.35);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
dialog h3{font-size:21px;margin-bottom:14px}

/* tables (admin) */
table{width:100%;border-collapse:collapse;font-size:15px}
th{font-weight:400;color:var(--muted);font-size:13px;text-align:left;padding:10px 16px;border-bottom:1px solid var(--line)}
td{padding:12px 16px;border-top:1px solid var(--line);vertical-align:middle}
tr:first-child td{border-top:0}
td.r,th.r{text-align:right}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.stat{background:var(--surface);border-radius:var(--radius);padding:16px}
.stat b{display:block;font-size:30px;font-weight:600;letter-spacing:-.03em;line-height:1.1}
.stat span{font-size:13px;color:var(--muted)}
.tabs{display:flex;gap:6px;margin:-8px 0 26px}
.tabs a{font-size:14px;color:var(--muted);padding:5px 13px;border-radius:980px}
.tabs a.on{background:var(--fill-2);color:var(--text)}.tabs a:hover{text-decoration:none;color:var(--text)}
footer{max-width:720px;margin:0 auto;padding:0 22px 40px;font-size:12px;color:var(--faint)}

@media (max-width:640px){
  .head h1{font-size:34px}.stats{grid-template-columns:repeat(2,1fr)}
  .bar-in{gap:16px;padding:0 16px}.bar nav{gap:16px}
  .wrap{padding:30px 16px 80px}
  table,thead,tbody,tr,td,th{display:block}thead{display:none}
  td{border-top:0;padding:4px 16px}tr{padding:10px 0;border-top:1px solid var(--line)}tr:first-child{border-top:0}
  td.r{text-align:left}
}
