/* 基础元素、可见焦点与页面环境光 */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100dvh;
  color: var(--ink);
  background-color: var(--page);
  background-image:
    radial-gradient(1100px 680px at 8% -12%, var(--ambient-a), transparent 62%),
    radial-gradient(900px 640px at 96% 4%, var(--ambient-b), transparent 60%);
  background-attachment: fixed;
  font: 14px/1.55 var(--font-sans);
  font-feature-settings: "tnum" 0;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--blue); text-decoration: none; }
a:hover { color: var(--blue-hover); }
h1, h2, h3 { color: var(--ink); letter-spacing: -.01em; }
h1 { font-size: 24px; line-height: 1.3; margin: 0; font-weight: 680; }
h2 { font-size: 17px; line-height: 1.35; margin: 32px 0 14px; font-weight: 650; }
h3 { font-size: 14px; margin: 0; font-weight: 650; }
p { margin: 0 0 12px; }
small { display: block; color: var(--ink-faint); font-size: 11.5px; margin-top: 3px; }
code { font: 12.5px var(--font-mono); padding: 1px 6px; border-radius: 6px; background: var(--surface-sunk); }
:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; border-radius: 6px; }
::selection { background: var(--blue-soft); }
.numeric, time, .mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
[hidden] { display: none !important; }

/* 材质 */
.m-surface, .panel, .card, .odds-panel, .chart-panel, .settings-panel, .live-card, .table-scroll, .login-card {
  background: var(--surface);
  border: 1px solid var(--glass-line);
  box-shadow: var(--e1), inset 0 1px 0 var(--glass-line-soft);
  border-radius: var(--r-lg);
}
.m-pill { background: var(--pill-bg); border: 1px solid var(--glass-line); box-shadow: var(--e1); }
.m-float {
  background: var(--float-bg);
  border: 1px solid var(--glass-line);
  box-shadow: var(--e3);
  backdrop-filter: blur(18px) saturate(1.4);
  -webkit-backdrop-filter: blur(18px) saturate(1.4);
}
.m-groove { background: var(--surface-sunk); border-radius: var(--r-sm); box-shadow: inset 0 1px 2px rgba(var(--shade), .06); }
.m-plate {
  background: var(--plate-bg);
  color: var(--plate-ink);
  border: 1px solid var(--plate-line);
  box-shadow: var(--e2);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-radius: var(--r-lg);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; }
}
