/* ============================================================================
   base.css —— reset + 基准排版 + 全局装饰
   ============================================================================ */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg-0);
  font-family:var(--font-ui);
  font-size:calc(13.5px * var(--ts));
  line-height:1.62;
  color:var(--txt-1);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  transition:background .45s var(--ease),color .45s var(--ease);
  overflow-x:hidden;
}
a{color:var(--brand-3);text-decoration:none}
a:hover{text-decoration:underline}
:root[data-theme="light"] a{color:var(--brand)}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
img,svg{display:block;max-width:100%}
::selection{background:rgba(96,165,250,.3);color:#fff}
:root[data-theme="light"] ::selection{background:rgba(37,99,235,.2);color:#0A1526}

/* 等宽数字：金额、计数、编号一律使用，避免位数跳动 */
.num,tbody td.r,.tf,.pg2 button,.kv dd,code,kbd{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
code,kbd,pre{font-family:var(--font-mono)}

/* 滚动条 */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--track);border-radius:9px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:var(--hair-2);background-clip:content-box}

/* 环境光 + 磨砂颗粒（纯 CSS/SVG，无图片资源） */
.ambient{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.ambient span{position:absolute;border-radius:50%;filter:blur(90px);opacity:.5}
.ambient .g1{width:720px;height:720px;top:-320px;left:-180px;background:radial-gradient(circle,rgba(59,130,246,.42),transparent 68%)}
.ambient .g2{width:640px;height:640px;top:-180px;right:-200px;background:radial-gradient(circle,rgba(139,92,246,.34),transparent 68%)}
.ambient .g3{width:820px;height:560px;bottom:-320px;left:32%;background:radial-gradient(circle,rgba(45,212,191,.20),transparent 70%)}
:root[data-theme="light"] .ambient .g1{background:radial-gradient(circle,rgba(59,130,246,.24),transparent 68%)}
:root[data-theme="light"] .ambient .g2{background:radial-gradient(circle,rgba(139,92,246,.18),transparent 68%)}
:root[data-theme="light"] .ambient .g3{background:radial-gradient(circle,rgba(45,212,191,.16),transparent 70%)}
.grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:var(--grain);mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>")}

/* 工具类 */
.hide{display:none !important}
.mt4{margin-top:4px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.mb0{margin-bottom:0}.mb16{margin-bottom:16px}
.tr{text-align:right}.tc{text-align:center}
.muted{color:var(--txt-3)}
.fs11{font-size:calc(11.5px * var(--ts))}
.fs12{font-size:calc(12.5px * var(--ts))}
.gap8{display:flex;gap:8px;align-items:center}
.gap12{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.w100{width:100%}

/* 无障碍：仅屏幕阅读器可见 */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* 减少动效偏好 */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important}
}
