/* =========================================================
   山河纪 · 万里长征数字长卷
   style.css — 视觉系统 / 布局 / 动效基础
   ---------------------------------------------------------
   西文字体内嵌于 assets/fonts，完全离线自包含；
   unicode-range 限定 latin，中文自动回退系统衬线。
   ========================================================= */
@font-face{
  font-family:"Cormorant Garamond";
  src:url("../assets/fonts/cormorant-garamond-latin.woff2") format("woff2");
  font-style:normal;font-weight:400 700;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Cormorant Garamond";
  src:url("../assets/fonts/cormorant-garamond-latin-italic.woff2") format("woff2");
  font-style:italic;font-weight:400;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"DM Mono";
  src:url("../assets/fonts/dm-mono-300-normal.woff2") format("woff2");
  font-style:normal;font-weight:300;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"DM Mono";
  src:url("../assets/fonts/dm-mono-400-normal.woff2") format("woff2");
  font-style:normal;font-weight:400;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  --ink:        #0c0908;
  --ink-2:      #100c0a;
  --ink-3:      #17110e;
  --paper:      #ede3d2;
  --paper-ink:  #1a1410;
  --crimson:    #a6241b;
  --crimson-lt: #c0392b;
  --crimson-dk: #5a1410;
  --gold:       #d8ae62;
  --gold-lt:    #e8c985;
  --gold-dk:    #8a6e3c;
  --muted:      #a2947f;
  --muted-dk:   #7a6a55;
  --line:       #3a2e24;

  --serif: "Songti SC","STSong","Noto Serif CJK SC","Source Han Serif SC","Source Han Serif CN","SimSun",Georgia,serif;
  --sans:  "PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Hiragino Sans GB",sans-serif;
  --brush: "STKaiti","Kaiti SC","KaiTi","楷体",var(--serif);
  --serif-en: "Cormorant Garamond","Iowan Old Style","Baskerville","Times New Roman",Georgia,serif;
  --mono: "DM Mono","IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  --gutter: clamp(28px, 7vw, 112px);
  --ease: cubic-bezier(.22,.8,.24,1);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:88px}
body{
  margin:0;
  background:var(--ink);
  color:var(--paper);
  font-family:var(--serif);
  font-size:16px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body.js{overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,a{ -webkit-tap-highlight-color:transparent }
::selection{background:var(--crimson);color:#fff}
:focus-visible{outline:2px solid var(--gold);outline-offset:4px}

::-webkit-scrollbar{width:9px}
::-webkit-scrollbar-track{background:#0a0807}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--crimson-dk),var(--crimson));border-radius:0}
::-webkit-scrollbar-thumb:hover{background:var(--crimson-lt)}

/* ---------- 全局氛围 ---------- */
/* 静态纸纹：不参与逐帧合成，省掉一个全屏动画层 */
.grain{
  position:fixed;inset:0;z-index:80;pointer-events:none;opacity:.07;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}
/* 环境光：随滚动缓慢漂移，让整页像一条连续的胶片 */
.ambient{
  position:fixed;inset:-40% -10%;z-index:78;pointer-events:none;opacity:.5;will-change:transform,opacity;
  background:
    radial-gradient(42% 34% at 28% 26%,rgba(166,36,27,.13),transparent 70%),
    radial-gradient(38% 32% at 74% 72%,rgba(216,174,98,.10),transparent 72%);
}
.cursor-glow{
  position:fixed;top:0;left:0;width:340px;height:340px;border-radius:50%;z-index:79;pointer-events:none;
  background:radial-gradient(circle,rgba(216,174,98,.13),rgba(166,36,27,.07) 42%,transparent 68%);
  transform:translate3d(-50%,-50%,0);opacity:0;transition:opacity .4s ease;will-change:transform;
}
body.has-cursor .cursor-glow{opacity:1}
.scroll-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:95;background:rgba(216,174,98,.10)}
.scroll-progress__bar{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--crimson),var(--gold-lt));box-shadow:0 0 14px rgba(232,201,133,.6);transform:scaleX(0);transform-origin:left center;will-change:transform}

/* 帧率指示（按 F 显示） */
.perf{
  position:fixed;right:18px;bottom:18px;z-index:96;display:flex;align-items:center;gap:8px;
  padding:8px 14px;background:rgba(12,9,8,.90);border:1px solid rgba(216,174,98,.32);
  font-family:var(--sans);font-size:10px;letter-spacing:.12em;color:var(--muted);
}
.perf[hidden]{display:none}
.perf b{font-size:18px;line-height:1;color:var(--gold-lt);font-variant-numeric:tabular-nums;font-weight:600}
.perf i{width:1px;height:16px;background:rgba(216,174,98,.25);margin:0 3px}
.perf em{font-style:normal;color:var(--gold-dk)}
.perf u{text-decoration:none;font-style:normal;font-size:9px;letter-spacing:.14em;padding:2px 6px;border:1px solid rgba(216,174,98,.32);color:var(--gold-lt)}
.perf u[data-q="balanced"]{color:var(--gold);border-color:rgba(216,174,98,.24)}
.perf u[data-q="lite"]{color:var(--muted-dk);border-color:rgba(216,174,98,.16)}

/* ---------- 自适应画质：低帧时自动卸掉非必要图层 ---------- */
html[data-quality="balanced"] .grain{opacity:.045}
html[data-quality="balanced"] .spirit__rings i:nth-child(3){display:none}
html[data-quality="lite"] .grain,
html[data-quality="lite"] .cursor-glow,
html[data-quality="lite"] .hero__stars,
html[data-quality="lite"] .spirit__rings,
html[data-quality="lite"] .ambient{display:none}
html[data-quality="lite"] .measure{opacity:.6}

/* ---------- 左侧章节导航 ---------- */
.rail{
  position:fixed;left:30px;top:50%;transform:translateY(-50%);z-index:70;
  display:flex;flex-direction:column;align-items:flex-start;gap:22px;
}
.rail__label,.rail__count{font-size:10px;letter-spacing:.32em;color:var(--gold-dk);writing-mode:vertical-rl}
.rail__count{writing-mode:horizontal-tb;letter-spacing:.18em;color:var(--muted-dk);font-variant-numeric:tabular-nums}
.rail__nav{display:flex;flex-direction:column;gap:14px;position:relative;padding-left:2px}
.rail__nav::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:rgba(216,174,98,.18)}
.rail__item{display:flex;align-items:center;gap:14px;position:relative;height:12px}
.rail__item i{width:9px;height:9px;flex:0 0 9px;border:1px solid var(--gold-dk);background:var(--ink);transform:rotate(45deg);transition:all .4s var(--ease)}
.rail__item em{
  font-style:normal;font-size:11px;letter-spacing:.14em;color:var(--muted-dk);white-space:nowrap;
  opacity:0;transform:translateX(-8px);transition:all .4s var(--ease);
}
.rail__item:hover em{opacity:1;transform:none;color:var(--gold)}
.rail__item:hover i,.rail__item.is-active i{background:var(--crimson);border-color:var(--crimson);box-shadow:0 0 12px rgba(166,36,27,.8);transform:rotate(45deg) scale(1.25)}

/* ---------- 顶部导航 ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;height:88px;z-index:90;padding:0 var(--gutter);
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  background:linear-gradient(180deg,rgba(12,9,8,.82),rgba(12,9,8,0));
  transition:background .5s ease,border-color .5s ease,height .5s ease;
  border-bottom:1px solid transparent;
}
.nav.is-scrolled{height:70px;background:rgba(12,9,8,.94);border-bottom-color:rgba(216,174,98,.14)}
.nav__brand{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.nav__star{width:22px;height:22px;fill:var(--crimson-lt);filter:drop-shadow(0 0 8px rgba(192,57,43,.45))}
.nav__brand span{font-size:22px;font-weight:700;letter-spacing:.22em;color:var(--paper)}
.nav__brand small{font-size:11px;letter-spacing:.18em;color:var(--gold);border-left:1px solid var(--line);padding-left:14px;margin-left:4px;text-shadow:0 1px 8px rgba(0,0,0,.9)}
.nav__links{display:flex;gap:22px;margin-left:auto;flex:0 0 auto;white-space:nowrap}
.nav__links a{font-size:14px;letter-spacing:.14em;color:#d8ccba;position:relative;transition:color .35s ease;text-shadow:0 1px 10px rgba(0,0,0,.85)}
.nav__links a::after{content:"";position:absolute;left:0;right:100%;bottom:-7px;height:1px;background:var(--gold);transition:right .4s var(--ease)}
.nav__links a:hover{color:var(--paper)}
.nav__links a:hover::after{right:0}
.nav__cta{flex:0 0 auto}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:12px;
  font-family:var(--serif);font-size:14px;letter-spacing:.18em;white-space:nowrap;
  padding:13px 26px;border:1px solid transparent;cursor:pointer;position:relative;overflow:hidden;
  transition:transform .45s var(--ease),box-shadow .45s var(--ease),color .35s ease,background .35s ease;
  will-change:transform;
}
.btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--ease)}
.btn:hover svg{transform:translateY(3px)}
.btn--lg{padding:17px 32px;font-size:15px}
.btn--solid{background:var(--crimson);color:#f7ebd6;box-shadow:0 10px 30px rgba(166,36,27,.22)}
.btn--solid::before{
  content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.22) 50%,transparent 80%);
  transform:translateX(-120%);transition:transform .7s var(--ease);
}
.btn--solid:hover{background:var(--crimson-lt);box-shadow:0 16px 44px rgba(166,36,27,.42)}
.btn--solid:hover::before{transform:translateX(120%)}
.btn--ghost{border-color:rgba(216,174,98,.42);color:var(--gold-lt);background:rgba(12,9,8,.18)}
.btn--ghost:hover{background:rgba(216,174,98,.10);border-color:var(--gold)}

.text-link{display:inline-flex;align-items:center;gap:14px;font-size:14px;letter-spacing:.14em;color:var(--crimson);margin-top:34px}
.text-link svg{width:22px;height:12px;fill:none;stroke:currentColor;stroke-width:1.2;transition:transform .4s var(--ease)}
.text-link:hover svg{transform:translateX(7px)}

/* ---------- 章节通用 ---------- */
.chapter-tag{font-size:12px;letter-spacing:.3em;color:var(--gold-dk);margin:0 0 26px;text-transform:uppercase}
.chapter-tag i{font-style:normal;margin:0 8px;opacity:.55}
.chapter-tag--light{color:var(--gold)}

body.js .reveal{opacity:0;transform:translate3d(0,34px,0);transition:opacity .9s var(--ease),transform .9s var(--ease)}
body.js .reveal-left{opacity:0;transform:translate3d(-30px,0,0);transition:opacity .9s var(--ease),transform .9s var(--ease)}
body.js .reveal-right{opacity:0;transform:translate3d(30px,0,0);transition:opacity .9s var(--ease),transform .9s var(--ease)}
body.js .reveal.is-visible,body.js .reveal-left.is-visible,body.js .reveal-right.is-visible{opacity:1;transform:none}

/* =========================================================
   首屏
   ========================================================= */
.hero{position:relative;height:100svh;min-height:700px;overflow:hidden;background:var(--ink);perspective:1200px}
.hero__layer{position:absolute;inset:-12% -3%;will-change:transform;pointer-events:none}
.hero__layer--sky{z-index:1;background:radial-gradient(120% 90% at 62% 22%,#3b2118 0%,#1a100c 45%,#0c0908 100%)}
.hero__layer--photo{
  z-index:2;background:url("../assets/hero-mountains.jpg") center 40%/cover no-repeat;
  opacity:.94;transform-origin:50% 30%;
}
.hero__layer--sun{
  z-index:3;mix-blend-mode:screen;opacity:.55;
  background:radial-gradient(circle 240px at 58% 26%,rgba(200,52,34,.55),rgba(200,80,30,.16) 55%,transparent 72%);
}
.hero__layer--mist{
  z-index:4;
  background:
    radial-gradient(90% 55% at 20% 72%,rgba(216,174,98,.10),transparent 65%),
    linear-gradient(0deg,rgba(12,9,8,.92) 0%,rgba(12,9,8,.30) 34%,transparent 62%);
}
.hero__layer--shade{
  z-index:5;
  background:
    linear-gradient(90deg,rgba(12,9,8,.90) 0%,rgba(12,9,8,.52) 38%,rgba(12,9,8,.05) 78%),
    linear-gradient(0deg,rgba(12,9,8,.88),transparent 45%);
}
.hero__stars{position:absolute;inset:0;z-index:6;pointer-events:none}
.hero__stars i{position:absolute;width:2px;height:2px;border-radius:50%;background:var(--gold-lt);opacity:.5;animation:twinkle 4s ease-in-out infinite}
@keyframes twinkle{0%,100%{opacity:.12;transform:scale(.7)}50%{opacity:.75;transform:scale(1.4)}}

.hero__inner{
  position:relative;z-index:10;height:100%;max-width:1600px;margin:0 auto;
  padding:clamp(118px,16vh,190px) var(--gutter) 40px;
  display:flex;flex-direction:column;justify-content:flex-start;
  will-change:transform,opacity;
}
.hero__kicker{display:flex;align-items:center;gap:16px;font-size:12px;letter-spacing:.26em;color:var(--gold);margin:0 0 26px;text-shadow:0 1px 10px rgba(0,0,0,.9)}
.hero__kicker .dash{display:block;width:46px;height:1px;background:var(--gold)}
.hero__overline{margin:0 0 12px;font-size:clamp(13px,1.15vw,17px);letter-spacing:.42em;color:var(--gold-lt);text-shadow:0 1px 10px rgba(0,0,0,.9)}
.hero__overline span{margin-left:18px;font-size:.8em;letter-spacing:.2em;color:var(--gold)}
.hero__title{
  margin:0;font-size:clamp(64px,8.6vw,136px);line-height:1.08;font-weight:700;
  letter-spacing:.10em;color:#f3e9d6;text-shadow:0 12px 60px rgba(0,0,0,.55);
  perspective:800px;
}
.hero__title span{display:inline-block;transform-origin:50% 100%}
body.js .hero__title span{opacity:0;transform:rotateX(-72deg) translateY(.32em);animation:charIn 1s var(--ease) forwards;animation-delay:calc(var(--i) * .11s + .25s)}
@keyframes charIn{to{opacity:1;transform:none}}
.hero__rule{height:2px;width:min(430px,44vw);margin:22px 0 26px;background:linear-gradient(90deg,var(--gold),rgba(216,174,98,0))}
.hero__lead{margin:0;max-width:660px;font-size:clamp(14px,1.15vw,17px);line-height:2;color:#ded2bd;text-shadow:0 1px 10px rgba(0,0,0,.95),0 0 22px rgba(0,0,0,.75)}
.hero__actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:34px}
.hero__stats{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;
  margin-top:auto;padding-top:26px;border-top:1px solid rgba(216,174,98,.18);max-width:1180px;
}
.stat b{display:block;font-size:clamp(26px,2.7vw,40px);line-height:1.2;font-weight:700;color:var(--gold-lt);font-variant-numeric:tabular-nums;letter-spacing:.02em}
.stat span{display:block;margin-top:4px;font-size:12px;letter-spacing:.1em;color:var(--muted)}
.hero__vertical{
  position:absolute;right:clamp(26px,4vw,66px);top:20%;z-index:10;display:flex;flex-direction:column;align-items:center;gap:6px;
  font-family:var(--brush);font-size:17px;color:var(--gold-lt);letter-spacing:.1em;
  text-shadow:0 2px 10px rgba(0,0,0,.95),0 0 22px rgba(0,0,0,.8);
}
.hero__vertical i{display:block;width:1px;height:120px;margin-top:16px;background:linear-gradient(var(--gold-dk),transparent)}
.hero__scroll{
  position:absolute;right:var(--gutter);bottom:34px;z-index:10;display:flex;align-items:center;gap:14px;
  font-size:11px;letter-spacing:.22em;color:var(--muted);
}
.hero__scroll svg{width:16px;height:16px;fill:none;stroke:var(--gold);stroke-width:1.2;stroke-linecap:round;animation:bob 1.9s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(-3px)}50%{transform:translateY(4px)}}

/* =========================================================
   序章 · 纸本分屏
   ========================================================= */
.prologue{
  position:relative;min-height:520px;background:var(--paper);color:var(--paper-ink);
  padding:clamp(88px,11vw,140px) var(--gutter) 110px;overflow:hidden;
}
.prologue__bar{position:absolute;left:var(--gutter);top:clamp(88px,11vw,140px);width:3px;height:210px;background:var(--crimson)}
.prologue__content{position:relative;z-index:2;max-width:760px;margin-left:48px}
.prologue .chapter-tag{color:var(--gold-dk)}
.prologue__title{margin:0 0 30px;font-size:clamp(34px,4vw,56px);line-height:1.35;letter-spacing:.04em;font-weight:700}
.prologue__body{margin:0;max-width:640px;font-size:16px;line-height:2.05;color:#4a3e33}
.prologue__ghost{
  position:absolute;right:4vw;top:2%;font-size:clamp(180px,22vw,320px);line-height:1;
  font-weight:300;color:#dcd1bd;letter-spacing:-.04em;pointer-events:none;user-select:none;
}
.prologue__meta{position:absolute;right:var(--gutter);bottom:120px;margin:0;font-size:14px;letter-spacing:.2em;color:var(--gold-dk);z-index:2}
.prologue__meta i{font-style:normal;margin:0 10px}
.prologue__line{position:absolute;left:var(--gutter);right:var(--gutter);bottom:74px;height:1px;background:#c9bca6}

/* =========================================================
   征程 · 3D 横向长卷
   ========================================================= */
.journey{position:relative;height:400vh;background:var(--ink-2)}
.journey__viewport{position:sticky;top:0;height:100svh;min-height:640px;overflow:hidden;background:radial-gradient(120% 90% at 50% 10%,#171009 0%,#0c0908 68%)}
.journey__head{position:absolute;z-index:6;left:var(--gutter);right:var(--gutter);top:clamp(88px,10vh,120px);pointer-events:none}
.journey__head h2{margin:0;font-size:clamp(30px,3.6vw,52px);letter-spacing:.12em;font-weight:700;color:var(--paper)}
.journey__sub{margin:10px 0 0;font-size:14px;letter-spacing:.1em;color:var(--muted)}
.journey__stage{position:absolute;inset:0;perspective:1600px;perspective-origin:50% 50%}
.journey__track{display:flex;width:400vw;height:100%;transform-style:preserve-3d;will-change:transform}
.panel{flex:0 0 100vw;height:100%;display:flex;align-items:center;justify-content:center;padding:16vh 0 6vh}
.panel__card{
  width:min(1080px,84vw);height:min(48vh,450px);display:grid;grid-template-columns:1.05fr .95fr;
  background:#140f0c;border:1px solid rgba(216,174,98,.20);
  box-shadow:0 40px 90px rgba(0,0,0,.62),0 0 0 1px rgba(0,0,0,.5);
  transform-style:preserve-3d;will-change:transform,opacity;
  transform:translate3d(0,0,var(--z,0px)) rotateY(var(--spin,0deg)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(var(--scale,1));
  opacity:var(--op,1);
}
.panel__media{position:relative;overflow:hidden;transform:translateZ(28px)}
.panel__media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.panel__card:hover .panel__media img{transform:scale(1.07)}
.panel__wash{position:absolute;inset:0;background:linear-gradient(90deg,transparent 55%,rgba(20,15,12,.85)),linear-gradient(0deg,rgba(12,9,8,.35),transparent 45%)}
.panel__media--last img{filter:saturate(1.15) brightness(.9) sepia(.12)}
.panel__body{position:relative;padding:clamp(26px,3.2vw,54px);display:flex;flex-direction:column;transform:translateZ(42px)}
.panel__no{position:absolute;top:clamp(22px,2.6vw,40px);right:clamp(22px,2.6vw,40px);font-size:11px;letter-spacing:.2em;color:var(--gold-dk)}
.panel__date{margin:auto 0 14px;font-size:12px;letter-spacing:.18em;color:var(--gold)}
.panel__body h3{margin:0 0 18px;font-size:clamp(26px,2.8vw,40px);letter-spacing:.08em;line-height:1.3;color:#f3e9d6}
.panel__desc{margin:0;font-size:14px;line-height:2;color:var(--muted);max-width:400px}
.panel__foot{display:flex;align-items:center;gap:14px;margin-top:auto;padding-top:26px;border-top:1px solid rgba(216,174,98,.16);font-size:11px;letter-spacing:.16em;color:var(--muted-dk)}
.panel__foot i{flex:1;height:1px;background:rgba(216,174,98,.14)}
.journey__foot{position:absolute;z-index:6;left:var(--gutter);right:var(--gutter);bottom:34px;display:flex;align-items:center;gap:26px}
.journey__progress{position:relative;flex:1;height:1px;background:rgba(216,174,98,.18)}
.journey__progress span{position:absolute;left:0;top:-1px;height:3px;width:100%;background:linear-gradient(90deg,var(--crimson),var(--gold-lt));box-shadow:0 0 14px rgba(232,201,133,.5);transform:scaleX(0);transform-origin:left center;will-change:transform}
.journey__dots{display:flex;gap:10px}
.journey__dots i{width:20px;height:2px;background:rgba(216,174,98,.22);transition:all .4s ease}
.journey__dots i.is-active{background:var(--gold-lt);box-shadow:0 0 10px rgba(232,201,133,.6);transform:scaleY(2)}
.journey__hint{font-size:10px;letter-spacing:.22em;color:var(--muted-dk);white-space:nowrap}
.journey__hint span{color:var(--crimson-lt)}

/* 通用 3D 倾斜 */
[data-tilt]{transition:transform .45s var(--ease),opacity .45s var(--ease),box-shadow .45s var(--ease);will-change:transform}
/* 长卷卡片由滚动逐帧驱动，不能带 transform 过渡，避免拖影 */
.panel__card[data-tilt]{transition:box-shadow .45s var(--ease)}
.mountain__float[data-tilt]{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateZ(var(--lift,0px))}

/* =========================================================
   数字丰碑
   ========================================================= */
.numbers{
  position:relative;overflow:hidden;padding:clamp(80px,9vw,120px) var(--gutter);
  background:linear-gradient(105deg,#8e211a 0%,#7c1d18 42%,#4d110d 100%);
}
.numbers .chapter-tag{color:var(--gold-lt);position:relative;z-index:2}
.numbers__grid{position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:24px}
.number{padding-top:8px}
.number b{display:block;font-size:clamp(42px,5vw,72px);line-height:1.1;font-weight:700;color:#f7ebd6;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.number span{display:block;margin-top:12px;font-size:13px;letter-spacing:.18em;color:var(--gold-lt)}
.numbers__note{position:relative;z-index:2;margin:60px 0 0;font-size:12px;letter-spacing:.1em;color:rgba(247,235,214,.62)}
.numbers__glow{position:absolute;right:-10%;top:-60%;width:60vw;height:150%;background:radial-gradient(circle,rgba(232,201,133,.14),transparent 65%);pointer-events:none;animation:glowBreath 9s ease-in-out infinite}
@keyframes glowBreath{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}

/* =========================================================
   山河 · 沉浸分屏
   ========================================================= */
.mountain{position:relative;min-height:100svh;display:grid;grid-template-columns:54% 46%;background:#0a0807;overflow:hidden}
.mountain__media{position:relative;overflow:hidden;will-change:transform}
.mountain__media img{width:100%;height:118%;object-fit:cover;object-position:50% 45%;margin-top:-9%}
.mountain__fade{position:absolute;inset:0;background:linear-gradient(90deg,transparent 48%,#0a0807 96%),linear-gradient(0deg,rgba(10,8,7,.55),transparent 40%)}
.mountain__content{
  position:relative;z-index:3;padding:clamp(96px,11vh,150px) clamp(40px,6vw,100px) 90px clamp(28px,3vw,56px);
  display:flex;flex-direction:column;justify-content:center;
}
.mountain__content h2{margin:0 0 28px;font-size:clamp(36px,3.9vw,56px);line-height:1.42;letter-spacing:.08em;color:#f0e6d4}
.mountain__body{margin:0;max-width:500px;font-size:15px;line-height:2.05;color:var(--muted)}
.quote{
  position:relative;margin:44px 0 0;padding:20px 0 20px 26px;border-left:3px solid var(--crimson);
  background:linear-gradient(90deg,rgba(216,174,98,.06),transparent);
}
.quote p{margin:0;font-family:var(--brush);font-size:clamp(19px,1.8vw,25px);line-height:1.85;color:var(--gold-lt)}
.quote cite{display:block;margin-top:12px;font-size:12px;font-style:normal;letter-spacing:.12em;color:var(--muted-dk)}
.mountain__float{
  position:absolute;z-index:4;left:clamp(30px,7vw,110px);top:16%;width:238px;padding:20px 22px;
  background:rgba(12,9,8,.76);border:1px solid rgba(216,174,98,.55);
  backdrop-filter:blur(12px);box-shadow:0 26px 60px rgba(0,0,0,.6);
}
.mountain__float-label{display:block;font-size:11px;letter-spacing:.24em;color:var(--gold)}
.mountain__float strong{display:block;margin:8px 0 12px;font-size:22px;letter-spacing:.06em;color:#f0e6d4}
.mountain__float-note{display:block;font-size:11px;letter-spacing:.12em;color:var(--muted-dk)}

/* =========================================================
   精神 · 结语
   ========================================================= */
.spirit{
  position:relative;min-height:88svh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:130px var(--gutter) 110px;background:var(--ink);overflow:hidden;
}
.spirit__glow{position:absolute;inset:0;background:radial-gradient(60% 55% at 50% 46%,rgba(140,35,25,.34),transparent 70%);animation:glowBreath 8s ease-in-out infinite}
.spirit__rings{position:absolute;left:50%;top:46%;width:min(76vw,900px);aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none}
.spirit__rings i{position:absolute;inset:0;border:1px solid rgba(216,174,98,.10);border-radius:50%;animation:spin 40s linear infinite}
.spirit__rings i:nth-child(2){inset:12%;border-style:dashed;animation-duration:58s;animation-direction:reverse}
.spirit__rings i:nth-child(3){inset:26%;border-color:rgba(166,36,27,.18);animation-duration:34s}
@keyframes spin{to{transform:rotate(360deg)}}
.spirit .chapter-tag{position:relative;z-index:2}
.spirit__title{
  position:relative;z-index:2;margin:0;font-family:var(--brush);font-weight:400;
  font-size:clamp(64px,9vw,132px);letter-spacing:.18em;line-height:1.3;color:var(--gold-lt);
  text-shadow:0 0 60px rgba(216,174,98,.24);perspective:800px;
}
.spirit__title span{display:inline-block;transform-origin:50% 100%}
body.js .spirit__title span{opacity:0;transform:translateY(.4em) rotateX(-60deg)}
body.js .spirit__title.is-visible span{animation:charIn 1.1s var(--ease) forwards;animation-delay:calc(var(--i) * .16s)}
.spirit__rule{position:relative;z-index:2;display:flex;align-items:center;gap:22px;width:min(680px,80vw);margin:26px 0 28px}
.spirit__rule i{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold-dk))}
.spirit__rule i:last-child{background:linear-gradient(90deg,var(--gold-dk),transparent)}
.spirit__rule span{width:7px;height:7px;background:var(--crimson);transform:rotate(45deg)}
.spirit__sub{position:relative;z-index:2;margin:0 0 42px;font-size:clamp(17px,1.7vw,23px);letter-spacing:.18em;color:var(--paper)}
.spirit .btn{position:relative;z-index:2}
.spirit__line{position:absolute;left:var(--gutter);right:var(--gutter);bottom:60px;height:1px;background:rgba(216,174,98,.12)}

/* =========================================================
   页脚
   ========================================================= */
.footer{position:relative;background:#080605;padding:66px var(--gutter) 28px}
.footer__accent{position:absolute;left:var(--gutter);top:0;width:64px;height:2px;background:var(--crimson)}
.footer__grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:56px}
.footer__brand .nav__star{margin-bottom:14px}
.footer__brand strong{display:block;font-size:22px;letter-spacing:.22em}
.footer__brand p{margin:14px 0 0;font-size:12px;line-height:2;color:var(--muted-dk);letter-spacing:.08em}
.footer__col{display:flex;flex-direction:column;gap:12px}
.footer__col h3{margin:0 0 8px;font-size:12px;font-weight:400;letter-spacing:.22em;color:var(--gold)}
.footer__col a{font-size:13px;color:var(--muted-dk);letter-spacing:.08em;transition:color .3s ease,transform .3s ease}
.footer__col a:hover{color:var(--gold-lt);transform:translateX(4px)}
.footer__bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #2a211b;padding-top:22px;font-size:11px;letter-spacing:.1em;color:#6a5b4b}
.footer__bottom a{display:inline-flex;align-items:center;gap:10px;color:var(--gold-dk);letter-spacing:.18em;transition:color .3s ease}
.footer__bottom a:hover{color:var(--gold-lt)}
.footer__bottom svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.3}

/* =========================================================
   星火路线图 · 滚动绘制
   ========================================================= */
.route{
  position:relative;height:260vh;min-height:1600px;overflow:clip;
  background:radial-gradient(120% 95% at 50% 48%,#1a120c 0%,#0a0807 68%);
}
/* 粘性钉住：整条路线在停驻期间完整绘制，最后一段不会被滚出视野 */
.route__viewport{
  position:sticky;top:0;height:100svh;overflow:hidden;
  display:flex;flex-direction:column;justify-content:center;
  padding:0 var(--gutter);
}
.route__head{position:relative;z-index:2;text-align:center;flex:0 0 auto}
.route__head h2{margin:0;font-size:clamp(32px,3.9vw,54px);letter-spacing:.1em;color:var(--paper);font-weight:700}
.route__sub{margin:16px 0 0;font-size:14px;letter-spacing:.1em;color:var(--muted)}
.route__stage{
  position:relative;z-index:2;flex:0 0 auto;width:100%;max-width:1200px;margin:clamp(18px,3vh,36px) auto 0;
  height:clamp(260px,32vh,400px);
  transform-style:preserve-3d;will-change:transform;
  transform:perspective(1200px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
}
.route__aura{
  position:absolute;inset:-14% -6%;pointer-events:none;
  background:radial-gradient(55% 60% at 72% 30%,rgba(166,36,27,.18),transparent 68%),
             radial-gradient(50% 55% at 24% 74%,rgba(216,174,98,.10),transparent 70%);
  transform:translateZ(-90px);
}
.route__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transform:translateZ(0)}
.route__base{fill:none;stroke:rgba(216,174,98,.18);stroke-width:2;stroke-dasharray:5 10;stroke-linecap:round}
.route__line{fill:none;stroke:url(#routeGrad);stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round}
.route__spark{fill:#fff4dc}
.route__halo{fill:none;stroke:rgba(232,201,133,.55);stroke-width:1.4}
.route__nodes{position:absolute;inset:0;transform:translateZ(24px)}
.route__node{position:absolute;left:var(--x);top:var(--y);width:0;height:0}
.route__node i{
  position:absolute;left:-6px;top:-6px;width:12px;height:12px;border:1px solid var(--gold-dk);
  background:#0a0807;transform:rotate(45deg) scale(.85);transition:background .5s var(--ease),box-shadow .5s var(--ease),transform .5s var(--ease),border-color .5s var(--ease);
}
.route__node span{
  position:absolute;left:50%;width:150px;text-align:center;white-space:nowrap;
  font-size:12px;letter-spacing:.08em;color:var(--muted);opacity:0;
  text-shadow:0 1px 8px rgba(0,0,0,.95),0 0 14px rgba(0,0,0,.8);
  transform:translate(-50%,10px);transition:opacity .6s var(--ease),transform .6s var(--ease);
}
.route__node span b{display:block;margin-bottom:2px;font-size:11px;font-weight:400;letter-spacing:.16em;color:var(--gold-lt)}
.route__node--up span{bottom:22px}
.route__node--down span{top:22px}
.route__node:last-child span{left:auto;right:0;transform:translate(0,10px);text-align:right}
.route__node.is-lit i{background:var(--crimson);border-color:var(--gold);box-shadow:0 0 20px rgba(192,57,43,.85);transform:rotate(45deg) scale(1.2)}
.route__node.is-lit span{opacity:1;transform:translate(-50%,0)}
.route__node:last-child.is-lit span{transform:translate(0,0)}
.route__foot{position:relative;z-index:2;flex:0 0 auto;width:100%;max-width:1200px;margin:clamp(16px,2.4vh,26px) auto 0;display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.route__bar{position:relative;flex:1;min-width:220px;height:1px;background:rgba(216,174,98,.18)}
.route__bar span{position:absolute;left:0;top:-1px;width:100%;height:3px;background:linear-gradient(90deg,var(--crimson),var(--gold-lt));transform:scaleX(0);transform-origin:left center;will-change:transform;box-shadow:0 0 12px rgba(232,201,133,.45)}
.route__legend{display:flex;gap:18px;font-size:11px;letter-spacing:.12em;color:var(--muted-dk)}
.route__legend span{display:flex;align-items:center;gap:7px}
.lg{display:block;width:7px;height:7px;transform:rotate(45deg)}
.lg--start{background:var(--crimson)}.lg--turn{background:var(--gold)}.lg--end{background:var(--gold-lt)}
.route__caption{flex:0 0 100%;margin:6px 0 0;font-size:12px;letter-spacing:.14em;color:var(--muted-dk)}

/* =========================================================
   互动 · 星火行军
   ========================================================= */
.game{
  position:relative;padding:clamp(90px,10vw,140px) var(--gutter) 110px;
  background:#0b0907;overflow:hidden;contain:paint;
}
.game::before{content:"";position:absolute;inset:0;background:radial-gradient(70% 60% at 50% 100%,rgba(140,35,25,.14),transparent 70%);pointer-events:none}
.game__intro{position:relative;text-align:center;max-width:820px;margin:0 auto 46px}
.game__intro h2{margin:0;font-size:clamp(38px,4.6vw,64px);letter-spacing:.14em;color:var(--paper)}
.game__desc{margin:20px 0 0;font-size:15px;line-height:2;color:var(--muted)}
.game__shell{position:relative;max-width:1120px;margin:0 auto;border:1px solid rgba(216,174,98,.22);background:#100c0a;box-shadow:0 40px 100px rgba(0,0,0,.6)}
.game__hud{display:grid;grid-template-columns:2.2fr 1fr 1fr 1fr;border-bottom:1px solid rgba(216,174,98,.16)}
.game__hud-item{display:flex;align-items:center;gap:12px;padding:14px 20px;border-right:1px solid rgba(216,174,98,.12);font-size:11px;letter-spacing:.14em;color:var(--muted-dk);white-space:nowrap}
.game__hud-item:last-child{border-right:none}
.game__hud-item b{margin-left:auto;color:var(--gold-lt);font-size:15px;font-weight:400;font-variant-numeric:tabular-nums}
.game__bar{position:relative;flex:1;min-width:70px;height:2px;background:rgba(216,174,98,.16)}
.game__bar i{position:absolute;left:0;top:0;width:100%;height:100%;background:linear-gradient(90deg,var(--crimson),var(--gold-lt));transform:scaleX(0);transform-origin:left center;will-change:transform}
.game__hud-item--wide b{margin-left:0;font-size:12px;min-width:44px;text-align:right}
.game__hearts{letter-spacing:.22em!important;color:var(--crimson-lt)!important}
.game__canvas-wrap{position:relative;aspect-ratio:1120/430;min-height:280px;background:#090706;overflow:hidden}
#gameCanvas{display:block;width:100%;height:100%;touch-action:none}
.game__toast{
  position:absolute;top:20px;left:50%;z-index:3;padding:9px 22px;white-space:nowrap;
  background:rgba(12,9,8,.86);border:1px solid rgba(216,174,98,.42);
  font-size:12px;letter-spacing:.14em;color:var(--gold-lt);
  opacity:0;transform:translate(-50%,-12px);transition:opacity .45s var(--ease),transform .45s var(--ease);pointer-events:none;
}
.game__toast.is-on{opacity:1;transform:translate(-50%,0)}
.game__combo{
  position:absolute;right:22px;top:16px;z-index:3;pointer-events:none;
  font-family:var(--mono);font-size:20px;letter-spacing:.06em;color:var(--gold-lt);
  text-shadow:0 0 18px rgba(232,201,133,.6);
  opacity:0;transform:translateY(-8px) scale(.9);
  transition:opacity .3s var(--ease),transform .3s var(--ease);
}
.game__combo.is-on{opacity:1;transform:none}
.game__overlay{
  position:absolute;inset:0;z-index:4;display:grid;place-items:center;text-align:center;
  background:rgba(9,7,6,.70);transition:opacity .5s var(--ease);
}
.game__overlay.is-hidden{opacity:0;pointer-events:none}
.game__overlay-inner{padding:26px;max-width:580px}
.game__overlay-tag{margin:0 0 14px;font-size:11px;letter-spacing:.42em;color:var(--gold)}
.game__overlay h3{margin:0 0 16px;font-size:clamp(26px,3vw,40px);letter-spacing:.1em;color:var(--paper)}
.game__overlay p{margin:0 auto 26px;max-width:460px;font-size:14px;line-height:1.9;color:var(--muted)}
.game__overlay-hint{margin:20px 0 0!important;font-size:11px!important;letter-spacing:.1em;color:var(--muted-dk)!important}
.game__controls{display:flex;flex-wrap:wrap;gap:10px 28px;padding:13px 20px;border-top:1px solid rgba(216,174,98,.14);font-size:11px;letter-spacing:.08em;color:var(--muted-dk)}
.game__controls span{display:inline-flex;align-items:center;gap:6px}
kbd{display:inline-block;min-width:20px;padding:2px 5px;border:1px solid rgba(216,174,98,.3);font-family:var(--sans);font-size:10px;text-align:center;color:var(--gold-lt)}
.game__dash{
  margin-left:auto;padding:5px 14px;background:transparent;border:1px solid rgba(216,174,98,.42);
  color:var(--gold-lt);font-family:var(--serif);font-size:11px;letter-spacing:.14em;cursor:pointer;
  transition:background .3s ease,border-color .3s ease;
}
.game__dash:hover{background:rgba(216,174,98,.12);border-color:var(--gold)}
.game__dash:disabled{opacity:.4;cursor:default}
.game__milestones{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;max-width:1120px;margin:38px auto 0;background:rgba(216,174,98,.12)}
.milestone{background:#0b0907;padding:22px 20px}
.milestone b{display:block;font-size:26px;font-weight:400;color:rgba(216,174,98,.42);font-variant-numeric:tabular-nums}
.milestone span{display:block;margin:8px 0 6px;font-size:13px;letter-spacing:.1em;color:var(--gold-lt)}
.milestone p{margin:0;font-size:12px;line-height:1.8;color:var(--muted-dk)}

/* =========================================================
   国际版 · 策展层
   ========================================================= */
.skip-link{
  position:fixed;left:16px;top:-60px;z-index:210;padding:9px 16px;
  background:var(--crimson);color:#f7ebd6;font-size:12px;letter-spacing:.12em;
  transition:top .3s var(--ease);
}
.skip-link:focus{top:16px}

/* 开场落印 */
.loader{
  position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;background:#0a0706;
  transition:opacity .6s var(--ease);
}
.loader.is-done{opacity:0;pointer-events:none}
.loader__seal{
  width:72px;height:72px;background:var(--crimson);color:#f7ebd6;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:17px;line-height:1.2;letter-spacing:2px;
  box-shadow:0 0 46px rgba(166,36,27,.42);
  animation:sealIn .7s var(--ease) both;
}
@keyframes sealIn{from{opacity:0;transform:scale(.86) rotate(-4deg)}to{opacity:1;transform:none}}
.loader__tag{font-size:10px;letter-spacing:.42em;color:var(--gold)}
.loader__line{width:120px;height:1px;background:rgba(216,174,98,.2);overflow:hidden}
.loader__line i{display:block;width:100%;height:100%;background:var(--gold-lt);transform:scaleX(0);transform-origin:left;animation:loaderFill .6s var(--ease) forwards}
@keyframes loaderFill{to{transform:scaleX(1)}}
.loader__sub{font-size:10px;letter-spacing:.18em;color:var(--muted-dk)}

/* 语言切换 */
.lang{display:flex;align-items:center;gap:7px;flex:0 0 auto}
.lang__label{font-size:9px;letter-spacing:.2em;color:var(--muted-dk);margin-right:2px}
.lang i{width:1px;height:11px;background:rgba(216,174,98,.3)}
.lang__btn{
  background:none;border:0;padding:5px 4px;color:#c4b49a;cursor:pointer;text-shadow:0 1px 10px rgba(0,0,0,.85);
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;
  transition:color .3s ease;position:relative;
}
.lang__btn::after{content:"";position:absolute;left:4px;right:4px;bottom:0;height:1px;background:var(--gold-lt);transform:scaleX(0);transition:transform .35s var(--ease)}
.lang__btn.is-active{color:var(--gold-lt)}
.lang__btn.is-active::after{transform:scaleX(1)}
.lang__btn:hover{color:var(--paper)}

/* 里程刻度 */
.measure{position:fixed;right:20px;top:50%;transform:translateY(-50%);z-index:65;width:104px;height:200px;pointer-events:none}
.measure__title{position:absolute;right:0;top:-24px;width:104px;text-align:right;font-family:var(--mono);font-size:8px;letter-spacing:.16em;color:var(--gold-dk);text-shadow:0 1px 8px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.8)}
.measure__track{
  position:absolute;right:0;top:0;width:1px;height:100%;
  background:repeating-linear-gradient(to bottom,rgba(216,174,98,.38) 0 1px,transparent 1px 20px);
}
.measure__track i{
  position:absolute;left:-1px;top:0;width:3px;height:100%;
  background:linear-gradient(180deg,var(--gold-lt),var(--crimson));
  transform:scaleY(0);transform-origin:top center;
  box-shadow:0 0 12px rgba(232,201,133,.5);will-change:transform;
}
.measure__end,.measure__start{position:absolute;right:12px;font-family:var(--mono);font-size:8px;letter-spacing:.1em;color:var(--gold-dk);text-shadow:0 1px 8px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.8)}
.measure__end{top:-4px}.measure__start{bottom:-4px}

/* 展览信息带 */
.exhibit{
  position:relative;padding:32px var(--gutter) 28px;background:#0d0a08;
  border-top:1px solid rgba(216,174,98,.16);border-bottom:1px solid rgba(216,174,98,.16);
}
.exhibit__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(216,174,98,.14)}
.exhibit__item{background:#0d0a08;padding:14px 20px;display:flex;flex-direction:column;gap:7px}
.exhibit__item b{font-family:var(--serif);font-size:11px;font-weight:400;letter-spacing:.18em;color:var(--gold-lt)}
.exhibit__item span{font-size:13px;letter-spacing:.04em;color:var(--muted)}
.exhibit__note{margin:16px 0 0;font-size:11px;letter-spacing:.06em;color:var(--muted-dk)}

/* 作品自述 */
.colophon{margin:0 0 26px;border-top:1px solid #2a211b;border-bottom:1px solid #2a211b}
.colophon summary{
  list-style:none;cursor:pointer;padding:15px 0;display:flex;align-items:center;justify-content:space-between;
  font-size:11px;letter-spacing:.18em;color:var(--gold);transition:color .3s ease;
}
.colophon summary::-webkit-details-marker{display:none}
.colophon summary:hover{color:var(--gold-lt)}
.colophon summary span{font-size:16px;line-height:1;transition:transform .35s var(--ease)}
.colophon[open] summary span{transform:rotate(45deg)}
.colophon__body{padding:0 0 20px;max-width:820px}
.colophon__body p{margin:0 0 10px;font-size:13px;line-height:1.95;color:var(--muted-dk)}
.colophon__body em{font-style:italic;color:var(--gold)}

/* ---------- 英文版排版：西文衬线 + 等宽档案字 ---------- */
html[lang="en"] .hero__title,
html[lang="en"] .spirit__title,
html[lang="en"] .prologue__title,
html[lang="en"] .journey__head h2,
html[lang="en"] .route__head h2,
html[lang="en"] .mountain__content h2,
html[lang="en"] .game__intro h2,
html[lang="en"] .panel__body h3,
html[lang="en"] .game__overlay h3,
html[lang="en"] .prologue__body,
html[lang="en"] .mountain__body,
html[lang="en"] .quote p,
html[lang="en"] .hero__lead,
html[lang="en"] .game__desc { font-family: var(--serif-en); }

html[lang="en"] .hero__title{font-size:clamp(46px,6.6vw,100px);letter-spacing:.005em;line-height:1.02;font-weight:600}
html[lang="en"] .spirit__title{font-size:clamp(36px,5.1vw,76px);letter-spacing:.02em;font-weight:600}
html[lang="en"] .game__overlay h3{font-size:clamp(24px,2.4vw,32px);letter-spacing:.01em}
html[lang="en"] .prologue__title{font-size:clamp(34px,4vw,56px);letter-spacing:0;line-height:1.2}
html[lang="en"] .journey__head h2,
html[lang="en"] .route__head h2{font-size:clamp(28px,3.2vw,46px);letter-spacing:.01em}
html[lang="en"] .mountain__content h2{font-size:clamp(26px,2.9vw,40px);letter-spacing:0;line-height:1.28}
html[lang="en"] .prologue__content{max-width:860px}
html[lang="en"] .quote p{font-size:clamp(17px,1.6vw,22px);line-height:1.6}
/* 英文版取消竖排书法题字，改为留白 */
html[lang="en"] .game__intro h2{font-size:clamp(38px,4.4vw,60px);letter-spacing:.06em}
html[lang="en"] .panel__body h3{font-size:clamp(24px,2.5vw,36px);letter-spacing:.01em}
html[lang="en"] .hero__lead,
html[lang="en"] .prologue__body,
html[lang="en"] .mountain__body,
html[lang="en"] .game__desc{font-size:17px;line-height:1.8}

html[lang="en"] .chapter-tag,
html[lang="en"] .hero__kicker,
html[lang="en"] .hero__overline,
html[lang="en"] .hero__scroll span,
html[lang="en"] .stat span,
html[lang="en"] .panel__date,
html[lang="en"] .panel__foot,
html[lang="en"] .number span,
html[lang="en"] .numbers__note,
html[lang="en"] .route__node span b,
html[lang="en"] .route__caption,
html[lang="en"] .route__legend,
html[lang="en"] .game__hud-item,
html[lang="en"] .game__overlay-tag,
html[lang="en"] .exhibit__item b,
html[lang="en"] .nav__brand small { font-family: var(--mono); letter-spacing:.1em; }
html[lang="en"] .nav__links{gap:16px}
html[lang="en"] .nav__links a{font-size:13px;letter-spacing:.04em}
html[lang="en"] .hero__vertical{display:none}
html[lang="en"] .chapter-tag{letter-spacing:.2em}
html[lang="en"] .hero__kicker{letter-spacing:.14em}
html[lang="en"] .hero__overline{letter-spacing:.24em}
html[lang="en"] .panel__foot{letter-spacing:.08em}
html[lang="en"] .stat span,
html[lang="en"] .number span,
html[lang="en"] .route__legend,
html[lang="en"] .exhibit__note{font-size:11px}
html[lang="en"] .stat span{letter-spacing:.02em}

/* =========================================================
   响应式
   ========================================================= */
@media (max-width:1500px){
  .lang__label{display:none}
}
@media (max-width:1200px){
  .rail{display:none}
  .measure{display:none}
  .nav__links{gap:22px}
  .nav__brand small{display:none}
  .lang__label{display:none}
  .panel__card{width:88vw}
}
@media (max-width:900px){
  html{scroll-padding-top:70px}
  .nav{height:68px;padding:0 24px}
  .nav.is-scrolled{height:62px}
  .nav__links{display:none}
  .nav__cta{padding:10px 14px;font-size:11px}
  .lang{gap:4px}
  .lang__btn{font-size:10px;padding:4px 3px}
  .exhibit{padding:24px 22px}
  .exhibit__grid{grid-template-columns:repeat(2,1fr)}
  .exhibit__item{padding:12px 14px}
  .colophon__body p{font-size:12px}
  html[lang="en"] .hero__lead,
  html[lang="en"] .prologue__body,
  html[lang="en"] .mountain__body,
  html[lang="en"] .game__desc{font-size:15px;line-height:1.75}
  .hero{min-height:640px}
  .hero__inner{padding:88px 26px 34px}
  .hero__vertical{display:none}
  .hero__kicker{font-size:10px;letter-spacing:.12em;gap:10px;flex-wrap:wrap}
  .hero__kicker .dash{width:26px;flex:0 0 26px}
  .hero__overline{letter-spacing:.2em;font-size:12px}
  .hero__overline span{margin-left:8px;letter-spacing:.1em}
  .hero__stats{grid-template-columns:repeat(2,1fr);gap:16px 24px}
  .hero__scroll{display:none}
  .prologue{padding:80px 26px 90px}
  .prologue__bar{left:26px;top:80px;height:180px}
  .prologue__content{margin-left:26px}
  .prologue__ghost{right:-4vw;top:auto;bottom:60px;font-size:180px;opacity:.55}
  .prologue__meta{right:26px;bottom:80px;font-size:12px}
  .prologue__line{left:26px;right:26px}
  .journey{height:340vh}
  .journey__head{left:26px;right:26px;top:88px}
  .journey__track{width:400vw}
  .panel{flex-basis:100vw;padding:24vh 0 6vh}
  .panel__card{width:84vw;height:min(50vh,430px);grid-template-columns:1fr;grid-template-rows:42% 58%}
  .panel__media{transform:none}
  .panel__body{padding:22px;transform:none}
  .panel__no{top:18px;right:18px}
  .panel__date{margin:0 0 8px}
  .panel__body h3{font-size:25px;margin-bottom:10px}
  .panel__desc{font-size:13px;line-height:1.75}
  .panel__foot{padding-top:14px;margin-top:14px}
  .journey__foot{left:26px;right:26px;bottom:24px;gap:14px}
  .journey__hint{display:none}
  .numbers{padding:76px 26px}
  .numbers__grid{grid-template-columns:repeat(2,1fr);gap:34px}
  .mountain{grid-template-columns:1fr;min-height:auto}
  .mountain__media{height:52vh}
  .mountain__media img{height:112%}
  .mountain__fade{background:linear-gradient(0deg,#0a0807,transparent 45%)}
  .mountain__float{left:22px;top:8%;width:200px;padding:14px 16px}
  .mountain__content{padding:56px 26px 80px}
  .route{height:210vh;min-height:0}
  .route__viewport{padding:0 22px}
  .route__head h2{font-size:28px;letter-spacing:.02em}
  .route__stage{height:clamp(240px,32vh,300px);margin-top:16px}
  .route__foot{margin-top:16px}
  .route__line{stroke-width:6}
  .route__base{stroke-width:3}
  .route__node span{width:100px;font-size:9px;padding:3px 8px;background:linear-gradient(90deg,rgba(10,8,7,0),rgba(10,8,7,.82) 16%,rgba(10,8,7,.82) 84%,rgba(10,8,7,0))}
  .route__node:last-child span{width:100px}
  .route__node span b{font-size:8px}
  .route__node--up span{bottom:16px}
  .route__node--down span{top:16px}
  .route__foot{gap:14px}
  .route__legend{font-size:10px;gap:12px}
  .game{padding:80px 20px 80px}
  .game__intro{margin-bottom:30px}
  .game__hud{grid-template-columns:repeat(3,1fr)}
  .game__hud-item{padding:11px 10px;font-size:10px;gap:6px}
  .game__hud-item:nth-child(4){border-right:none}
  .game__hud-item--wide{grid-column:1 / -1;border-right:none;border-bottom:1px solid rgba(216,174,98,.12);padding:11px 14px}
  .game__canvas-wrap{aspect-ratio:4/3;min-height:300px}
  .game__controls{gap:8px 16px;padding:11px 14px;font-size:10px}
  .game__milestones{grid-template-columns:repeat(2,1fr);margin-top:26px}
  .milestone{padding:16px}
  .spirit{min-height:70svh;padding:110px 26px}
  .footer{padding:56px 26px 24px}
  .footer__grid{grid-template-columns:1fr 1fr;gap:36px}
  .footer__brand{grid-column:1 / -1}
  .footer__bottom{flex-direction:column;gap:14px;text-align:center}
}
@media (max-width:520px){
  .hero__title{letter-spacing:.04em}
  .hero__lead br{display:none}
  .hero__actions{gap:10px}
  .btn--lg{padding:14px 20px;font-size:13px}
  .stat b{font-size:26px}
  .prologue__title{font-size:30px}
  .panel__card{width:88vw}
  .footer__grid{grid-template-columns:1fr 1fr 1fr}
  .footer__brand{grid-column:1 / -1}
}

/* ---------- 动效降级 ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .loader,.measure,.ambient{display:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  body.js .reveal,body.js .reveal-left,body.js .reveal-right,
  body.js .hero__title span,body.js .spirit__title span{opacity:1!important;transform:none!important}
  .journey{height:auto}
  .journey__viewport{position:relative;height:auto;min-height:0;padding:100px 0}
  .journey__head{position:relative;top:auto;left:auto;right:auto;padding:0 26px}
  .journey__stage{position:relative;inset:auto;perspective:none}
  .journey__track{display:grid;width:100%;transform:none!important}
  .panel{width:100%;padding:24px}
  .panel__card{width:100%;height:auto;transform:none!important;opacity:1!important;grid-template-columns:1fr;grid-template-rows:200px auto}
  .journey__foot{position:relative;bottom:auto;left:auto;right:auto;margin:30px 26px 0}
  .hero__layer,.mountain__media,.route__stage{transform:none!important}
  .route{height:auto;min-height:0}
  .route__viewport{position:relative;top:auto;height:auto;display:block;padding:88px 26px}
  .route__stage{height:320px;margin-top:28px}
  .route__foot{margin-top:26px}
  .route__bar span,.game__bar i,.scroll-progress__bar,.journey__progress span{transition:none!important}
}
