:root {
  --ink:#1e2937;
  --ink-2:#0f172a;
  --paper:#f3f5f8;
  --paper-2:#e8edf3;
  --card:#ffffff;
  --pane:#f7f8fb;
  --line:#e4e8ef;
  --line-strong:#cfd6e3;
  --line-soft:#eef1f6;
  --fg:#0f172a;
  --fg-2:#334155;
  --fg-3:#64748b;
  --fg-4:#94a3b8;
  --seal:#2563eb;
  --brand:#2563eb;
  --brand-hover:#1d4ed8;
  --brand-fg:#ffffff;
  --brand-soft:#eff4ff;
  --brand-soft-2:#dbe6fe;
  --brand-ring:rgba(37,99,235,.18);
  --seal-hover:#1d4ed8;
  --seal-fg:#ffffff;
  --seal-soft:#eff4ff;
  --seal-line:#bfdbfe;
  --seal-ring:rgba(37,99,235,.18);
  --success:#15803d;
  --success-bg:#ecf8ef;
  --success-border:#bbdcc5;
  --warn:#b45309;
  --warn-bg:#fef6e8;
  --warn-border:#ead4a8;
  --danger:#dc2626;
  --danger-bg:#fef2f2;
  --danger-border:#f0c9c9;
  --info:#2563eb;
  --info-bg:#eff4ff;
  --info-border:#c7d7fe;
  --neutral-bg:#f1f5f9;
  --neutral-border:#e2e8f0;
  --chip-bg:#f1f5f9;
  --hover:rgba(15,23,42,.04);
  --sb-w:208px;
  --topbar-h:48px;
  --font-ui:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",-apple-system,sans-serif;
  --font-mono:"Cascadia Mono","SF Mono",Consolas,"JetBrains Mono",ui-monospace,monospace;
  --r:6px;
  --r-sm:4px;
  --r-lg:8px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow-md:0 8px 20px rgba(15,23,42,.08);
  --shadow-lg:0 16px 40px rgba(15,23,42,.14);
  --ease-out:cubic-bezier(.22,1,.36,1);
}
* { box-sizing:border-box; }
html,body { margin:0; height:100%; background:var(--paper); color:var(--fg);
  font-family:var(--font-ui); font-size:13.5px;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; }
button,input,select,textarea { font:inherit; outline:none; }
::placeholder { color:var(--fg-4); }
::-webkit-scrollbar { width:8px; height:8px; }
::-webkit-scrollbar-thumb { background:rgba(15,23,42,.16); border-radius:4px; }
::-webkit-scrollbar-thumb:hover { background:rgba(15,23,42,.28); }
:focus-visible { outline:2px solid var(--seal); outline-offset:2px; }

.app { display:grid; grid-template-columns:var(--sb-w) 1fr; height:100vh; overflow:hidden; }

.sb { background:var(--ink); color:#e2e8f0; display:flex; flex-direction:column; min-height:0; }
.sb-brand { display:flex; align-items:center; gap:10px; padding:14px 14px 12px; }
.sb-logo { width:28px; height:28px; border-radius:6px; object-fit:cover; display:block; flex-shrink:0; }
.sb-name { display:flex; flex-direction:column; gap:1px; min-width:0; line-height:1.15; }
.sb-name strong { font-size:14px; font-weight:650; color:#f8fafc; }
.sb-name span { font-size:11px; color:#94a3b8; }
.sb-group { padding:4px 8px; flex:1; min-height:0; overflow:auto; }

.nav-list { position:relative; }
.nav-thumb { position:absolute; left:0; top:0; width:100%; height:36px; border-radius:6px;
  background:rgba(255,255,255,.08); box-shadow:inset 3px 0 0 var(--seal);
  opacity:0; will-change:transform;
  transition:transform .22s var(--ease-out), opacity .16s ease; }
.nav { position:relative; z-index:1; display:flex; align-items:center; gap:8px;
  padding:8px 12px; border-radius:6px; color:#cbd5e1; font-size:13px;
  font-weight:500; cursor:pointer; border:0; background:transparent; width:100%;
  text-align:left; margin-bottom:1px; }
.nav:hover { color:#f8fafc; background:rgba(255,255,255,.05); }
.nav.active, .nav.active:hover { color:#fff; font-weight:650; background:transparent; }
.nav .count { margin-left:auto; font-size:11px; font-family:var(--font-mono);
  color:#64748b; font-variant-numeric:tabular-nums; }
.nav.active .count { color:#93c5fd; }

.sb-foot { margin-top:auto; border-top:1px solid rgba(255,255,255,.08); padding:12px 14px;
  font-size:12px; color:#94a3b8; display:flex; flex-direction:column; gap:4px; }
.dot { width:7px; height:7px; border-radius:50%; display:inline-block; margin-right:8px; }
.dot.on { background:#22c55e; }
.dot.off { background:#f87171; }

.main { display:flex; flex-direction:column; min-width:0; min-height:0; background:var(--paper); }
.topbar { height:var(--topbar-h); display:flex; align-items:center; padding:0 14px;
  border-bottom:1px solid var(--line); gap:10px; flex-shrink:0; background:var(--card); }
.topbar h1 { margin:0; font-size:15px; font-weight:650; }
.topbar .sub { color:var(--fg-3); font-size:12px; }
.topbar .right { margin-left:auto; display:flex; gap:8px; align-items:center; }
.menu-toggle { display:none; }

.content { flex:1; min-height:0; overflow:hidden; padding:10px;
  display:flex; flex-direction:column; }

.section { display:none; flex:1; min-height:0; overflow:auto; }
.section.active { display:block; }
.section.fill.active { display:flex; flex-direction:column; overflow:hidden; }

.btn, .pool-btn {
  display:inline-flex; align-items:center; gap:6px; height:32px; padding:0 12px;
  border:1px solid var(--line-strong); background:var(--card); color:var(--fg-2); font-size:13px;
  font-weight:500; border-radius:var(--r-sm); cursor:pointer; white-space:nowrap; }
.btn:hover:not(:disabled), .pool-btn:hover:not(:disabled) { background:var(--pane); color:var(--fg); border-color:var(--fg-4); }
.btn:disabled, .pool-btn:disabled { opacity:.5; cursor:not-allowed; }
.btn.primary, .pool-btn-primary { background:var(--seal); color:#fff; border-color:var(--seal); font-weight:600; }
.btn.primary:hover:not(:disabled), .pool-btn-primary:hover:not(:disabled) { background:var(--seal-hover); border-color:var(--seal-hover); color:#fff; }
.btn.ghost { background:transparent; border-color:transparent; color:var(--fg-2); }
.btn.ghost:hover:not(:disabled) { background:var(--hover); }
.btn.danger, .pool-btn.danger { color:var(--danger); border-color:var(--danger-border); }
.btn.danger:hover:not(:disabled), .pool-btn.danger:hover:not(:disabled) { background:var(--danger-bg); }
.btn.sm { height:28px; padding:0 10px; font-size:12px; }

.act-text-btn { display:inline-flex; align-items:center; height:22px; padding:0 7px; border-radius:4px;
  border:1px solid transparent; background:transparent; color:var(--fg-3); font-size:12px; font-weight:600;
  cursor:pointer; white-space:nowrap; flex-shrink:0; }
.act-text-btn:hover { color:var(--seal); background:var(--seal-soft); border-color:var(--seal-line); }
.act-text-btn.danger:hover { color:var(--danger); background:var(--danger-bg); border-color:var(--danger-border); }
.act-text-btn.quiet { opacity:0; }
tr:hover .act-text-btn.quiet, .drow:hover .act-text-btn.quiet,
.act-text-btn.quiet:focus-visible, .act-text-btn.quiet:hover { opacity:1; }
.act-row { display:flex; align-items:center; gap:4px; }

.row { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.hint { font-size:12px; color:var(--fg-3); margin-top:8px; line-height:1.5; }
code { background:var(--pane); padding:1px 6px; border-radius:4px; font-size:12px; font-family:var(--font-mono); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap; border:0; }

.card { background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); }
.card.pad { padding:12px 14px; }
.card h2 { margin:0 0 10px; font-size:13.5px; font-weight:650; }
.stats { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; margin-bottom:10px; }
@media (max-width:1200px){ .stats { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:720px){ .stats { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.stat { padding:10px 12px; background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); }
.stat .lbl { font-size:12px; color:var(--fg-3); }
.stat .num { font-size:22px; font-weight:700; letter-spacing:-.4px; margin-top:4px;
  font-variant-numeric:tabular-nums; }

input[type=text],input[type=password],input[type=number],select,textarea {
  width:100%; background:var(--card); border:1px solid var(--line-strong); color:var(--fg);
  padding:6px 10px; border-radius:var(--r); font-size:13px; min-height:32px; }
input[type=password] { -webkit-text-security:disc; font-family:var(--font-mono); letter-spacing:.05em; }
input:focus,select:focus,textarea:focus { border-color:var(--seal); box-shadow:0 0 0 3px var(--seal-ring); }
input:invalid:not(:placeholder-shown), input.bad { border-color:var(--danger); }
textarea { resize:vertical; font-family:var(--font-mono); font-size:12px; min-height:auto; line-height:1.55; }
.grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
@media (max-width:900px){ .grid { grid-template-columns:1fr; } }
.switches { display:flex; flex-wrap:wrap; gap:14px; }
.switch { display:flex; align-items:center; gap:6px; font-size:13px; cursor:pointer; }
.switch input { width:15px; height:15px; accent-color:var(--seal); }

.cockpit { flex:1; min-height:0; display:flex; flex-direction:column; gap:10px; }
.cockpit .stats { margin-bottom:0; flex-shrink:0; }
.jobs-card { flex:1; min-height:0; display:flex; flex-direction:column; overflow:hidden; }
.jobs-card h2 { flex-shrink:0; }
.jobs-card .tbl-wrap { flex:1; min-height:0; }

/* ---------- 满页：顶栏 + 内容 ---------- */
.page-shell, .reg-shell { flex:1; min-height:0; display:flex; flex-direction:column; gap:8px; }
.page-table {
  flex:1; min-height:0; overflow:auto;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
}
.page-table table { width:100%; min-width:1120px; }
.page-bind {
  flex:0 0 auto; max-height:min(28vh, 220px); min-height:120px;
  display:flex; flex-direction:column; overflow:hidden;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
}
.page-bind .tbl-wrap, .page-bind .progress-wrap { flex:1; min-height:0; }
.page-toolbar { margin:0 !important; padding:0 !important; border:0 !important; }
.stats-compact { gap:6px; margin-bottom:0; grid-template-columns:repeat(auto-fit,minmax(108px,1fr)); }
.stats-compact .stat { padding:8px 10px; }
.stats-compact .stat .num { font-size:18px; margin-top:2px; }

.ver-bar { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(180px,.7fr) auto; gap:8px; align-items:end; }
.ver-main { min-width:0; }
.ver-field { display:flex; flex-direction:column; }
.ver-field > span, .ver-proxy-field > span { font-size:11.5px; color:var(--fg-3); font-weight:600; margin-bottom:4px; }
.ver-field textarea { min-height:72px; resize:vertical; }
.ver-proxy-field { display:flex; flex-direction:column; min-width:0; }
.ver-actions { display:flex; align-items:center; gap:10px; padding-bottom:2px; }
.ver-actions .btn.primary { height:32px; padding:0 18px; }
#sec-verify .verify-result-pane { flex:1; min-height:0; }

/* ---------- 注册：顶栏参数 + 下方进度 ---------- */
.reg-controls { flex-shrink:0; background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:10px 12px; }
.reg-row { display:flex; flex-wrap:wrap; align-items:end; gap:8px; }
.reg-row .field { display:flex; flex-direction:column; min-width:0; }
.reg-row .field > span { font-size:11.5px; color:var(--fg-3); font-weight:600; margin-bottom:4px; }
.reg-row .field input,
.reg-row .field select { min-height:32px; }
.reg-row .f-count, .reg-row .f-conc { width:72px; }
.reg-row .f-cc { width:64px; }
.reg-row .f-domain { width:150px; }
.reg-row .f-grow { flex:1; min-width:160px; }
.reg-row #startBtn { height:32px; padding:0 18px; margin-bottom:0; }
.reg-meta { display:flex; flex-wrap:wrap; align-items:center; gap:12px 16px; margin-top:8px; min-height:22px; }
.reg-meta .field { display:flex; flex-direction:column; }
.reg-meta .field > span { font-size:11.5px; color:var(--fg-3); font-weight:600; margin-bottom:2px; }
.reg-meta .field select { min-height:28px; padding:0 8px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--card); }
.reg-hint { font-size:12px; color:var(--fg-3); margin-left:auto; }
.reg-more { display:none; grid-template-columns:minmax(220px,1.4fr) minmax(160px,1fr) 140px 120px; gap:8px; margin-top:8px; padding-top:8px; border-top:1px solid var(--line-soft); }
.reg-more.open { display:grid; }
.reg-more .field { display:flex; flex-direction:column; min-width:0; }
.reg-more .field > span { font-size:11.5px; color:var(--fg-3); font-weight:600; margin-bottom:4px; }
.reg-work { flex:1; min-height:0; display:grid; grid-template-rows:minmax(0,1fr) minmax(140px,.42fr); gap:8px; }
.register-log-panel, .progress-section {
  display:flex; flex-direction:column; min-height:0; overflow:hidden;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
}
.register-log-head {
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:8px 12px; border-bottom:1px solid var(--line); background:var(--pane); flex-shrink:0;
}
.register-log-head strong { font-size:13px; }
.register-batch-stats { display:flex; gap:12px; font-size:12px; color:var(--fg-3); font-variant-numeric:tabular-nums; }
.register-batch-stats b { color:var(--fg); }
.register-log-live { font-size:12px; font-weight:500; color:var(--seal); }
.register-log-head-main { display:flex; align-items:center; gap:10px; min-width:0; }
.register-log-head-actions { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.register-log-empty { margin:0; padding:10px 0; font-size:13px; color:var(--fg-4); }
.register-log-body { flex:1; min-height:0; overflow:auto; display:flex; flex-direction:column; }
.progress-wrap { flex:1; min-height:0; overflow:auto; }
.console {
  height:100%; min-height:0; padding:8px 12px; overflow-y:auto;
  font-family:var(--font-mono); font-size:12px; line-height:1.55; white-space:pre-wrap; word-break:break-all;
  background:var(--card); color:var(--fg-2);
}
.console .l-INFO { color:var(--fg-2); } .console .l-ERROR { color:var(--danger); } .console .l-WARNING { color:var(--warn); }
.console .ts { color:var(--fg-4); margin-right:6px; }

.pool-page {
  flex:1; display:flex; flex-direction:column; min-height:0;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden;
}
#sec-proxies.active { display:flex; flex-direction:column; min-height:0; overflow:hidden; }
#sec-proxies .page-shell { flex:1; min-height:0; }
#sec-proxies .stats { flex-shrink:0; }
#sec-proxy-stats.active { display:flex; flex-direction:column; min-height:0; overflow:hidden; }
#sec-proxy-stats .stats-page { flex:1; min-height:0; overflow-y:auto; padding-bottom:12px; }
#sec-proxy-stats .stats { padding:0 0 10px; margin-bottom:0; }
.proxy-chart-wrap {
  margin:0 0 10px; padding:12px 14px 10px;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
}
.proxy-chart-head { display:flex; align-items:center; gap:8px; margin-bottom:10px; flex-wrap:wrap; }
.proxy-chart-head h2 { margin:0; font-size:13.5px; font-weight:650; }
.proxy-chart-stage { position:relative; }
.proxy-chart-canvas {
  width:100%; height:240px; display:block; background:var(--pane);
  border:1px solid var(--line-soft); border-radius:8px; cursor:crosshair;
}
.proxy-chart-empty {
  height:240px; display:flex; align-items:center; justify-content:center;
  color:var(--fg-3); font-size:13px; border:1px dashed var(--line); border-radius:8px;
  background:var(--pane);
}
.proxy-chart-tooltip {
  position:absolute; pointer-events:none; z-index:5; opacity:0;
  min-width:160px; max-width:280px; padding:8px 10px;
  background:var(--card); border:1px solid var(--line); border-radius:8px;
  box-shadow:var(--shadow-md); font-size:12px; line-height:1.5; }
.proxy-chart-tooltip.show { opacity:1; }
.proxy-chart-tooltip .tt-date { font-weight:650; margin-bottom:6px; color:var(--fg); }
.proxy-chart-tooltip .tt-row { display:flex; align-items:center; gap:8px; justify-content:space-between; }
.proxy-chart-tooltip .tt-name { display:flex; align-items:center; gap:6px; color:var(--fg-2); min-width:0; }
.proxy-chart-tooltip .tt-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.proxy-chart-tooltip .tt-val { font-variant-numeric:tabular-nums; white-space:nowrap; }
.proxy-chart-tooltip .tt-vol { margin-top:8px; padding-top:8px; border-top:1px solid var(--line-soft); color:var(--fg-3); }
.proxy-chart-legend { display:flex; flex-wrap:wrap; gap:8px 10px; margin-top:10px; font-size:12px; }
.proxy-chart-legend .lg-item {
  display:inline-flex; align-items:center; gap:6px; padding:4px 8px; border-radius:6px;
  border:1px solid var(--line-soft); background:var(--pane); cursor:pointer; user-select:none;
  color:var(--fg-2); }
.proxy-chart-legend .lg-item:hover { border-color:var(--line-strong); }
.proxy-chart-legend .lg-item.off { opacity:.36; text-decoration:line-through; }
.proxy-chart-legend .lg-dot { width:10px; height:10px; border-radius:3px; flex-shrink:0; }
.proxy-empty-banner {
  margin:0; padding:8px 12px; border-radius:8px;
  border:1px dashed var(--line-strong); background:var(--seal-soft);
  font-size:13px; line-height:1.5; color:var(--fg-2);
}
.pool-cockpit-toolbar {
  display:flex; align-items:center; gap:8px;
  padding:8px 12px; border-bottom:1px solid var(--line-soft); flex-shrink:0;
  flex-wrap:wrap;
}
.pool-compact-select { width:auto; min-width:108px; height:32px; min-height:32px; padding:0 28px 0 10px; font-size:12px; border-radius:6px; }
.pool-toolbar-sp { flex:1; min-width:8px; }
.sel-chip { color:var(--fg-3); font-size:12px; white-space:nowrap; flex-shrink:0; }
.sel-chip b { color:var(--fg); font-weight:650; font-variant-numeric:tabular-nums; }
.pool-btn { height:32px; padding:0 11px; font-size:12px; }

.pool-search-shell { position:relative; flex-shrink:0; }
.pool-search-field {
  display:flex; align-items:center; height:32px; padding:0 11px;
  width:216px; background:var(--pane); border:1px solid var(--line-strong); border-radius:6px; }
.pool-search-shell.open .pool-search-field { width:280px; background:var(--card); border-color:var(--seal); box-shadow:0 0 0 3px var(--seal-ring); }
.pool-search-field input { border:0; background:transparent; box-shadow:none !important; padding:0; min-height:0; height:auto; font-size:12.5px; }
.search-tray {
  position:absolute; z-index:60; top:calc(100% + 6px); left:0; width:288px;
  background:var(--card); border:1px solid var(--line); border-radius:8px; box-shadow:var(--shadow-lg);
  padding:10px; display:none; }
.pool-search-shell.open .search-tray { display:block; }
.search-tray .tray-title { font-size:11px; font-weight:650; color:var(--fg-4); margin-bottom:8px; }
.search-tray .tray-chips { display:flex; flex-wrap:wrap; gap:6px; }
.tray-chip { border:1px solid var(--line-strong); background:var(--pane); color:var(--fg-2);
  border-radius:999px; padding:4px 10px; font-size:12px; cursor:pointer; white-space:nowrap; }
.tray-chip:hover { border-color:var(--fg-4); }
.tray-chip.on { background:var(--seal-soft); color:var(--seal); border-color:var(--seal-line); font-weight:650; }
.search-tray .tray-foot { margin-top:8px; padding-top:8px; border-top:1px solid var(--line-soft);
  font-size:11.5px; color:var(--fg-3); font-variant-numeric:tabular-nums; }
.view-chip { display:inline-flex; align-items:center; height:32px; padding:0 11px; flex-shrink:0;
  border:1px solid var(--line-strong); background:var(--pane); color:var(--fg-2);
  border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap; }
.view-chip:hover { border-color:var(--fg-4); color:var(--fg); }
.view-chip.on { background:var(--seal-soft); color:var(--seal); border-color:var(--seal-line); font-weight:650; }

.tbl-wrap { overflow:auto; border:1px solid var(--line); border-radius:var(--r-lg); }
.pool-page .tbl-wrap { flex:1; min-height:0; border:0; border-radius:0; }
.pool-page table { width:100%; min-width:1120px; border-collapse:collapse; font-size:12.5px; table-layout:auto; }
.pool-page table thead th { white-space:nowrap; word-break:keep-all; }
.pool-page td, .pool-page th { padding-left:9px; padding-right:9px; }
table { width:100%; border-collapse:collapse; font-size:12.5px; }
th { text-align:left; font-weight:650; color:var(--fg-3); font-size:11.5px;
  padding:8px 10px; border-bottom:1px solid var(--line);
  background:var(--pane); position:sticky; top:0; z-index:1; }
td { padding:7px 10px; border-bottom:1px solid var(--line-soft); vertical-align:middle; }
tbody tr { transition:background .12s ease; }
tr:hover td { background:var(--hover); }
tr:last-child td { border-bottom:0; }
.mono { font-family:var(--font-mono); font-size:11.5px; }
.cell-time { color:var(--fg-2); font-variant-numeric:tabular-nums; white-space:nowrap; font-size:12px; }
.cell-age { color:var(--fg-3); white-space:nowrap; font-size:12px; }
.cell-relogin { color:var(--fg-2); white-space:nowrap; font-size:12px; text-align:center; }
.cell-batch { font-weight:650; color:var(--seal); white-space:nowrap; font-variant-numeric:tabular-nums; }
input[type=checkbox].ck { width:15px; height:15px; accent-color:var(--seal); cursor:pointer; }

.badge { display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:650; padding:2px 8px;
  border-radius:999px; border:1px solid transparent; white-space:nowrap; }
.badge.success { background:var(--success-bg); color:var(--success); border-color:var(--success-border); }
.badge.warn { background:var(--warn-bg); color:var(--warn); border-color:var(--warn-border); }
.badge.danger { background:var(--danger-bg); color:var(--danger); border-color:var(--danger-border); }
.badge.info { background:var(--info-bg); color:var(--info); border-color:var(--info-border); }
.badge.neutral { background:var(--neutral-bg); color:var(--fg-2); border-color:var(--neutral-border); }
.badge.brand { background:var(--seal-soft); color:var(--seal); border-color:var(--seal-line); }
.tag { display:inline-flex; align-items:center; font-size:10px; padding:1px 6px; border-radius:4px;
  background:var(--chip-bg); color:var(--fg-2); border:1px solid var(--line); margin-right:3px; }

.st { font-size:10.5px; padding:2px 9px; border-radius:999px; font-weight:650; white-space:nowrap; }
.st.wait { background:var(--neutral-bg); color:var(--fg-3); }
.st.run { background:var(--info-bg); color:var(--info); }
.st.ok { background:var(--success-bg); color:var(--success); }
.st.err { background:var(--danger-bg); color:var(--danger); }

.cell-main { display:flex; align-items:center; gap:4px; min-width:0; }
.cell-main .val { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pwd-mask { letter-spacing:0; color:var(--fg-3); user-select:none; }

.tok-main { display:inline-flex; align-items:center; gap:6px; padding:4px 11px; border-radius:999px;
  font-size:12px; font-weight:650; border:1px solid transparent; white-space:nowrap; }
.tok-main.ok { background:var(--success-bg); color:var(--success); border-color:var(--success-border); }
.tok-main.bad { background:var(--danger-bg); color:var(--danger); border-color:var(--danger-border); }
.tok-main.unk { background:var(--neutral-bg); color:var(--fg-3); border-color:var(--neutral-border); }
.rec-none { color:var(--fg-4); font-size:12px; }

.pager { display:flex; align-items:center; gap:10px; justify-content:end; padding:8px 12px;
  font-size:12.5px; color:var(--fg-3); border-top:1px solid var(--line-soft); flex-shrink:0;
  font-variant-numeric:tabular-nums; }
.empty { text-align:center; color:var(--fg-3); padding:28px 16px; font-size:13px; }

.msgbox { font-size:12.5px; padding:8px 10px; border-radius:var(--r); display:none; line-height:1.5; }
.msgbox.show { display:block; }
.msgbox.ok { background:var(--success-bg); border:1px solid var(--success-border); color:var(--success); }
.msgbox.err { background:var(--danger-bg); border:1px solid var(--danger-border); color:var(--danger); }
.msgbox.warn { background:var(--warn-bg); border:1px solid var(--warn-border); color:var(--warn); }

.ops-pane {
  display:flex; flex-direction:column; min-height:0; overflow:auto;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:12px; }
.verify-result-pane { display:flex; flex-direction:column; min-height:0; overflow:hidden;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); }
.verify-result-pane .register-log-head { flex-shrink:0; }
.verify-result-body { flex:1; min-height:0; overflow:auto; padding:12px; }
.ver-fold { display:none; align-items:center; gap:12px; padding:10px 12px; border-radius:8px;
  border:1px solid var(--seal-line); background:var(--seal-soft); min-height:72px; }
.ver-fold.show { display:flex; }
.ver-fold-main { display:flex; flex-direction:column; gap:3px; min-width:0; }
.ver-fold-kind { font-size:12.5px; font-weight:650; color:var(--seal); }
.ver-fold-val { font-size:11.5px; color:var(--fg-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ver-fold .act-text-btn { margin-left:auto; }
.ver-note { margin:6px 0 0; font-size:12px; color:var(--warn); display:none; }
.ver-note.show { display:block; }

.ops-page { flex:1; min-height:0; display:flex; flex-direction:column; gap:8px; }
.ops-page .ops-pane { flex:0 0 auto; }
.ops-page .pool-page { flex:1; min-height:0; }

.captcha-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px; margin-top:12px; }
.captcha-card { border:1px solid var(--line); border-radius:var(--r); padding:12px; background:var(--pane); display:flex; flex-direction:column; gap:8px; min-width:0; }
.captcha-card .captcha-site { font-size:13px; font-weight:650; color:var(--fg); text-decoration:none; width:fit-content; }
.captcha-card .captcha-site:hover { color:var(--brand); }
.captcha-card .hint { margin:0; font-size:12px; color:var(--fg-3); }
.captcha-card .field > span { font-size:11.5px; color:var(--fg-3); font-weight:600; margin-bottom:4px; display:block; }
.captcha-card input { width:100%; min-height:32px; padding:0 8px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--card); }

.modal-bg { position:fixed; inset:0; background:rgba(15,23,42,.46); display:none;
  align-items:center; justify-content:center; z-index:80; padding:16px; }
.modal-bg.show { display:flex; }
.modal { background:var(--card); border:1px solid var(--line); border-radius:10px; width:100%; max-width:560px;
  box-shadow:var(--shadow-lg); overflow:hidden; min-width:0; }
.modal-h { padding:12px 14px; border-bottom:1px solid var(--line); font-weight:650; display:flex; align-items:center; }
.modal-b { padding:12px 14px; min-width:0; }
.modal-f { padding:10px 14px; border-top:1px solid var(--line); display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; background:var(--pane); }
.modal.modal-lg { max-width:640px; }
.modal.modal-detail { max-width:640px; max-height:70vh; display:flex; flex-direction:column; }
.modal.modal-detail .modal-b { overflow:auto; flex:1; min-height:0; padding-top:8px; }
.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; min-width:0; }
.detail-grid .span-2 { grid-column:1 / -1; }
.drow { display:grid; grid-template-columns:76px minmax(0,1fr) auto; gap:6px; align-items:center; padding:6px 8px;
  background:var(--pane); border:1px solid var(--line-soft); border-radius:var(--r); min-width:0; }
.dlabel { font-size:12px; color:var(--fg-3); }
.dval { font-family:var(--font-mono); font-size:11.5px; color:var(--fg); min-width:0; overflow:hidden;
  white-space:nowrap; text-overflow:ellipsis; }
.detail-section { font-size:11px; font-weight:650; color:var(--fg-4); margin:12px 0 5px; }
.detail-section:first-child { margin-top:0; }
.detail-tok { display:flex; flex-wrap:wrap; gap:8px; margin-top:4px; }
.detail-tok .pill { font-size:11.5px; padding:5px 10px; border-radius:6px; border:1px solid var(--line); background:var(--pane); }
.detail-tok .pill.on { border-color:var(--success-border); color:var(--success); background:var(--success-bg); }
.detail-tok .pill.off { border-color:var(--danger-border); color:var(--danger); background:var(--danger-bg); }
.detail-tok .pill.na { color:var(--fg-4); }
.import-alt { display:flex; gap:8px; align-items:center; margin-top:12px; padding-top:12px;
  border-top:1px solid var(--line-soft); }
.import-alt input { flex:1; }
.import-file { margin-top:8px; font-size:12px; color:var(--fg-3); }

.toast { position:fixed; bottom:20px; left:50%; background:var(--ink); color:#f8fafc;
  border:0; padding:10px 16px; border-radius:8px; font-size:13px; opacity:0;
  transform:translateX(-50%) translateY(8px);
  transition:opacity .16s ease, transform .16s ease;
  pointer-events:none; z-index:100; box-shadow:var(--shadow-lg); }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

.sb-scrim { display:none; }

@media (max-width:1100px) {
  .reg-work { grid-template-columns:1fr; grid-template-rows:none; }
  .ver-bar { grid-template-columns:1fr; }
  .reg-more { grid-template-columns:1fr 1fr; }
  .captcha-grid { grid-template-columns:1fr; }
  .progress-section { min-height:180px; }
  .page-bind { max-height:none; min-height:160px; }
}
@media (max-width:720px) {
  .app { grid-template-columns:1fr; }
  .menu-toggle { display:inline-flex; }
  .sb { position:fixed; inset:0 auto 0 0; width:min(80vw, 240px); z-index:90;
    transform:translateX(-105%); transition:transform .22s var(--ease-out); }
  .sb.open { transform:none; }
  .sb-scrim { display:none; position:fixed; inset:0; background:rgba(15,23,42,.4); z-index:85; }
  .sb-scrim.show { display:block; }
  .reg-more { grid-template-columns:1fr; }
  .reg-hint { margin-left:0; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
}

body.login { background:var(--paper); }
body.login .login-app { max-width:380px; margin:48px auto 0; padding:0 16px; }
body.login .login-brand { display:flex; align-items:center; gap:10px; margin-bottom:18px; }
body.login .login-brand img { width:32px; height:32px; border-radius:6px; display:block; }
body.login .login-brand h1 { margin:0; font-size:18px; font-weight:650; }
body.login .login-card { background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:16px; }
body.login .login-card label { display:block; font-size:12.5px; font-weight:600; color:var(--fg-2); margin-bottom:6px; }
body.login .login-card input { width:100%; height:36px; padding:0 10px; }
body.login .login-card .btn { width:100%; height:36px; margin-top:12px; }
body.login .err { display:none; margin-top:10px; padding:8px 10px; font-size:12.5px; line-height:1.45;
  color:var(--danger); background:var(--danger-bg); border:1px solid var(--danger-border); border-radius:var(--r-sm); }
body.login .err.show { display:block; }
