/* 基础：重置、排版、通用工具类与滚动显现动画 */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 24px);-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--f-sans);font-size:15px;line-height:1.75;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .35s var(--ease),color .35s var(--ease);overflow-x:hidden}
a{color:inherit;text-decoration:none}
img,svg,canvas{display:block;max-width:100%}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
::selection{background:var(--accent);color:var(--accent-ink)}
h1,h2,h3,h4{font-family:var(--f-display);margin:0;line-height:1.25;letter-spacing:-.02em}
p{margin:0}
code,kbd,pre{font-family:var(--f-mono)}
kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:5px;font-size:10.5px;color:var(--muted);background:var(--panel-2)}

::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:10px;border:3px solid var(--bg)}
::-webkit-scrollbar-track{background:transparent}

.wrap{width:min(var(--wrap),calc(100% - 64px));margin-inline:auto}
.mono{font-family:var(--f-mono)}
.muted{color:var(--muted)}
.accent{color:var(--accent)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}

/* 背景氛围：点阵 + 噪点 + 光晕 */
.bg-grid{position:fixed;inset:0;z-index:-2;pointer-events:none;background-image:radial-gradient(var(--grid-dot) 1px,transparent 1px);background-size:28px 28px;mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000 30%,transparent 80%)}
.bg-glow{position:fixed;z-index:-1;pointer-events:none;width:900px;height:900px;border-radius:50%;filter:blur(120px);opacity:.5;background:radial-gradient(circle,var(--accent-glow),transparent 65%);top:-420px;left:50%;translate:-50% 0}
.grain{position:fixed;inset:-50%;z-index:100;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain 8s steps(10) infinite}
:root[data-theme=light] .grain{opacity:.05}
@keyframes grain{0%,100%{transform:translate(0,0)}10%{transform:translate(-5%,-10%)}30%{transform:translate(3%,-15%)}50%{transform:translate(12%,9%)}70%{transform:translate(9%,4%)}90%{transform:translate(-1%,7%)}}

/* 区块标题 */
.section{padding:110px 0;position:relative}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:48px}
.section-label{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-mono);font-size:11px;letter-spacing:.18em;color:var(--accent);text-transform:uppercase;margin-bottom:16px}
.section-label::before{content:"";width:28px;height:1px;background:currentColor}
.section-title{font-size:clamp(30px,3.6vw,46px);font-weight:600}
.section-title em{font-style:normal;color:var(--accent)}
.section-desc{max-width:420px;color:var(--muted);font-size:14px;line-height:1.9}

/* 滚动显现 */
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:var(--d,0s)}
[data-reveal=left]{transform:translateX(-30px)}
[data-reveal=scale]{transform:scale(.94)}
[data-reveal].is-in{opacity:1;transform:none}
.split-line{display:block;overflow:hidden}
.split-line>span{display:inline-block;transform:translateY(105%);transition:transform 1s var(--ease);transition-delay:var(--d,0s)}
.is-in .split-line>span,.split-line.is-in>span{transform:none}

@media (max-width:760px){
  .wrap{width:calc(100% - 32px)}
  .section{padding:72px 0}
  .section-head{flex-direction:column;align-items:flex-start;gap:16px;margin-bottom:32px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  [data-reveal]{opacity:1;transform:none}
}
