:root{
  --bg:#f4f7f8;
  --card:#ffffff;
  --ink:#17252a;
  --muted:#66777e;
  --line:#dbe4e7;
  --brand:#0f4c5c;
  --brand2:#2f7d69;
  --soft:#eaf4f2;
  --warn:#8a5b00;
  --shadow:0 12px 34px rgba(28,55,62,.08);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
button,input,select{font:inherit}
button{cursor:pointer}
.page-shell{max-width:1480px;margin:0 auto;padding:26px}
.hero{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;padding:30px 32px;border-radius:24px;background:linear-gradient(135deg,#0b3440,#0f4c5c 56%,#2f7d69);color:white;box-shadow:var(--shadow)}
.eyebrow{font-size:12px;letter-spacing:.18em;opacity:.78;font-weight:700}.hero h1{margin:8px 0 9px;font-size:34px}.hero p{margin:0;max-width:860px;line-height:1.75;color:rgba(255,255,255,.9)}
.build-info{font-size:12px;line-height:1.65;text-align:right;color:rgba(255,255,255,.82);min-width:220px}
.metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin:18px 0}
.metric{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}
.metric-label{font-size:13px;color:var(--muted)}.metric-value{font-size:30px;font-weight:800;margin:7px 0 4px}.metric-sub{font-size:12px;color:var(--muted);line-height:1.55}
.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:20px;box-shadow:var(--shadow);margin-top:18px}
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:15px}.section-head h2{margin:0;font-size:23px}.section-head p{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.6}
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 14px}.tab-btn,.ghost-btn,.primary-btn,.icon-btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:8px 13px}.tab-btn.active{background:var(--brand);border-color:var(--brand);color:#fff}.primary-btn{background:var(--brand2);border-color:var(--brand2);color:#fff}.ghost-btn:hover,.tab-btn:hover{border-color:#9fb2b8}.full{width:100%}
.map-grid{display:grid;grid-template-columns:1.42fr .92fr;gap:16px}.chart-panel{height:540px;min-width:0;border-radius:16px;background:#fbfcfc;border:1px solid #edf2f3}.chart-placeholder{display:grid;place-items:center;height:100%;color:var(--muted);font-size:13px}.map-note{margin-top:12px;color:var(--muted);font-size:12px;line-height:1.65}
.filters{display:grid;grid-template-columns:1.65fr repeat(4,1fr) .72fr;gap:11px;align-items:end}.field label{display:block;color:var(--muted);font-size:12px;margin:0 0 6px}.field input,.field select{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;min-height:42px;color:var(--ink)}.field input:focus,.field select:focus{outline:2px solid #cce2dc;border-color:#8ebeb1}.active-filter{margin:14px 0 0;background:var(--soft);color:#245f50;border-radius:999px;padding:8px 12px;font-size:12px;display:inline-flex}
.table-wrap{overflow:auto;margin-top:15px;border:1px solid var(--line);border-radius:16px}table{width:100%;border-collapse:collapse;min-width:1180px}th,td{padding:11px 12px;border-bottom:1px solid #edf1f2;vertical-align:top;text-align:left;font-size:13px;line-height:1.55}th{position:sticky;top:0;background:#f7fafb;z-index:1;font-size:12px;color:#52666e}tbody tr:hover td{background:#fbfdfd}.case-name{font-weight:700}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;background:#edf5f3;color:#286a59;font-size:11px;white-space:nowrap}.detail-btn{border:0;background:transparent;color:#0b6c82;padding:0;text-decoration:underline;text-underline-offset:3px}
.pager{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:13px;color:var(--muted);font-size:12px}.pager-actions{display:flex;gap:8px}
footer{padding:18px 4px 4px;color:var(--muted);font-size:12px;line-height:1.7}code{background:#eaf0f2;padding:2px 5px;border-radius:6px}
.detail-dialog{width:min(860px,92vw);border:0;border-radius:20px;padding:0;box-shadow:0 26px 80px rgba(10,28,34,.25);color:var(--ink)}.detail-dialog::backdrop{background:rgba(14,31,37,.48)}.dialog-head{display:flex;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid var(--line)}.dialog-kicker{font-size:11px;color:var(--brand2);font-weight:700;letter-spacing:.08em}.dialog-head h3{margin:5px 0 0;font-size:22px}.icon-btn{font-size:23px;line-height:1;width:38px;height:38px;padding:0}.dialog-meta{padding:14px 24px;color:var(--muted);font-size:12px;background:#f8fbfb}.detail-grid{padding:19px 24px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.detail-item{border-bottom:1px dashed #dce5e7;padding-bottom:9px}.detail-label{font-size:11px;color:var(--muted);margin-bottom:3px}.detail-value{font-size:13px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.dialog-summary{margin:0 24px 18px;padding:14px 15px;border-radius:14px;background:#f4f8f7;font-size:13px;line-height:1.8;white-space:pre-wrap}.dialog-link{padding:0 24px 22px}.dialog-link a{color:#0b6c82}
@media (max-width:1180px){.metrics{grid-template-columns:repeat(3,1fr)}.filters{grid-template-columns:repeat(3,1fr)}.field-wide{grid-column:span 2}.map-grid{grid-template-columns:1fr}.chart-panel{height:470px}}
@media (max-width:720px){.page-shell{padding:13px}.hero{padding:23px 20px;display:block}.hero h1{font-size:27px}.build-info{text-align:left;margin-top:15px}.metrics{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:1fr}.field-wide{grid-column:auto}.section-head{display:block}.section-head button{margin-top:12px}.detail-grid{grid-template-columns:1fr}.chart-panel{height:410px}}
.fatal-error{margin:0 0 16px;padding:14px 16px;border:1px solid #f2c7c7;background:#fff1f1;color:#8c2424;border-radius:14px;line-height:1.7}
.fallback-ranking{height:100%;overflow:auto;padding:14px}.fallback-row{display:flex;width:100%;justify-content:space-between;border:0;border-bottom:1px solid var(--line);background:transparent;padding:11px 8px;text-align:left;color:var(--ink)}.fallback-row:hover{background:#f2f7f6}
