/* =====================================================================
 * PixelAlgo · 基础层 base.css
 * reset / 背景 / 排版 / 动效 / 滚动条。零业务组件。
 * 视觉语言精确继承自 IncomeResearch。
 * 依赖：tokens.css 先于本文件加载。
 * =================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 16px); }

body {
  font-family: var(--font-ui);
  background: var(--bg);
  color: var(--ink);
  min-height: 100vh;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "ss01";
  text-rendering: optimizeLegibility;
}

/* ── 大气背景层（固定，指针穿透）── */
.bg-atmos {
  position: fixed; inset: 0; z-index: -2; pointer-events: none;
  background:
    radial-gradient(900px 620px at 10% -12%, rgba(94,234,212,.09), transparent 60%),
    radial-gradient(820px 520px at 96% -4%, rgba(232,176,75,.07), transparent 56%),
    radial-gradient(760px 760px at 50% 122%, rgba(122,183,255,.055), transparent 60%),
    linear-gradient(180deg, var(--bg-1), var(--bg-2));
}
/* ── 网格层（径向遮罩淡出）── */
.bg-grid {
  position: fixed; inset: 0; z-index: -1; pointer-events: none; opacity: .4;
  background-image:
    linear-gradient(rgba(255,255,255,.022) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.022) 1px, transparent 1px);
  background-size: 62px 62px;
  -webkit-mask-image: radial-gradient(ellipse 78% 58% at 50% 28%, #000 38%, transparent 100%);
          mask-image: radial-gradient(ellipse 78% 58% at 50% 28%, #000 38%, transparent 100%);
}

/* 亮色主题：更亮的大气光晕 + 更深的网格 */
[data-theme="light"] .bg-atmos {
  background:
    radial-gradient(900px 620px at 10% -12%, rgba(94,234,212,.14), transparent 60%),
    radial-gradient(820px 520px at 96% -4%, rgba(232,176,75,.10), transparent 56%),
    radial-gradient(760px 760px at 50% 122%, rgba(122,183,255,.10), transparent 60%),
    linear-gradient(180deg, var(--bg-1), var(--bg-2));
}
[data-theme="light"] .bg-grid {
  background-image:
    linear-gradient(rgba(0,0,0,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,0,0,.045) 1px, transparent 1px);
  opacity: .55;
}
/* 亮色下图表/画布容器用深底（保证数据可视化对比度）*/
[data-theme="light"] .canvas-surface,
[data-theme="light"] .chart-surface { background: #0B1322; border-radius: var(--r-md); }

/* ── 字体功能类 ── */
.font-display { font-family: var(--font-display); font-optical-sizing: auto; }
.font-mono    { font-family: var(--font-mono); font-feature-settings: "tnum","zero"; font-variant-numeric: tabular-nums; }
.tnum         { font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.eyebrow      { font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; }

/* ── 排版层级 ── */
h1, h2, h3, h4 { line-height: 1.15; letter-spacing: -.01em; font-weight: 600; }
h1 { font-size: clamp(2rem, 5vw, 3.2rem); }
h2 { font-size: clamp(1.4rem, 3vw, 1.9rem); }
h3 { font-size: 1.25rem; }
h4 { font-size: 1.05rem; }
p  { margin: 0 0 1em; color: var(--ink-2); }
small { color: var(--ink-3); }
strong { color: var(--ink); font-weight: 600; }
a { color: var(--teal); text-decoration: none; transition: color var(--dur-1); }
a:hover { color: var(--teal-d); text-decoration: underline; text-underline-offset: 3px; }

/* ── 行内代码 / 代码块 ── */
code, kbd, samp { font-family: var(--font-mono); font-size: .9em; }
:not(pre) > code {
  background: var(--s2); border: 1px solid var(--bd); border-radius: var(--r-xs);
  padding: 1px 6px; color: var(--teal);
}
pre {
  margin: 0; padding: var(--sp-4); overflow: auto;
  font-family: var(--font-mono); font-size: 13px; line-height: 1.6;
  color: var(--ink);
}

/* ── 分隔线（柔光）── */
.soft-divider { height: 1px; background: linear-gradient(90deg, transparent, var(--bd), transparent); border: 0; }

/* ── 入场动效 ── */
.reveal { opacity: 0; transform: translateY(14px); animation: reveal .8s var(--ease) forwards; }
@keyframes reveal { to { opacity: 1; transform: none; } }

/* ── 滚动条 ── */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); border-radius: 6px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.2); background-clip: padding-box; }
[data-theme="light"] ::-webkit-scrollbar-thumb { background: rgba(0,0,0,.16); background-clip: padding-box; }

/* ── 焦点可见性（无障碍）── */
:focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; border-radius: var(--r-xs); }

/* ── 文本选区 ── */
::selection { background: rgba(94,234,212,.28); color: var(--ink); }

/* ── 媒体：图片/画布自适应 ── */
img, svg, canvas, video { max-width: 100%; display: block; }

/* ── 降低动效（无障碍）── */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
}
