:root{
  --bg:#0B1220;
  --panel:#111A2E;
  --panel2:#0E1626;
  --border:#22304A;
  --border-soft:#1A2438;
  --text:#E6EAF2;
  --text-dim:#8B96AC;
  --text-faint:#5C6780;
  --accent:#2DD4BF;
  --accent-dim:#0F3D38;
  --run:#34D399;
  --run-bg:#0F2E22;
  --stop:#94A3B8;
  --stop-bg:#1B2434;
  --destroy:#F87171;
  --destroy-bg:#3A1616;
  --mono:'JetBrains Mono','SF Mono',Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,'Segoe UI',PingFang SC,'Microsoft YaHei',sans-serif;
}
*{box-sizing:border-box;}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.5;}
.hidden{display:none !important;}

/* login */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;}
.login-card{width:340px;background:var(--panel);border:1px solid var(--border-soft);border-radius:12px;padding:32px 28px;}
.login-card h1{font-size:18px;margin:0 0 4px;font-weight:600;}
.login-card .sub{color:var(--text-dim);font-size:12.5px;margin-bottom:22px;}
.login-card .field{margin-bottom:14px;}
.login-card label{display:block;font-size:12.5px;color:var(--text-dim);margin-bottom:6px;}
.login-card input{width:100%;}
.login-error{color:var(--destroy);font-size:12.5px;margin-top:10px;min-height:16px;}
.login-card button{width:100%;margin-top:6px;}

.wrap{max-width:1320px;margin:0 auto;padding:24px 32px 64px;}

.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;}
.topbar .who{color:var(--text-dim);font-size:13px;display:flex;align-items:center;gap:10px;}
.topbar .who b{color:var(--text);}
.role-pill{font-size:11px;padding:2px 8px;border-radius:100px;background:var(--accent-dim);color:var(--accent);}

.header{margin-bottom:18px;}
.header h1{font-size:20px;font-weight:600;margin:0 0 4px;}
.header .sub{color:var(--text-dim);font-size:13px;}

.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px;}
.stat{background:var(--panel);border:1px solid var(--border-soft);border-radius:10px;padding:14px 16px;}
.stat .num{font-size:24px;font-weight:600;font-family:var(--mono);}
.stat .lbl{color:var(--text-dim);font-size:12px;margin-top:2px;}
.stat.run .num{color:var(--run);}
.stat.stop .num{color:var(--stop);}
.stat.destroy .num{color:var(--destroy);}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px;}
.toolbar .spacer{flex:1;}

button{font-family:var(--sans);font-size:13px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:8px 14px;cursor:pointer;transition:.12s;display:inline-flex;align-items:center;gap:6px;}
button:hover{border-color:var(--text-faint);background:var(--panel2);}
button:active{transform:scale(.98);}
button.primary{background:var(--accent);border-color:var(--accent);color:#04211D;font-weight:600;}
button.primary:hover{background:#25BFAA;}
button.danger{color:var(--destroy);border-color:#4A2323;}
button.danger:hover{background:var(--destroy-bg);}
button:disabled{opacity:.35;cursor:not-allowed;}
button.ghost{border-color:transparent;background:transparent;padding:6px 8px;}
button.ghost:hover{background:var(--panel2);}

input,select{font-family:var(--sans);font-size:13px;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:8px 10px;outline:none;}
input::placeholder{color:var(--text-faint);}
input:focus,select:focus{border-color:var(--accent);}

.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px;padding:14px 16px;background:var(--panel);border:1px solid var(--border-soft);border-radius:10px;}
.filters input[type=text]{width:240px;}
.filters .count{margin-left:auto;color:var(--text-dim);font-size:12.5px;}
.filters .count b{color:var(--text);font-family:var(--mono);}

.tablewrap{background:var(--panel);border:1px solid var(--border-soft);border-radius:10px;overflow:hidden;overflow-x:auto;}
table{width:100%;border-collapse:collapse;}
thead th{text-align:left;font-size:12px;color:var(--text-dim);font-weight:500;padding:11px 12px;border-bottom:1px solid var(--border);background:var(--panel2);white-space:nowrap;}
tbody td{padding:10px 12px;border-bottom:1px solid var(--border-soft);font-size:13px;vertical-align:middle;white-space:nowrap;}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover{background:rgba(255,255,255,.02);}
tbody tr.selected{background:var(--accent-dim);}
.mono{font-family:var(--mono);font-size:12.5px;}
.cb{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;}

.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:100px;font-size:12px;font-weight:500;}
.badge::before{content:'';width:6px;height:6px;border-radius:50%;}
.badge.run{background:var(--run-bg);color:var(--run);}
.badge.run::before{background:var(--run);}
.badge.stop{background:var(--stop-bg);color:var(--stop);}
.badge.stop::before{background:var(--stop);}
.badge.destroy{background:var(--destroy-bg);color:var(--destroy);}
.badge.destroy::before{background:var(--destroy);}

.rowact{display:flex;gap:4px;opacity:0;transition:.12s;}
tbody tr:hover .rowact{opacity:1;}
.empty{padding:60px 20px;text-align:center;color:var(--text-faint);}
.empty .big{font-size:15px;color:var(--text-dim);margin-bottom:6px;}

.overlay{position:fixed;inset:0;background:rgba(4,8,16,.65);display:none;align-items:center;justify-content:center;z-index:50;padding:20px;}
.overlay.show{display:flex;}
.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;width:520px;max-width:100%;max-height:88vh;overflow:auto;padding:22px 24px;}
.modal h2{font-size:16px;margin:0 0 18px;font-weight:600;}
.modal.wide{width:720px;}
.modal.xwide{width:960px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:12.5px;color:var(--text-dim);margin-bottom:6px;}
.field input,.field select{width:100%;}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.row3{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;}

textarea{width:100%;min-height:160px;font-family:var(--mono);font-size:12.5px;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:10px;resize:vertical;outline:none;}
textarea:focus{border-color:var(--accent);}
.hint{font-size:12px;color:var(--text-faint);margin-top:6px;line-height:1.6;}
.import-preview{margin-top:14px;border:1px solid var(--border-soft);border-radius:8px;overflow:hidden;max-height:220px;overflow-y:auto;}
.import-preview table{font-size:12px;}
.import-preview th,.import-preview td{padding:6px 9px;}
.tag{display:inline-block;background:var(--panel2);border:1px solid var(--border);padding:2px 8px;border-radius:5px;font-size:11px;color:var(--text-dim);margin-right:6px;}

.grid-toolbar{display:flex;gap:8px;align-items:center;margin:12px 0 10px;}
.grid-wrap{border:1px solid var(--border-soft);border-radius:8px;overflow:auto;max-height:420px;}
table.paste-grid{width:100%;border-collapse:collapse;table-layout:fixed;}
table.paste-grid thead th{position:sticky;top:0;z-index:1;background:var(--panel2);color:var(--text-dim);font-size:12px;font-weight:500;text-align:left;padding:8px 4px;border-bottom:1px solid var(--border);white-space:nowrap;}
table.paste-grid td{border:1px solid var(--border-soft);padding:0;}
table.paste-grid td input{width:100%;height:32px;border:none;background:transparent;color:var(--text);font-size:12.5px;font-family:var(--mono);padding:0 8px;outline:none;border-radius:0;}
table.paste-grid td input:focus{background:var(--accent-dim);box-shadow:inset 0 0 0 1.5px var(--accent);}
table.paste-grid td.status-bad input{color:var(--destroy);}
table.paste-grid tr:hover td{background:rgba(255,255,255,.015);}
table.paste-grid .rowdel{width:34px;text-align:center;}
table.paste-grid .rowdel button{padding:4px 6px;font-size:12px;}

.userlist,.loglist{border:1px solid var(--border-soft);border-radius:8px;overflow:hidden;margin-top:16px;}
.userlist table,.loglist table{font-size:12.5px;width:100%;border-collapse:collapse;}
.userlist th,.loglist th{background:var(--panel2);color:var(--text-dim);text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-weight:500;}
.userlist td,.loglist td{padding:8px 10px;border-bottom:1px solid var(--border-soft);}
.loglist{max-height:420px;overflow-y:auto;}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#16233B;border:1px solid var(--border);color:var(--text);padding:10px 18px;border-radius:8px;font-size:13px;z-index:100;opacity:0;transition:.2s;pointer-events:none;}
.toast.show{opacity:1;transform:translate(-50%,-4px);}

::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;}
::-webkit-scrollbar-track{background:transparent;}
