:root{
  --bg:#f4f6fb; --panel:#fff; --ink:#18202f; --ink2:#5b6579; --line:#e4e8f0;
  --brand:#2f6df0; --brand2:#6f4ff0; --good:#0f9d58; --warn:#e0a300; --bad:#d64545;
  --chip:#eef2fb; --shadow:0 1px 2px rgba(20,30,60,.05),0 8px 24px rgba(20,30,60,.06);
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
}
body.dark{
  --bg:#0f1420; --panel:#161d2c; --ink:#e7ecf5; --ink2:#9aa6bd; --line:#26304400;
  --chip:#1e2739; --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.35);
}
body.dark{--line:#273149}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:15px/1.6 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;padding:0 20px 60px}
h1,h2{margin:0;font-weight:650}
h1{font-size:20px}
h2{font-size:16px}
code{font-family:var(--mono);background:var(--chip);padding:1px 5px;border-radius:4px;font-size:.92em}

.top{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1160px;margin:0 auto;padding:22px 0 16px}
.brand{display:flex;align-items:center;gap:14px}
.logo{width:46px;height:46px;border-radius:13px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;
  display:grid;place-items:center;font:700 15px/1 var(--mono);letter-spacing:.5px;box-shadow:0 6px 18px rgba(47,109,240,.3)}
.sub{margin:2px 0 0;color:var(--ink2);font-size:13px}

.panel,main>section,.tabs{max-width:1160px;margin:0 auto}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:var(--shadow)}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:16px}
.field{display:flex;flex-direction:column;gap:7px;min-width:0}
.field>span{font-size:13px;color:var(--ink2);font-weight:600}
input[type=text],input[type=number],select{background:var(--bg);color:var(--ink);border:1px solid var(--line);
  border-radius:9px;padding:8px 10px;font:14px/1.4 var(--mono);width:100%}
select{font-family:inherit}
input:focus,select:focus{outline:2px solid rgba(47,109,240,.35);outline-offset:1px}
input:disabled{opacity:.5}
.radios{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13.5px}
.radios label,.opts label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.tiny{margin:0;font-size:12px;color:var(--ink2)}
.hint{font-size:13px;color:var(--ink2)}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{border:1px solid var(--line);background:var(--bg);color:var(--ink2);border-radius:999px;padding:5px 12px;
  font-size:13px;cursor:pointer;user-select:none;transition:.15s}
.chip.on{background:linear-gradient(135deg,var(--brand),var(--brand2));border-color:transparent;color:#fff;font-weight:600}

.actions{display:flex;align-items:center;gap:12px;margin-top:16px;flex-wrap:wrap}
button{font:inherit;cursor:pointer;border-radius:9px;border:1px solid var(--line);padding:8px 16px;background:var(--panel);color:var(--ink);transition:.15s}
button:hover{transform:translateY(-1px)}
.primary{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;border-color:transparent;font-weight:600;
  box-shadow:0 4px 14px rgba(47,109,240,.28)}
.ghost{background:var(--chip);color:var(--ink2)}
.danger{color:var(--bad)}
.prog{flex:1;min-width:180px;height:22px;background:var(--chip);border-radius:999px;position:relative;overflow:hidden}
#progBar{height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--brand2));transition:width .15s}
#progText{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--ink)}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:16px}
.stat{background:var(--chip);border-radius:12px;padding:10px 13px}
.stat b{display:block;font:650 19px/1.3 var(--mono)}
.stat span{font-size:12px;color:var(--ink2)}

.tabs{display:flex;gap:6px;margin:22px auto 14px;flex-wrap:wrap}
.tab{background:transparent;border:1px solid transparent;color:var(--ink2);font-weight:600;padding:8px 15px}
.tab:hover{background:var(--chip)}
.tab.active{background:var(--panel);border-color:var(--line);color:var(--ink);box-shadow:var(--shadow)}
.badge{background:var(--brand);color:#fff;border-radius:999px;padding:0 6px;font-size:11.5px;margin-left:3px}
.tabpane{display:none;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:var(--shadow)}
.tabpane.active{display:block}

.toolbar,.searchbar,.opts{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.toolbar{margin-bottom:14px}
.toolbar label{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink2)}
.toolbar select{width:auto;min-width:210px}
.spacer{flex:1}
.searchbar input{flex:1;min-width:240px;font-size:15px;padding:10px 12px}
.searchbar select{width:auto}
.opts{margin-top:10px;font-size:13px;color:var(--ink2)}
.opts input[type=number]{width:88px;padding:5px 8px}
.note{font-size:13px;color:var(--ink2);margin:0 0 12px}
.note b{color:var(--ink)}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(306px,1fr));gap:10px}
.card{display:flex;align-items:center;gap:9px;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:8px 10px}
.card:hover{border-color:var(--brand)}
.rank{flex:none;font:650 11.5px/1 var(--mono);color:var(--ink2);background:var(--chip);border-radius:6px;padding:5px 5px;min-width:32px;text-align:center}
.body{flex:1;min-width:0}
.num{font:600 15.5px/1.35 var(--mono);letter-spacing:.4px;cursor:pointer;white-space:nowrap}
.num .tail{color:var(--brand)}
.num .reg{color:var(--ink2)}
body.dark .num .tail{color:#8fb0ff}
.sub2{display:flex;align-items:center;gap:5px;font-size:11.5px;line-height:1.5;color:var(--ink2);white-space:nowrap;overflow:hidden}
.sub2 .prov{flex:none;color:var(--ink);font-weight:600}
.sub2 .tags{overflow:hidden;text-overflow:ellipsis}
.sub2 i{flex:none;opacity:.45;font-style:normal}
.sc{flex:none;font:650 12px/1 var(--mono);color:var(--brand);background:rgba(47,109,240,.1);border-radius:6px;padding:5px 6px;white-space:nowrap}
body.dark .sc{color:#8fb0ff;background:rgba(143,176,255,.15)}
.star{border:none;background:transparent;font-size:17px;line-height:1;padding:2px 4px;color:#c3cad8}
.star.on{color:var(--warn)}
.empty{grid-column:1/-1;text-align:center;color:var(--ink2);padding:34px 0;font-size:13.5px}

.pager{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;flex-wrap:wrap;font-size:13px;color:var(--ink2)}
.pager button{padding:6px 12px;background:var(--chip);color:var(--ink2)}
.pager button:disabled{opacity:.4;cursor:default;transform:none}
.pager input{width:72px;text-align:center;padding:5px}

.help{background:var(--chip);border-radius:12px;padding:14px 16px;margin:12px 0;font-size:13.5px}
.help h3{margin:0 0 8px;font-size:14px}
.help h3:not(:first-child){margin-top:14px}
.help table{width:100%;border-collapse:collapse}
.help td{padding:4px 8px 4px 0;vertical-align:top;border-bottom:1px solid var(--line)}
.help td:first-child{white-space:nowrap;font-family:var(--mono);color:var(--brand);font-weight:600;width:1%}
body.dark .help td:first-child{color:#8fb0ff}
.help ul{margin:6px 0 0;padding-left:20px}
.help li{margin:3px 0}
.help code{cursor:pointer}
.help code:hover{outline:1px solid var(--brand)}

.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink);color:var(--bg);
  padding:9px 18px;border-radius:999px;font-size:13.5px;box-shadow:var(--shadow);z-index:9}
@media (max-width:560px){body{padding:0 12px 40px}.cards{grid-template-columns:1fr}}
