/* ==========================================================================
   cmx 行情监控面板 · 科技感 tokens v1.0(WP-4 艾薇)  消费者=范琳
   源: brand-tokens.json v0.3 + ui-unification-spec.md + website-hifi-v2
   命名: 与 P0 style.css 兼容(保留原名并增补),整段替换 :root 即可
   铁律: 深底正文只用 text-*;涨跌恒配 ▲/▼;光晕分级克制
   ========================================================================== */
:root{
  color-scheme:dark;

  /* ---- 品牌强调色(brand-tokens,浅底交互用) ---- */
  --primary:#1B4FA1;        --primary-hover:#2A66C4;   --primary-active:#143D80;
  --primary-light:#8FB0E6;  --primary-tint:#E8F0FB;
  --secondary-1:#0F766E;    --info:#0E6EBA;

  /* ---- 深色表面(背景层次) ---- */
  --bg-base:#0A0E1A;        /* 页面底          */
  --bg-grad-top:#0B1120;    /* 顶部渐变起点    */
  --bg-elev:#0F1626;        /* 卡片/面板       */
  --bg-elev-2:#141D31;      /* hover / 更高层  */
  --bg-elev-3:#1A2438;      /* 强 hover/活动   */
  --bg-inset:#0B1020;       /* 输入/轨道/表头  */
  --bg-scrim:rgba(4,7,14,.6);

  /* ---- 描边(微光边框) ---- */
  --border:rgba(143,176,230,.16);
  --border-strong:rgba(143,176,230,.38);
  --border-ghost:rgba(143,176,230,.08);

  /* ---- 文本(深底正文只用这一组) ---- */
  --text-hi:#F2F6FF;    /* 标题/关键数字  ≥15:1 */
  --text:#C7D2E8;       /* 正文          ≈9:1   */
  --text-mid:#8FB0E6;   /* 次强调/标签   ≈7.4:1 */
  --text-low:#96A6C0;   /* 弱化正文      ≈6.8:1 */
  --text-faint:#6E7D96; /* 仅占位/禁用/免责角  */

  /* ---- 涨跌(diverging+中性平,恒配 ▲/▼) ---- */
  --up:#34D399;  --trend-up:#34D399;    /* 深底可读上涨 */
  --down:#F87171;--trend-down:#F87171;  /* 深底可读下跌 */
  --flat:#96A6C0;--trend-flat:#96A6C0;  /* 平 */
  --warn-amber:#FBBF24;

  /* ---- 状态(芯片/LED,配文字不纯色) ---- */
  --ok:#34D399;  --ok-dim:rgba(52,211,153,.16);  --ok-line:rgba(52,211,153,.45);
  --warn:#FBBF24;--warn-dim:rgba(251,191,36,.14);--warn-line:rgba(251,191,36,.45);
  --danger:#F87171;--danger-dim:rgba(248,113,113,.16);--danger-line:rgba(248,113,113,.45);
  --info-ink:#BBD3F5; --info-dim:rgba(27,79,161,.30);
  --est-ink:#F4C09A; --est-dim:rgba(194,65,12,.22);   /* 估算/估 */

  /* ---- 光效(克制三档 + 趋势档) ---- */
  --glow-primary:0 0 26px rgba(27,79,161,.5), 0 0 70px rgba(27,79,161,.22); /* 主光 */
  --glow-soft:0 0 18px rgba(27,79,161,.30);                                  /* 柔光:数字/活动tab */
  --glow-cyan:0 0 26px rgba(14,110,186,.42);                                 /* 青辅助 */
  --glow-up:0 0 12px rgba(52,211,153,.35);                                   /* 涨微光 */
  --glow-down:0 0 12px rgba(248,113,113,.30);                                /* 跌微光 */
  --glow-led:0 0 8px currentColor;                                            /* LED 用 currentColor */
  --shadow-card:0 14px 34px rgba(2,6,16,.5);
  --shadow-pop:0 22px 50px rgba(2,6,16,.65);

  /* ---- 圆角 ---- */
  --r-xs:4px; --r-sm:6px; --r-md:10px; --r-lg:14px; --r-xl:18px; --r-full:9999px;

  /* ---- 间距 ---- */
  --sp-2xs:2px; --sp-xs:4px; --sp-sm:8px; --sp-md:16px; --sp-lg:24px; --sp-xl:32px;
  --sp-section:28px;
  --container-w:1240px;            /* 监控台密度(比官网 1180 略宽) */

  /* ---- 字体 ---- */
  --font-heading:'Inter','Source Han Sans SC','思源黑体','Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,sans-serif;
  --font-body:'Inter','Source Han Sans SC','思源黑体','Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,sans-serif;
  --font-mono:'Sarasa Mono SC','JetBrains Mono','SFMono-Regular','Menlo','Consolas',monospace;

  /* ---- 面板字号(监控台型) ---- */
  --fs-price:clamp(32px,3.4vw,46px);  /* 主价格 */
  --fs-coin:20px;  --fs-h1:22px; --fs-h2:16px;
  --fs-body:15px;  --fs-num:14px; --fs-cap:11px; --fs-micro:10px;
  --fs-mono-num:12px;

  /* ---- 动效 ---- */
  --dur-fast:.12s; --dur-med:.2s; --dur-slow:.4s;
  --ease-out:cubic-bezier(.2,.8,.2,1);

  /* ---- 层级 ---- */
  --z-topbar:10; --z-pop:30; --z-scrim:40;
}

* { box-sizing: border-box; }
html,body { height:100%; }
body {
  margin:0;
  font-family:var(--font-body);
  color:var(--text);
  font-size:var(--fs-body);
  line-height:1.6;
  background:
    radial-gradient(900px 420px at 85% -10%, rgba(27,79,161,.28), transparent 60%),
    radial-gradient(700px 380px at -10% 0%, rgba(14,110,186,.18), transparent 55%),
    linear-gradient(180deg, var(--bg-grad-top) 0%, var(--bg-base) 100%) fixed;
  min-height:100vh;
}

/* ==================== 顶栏(玻璃) ==================== */
.topbar { background:rgba(10,14,26,.72); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:var(--z-topbar); }
.topbar-inner { max-width:var(--container-w); margin:0 auto; padding:10px 20px; display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.brand { display:flex; align-items:center; gap:10px; font-weight:600; min-width:0; }
.brand-mark {
  display:inline-block; padding:2px 9px; border-radius:var(--r-md);
  background:linear-gradient(135deg,var(--primary),var(--info));
  color:#fff; font-family:var(--font-mono); font-size:13px; font-weight:700;
  box-shadow:var(--glow-soft); letter-spacing:.5px;
}
.brand-name { font-size:15px; letter-spacing:.2px; color:var(--text-hi); white-space:nowrap; }
.badge { display:inline-block; font-size:11px; line-height:1.6; padding:1px 9px; border-radius:var(--r-full); white-space:nowrap; color:var(--text-low); border:1px solid var(--border); }
.badge.demo { color:var(--text-mid); border:1px solid var(--border-strong); font-family:var(--font-mono); letter-spacing:.4px; }
.badge-official { background:var(--info-dim); color:var(--info-ink); border-color:rgba(27,79,161,.6); }
.badge-est { background:var(--est-dim); color:var(--est-ink); border-color:rgba(194,65,12,.5); }
.tabs { display:flex; gap:4px; margin-left:auto; flex-wrap:wrap; }
.tab { background:transparent; color:var(--text-low); border:1px solid transparent; font-size:14px; padding:6px 13px; border-radius:var(--r-md); cursor:pointer; font-family:inherit; transition:color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), border-color var(--dur-fast), box-shadow var(--dur-fast); }
.tab:hover { color:var(--text-hi); background:rgba(255,255,255,.05); }
.tab:focus-visible { outline:2px solid var(--primary-light); outline-offset:1px; }
.tab.active { color:#fff; background:rgba(27,79,161,.35); border-color:var(--border-strong); box-shadow:var(--glow-soft); }
.asof { font-family:var(--font-mono); font-size:var(--fs-mono-num); color:var(--text-mid); white-space:nowrap; }

/* ==================== 布局 ==================== */
.wrap { max-width:var(--container-w); margin:0 auto; padding:22px 20px 44px; }
.panel { display:none; }
.panel.active { display:block; }
.section-head { margin-bottom:var(--sp-md); }
.section-head h1 { font-size:var(--fs-h1); margin:0 0 2px; font-weight:700; color:var(--text-hi); letter-spacing:.2px; }
.section-head h1 .h1-sub { color:var(--text-low); font-weight:600; }
.section-head.sub { margin-top:26px; }
.section-head.sub h1 { font-size:var(--fs-h2); }
.lead { color:var(--text-low); font-size:13px; margin:2px 0 0; max-width:980px; }
.lead code { font-family:var(--font-mono); font-size:12px; color:var(--text-mid); background:var(--bg-inset); border:1px solid var(--border-ghost); border-radius:var(--r-xs); padding:0 4px; }
.empty { color:var(--text-low); padding:16px; text-align:center; font-size:13px; }

/* ==================== BTC/ETH 多维资产卡 ==================== */
.asset-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(420px,1fr)); gap:22px; margin-bottom:var(--sp-lg); align-items:start; }
.asset-card {
  position:relative; overflow:hidden;
  background:linear-gradient(180deg,var(--bg-elev),#0D1424);
  border:1px solid var(--border); border-radius:var(--r-lg);
  box-shadow:var(--shadow-card); padding:18px 20px 16px;
  transition:transform var(--dur-med) var(--ease-out), border-color var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out);
}
.asset-card::before { content:""; position:absolute; inset:0 0 auto 0; height:2px;
  background:linear-gradient(90deg,transparent,rgba(143,176,230,.5),transparent); }
.asset-card.asset-eth::before { background:linear-gradient(90deg,transparent,rgba(14,110,186,.7),transparent); }
.asset-card:hover { transform:translateY(-3px); border-color:var(--border-strong); box-shadow:var(--glow-soft),var(--shadow-pop); }
@media (prefers-reduced-motion: reduce){ .asset-card, .asset-card:hover { transition:none; transform:none; } }

.ac-head { display:flex; align-items:center; gap:10px; margin-bottom:6px; flex-wrap:wrap; }
.ac-id { display:flex; align-items:baseline; gap:8px; min-width:0; }
.coin-lg { font-family:var(--font-mono); font-size:var(--fs-coin); font-weight:800; color:var(--text-hi); text-shadow:var(--glow-soft); letter-spacing:.5px; }
.coin-sub { color:var(--text-low); font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ac-tags { display:flex; gap:6px; margin-left:auto; align-items:center; flex-wrap:wrap; }

/* 状态 LED / 胶囊 */
.led { display:inline-block; width:8px; height:8px; border-radius:50%; background:currentColor; box-shadow:var(--glow-led); }
.led.ok{ color:var(--ok); } .led.warn{ color:var(--warn); } .led.danger{ color:var(--danger); } .led.off{ color:#2A3346; box-shadow:none; }
.led.pulse { animation:ledPulse 1.2s ease-in-out infinite; }
@keyframes ledPulse { 0%,100%{opacity:1;} 50%{opacity:.55;} }
@media (prefers-reduced-motion: reduce){ .led.pulse{ animation:none; } }
.h-state { display:inline-flex; align-items:center; gap:6px; font-size:var(--fs-cap); color:var(--text-low); white-space:nowrap; }
.h-state::before { content:""; width:7px; height:7px; border-radius:50%; background:currentColor; }
.h-state.ok { color:var(--ok); } .h-state.ok::before { box-shadow:var(--glow-led); }
.h-state.warn { color:var(--warn); } .h-state.warn::before { box-shadow:var(--glow-led); }
.h-state.err { color:var(--danger); } .h-state.err::before { box-shadow:var(--glow-led); }
.h-state.off { color:#2A3346; } .h-state.off::before { background:#2A3346; box-shadow:none; }

/* 价格区:等宽发光数字是主角 */
.ac-price { margin:2px 0 2px; }
.price-row { display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 14px; }
.price-big { font-family:var(--font-mono); font-size:var(--fs-price); font-weight:800; color:var(--text-hi); text-shadow:var(--glow-soft); line-height:1.05; font-variant-numeric:tabular-nums; }
.price-side { display:inline-flex; align-items:baseline; gap:5px; }
.pct { font-family:var(--font-mono); font-weight:700; font-variant-numeric:tabular-nums; font-size:15px; }
.pct.up{ color:var(--up); text-shadow:var(--glow-up); } .pct.down{ color:var(--down); text-shadow:var(--glow-down); } .pct.flat{ color:var(--flat); }
.pct-cap { font-size:var(--fs-cap); color:var(--text-low); font-family:var(--font-body); font-weight:500; }
.dim-src { color:var(--text-faint); font-size:var(--fs-micro); font-family:var(--font-mono); }
.ref-line { margin-top:6px; font-family:var(--font-mono); font-size:var(--fs-mono-num); color:var(--text-low); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ok-tag { color:var(--ok); } .warn-tag { color:var(--warn-amber); }
.muted { color:var(--text-low); }
.need { color:var(--text-faint); font-style:normal; }

/* sparkline(装饰;数字是读数) */
.spark-wrap { margin:6px 0 2px; }
svg.sparkline { display:block; max-width:100%; height:auto; }
svg.sparkline .area { fill-opacity:.14; }
svg.sparkline .line { fill:none; stroke-width:2; stroke-linecap:round; }

/* 4 格维度:流动性 / 跨所量能 / 链上 / 质押 */
.dim-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px 16px; margin:12px 0 4px; }
.dim { border-top:1px solid var(--border); padding-top:9px; min-width:0; }
.dim-label { font-size:var(--fs-cap); color:var(--text-low); text-transform:uppercase; letter-spacing:.6px; margin-bottom:3px; font-weight:600; }
.dim-value { font-family:var(--font-mono); color:var(--text-hi); font-size:var(--fs-num); font-variant-numeric:tabular-nums; line-height:1.45; }
.dim-value .num-glow { color:var(--text-hi); text-shadow:var(--glow-soft); font-weight:700; }
.dim-sub { display:block; color:var(--text-low); font-family:var(--font-mono); font-size:11px; margin-top:2px; line-height:1.4; }
.dim-src { display:block; margin-top:2px; }

/* 区块分隔(卡内):顶线 + 上距 */
.band-box, .macro-box, .factor-box { margin-top:12px; border-top:1px solid var(--border); padding-top:10px; }
.band-row { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; font-family:var(--font-mono); font-size:var(--fs-mono-num); padding:2px 0; }
.band-lbl { color:var(--text-low); white-space:nowrap; font-family:var(--font-body); font-weight:600; font-size:var(--fs-cap); text-transform:uppercase; letter-spacing:.5px; }
.band-val { color:var(--text-hi); }
.band-n { color:var(--text-faint); margin-left:auto; white-space:nowrap; }

/* ---- 区间条(interval band,新增组件) ---- */
.band-scale-wrap { margin:4px 0 10px; }
.band-scale { position:relative; height:10px; margin:5px 0 3px; border-radius:var(--r-full);
  background:linear-gradient(180deg,var(--bg-inset),#0D1424); border:1px solid var(--border); overflow:visible; }
.band-scale .zone { position:absolute; top:0; bottom:0; border-radius:var(--r-full);
  background:rgba(143,176,230,.12); border:1px dashed rgba(143,176,230,.3); }
.band-scale .tick { position:absolute; top:-3px; bottom:-3px; width:2px; border-radius:2px;
  background:var(--text-hi); box-shadow:0 0 6px rgba(242,246,255,.8); transform:translateX(-50%); }
.band-scale .tick.out { background:var(--warn-amber); box-shadow:0 0 6px rgba(251,191,36,.7); }
.band-scale .scale-cap { display:flex; justify-content:space-between; font-family:var(--font-mono); font-size:var(--fs-micro); color:var(--text-faint); margin-bottom:1px; }
.band-note { font-size:var(--fs-micro); color:var(--text-faint); font-style:normal; margin-top:2px; }

/* 宏观迷你 */
.macro-mini { display:flex; gap:8px; align-items:center; flex-wrap:wrap; font-size:12px; color:var(--text); padding:2px 0; }
.mm-date { font-family:var(--font-mono); color:var(--text-faint); white-space:nowrap; }
.mm-badge { font-family:var(--font-mono); font-size:10px; padding:0 6px; border-radius:var(--r-full); border:1px solid var(--border); color:var(--text-low); white-space:nowrap; }

/* ==================== 影响因子(条长=权重;待接入=虚线) ==================== */
.factor-head { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin-bottom:6px; }
.factor-head .dim-label { margin:0; }
.factor-count { font-family:var(--font-mono); font-size:var(--fs-cap); color:var(--text-mid); margin-left:auto; white-space:nowrap; }
.factor-rows { display:grid; gap:3px; }
.factor-row { display:grid; grid-template-columns:minmax(0,1fr) auto 52px 74px; gap:10px; align-items:center; font-size:12px; padding:3px 0; }
.factor-lbl { color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.factor-track { height:6px; background:var(--bg-inset); border-radius:var(--r-full); overflow:hidden; min-width:60px; }
.factor-fill { display:block; height:100%;
  background:linear-gradient(90deg,var(--primary),var(--primary-light)); box-shadow:0 0 8px rgba(143,176,230,.5); }
.factor-fill.partial { background:linear-gradient(90deg,rgba(27,79,161,.6),rgba(143,176,230,.45)); box-shadow:none; }
.factor-fill.pending { background:repeating-linear-gradient(90deg,transparent 0 5px,rgba(143,176,230,.22) 5px 9px); box-shadow:none; }
.factor-pct { font-family:var(--font-mono); color:var(--text-hi); text-align:right; font-variant-numeric:tabular-nums; }
.factor-status { font-size:10px; font-family:var(--font-mono); text-align:right; white-space:nowrap; }
.factor-status.ok { color:var(--ok); }
.factor-status.part { color:var(--warn-amber); }
.factor-status.no { color:var(--text-faint); }
.factor-note { font-size:var(--fs-micro); color:var(--text-faint); margin-top:5px; line-height:1.5; }
.factor-pending { display:flex; gap:6px; flex-wrap:wrap; margin-top:6px; }
.chip-pending { font-size:var(--fs-micro); color:var(--text-mid); border:1px dashed var(--border-strong); border-radius:var(--r-full); padding:1px 8px; font-family:var(--font-mono); }

/* ==================== 表格(Top20 背景 / 通用) ==================== */
.table-card { background:var(--bg-elev); border:1px solid var(--border); border-radius:var(--r-lg); overflow:hidden; }
.grid-table { width:100%; border-collapse:collapse; font-size:var(--fs-num); }
.grid-table th, .grid-table td { text-align:left; padding:10px 14px; border-bottom:1px solid var(--border); }
.grid-table thead th { background:var(--bg-inset); color:var(--text-low); font-weight:600; font-size:var(--fs-cap); text-transform:uppercase; letter-spacing:.6px; font-family:var(--font-mono); }
.grid-table tbody tr:last-child td { border-bottom:0; }
.grid-table tbody tr:hover { background:rgba(27,79,161,.14); }
.num { text-align:right; font-variant-numeric:tabular-nums; }
.coin { font-weight:600; color:var(--text-hi); }
.coin-sub { color:var(--text-low); font-size:12px; }
.pct-up { color:var(--up); font-weight:600; } .pct-down { color:var(--down); font-weight:600; } .pct-flat { color:var(--flat); }
.spark { width:120px; }

.context-box { margin-top:4px; }
.context-box summary {
  cursor:pointer; color:var(--text-mid); font-size:13px; padding:8px 4px;
  font-family:var(--font-mono); list-style:none; display:flex; align-items:center; gap:8px;
}
.context-box summary::-webkit-details-marker { display:none; }
.context-box summary:hover { color:var(--text-hi); }
.context-box .ctx-mark { display:inline-block; font-size:10px; color:var(--text-mid); border:1px solid var(--border); border-radius:var(--r-xs); padding:0 5px; }
.context-table td, .context-table th { font-size:13px; }

/* ==================== 资讯 / 宏观列表 ==================== */
.news-list { display:grid; gap:12px; }
.news-item { background:var(--bg-elev); border:1px solid var(--border); border-radius:var(--r-lg); padding:14px 16px; }
.news-title { font-weight:600; font-size:15px; margin:0 0 4px; color:var(--text-hi); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.news-title a { color:var(--text-hi); text-decoration:none; }
.news-title a:hover { color:var(--text-mid); text-decoration:underline; }
.news-summary { color:var(--text); font-size:13px; margin:0 0 6px; }
.news-meta { font-size:12px; color:var(--text-low); display:flex; gap:14px; flex-wrap:wrap; align-items:center; }
.src { color:var(--text-mid); font-weight:500; }
.macro-item { border-left:2px solid rgba(27,79,161,.55); }
.macro-item.est { border-left-color:rgba(194,65,12,.5); }
.news-meta-line { font-size:12px; color:var(--text-low); display:flex; gap:14px; flex-wrap:wrap; margin:2px 0 6px; align-items:center; }

/* ==================== 健康 / 数据源 / 社媒 ==================== */
.health-list { display:grid; gap:10px; }
.health-item { background:var(--bg-elev); border:1px solid var(--border); border-radius:var(--r-lg); padding:11px 16px; display:flex; gap:14px; align-items:center; flex-wrap:wrap; font-size:13px; }
.h-name { font-family:var(--font-mono); font-weight:600; color:var(--text-hi); }
.h-detail { color:var(--text-low); font-size:12px; font-family:var(--font-mono); }
.section-sub { font-weight:600; font-size:14px; margin:12px 0 8px; display:flex; align-items:center; gap:8px; color:var(--text-hi); }
.va-note { font-size:12px; color:var(--text-mid); margin:10px 0; padding:8px 12px; background:rgba(194,65,12,.12); border:1px solid rgba(194,65,12,.4); border-radius:var(--r-md); line-height:1.6; }
.tag { display:inline-block; font-size:11px; padding:1px 8px; border-radius:var(--r-full); background:var(--bg-inset); color:var(--text-low); border:1px solid var(--border); white-space:nowrap; }
.tag.live { background:rgba(27,79,161,.28); color:var(--info-ink); border-color:rgba(143,176,230,.4); }

/* ==================== 页脚 · 免责(L1 极小字 + L2 ⓘ,不显眼) ==================== */
.footer { border-top:1px solid var(--border); background:rgba(10,14,26,.6); margin-top:8px; }
.footer-bar { max-width:var(--container-w); margin:0 auto; padding:9px 20px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.foot-brand { font-family:var(--font-mono); font-size:11px; color:var(--text-mid); }
.foot-hint { font-size:var(--fs-micro); color:var(--text-faint); line-height:1.5; }
.disc-toggle { margin-left:auto; background:transparent; border:1px solid var(--border); color:var(--text-faint); font-size:var(--fs-cap); padding:3px 10px; border-radius:var(--r-full); cursor:pointer; font-family:inherit; transition:color var(--dur-fast), border-color var(--dur-fast); }
.disc-toggle:hover { color:var(--text-mid); border-color:var(--border-strong); }
.disc-toggle.on { color:var(--text-hi); border-color:var(--border-strong); }
.disc-toggle:focus-visible { outline:2px solid var(--primary-light); outline-offset:1px; }
.disc-content { border-top:1px solid var(--border); background:var(--bg-elev-3); }
.disc-content .disc-inner { max-width:var(--container-w); margin:0 auto; padding:10px 20px 16px; }
.disc-content p { font-size:12px; color:var(--text-low); margin:6px 0; line-height:1.65; }
.disc-content .disclaimer-meta { font-family:var(--font-mono); font-size:11px; color:var(--text-faint); }

/* ==================== 响应式(按 tokens 860/640) ==================== */
@media (max-width: 900px) {
  .asset-grid { grid-template-columns:1fr; }
}
@media (max-width: 640px) {
  .tabs { width:100%; margin:6px 0 0; }
  .topbar-inner { gap:10px; }
  .price-big { font-size:32px; }
  .factor-row { grid-template-columns:minmax(0,1fr) auto 40px; }
  .factor-row .factor-track { grid-column:1 / -1; order:3; grid-row:auto; }
  .context-table th:nth-child(5), .context-table td:nth-child(5) { display:none; } /* 24h量 hide narrow */
  .dim-grid { grid-template-columns:1fr; }
}

/* 打印/降级:深色监控台不自动切浅 */
@media print {
  body { background:#fff; color:#000; }
  .topbar { position:static; }
}
