:root{--bg:#f4f6f9;--card:#fff;--fg:#1d2433;--mute:#6b7487;--line:#e3e7ee;--pri:#2f6fed;--pri-fg:#fff;--ok:#16a34a;--warn:#d97706;--bad:#dc2626;--off:#6b7280;--chip:#eef2f8}
@media (prefers-color-scheme:dark){:root{--bg:#0f131a;--card:#171c25;--fg:#e6e9ef;--mute:#9aa3b5;--line:#283041;--pri:#4b84f5;--chip:#212937}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
[hidden]{display:none!important}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px}
.btn{border:1px solid var(--line);background:var(--card);color:var(--fg);border-radius:8px;padding:6px 12px;font:inherit;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--pri)}.btn:disabled{opacity:.5;cursor:default}
.btn.primary{background:var(--pri);border-color:var(--pri);color:var(--pri-fg)}
.btn.danger{color:var(--bad)}.btn.ghost{border-color:transparent;background:transparent}
.btn.sm{padding:3px 8px;font-size:13px}.btn.wide{width:100%;padding:10px}
input,select{font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 10px}
.logo{width:44px;height:44px;border-radius:12px;background:var(--pri);color:#fff;display:grid;place-items:center;font-size:22px;margin:0 auto 8px}
.logo.sm{width:26px;height:26px;font-size:14px;border-radius:7px;margin:0 8px 0 0;display:inline-grid;vertical-align:middle}
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login-card{width:min(360px,100%);padding:28px;display:flex;flex-direction:column;gap:12px}
.login-card h1{font-size:18px;text-align:center;margin:0 0 8px}
.login-card label{display:flex;flex-direction:column;gap:4px;color:var(--mute);font-size:13px}
.err{color:var(--bad);min-height:1em;margin:0;font-size:13px}
.top{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 20px;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:600}.who{display:flex;align-items:center;gap:4px;color:var(--mute);flex-wrap:wrap}
main{padding:16px 20px;max-width:1280px;margin:0 auto}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:14px}
.stat{padding:12px 14px}.stat b{display:block;font-size:22px}.stat span{color:var(--mute);font-size:12px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.toolbar input[type=search]{flex:1;min-width:160px}.sel{color:var(--mute);font-size:13px}.batch{display:flex;gap:6px;margin-left:auto}
.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
table{width:100%;border-collapse:collapse}
th,td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{font-size:12px;color:var(--mute);font-weight:500;background:var(--chip)}
tr:last-child td{border-bottom:0}.ck{width:34px}
.id{font-weight:600}.label{color:var(--mute);font-size:12px;cursor:pointer;border-bottom:1px dashed transparent}.label:hover{border-color:var(--mute)}
.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;background:var(--chip);font-size:13px;white-space:nowrap}
.badge i{width:8px;height:8px;border-radius:50%;background:currentColor}
.s-active{color:var(--ok)}.s-disc{color:var(--warn)}.s-idle{color:var(--pri)}.s-off{color:var(--off)}.s-locked{color:var(--bad)}.s-unknown{color:var(--mute)}
.use{font-size:12px;color:var(--mute);line-height:1.6}
.conn{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.8}
.conn .k{color:var(--mute);font-family:inherit;display:inline-block;width:3.2em}
.copy{cursor:pointer;color:var(--pri);margin-left:6px;font-family:-apple-system,sans-serif;font-size:12px}
.ops{white-space:nowrap}.ops .btn{margin:2px 0}
.more{position:relative;display:inline-block}
.menu{position:absolute;right:0;top:100%;z-index:5;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:4px;min-width:150px;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.menu button{display:block;width:100%;text-align:left;border:0;background:none;color:var(--fg);padding:8px 10px;border-radius:6px;font:inherit;cursor:pointer}
.menu button:hover{background:var(--chip)}
.foot{color:var(--mute);font-size:12px;margin-top:10px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.4);display:grid;place-items:center;padding:16px;z-index:10}
.modal-card{width:min(440px,100%);padding:20px}.modal-card h2{margin:0 0 10px;font-size:17px}
.modal-card p{margin:6px 0;color:var(--mute)}.modal-card input{width:100%;margin:4px 0 8px}
.mbtns{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.audit{max-height:60vh;overflow:auto;font-size:12.5px}.audit div{padding:6px 0;border-bottom:1px solid var(--line)}
.pwbox{font-family:ui-monospace,Menlo,monospace;font-size:18px;padding:10px;background:var(--chip);border-radius:8px;text-align:center;user-select:all}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:8px 16px;border-radius:999px;z-index:20;font-size:13px}
@media (max-width:860px){
  main{padding:12px}
  thead{display:none}
  table,tbody,tr,td{display:block;width:100%}
  tr{border-bottom:1px solid var(--line);padding:10px 12px;position:relative}
  td{border:0;padding:3px 0}
  td.ck{position:absolute;right:12px;top:12px;width:auto}
  .batch{margin-left:0;width:100%}.batch .btn{flex:1}
}
