:root{
  --bg:#0b1020;--bg2:#0e1530;--card:#121a33;--line:#243154;--txt:#e8edff;--muted:#93a1c9;
  --pri:#4f7cff;--pri2:#7c5cff;--ok:#22c55e;--bad:#ff4d5e;--warn:#f59e0b;--cyan:#22d3ee;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:radial-gradient(1400px 700px at 15% -10%,#16224a,var(--bg) 60%);color:var(--txt);
  font-family:"Segoe UI","Microsoft YaHei",system-ui,-apple-system,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}
a{color:var(--pri);text-decoration:none}
button{font-family:inherit}
/* ---------- 顶栏 ---------- */
.top{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:10px 18px;background:rgba(11,16,32,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;cursor:pointer;min-width:260px;flex:1}
.brand .logo{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:20px;
  background:linear-gradient(135deg,var(--pri),var(--pri2));box-shadow:0 6px 20px rgba(79,124,255,.35)}
.brand .bt b{display:block;font-size:14px;line-height:1.35}
.brand .bt small{color:var(--muted);font-size:11px}
.nav{display:flex;gap:6px;flex-wrap:wrap}
.nav button{background:transparent;border:1px solid var(--line);color:var(--muted);padding:7px 13px;border-radius:9px;cursor:pointer;font-size:13px}
.nav button:hover{color:var(--txt);border-color:var(--pri)}
.nav button.on{background:linear-gradient(135deg,var(--pri),var(--pri2));color:#fff;border-color:transparent}
.user{display:flex;align-items:center;gap:8px;font-size:13px}
.user .who{color:var(--muted)}
.badge{padding:2px 8px;border-radius:20px;font-size:11px;background:#1c2748;color:#9fb0dd;border:1px solid var(--line)}
.badge.admin{background:rgba(245,158,11,.15);color:#f6c26b;border-color:rgba(245,158,11,.4)}
.badge.guest{background:rgba(148,163,184,.15);color:#c3cee6}
/* ---------- 视图 ---------- */
.view{max-width:1320px;margin:0 auto;padding:20px 18px 60px}
.h1{font-size:20px;margin:6px 0 4px}
.sub{color:var(--muted);font-size:13px;margin-bottom:16px}
.grid{display:grid;gap:14px}
.grid.c2{grid-template-columns:repeat(2,1fr)}
.grid.c3{grid-template-columns:repeat(3,1fr)}
.grid.c4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}
.card h3{margin:0 0 10px;font-size:15px}
.stat{display:flex;flex-direction:column;gap:4px}
.stat b{font-size:24px;background:linear-gradient(135deg,#8fb0ff,#c3a6ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat span{color:var(--muted);font-size:12px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:14px 0}
.toolbar input,.toolbar select{background:var(--bg2);border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:8px 11px;font-size:13px;outline:none}
.toolbar input:focus,.toolbar select:focus{border-color:var(--pri)}
.btn{background:var(--bg2);border:1px solid var(--line);color:var(--txt);padding:8px 13px;border-radius:9px;cursor:pointer;font-size:13px}
.btn:hover{border-color:var(--pri)}
.btn.pri{background:linear-gradient(135deg,var(--pri),var(--pri2));border-color:transparent;color:#fff;font-weight:600}
.btn.ok{background:linear-gradient(135deg,#15a34a,#22c55e);border-color:transparent;color:#fff}
.btn.warn{background:rgba(245,158,11,.15);border-color:rgba(245,158,11,.4);color:#f6c26b}
.btn.sm{padding:5px 9px;font-size:12px;border-radius:7px}
.btn:disabled{opacity:.5;cursor:not-allowed}
/* ---------- 表格 ---------- */
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:8px 9px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-weight:600;font-size:12px;position:sticky;top:0;background:var(--card)}
tbody tr:hover{background:rgba(79,124,255,.06)}
.tw{max-height:640px;overflow:auto;border:1px solid var(--line);border-radius:12px}
.picks{font-family:Consolas,"Courier New",monospace;font-size:12.5px;letter-spacing:.5px}
.pick-cell{display:inline-block;min-width:26px;text-align:center;padding:2px 5px;margin:1px;border-radius:6px;background:#182347;border:1px solid #26355f}
.pick-cell.p3{background:rgba(34,197,94,.16);border-color:rgba(34,197,94,.4);color:#7ee2a4}
.pick-cell.p1{background:rgba(245,158,11,.16);border-color:rgba(245,158,11,.4);color:#f7cf87}
.pick-cell.p0{background:rgba(79,124,255,.16);border-color:rgba(79,124,255,.4);color:#9db9ff}
.tag{display:inline-block;padding:1px 7px;border-radius:20px;font-size:11px;border:1px solid var(--line);background:#182347;color:#a9b8e0}
.tag.real{background:rgba(34,197,94,.15);border-color:rgba(34,197,94,.4);color:#7ee2a4}
.tag.mirror{background:rgba(148,163,184,.13);color:#c3cee6}
.tag.cn{background:rgba(255,77,94,.12);border-color:rgba(255,77,94,.35);color:#ffa8b0}
.tag.eu{background:rgba(34,211,238,.12);border-color:rgba(34,211,238,.35);color:#8fe6f5}
/* ---------- 分页 ---------- */
.pager{display:flex;gap:8px;align-items:center;justify-content:center;margin:16px 0}
.pager button{min-width:34px}
.pager .info{color:var(--muted);font-size:12px}
/* ---------- 模态 ---------- */
.modal{display:none;position:fixed;inset:0;background:rgba(5,8,18,.72);z-index:100;align-items:center;justify-content:center;padding:20px}
.modal.on{display:flex}
.mbox{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.mhead{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}
.mhead .x{background:transparent;border:0;color:var(--muted);font-size:22px;cursor:pointer;line-height:1}
.mbody{padding:16px}
.mbody label{display:block;font-size:12px;color:var(--muted);margin:10px 0 5px}
.mbody input{width:100%;padding:11px 13px;border-radius:10px;border:1px solid var(--line);background:var(--bg2);color:var(--txt);font-size:14px;outline:none}
.mbody input:focus{border-color:var(--pri)}
.mrow{display:flex;gap:8px;margin-top:16px}
.mrow button{flex:1;padding:11px;border-radius:10px;border:0;font-size:14px;cursor:pointer;font-weight:600}
.mrow .pri{background:linear-gradient(135deg,var(--pri),var(--pri2));color:#fff}
.mrow .ghost{background:transparent;border:1px solid var(--line);color:var(--muted)}
.mmsg{margin-top:10px;font-size:12.5px;min-height:16px;color:var(--bad)}
.mtip{margin-top:12px;font-size:11px;color:var(--muted);line-height:1.6;text-align:center}
/* ---------- 提示 ---------- */
.toast{position:fixed;left:50%;bottom:36px;transform:translateX(-50%) translateY(20px);background:#16224a;border:1px solid var(--pri);
  color:#fff;padding:11px 18px;border-radius:12px;font-size:13px;opacity:0;pointer-events:none;transition:.25s;z-index:200;max-width:90vw;box-shadow:0 10px 30px rgba(0,0,0,.45)}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.empty{color:var(--muted);text-align:center;padding:40px 10px;font-size:13px}
.loading{color:var(--muted);text-align:center;padding:30px}
.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;max-width:1320px;margin:0 auto;padding:16px 18px 30px;color:var(--muted);font-size:12px;border-top:1px solid var(--line)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px}
.kv .k{color:var(--muted)}
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:20px;background:#182347;border:1px solid var(--line);font-size:12px}
.bar{height:8px;border-radius:6px;background:#182347;overflow:hidden;display:inline-block;width:90px;vertical-align:middle}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--pri),var(--pri2))}
@media(max-width:900px){.grid.c3,.grid.c4{grid-template-columns:repeat(2,1fr)}.brand small{display:none}}
@media(max-width:640px){.grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}.brand .bt b{font-size:12px}.view{padding:14px 10px 50px}}
