/* ═══════════════════════════════════════════════════════════════
   齐齐哈尔工程学院 · 网站设计系统
   Morning Light — 晨光校园（明亮年轻风）
   ═══════════════════════════════════════════════════════════════ */

/* ---------- 1. 设计令牌 ---------- */
:root{
  /* 色彩：暖纸面 + 齐工程红 + 湖蓝 + 深墨文字 */
  --ink:        #F7F4ED;   /* 主背景（暖纸） */
  --ink-2:      #EFEBE0;   /* 次背景 */
  --ink-3:      #FFFFFF;   /* 卡片 / 亮面 */
  --band:       #221E18;   /* 深色带（跑马灯 / 页脚锚点） */
  --paper:      #FFFFFF;   /* 亮色面 */
  --paper-2:    #EAF1F6;   /* 淡蓝区块 */
  --cream:      #26221B;   /* 主文字（深墨） */
  --cream-dim:  rgba(38,34,27,.68);
  --cream-faint:rgba(38,34,27,.45);
  --on-dark:    #F4F0E7;   /* 深底上的文字 */
  --on-dark-dim:rgba(244,240,231,.72);
  --on-dark-faint:rgba(244,240,231,.42);
  --red:        #B5342A;   /* 齐工程红 */
  --red-hi:     #C2492F;   /* 高亮红 */
  --red-deep:   #8E2820;   /* 深红（渐变端） */
  --brass:      #A87B2E;   /* 黄铜（加深以保证亮底对比） */
  --brass-hi:   #C89A45;
  --slate:      #3E7CA6;   /* 湖蓝 */
  --slate-hi:   #5B9BC4;
  --line:       rgba(38,34,27,.13);
  --line-dark:  rgba(38,34,27,.14);

  /* 字体 */
  --serif: "Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --sans:  "Inter","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",system-ui,sans-serif;
  --mono:  "Inter",ui-monospace,monospace;

  /* 排版尺度 */
  --pad: clamp(20px, 4.5vw, 64px);
  --maxw: 1320px;
  --r-s: 8px; --r-m: 14px; --r-l: 22px;

  /* 动效 */
  --e-out:  cubic-bezier(.22,1,.36,1);
  --e-inout:cubic-bezier(.65,0,.35,1);
  --e-spring:cubic-bezier(.34,1.56,.64,1);

  --nav-h: 76px;
}

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }

html{ -webkit-text-size-adjust:100%; }
html.lenis,html.lenis body{ height:auto; }
.lenis.lenis-smooth{ scroll-behavior:auto !important; }

body{
  font-family:var(--sans);
  background:var(--ink);
  color:var(--cream);
  font-size:16px; line-height:1.75;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
body.is-loading{ overflow:hidden; }
body.menu-open{ overflow:hidden; }

img{ display:block; max-width:100%; height:auto; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
svg{ display:block; }
::selection{ background:var(--red); color:#fff; }

/* 细滚动条 */
::-webkit-scrollbar{ width:10px; }
::-webkit-scrollbar-track{ background:var(--ink-2); }
::-webkit-scrollbar-thumb{ background:#C9C2B2; border-radius:6px; border:2px solid var(--ink-2); }
::-webkit-scrollbar-thumb:hover{ background:var(--brass); }

/* ---------- 2. 布局工具 ---------- */
.wrap{ width:100%; max-width:var(--maxw); margin:0 auto; padding:0 var(--pad); }
.sec{ position:relative; padding:clamp(88px,11vw,156px) 0; }

/* 章节标签 */
.label{
  display:flex; align-items:center; gap:12px;
  font-size:11px; letter-spacing:.28em; text-transform:uppercase;
  color:var(--cream-faint); margin-bottom:26px;
}
.label b{
  font-family:var(--mono); font-weight:600; font-size:11px; letter-spacing:.1em;
  color:var(--red-hi);
  border:1px solid rgba(200,90,72,.4); border-radius:100px;
  padding:3px 10px 2px; line-height:1.4;
}
.label span{ color:var(--cream-dim); letter-spacing:.22em; }
.label i{ font-style:normal; color:rgba(38,34,27,.22); letter-spacing:.18em; }
.label--center{ justify-content:center; }
.label--light span{ color:rgba(244,240,231,.72); }
.label--light i{ color:rgba(244,240,231,.3); }

/* 大标题（衬线，行遮罩 reveal 由 JS 拆行） */
.title{
  font-family:var(--serif); font-weight:700;
  font-size:clamp(30px,4.6vw,60px);
  line-height:1.28; letter-spacing:.02em;
  color:var(--cream);
  margin-bottom:34px;
}
.title .hl{ color:var(--red-hi); }
.title--center{ text-align:center; }

/* 正文 */
.lead{
  font-size:clamp(14.5px,1.15vw,16px); line-height:2.05;
  color:var(--cream-dim); max-width:44em;
  margin-bottom:20px;
}

/* 液态光团背景 */
.liquid-bg{ position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
.liquid-bg .blob{
  position:absolute; border-radius:50%;
  filter:blur(70px); opacity:.3; mix-blend-mode:normal;
  will-change:transform;
}
@keyframes drift{
  0%,100%{ transform:translate3d(0,0,0) scale(1); }
  33%{ transform:translate3d(4%,-6%,0) scale(1.08); }
  66%{ transform:translate3d(-5%,4%,0) scale(.94); }
}
.liquid-bg .blob{ animation:drift 22s var(--e-inout) infinite; }
.liquid-bg .blob:nth-child(2){ animation-duration:28s; animation-delay:-8s; }
.liquid-bg .blob:nth-child(3){ animation-duration:25s; animation-delay:-15s; }

/* ---------- 4. 预加载 ---------- */
.loader{
  position:fixed; inset:0; z-index:9000;
  background:var(--ink);
  display:grid; place-items:center;
}
.loader__inner{ text-align:center; padding:0 24px; position:relative; z-index:2; }
.loader__mark{ width:52px; height:52px; margin:0 auto 26px; color:var(--red-hi); }
.loader__mark svg{ width:100%; height:100%; }
.loader__name{
  font-family:var(--serif); font-weight:700; font-size:clamp(22px,3.4vw,30px);
  letter-spacing:.3em; color:var(--cream); text-indent:.3em;
}
.loader__en{
  font-size:10px; letter-spacing:.42em; color:var(--cream-faint);
  margin-top:12px; text-indent:.42em;
}
.loader__bar{
  width:min(300px,62vw); height:1px; margin:34px auto 0;
  background:rgba(38,34,27,.14); overflow:hidden;
}
.loader__bar i{ display:block; height:100%; width:0; background:var(--red-hi); }
.loader__num{
  font-family:var(--mono); font-size:11px; letter-spacing:.2em;
  color:var(--cream-faint); margin-top:14px;
}
.loader__num i{ font-style:normal; opacity:.5; }
.loader__curtain{
  position:absolute; inset:0; background:var(--ink); z-index:1;
  transform-origin:top;
}
.loader.is-done{ transform:translateY(-100%); transition:transform 1s var(--e-inout) .15s; }

/* ---------- 5. 进度条 ---------- */
.progress{
  position:fixed; left:0; top:0; height:2px; width:100%; z-index:800;
  background:transparent; pointer-events:none;
}
.progress i{ display:block; height:100%; width:0; background:linear-gradient(90deg,var(--red),var(--brass)); }

/* ---------- 6. 导航 ---------- */
.nav{
  position:fixed; left:0; right:0; top:0; z-index:760;
  height:var(--nav-h);
  display:flex; align-items:center; gap:28px;
  padding:0 var(--pad);
  transition:transform .55s var(--e-out),background .55s,border-color .55s,backdrop-filter .55s;
  border-bottom:1px solid transparent;
}
.nav.is-stuck{
  background:rgba(247,244,237,.86);
  -webkit-backdrop-filter:blur(18px) saturate(1.4);
  backdrop-filter:blur(18px) saturate(1.4);
  border-bottom-color:var(--line);
}
.nav.is-hidden{ transform:translateY(-100%); }

.nav__brand{ display:flex; align-items:center; gap:13px; flex:none; }
.nav__mark{ width:34px; height:34px; color:var(--red-hi); flex:none; }
.nav__mark svg{ width:100%; height:100%; }
.nav__names b{
  display:block; font-family:var(--serif); font-weight:700; font-size:15px;
  letter-spacing:.18em; color:var(--cream); line-height:1.3;
}
.nav__names i{
  display:block; font-style:normal; font-size:8px; letter-spacing:.24em;
  color:var(--cream-faint); margin-top:2px;
}

.nav__links{ display:flex; gap:6px; margin-left:auto; }
.nav__links a{
  position:relative; padding:9px 15px; font-size:13px; letter-spacing:.1em;
  color:var(--cream-dim); border-radius:100px; overflow:hidden;
  transition:color .35s;
}
.nav__links a span{ position:relative; z-index:2; }
.nav__links a::before{
  content:""; position:absolute; inset:0; border-radius:100px;
  background:rgba(38,34,27,.08);
  transform:scale(.4); opacity:0; transition:.4s var(--e-out);
}
.nav__links a:hover{ color:var(--cream); }
.nav__links a:hover::before{ transform:none; opacity:1; }
.nav__links a.is-active{ color:var(--cream); }
.nav__links a.is-active::before{ transform:none; opacity:1; background:rgba(200,90,72,.16); }
.nav__links a.is-active::after{
  content:""; position:absolute; left:50%; bottom:3px; width:3px; height:3px;
  border-radius:50%; background:var(--red-hi); transform:translateX(-50%);
}

.nav__cta{
  display:inline-flex; align-items:center; gap:8px; flex:none;
  font-size:12.5px; letter-spacing:.12em; color:#fff;
  background:var(--red); border-radius:100px; padding:10px 20px;
  box-shadow:0 8px 22px -10px rgba(181,52,42,.55);
  transition:background .35s,color .35s,box-shadow .35s;
  will-change:transform;
}
.nav__cta svg{ width:15px; height:15px; transition:transform .35s var(--e-out); }
.nav__cta:hover{ background:var(--red-deep); color:#fff; box-shadow:0 10px 26px -10px rgba(142,40,32,.6); }
.nav__cta:hover svg{ transform:translateX(3px); }

.nav__burger{ display:none; width:42px; height:42px; position:relative; margin-left:auto; z-index:760; }
.nav__burger i{
  position:absolute; left:11px; width:20px; height:1.5px; background:var(--cream);
  transition:.4s var(--e-out);
}
.nav__burger i:nth-child(1){ top:17px; }
.nav__burger i:nth-child(2){ top:23px; width:14px; }
body.menu-open .nav__burger i:nth-child(1){ top:20px; transform:rotate(45deg); }
body.menu-open .nav__burger i:nth-child(2){ top:20px; width:20px; transform:rotate(-45deg); }

/* 移动端全屏菜单 */
.menu{
  position:fixed; inset:0; z-index:750;
  background:var(--paper);
  padding:calc(var(--nav-h) + 24px) var(--pad) 32px;
  display:flex; flex-direction:column; justify-content:space-between;
  clip-path:inset(0 0 100% 0);
  transition:clip-path .7s var(--e-inout);
  visibility:hidden;
}
body.menu-open .menu{ clip-path:inset(0 0 0 0); visibility:visible; }
.menu__list a{
  display:flex; align-items:baseline; gap:16px;
  padding:18px 0; border-bottom:1px solid var(--line);
  font-family:var(--serif); font-size:26px; letter-spacing:.1em; color:var(--cream);
  opacity:0; transform:translateY(18px);
  transition:opacity .5s var(--e-out),transform .5s var(--e-out),color .3s;
}
body.menu-open .menu__list a{ opacity:1; transform:none; }
.menu__list a:nth-child(1){ transition-delay:.12s } .menu__list a:nth-child(2){ transition-delay:.18s }
.menu__list a:nth-child(3){ transition-delay:.24s } .menu__list a:nth-child(4){ transition-delay:.30s }
.menu__list a:nth-child(5){ transition-delay:.36s } .menu__list a:nth-child(6){ transition-delay:.42s }
.menu__list a:nth-child(7){ transition-delay:.48s } .menu__list a:nth-child(8){ transition-delay:.54s }
.menu__list a em{ font-family:var(--mono); font-style:normal; font-size:11px; color:var(--red-hi); letter-spacing:.1em; }
.menu__list a:active{ color:var(--red-hi); }
.menu__foot{ display:flex; align-items:flex-end; justify-content:space-between; }
.menu__foot p{ font-family:var(--serif); font-size:15px; line-height:2; letter-spacing:.14em; color:var(--cream-dim); }
.menu__foot span{ font-family:var(--mono); font-size:11px; letter-spacing:.2em; color:var(--brass); }

/* ---------- 7. 按钮（磁吸 + 液体填充） ---------- */
.btn{
  position:relative; display:inline-flex; align-items:center; gap:10px;
  font-size:14px; letter-spacing:.14em; border-radius:100px;
  padding:16px 30px; overflow:hidden; isolation:isolate;
  will-change:transform;
  transition:color .4s var(--e-out);
}
.btn__fill{
  position:absolute; inset:0; z-index:-1; border-radius:inherit;
  transform:translateY(101%); transition:transform .55s var(--e-out);
}
.btn__text{ position:relative; z-index:2; }
.btn svg{ position:relative; z-index:2; width:17px; height:17px; transition:transform .4s var(--e-out); }
.btn:hover svg{ transform:translateX(4px); }

.btn--primary{ background:var(--red); color:#fff; box-shadow:0 12px 30px -12px rgba(181,52,42,.5); }
.btn--primary .btn__fill{ background:var(--band); }
.btn--primary:hover{ color:#fff; box-shadow:0 14px 34px -12px rgba(34,30,24,.45); }
.btn--primary:hover .btn__fill{ transform:translateY(0); }

.btn--ghost{ border:1px solid rgba(38,34,27,.28); color:var(--cream); }
.btn--ghost .btn__fill{ background:var(--band); }
.btn--ghost:hover{ color:var(--on-dark); border-color:var(--band); }
.btn--ghost:hover .btn__fill{ transform:translateY(0); }
.btn--ghost .btn__arrow{
  position:relative; z-index:2; width:30px; height:30px; border-radius:50%;
  border:1px solid currentColor; display:grid; place-items:center;
  transition:transform .45s var(--e-spring);
}
.btn--ghost .btn__arrow svg{ width:14px; height:14px; }
.btn--ghost:hover .btn__arrow{ transform:rotate(45deg); }

.btn--lg{ padding:19px 36px; font-size:15px; }
.btn--ghost-light{ border-color:rgba(244,240,231,.4); color:var(--on-dark); }
.btn--ghost-light .btn__fill{ background:var(--on-dark); }
.btn--ghost-light:hover{ color:var(--red-deep); border-color:var(--on-dark); }
.btn--ghost-light:hover .btn__fill{ transform:translateY(0); }

/* ---------- 8. 首屏 HERO ---------- */
.hero{
  position:relative; min-height:100svh;
  display:flex; flex-direction:column; justify-content:flex-end;
  overflow:hidden;
  background:
    radial-gradient(120% 80% at 82% 10%, #FBF9F3 0%, transparent 55%),
    linear-gradient(160deg, #F9F6EE 0%, #F1EDE2 58%, #EDE8DA 100%);
}
.hero__canvas{ position:absolute; inset:0; width:100%; height:100%; z-index:1; }

/* 封面轮播 */
.hero__slides{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.hero__slide{
  position:absolute; inset:0; opacity:0;
  transition:opacity 1.4s var(--e-inout);
  will-change:opacity,transform;
}
.hero__slide.is-on{ opacity:1; }
.hero__slide img{
  width:100%; height:100%; object-fit:cover; object-position:50% 42%;
  transform:scale(1.12);
  transition:transform 7s var(--e-out);
}
.hero__slide.is-on img{ transform:scale(1); }
/* 亮底罩层：压住右半图，托住左侧文字 */
.hero__slides::after{
  content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
  background:
    radial-gradient(120% 90% at 78% 18%, transparent 38%, rgba(247,244,237,.5) 100%),
    linear-gradient(to top, rgba(247,244,237,.96) 2%, rgba(247,244,237,.42) 26%, transparent 55%),
    linear-gradient(to right, rgba(247,244,237,.94) 0%, rgba(247,244,237,.55) 42%, transparent 72%);
}
/* 封面轮播控制条：左右切换 + 指示器 */
.hero__ctrl{
  position:absolute; z-index:6; right:var(--pad); bottom:clamp(150px,19vh,198px);
  display:flex; align-items:center; gap:12px;
}
.hero__dots{
  display:flex; gap:8px;
}
.hero__dot{
  width:26px; height:3px; border-radius:100px; padding:0;
  background:rgba(38,34,27,.22); position:relative; overflow:hidden;
  transition:background .4s,width .4s var(--e-out);
}
.hero__arrow{
  width:38px; height:38px; border-radius:50%;
  display:grid; place-items:center; cursor:pointer;
  color:var(--cream);
  background:rgba(255,255,255,.55);
  border:1px solid rgba(38,34,27,.14);
  backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  transition:background .35s,border-color .35s,color .35s,transform .35s var(--e-out);
}
.hero__arrow svg{ width:19px; height:19px; }
.hero__arrow:hover{
  background:var(--red); border-color:transparent; color:#fff;
  transform:scale(1.08);
}
.hero__dot.is-on{ background:rgba(38,34,27,.18); width:44px; }
.hero__dot.is-on::after{
  content:""; position:absolute; inset:0; border-radius:inherit;
  background:var(--red); transform-origin:left;
  animation:dotFill 5.6s linear forwards;
}
@keyframes dotFill{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
.hero__slide-cap{
  position:absolute; z-index:6; right:var(--pad); bottom:calc(clamp(150px,19vh,198px) + 54px);
  font-family:var(--mono); font-size:10px; letter-spacing:.24em;
  color:var(--cream-faint); text-align:right;
}
.hero__slide-cap b{ display:block; font-family:var(--serif); font-weight:700; font-size:15px; letter-spacing:.18em; color:var(--cream); margin-bottom:4px; }

.hero__scrim{
  position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(to top, var(--ink) 0%, rgba(247,244,237,.4) 10%, transparent 22%);
}
.hero__grain{
  position:absolute; inset:0; z-index:3; pointer-events:none; opacity:.05;
  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='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}

.hero__content{
  position:relative; z-index:5;
  padding:0 var(--pad) 0;
  max-width:var(--maxw); margin:0 auto; width:100%;
  padding-bottom:clamp(150px,19vh,198px);
}
.hero__kicker{
  display:flex; align-items:center; gap:14px; margin-bottom:26px;
  font-family:var(--mono); font-size:11px; letter-spacing:.3em; color:var(--brass);
}
.hero__kicker i{ width:34px; height:1px; background:var(--brass); display:block; }
.hero__kicker em{ font-style:normal; color:var(--cream-faint); letter-spacing:.2em; }

.hero__title{
  font-family:var(--serif); font-weight:900;
  font-size:clamp(44px,7.6vw,116px);
  line-height:1.06; letter-spacing:.03em;
  color:var(--cream);
  margin-bottom:26px;
}
.hero__line{ display:block; position:relative; }
.hero__line .ch{ display:inline-block; position:relative; }
.hero__line .ch::before{
  content:attr(data-c);
  position:absolute; inset:0;
  color:var(--red-hi);
  clip-path:inset(100% 0 0 0);
  transition:clip-path .5s var(--e-out);
}
.hero__line--accent{ color:var(--cream); }
.hero__line--accent .ch::before{ color:var(--red-hi); }
.hero__line .ch:hover::before{ clip-path:inset(0 0 0 0); }

/* 入场：字符上推（JS 拆字） */
.hero__line .ch{ transform:translateY(110%); opacity:0; }
.hero.is-in .hero__line .ch{ animation:chIn 1s var(--e-out) forwards; animation-delay:calc(var(--i) * .055s + .1s); }
@keyframes chIn{ to{ transform:translateY(0); opacity:1; } }

.hero__sub{
  font-family:var(--serif); font-size:clamp(14.5px,1.4vw,18px);
  letter-spacing:.14em; color:var(--cream-dim); line-height:1.95;
  max-width:30em; margin-bottom:18px;
}
.hero__motto{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  font-size:12.5px; letter-spacing:.22em; color:var(--cream-faint);
  margin-bottom:34px;
}
.hero__motto i{ color:var(--red-hi); font-style:normal; }
.hero__actions{ display:flex; flex-wrap:wrap; gap:14px; }

/* hero 元素初始态（JS 统一入场） */
#heroKicker,#heroSub,#heroMotto,#heroActions{ opacity:0; transform:translateY(24px); }
.hero.is-in #heroKicker,.hero.is-in #heroSub,.hero.is-in #heroMotto,.hero.is-in #heroActions{
  animation:fadeUp .95s var(--e-out) forwards;
}
.hero.is-in #heroKicker{ animation-delay:.05s }
.hero.is-in #heroSub{ animation-delay:.75s }
.hero.is-in #heroMotto{ animation-delay:.9s }
.hero.is-in #heroActions{ animation-delay:1.05s }
@keyframes fadeUp{ to{ opacity:1; transform:none; } }

.hero__bottom{
  position:absolute; left:0; right:0; bottom:0; z-index:5;
  display:flex; align-items:flex-end; justify-content:space-between;
  padding:0 var(--pad) 26px; pointer-events:none;
  max-width:var(--maxw); margin:0 auto;
}
.hero__scroll{ display:flex; flex-direction:column; align-items:center; gap:10px; }
.hero__scroll span{ font-family:var(--mono); font-size:9px; letter-spacing:.3em; color:var(--cream-faint); writing-mode:vertical-rl; }
.hero__scroll i{ width:1px; height:52px; background:linear-gradient(to bottom,var(--brass),transparent); display:block; }
.hero__hint{ font-size:11px; letter-spacing:.24em; color:var(--cream-faint); }
.hero__coords{ display:flex; gap:14px; font-family:var(--mono); font-size:10px; letter-spacing:.14em; color:rgba(38,34,27,.22); }
.hero__coords i{ font-style:normal; }
.hero__coords i::before{ content:"X "; opacity:.5; }
.hero__coords i:last-child::before{ content:"Y "; }

/* ---------- 9. 跑马灯（深色带） ---------- */
.marquee{
  position:relative; overflow:hidden; padding:30px 0;
  border-top:1px solid var(--band); border-bottom:1px solid var(--band);
  background:var(--band);
}
.marquee__track{ display:flex; width:max-content; will-change:transform; }
.marquee__track span{
  font-family:var(--serif); font-size:clamp(20px,2.6vw,34px);
  letter-spacing:.16em; color:rgba(244,240,231,.42); white-space:nowrap;
  padding-right:8px;
}
.marquee__track i{ font-style:normal; color:var(--red-hi); padding:0 18px; font-size:.7em; vertical-align:.18em; }

/* ---------- 10. 学校概况 ---------- */
.about__grid{
  display:grid; grid-template-columns:1.05fr .95fr;
  gap:clamp(40px,6vw,110px); align-items:start;
}
.about__text .title{ margin-bottom:30px; }
.about__motto{
  margin-top:38px; padding:26px 0 0;
  border-top:1px solid var(--line);
  display:flex; align-items:baseline; gap:18px; flex-wrap:wrap;
}
.about__motto-cn{
  font-family:var(--serif); font-weight:700; font-size:clamp(20px,2.2vw,27px);
  letter-spacing:.3em; color:var(--cream);
}
.about__motto-en{ font-family:var(--mono); font-size:10px; letter-spacing:.26em; color:var(--brass); }

.about__media{ position:relative; min-height:560px; }
.about__fig{ position:absolute; overflow:hidden; border-radius:var(--r-m); will-change:transform; }
.about__fig img{ width:100%; height:100%; object-fit:cover; }
.about__fig figcaption{
  position:absolute; left:14px; bottom:12px;
  font-family:var(--mono); font-size:10px; letter-spacing:.2em;
  color:rgba(255,255,255,.8); padding:5px 11px; border-radius:100px;
  background:rgba(15,14,12,.5); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
}
.about__fig--a{ left:0; top:0; width:78%; height:56%; }
.about__fig--b{ right:0; bottom:0; width:56%; height:46%; }
.about__fig--b::after{ content:""; position:absolute; inset:0; border:1px solid rgba(38,34,27,.14); border-radius:inherit; }
.about__badge{
  position:absolute; right:4%; top:8%; z-index:3;
  display:flex; align-items:center; gap:14px;
  background:rgba(255,255,255,.9); border:1px solid var(--line);
  border-radius:var(--r-m); padding:16px 22px;
  box-shadow:0 20px 44px -22px rgba(38,34,27,.28);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  will-change:transform;
}
.about__badge b{ font-family:var(--mono); font-size:34px; font-weight:600; color:var(--red); line-height:1; }
.about__badge b i{ font-style:normal; font-size:14px; margin-left:2px; }
.about__badge span{ font-size:11px; line-height:1.7; letter-spacing:.1em; color:var(--cream-dim); }

/* 时间轴 */
.timeline{ margin-top:clamp(60px,8vw,110px); }
.timeline__track{
  position:relative; display:grid; grid-template-columns:repeat(5,1fr);
  gap:24px; padding-top:44px;
}
.timeline__line{
  position:absolute; left:0; right:0; top:0; height:1px;
  background:rgba(38,34,27,.12);
}
.timeline__line i{
  display:block; height:100%; width:0; background:linear-gradient(90deg,var(--red),var(--brass));
}
.timeline__item{ position:relative; }
.timeline__item::before{
  content:""; position:absolute; left:0; top:-44px;
  width:9px; height:9px; border-radius:50%;
  background:var(--ink); border:1px solid var(--brass);
  transform:translateY(-4px);
  transition:background .4s,border-color .4s,transform .4s var(--e-spring);
}
.timeline__item.is-in::before{ background:var(--red-hi); border-color:var(--red-hi); transform:translateY(-4px) scale(1.35); }
.timeline__item b{
  display:block; font-family:var(--mono); font-weight:600; font-size:clamp(20px,2.4vw,30px);
  color:var(--cream); letter-spacing:.02em; margin-bottom:8px;
}
.timeline__item span{ display:block; font-size:12.5px; line-height:1.85; color:var(--cream-dim); }

/* ---------- 11. 数字齐工程 ---------- */
.figures{ background:var(--paper-2); overflow:hidden; }
.figures .wrap{ position:relative; z-index:2; }
.figures .title{ margin-bottom:clamp(44px,6vw,72px); }
.figs{
  display:grid; grid-template-columns:repeat(6,1fr);
  grid-auto-rows:clamp(126px,14vw,166px);
  border-top:1px solid var(--line); border-left:1px solid var(--line);
}
.fig{
  padding:34px 28px 30px;
  border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  position:relative; overflow:hidden;
  transition:background .5s;
}
/* 主数据 2×2 / 宽数据 2 格 */
.fig--big{ grid-column:span 2; grid-row:span 2; }
.fig--wide{ grid-column:span 2; }
.fig--big b{ font-size:clamp(50px,5.6vw,80px); }
.fig--big b i{ font-size:clamp(16px,1.6vw,20px); }
.fig--big > span{ font-size:13px; margin-top:20px; }
.fig::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:linear-gradient(90deg,var(--red),transparent);
  transform:scaleX(0); transform-origin:left; transition:transform .6s var(--e-out);
}
.fig:hover{ background:rgba(38,34,27,.03); }
.fig:hover::after{ transform:scaleX(1); }
.fig b{
  display:flex; align-items:baseline; gap:4px;
  font-family:var(--mono); font-weight:600; font-size:clamp(30px,3.4vw,46px);
  color:var(--cream); line-height:1; letter-spacing:-.01em;
  font-variant-numeric:tabular-nums;
}
.fig b i{ font-style:normal; font-size:14px; color:var(--brass-hi); letter-spacing:.05em; }
.fig > span{ display:block; margin-top:14px; font-size:12.5px; letter-spacing:.14em; color:var(--cream-faint); }
.figs__note{ margin-top:22px; font-size:11px; letter-spacing:.1em; color:rgba(38,34,27,.26); }

/* ---------- 12. 校园映像（堆叠卡片） ---------- */
.gallery{ position:relative; background:var(--ink); overflow:hidden; }
.gallery__head{ padding-top:clamp(72px,9vh,110px); margin-bottom:clamp(26px,4vh,46px); }
.gallery__head .title{ font-size:clamp(26px,3.4vw,44px); margin-bottom:0; }
.stack{ position:relative; }
.stack__stage{
  position:relative;
  height:clamp(470px,62vh,660px);
  margin-bottom:clamp(22px,3.2vh,34px);
  touch-action:pan-y;
}
.stack__card{
  position:absolute; left:50%; bottom:0;
  width:min(350px,72vw); aspect-ratio:4/5;
  margin-left:calc(min(350px,72vw) / -2);
  transform-origin:bottom center;
  transition:transform .75s var(--e-out),opacity .55s var(--e-out);
  cursor:pointer;
  will-change:transform;
}
/* 框内层：原始圆角框 */
.stack__frame{
  position:absolute; inset:0; z-index:1;
  border-radius:var(--r-l); overflow:hidden;
  background:var(--ink-3);
  box-shadow:0 22px 54px -16px rgba(15,14,12,.48);
}
.stack__frame img{
  width:100%; height:100%; object-fit:cover; display:block;
  -webkit-user-drag:none; user-select:none;
}
/* 顶卡 Ken Burns 缓动——静态图也有生命感 */
.stack__card.is-top .stack__frame img{ animation:kbFloat 10s var(--e-inout) infinite alternate; }
@keyframes kbFloat{
  from{ transform:scale(1.01) translate(0,0); }
  to{ transform:scale(1.09) translate(-1.2%,-1.6%); }
}
/* 探出层：同源放大图破框而出，比框大一圈，drop-shadow 制造立体冲突 */
.stack__pop{
  position:absolute; left:-3.5%; right:-3.5%; top:-5%; bottom:-5%; z-index:2;
  border-radius:var(--r-l); overflow:hidden;
  transform:scale(1.02);
  filter:drop-shadow(0 30px 48px rgba(15,14,12,.52));
  opacity:0; pointer-events:none;
  transition:opacity .7s var(--e-out),transform .9s var(--e-out);
}
.stack__pop img{ width:100%; height:100%; object-fit:cover; display:block; }
.stack__card.is-top .stack__pop{ opacity:1; transform:scale(1.05); }
/* 图上浮字：编号 + 名称 + 一句，压在图片底部 */
.stack__cap{
  position:absolute; left:0; right:0; bottom:0; z-index:3;
  padding:clamp(34px,3.6vw,48px) clamp(22px,2.8vw,34px) clamp(20px,2.4vw,30px);
  background:linear-gradient(to top,rgba(15,14,12,.92) 0%,rgba(15,14,12,.6) 44%,rgba(15,14,12,0) 100%);
  border-radius:0 0 var(--r-l) var(--r-l);
  opacity:0; transform:translateY(18px);
  transition:opacity .55s var(--e-out) .18s,transform .55s var(--e-out) .18s;
  pointer-events:none;
}
.stack__card.is-top .stack__cap{ opacity:1; transform:none; }
.stack__cap-no{
  display:block; font-family:var(--mono); font-size:10px; font-weight:600;
  letter-spacing:.26em; color:var(--brass); margin-bottom:9px;
}
.stack__cap-name{
  display:block; font-family:var(--serif); font-weight:700;
  font-size:clamp(21px,2.7vw,32px); letter-spacing:.1em;
  color:#fff; margin-bottom:9px;
}
.stack__cap-line{
  display:block; font-style:normal; font-size:12.5px; line-height:1.85;
  color:rgba(255,255,255,.82); max-width:22em;
}
.stack__meta{
  display:flex; align-items:center; gap:clamp(14px,2.4vw,26px);
  max-width:560px; margin:0 auto;
}
.stack__arrow{
  flex:none; width:44px; height:44px; border-radius:50%;
  display:grid; place-items:center; cursor:pointer;
  color:var(--cream);
  background:rgba(247,244,237,.08);
  border:1px solid rgba(247,244,237,.2);
  transition:background .35s,border-color .35s,color .35s,transform .35s var(--e-out);
}
.stack__arrow svg{ width:20px; height:20px; }
.stack__arrow:hover{ background:var(--red); border-color:transparent; color:#fff; transform:scale(1.08); }
.stack__count{
  flex:none; font-family:var(--mono); font-size:11px; letter-spacing:.18em;
  color:var(--brass);
}
.stack__count b{ font-size:14px; font-weight:600; color:var(--cream); }
.stack__count i{ font-style:normal; opacity:.5; }
.stack__prog{
  flex:1; height:2px; min-width:60px;
  background:rgba(247,244,237,.14); border-radius:2px; overflow:hidden;
}
.stack__prog i{ display:block; height:100%; width:9%; background:var(--brass); transition:width .6s var(--e-out); }
.stack__hint{
  margin-top:clamp(16px,2.4vh,24px); text-align:center;
  display:flex; align-items:center; justify-content:center; gap:10px;
  font-size:11px; letter-spacing:.22em; color:rgba(247,244,237,.42);
}
.stack__hint i{ width:30px; height:1px; background:rgba(247,244,237,.28); display:block; }

/* ---------- 13. 一湖九园 ---------- */
.landscape__lead{ margin-bottom:clamp(40px,5vw,64px); }
.spots{
  display:grid; grid-template-columns:.9fr 1.1fr;
  gap:clamp(32px,4.5vw,72px); align-items:center;
}
.spots__list{ position:relative; }
.spots__list::before{
  content:""; position:absolute; left:11px; top:26px; bottom:26px; width:1px;
  background:linear-gradient(to bottom,transparent,var(--line) 7%,var(--line) 93%,transparent);
}
.spots__item{
  display:flex; align-items:baseline; gap:16px;
  padding:19px 4px 19px 42px; border-bottom:1px solid var(--line);
  cursor:pointer; position:relative; overflow:hidden;
  transition:padding-left .45s var(--e-out);
}
.spots__node{
  position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:23px; height:23px; border-radius:50%;
  border:1px solid rgba(38,34,27,.18); background:var(--paper);
  display:grid; place-items:center;
  transition:border-color .4s,background .4s,box-shadow .4s;
}
.spots__node::after{
  content:""; width:7px; height:7px; border-radius:50%;
  background:rgba(38,34,27,.25);
  transition:background .4s,transform .4s var(--e-spring);
}
.spots__item:hover .spots__node{ border-color:rgba(200,90,72,.55); }
.spots__item.is-active .spots__node{ border-color:var(--red); background:#fff; box-shadow:0 0 0 5px rgba(181,52,42,.09); }
.spots__item.is-active .spots__node::after{ background:var(--red); transform:scale(1.3); }
.spots__item::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:2px;
  background:var(--red-hi); transform:scaleY(0); transform-origin:bottom;
  transition:transform .45s var(--e-out);
}
.spots__item.is-active{ padding-left:58px; }
.spots__item.is-active::before{ transform:scaleY(1); transform-origin:top; }
.spots__idx{ font-family:var(--mono); font-size:10px; letter-spacing:.14em; color:var(--cream-faint); transition:color .35s; }
.spots__name{
  font-family:var(--serif); font-weight:700; font-size:clamp(19px,2vw,26px);
  letter-spacing:.14em; color:var(--cream-dim);
  transition:color .35s,transform .45s var(--e-out);
}
.spots__en{ margin-left:auto; font-family:var(--mono); font-size:9px; letter-spacing:.2em; color:rgba(38,34,27,.2); }
.spots__item.is-active .spots__name{ color:var(--cream); }
.spots__item.is-active .spots__idx{ color:var(--red-hi); }
.spots__item:hover .spots__name{ transform:translateX(4px); }

.spots__preview{
  position:relative; border-radius:var(--r-l); overflow:hidden;
  aspect-ratio:16/11; background:var(--ink-3);
  box-shadow:0 30px 70px -30px rgba(38,34,27,.3);
}
.spots__preview img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transform:scale(1.08);
  transition:opacity .8s var(--e-out),transform 1.2s var(--e-out);
}
.spots__preview img.is-on{ opacity:1; transform:scale(1); }
.spots__preview::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to top,rgba(15,14,12,.88) 0%,rgba(15,14,12,.25) 40%,transparent 65%);
}
.spots__cap{ position:absolute; left:0; right:0; bottom:0; padding:clamp(22px,3vw,36px); z-index:2; }
.spots__cap b{
  display:block; font-family:var(--serif); font-weight:700;
  font-size:clamp(22px,2.4vw,32px); letter-spacing:.16em; color:#fff;
  margin-bottom:10px;
}
.spots__cap p{ font-size:13px; line-height:1.95; color:rgba(255,255,255,.78); max-width:34em; }
.spots__frame{
  position:absolute; inset:14px; z-index:3; pointer-events:none;
  border:1px solid rgba(255,255,255,.22); border-radius:calc(var(--r-l) - 6px);
}
.spots__no{
  position:absolute; top:22px; right:26px; z-index:4;
  font-family:var(--mono); font-size:10px; letter-spacing:.2em;
  color:rgba(255,255,255,.85);
  background:rgba(15,14,12,.32); border:1px solid rgba(255,255,255,.16);
  padding:6px 13px; border-radius:100px;
  backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  transition:opacity .5s var(--e-out);
}

/* ---------- 14. 办学特色 ---------- */
.cards{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(16px,2vw,26px); }
.card{
  position:relative; padding:clamp(30px,3.4vw,46px);
  background:var(--paper);
  border:1px solid var(--line); border-radius:var(--r-l);
  box-shadow:0 2px 0 rgba(38,34,27,.02), 0 22px 44px -26px rgba(38,34,27,.22);
  overflow:hidden; isolation:isolate;
  transform-style:preserve-3d;
  transition:border-color .5s,background .5s,box-shadow .5s,transform .5s var(--e-out);
  will-change:transform;
}
.card:hover{ box-shadow:0 2px 0 rgba(38,34,27,.02), 0 30px 54px -26px rgba(38,34,27,.3); }
.card::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(200,90,72,.13),transparent 62%);
  opacity:0; transition:opacity .5s;
}
.card:hover{ border-color:rgba(200,90,72,.34); }
.card:hover::before{ opacity:1; }
.card__no{
  position:absolute; right:clamp(20px,2.4vw,32px); top:clamp(18px,2vw,26px);
  font-family:var(--mono); font-size:11px; letter-spacing:.2em; color:var(--cream-faint);
}
.card__icon{
  width:52px; height:52px; margin-bottom:26px; color:var(--brass-hi);
  border:1px solid rgba(185,138,68,.3); border-radius:var(--r-m);
  display:grid; place-items:center;
  transition:color .45s,border-color .45s,transform .55s var(--e-spring);
}
.card__icon svg{ width:26px; height:26px; }
.card:hover .card__icon{ color:var(--red-hi); border-color:rgba(200,90,72,.4); transform:translateZ(24px) rotate(-4deg); }
.card h3{
  font-family:var(--serif); font-weight:700; font-size:clamp(19px,1.9vw,25px);
  letter-spacing:.06em; line-height:1.5; color:var(--cream); margin-bottom:16px;
}
.card p{ font-size:13.5px; line-height:2; color:var(--cream-dim); margin-bottom:22px; }
.card__more{
  display:inline-flex; align-items:center; gap:8px;
  font-size:11.5px; letter-spacing:.18em; color:var(--brass);
  text-decoration:none; cursor:pointer;
  transition:color .4s;
}
.card__more:hover{ color:var(--red-hi); }
.card__more i{ font-style:normal; transition:transform .4s var(--e-out); }
.card:hover .card__more i{ transform:translateX(5px); }
.card{ cursor:pointer; }

/* ---------- 15. 校园设施（6 列编辑网格） ---------- */
.facility{ background:var(--ink-2); }
.fac{
  display:grid; grid-template-columns:repeat(6,1fr);
  grid-auto-rows:clamp(190px,23vw,240px); gap:clamp(12px,1.4vw,20px);
}
.fac__item{
  position:relative; overflow:hidden; border-radius:var(--r-m);
  background:var(--ink-3);
  transition:transform .6s var(--e-out),box-shadow .6s var(--e-out);
  will-change:transform;
}
.fac__item:hover{
  transform:translateY(-5px);
  box-shadow:0 26px 50px -22px rgba(38,34,27,.34);
}
.fac__item img{
  width:100%; height:100%; object-fit:cover;
  transition:transform 1.2s var(--e-out),filter .8s;
  filter:saturate(.96) brightness(1.02);
  -webkit-user-drag:none; user-select:none;
  will-change:transform;
}
.fac__item:hover img{ transform:scale(1.06); filter:saturate(1.05) brightness(1.06); }
.fac__item::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to top,rgba(15,14,12,.9) 0%,rgba(15,14,12,.2) 46%,transparent 70%);
  transition:opacity .6s;
}
.fac__cap{ position:absolute; left:0; right:0; bottom:0; padding:22px; z-index:2; }
.fac__cap b{
  display:block; font-family:var(--serif); font-weight:700; font-size:clamp(17px,1.7vw,22px);
  letter-spacing:.12em; color:#fff; margin-bottom:5px;
  transition:color .4s;
}
.fac__item:hover .fac__cap b{ color:#F3D9A0; }
.fac__cap span{ display:block; font-size:11.5px; letter-spacing:.12em; color:rgba(255,255,255,.62); }
/* 主卡：图书馆 2×2 */
.fac__item--tall{ grid-column:span 2; grid-row:span 2; }
.fac__item--tall .fac__cap{ padding:clamp(24px,2.6vw,36px); }
.fac__item--tall .fac__cap b{ font-size:clamp(22px,2.4vw,30px); }
.fac__item--tall .fac__cap span{ font-size:12.5px; }
/* 宽卡：明德广场 3 格 */
.fac__item--wide{ grid-column:span 3; }
.fac__item--wide .fac__cap b{ font-size:clamp(19px,2vw,25px); }
/* 小卡：三友廊 1 格（默认） */

/* ---------- 15.6 访客分流（四类受众入口） ---------- */
.audience{ background:var(--paper); padding:clamp(60px,8.5vh,104px) 0 clamp(52px,7vh,92px); }
.audience .label--center{ justify-content:center; }
.lead--center{ text-align:center; max-width:44em; margin:18px auto 0; }
.audience__grid{
  margin-top:clamp(34px,5vw,56px);
  display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,1.8vw,24px);
}
.aud{
  --aud-accent:var(--red);
  position:relative; display:flex; flex-direction:column;
  padding:clamp(24px,2.6vw,34px);
  background:#fff; border:1px solid var(--line); border-radius:var(--r-l);
  text-decoration:none; color:inherit; overflow:hidden;
  transition:transform .5s var(--e-out),box-shadow .5s,border-color .5s;
}
.aud::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:var(--aud-accent);
  transform:scaleX(0); transform-origin:left;
  transition:transform .5s var(--e-out);
}
.aud:hover{ transform:translateY(-6px); box-shadow:0 26px 50px -22px rgba(38,34,27,.22); border-color:transparent; }
.aud:hover::before{ transform:scaleX(1); }
.aud--parents{ --aud-accent:var(--slate); }
.aud--freshmen{ --aud-accent:var(--brass); }
.aud--visitors{ --aud-accent:var(--cream); }
.aud__icon{
  width:52px; height:52px; margin-bottom:20px;
  display:grid; place-items:center; border-radius:var(--r-m);
  color:var(--aud-accent);
  background:rgba(38,34,27,.045);
  border:1px solid var(--line);
  transition:transform .5s var(--e-spring),color .4s,border-color .4s;
}
.aud:hover .aud__icon{ transform:rotate(-4deg) scale(1.06); color:var(--red-hi); border-color:rgba(200,90,72,.4); }
.aud__icon svg{ width:26px; height:26px; }
.aud__name{ font-family:var(--serif); font-weight:700; font-size:clamp(19px,1.9vw,23px); letter-spacing:.08em; color:var(--cream); }
.aud__en{ display:block; font-family:var(--mono); font-size:9px; letter-spacing:.24em; color:var(--cream-faint); margin:6px 0 12px; }
.aud__desc{ font-size:12.5px; line-height:1.9; color:var(--cream-dim); margin-bottom:14px; }
.aud__tags{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:16px; }
.aud__tags i{ font-style:normal; font-size:10px; letter-spacing:.06em; color:var(--cream-dim); background:var(--ink-2); padding:5px 9px; border-radius:100px; }
.aud__go{
  margin-top:auto; display:inline-flex; align-items:center; gap:7px;
  font-size:11px; letter-spacing:.14em; color:var(--aud-accent);
}
.aud__go svg{ width:15px; height:15px; transition:transform .4s var(--e-out); }
.aud:hover .aud__go svg{ transform:translateX(4px); }

/* ---------- 15.7 访客指南（四受众专属板块） ---------- */
.guide--applicants{ --guide-accent:var(--red-hi); }
.guide--parents{ --guide-accent:var(--slate); background:var(--paper-2); }
.guide--freshmen{ --guide-accent:var(--brass-hi); }
/* 访客区在深色带上，改用更亮的沙金提升对比，并与新生区黄铜区分 */
.guide--visitors{ --guide-accent:#E5C166; background:var(--band); }
.guide__grid{
  margin-top:clamp(30px,4vw,48px);
  display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,1.8vw,22px);
}
.guide__card{
  position:relative; padding:clamp(24px,2.6vw,34px);
  background:#fff; border:1px solid var(--line); border-radius:var(--r-l);
  transition:transform .5s var(--e-out),box-shadow .5s,border-color .5s;
}
.guide__card:hover{ transform:translateY(-5px); box-shadow:0 24px 46px -22px rgba(38,34,27,.24); border-color:rgba(200,90,72,.3); }
.guide__ico{
  width:46px; height:46px; margin-bottom:18px;
  display:grid; place-items:center; border-radius:var(--r-m);
  color:var(--guide-accent);
  background:rgba(38,34,27,.045);
  border:1px solid var(--line);
}
.guide__ico svg{ width:23px; height:23px; }
.guide__h{
  font-family:var(--serif); font-weight:700;
  font-size:clamp(17px,1.8vw,20px); letter-spacing:.1em;
  color:var(--cream); margin-bottom:10px;
}
.guide__p{ font-size:13px; line-height:2; color:var(--cream-dim); }
.guide__fact{
  display:inline-block; margin-top:16px;
  font-family:var(--mono); font-size:10px; letter-spacing:.14em;
  color:var(--guide-accent);
  border:1px solid var(--line); border-radius:100px; padding:6px 12px;
}
.guide__cta{ margin-top:clamp(28px,3.6vw,44px); display:flex; justify-content:center; }
/* 深色带（致访客）内的反转配色 */
.guide--visitors .title{ color:var(--on-dark); }
.guide--visitors .title .hl{ color:var(--brass-hi); }
.guide--visitors .guide__card{
  background:rgba(247,244,237,.06);
  border-color:rgba(247,244,237,.14);
  backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
}
.guide--visitors .guide__card:hover{ border-color:rgba(200,150,60,.45); box-shadow:0 24px 46px -22px rgba(0,0,0,.5); }
.guide--visitors .guide__ico{ color:var(--brass-hi); background:rgba(168,123,46,.12); border-color:rgba(200,150,60,.3); }
.guide--visitors .guide__h{ color:var(--on-dark); }
.guide--visitors .guide__p{ color:rgba(247,244,237,.72); }
.guide--visitors .guide__fact{ color:var(--brass-hi); border-color:rgba(200,150,60,.35); }

/* ---------- 15.5 明信片 ---------- */
.postcard{ background:var(--paper); overflow:hidden; }
.postcard__grid{
  display:grid; grid-template-columns:.92fr 1.08fr;
  gap:clamp(36px,5vw,84px); align-items:start;
}
.pc-picks{ display:flex; gap:12px; margin:30px 0 26px; flex-wrap:wrap; }
.pc-pick{
  position:relative; width:88px; padding:0; border-radius:var(--r-m);
  overflow:hidden; border:2px solid transparent;
  transition:border-color .35s,transform .35s var(--e-out);
}
.pc-pick img{ width:100%; aspect-ratio:3/4; object-fit:cover; }
.pc-pick span{
  position:absolute; left:0; right:0; bottom:0; padding:14px 8px 6px;
  font-size:10px; letter-spacing:.14em; color:#fff; text-align:center;
  background:linear-gradient(to top,rgba(15,14,12,.72),transparent);
}
.pc-pick:hover{ transform:translateY(-3px); }
.pc-pick.is-on{ border-color:var(--red); }
.pc-field{ display:flex; gap:10px; flex-wrap:wrap; }
.pc-field input{
  flex:1; min-width:180px;
  font:inherit; font-size:14px; letter-spacing:.08em;
  padding:15px 20px; border-radius:100px;
  border:1px solid var(--line); background:var(--paper);
  color:var(--cream); outline:none;
  transition:border-color .35s,box-shadow .35s;
}
.pc-field input:focus{ border-color:var(--red); box-shadow:0 0 0 4px rgba(181,52,42,.12); }
.pc-field input::placeholder{ color:var(--cream-faint); }
.pc-hint{ margin-top:16px; font-size:11.5px; letter-spacing:.12em; color:var(--cream-faint); }
.pc-out{ position:relative; }
.pc-canvas-wrap{
  position:relative; border-radius:var(--r-l); overflow:hidden;
  background:var(--ink-2); border:1px solid var(--line);
  box-shadow:0 30px 64px -30px rgba(38,34,27,.32);
}
.pc-canvas-wrap canvas{ display:block; width:100%; height:auto; }
.pc-empty{
  display:grid; place-items:center; min-height:420px; text-align:center;
  color:var(--cream-faint); font-size:13px; letter-spacing:.16em; line-height:2;
  padding:40px;
}
.pc-empty b{ display:block; font-family:var(--serif); font-size:22px; letter-spacing:.2em; color:var(--cream-dim); margin-bottom:10px; }
.pc-actions{ display:flex; gap:12px; margin-top:18px; flex-wrap:wrap; }

/* ---------- 16. 报考咨询（齐工程红主视觉区） ---------- */
.apply{ position:relative; overflow:hidden; padding:clamp(96px,12vw,168px) 0; color:var(--on-dark); }
.apply__bg{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transform:scale(1.06); will-change:transform; opacity:.32;
}
.apply__scrim{
  position:absolute; inset:0;
  background:
    radial-gradient(80% 120% at 20% 20%,rgba(181,52,42,.5),transparent 60%),
    linear-gradient(120deg,rgba(181,52,42,.95) 28%,rgba(142,40,32,.92) 100%);
}
.apply__inner{ position:relative; z-index:2; }
.apply__title{
  font-family:var(--serif); font-weight:900;
  font-size:clamp(42px,7.4vw,104px); line-height:1.08; letter-spacing:.04em;
  margin:10px 0 26px;
}
.apply__title .hl{ color:var(--brass-hi); }
.apply__lead{ font-size:clamp(14.5px,1.2vw,16.5px); line-height:2; color:rgba(244,240,231,.78); max-width:36em; margin-bottom:44px; }
.apply__actions{ display:flex; flex-wrap:wrap; gap:14px; margin-bottom:clamp(52px,7vw,86px); }
.apply__info{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.apply__info div{ padding-top:20px; border-top:1px solid rgba(244,240,231,.24); }
.apply__info dt{
  font-family:var(--mono); font-size:10px; letter-spacing:.26em;
  color:var(--brass-hi); margin-bottom:10px;
}
.apply__info dd{ font-size:13px; line-height:1.95; color:rgba(244,240,231,.72); }

/* ---------- 17. 页脚（深色带） ---------- */
.footer{ background:var(--band); border-top:1px solid var(--band); padding:clamp(52px,6vw,80px) 0 40px; }
.footer__top{
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:36px; flex-wrap:wrap; padding-bottom:44px; border-bottom:1px solid rgba(244,240,231,.14);
}
.footer__brand{ display:flex; gap:16px; align-items:center; }
.footer__mark{ width:42px; height:42px; color:var(--red-hi); flex:none; }
.footer__mark svg{ width:100%; height:100%; }
.footer__name{ font-family:var(--serif); font-weight:700; font-size:18px; letter-spacing:.2em; color:var(--on-dark); }
.footer__en{ font-family:var(--mono); font-size:9.5px; letter-spacing:.22em; color:var(--on-dark-faint); margin-top:5px; }
.footer__nav{ display:flex; gap:26px; flex-wrap:wrap; }
.footer__nav a{
  position:relative; font-size:12.5px; letter-spacing:.14em; color:var(--on-dark-dim);
  padding-bottom:3px; transition:color .3s;
}
.footer__nav a::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--red-hi); transform:scaleX(0); transform-origin:right;
  transition:transform .45s var(--e-out);
}
.footer__nav a:hover{ color:var(--on-dark); }
.footer__nav a:hover::after{ transform:scaleX(1); transform-origin:left; }
.footer__bottom{ padding-top:26px; display:flex; flex-direction:column; gap:8px; }
.footer__bottom p:first-child{ font-family:var(--serif); font-size:13.5px; letter-spacing:.16em; color:var(--on-dark-dim); }

/* ---------- 18.1 页脚：common.js 实际注入的类名 ---------- */
.footer__brand > div > b{
  display:block; font-family:var(--serif); font-weight:700; font-size:18px;
  letter-spacing:.2em; color:var(--on-dark); line-height:1.3;
}
.footer__brand > div > span{
  display:block; font-family:var(--mono); font-size:9.5px; letter-spacing:.22em;
  color:var(--on-dark-faint); margin-top:5px;
}
.footer__cols{
  display:flex; gap:clamp(30px,5vw,72px); flex-wrap:wrap; align-items:flex-start;
}
.footer__cols > div{ display:flex; flex-direction:column; gap:9px; min-width:96px; }
.footer__cols > div > b{
  font-family:var(--mono); font-size:10.5px; font-weight:700; letter-spacing:.2em;
  color:#E58A6E; margin-bottom:3px; text-transform:uppercase;
}
.footer__cols a,
.footer__cols span{
  position:relative; display:inline-block; width:fit-content;
  font-size:12.5px; letter-spacing:.12em; line-height:1.7;
  color:var(--on-dark-dim); text-decoration:none;
  padding-bottom:2px; transition:color .3s;
}
.footer__cols a::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--red-hi); transform:scaleX(0); transform-origin:right;
  transition:transform .45s var(--e-out);
}
.footer__cols a:hover{ color:var(--on-dark); }
.footer__cols a:hover::after{ transform:scaleX(1); transform-origin:left; }
.footer__bottom p{ font-size:12.5px; letter-spacing:.1em; color:var(--on-dark-dim); line-height:1.8; }
.footer__note{
  font-size:11.5px !important; line-height:1.85; letter-spacing:.04em;
  color:rgba(244,240,231,.52) !important;
  max-width:76em; margin-top:6px; padding-top:14px;
  border-top:1px solid rgba(244,240,231,.1);
}
.footer__copy{ font-size:11px; letter-spacing:.06em; color:rgba(244,240,231,.4); }
.footer__end{
  margin-top:clamp(34px,4.6vw,52px); padding-top:26px;
  border-top:1px solid rgba(247,244,237,.1);
  display:flex; align-items:center; justify-content:center; gap:14px;
  font-family:var(--mono); font-size:10px; letter-spacing:.3em;
  color:rgba(247,244,237,.4);
}
.footer__end i{ width:44px; height:1px; background:rgba(247,244,237,.22); display:block; }

/* ---------- 18. 响应式 ---------- */
@media (max-width:1180px){
  .nav__links a{ padding:9px 12px; font-size:12.5px; }
  .nav__cta{ display:none; }
  .audience__grid{ grid-template-columns:repeat(2,1fr); }
  .guide__grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:1023px){
  :root{ --nav-h:66px; }
  .nav__links{ display:none; }
  .nav__burger{ display:block; }
  .nav__names i{ display:none; }

  .hero__scrim{ background:linear-gradient(to top,var(--ink) 0%,rgba(247,244,237,.55) 8%,transparent 20%); }
  .hero__slides::after{
    background:
      linear-gradient(to top, rgba(247,244,237,.97) 3%, rgba(247,244,237,.55) 34%, transparent 62%);
  }
  .hero__ctrl{ bottom:auto; top:calc(var(--nav-h) + 18px); right:var(--pad); }
  .hero__slide-cap{ display:none; }
  .hero__coords{ display:none; }

  .about__grid{ grid-template-columns:1fr; }
  .about__media{ min-height:0; margin-top:20px; display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .about__fig{ position:relative; width:auto; height:auto; aspect-ratio:4/3; }
  .about__fig--b{ aspect-ratio:3/4; }
  .about__badge{ position:relative; right:auto; top:auto; grid-column:1 / -1; justify-self:start; margin-top:6px; }

  .timeline__track{ grid-template-columns:repeat(2,1fr); row-gap:44px; }
  .timeline__line{ display:none; }
  .timeline__item::before{ top:-34px; }

  .figs{ grid-template-columns:repeat(2,1fr); }
  .fig--big{ grid-column:span 2; grid-row:span 1; }
  .fig--wide{ grid-column:span 2; }

  .stack__stage{ height:clamp(340px,50vh,470px); }
  .stack__pop{ left:-2.5%; right:-2.5%; top:-4%; bottom:-4%; }
  .stack__cap{ padding:28px 18px 16px; }
  .stack__cap-name{ font-size:clamp(18px,5vw,24px); }
  .stack__prog{ display:none; }

  .spots{ grid-template-columns:1fr; }
  .spots__preview{ order:-1; aspect-ratio:16/10; }

  .postcard__grid{ grid-template-columns:1fr; }
  /* 移动端：保持「先选图 → 再生成 → 看结果」的操作顺序 */
  .pc-out{ order:0; }

  .cards{ grid-template-columns:1fr; }
  .fac{ grid-template-columns:repeat(2,1fr); grid-auto-rows:210px; }
  .fac__item--tall{ grid-column:span 2; grid-row:span 1; }
  .fac__item--wide{ grid-column:span 2; }
  .fac__item--mini{ grid-column:span 1; }
  .apply__info{ grid-template-columns:1fr; gap:22px; }
}
@media (max-width:600px){
  .hero__bottom{ justify-content:center; }
  .hero__scroll{ display:none; }
  .figs{ grid-template-columns:repeat(2,1fr); }
  .audience__grid{ grid-template-columns:1fr; }
  .guide__grid{ grid-template-columns:1fr; }
  .fig--big,.fig--wide{ grid-column:span 2; }
  .fig{ padding:24px 20px 22px; }
  .fac{ grid-template-columns:1fr; grid-auto-rows:230px; }
  .fac__item--tall,.fac__item--wide,.fac__item--mini{ grid-column:span 1; }
  .timeline__track{ grid-template-columns:1fr; }
  .footer__nav{ gap:18px; }
}

/* ---------- 19. 动效降级 ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  .hero__line .ch{ transform:none; opacity:1; }
  #heroKicker,#heroSub,#heroMotto,#heroActions{ opacity:1; transform:none; }
  .hero__canvas{ display:none; }
  .liquid-bg .blob{ animation:none; }
}

/* ═══════════ 16. 受众子页（四视角独立页） ═══════════ */

/* ---------- 16.1 子页顶栏 ---------- */
.pnav{
  position:fixed; top:0; left:0; right:0; z-index:900;
  display:flex; align-items:center; justify-content:space-between; gap:18px;
  padding:12px var(--pad);
  background:rgba(247,244,237,.88); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.pnav--dark{ background:rgba(34,30,24,.86); border-bottom-color:rgba(244,240,231,.12); }
.pnav--dark .pnav__names b{ color:var(--on-dark); }
.pnav--dark .pnav__names i{ color:var(--on-dark-faint); }
.pnav__brand{ display:flex; align-items:center; gap:11px; text-decoration:none; }
.pnav__mark{ width:34px; height:34px; color:var(--red); flex:none; }
.pnav__mark svg{ width:100%; height:100%; display:block; }
.pnav__names b{ display:block; font-family:var(--serif); font-weight:700; font-size:15px; color:var(--cream); line-height:1.2; }
.pnav__names i{ display:block; font-style:normal; font-family:var(--mono); font-size:8.5px; letter-spacing:.14em; color:var(--cream-faint); margin-top:2px; }
.pnav__sw{ display:flex; gap:4px; background:rgba(38,34,27,.06); padding:4px; border-radius:999px; }
.pnav--dark .pnav__sw{ background:rgba(244,240,231,.1); }
.pnav__sw a{
  font-size:13px; font-weight:600; padding:7px 15px; border-radius:999px;
  color:var(--cream-dim); text-decoration:none; white-space:nowrap;
  transition:background .3s var(--e-out), color .3s var(--e-out);
}
.pnav--dark .pnav__sw a{ color:var(--on-dark-dim); }
.pnav__sw a:hover{ color:var(--cream); }
.pnav--dark .pnav__sw a:hover{ color:var(--on-dark); }
.pnav__sw a.is-cur{ background:var(--band); color:var(--ink); }
.pnav--red .pnav__sw a.is-cur{ background:var(--red); color:#fff; }
.pnav--slate .pnav__sw a.is-cur{ background:var(--slate); color:#fff; }
.pnav--brass .pnav__sw a.is-cur{ background:var(--brass); color:#fff; }
.pnav--dark .pnav__sw a.is-cur{ background:var(--on-dark); color:var(--band); }

/* ---------- 16.2 子页头部 ---------- */
.phero{
  position:relative; padding:calc(78px + clamp(56px,7vw,96px)) 0 clamp(56px,6vw,84px);
  background:var(--paper); overflow:hidden;
}
.phero::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--line);
}
.phero__deco{
  position:absolute; right:-140px; top:-140px; width:420px; height:420px; border-radius:50%;
  background:radial-gradient(circle, color-mix(in srgb, var(--ph-accent) 16%, transparent), transparent 68%);
  pointer-events:none;
}
.phero__kicker{ display:flex; align-items:center; gap:12px; margin-bottom:22px; }
.phero__no{
  font-family:var(--mono); font-weight:700; font-size:12px; letter-spacing:.1em;
  color:#fff; background:var(--ph-accent); padding:5px 11px; border-radius:6px;
}
.phero__who{ font-family:var(--mono); font-size:12px; letter-spacing:.24em; color:var(--ph-accent); font-weight:600; }
.phero__title{
  font-family:var(--serif); font-weight:900; color:var(--cream);
  font-size:clamp(34px,5.6vw,68px); line-height:1.14; letter-spacing:.01em; max-width:20em;
}
.phero__title .hl{ color:var(--ph-accent); }
.phero__sub{
  margin-top:22px; max-width:44em; font-size:clamp(15px,1.6vw,17.5px); line-height:1.85; color:var(--cream-dim);
}
.phero__cta{ margin-top:34px; display:flex; flex-wrap:wrap; gap:14px; }
.phero__nums{
  margin-top:clamp(40px,5vw,64px);
  display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px);
}
.pnum{
  background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r-m);
  padding:20px 20px 18px; position:relative; overflow:hidden;
}
.pnum::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--ph-accent); }
.pnum b{ display:block; font-family:var(--serif); font-weight:900; font-size:clamp(26px,3vw,38px); color:var(--cream); line-height:1; }
.pnum b i{ font-style:normal; font-size:.5em; font-weight:700; color:var(--ph-accent); margin-left:2px; }
.pnum span{ display:block; margin-top:9px; font-size:13px; color:var(--cream-dim); letter-spacing:.04em; }
/* 深色头部（访客） */
.phero--dark{ background:var(--band); }
.phero--dark::after{ background:rgba(244,240,231,.14); }
.phero--dark .phero__title{ color:var(--on-dark); }
.phero--dark .phero__sub{ color:var(--on-dark-dim); }
.phero--dark .pnum{ background:rgba(244,240,231,.05); border-color:rgba(244,240,231,.14); }
.phero--dark .pnum b{ color:var(--on-dark); }
.phero--dark .pnum span{ color:var(--on-dark-dim); }
.phero--dark .label span{ color:var(--on-dark-dim); }
.phero--dark .label i{ color:var(--on-dark-faint); }
.phero--dark .btn--ghost{ color:var(--on-dark); border-color:rgba(244,240,231,.3); }
.phero--dark .btn--ghost .btn__fill{ background:var(--on-dark); }
.phero--dark .btn--ghost:hover{ color:var(--band); }

/* 子页通用小节 */
.psec{ padding:clamp(64px,8vw,120px) 0; position:relative; }
.psec--tint{ background:var(--paper-2); }
.psec--dark{ background:var(--band); }
.psec__head{ max-width:56em; margin-bottom:clamp(34px,4vw,52px); }
.psec__title{ font-family:var(--serif); font-weight:900; font-size:clamp(26px,3.6vw,42px); color:var(--cream); line-height:1.22; margin-top:16px; }
.psec__title .hl{ color:var(--ph-accent); }
.psec--dark .psec__title{ color:var(--on-dark); }
.psec--dark .label span{ color:var(--on-dark-dim); }
.psec--dark .label i{ color:var(--on-dark-faint); }
.psec__lead{ margin-top:16px; font-size:15.5px; line-height:1.85; color:var(--cream-dim); max-width:42em; }
.psec--dark .psec__lead{ color:var(--on-dark-dim); }

/* ---------- 16.3 考生页：学科矩阵 + FT 步骤 + 导师制 ---------- */
.matrix{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(14px,1.8vw,22px); }
.mx{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-l);
  padding:clamp(24px,3vw,36px); position:relative; overflow:hidden;
  transition:transform .5s var(--e-out), box-shadow .5s var(--e-out), border-color .5s;
}
.mx:hover{ transform:translateY(-5px); box-shadow:0 24px 48px -22px rgba(34,30,24,.22); border-color:color-mix(in srgb, var(--red) 35%, var(--line)); }
.mx__no{ font-family:var(--mono); font-size:11px; font-weight:700; letter-spacing:.16em; color:var(--red); }
.mx__h{ font-family:var(--serif); font-weight:700; font-size:clamp(19px,2.2vw,24px); color:var(--cream); margin-top:12px; }
.mx__h i{ font-style:normal; font-family:var(--mono); font-size:11px; letter-spacing:.14em; color:var(--cream-faint); margin-left:10px; }
.mx__p{ margin-top:12px; font-size:14.5px; line-height:1.85; color:var(--cream-dim); }
.mx__tags{ margin-top:16px; display:flex; flex-wrap:wrap; gap:8px; }
.mx__tags i{ font-style:normal; font-size:12px; color:var(--red); background:rgba(181,52,42,.07); border:1px solid rgba(181,52,42,.18); padding:4px 11px; border-radius:999px; }

.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); counter-reset:step; }
.stp{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-m);
  padding:26px 22px 24px; position:relative;
}
.stp::before{
  counter-increment:step; content:"0" counter(step);
  font-family:var(--mono); font-weight:700; font-size:12px; letter-spacing:.1em; color:#fff;
  background:var(--red); width:34px; height:34px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; margin-bottom:16px;
}
.stp__h{ font-family:var(--serif); font-weight:700; font-size:18px; color:var(--cream); }
.stp__h i{ font-style:normal; font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; color:var(--cream-faint); margin-left:8px; }
.stp__p{ margin-top:10px; font-size:13.5px; line-height:1.8; color:var(--cream-dim); }

.mentor{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); }
.mtr{ border-top:2px solid var(--red); padding-top:20px; }
.mtr b{ font-family:var(--serif); font-weight:900; font-size:15px; color:var(--red); letter-spacing:.04em; }
.mtr p{ margin-top:10px; font-size:13.5px; line-height:1.8; color:var(--cream-dim); }

/* ---------- 16.4 家长页：问答 + 年份 + 事实 ---------- */
.qa{ display:grid; gap:clamp(12px,1.4vw,18px); }
.qa__item{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-l);
  padding:clamp(22px,2.6vw,32px) clamp(22px,2.8vw,36px);
  display:grid; grid-template-columns:auto 1fr; gap:clamp(18px,2.4vw,30px); align-items:start;
  transition:border-color .4s, box-shadow .4s var(--e-out);
}
.qa__item:hover{ border-color:color-mix(in srgb, var(--slate) 40%, var(--line)); box-shadow:0 18px 40px -24px rgba(34,30,24,.18); }
.qa__q{
  font-family:var(--serif); font-weight:900; font-size:clamp(20px,2.4vw,26px); color:var(--slate);
  width:1.7em; height:1.7em; display:flex; align-items:center; justify-content:center;
  background:rgba(62,124,166,.08); border-radius:12px; flex:none;
}
.qa__h{ font-family:var(--serif); font-weight:700; font-size:clamp(17px,2vw,20px); color:var(--cream); line-height:1.4; }
.qa__p{ margin-top:10px; font-size:14.5px; line-height:1.9; color:var(--cream-dim); }
.qa__p b{ color:var(--slate); font-weight:700; }

.years{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); }
.yr{ background:var(--paper); border:1px solid var(--line); border-radius:var(--r-m); padding:24px 22px; position:relative; }
.yr::before{ content:""; position:absolute; left:22px; right:22px; top:0; height:3px; background:var(--slate); border-radius:0 0 3px 3px; }
.yr b{ font-family:var(--mono); font-weight:700; font-size:clamp(22px,2.6vw,30px); color:var(--slate); letter-spacing:.02em; }
.yr p{ margin-top:10px; font-size:13.5px; line-height:1.8; color:var(--cream-dim); }

.facts{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); }
.fct{ background:var(--paper-2); border-radius:var(--r-m); padding:22px 20px; }
.fct b{ display:block; font-family:var(--serif); font-weight:900; font-size:clamp(22px,2.6vw,30px); color:var(--cream); line-height:1.1; }
.fct b i{ font-style:normal; font-size:.52em; color:var(--slate); margin-left:2px; }
.fct span{ display:block; margin-top:9px; font-size:12.5px; color:var(--cream-dim); }

/* ---------- 16.5 新生页：垂直时间线 + 清单 + 住行 ---------- */
.ftl{ position:relative; padding-left:clamp(26px,3.4vw,44px); }
.ftl::before{ content:""; position:absolute; left:calc(clamp(26px,3.4vw,44px) - 1.5px); top:8px; bottom:8px; width:3px; background:linear-gradient(var(--brass), rgba(168,123,46,.14)); border-radius:2px; }
.ftl__item{ position:relative; padding:0 0 clamp(34px,4vw,52px); }
.ftl__item:last-child{ padding-bottom:0; }
.ftl__item::before{
  content:""; position:absolute; left:calc(-1 * clamp(26px,3.4vw,44px) - 7px); top:7px;
  width:17px; height:17px; border-radius:50%; background:var(--paper); border:3.5px solid var(--brass);
}
.ftl__when{ font-family:var(--mono); font-weight:700; font-size:12px; letter-spacing:.18em; color:var(--brass); }
.ftl__h{ font-family:var(--serif); font-weight:900; font-size:clamp(20px,2.4vw,26px); color:var(--cream); margin-top:8px; }
.ftl__p{ margin-top:10px; font-size:14.5px; line-height:1.9; color:var(--cream-dim); max-width:40em; }

.check{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(12px,1.5vw,18px); }
.chk{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-m); padding:20px 20px 18px;
  display:flex; gap:14px; align-items:flex-start;
}
.chk__box{
  width:24px; height:24px; border-radius:7px; border:2px solid var(--brass); flex:none; margin-top:2px;
  display:flex; align-items:center; justify-content:center; color:var(--brass);
}
.chk__box svg{ width:13px; height:13px; }
.chk b{ display:block; font-size:15px; color:var(--cream); font-weight:700; }
.chk span{ display:block; margin-top:5px; font-size:13px; line-height:1.7; color:var(--cream-dim); }

.live{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(14px,1.8vw,22px); }
.lv{ background:var(--paper); border:1px solid var(--line); border-radius:var(--r-l); padding:clamp(22px,2.6vw,30px); display:flex; gap:18px; align-items:flex-start; }
.lv__ico{
  width:52px; height:52px; border-radius:14px; flex:none; color:var(--brass);
  background:rgba(168,123,46,.09); border:1px solid rgba(168,123,46,.22);
  display:flex; align-items:center; justify-content:center;
}
.lv__ico svg{ width:26px; height:26px; }
.lv b{ display:block; font-family:var(--serif); font-weight:700; font-size:18px; color:var(--cream); }
.lv p{ margin-top:8px; font-size:13.5px; line-height:1.8; color:var(--cream-dim); }

/* ---------- 16.6 访客页：路线 + 场馆 + 餐饮 ---------- */
.route{ position:relative; display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,1.8vw,22px); }
.rt{
  background:rgba(244,240,231,.05); border:1px solid rgba(244,240,231,.14); border-radius:var(--r-l);
  padding:clamp(22px,2.6vw,30px); position:relative; overflow:hidden;
  transition:background .4s, transform .5s var(--e-out);
}
.rt:hover{ background:rgba(244,240,231,.09); transform:translateY(-4px); }
.rt__no{
  position:absolute; right:14px; top:2px; font-family:var(--serif); font-weight:900;
  font-size:clamp(48px,6vw,72px); color:rgba(229,193,102,.14); line-height:1; pointer-events:none;
}
.rt__h{ font-family:var(--serif); font-weight:700; font-size:clamp(18px,2.1vw,22px); color:var(--on-dark); }
.rt__h i{ font-style:normal; font-family:var(--mono); font-size:10.5px; letter-spacing:.14em; color:#E5C166; margin-left:10px; }
.rt__p{ margin-top:12px; font-size:13.5px; line-height:1.9; color:var(--on-dark-dim); position:relative; }

.venues{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); }
.vn{
  background:rgba(244,240,231,.05); border:1px solid rgba(244,240,231,.14); border-radius:var(--r-m);
  padding:24px 22px; transition:border-color .4s, transform .5s var(--e-out);
}
.vn:hover{ border-color:rgba(229,193,102,.45); transform:translateY(-4px); }
.vn__ico{ width:46px; height:46px; border-radius:12px; color:#E5C166; background:rgba(229,193,102,.1); border:1px solid rgba(229,193,102,.26); display:flex; align-items:center; justify-content:center; }
.vn__ico svg{ width:23px; height:23px; }
.vn b{ display:block; margin-top:16px; font-family:var(--serif); font-weight:700; font-size:16.5px; color:var(--on-dark); }
.vn p{ margin-top:8px; font-size:13px; line-height:1.8; color:var(--on-dark-dim); }

.bites{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,1.8vw,22px); }
.bt{ background:rgba(244,240,231,.05); border:1px solid rgba(244,240,231,.14); border-radius:var(--r-l); padding:clamp(22px,2.6vw,30px); }
.bt b{ font-family:var(--serif); font-weight:700; font-size:18px; color:var(--on-dark); }
.bt p{ margin-top:10px; font-size:13.5px; line-height:1.9; color:var(--on-dark-dim); }

/* ---------- 16.7 视角互切带 + 子页页脚 ---------- */
.xsw{ background:var(--paper-2); padding:clamp(48px,6vw,80px) 0; }
.xsw__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); margin-top:30px; }
.xsw a{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-m);
  padding:22px 20px; text-decoration:none; display:block;
  transition:transform .45s var(--e-out), box-shadow .45s var(--e-out), border-color .45s;
}
.xsw a:hover{ transform:translateY(-4px); box-shadow:0 20px 40px -22px rgba(34,30,24,.2); }
.xsw a b{ display:block; font-family:var(--serif); font-weight:700; font-size:17px; color:var(--cream); }
.xsw a span{ display:block; margin-top:7px; font-size:12.5px; color:var(--cream-dim); line-height:1.6; }
.xsw a i{ font-style:normal; display:inline-block; margin-top:12px; font-family:var(--mono); font-size:10.5px; letter-spacing:.16em; }
.xsw a.x--red i{ color:var(--red); } .xsw a.x--slate i{ color:var(--slate); }
.xsw a.x--brass i{ color:var(--brass); } .xsw a.x--dark i{ color:var(--cream); }
.xsw a.is-cur{ opacity:.45; pointer-events:none; }

.pfoot{ background:var(--band); padding:44px 0 40px; }
.pfoot__in{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:18px; }
.pfoot__brand{ display:flex; align-items:center; gap:12px; }
.pfoot__mark{ width:36px; height:36px; color:var(--on-dark); }
.pfoot__mark svg{ width:100%; height:100%; }
.pfoot__brand b{ display:block; font-family:var(--serif); font-weight:700; font-size:15px; color:var(--on-dark); }
.pfoot__brand span{ display:block; font-family:var(--mono); font-size:9px; letter-spacing:.16em; color:var(--on-dark-faint); margin-top:2px; }
.pfoot__back{
  display:inline-flex; align-items:center; gap:9px; text-decoration:none;
  font-size:13.5px; font-weight:600; color:var(--on-dark);
  border:1px solid rgba(244,240,231,.3); border-radius:999px; padding:10px 20px;
  transition:background .35s, color .35s;
}
.pfoot__back svg{ width:15px; height:15px; }
.pfoot__back:hover{ background:var(--on-dark); color:var(--band); }
.pfoot__copy{ width:100%; margin-top:8px; font-size:11.5px; color:var(--on-dark-faint); letter-spacing:.03em; }

/* ---------- 16.8 子页响应式 ---------- */
@media (max-width:1180px){
  .pnav__sw a{ padding:7px 12px; font-size:12.5px; }
  .phero__nums{ grid-template-columns:repeat(2,1fr); }
  .matrix{ grid-template-columns:1fr; }
  .steps{ grid-template-columns:repeat(2,1fr); }
  .mentor{ grid-template-columns:repeat(2,1fr); }
  .years{ grid-template-columns:repeat(2,1fr); }
  .facts{ grid-template-columns:repeat(2,1fr); }
  .check{ grid-template-columns:repeat(2,1fr); }
  .live{ grid-template-columns:1fr; }
  .route{ grid-template-columns:repeat(2,1fr); }
  .venues{ grid-template-columns:repeat(2,1fr); }
  .bites{ grid-template-columns:1fr; }
  .xsw__grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:760px){
  .pnav{ flex-direction:column; align-items:flex-start; gap:10px; padding:10px var(--pad); }
  .pnav__sw{ width:100%; overflow-x:auto; }
  .phero{ padding-top:calc(120px + clamp(44px,7vw,64px)); }
  .phero__nums{ grid-template-columns:repeat(2,1fr); }
  .steps{ grid-template-columns:1fr; }
  .mentor{ grid-template-columns:1fr; }
  .years{ grid-template-columns:1fr; }
  .facts{ grid-template-columns:1fr; }
  .check{ grid-template-columns:1fr; }
  .route{ grid-template-columns:1fr; }
  .venues{ grid-template-columns:1fr; }
  .xsw__grid{ grid-template-columns:1fr; }
  .qa__item{ grid-template-columns:1fr; }
}

/* ---------- 16.9 子页卡片入场（仅 JS 可用时隐藏，由 main.js 加 .js） ---------- */
.js .pnum,.js .mx,.js .stp,.js .mtr,.js .qa__item,.js .yr,.js .fct,
.js .ftl__item,.js .chk,.js .lv,.js .rt,.js .vn,.js .bt,.js .xsw a{
  opacity:0; transform:translateY(26px);
  transition:opacity .85s var(--e-out), transform .85s var(--e-out);
}
.js .pnum.is-in,.js .mx.is-in,.js .stp.is-in,.js .mtr.is-in,.js .qa__item.is-in,
.js .yr.is-in,.js .fct.is-in,.js .ftl__item.is-in,.js .chk.is-in,.js .lv.is-in,
.js .rt.is-in,.js .vn.is-in,.js .bt.is-in,.js .xsw a.is-in{
  opacity:1; transform:none;
}
@media (prefers-reduced-motion:reduce){
  .js .pnum,.js .mx,.js .stp,.js .mtr,.js .qa__item,.js .yr,.js .fct,
  .js .ftl__item,.js .chk,.js .lv,.js .rt,.js .vn,.js .bt,.js .xsw a{ opacity:1; transform:none; }
}

/* 家长页淡蓝头部：数字卡回白底保证可见 */
.phero--tint .pnum{ background:var(--paper); }

/* ═══════════ 17. 子页 2.0 · 图字悬浮体系 ═══════════ */

/* ---------- 17.1 全屏图头部（字压在图上） ---------- */
.xhero{
  position:relative; min-height:clamp(520px,78vh,860px);
  display:flex; align-items:flex-end; overflow:hidden;
  background:var(--band); isolation:isolate;
}
.xhero__bg{ position:absolute; inset:0; z-index:0; }
.xhero__bg img{
  width:100%; height:100%; object-fit:cover; display:block;
  transform:scale(1.06); transform-origin:center 42%;
  filter:saturate(1.07) contrast(1.05);
  transition:transform 14s cubic-bezier(.2,.6,.3,1);
}
.xhero.is-live .xhero__bg img{ transform:scale(1); }
.xhero__veil{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:
    radial-gradient(125% 78% at 16% 92%, rgba(16,13,9,.8) 0%, rgba(16,13,9,.28) 46%, transparent 76%),
    linear-gradient(180deg, rgba(16,13,9,.66) 0%, rgba(16,13,9,.2) 30%, rgba(16,13,9,.6) 66%, rgba(16,13,9,.94) 100%),
    linear-gradient(96deg, rgba(16,13,9,.76) 0%, rgba(16,13,9,.2) 56%, transparent 84%);
}
.xhero__grain{
  position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.32;
  background-image:radial-gradient(rgba(255,255,255,.14) .5px, transparent .5px);
  background-size:3px 3px; mix-blend-mode:overlay;
}
.xhero__in{
  position:relative; z-index:2; width:100%;
  padding-top:clamp(120px,16vw,200px); padding-bottom:clamp(38px,5vw,68px);
}
.xhero__top{
  display:flex; align-items:center; gap:14px; margin-bottom:clamp(20px,2.6vw,32px); flex-wrap:wrap;
}
.xhero__no{
  font-family:var(--mono); font-weight:700; font-size:12px; letter-spacing:.12em;
  padding:6px 12px; border-radius:7px; color:#fff; background:var(--ph-accent);
  box-shadow:0 8px 22px -10px rgba(0,0,0,.6);
}
.xhero__eyebrow{
  font-family:var(--mono); font-size:11.5px; letter-spacing:.26em; font-weight:600;
  color:rgba(244,240,231,.86); text-transform:uppercase;
  padding-left:14px; border-left:1px solid rgba(244,240,231,.3);
}
.xhero__t{
  font-family:var(--serif); font-weight:900; color:var(--on-dark);
  font-size:clamp(38px,7.2vw,96px); line-height:1.08; letter-spacing:.005em;
  max-width:16em; text-shadow:0 4px 40px rgba(0,0,0,.42);
}
.xhero__t .hl{ color:var(--ph-accent-hi, var(--on-dark)); }
.xhero__t em{
  font-style:normal; position:relative; display:inline-block;
}
.xhero__t em::after{
  content:""; position:absolute; left:-.04em; right:-.04em; bottom:-.04em; height:.13em;
  background:var(--ph-accent); z-index:-1; border-radius:2px; opacity:.92;
}
.xhero__s{
  margin-top:clamp(18px,2.2vw,28px); max-width:42em;
  font-size:clamp(14.5px,1.5vw,17px); line-height:1.9; color:rgba(244,240,231,.84);
}
.xhero__bar{
  margin-top:clamp(28px,3.4vw,44px); padding-top:clamp(20px,2.4vw,28px);
  border-top:1px solid rgba(244,240,231,.22);
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
}
.xhero__stats{ display:flex; gap:clamp(22px,3vw,52px); flex-wrap:wrap; }
.xhero__stat b{
  display:block; font-family:var(--serif); font-weight:900;
  font-size:clamp(22px,2.6vw,34px); color:var(--on-dark); line-height:1;
}
.xhero__stat b i{ font-style:normal; font-size:.48em; font-weight:700; color:var(--ph-accent-hi, var(--ph-accent)); margin-left:3px; letter-spacing:.02em; }
.xhero__stat span{ display:block; margin-top:7px; font-size:12px; letter-spacing:.06em; color:rgba(244,240,231,.6); }
.xhero__cta{ display:flex; gap:12px; flex-wrap:wrap; }
.xhero__cta .btn--ghost{ color:var(--on-dark); border-color:rgba(244,240,231,.34); }
.xhero__cta .btn--ghost .btn__fill{ background:var(--on-dark); }
.xhero__cta .btn--ghost:hover{ color:var(--band); }

/* ---------- 17.2 图字悬浮卡（核心） ---------- */
.xgrid{ display:grid; gap:clamp(14px,1.8vw,22px); }
.xgrid--2{ grid-template-columns:repeat(2,1fr); }
.xgrid--3{ grid-template-columns:repeat(3,1fr); }
.xgrid--4{ grid-template-columns:repeat(4,1fr); }

.xfig{
  position:relative; display:block; overflow:hidden; isolation:isolate;
  border-radius:var(--r-l); background:var(--band); text-decoration:none; color:inherit;
  min-height:clamp(300px,30vw,430px);
}
.xfig__m{ position:absolute; inset:0; z-index:0; }
.xfig__m img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 1.1s cubic-bezier(.22,1,.36,1), filter .6s;
}
.xfig:hover .xfig__m img{ transform:scale(1.055); }
.xfig__v{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(180deg, rgba(18,15,11,.06) 0%, rgba(18,15,11,.16) 42%, rgba(18,15,11,.78) 100%);
}
.xfig__b{
  position:relative; z-index:2; height:100%;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding:clamp(20px,2.6vw,32px) clamp(20px,2.6vw,32px) clamp(24px,3vw,36px);
}
.xfig__no{
  position:absolute; left:clamp(20px,2.6vw,32px); top:clamp(18px,2.4vw,28px);
  font-family:var(--mono); font-weight:700; font-size:11px; letter-spacing:.16em;
  color:var(--on-dark); background:rgba(244,240,231,.16); backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px); border:1px solid rgba(244,240,231,.3);
  padding:5px 10px; border-radius:6px;
}
.xfig__t{
  font-family:var(--serif); font-weight:900; color:#fff;
  font-size:clamp(20px,2.4vw,30px); line-height:1.24;
  text-shadow:0 2px 20px rgba(0,0,0,.45);
}
.xfig__t i{
  font-style:normal; display:block; margin-top:8px;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.2em; font-weight:600;
  color:var(--ph-accent-hi, #E5C166); text-shadow:none;
}
.xfig__p{
  margin-top:12px; font-size:14px; line-height:1.8; color:rgba(255,255,255,.8);
  max-width:34em; text-shadow:0 1px 12px rgba(0,0,0,.4);
}
.xfig__tags{ margin-top:14px; display:flex; flex-wrap:wrap; gap:8px; }
.xfig__tags i{
  font-style:normal; font-size:11.5px; letter-spacing:.04em;
  color:#fff; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.26);
  padding:4px 11px; border-radius:999px; backdrop-filter:blur(4px);
}
.xfig__go{
  margin-top:16px; display:inline-flex; align-items:center; gap:8px;
  font-family:var(--mono); font-size:11px; font-weight:700; letter-spacing:.14em;
  color:#fff;
}
.xfig__go svg{ width:14px; height:14px; transition:transform .45s var(--e-out); }
.xfig:hover .xfig__go svg{ transform:translateX(5px); }
/* 上方压字变体 */
.xfig--top .xfig__b{ justify-content:flex-start; }
.xfig--top .xfig__v{ background:linear-gradient(180deg, rgba(18,15,11,.8) 0%, rgba(18,15,11,.24) 46%, rgba(18,15,11,.1) 100%); }
/* 纯图片变体（无文字，做拼贴） */
.xfig--bare{ min-height:clamp(200px,20vw,300px); }
.xfig--bare .xfig__v{ background:linear-gradient(180deg, transparent 40%, rgba(18,15,11,.5) 100%); }

/* 大图横条：左图右字（字压图边缘） */
.xsplit{
  display:grid; grid-template-columns:1.15fr .85fr; align-items:center;
  gap:0; margin-block:clamp(10px,2vw,26px);
}
.xsplit__m{
  position:relative; border-radius:var(--r-l); overflow:hidden; min-height:clamp(320px,38vw,520px);
  background:var(--band);
}
.xsplit__m img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform 1.2s var(--e-out); }
.xsplit:hover .xsplit__m img{ transform:scale(1.03); }
.xsplit__b{
  position:relative; z-index:2; margin-left:clamp(-96px,-6vw,-40px);
  background:rgba(247,244,237,.94); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  border:1px solid rgba(38,34,27,.1); border-radius:var(--r-l);
  padding:clamp(24px,3vw,42px); box-shadow:0 30px 70px -40px rgba(34,30,24,.5);
}
.xsplit--flip{ grid-template-columns:.85fr 1.15fr; }
.xsplit--flip .xsplit__m{ order:2; }
.xsplit--flip .xsplit__b{ order:1; margin-left:0; margin-right:clamp(-96px,-6vw,-40px); }
.xsplit__no{ font-family:var(--mono); font-weight:700; font-size:11px; letter-spacing:.18em; color:var(--ph-accent); }
.xsplit__t{ font-family:var(--serif); font-weight:900; font-size:clamp(22px,2.6vw,32px); color:var(--cream); line-height:1.28; margin-top:12px; }
.xsplit__t i{ display:block; font-style:normal; font-family:var(--mono); font-size:10.5px; letter-spacing:.2em; color:var(--cream-faint); margin-top:9px; }
.xsplit__p{ margin-top:14px; font-size:14.5px; line-height:1.9; color:var(--cream-dim); }
.xsplit__list{ margin-top:16px; display:grid; gap:9px; }
.xsplit__list li{ display:flex; gap:10px; font-size:13.5px; line-height:1.7; color:var(--cream-dim); }
.xsplit__list li::before{ content:""; width:5px; height:5px; border-radius:50%; background:var(--ph-accent); flex:none; margin-top:9px; }

/* ---------- 17.3 考生页：分数线筛选器 ---------- */
.scf{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-l);
  padding:clamp(18px,2.2vw,26px); margin-bottom:clamp(22px,2.8vw,32px);
  position:sticky; top:calc(var(--nav-h,76px) + 10px); z-index:20;
  box-shadow:0 18px 44px -34px rgba(34,30,24,.4);
}
.scf__body{ position:relative; }
.scf__row{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.scf__row + .scf__row{ margin-top:12px; padding-top:12px; border-top:1px dashed var(--line); }
.scf__lab{
  font-family:var(--mono); font-size:10.5px; font-weight:700; letter-spacing:.18em;
  color:var(--cream-faint); flex:none; width:4.6em;
}
.scf__chips{ display:flex; flex-wrap:wrap; gap:7px; }
.scf__chip{
  font:inherit; font-size:13px; font-weight:600; cursor:pointer;
  padding:7px 15px; border-radius:999px; border:1px solid var(--line);
  background:transparent; color:var(--cream-dim);
  transition:background .3s var(--e-out), color .3s, border-color .3s, transform .3s var(--e-out);
}
.scf__chip:hover{ color:var(--cream); border-color:color-mix(in srgb, var(--red) 40%, var(--line)); transform:translateY(-1px); }
.scf__chip.is-on{ background:var(--red); border-color:var(--red); color:#fff; box-shadow:0 8px 20px -12px rgba(181,52,42,.9); }
.scf__chip--yr.is-on{ background:var(--band); border-color:var(--band); }
.scf__count{ margin-left:auto; font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--cream-faint); }
.scf__count b{ color:var(--red); font-weight:700; }

.sc{ position:relative; }
.sc__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,18px); }
.sc__card{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-m);
  padding:20px 20px 18px; position:relative; overflow:hidden;
  display:flex; flex-direction:column;
  transition:transform .45s var(--e-out), box-shadow .45s var(--e-out), border-color .4s;
}
.sc__card:hover{ transform:translateY(-4px); box-shadow:0 22px 44px -26px rgba(34,30,24,.3); border-color:color-mix(in srgb, var(--red) 30%, var(--line)); }
.sc__card::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--red); opacity:0; transition:opacity .4s;
}
.sc__card:hover::before{ opacity:1; }
.sc__h{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.sc__n{ font-family:var(--serif); font-weight:700; font-size:16.5px; color:var(--cream); line-height:1.4; }
.sc__col{ font-size:11px; color:var(--cream-faint); margin-top:5px; letter-spacing:.04em; }
.sc__sc{
  font-family:var(--serif); font-weight:900; font-size:clamp(26px,3vw,34px); color:var(--red);
  line-height:1; flex:none; letter-spacing:-.01em;
}
.sc__sc i{ font-style:normal; font-size:.4em; font-weight:700; color:var(--cream-faint); margin-left:2px; }
.sc__meta{
  margin-top:auto; padding-top:14px; border-top:1px dashed var(--line);
  display:flex; gap:16px; flex-wrap:wrap;
}
.sc__meta div{ font-size:11.5px; color:var(--cream-faint); }
.sc__meta div b{ display:block; font-size:13px; color:var(--cream-dim); font-weight:600; margin-top:3px; }
.sc__empty{
  grid-column:1/-1; text-align:center; padding:clamp(40px,6vw,72px) 20px;
  color:var(--cream-faint); font-size:14.5px;
}
.sc__empty svg{ width:34px; height:34px; margin-bottom:14px; opacity:.4; }
.sc__fade{ animation:scFade .5s var(--e-out) both; }
@keyframes scFade{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }

/* 年份趋势条 */
.sct{
  margin-top:clamp(22px,2.8vw,34px); background:var(--paper-2);
  border-radius:var(--r-l); padding:clamp(20px,2.6vw,32px);
}
.sct__h{ font-family:var(--serif); font-weight:700; font-size:16px; color:var(--cream); }
.sct__h i{ font-style:normal; font-family:var(--mono); font-size:10.5px; letter-spacing:.16em; color:var(--cream-faint); margin-left:10px; }
.sct__bars{ margin-top:20px; display:flex; gap:clamp(10px,1.6vw,22px); align-items:flex-end; height:150px; }
.sct__bar{ flex:1; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; gap:9px; height:100%; }
.sct__fill{
  width:100%; max-width:64px; border-radius:8px 8px 3px 3px;
  background:linear-gradient(180deg, var(--red-hi), var(--red));
  transform-origin:bottom; transform:scaleY(0);
  transition:transform .9s var(--e-out);
  position:relative;
}
.sct.is-in .sct__fill{ transform:scaleY(1); }
.sct__fill span{
  position:absolute; top:-22px; left:50%; transform:translateX(-50%);
  font-family:var(--mono); font-size:11.5px; font-weight:700; color:var(--red);
}
.sct__yr{ font-family:var(--mono); font-size:11px; color:var(--cream-faint); letter-spacing:.06em; }

/* ---------- 17.4 就业率条形 ---------- */
.emp{ display:grid; gap:clamp(9px,1.2vw,13px); }
.emp__row{
  display:grid; grid-template-columns:11em 1fr 4.4em; align-items:center; gap:clamp(12px,1.8vw,20px);
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-m);
  padding:14px 18px; transition:border-color .4s, transform .4s var(--e-out);
}
.emp__row:hover{ border-color:color-mix(in srgb, var(--brass) 42%, var(--line)); transform:translateX(3px); }
.emp__n{ font-size:14px; font-weight:600; color:var(--cream); }
.emp__n i{ display:block; font-style:normal; font-size:11px; color:var(--cream-faint); margin-top:3px; font-weight:400; }
.emp__track{ height:9px; border-radius:999px; background:rgba(38,34,27,.08); overflow:visible; position:relative; }
.emp__avg{
  position:absolute; top:-4px; bottom:-4px; width:2px;
  background:rgba(38,34,27,.5); border-radius:1px; z-index:3;
}
.emp__legend{
  margin-top:16px; display:flex; align-items:center; gap:9px;
  font-size:11.5px; color:var(--cream-faint); letter-spacing:.03em;
}
.emp__legend::before{ content:""; width:2px; height:13px; background:rgba(38,34,27,.42); border-radius:1px; }
.emp__fill{
  height:100%; border-radius:999px; width:0;
  background:linear-gradient(90deg, var(--brass), var(--brass-hi));
  transition:width 1.15s cubic-bezier(.22,1,.36,1);
}
.emp__v{ font-family:var(--serif); font-weight:900; font-size:17px; color:var(--brass); text-align:right; }
.emp__v i{ font-style:normal; font-size:.6em; }

/* ---------- 17.5 新建设施大卡 ---------- */
.nvx{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(14px,1.8vw,22px); }
.nv{
  position:relative; overflow:hidden; border-radius:var(--r-l);
  min-height:clamp(340px,38vw,480px); display:flex; align-items:flex-end;
  isolation:isolate; background:var(--band);
}
.nv img{ position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:cover; transition:transform 1.2s var(--e-out); }
.nv:hover img{ transform:scale(1.05); }
.nv__v{
  position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(16,13,9,.1) 0%, rgba(16,13,9,.3) 40%, rgba(16,13,9,.92) 100%);
}
.nv__b{ position:relative; z-index:2; padding:clamp(22px,2.8vw,36px); width:100%; }
.nv__tag{
  display:inline-block; font-family:var(--mono); font-size:10.5px; font-weight:700;
  letter-spacing:.18em; color:var(--band); background:#E5C166; padding:5px 11px; border-radius:5px;
  margin-bottom:16px;
}
.nv__t{ font-family:var(--serif); font-weight:900; font-size:clamp(24px,3.2vw,38px); color:#fff; line-height:1.2; }
.nv__t i{ display:block; font-style:normal; font-family:var(--mono); font-size:11px; letter-spacing:.2em; color:rgba(255,255,255,.55); margin-top:10px; font-weight:400; }
.nv__p{ margin-top:14px; font-size:14px; line-height:1.85; color:rgba(255,255,255,.78); max-width:32em; }
.nv__chips{ margin-top:16px; display:flex; flex-wrap:wrap; gap:8px; }
.nv__chips i{ font-style:normal; font-size:11.5px; color:#fff; background:rgba(255,255,255,.13); border:1px solid rgba(255,255,255,.24); padding:4px 11px; border-radius:999px; }

/* ---------- 17.6 章节点缀 ---------- */
.xlead-row{ display:flex; align-items:flex-end; justify-content:space-between; gap:28px; flex-wrap:wrap; margin-bottom:clamp(28px,3.4vw,44px); }
.xlead-row .psec__head{ margin-bottom:0; }
.xstat-inline{ display:flex; gap:clamp(22px,3vw,44px); flex-wrap:wrap; }
.xstat-inline div b{ display:block; font-family:var(--serif); font-weight:900; font-size:clamp(24px,2.8vw,34px); color:var(--ph-accent); line-height:1; }
.xstat-inline div span{ display:block; margin-top:7px; font-size:12px; color:var(--cream-faint); letter-spacing:.04em; }

/* ---------- 17.7 JS 门控入场 ---------- */
.js .xhero__t,.js .xhero__s,.js .xhero__top,.js .xhero__bar{ opacity:0; transform:translateY(24px); }
.js .xhero__bg img{ transform:scale(1.1); }
.js .is-live .xhero__t,.js .is-live .xhero__s,.js .is-live .xhero__top,.js .is-live .xhero__bar{
  opacity:1; transform:none; transition:opacity 1s var(--e-out), transform 1s var(--e-out);
}
.js .is-live .xhero__top{ transition-delay:.05s; }
.js .is-live .xhero__t{ transition-delay:.14s; }
.js .is-live .xhero__s{ transition-delay:.26s; }
.js .is-live .xhero__bar{ transition-delay:.36s; }
.js .is-live .xhero__bg img{ transform:scale(1.0); }

.js .xfig,.js .xsplit,.js .nv,.js .sc__card,.js .emp__row{
  opacity:0; transform:translateY(28px);
  transition:opacity .9s var(--e-out), transform .9s var(--e-out);
}
.js .xfig.is-in,.js .xsplit.is-in,.js .nv.is-in,.js .sc__card.is-in,.js .emp__row.is-in{
  opacity:1; transform:none;
}
@media (prefers-reduced-motion:reduce){
  .js .xhero__t,.js .xhero__s,.js .xhero__top,.js .xhero__bar,
  .js .xfig,.js .xsplit,.js .nv,.js .sc__card,.js .emp__row{ opacity:1; transform:none; }
  .js .xhero__bg img{ transform:none; }
}

/* ---------- 17.8 响应式 ---------- */
@media (max-width:1180px){
  .xgrid--3,.xgrid--4{ grid-template-columns:repeat(2,1fr); }
  .sc__grid{ grid-template-columns:repeat(2,1fr); }
  .xsplit,.xsplit--flip{ grid-template-columns:1fr; }
  .xsplit__b{ margin:0; border-radius:0 0 var(--r-l) var(--r-l); margin-top:-1px; }
  .xsplit--flip .xsplit__m{ order:0; }
  .xsplit--flip .xsplit__b{ order:1; margin-right:0; }
  .xsplit__m{ border-radius:var(--r-l) var(--r-l) 0 0; min-height:clamp(240px,34vw,360px); }
}
@media (max-width:760px){
  .xhero{ min-height:clamp(460px,86vh,700px); }
  .xhero__t{ font-size:clamp(32px,9vw,52px); }
  .xgrid--2,.xgrid--3,.xgrid--4{ grid-template-columns:1fr; }
  .nvx{ grid-template-columns:1fr; }
  .sc__grid{ grid-template-columns:1fr; }
  .scf{ position:static; }
  .scf__lab{ width:100%; }
  .scf__count{ margin-left:0; width:100%; }
  .emp__row{ grid-template-columns:1fr auto; gap:10px; }
  .emp__track{ grid-column:1/-1; order:3; }
  .emp__v{ order:2; }
  .sct__bars{ height:120px; }
}

/* ═══════════ 17.9 家长页：费用表 / 说明卡 ═══════════ */
.fee{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-l);
  overflow:hidden; box-shadow:0 24px 60px -44px rgba(34,30,24,.45);
}
.fee__row{
  display:grid; grid-template-columns:.9fr .9fr 1.5fr; gap:clamp(10px,2vw,28px);
  padding:clamp(15px,1.8vw,20px) clamp(18px,2.4vw,30px);
  align-items:center; border-top:1px solid var(--line);
  transition:background .35s;
}
.fee__row:first-child{ border-top:0; }
.fee__row:hover{ background:rgba(62,124,166,.035); }
.fee__row--head{
  background:var(--paper-2); border-top:0;
  font-family:var(--mono); font-size:10.5px; font-weight:700; letter-spacing:.18em; color:var(--cream-faint);
}
.fee__n{ font-size:14.5px; font-weight:700; color:var(--cream); }
.fee__v{ font-family:var(--serif); font-weight:900; font-size:clamp(15px,1.7vw,19px); color:var(--slate); letter-spacing:.01em; }
.fee__d{ font-size:13px; line-height:1.7; color:var(--cream-dim); }
.fee__row--sum{ background:rgba(62,124,166,.07); border-top:2px solid rgba(62,124,166,.28); }
.fee__row--sum .fee__v{ font-size:clamp(17px,2vw,22px); color:var(--slate); }
.fee__row--sum .fee__d{ color:var(--cream-dim); }

.fcard{
  background:var(--paper); border:1px solid var(--line); border-left:3px solid var(--slate);
  border-radius:var(--r-m); padding:clamp(20px,2.4vw,26px);
  transition:transform .45s var(--e-out), box-shadow .45s var(--e-out);
}
.fcard:hover{ transform:translateY(-4px); box-shadow:0 22px 44px -28px rgba(34,30,24,.28); }
.fcard b{ display:block; font-family:var(--serif); font-weight:700; font-size:16px; color:var(--cream); }
.fcard p{ margin-top:10px; font-size:13.5px; line-height:1.85; color:var(--cream-dim); }

/* ═══════════ 17.10 新生页：周边设施卡 ═══════════ */
.near{
  display:flex; gap:clamp(16px,2vw,22px); align-items:flex-start;
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-l);
  padding:clamp(20px,2.6vw,30px);
  transition:transform .45s var(--e-out), box-shadow .45s var(--e-out), border-color .4s;
}
.near:hover{ transform:translateY(-4px); box-shadow:0 24px 48px -30px rgba(34,30,24,.3); border-color:color-mix(in srgb, var(--brass) 34%, var(--line)); }
.near__ico{
  width:54px; height:54px; border-radius:15px; flex:none;
  display:flex; align-items:center; justify-content:center;
  color:var(--brass); background:rgba(168,123,46,.09); border:1px solid rgba(168,123,46,.22);
}
.near__ico svg{ width:27px; height:27px; }
.near b{ display:block; font-family:var(--serif); font-weight:700; font-size:18px; color:var(--cream); }
.near p{ margin-top:9px; font-size:13.5px; line-height:1.85; color:var(--cream-dim); }
.near__tag{
  display:inline-block; margin-top:12px; font-family:var(--mono); font-size:10.5px; font-weight:700;
  letter-spacing:.1em; color:var(--brass); background:rgba(168,123,46,.1);
  border:1px solid rgba(168,123,46,.22); padding:4px 10px; border-radius:999px;
}

/* ═══════════ 17.11 访客页：成果卡 / 参观须知（深底） ═══════════ */
.ach{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); }
.ac{
  background:rgba(244,240,231,.05); border:1px solid rgba(244,240,231,.14);
  border-radius:var(--r-m); padding:clamp(20px,2.4vw,28px);
  transition:background .4s, border-color .4s, transform .45s var(--e-out);
}
.ac:hover{ background:rgba(244,240,231,.09); border-color:rgba(229,193,102,.42); transform:translateY(-4px); }
.ac__no{
  display:block; font-family:var(--mono); font-weight:700; font-size:11px;
  letter-spacing:.18em; color:#E5C166; margin-bottom:14px;
}
.ac b{ display:block; font-family:var(--serif); font-weight:700; font-size:16.5px; color:var(--on-dark); line-height:1.4; }
.ac p{ margin-top:12px; font-size:13px; line-height:1.85; color:var(--on-dark-dim); }

.visit{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,1.8vw,22px); }
.vs{
  background:rgba(244,240,231,.05); border:1px solid rgba(244,240,231,.14);
  border-radius:var(--r-l); padding:clamp(22px,2.6vw,32px);
  position:relative; overflow:hidden;
}
.vs > b{
  font-family:var(--serif); font-weight:900; font-size:clamp(34px,4vw,52px);
  color:rgba(229,193,102,.2); line-height:1; display:block;
}
.vs h4{ margin-top:14px; font-family:var(--serif); font-weight:700; font-size:19px; color:var(--on-dark); }
.vs p{ margin-top:11px; font-size:13.5px; line-height:1.9; color:var(--on-dark-dim); }

/* 深底上的 xsplit 文字块（访客页成果段） */
.psec--dark .xsplit__b{ background:rgba(34,30,24,.86); border-color:rgba(244,240,231,.16); }
.psec--dark .xsplit__t{ color:var(--on-dark); }
.psec--dark .xsplit__t i{ color:rgba(244,240,231,.4); }
.psec--dark .xsplit__p{ color:var(--on-dark-dim); }
.psec--dark .xsplit__list li{ color:var(--on-dark-dim); }
.psec--dark .xsplit__no{ color:#E5C166; }

/* 提示条（reduced 兼容） */
.expand-note{
  display:flex; gap:10px; align-items:flex-start;
  font-size:12.5px; line-height:1.8; color:var(--cream-faint);
}
.expand-note svg{ width:15px; height:15px; flex:none; margin-top:3px; }
.psec--dark .expand-note{ color:var(--on-dark-faint); }

/* ═══════════ 17.12 新增组件响应式 ═══════════ */
@media (max-width:1180px){
  .ach{ grid-template-columns:repeat(2,1fr); }
  .visit{ grid-template-columns:1fr; }
  .fee__row{ grid-template-columns:1fr 1fr; }
  .fee__row--head span:nth-child(3){ display:none; }
  .fee__d{ grid-column:1/-1; }
}
@media (max-width:760px){
  .ach{ grid-template-columns:1fr; }
  .fee__row{ grid-template-columns:1fr; gap:6px; }
  .fee__row--head{ display:none; }
  .fee__n{ font-size:13px; color:var(--cream-faint); font-weight:600; letter-spacing:.06em; }
  .near{ flex-direction:column; }
}

/* ═══════════ 18. 首页四条路径导览带 ═══════════ */
.xfig__t,.xfig__p{ display:block; }          /* 兼容 <a> 内的 span 结构 */
.xfig__b > .xfig__t{ margin:0; }

.gpath{ background:var(--paper-2); }
.gpath__head{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:clamp(20px,4vw,56px); flex-wrap:wrap; margin-bottom:clamp(28px,3.6vw,46px);
}
.gpath__head .title{ margin-top:14px; }
.gpath__lead{
  max-width:26em; font-size:15px; line-height:1.9; color:var(--cream-dim);
  padding-left:20px; border-left:2px solid rgba(62,124,166,.4);
}
.gpath__card{
  min-height:clamp(300px,25vw,396px);
  box-shadow:0 26px 54px -38px rgba(34,30,24,.55);
  transition:transform .5s var(--e-out), box-shadow .5s var(--e-out);
}
.gpath__card:hover{ transform:translateY(-6px); box-shadow:0 34px 64px -36px rgba(34,30,24,.5); }
.gpath__card .xfig__no{
  background:rgba(20,17,12,.42); border-color:rgba(255,255,255,.26);
  color:#fff; backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
}
@media (max-width:1180px){
  .gpath__lead{ border-left:0; padding-left:0; max-width:100%; }
}

/* ═══════════ 19. 身份分流卡升级（与子页 2.0 统一质感） ═══════════ */
.aud{
  min-height:clamp(300px,26vw,352px);
  padding:clamp(24px,2.5vw,32px);
  background:
    radial-gradient(120% 90% at 100% 0%, color-mix(in srgb, var(--aud-accent) 7%, transparent), transparent 62%),
    #fff;
  border-color:rgba(38,34,27,.11);
}
.aud::before{ transform:scaleX(1); height:3px; opacity:.9; }
.aud:hover{
  border-color:color-mix(in srgb, var(--aud-accent) 40%, transparent);
  box-shadow:0 30px 58px -30px color-mix(in srgb, var(--aud-accent) 42%, rgba(38,34,27,.3));
}
.aud:hover::before{ height:4px; }
.aud__no{
  position:absolute; right:clamp(18px,2vw,26px); top:clamp(14px,1.8vw,22px);
  font-family:var(--serif); font-weight:900; font-size:clamp(30px,3.4vw,44px);
  line-height:1; color:var(--aud-accent); opacity:.16; pointer-events:none;
  letter-spacing:-.02em;
}
.aud__icon{
  width:56px; height:56px; margin-bottom:22px; border-radius:16px;
  color:var(--aud-accent);
  background:color-mix(in srgb, var(--aud-accent) 8%, #fff);
  border:1px solid color-mix(in srgb, var(--aud-accent) 24%, transparent);
}
.aud__icon svg{ width:27px; height:27px; }
.aud:hover .aud__icon{
  color:#fff; background:var(--aud-accent);
  border-color:var(--aud-accent);
  transform:rotate(-5deg) scale(1.05);
}
.aud__name{ font-size:clamp(21px,2.1vw,26px); letter-spacing:.06em; }
.aud__en{ font-size:9.5px; letter-spacing:.26em; margin:7px 0 13px; color:var(--aud-accent); opacity:.75; }
.aud__desc{ font-size:13px; line-height:1.88; min-height:3.9em; margin-bottom:15px; }
.aud__tags{ min-height:3.3em; align-content:flex-start; margin-bottom:14px; }
.aud__tags i{
  font-size:10.5px; padding:5px 10px;
  color:color-mix(in srgb, var(--aud-accent) 74%, #26221B);
  background:color-mix(in srgb, var(--aud-accent) 7%, #fff);
  border:1px solid color-mix(in srgb, var(--aud-accent) 18%, transparent);
}
.aud__go{
  font-family:var(--mono); font-size:10.5px; font-weight:700; letter-spacing:.12em;
  padding-top:14px; border-top:1px solid rgba(38,34,27,.1);
  width:100%;
}
.aud--visitors{ --aud-accent:#221E18; }

@media (max-width:1180px){
  .aud{ min-height:0; }
  .aud__desc,.aud__tags{ min-height:0; }
}

.gpath__card .xfig__p{ min-height:2.9em; }
.gpath__card .xfig__t{ min-height:1.24em; }
@media (max-width:760px){
  .gpath__card .xfig__p{ min-height:0; }
}

/* ═══════════ 20. 真实数据版：省份概览 / 全国总览表 / 环境拼图 / 宿舍表 ═══════════ */

/* ---------- 20.1 筛选器扩展：计划数角标 / 小号 / 禁用态 ---------- */
.scf__chip{ display:inline-flex; align-items:center; gap:6px; }
.scf__chip--sm{ font-size:12px; padding:5px 13px; }
.scf__plan{
  font-style:normal; font-family:var(--mono); font-size:9.5px; font-weight:700;
  letter-spacing:.02em; padding:1px 5px; border-radius:4px;
  background:rgba(38,34,27,.07); color:var(--cream-faint);
  transition:background .3s, color .3s;
}
.scf__chip.is-on .scf__plan{ background:rgba(255,255,255,.22); color:#fff; }
.scf__chip.is-off{
  opacity:.34; cursor:not-allowed; text-decoration:line-through;
  text-decoration-color:rgba(38,34,27,.4); text-decoration-thickness:1px;
}
.scf__chip.is-off:hover{ transform:none; color:var(--cream-dim); border-color:var(--line); }

/* ---------- 20.2 省份概览条 ---------- */
.sov{
  display:grid; grid-template-columns:repeat(7,minmax(0,1fr));
  gap:1px; background:var(--line); border:1px solid var(--line);
  border-radius:var(--r-m); overflow:hidden;
  margin-bottom:clamp(18px,2.2vw,26px);
}
.sov__cell{
  background:var(--paper); padding:14px clamp(12px,1.4vw,18px) 15px;
  display:flex; flex-direction:column; gap:7px; min-width:0;
}
.sov__cell span{
  font-family:var(--mono); font-size:9.5px; font-weight:700; letter-spacing:.14em;
  color:var(--cream-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sov__cell b{
  font-family:var(--serif); font-size:19px; font-weight:700; color:var(--cream);
  line-height:1.12; font-variant-numeric:tabular-nums;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sov__cell b i{
  font-style:normal; font-size:.5em; font-weight:600; color:var(--cream-faint);
  margin-left:2px; letter-spacing:0;
}
.sov__cell--key{ background:color-mix(in srgb, var(--red) 5%, var(--paper)); }
.sov__cell--key b{ color:var(--red); font-size:26px; }
.sov__cell b.is-neg{ color:#3E6B57; }

/* ---------- 20.3 专业卡：分差条 / 负线差 / 空态 ---------- */
.sc__bar{
  height:4px; border-radius:2px; background:rgba(38,34,27,.07);
  overflow:hidden; margin:15px 0 13px;
}
.sc__bar i{
  display:block; height:100%; border-radius:2px;
  background:linear-gradient(90deg, color-mix(in srgb,var(--red) 42%,transparent), var(--red));
  transition:width .9s var(--e-out);
}
.sc__meta b.is-neg,.sc__sc.is-neg{ color:#3E6B57; }
.sc__empty{
  grid-column:1/-1; background:var(--paper); border:1px dashed var(--line);
  border-radius:var(--r-m); padding:clamp(28px,4.4vw,52px) clamp(20px,3vw,40px);
  text-align:center;
}
.sc__empty b{
  display:block; font-family:var(--serif); font-size:clamp(18px,2.2vw,22px);
  color:var(--cream); margin-bottom:11px;
}
.sc__empty p{
  font-size:13.5px; color:var(--cream-dim); line-height:1.85;
  max-width:44em; margin:0 auto 15px;
}
.sc__empty a{
  font-family:var(--mono); font-size:12px; font-weight:700; letter-spacing:.06em;
  color:var(--red); text-decoration:none; border-bottom:1px solid currentColor;
  padding-bottom:2px;
}

/* ---------- 20.4 全国总览表 ---------- */
.pvt__scroll{
  overflow-x:auto; -webkit-overflow-scrolling:touch;
  border:1px solid var(--line); border-radius:var(--r-m);
  background:var(--paper);
}
.pvt__t{ width:100%; border-collapse:collapse; min-width:800px; }
.pvt__t th{
  font-family:var(--mono); font-size:10px; font-weight:700; letter-spacing:.1em;
  color:var(--cream-faint); text-align:right; padding:13px 14px;
  white-space:nowrap; border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--band) 6%, var(--paper));
  position:sticky; top:0;
}
.pvt__t th:first-child,.pvt__t th:nth-child(2){ text-align:left; }
.pvt__t td{
  padding:12.5px 14px; font-size:13.5px; color:var(--cream-dim);
  text-align:right; white-space:nowrap;
  border-bottom:1px solid rgba(38,34,27,.06);
  font-variant-numeric:tabular-nums;
}
.pvt__t tbody tr:last-child td{ border-bottom:0; }
.pvt__t tbody tr{ transition:background .22s; }
.pvt__t tbody tr:hover{ background:color-mix(in srgb, var(--red) 4.5%, var(--paper)); }
.pvt__p{
  text-align:left; font-family:var(--serif); font-size:14.5px;
  font-weight:700; color:var(--cream);
}
.pvt__plan{ color:var(--cream); font-weight:600; }
.pvt__t td b{ color:var(--cream); font-weight:700; font-size:14.5px; }
.pvt__line{ color:var(--cream-faint); }
.pvt__pos{ color:var(--red); font-weight:700; }
.pvt__neg{ color:#3E6B57; font-weight:700; }
.pvt__na{ color:rgba(38,34,27,.2); }
@media (max-width:760px){
  .sov{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .sov__cell--key{ grid-column:span 2; }
  .sov__cell b{ font-size:17px; }
  .sov__cell--key b{ font-size:24px; }
  .pvt__t{ min-width:0; }
  .pvt__t th,.pvt__t td{ padding:11px 10px; font-size:12.5px; }
}

/* ---------- 20.5 新生页：校园环境拼图 ---------- */
.xenv{
  display:grid; gap:clamp(10px,1.2vw,16px);
  grid-template-columns:repeat(12,1fr);
  grid-template-rows:clamp(148px,16.5vw,228px) clamp(148px,16.5vw,228px) clamp(118px,12.5vw,172px);
  grid-template-areas:
    "a a a a a a a b b b b b"
    "a a a a a a a c c c c c"
    "d d d d d d e e e e e e";
}
.xenv__t{
  position:relative; margin:0; overflow:hidden; border-radius:var(--r-m);
  background:#15120e; box-shadow:0 22px 54px -42px rgba(34,30,24,.7);
  isolation:isolate;
}
.xenv__t--a{ grid-area:a; }
.xenv__t--b{ grid-area:b; }
.xenv__t--c{ grid-area:c; }
.xenv__t--d{ grid-area:d; }
.xenv__t--e{ grid-area:e; }
.xenv__t img{
  width:100%; height:100%; object-fit:cover; display:block;
  filter:saturate(1.07) contrast(1.05);
  transition:transform 1.1s var(--e-out);
}
.xenv__t:hover img{ transform:scale(1.05); }
.xenv__t::after{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(to top, rgba(10,8,6,.78) 0%, rgba(10,8,6,.26) 36%, rgba(10,8,6,0) 64%);
  transition:opacity .5s;
}
.xenv__t figcaption{
  position:absolute; left:clamp(14px,1.6vw,22px); bottom:clamp(13px,1.5vw,19px);
  z-index:2; display:flex; flex-direction:column; gap:5px; max-width:88%;
}
.xenv__t figcaption b{
  font-family:var(--serif); font-size:clamp(16px,1.9vw,24px); font-weight:700;
  color:#fff; line-height:1.2; letter-spacing:.01em;
  text-shadow:0 2px 20px rgba(0,0,0,.55);
}
.xenv__t figcaption i{
  font-style:normal; font-family:var(--mono); font-size:9.5px; font-weight:700;
  letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.7);
}
.xenv__t--a figcaption b{ font-size:clamp(20px,2.7vw,34px); }
@media (max-width:900px){
  .xenv{
    grid-template-columns:repeat(6,1fr);
    grid-template-rows:clamp(150px,24vw,210px) clamp(150px,24vw,210px) clamp(140px,22vw,190px);
    grid-template-areas:
      "a a a a a a"
      "b b b c c c"
      "d d d e e e";
  }
}
@media (max-width:760px){
  .xenv{
    grid-template-columns:1fr; grid-template-rows:none;
    grid-template-areas:"a" "b" "c" "d" "e";
  }
  .xenv__t{ aspect-ratio:16/10; }
  .xenv__t--a{ aspect-ratio:4/3; }
}

/* ---------- 20.6 家长页：宿舍房型表 ---------- */
.dorm{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-m);
  overflow:hidden; margin-top:clamp(18px,2.2vw,26px);
}
.dorm__row{
  display:grid; grid-template-columns:1.35fr .8fr 1.85fr; gap:14px;
  padding:14px clamp(15px,1.9vw,24px); align-items:center;
  border-bottom:1px solid rgba(38,34,27,.07); transition:background .24s;
}
.dorm__row:last-child{ border-bottom:0; }
.dorm__row:not(.dorm__row--head):hover{ background:color-mix(in srgb, var(--slate) 5%, var(--paper)); }
.dorm__row--head{
  background:color-mix(in srgb, var(--band) 9%, var(--paper));
  font-family:var(--mono); font-size:10px; font-weight:700; letter-spacing:.12em;
  color:var(--cream-faint);
}
.dorm__n{
  font-size:13.8px; font-weight:600; color:var(--cream);
  display:flex; align-items:center; gap:7px; flex-wrap:wrap;
}
.dorm__n em{
  font-style:normal; font-family:var(--mono); font-size:8.5px; font-weight:700;
  letter-spacing:.05em; padding:2px 6px; border-radius:4px; white-space:nowrap;
  background:color-mix(in srgb, var(--slate) 13%, transparent);
  color:var(--slate);
}
.dorm__n em.is-hot{ background:color-mix(in srgb, var(--red) 13%, transparent); color:var(--red); }
.dorm__v{
  font-family:var(--serif); font-size:16.5px; font-weight:700; color:var(--slate);
  font-variant-numeric:tabular-nums;
}
.dorm__v i{ font-style:normal; font-size:.58em; font-weight:600; color:var(--cream-faint); margin-left:2px; }
.dorm__d{ font-size:12.4px; color:var(--cream-dim); line-height:1.65; }
.dorm__row--sum{ background:color-mix(in srgb, var(--slate) 5%, var(--paper)); }
.dorm__row--sum .dorm__v{ color:var(--red); }
@media (max-width:760px){
  .dorm__row{ grid-template-columns:1fr auto; gap:6px 12px; padding:14px 16px; }
  .dorm__row--head{ display:none; }
  .dorm__n{ grid-column:1; }
  .dorm__v{ grid-column:2; text-align:right; }
  .dorm__d{ grid-column:1/-1; font-size:12px; }
}

/* ---------- 20.7 校园环境：四季说明条 ---------- */
.xenv__legend{
  list-style:none; display:grid; grid-template-columns:repeat(4,1fr);
  gap:1px; background:var(--line); border:1px solid var(--line);
  border-radius:var(--r-m); overflow:hidden;
  margin-top:clamp(14px,1.8vw,22px);
}
.xenv__legend li{
  background:var(--paper); padding:16px clamp(14px,1.6vw,20px) 17px;
  font-size:12.6px; color:var(--cream-dim); line-height:1.65;
  display:flex; flex-direction:column; gap:7px;
}
.xenv__legend li b{
  font-family:var(--serif); font-size:18px; font-weight:700; color:var(--brass);
  line-height:1;
}
@media (max-width:760px){
  .xenv__legend{ grid-template-columns:repeat(2,1fr); }
}

/* ---------- 20.8 就业率条形：真实数据版 ---------- */
@media (min-width:761px){
  .emp__row{ grid-template-columns:12.5em 1fr 4.8em; }
}
.emp__n{ line-height:1.4; }
.emp__row.is-below .emp__fill{ background:linear-gradient(90deg,#9aa39b,#bfc7c0); }
.emp__row.is-below .emp__v{ color:var(--cream-faint); }
