/* =============================================================================
 *  base.css  ——  浏览器重置 + 基础排版 + 通用工具类
 * ============================================================================= */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; }
body {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-tap-highlight-color: transparent;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overscroll-behavior: none;
  transition: background-color .2s ease, color .2s ease;
}

img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
input, select, textarea { font: inherit; color: inherit; }
ul, ol { list-style: none; }

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--color-text-3); }

/* —— 大数字（数据卡核心） —— */
.num {
  font-family: var(--font-num);
  font-weight: var(--fw-display);
  font-size: var(--fs-display);
  line-height: var(--lh-display);
  letter-spacing: -0.02em;
  color: var(--color-text);
}
.num-sm {
  font-family: var(--font-num);
  font-weight: var(--fw-display);
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  color: var(--color-text);
}
.unit {
  font-size: var(--fs-unit);
  color: var(--color-text-2);
  margin-left: 2px;
  font-weight: var(--fw-unit);
}
.sub {
  font-size: var(--fs-unit);
  color: var(--color-text-2);
}

/* —— 文本工具 —— */
.t-mute { color: var(--color-text-2); }
.t-warn { color: var(--color-warning); }
.t-err  { color: var(--color-danger); }
.t-ok   { color: var(--color-success); }
.t-emph { color: var(--color-primary-deep); }

.t-h1   { font-size: var(--fs-h1);   font-weight: var(--fw-h1);   line-height: var(--lh-h1); }
.t-h2   { font-size: var(--fs-h2);   font-weight: var(--fw-h2);   line-height: var(--lh-h2); }
.t-h3   { font-size: var(--fs-h3);   font-weight: var(--fw-h3);   line-height: var(--lh-h3); }
.t-lbl  { font-size: var(--fs-label);font-weight: var(--fw-label);line-height: var(--lh-label); }
.t-mini { font-size: var(--fs-mini); font-weight: var(--fw-mini); line-height: var(--lh-mini); }

/* —— 隐藏 / 屏幕阅读 —— */
.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; }
.hide { display: none !important; }

/* —— 减少动画偏好 —— */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
