:root { --bg:#0f172a; --card:#1e293b; --fg:#e2e8f0; --muted:#94a3b8; --accent:#38bdf8; --danger:#f87171; --ok:#4ade80; }
* { box-sizing:border-box; }
body { margin:0; font-family:system-ui,"Microsoft YaHei",sans-serif; background:var(--bg); color:var(--fg); line-height:1.6; }
header { padding:16px 24px; background:var(--card); display:flex; justify-content:space-between; align-items:center; }
header h1 { font-size:18px; margin:0; }
header a { color:var(--accent); margin-left:16px; text-decoration:none; }
.logo-link { color:var(--fg) !important; margin-left:0; }
.logo-link:hover { color:var(--accent); }

/* ── 全宽分栏布局 ── */
.app-wrap { display:flex; min-height:calc(100vh - 52px); }
.sidebar { width:200px; min-width:200px; background:#162032; padding:16px 0; display:flex; flex-direction:column; }
.sidebar a { display:block; padding:10px 24px; color:var(--muted); text-decoration:none; font-size:14px; }
.sidebar a:hover, .sidebar a.active { color:var(--fg); background:#1e293b; }
.sidebar .nav-sep { border-top:1px solid #334155; margin:8px 16px; }
.main-area { flex:1; padding:24px; min-width:0; }
.main-area.centered { max-width:960px; margin:0 auto; width:100%; }

main { max-width:960px; margin:32px auto; padding:0 20px; }
main.full { max-width:none; margin:0; padding:24px; }
.card { background:var(--card); border-radius:12px; padding:24px; margin-bottom:20px; }
h2 { margin-top:0; }
label { display:block; margin:12px 0 4px; color:var(--muted); }
input,select { width:100%; padding:10px; border-radius:8px; border:1px solid #334155; background:#0b1220; color:var(--fg); }
button { margin-top:16px; padding:10px 18px; min-width:110px; text-align:center; white-space:nowrap; border:none; border-radius:8px; background:var(--accent); color:#001018; font-weight:600; cursor:pointer; }
/* 小按钮/标签页/语言切换等不强制最小宽度（中英文切换后版面保持一致） */
.btn-sm, .btn-xs, .copy-sm, .lang-btn, .tab-btn, .method-tabs button, .code-row button, .pager button, .close-btn { min-width:0; white-space:nowrap; }
button.secondary { background:#334155; color:var(--fg); }
button.danger { background:var(--danger); color:#1a0000; }
.msg { margin-top:12px; padding:10px; border-radius:8px; display:none; }
.msg.err { background:#3b1111; color:var(--danger); display:block; }
.msg.ok { background:#10241a; color:var(--ok); display:block; }
table { width:100%; border-collapse:collapse; margin-top:12px; }
th,td { text-align:left; padding:8px; border-bottom:1px solid #334155; font-size:14px; }
code { background:#0b1220; padding:2px 6px; border-radius:4px; }
.muted { color:var(--muted); font-size:13px; }
.pager { margin-top:12px; display:flex; align-items:center; gap:12px; }
.pager button { margin-top:0; }
.pager button:disabled { opacity:0.4; cursor:not-allowed; }
.filters { display:flex; align-items:end; gap:12px; flex-wrap:wrap; margin-bottom:16px; }
.filters > div { display:flex; flex-direction:column; }
.filters input, .filters select { width:auto; min-width:140px; }
.summary-cards { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; margin-bottom:16px; }
.summary { background:#0b1220; padding:16px; border-radius:8px; }
.collapsible details summary { cursor:pointer; list-style:none; display:flex; align-items:center; justify-content:space-between; }
.collapsible details summary::-webkit-details-marker { display:none; }
.collapsible .inline-h2 { display:inline; margin:0; }
.collapsible .click-hint { font-size:12px; }
.collapsible details[open] .click-hint { display:none; }
.summary .big { font-size:24px; font-weight:700; margin-top:6px; color:var(--accent); }
.charts { display:flex; flex-direction:column; gap:16px; }
.chart-box { background:#0b1220; padding:12px 16px; border-radius:8px; overflow:visible; position:relative; }
.chart-box h3 { margin:0 0 8px; font-size:14px; color:var(--muted); }
.chart-tooltip { display:none; position:absolute; pointer-events:none; z-index:10;
  background:#334155; color:var(--fg); padding:4px 10px; border-radius:6px;
  font-size:12px; font-weight:500; white-space:nowrap; transition:opacity 0.12s; }
svg { width:100%; height:280px; overflow:visible; display:block; }
footer { text-align:center; color:var(--muted); padding:24px; font-size:13px; }
footer a { color:var(--accent); }
