/* 基础样式 */
:root{
  --bg:#0f172a; /* slate-900 */
  --panel:#111827; /* gray-900 */
  --muted:#94a3b8; /* slate-400 */
  --text:#e5e7eb; /* gray-200 */
  --pri:#22c55e; /* green-500 */
  --pri-600:#16a34a;
  --warn:#f59e0b; /* amber-500 */
  --card:#0b1220; /* dark card */
  --border:#1f2937; /* gray-800 */
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;
  background:linear-gradient(120deg,#0b1020,#0f172a 40%,#0b1020);
  color:var(--text);
}
.app{display:flex;min-height:100vh}
.sidebar{
  width:240px;background:rgba(17,24,39,.85);backdrop-filter:saturate(150%) blur(8px);
  border-right:1px solid var(--border);position:sticky;top:0;height:100vh; padding:16px 12px;
}
.brand{font-weight:700;font-size:18px;margin:8px 8px 16px;color:#fff}
.nav-item{
  width:100%;text-align:left;padding:10px 12px;margin:6px;border:1px solid transparent;border-radius:10px;
  color:var(--text);background:transparent;cursor:pointer;transition:.2s;
}
.nav-item:hover{background:#0b1220;border-color:#1e293b}
.nav-item.active{background:linear-gradient(135deg,#111827,#0b1220);border-color:#374151}
.main{flex:1;display:flex;flex-direction:column}
.topbar{
  display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);
  position:sticky;top:0;background:rgba(15,23,42,.85);backdrop-filter:saturate(150%) blur(8px);z-index:2
}
.search-wrap input{
  width:360px;max-width:50vw;padding:10px 12px;border-radius:10px;border:1px solid #1f2937;background:#0b1220;color:#e5e7eb;
}
.btn{background:#0b1220;color:var(--text);border:1px solid #374151;border-radius:10px;padding:8px 12px;cursor:pointer;transition:.2s}
.btn:hover{border-color:#4b5563}
.btn.pri{background:linear-gradient(135deg,#22c55e,#16a34a);color:#06220f;border-color:transparent}
.btn.pri:hover{filter:brightness(1.05)}
.btn.warn{background:linear-gradient(135deg,#f59e0b,#d97706);color:#1f1300;border-color:transparent}
.btn.small{padding:4px 8px;border-radius:8px;font-size:12px}
.page{display:none;padding:16px}
.page.show{display:block}
.grid{display:grid;gap:12px}
.grid-2{grid-template-columns:1fr 1fr}
.grid-3{grid-template-columns:1fr 1fr 1fr}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media (max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:1fr 1fr}}
@media (max-width:760px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.sidebar{width:220px}}
.card{
  background:linear-gradient(180deg,#0b1220,#0a1220 40%,#091425);border:1px solid #1e293b;border-radius:14px;padding:12px;box-shadow:0 10px 30px rgba(0,0,0,.25)
}
.card-hd{font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}
.table-wrap{overflow:auto;border-radius:10px;border:1px solid #132033}
.table-wrap table{width:100%;border-collapse:collapse;background:#0a1424}
th,td{border-bottom:1px solid #14233a;padding:8px 10px;text-align:left;white-space:nowrap}
th{color:#93c5fd;background:#0a1a33;position:sticky;top:0}
.form-row{display:flex;flex-direction:column;gap:6px}
.form-row input,.form-row select{padding:10px;border-radius:10px;border:1px solid #1f2937;background:#0b1220;color:#e5e7eb}
.form-row.chk{flex-direction:row;align-items:center;gap:8px}
.actions{display:flex;gap:8px;align-items:center}
.actions .sp{flex:1}
.list{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow:auto}
.list .item{display:flex;justify-content:space-between;background:#0a1424;border:1px solid #132033;border-radius:10px;padding:8px}
.footer{margin-top:auto;padding:10px 16px;border-top:1px solid var(--border);color:var(--muted);background:rgba(15,23,42,.85)}
#toast{position:fixed;right:16px;bottom:16px;background:#111827;color:#e5e7eb;border:1px solid #374151;padding:10px 12px;border-radius:12px;opacity:0;transform:translateY(10px);transition:.25s;pointer-events:none;z-index:10}
#toast.show{opacity:1;transform:translateY(0)}

/* 新增组件样式 */
.metric-card{
  display:flex;flex-direction:column;justify-content:center;align-items:flex-start;
  background:linear-gradient(180deg,#0c1628,#0b1526 60%,#0a1424);
  border:1px solid #1e2a3f;border-radius:14px;padding:12px 14px;min-height:86px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03)
}
.metric-value{font-size:24px;font-weight:700;color:#fff}
.metric-label{font-size:12px;color:#9ca3af}
.rank-tabs{display:flex;gap:6px;margin-bottom:8px}
.rank-tab{
  background:#0b1220;color:#e5e7eb;border:1px solid #1f2937;border-radius:20px;
  padding:6px 10px;cursor:pointer;transition:.2s;font-size:12px
}
.rank-tab:hover{background:#12223a;border-color:#374151}
.rank-tab.active{background:#12223a;border-color:#2a3a5a;color:#fff}
.badge{padding:2px 8px;border-radius:999px;border:1px solid #1f2937;background:#0b1220;color:#a3e635}
.editable{background:#0b1220;border:1px dashed #334155;border-radius:8px;padding:6px}
.checklist{display:flex;flex-direction:column;gap:8px}
.checklist label{display:flex;align-items:center;gap:6px;cursor:pointer}
.bul{list-style:disc;margin-left:16px;line-height:1.6}
.bul li{margin:4px 0;color:#d1d5db}
.status-normal{color:#10b981}
.status-warn{color:#f59e0b}
.status-error{color:#ef4444}