/* =========================================================================
   严颖课题组 · Yan Ying Research Group — V0.2 视觉重构
   设计语言:Apple 产品发布页式。极少颜色 · 大留白 · 强字号层级 · 克制动效。
   设计 token 集中在 :root。改配色/节奏只动这里。
   ========================================================================= */

:root {
  /* 背景:几乎纯黑,层次靠极细微的差值,不靠边框。统一为同一套黑银系统,区块不再明显发灰 */
  --bg:        #000000;
  --bg-soft:   #050608;   /* 极深灰,贴近纯黑,与 --bg 差值更小,区块间不再明显分层 */
  --bg-elev:   #0c0d10;   /* 卡片 hover 的轻微抬升,仍然很暗 */

  /* 文字:Apple 黑银灰阶 */
  --text:      #f5f5f7;   /* 主文字 / 银白 */
  --text-2:    #86868b;   /* 副文字 */
  --text-3:    #6e6e73;   /* 弱文字 */

  /* 信号色:冷银蓝(替代原科技蓝),只极小面积使用 */
  --signal:      #8aa6b6;
  --signal-soft: rgba(150, 178, 190, 0.25);

  /* 异常提示:低饱和铜酒红,仅作小面积「异常点」,不大面积使用 */
  --anomaly:   #a8514a;

  /* 点睛暖色:香槟暖灰金,低饱和、只小面积点缀(高光层次 / hover / 小强调) */
  --accent:      #c4b187;
  --accent-soft: rgba(196, 177, 135, 0.20);
  --accent-line: rgba(196, 177, 135, 0.38);

  /* 暖橙琥珀:Team 往下区块的小面积暖点缀(节点 / 重点端点 / hover),克制不刺眼 */
  --warm:        #d4924f;
  --warm-soft:   rgba(212, 146, 79, 0.14);
  --warm-line:   rgba(212, 146, 79, 0.42);
  --accent-copper: #a85f43;                  /* 微铜,极小面积点缀 */
  --accent-copper-soft: rgba(168, 95, 67, 0.16);

  /* 文字链接:克制银灰,几乎不抢眼 */
  --link:      #c7c7cc;
  --link-hi:   #f5f5f7;

  /* 极细 hairline,只在必要处出现 */
  --line:      rgba(255, 255, 255, 0.08);
  --line-soft: rgba(255, 255, 255, 0.05);

  /* 人物照片区专用:暖雾面底座 + 暖灰 hairline。比纯黑略亮一点,让证件照不突兀,但仍克制 */
  --photo-fog:      #1c1a17;   /* 暖灰雾面(顶部) */
  --photo-fog-deep: #111010;   /* 暖灰雾面(底部),与黑底自然过渡 */
  --photo-line:     rgba(214, 196, 170, 0.16);   /* 暖灰 hairline */

  --maxw:      1200px;   /* 通用内容容器(关于/团队/成果/联系/导航/页脚) */
  --maxw-text: 700px;    /* 阅读型文字行宽(区块标题段 / 招生正文) */
  --maxw-wide: 1440px;   /* 宽布局:研究方向模块 */
  --nav-h:     46px;

  /* 桌面端 Hero/导航 共用的左右边距:左侧比右侧多约 32px,
     让 Hero 主内容列不压边,并让 nav 品牌与 Hero 标题左缘对齐(消除 T 形错位) */
  --edge-r:    clamp(28px, 8vw, 140px);
  --edge-l:    clamp(60px, calc(8vw + 32px), 172px);

  /* 后续区块宽屏版心:容器更宽,但每个文本块仍受 --text-measure 约束,行宽克制 */
  --maxw-page:    1560px;
  --maxw-section: 1440px;
  --text-measure: 680px;

  --ease:      cubic-bezier(0.22, 1, 0.36, 1);
  --ease-slow: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { -webkit-text-size-adjust: 100%; scroll-padding-top: var(--nav-h); overflow-x: hidden; }

body {
  font-family: "SF Pro SC", "SF Pro Text", -apple-system, BlinkMacSystemFont,
    "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.6;
  letter-spacing: 0.01em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

a { color: inherit; text-decoration: none; }
svg { display: block; }

.container { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 28px; }
.note { color: var(--text-3); font-size: 0.8em; font-weight: 400; }

/* ---------- 滚动叙事 reveal:进入视口柔和渐显(进入即定格,不再回灰/闪烁) ---------- */
.reveal, .reveal-up, .reveal-left, .reveal-right, .reveal-fade {
  opacity: 0; will-change: opacity, transform;
  transition: opacity 1.05s var(--ease-slow), transform 1.05s var(--ease-slow), filter 1.05s var(--ease-slow);
}
.reveal, .reveal-up { transform: translate3d(0, 24px, 0); filter: blur(3px); }
.reveal-left  { transform: translate3d(-20px, 0, 0); filter: blur(3px); }
.reveal-right { transform: translate3d(20px, 0, 0);  filter: blur(3px); }
.reveal-fade  { transform: none; filter: blur(3px); }
/* 可见态强制为完全清晰:opacity 1 / transform none / filter none(防止卡在中途发灰) */
.reveal.is-visible, .reveal-up.is-visible, .reveal-left.is-visible,
.reveal-right.is-visible, .reveal-fade.is-visible {
  opacity: 1; transform: none; filter: none;
}
/* stagger 延迟:每级约 100ms,卡片逐个柔和进入 */
.reveal-delay-1 { transition-delay: .10s; }
.reveal-delay-2 { transition-delay: .20s; }
.reveal-delay-3 { transition-delay: .30s; }

/* 无障碍:减少动态效果时,所有内容直接显示,不位移、不模糊、不动画 */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal, .reveal-up, .reveal-left, .reveal-right, .reveal-fade {
    opacity: 1 !important; transform: none !important; filter: none !important; transition: none !important;
  }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  /* 关动效时丝线靠脉冲动画维持的低透明度会失效,这里给静态淡值兜底 */
  .hero__visual .flow-grp, .hero__visual .arc { opacity: .08 !important; }
  .hero__visual .node { opacity: .30 !important; }}

/* =========================================================================
   导航 — 极简吸顶,克制
   ========================================================================= */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  height: var(--nav-h);
  transition: background .5s var(--ease), backdrop-filter .5s var(--ease), border-color .5s var(--ease);
  border-bottom: 1px solid transparent;
}
.nav.is-scrolled {
  background: rgba(0, 0, 0, 0.42);
  backdrop-filter: saturate(160%) blur(14px);
  -webkit-backdrop-filter: saturate(160%) blur(14px);
  border-bottom-color: var(--line-soft);
}
.nav__inner {
  max-width: var(--maxw); margin: 0 auto; height: 100%;
  padding: 0 28px; display: flex; align-items: center; justify-content: space-between; gap: 24px;
}
/* 桌面端:导航与 Hero 共用同一套容器与左右边距,使品牌左缘与 Hero 标题对齐 */
@media (min-width: 901px) {
  .nav__inner {
    max-width: 1760px;
    padding: 0 var(--edge-r) 0 var(--edge-l);
  }
}
.nav__brand { display: flex; flex-direction: column; line-height: 1.28; }
.nav__brand-en { font-weight: 500; font-size: 13px; letter-spacing: .2px; color: var(--text); }
.nav__brand-sub { font-size: 10px; color: var(--text-3); letter-spacing: .4px; margin-top: 2px; }
.nav__links { display: flex; gap: 30px; }
.nav__links a {
  font-size: 12.5px; color: var(--text-2); padding: 4px 0;
  transition: color .3s var(--ease);
}
.nav__links a:hover { color: var(--text); }

.nav__toggle { display: none; flex-direction: column; gap: 5px; background: none; border: 0; cursor: pointer; padding: 8px; }
.nav__toggle span { width: 20px; height: 1.5px; background: var(--text); border-radius: 2px; transition: transform .35s var(--ease), opacity .35s var(--ease); }
.nav.is-open .nav__toggle span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.nav.is-open .nav__toggle span:nth-child(2) { opacity: 0; }
.nav.is-open .nav__toggle span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

/* =========================================================================
   Hero — 一屏一个重点:严颖课题组
   极简深色 + 一个克制的信号光环抽象视觉
   ========================================================================= */
.hero {
  position: relative; min-height: 100vh; min-height: 100svh;
  display: grid; align-items: center;
  padding: calc(var(--nav-h) + 40px) 0 96px; overflow: hidden;
  background: var(--bg);   /* 不透明:遮住身后的全站长卷层,Hero 用自己的独立背景 */
}
/* Hero 独立背景:神经连接曲线 full-bleed,铺满视口,线条从左右边缘进出(优先级最高) */
.hero__visual {
  position: absolute; top: 50%; left: 50%;
  width: 132vw; aspect-ratio: 1; transform: translate(-50%, -50%);
  z-index: 0; pointer-events: none;
}
.hero__visual .flow { fill: none; stroke: url(#heroGrad); stroke-linecap: round; }
.hero__visual .arc  { fill: none; stroke: url(#heroGrad); stroke-linecap: round; }
.hero__visual .node { fill: var(--signal); }
.hero__visual .pulse { animation: heroPulse 9s var(--ease) infinite; }
.hero__visual .pulse--2 { animation-delay: -3s; opacity: .035; }
.hero__visual .pulse--3 { animation-delay: -6s; opacity: .035; }
.hero__visual .node { animation: nodeGlow 6s var(--ease) infinite; }
.hero__visual .node:nth-child(2) { animation-delay: -1.5s; }
.hero__visual .node:nth-child(3) { animation-delay: -3s; }
.hero__visual .node:nth-child(4) { animation-delay: -4.5s; }
/* 一个暖金焦点节点:全图唯一暖色信号点,给视觉一个落点 */
.hero__visual .node:nth-child(3) { fill: var(--accent); r: 3.2; }
/* 内容层全屏构图容器:左主标题列 + 右研究焦点列,左右空间都参与设计 */
.hero__inner {
  position: relative; z-index: 2; width: 100%;
  max-width: 1760px; margin: 0 auto;
  padding: 0 var(--edge-r) 0 var(--edge-l);   /* 左缘右移约 32px,不再压边 */
  display: grid; grid-template-columns: minmax(0, 1fr) auto;
  align-items: center; gap: clamp(48px, 8vw, 132px);
  transform: translateY(-2.5vh);   /* 略高于正中,不是正中一坨 */
}
/* Hero 背景所需的脉冲 / 节点呼吸关键帧(全站长卷背景已移除,仅 Hero 与过渡桥使用) */
@keyframes heroPulse { 0%, 100% { opacity: .045; } 50% { opacity: .10; } }
@keyframes nodeGlow  { 0%, 100% { opacity: .12; }  50% { opacity: .36; } }

/* =========================================================================
   Hero → About 自然过渡 — 不画桥接线,用渐隐 + 渐变完成
   Hero 底部丝线被黑雾吃掉,平滑落到 About 底色;About 顶部再从深黑渐入正常底色。
   ========================================================================= */
/* Hero 底部渐隐层:从透明过渡到 About 的底色,把背景丝线在底部慢慢吞掉 */
.hero__fade {
  position: absolute; left: 0; right: 0; bottom: -1px;
  height: clamp(220px, 28vh, 340px);
  z-index: 1; pointer-events: none;
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, .40) 46%,
    var(--bg-soft) 100%
  );
}
/* 中心轻微聚焦,但保留边缘线条的空间感(不再把左右压黑) */
.hero::after {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(ellipse 92% 82% at 50% 50%, transparent 58%, var(--bg) 100%);
}
/* 开场光:标题后方一层极克制的暖/冷光晕,打破纯黑,给首屏纵深与重心 */
.hero::before {
  content: ""; position: absolute; z-index: 1; pointer-events: none;
  left: 50%; top: 46%; transform: translate(-50%, -50%);
  width: min(820px, 90vw); height: min(560px, 70vh);
  background:
    radial-gradient(ellipse 46% 40% at 50% 42%, rgba(196,177,135,.10), transparent 68%),
    radial-gradient(ellipse 62% 56% at 50% 54%, rgba(138,166,182,.07), transparent 72%);
  filter: blur(8px);
  animation: heroAura 12s var(--ease) infinite;
}
@keyframes heroAura {
  0%, 100% { opacity: .75; transform: translate(-50%, -50%) scale(1); }
  50%      { opacity: 1;   transform: translate(-50%, -50%) scale(1.05); }
}

/* ---------- Hero 入场序列 — 加载即播、一次性、有节奏(发布页式) ---------- */
@keyframes heroRise   { from { opacity: 0; transform: translate3d(0, 22px, 0); filter: blur(5px); } to { opacity: 1; transform: none; filter: blur(0); } }
@keyframes heroSlideL { from { opacity: 0; transform: translate3d(-22px, 0, 0); filter: blur(5px); } to { opacity: 1; transform: none; filter: blur(0); } }
@keyframes navDrop    { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: none; } }
.nav               { animation: navDrop 1s var(--ease-slow) both; }
.hero__eyebrow     { animation: heroSlideL 1s   var(--ease-slow) .15s both; }
.hero__title       { animation: heroSlideL 1.1s var(--ease-slow) .30s both; }
.hero__title-en    { animation: heroRise 1s   var(--ease-slow) .55s both; }
.hero__lead        { animation: heroRise 1s   var(--ease-slow) .72s both; }
.hero__actions     { animation: heroRise 1s   var(--ease-slow) .90s both; }
.hero__aside-label { animation: heroRise .9s  var(--ease-slow) .95s both; }
.hero__focus li    { animation: heroRise .85s var(--ease-slow) both; }
.hero__focus li:nth-child(1) { animation-delay: 1.04s; }
.hero__focus li:nth-child(2) { animation-delay: 1.13s; }
.hero__focus li:nth-child(3) { animation-delay: 1.22s; }
.hero__focus li:nth-child(4) { animation-delay: 1.31s; }
.hero__focus li:nth-child(5) { animation-delay: 1.40s; }
.hero__focus li:nth-child(6) { animation-delay: 1.49s; }
.hero__focus li:nth-child(7) { animation-delay: 1.58s; }

.hero__content { position: relative; z-index: 2; max-width: 820px; text-align: left; }
.hero__eyebrow {
  font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase;
  color: var(--text-3); margin-bottom: 28px; font-weight: 500;
  display: inline-flex; align-items: center; gap: 12px;
}
/* 暖金小短线作开场强调,左侧引导,克制点睛 */
.hero__eyebrow::before {
  content: ""; width: 26px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent-line));
}
.hero__title {
  font-size: clamp(44px, 8vw, 104px); font-weight: 500;
  letter-spacing: -0.005em; line-height: 1.06;
  background: linear-gradient(176deg, #fdfdfe 0%, #efece4 64%, #e3ddd0 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
/* 英文:宽字距标记,颜色更柔和 */
.hero__title-en {
  font-size: clamp(12px, 1.4vw, 16px); font-weight: 400; margin-top: 22px;
  color: rgba(245, 245, 247, 0.42); letter-spacing: 0.34em; text-indent: 0.34em; text-transform: uppercase;
}
/* 标题下一道极细暖金渐隐分隔,给层次与重心(左对齐,从左起) */
.hero__title-en::after {
  content: ""; display: block; width: 46px; height: 1px; margin: 20px 0 0;
  background: linear-gradient(90deg, var(--accent-line), transparent);
}
.hero__lead {
  margin: 38px 0 0; max-width: 560px; color: var(--text-2);
  font-size: clamp(16px, 2vw, 21px); font-weight: 400; line-height: 1.5;
}
.hero__actions { margin-top: 46px; display: flex; gap: 14px; justify-content: flex-start; flex-wrap: wrap; }

/* ---------- 右侧研究焦点组 — 极简,编号 + 标签 + 焦点点,平衡画面不抢主标题 ---------- */
.hero__aside { position: relative; z-index: 2; justify-self: end; min-width: 234px; }
.hero__aside-label {
  font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--text-3);
  margin-bottom: 8px; padding-left: 6px;   /* 与下方行内左留白(12px 6px)精确对齐 */
}
.hero__focus { list-style: none; display: grid; gap: 1px; }
/* 极细分隔线,轻量列表分行 */
.hero__focus li + li .hero__focus-link { border-top: 1px solid var(--line-soft); }
/* 每一项是可点击链接:轻量列表行,内容留白不贴边;hover 不做方框,只文字变深 + 小点变亮 */
.hero__focus-link {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 14px;
  padding: 12px 6px; color: inherit; cursor: pointer;
  transition: color .3s var(--ease);
}
.hero__focus-link:hover,
.hero__focus-link:focus-visible { outline: none; }
.hero__focus-link:hover .hero__focus-en,
.hero__focus-link:focus-visible .hero__focus-en { color: var(--text); }
.hero__focus-link:hover .hero__focus-no,
.hero__focus-link:focus-visible .hero__focus-no { color: var(--text-2); }
.hero__focus-link:hover .hero__focus-dot,
.hero__focus-link:focus-visible .hero__focus-dot { opacity: 1; }
.hero__focus-no { font-size: 11px; font-weight: 600; letter-spacing: 1.5px; color: var(--text-3); transition: color .3s var(--ease); }
.hero__focus-en { font-size: 13px; color: var(--text-2); letter-spacing: .02em; white-space: nowrap; transition: color .3s var(--ease); }
.hero__focus-dot { justify-self: end; width: 5px; height: 5px; border-radius: 50%; background: var(--text-3); opacity: .7; transition: background .3s var(--ease), opacity .3s var(--ease); }
/* 唯一一个暖金焦点点,呼应全站点睛色 */
.hero__focus li:first-child .hero__focus-dot { background: var(--accent); opacity: 1; box-shadow: 0 0 8px var(--accent-soft); }

.hero__scroll {
  position: absolute; bottom: 28px; left: 50%; transform: translateX(-50%); z-index: 2;
  width: 22px; height: 34px; border: 1.5px solid var(--line); border-radius: 12px;
  display: flex; justify-content: center;
}
.hero__scroll-dot { width: 3px; height: 7px; background: var(--text-2); border-radius: 4px; margin-top: 6px; animation: scrollDot 2s var(--ease) infinite; }
@keyframes scrollDot { 0%{transform:translateY(0);opacity:1} 70%{transform:translateY(11px);opacity:0} 100%{opacity:0} }
/* 桌面端:滚动指示器移到右下角(与 Hero 右缘对齐),低透明度弱存在;移动端仍居中 */
@media (min-width: 901px) {
  .hero__scroll {
    left: auto; right: var(--edge-r); transform: none;
    opacity: .55; transition: opacity .3s var(--ease);
  }
  .hero__scroll:hover, .hero__scroll:focus-visible { opacity: 1; }
}

/* ---------- 超宽屏(1600px+):版心放宽、字号继续随视口生长,两侧留白不再过量 ---------- */
@media (min-width: 1600px) {
  .hero__inner, .nav__inner { max-width: 2080px; }   /* 同步放宽导航,保持品牌与标题左缘对齐 */
  .hero__inner { gap: clamp(132px, 11vw, 250px); }
  .hero__content { max-width: 980px; }
  .hero__title { font-size: clamp(104px, 6.4vw, 138px); }
  .hero__title-en { font-size: clamp(16px, 0.95vw, 20px); }
  .hero__lead { font-size: clamp(21px, 1.2vw, 25px); max-width: 640px; margin-top: 44px; }
  .hero__actions { margin-top: 54px; }
  .hero__eyebrow { font-size: 13px; }
  .hero__aside { min-width: 300px; }
  .hero__focus-link { padding: 14px 8px; gap: 16px; }
  .hero__focus-en { font-size: 14.5px; }
  .hero__focus-no { font-size: 12px; }
  .hero__aside-label { padding-left: 8px; }
  /* 滚动指示器与版心右缘对齐(版心被 max-width 居中后,右缘不再等于视口右缘) */
  .hero__scroll { right: max(var(--edge-r), calc((100% - 2080px) / 2 + var(--edge-r))); }
}

/* ---------- 2K/带鱼屏(2200px+):专为 2560×1440 —— 版心占满更多画布,双列拉开 ---------- */
@media (min-width: 2200px) {
  .hero__inner, .nav__inner { max-width: 2340px; }
  .hero__content { max-width: 1080px; }
  .hero__title { font-size: clamp(138px, 5.9vw, 152px); }
  .hero__lead { font-size: clamp(25px, 1.05vw, 27px); max-width: 700px; }
  .hero__aside { min-width: 340px; }
  .hero__focus-link { padding: 16px 10px; }
  .hero__focus-en { font-size: 15.5px; }
  .hero__focus-no { font-size: 12.5px; }
  .hero__aside-label { padding-left: 10px; }
  .hero__scroll { right: max(var(--edge-r), calc((100% - 2340px) / 2 + var(--edge-r))); }
}

/* ---------- 按钮 — Apple 风格系统字体,克制、精致、轻 ---------- */
.btn {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 8px 24px; border-radius: 980px;
  font-size: 14px; font-weight: 500; letter-spacing: .04em;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei",
    "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  transition: transform .35s var(--ease), background .35s var(--ease), color .35s var(--ease),
              border-color .35s var(--ease), box-shadow .35s var(--ease);
  border: 1px solid transparent; cursor: pointer;
}
/* 主按钮:微香槟银白(非死白),深黑灰字,薄高光 + 柔和投影;hover 仅微浮起、微亮 */
.btn--primary {
  background: linear-gradient(180deg, #fbfbf9 0%, #eceae6 100%); color: #1c1c1e;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 6px 16px rgba(0,0,0,.42);
}
.btn--primary:hover {
  transform: translateY(-1px);
  background: linear-gradient(180deg, #ffffff 0%, #f2efe9 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8), 0 9px 22px rgba(0,0,0,.5);
}
.btn--primary:active { transform: translateY(0); }
/* 次按钮:极细边线 + 半透明暗底,hover 只是轻微亮起,不发光、不变色 */
.btn--ghost {
  color: var(--link); border-color: rgba(255,255,255,.14);
  background: rgba(255,255,255,.025);
}
.btn--ghost::after {
  content: "›"; margin-left: 7px; transition: transform .3s var(--ease), color .3s var(--ease); color: var(--text-3);
}
.btn--ghost:hover {
  color: var(--text); border-color: rgba(255,255,255,.28);
  background: rgba(255,255,255,.06);
}
.btn--ghost:hover::after { transform: translateX(2px); color: var(--text-2); }
/* Scholar 按钮:沿用 ghost,但文案自带 ↗,去掉默认的 › 箭头;暖灰微点缀 */
.btn--scholar::after { content: none; }
.btn--scholar:hover { border-color: var(--accent-line); color: var(--text); }
.section__actions { margin-top: 22px; }

/* =========================================================================
   通用 section — 大间距、统一宽度、强层级
   ========================================================================= */
.section { padding: clamp(110px, 17vh, 200px) 0; position: relative; }
/* 区块恢复不透明黑银底色:Hero 之后保持干净,不再有长卷网络透出 */
/* About:顶部从深黑渐入正常底色,与 Hero 底部渐隐自然接续;略收顶部留白,避免中间空黑断层 */
.about {
  position: relative;
  padding-top: clamp(110px, 14vh, 170px);
  background: linear-gradient(
    to bottom,
    rgba(5, 6, 8, .85) 0%,
    var(--bg-soft) 180px,
    var(--bg-soft) 100%
  );
}
.research     { background: var(--bg); }
.team         { background: var(--bg-soft); }
.achievements { background: var(--bg); }
.admission    { background: var(--bg-soft); }
.contact      { background: var(--bg); }

.section__head { max-width: var(--maxw-text); margin: 0 auto clamp(64px, 9vh, 110px); text-align: center; }
.section__eyebrow {
  font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--text-3);
  margin-bottom: 18px; font-weight: 500;
  display: inline-flex; align-items: center; gap: 9px;
}
/* 暖金小圆点:贯穿各区标题的统一点睛 */
.section__eyebrow::before {
  content: ""; width: 5px; height: 5px; border-radius: 50%;
  background: var(--accent); box-shadow: 0 0 8px var(--accent-soft);
}
.section__title { font-size: clamp(32px, 5.2vw, 64px); font-weight: 600; letter-spacing: -0.03em; line-height: 1.06; text-wrap: balance; }
.section__desc { margin-top: 22px; color: var(--text-2); font-size: clamp(16px, 2vw, 20px); line-height: 1.55; }

/* 标签 — 极轻,无填充块感 */
.tag {
  display: inline-block; padding: 6px 14px; border-radius: 980px; font-size: 13px;
  color: var(--text-2); border: 1px solid var(--line); background: transparent;
  transition: border-color .3s var(--ease), color .3s var(--ease);
}
.tag:hover { border-color: var(--accent-line); color: var(--text); }
.tag--sm { padding: 5px 12px; font-size: 12.5px; }

/* =========================================================================
   关于 严颖 — 大标题 + 简洁身份 + 关键标签 + portrait 占位
   ========================================================================= */
.about__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.9fr); gap: clamp(40px, 6vw, 80px); align-items: center; }

/* 正式头像 portrait card:辅助元素,不占半屏。桌面端限宽 ≤320px 靠右 */
.about__photo { order: 2; width: 100%; max-width: 320px; justify-self: end; }
.about__photo-ph {
  position: relative; aspect-ratio: 4 / 5; border-radius: 18px; overflow: hidden;
  border: 1px solid var(--photo-line);                     /* 暖灰 hairline,不是大白卡边 */
  background:
    radial-gradient(ellipse 120% 80% at 50% 16%, rgba(214,196,170,.07), transparent 62%),
    linear-gradient(180deg, var(--photo-fog) 0%, var(--photo-fog-deep) 100%);  /* 暖雾面底座,替代纯黑/纯白 */
  box-shadow: 0 18px 44px rgba(0,0,0,.42);                  /* 轻微阴影,不发光 */
  display: flex; align-items: flex-end; justify-content: center;
}
/* 真实照片:object-fit cover,脸部自然居上;轻降饱和/降亮,让白底蓝底证件照不再像贴纸 */
.about__photo-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: 50% 26%; z-index: 2; display: block;
  filter: saturate(.88) brightness(.95) contrast(1.02);
}
/* 双层遮罩:底部柔和压暗 + 四周轻 vignette,把照片边缘揉进暖雾底,而不是硬贴一张照片 */
.about__photo-ph::after {
  content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; border-radius: 18px;
  background:
    radial-gradient(ellipse 78% 70% at 50% 42%, transparent 58%, rgba(20,16,12,.34) 100%),
    linear-gradient(180deg, rgba(20,16,12,.10) 0%, transparent 26%, transparent 60%, rgba(20,16,12,.30) 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03);
}
/* 人像剪影 */
.about__photo-ph::before {
  content: ""; position: absolute; left: 50%; bottom: -4%; transform: translateX(-50%);
  width: 58%; aspect-ratio: 3 / 4;
  background: radial-gradient(ellipse 50% 36% at 50% 22%, rgba(255,255,255,.07), transparent 70%);
  border-radius: 50% 50% 0 0 / 64% 64% 0 0;
  box-shadow: inset 0 -1px 0 rgba(255,255,255,.04);
}
/* 占位元素默认隐藏;只有照片加载失败时(.is-fallback)才显示,绝不叠在真实照片上 */
.about__photo-ph .ph-head,
.about__photo-ph .ph-label { display: none; }
.about__photo-ph.is-fallback .ph-head {
  display: block; position: absolute; left: 50%; top: 26%; transform: translateX(-50%);
  width: 30%; aspect-ratio: 1; border-radius: 50%; background: rgba(255,255,255,.06);
}
.about__photo-ph.is-fallback .ph-label {
  display: block; position: relative; z-index: 2; margin-bottom: 26px; text-align: center; color: var(--text-3);
}
.about__photo-ph.is-fallback .ph-label span { display: block; font-size: 13px; }
.about__photo-ph.is-fallback .ph-label small { font-size: 11.5px; opacity: .7; }

.about__text { order: 1; }
.about__role { font-size: 18px; color: var(--text-2); margin: 8px 0 12px; font-weight: 400; }
/* 官方主页链接:银灰,hover 变亮,不用蓝 */
.about__link { display: inline-block; margin: 0 0 24px; font-size: 14px; color: var(--link); transition: color .3s var(--ease); }
.about__link:hover { color: var(--link-hi); }
.about__tags { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 30px; }
/* 详细经历弱化:不密密麻麻,做成轻列表 */
.about__facts { list-style: none; display: grid; gap: 0; margin-bottom: 26px; }
.about__facts li {
  display: grid; grid-template-columns: 84px 1fr; gap: 18px; font-size: 14.5px; color: var(--text-2);
  padding: 14px 0; border-bottom: 1px solid var(--line-soft);
}
.about__facts li:last-child { border-bottom: 0; }
.about__facts li span { color: var(--text-3); font-size: 13px; }
.about__bio { color: var(--text-2); font-size: 15px; line-height: 1.7; max-width: 46ch; }

/* =========================================================================
   研究方向 — 5 个「研究产品」模块,左右交替,大留白
   ========================================================================= */
/* 研究区用宽布局容器,不再被通用窄版心限死 */
.research > .container { max-width: var(--maxw-wide); }
.research__list { display: grid; gap: clamp(88px, 14vh, 180px); }
/* 后续方法提示：克制的脚注式说明，居中、细线分隔、次级文字，不抢方向模块 */
.research__note {
  max-width: var(--maxw-text); margin: clamp(72px, 11vh, 140px) auto 0;
  padding-top: clamp(36px, 5vh, 60px); border-top: 1px solid var(--line-soft);
  text-align: center; font-size: 14.5px; color: var(--text-3); line-height: 1.75;
}
.rmod {
  display: grid; grid-template-columns: 1fr 1.08fr; gap: clamp(48px, 7vw, 132px); align-items: center;
  scroll-margin-top: 90px;   /* Research Focus 跳转时,目标模块避开吸顶导航 */
}
.rmod:nth-child(even) { grid-template-columns: 1.08fr 1fr; }
.rmod:nth-child(even) .rmod__visual { order: -1; }   /* 偶数行视觉在左 */
.rmod__no {
  font-size: 13px; font-weight: 600; letter-spacing: 3px; color: var(--text-3); margin-bottom: 18px;
}
/* 标题 = Apple 式短句 tagline(克制、稍轻) */
.rmod__title { font-size: clamp(24px, 3.1vw, 36px); font-weight: 500; letter-spacing: -0.015em; line-height: 1.2; max-width: 20ch; text-wrap: balance; }
/* 学术方向名作为副标题保留 */
.rmod__name { font-size: clamp(15px, 1.6vw, 17px); font-weight: 500; color: var(--text); margin: 14px 0 4px; letter-spacing: -.01em; }
.rmod__en { font-size: 12px; color: var(--text-3); margin: 0 0 18px; letter-spacing: .12em; text-transform: uppercase; }
.rmod__desc { font-size: clamp(14.5px, 1.6vw, 16px); color: var(--text-2); line-height: 1.62; max-width: 30ch; }
.rmod__tags { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 24px; }

/* 视觉:几乎通透,无盒子边框,图形大而轻,像产品主视觉 */
.rmod__visual {
  position: relative; aspect-ratio: 4 / 3; border-radius: 28px;
  display: grid; place-items: center;
}
.rmod__visual::before { /* 极淡通透光晕,无硬边,让视觉区有存在感(非占位) */
  content: ""; position: absolute; inset: 0; border-radius: 28px;
  background: radial-gradient(ellipse 80% 80% at 50% 46%, rgba(255,255,255,.065), transparent 72%);
}
.rmod__svg { width: 96%; height: 96%; position: relative; z-index: 1; overflow: visible; }
.rmod__svg .stroke { fill: none; stroke: url(#rg); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.rmod__svg .stroke-dim { fill: none; stroke: rgba(255,255,255,.22); stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.rmod__svg .dot { fill: rgba(255,255,255,.62); }
.rmod__svg .dot-accent { fill: var(--signal); }
.rmod__svg .glowdot { fill: var(--anomaly); }
/* 缓慢、轻微的生命感 */
@keyframes svgPulse { 0%,100%{opacity:.4} 50%{opacity:1} }
@keyframes svgDash  { to { stroke-dashoffset: 0; } }
@keyframes svgFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-3px)} }
.rmod__svg .anim-pulse { animation: svgPulse 3.2s var(--ease) infinite; transform-box: fill-box; transform-origin: center; }
.rmod__svg .anim-wave  { stroke-dasharray: 600; stroke-dashoffset: 600; animation: svgDash 3.5s var(--ease-slow) forwards; }
.rmod__svg .anim-float { animation: svgFloat 5s var(--ease) infinite; transform-box: fill-box; }

/* =========================================================================
   团队 — 降噪:人和方向,不是数据库列表
   ========================================================================= */
.team__blocks { display: grid; gap: clamp(48px, 7vh, 80px); }
.team__group {
  font-size: 13px; letter-spacing: 1.5px; color: var(--text-3); text-transform: uppercase;
  margin-bottom: 28px; font-weight: 500;
}
/* 成员改为融入黑底的信息行:透明底、极细 hairline 分隔,无灰色名片块、无大圆角卡片 */
.team__cards { display: grid; grid-template-columns: repeat(3, 1fr); }
.pcard {
  display: flex; gap: 15px; align-items: flex-start; padding: 22px 26px;
  background: transparent; border: 0; border-radius: 0;
  border-top: 1px solid rgba(255,255,255,.06);
  transition: opacity 1s var(--ease-slow), transform 1s var(--ease-slow), filter 1s var(--ease-slow);
}
/* 首列对齐区块标题左缘,2/3 列用列间细线分隔(无灰块) */
.pcard:not(.pcard--lead):nth-child(3n+1) { padding-left: 0; }
.pcard:not(.pcard--lead):nth-child(3n+2),
.pcard:not(.pcard--lead):nth-child(3n+3) { border-left: 1px solid rgba(255,255,255,.055); }
/* hover 只让文字略亮,整块不变灰 */
.pcard:hover .pcard__name { color: #ffffff; }
.pcard:hover .pcard__note, .pcard:hover .pcard__hl { color: var(--text-2); }
.pcard:hover .pcard__avatar { border-color: rgba(255,255,255,.18); }
/* 头像圆标:轻细环,不像按钮、不发光 */
.pcard__avatar {
  flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%;
  display: grid; place-items: center; font-size: 16px; font-weight: 500; color: var(--text-2);
  background: rgba(255,255,255,.025); border: 1px solid rgba(255,255,255,.08);
  transition: border-color .35s var(--ease);
}
.pcard__name { font-size: 16px; font-weight: 600; letter-spacing: -.01em; transition: color .3s var(--ease); }
.pcard__stage { font-size: 12.5px; color: var(--text-2); margin: 3px 0 8px; }
.pcard__note { font-size: 13.5px; color: var(--text-2); line-height: 1.5; transition: color .3s var(--ease); }
.pcard__hl { font-size: 12.5px; color: var(--text-3); margin-top: 6px; line-height: 1.5; transition: color .3s var(--ease); }
/* 导师:透明横向信息行,上下各一条 hairline,不再是大灰卡 */
.pcard--lead { grid-column: 1 / -1; padding: 28px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.pcard--lead .pcard__avatar { width: 52px; height: 52px; flex-basis: 52px; font-size: 20px; background: rgba(255,255,255,.04); border-color: rgba(255,255,255,.10); color: var(--text); }
.pcard--lead .pcard__name { font-size: 20px; }
.pcard--open .pcard__avatar { color: var(--signal); }
.pcard--open .pcard__name { color: var(--text-2); }
/* Team 成员入场:轻位移(18px)+ 轻模糊(2px),1s 柔和淡入;进入即定格,不灰一下再闪 */
.team .pcard.reveal-up { transform: translate3d(0, 18px, 0); filter: blur(2px); }
.team .pcard.reveal-up.is-visible { opacity: 1; transform: none; filter: none; }

/* ---------- 硕士生照片卡:小圆头像,暖雾面底 + hairline + 轻 vignette,照片融入页面 ---------- */
.pcard--member { align-items: center; }
.pcard--member .pcard__avatar { width: 56px; height: 56px; flex-basis: 56px; font-size: 18px; }
.pcard__photo {
  position: relative; flex: 0 0 56px; width: 56px; height: 56px; border-radius: 50%;
  overflow: hidden; display: grid; place-items: center;
  background:
    radial-gradient(ellipse 120% 90% at 50% 14%, rgba(214,196,170,.10), transparent 60%),
    linear-gradient(180deg, var(--photo-fog) 0%, var(--photo-fog-deep) 100%);
  border: 1px solid var(--photo-line);
  box-shadow: 0 6px 16px rgba(0,0,0,.36);
  transition: border-color .35s var(--ease), box-shadow .35s var(--ease);
}
/* 照片本体:轻降饱和/降亮,白底蓝底证件照不再像贴纸 */
.pcard__img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: 50% 28%; z-index: 2; display: block;
  filter: saturate(.85) brightness(.94) contrast(1.02);
}
/* 圆底四周轻 vignette,把证件照边缘揉进暖雾底 */
.pcard__photo::after {
  content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; border-radius: 50%;
  background: radial-gradient(ellipse 76% 72% at 50% 40%, transparent 54%, rgba(20,16,12,.42) 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.04);
}
.pcard--member:hover .pcard__photo { border-color: rgba(214,196,170,.30); box-shadow: 0 8px 20px rgba(0,0,0,.46); }
/* 照片加载失败:显示姓名兜底,不破图 */
.pcard__photo-fb { display: none; position: relative; z-index: 4; font-size: 18px; font-weight: 500; color: var(--text-2); }
.pcard__photo.is-fallback .pcard__photo-fb { display: block; }
.pcard__photo.is-fallback::after { background: none; }

/* ---------- 本科生 / 项目参与学生:按研究方向分块,无照片,纯文字 ---------- */
.team__ugroups { display: grid; gap: clamp(26px, 3.4vh, 40px); }
.ugroup__dir {
  font-size: 14px; font-weight: 600; color: var(--text); letter-spacing: -.01em;
  padding-bottom: 11px; margin-bottom: 2px; border-bottom: 1px solid var(--line-soft);
  display: flex; align-items: center; gap: 10px;
}
/* 方向前的小暖点,呼应研究方向体系 */
.ugroup__dir::before {
  content: ""; flex: 0 0 auto; width: 5px; height: 5px; border-radius: 50%;
  background: var(--warm); box-shadow: 0 0 8px var(--warm-soft);
}
/* 本科生条目两列:同一研究方向下的同学并排两列,紧凑均衡,不再单列拖很长 */
.ugroup__list {
  list-style: none; display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: clamp(28px, 4vw, 60px);
}
.urow {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px;
  padding: 11px 2px; border-bottom: 1px solid var(--line-soft);
  transition: color .3s var(--ease);
}
/* 去掉最后一行(末 1–2 项)的底线,避免分组结尾多一条悬空线 */
.ugroup__list .urow:last-child,
.ugroup__list .urow:nth-last-child(2):nth-child(2n+1) { border-bottom: 0; }
.urow__name { font-size: 15px; font-weight: 600; color: var(--text); letter-spacing: -.01em; }
.urow__stage { font-size: 12px; color: var(--text-3); }
.urow__note { flex-basis: 100%; font-size: 13px; color: var(--text-2); line-height: 1.55; }

/* =========================================================================
   成果 — 数字像 Apple 参数,论文卡片干净
   ========================================================================= */
.stats {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 0;
  margin-bottom: clamp(64px, 8vh, 100px); max-width: 1080px; margin-left: auto; margin-right: auto;
}
.stat { text-align: center; padding: 12px 18px; position: relative; }
.stat + .stat::before { content: ""; position: absolute; left: 0; top: 18%; bottom: 18%; width: 1px; background: var(--line-soft); }
.stat__num {
  display: block; font-size: clamp(40px, 6vw, 68px); font-weight: 600; letter-spacing: -0.03em;
  color: var(--text);
}
.stat__label { display: block; margin-top: 10px; font-size: 12.5px; color: var(--text-3); line-height: 1.5; }

.achv__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line-soft); border-radius: 16px; }
.acard {
  padding: 30px 26px; background: var(--bg); transition: background .35s var(--ease);
  display: flex; flex-direction: column;
}
.acard:hover { background: var(--bg-elev); }
.acard__kind { font-size: 11.5px; letter-spacing: 1px; color: var(--text-3); text-transform: uppercase; }
.acard__title { font-size: 16.5px; font-weight: 600; margin: 14px 0 12px; line-height: 1.45; letter-spacing: -.01em; }
.acard__meta { font-size: 13.5px; color: var(--text-2); line-height: 1.5; margin-top: auto; }
.acard__sub { font-size: 12px; color: var(--text-3); margin-top: 10px; }

/* =========================================================================
   论文目录 / Publications — 最新论文播报位 + Apple 式轻量列表
   ========================================================================= */
.publications { background: var(--bg-soft); }

.scholar-badge {
  display: inline-flex;
  margin-top: 18px;
  line-height: 0;
  opacity: .9;
  transition: opacity .3s var(--ease);
}
.scholar-badge:hover,
.scholar-badge:focus-visible { opacity: 1; }
.scholar-badge:focus-visible { outline: 1px solid var(--accent-line); outline-offset: 5px; border-radius: 2px; }
.scholar-badge img { display: block; width: auto; max-width: 100%; height: 20px; }

/* Scholar 引用指标条:仅当部署版成功读到 data/google-scholar-stats.json 时由 JS 注入,
   平时挂载点为空、零占位。hairline 上下线 + 三个数字,克制融入,不做卡片。 */
.sstats { margin-bottom: clamp(36px, 5vh, 56px); }
.sstats__row {
  display: flex; flex-wrap: wrap; gap: clamp(28px, 5vw, 72px);
  padding: 18px 2px 16px;
  border-top: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft);
}
.sstats__item { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.sstats__num { font-size: clamp(22px, 2.6vw, 30px); font-weight: 600; letter-spacing: -.01em; color: var(--text); }
.sstats__label { font-size: 12px; color: var(--text-3); letter-spacing: .04em; }
.sstats__meta { margin-top: 10px; font-size: 12px; color: var(--text-3); }
.sstats__meta a { color: var(--link); }

/* 最新论文播报位:暖意面板 + 左右分栏(标题信息 / 动作按钮),默认静态展示位;
   部署版同步到 data/papers.json 时,标题与 meta 会被替换为最新一篇 */
.latest {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: clamp(20px, 4vw, 44px);
  padding: clamp(24px, 3vw, 34px) clamp(24px, 3vw, 38px);
  border-radius: 18px; border: 1px solid var(--line);
  background:
    radial-gradient(ellipse 120% 180% at 0% 0%, var(--warm-soft), transparent 58%),
    var(--bg-elev);
  margin-bottom: clamp(40px, 6vh, 64px);
}
.latest__main { min-width: 0; }
.latest__eyebrow {
  font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--warm);
  font-weight: 600; display: inline-flex; align-items: center; gap: 8px;
}
.latest__title { font-size: clamp(18px, 2.4vw, 25px); font-weight: 600; letter-spacing: -.01em; line-height: 1.32; margin: 12px 0 8px; max-width: 42ch; }
.latest__meta { font-size: 13.5px; color: var(--text-2); line-height: 1.5; }
.latest__actions { display: flex; gap: 12px; flex-wrap: wrap; flex-shrink: 0; }

/* 论文列表:透明行 + hairline 分隔,无灰块、无 gap 露底(避免 reveal 时父级灰底透出) */
.pub__list { display: grid; gap: 0; }
.paper {
  display: grid; grid-template-columns: 196px minmax(0, 1fr) auto;
  gap: clamp(16px, 3vw, 48px); align-items: start;
  padding: 24px 2px; border-top: 1px solid var(--line-soft);
}
.paper__left { display: flex; flex-direction: column; gap: 8px; }
.paper__year { font-size: 15px; font-weight: 600; color: var(--text); letter-spacing: .01em; }
.paper__type { font-size: 12px; color: var(--text-3); }
.paper__dir {
  align-self: flex-start; font-size: 11.5px; color: var(--text-2);
  border: 1px solid var(--line); border-radius: 980px; padding: 3px 11px; line-height: 1.5;
}
.paper__title { font-size: clamp(15.5px, 1.7vw, 18px); font-weight: 600; line-height: 1.45; letter-spacing: -.01em; }
.paper__new {
  display: inline-block; margin-left: 10px; font-size: 10.5px; font-weight: 700; letter-spacing: .08em;
  color: var(--warm); border: 1px solid var(--warm-line); border-radius: 980px; padding: 1px 8px; vertical-align: middle;
}
.paper__venue { font-size: 13px; color: var(--text-2); margin-top: 9px; line-height: 1.55; }
.paper__link { align-self: center; font-size: 13px; color: var(--link); white-space: nowrap; transition: color .3s var(--ease); }
.pub__tail { margin-top: 30px; font-size: 13.5px; color: var(--text-3); }

/* reveal 合规:整行 opacity:0 + 位移 + 模糊,进入视口后整行点亮并定格;hover 仅在 is-visible 后生效 */
.publications .paper.reveal-up { transform: translate3d(0, 18px, 0); filter: blur(2px); }
.publications .paper.reveal-up.is-visible { opacity: 1; transform: none; filter: none; }
.paper.is-visible .paper__link:hover { color: var(--link-hi); }
.paper:not(.is-visible) .paper__link { pointer-events: none; }

/* =========================================================================
   招生
   ========================================================================= */
.admission__wrap { max-width: 960px; }
.admission__lead { text-align: center; max-width: var(--maxw-text); margin: 0 auto clamp(48px,6vh,68px); color: var(--text-2); font-size: clamp(16px,2vw,19px); line-height: 1.7; }
.admission__lead p + p { margin-top: 18px; }
.admission__lead strong { color: var(--text); font-weight: 500; }
.admission__cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--line-soft); border-radius: 16px; margin-bottom: clamp(48px,6vh,68px); }
.adcard { padding: 32px 30px; background: var(--bg-soft); transition: background .35s var(--ease); }
.adcard:hover { background: var(--bg-elev); }
.adcard__icon { color: var(--signal); font-size: 15px; }
.adcard__title { font-size: 18px; font-weight: 600; margin: 12px 0 10px; letter-spacing: -.01em; }
.adcard__text { font-size: 14.5px; color: var(--text-2); line-height: 1.6; }
.admission__quote {
  text-align: center; max-width: var(--maxw-text); margin: 0 auto clamp(40px,5vh,56px); padding: 0 12px;
}
.admission__quote p { font-size: clamp(17px,1.9vw,21px); font-weight: 400; line-height: 1.85; letter-spacing: normal; color: var(--text); }
.admission__quote cite { display: block; margin-top: 20px; font-style: normal; font-size: 13px; color: var(--text-3); }
.admission__cta { text-align: center; }

/* =========================================================================
   联系
   ========================================================================= */
.contact__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--line-soft); border-radius: 16px; max-width: 1080px; margin: 0 auto; }
/* 首尾两张卡(官方主页 / 合作实验室)各占整行,中间 2 张成一行;
   彻底消除尾部空网格单元——此前的空单元会露出容器灰白底,形成「金牛湖右侧的灰白光框」错觉 */
.contact__grid > .contact__card:first-child,
.contact__grid > .contact__card:last-child { grid-column: 1 / -1; }
.contact__card {
  display: flex; flex-direction: column; gap: 8px; padding: 34px 30px;
  background: var(--bg); transition: background .35s var(--ease);
}
.contact__card:hover { background: var(--bg-elev); }
.contact__label { font-size: 11.5px; letter-spacing: 1px; color: var(--text-3); text-transform: uppercase; }
.contact__value { font-size: clamp(18px,2.2vw,22px); font-weight: 600; letter-spacing: -.02em; }
.contact__value--blur { color: var(--text-3); font-weight: 400; }
.contact__hint { font-size: 13px; color: var(--link); }
a.contact__card:hover .contact__hint { color: var(--link-hi); }

/* =========================================================================
   页脚
   ========================================================================= */
.footer { background: var(--bg); border-top: 1px solid var(--line-soft); padding: 64px 0 36px; }
.footer__inner { display: flex; justify-content: space-between; align-items: center; gap: 32px; flex-wrap: wrap; }
.footer__brand { display: flex; align-items: center; gap: 16px; }
.footer__logo-ph { width: 48px; height: 48px; border-radius: 12px; border: 1px solid var(--line); display: grid; place-items: center; font-size: 11px; color: var(--text-3); }
.footer__name { font-weight: 600; font-size: 15px; }
.footer__org { font-size: 12.5px; color: var(--text-3); }
.footer__links { display: flex; gap: 26px; flex-wrap: wrap; }
.footer__links a { font-size: 13px; color: var(--text-2); transition: color .3s var(--ease); }
.footer__links a:hover { color: var(--text); }
.footer__bottom { margin-top: 44px; padding-top: 26px; border-top: 1px solid var(--line-soft); }
.footer__bottom p { font-size: 12px; color: var(--text-3); }
.footer__icp-link { color: var(--text-3); transition: color .3s var(--ease); }
.footer__icp-link:hover { color: var(--text-2); }

/* =========================================================================
   V0.14 — Hero 之后区块:宽屏版心 + 不对称布局,左右空间被使用(仅桌面端)
   正文仍受 max-width 约束,行宽克制;移动端保持当前单列,不在此处改动。
   ========================================================================= */
/* 容器扩宽(移动端由视口与内边距自然约束,不受影响) */
.about .container,
.team .container,
.achievements .container,
.contact .container { max-width: var(--maxw-page); }
.admission .container { max-width: var(--maxw-section); }

@media (min-width: 901px) {
  /* 左右内边距对齐 Hero 左轴,内容靠左、不再挤中央 */
  .about .container,
  .team .container,
  .achievements .container,
  .admission .container,
  .contact .container { padding-left: var(--edge-l); padding-right: var(--edge-r); }

  /* 区块标题左对齐,形成左侧信息轴(Research 保持不动) */
  .team .section__head,
  .achievements .section__head,
  .admission .section__head,
  .contact .section__head {
    text-align: left; margin-left: 0; margin-right: 0; max-width: var(--text-measure);
  }
  /* 成果区标题「把想法写成论文，做成系统」较长：单独放宽该区标题容器，桌面端排成一行，
     不掉到第二行成孤字（其余区块保持左侧信息轴的窄行宽不变） */
  .achievements .section__head { max-width: 880px; }

  /* 招生区标题「欢迎加入严颖课题组」桌面端须排成一行：该区左栏较窄
     （theme-ivory 下为 0.82fr），用随视口收敛的字号 + nowrap，
     既保证一行不断字、不出现「欢迎加入严／颖课题组」这种怪断行，
     又不会在窄桌面溢出到右侧正文。移动端不受影响，仍按默认换行。 */
  .admission .section__title {
    font-size: clamp(28px, 3.2vw, 44px);
    white-space: nowrap;
  }

  /* Team:左侧分组标签轴 + 右侧人员信息列,真正横向铺开 */
  .team__block {
    display: grid; grid-template-columns: 186px minmax(0, 1fr);
    gap: clamp(28px, 4vw, 72px); align-items: start;
  }
  .team__group { margin-bottom: 0; padding-top: 22px; }

  /* Achievements:统计数字横向铺满,成果卡片用满宽度 */
  .stats { max-width: none; margin-left: 0; margin-right: 0; }

  /* Admission:左=标题/说明/CTA,右=要点卡,引语跨列在下,不再一团居中文本 */
  .admission__wrap {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    column-gap: clamp(48px, 6vw, 104px); row-gap: clamp(28px, 4vh, 52px);
    align-items: start;
  }
  .admission__wrap > .section__head { grid-column: 1; grid-row: 1; margin-bottom: 0; }
  .admission__lead { grid-column: 1; grid-row: 2; text-align: left; margin: 0; max-width: 520px; }
  .admission__cta  { grid-column: 1; grid-row: 3; text-align: left; margin: 0; }
  .admission__cards { grid-column: 2; grid-row: 1 / span 3; margin: 0; align-self: start; }
  .admission__quote { grid-column: 1 / -1; grid-row: 4; margin: clamp(24px, 4vh, 48px) 0 0; }

  /* Contact:四项联系方式构成宽屏 2×2 信息网格(左对齐,保留 hairline,无灰块) */
  .contact__grid { max-width: none; margin: 0; }
  .contact__grid > .contact__card:first-child,
  .contact__grid > .contact__card:last-child { grid-column: auto; }
}

/* =========================================================================
   V0.15 — Team 往下区块的视觉锚点:轻量科研抽象图形 + 暖橙小面积点缀
   黑底不死板;图形克制、靠右、低透明度、不压文字;暖色只点缀,不铺色。
   ========================================================================= */
/* 内容层在图形之上,保证可读性 */
.team .container,
.achievements .container,
.admission .container,
.contact .container { position: relative; z-index: 1; }

/* 抽象图形:靠右上,作为页面气质辅助,与左侧标题形成左右关系 */
.sec-deco {
  position: absolute; z-index: 0; pointer-events: none;
  top: clamp(72px, 13vh, 168px); right: clamp(16px, 4.5vw, 96px);
  width: clamp(240px, 30vw, 440px);
  opacity: .68;   /* 更低存在感,像从背景里长出来,不贴在上面 */
}
.sec-deco svg { width: 100%; height: auto; display: block; overflow: visible; }
/* 招生区右上被要点卡占用,把图形放到下半部右侧(引语旁的留白) */
.sec-deco--admission {
  top: auto; bottom: clamp(40px, 8vh, 120px); right: clamp(16px, 5vw, 110px);
  width: clamp(220px, 26vw, 380px); opacity: .64;
}
.sec-deco .ln     { fill: none; stroke: rgba(255,255,255,.125); stroke-width: 1; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.sec-deco .ln-dim { fill: none; stroke: rgba(255,255,255,.06); stroke-width: 1; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.sec-deco .nd     { fill: rgba(255,255,255,.5); }
.sec-deco .nd-dim { fill: rgba(255,255,255,.24); }
.sec-deco .nd-gold  { fill: var(--accent); }
.sec-deco .nd-warm  { fill: var(--warm); }
.sec-deco .nd-copper{ fill: var(--accent-copper); }
/* 光晕调淡:只作焦点暖意,不形成可见色块 */
.sec-deco .glow       { fill: var(--accent); opacity: .05; }
.sec-deco .glow--warm { fill: var(--warm); opacity: .07; }
/* 缓慢的呼吸,克制 */
.sec-deco .nd-warm, .sec-deco .nd-gold { animation: decoPulse 6s var(--ease) infinite; transform-box: fill-box; transform-origin: center; }
@keyframes decoPulse { 0%,100% { opacity: .8; } 50% { opacity: 1; } }

/* ---------- 暖色点缀:小面积、跨区块统一 ---------- */
/* 各区标题前的小圆点改为暖橙(更暖、统一点睛) */
.section__eyebrow::before { background: var(--warm); box-shadow: 0 0 8px var(--warm-soft); }

/* Achievements:统计数字下方一道暖橙短线作重点;数字层级更强 */
.stat { padding-bottom: 6px; }
.stat__num { position: relative; }
.stat__num::after {
  content: ""; position: absolute; left: 50%; bottom: -10px; transform: translateX(-50%);
  width: 22px; height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--warm), transparent);
  opacity: .7;
}
.stat__label { margin-top: 18px; }

/* 成果卡:左上角一个极小暖色标记,顶部 hairline 已有;hover 标题略亮 */
.acard { position: relative; }
.acard__kind { color: var(--text-3); }
.acard__kind::before {
  content: ""; display: inline-block; width: 5px; height: 5px; border-radius: 50%;
  background: var(--warm); margin-right: 8px; vertical-align: middle; opacity: .85;
}
.acard:hover .acard__title { color: #ffffff; }
.acard__title { transition: color .3s var(--ease); }

/* Admission:要点卡图标转暖橙;CTA hover 透出一圈极淡暖光(仅此处,不动全站按钮) */
.adcard__icon { color: var(--warm); }
.admission__cta .btn--primary:hover {
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8), 0 9px 22px rgba(0,0,0,.5), 0 0 22px var(--warm-soft);
}

/* Contact:卡片 hover 时提示文字转暖,聚焦更明确 */
a.contact__card:hover .contact__hint { color: var(--warm); }
.contact__value { transition: color .3s var(--ease); }
a.contact__card:hover .contact__value { color: #ffffff; }

/* 移动端:抽象图形隐藏,避免拥挤/溢出;暖色点缀保留 */
@media (max-width: 900px) {
  .sec-deco { display: none; }
}

/* =========================================================================
   V0.16 — 全站卡片 / 信息块 hover 轻微提起(只在精确指针设备,触屏不强制)
   只用 transform,不改布局;hairline / 暖色边线轻微变亮 + 极弱阴影,不发光不霓虹。
   ========================================================================= */
@media (hover: hover) and (pointer: fine) {
  /* hover 提起只在 reveal 完成(.is-visible)后生效,避免与 reveal 位移冲突;过渡沿用整卡 reveal 的 transition */
  .acard.is-visible:hover, .adcard.is-visible:hover, .stat.is-visible:hover, .contact__card.is-visible:hover {
    transform: translate3d(0, -4px, 0);
    border-color: var(--accent-line);
    box-shadow: 0 16px 38px rgba(0, 0, 0, .34);
  }
  /* 透明信息行:抬起 + 顶部 hairline 转微暖,不要灰块 */
  .pcard.is-visible:hover {
    transform: translate3d(0, -4px, 0);
    border-top-color: var(--warm-line);
    background-color: rgba(255, 255, 255, .02);
  }
  /* 联系卡 hover 边线/底色微暖 */
  .contact__card.is-visible:hover { border-color: var(--warm-line); background-color: rgba(255, 255, 255, .028); }
  a.contact__card.is-visible:hover .contact__hint { color: var(--warm); }
  /* 研究图形轻微抬起 */
  .rmod__visual.is-visible:hover { transform: translate3d(0, -4px, 0); }
}
/* 减少动态效果:hover 不位移,仅保留极轻边线/底色变化 */
@media (prefers-reduced-motion: reduce) {
  .acard:hover, .adcard:hover, .contact__card:hover, .stat:hover,
  .pcard:hover, .rmod__visual:hover { transform: none !important; box-shadow: none !important; }
}

/* =========================================================================
   V0.18 — 修复"卡片出现时灰块先现":父级网格不再用灰底+gap 制造分隔,
   改为透明网格 + 每张卡自身 hairline;卡片作为整体淡入 + 轻微上移、慢慢定格。
   ========================================================================= */
/* 父级网格透明:卡片 opacity:0 时不会再露出灰色方块 */
.achv__grid, .admission__cards, .contact__grid {
  background: transparent; gap: 0; border-radius: 0;
}
/* 卡片本体透明 + 自身细线分隔(整卡随 opacity 一起出现) */
.acard, .adcard, .contact__card {
  background: transparent; border: 0;
  border-top: 1px solid rgba(255, 255, 255, .06);
}
.acard:hover, .adcard:hover, .contact__card:hover { background: transparent; }
/* 列间细线(每卡自己的 border-left);首列对齐左缘 */
.acard:nth-child(3n+1) { padding-left: 0; }                                           /* 成果:3 列 */
.acard:nth-child(3n+2), .acard:nth-child(3n+3) { border-left: 1px solid rgba(255,255,255,.055); }
.adcard:nth-child(2n+1) { padding-left: 0; }                                          /* 招生要点:2 列 */
.adcard:nth-child(2n)   { border-left: 1px solid rgba(255,255,255,.055); }

/* 整卡 reveal:整张卡片(背景/边线/文字/图标)一起从透明+上移+微模糊 → 清晰定格 */
.acard.reveal-up, .adcard.reveal-up, .stat.reveal-up,
.contact__card.reveal-up, .pcard.reveal-up {
  transform: translate3d(0, 18px, 0); filter: blur(2px);
  transition:
    opacity   1.05s cubic-bezier(.16, 1, .3, 1),
    transform 1.05s cubic-bezier(.16, 1, .3, 1),
    filter    1.05s cubic-bezier(.16, 1, .3, 1),
    border-color .28s ease, box-shadow .28s ease, background-color .28s ease;
  will-change: opacity, transform, filter;
}
.acard.reveal-up.is-visible, .adcard.reveal-up.is-visible, .stat.reveal-up.is-visible,
.contact__card.reveal-up.is-visible, .pcard.reveal-up.is-visible {
  opacity: 1; transform: translate3d(0, 0, 0); filter: blur(0);
}
/* 桌面端 Contact 为 2×2:列间细线 */
@media (min-width: 901px) {
  .contact__card:nth-child(2n+1) { padding-left: 0; }
  .contact__card:nth-child(2n)   { border-left: 1px solid rgba(255,255,255,.055); }
}

/* =========================================================================
   V0.17 — section 交界自然过渡:统一基底 + 顶部极轻渐变过渡带
   每个区块顶部加一条"与上一区块底色同色起步、向下渐隐到本区块底色"的过渡带:
   交界线两侧同色 → 不再硬切;过渡带很轻、在区块顶部留白内,不形成灰幕。
   ========================================================================= */
.research > .container,
.team > .container,
.achievements > .container,
.contact > .container { position: relative; z-index: 1; }   /* admission 容器已在 V0.15 设过 */

.research::before, .team::before, .achievements::before,
.admission::before, .contact::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0;
  height: clamp(120px, 18vh, 200px); z-index: 0; pointer-events: none;
}
/* 上区块为纯黑(--bg)→本区块为深灰(--bg-soft):顶部从黑平滑渐入本区块深灰 */
.team::before, .admission::before {
  background: linear-gradient(to bottom, var(--bg) 0%, rgba(0, 0, 0, 0) 100%);
}
/* 上区块为深灰(--bg-soft)→本区块为纯黑(--bg):顶部从深灰平滑渐入本区块黑 */
.research::before, .achievements::before, .contact::before {
  background: linear-gradient(to bottom, var(--bg-soft) 0%, rgba(0, 0, 0, 0) 100%);
}

/* =========================================================================
   响应式 — 移动端呼吸感
   ========================================================================= */
@media (max-width: 900px) {
  /* 手机/窄屏:Hero 回到居中单列;右侧焦点组降级为按钮下方的一行轻量标签 */
  .hero__inner {
    grid-template-columns: 1fr; justify-items: center; gap: 30px;
    padding: 0 28px; transform: none;
  }
  .hero__content { text-align: center; width: 100%; max-width: 640px; }
  .hero__lead { margin-left: auto; margin-right: auto; }
  .hero__actions { justify-content: center; }
  .hero__title-en::after { margin-left: auto; margin-right: auto; }
  .hero__aside { justify-self: center; min-width: 0; width: 100%; max-width: 330px; }
  .hero__aside-label { display: none; }
  .hero__focus { display: flex; flex-wrap: wrap; justify-content: center; gap: 9px 16px; max-width: 100%; }
  .hero__focus li { display: inline-flex; border: 0; }
  .hero__focus li:last-child { border: 0; }
  /* 移动端:链接变成可点的轻量标签(EN + 小点),依旧能跳转 */
  .hero__focus-link {
    display: inline-flex; grid-template-columns: none; align-items: center; gap: 8px;
    padding: 4px 6px; border-radius: 8px;
  }
  .hero__focus li + li .hero__focus-link { border-top: 0; }
  .hero__focus-no { display: none; }
  .hero__focus-dot { justify-self: auto; }
  .hero__focus-en { font-size: 12px; color: var(--text-3); }

  .about__grid { grid-template-columns: 1fr; gap: 40px; }
  /* 手机端:照片放在文字下方,居中,小尺寸 */
  .about__text { order: 1; }
  .about__photo { order: 2; max-width: 240px; margin: 0 auto; justify-self: center; }
  .rmod, .rmod:nth-child(even) { grid-template-columns: 1fr; gap: 32px; }
  .rmod__visual, .rmod:nth-child(even) .rmod__visual { order: -1; }   /* 移动端视觉永远在上 */
  .rmod__desc, .rmod__tags { max-width: none; }
  .team__cards, .achv__grid { grid-template-columns: repeat(2, 1fr); }
  /* 两列布局:列间细线落在第二列上,首列对齐左缘 */
  .pcard:not(.pcard--lead):nth-child(3n+1),
  .pcard:not(.pcard--lead):nth-child(3n+2),
  .pcard:not(.pcard--lead):nth-child(3n+3) { border-left: 0; padding-left: 26px; }
  .pcard:not(.pcard--lead):nth-child(2n+1) { padding-left: 0; }
  .pcard:not(.pcard--lead):nth-child(2n) { border-left: 1px solid rgba(255,255,255,.055); padding-left: 26px; }
  /* 成果在两列下:重置 3 列的列线为 2 列 */
  .acard:nth-child(3n+1), .acard:nth-child(3n+2), .acard:nth-child(3n+3) { border-left: 0; padding-left: 26px; }
  .acard:nth-child(2n+1) { padding-left: 0; }
  .acard:nth-child(2n)   { border-left: 1px solid rgba(255,255,255,.055); }
  .stats { grid-template-columns: repeat(2, 1fr); gap: 32px 0; max-width: 420px; }
  .stat:nth-child(3)::before { display: none; }
}

@media (max-width: 720px) {
  .nav__links {
    position: fixed; inset: var(--nav-h) 0 auto 0; flex-direction: column; gap: 0;
    background: rgba(0,0,0,.96); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
    border-bottom: 1px solid var(--line);
    transform: translateY(-10px); opacity: 0; pointer-events: none;
    transition: transform .35s var(--ease), opacity .35s var(--ease); padding: 6px 0;
  }
  .nav.is-open .nav__links { transform: none; opacity: 1; pointer-events: auto; }
  .nav__links a { padding: 16px 28px; border-bottom: 1px solid var(--line-soft); font-size: 15px; }
  .nav__toggle { display: flex; padding: 8px 2px; }
  .nav__toggle span { width: 18px; height: 1.3px; }
  .nav__brand-en { font-size: 13px; }
  .nav__brand-sub { font-size: 10px; }
}

@media (max-width: 600px) {
  .container { padding: 0 22px; }
  .hero { padding-left: 0; padding-right: 0; }
  .hero__inner { padding: 0 22px; }
  /* 首屏标题在手机上不能挤、更克制 */
  .hero__title { font-size: clamp(34px, 11.5vw, 50px); letter-spacing: -0.01em; max-width: 100%; }
  /* eyebrow 改为块级以便长校名自然换行、不溢出;手机端去掉引导小线让其居中更稳 */
  .hero__eyebrow {
    display: block; max-width: 250px; margin: 0 auto 16px;
    font-size: 9px; letter-spacing: .5px; line-height: 1.5;
    white-space: normal; overflow-wrap: anywhere;
  }
  .hero__eyebrow::before { display: none; }
  .hero__title-en { font-size: 11px; letter-spacing: 0.26em; text-indent: 0.26em; margin-top: 14px; }
  .hero__lead { font-size: 16px; margin-top: 24px; max-width: 300px; }
  .team__cards, .achv__grid, .admission__cards, .contact__grid { grid-template-columns: 1fr; }
  /* 窄屏:本科生两列回落单列,避免挤压 */
  .ugroup__list { grid-template-columns: 1fr; }
  .ugroup__list .urow:nth-last-child(2):nth-child(2n+1) { border-bottom: 1px solid var(--line-soft); }
  .ugroup__list .urow:last-child { border-bottom: 0; }
  .pcard--lead { grid-column: auto; }
  /* 单列:成员/卡片逐行,仅保留上方 hairline,无列间竖线 */
  .pcard:not(.pcard--lead) { border-left: 0 !important; padding-left: 0 !important; }
  .acard, .adcard, .contact__card { border-left: 0 !important; padding-left: 0 !important; }
  .footer__inner { flex-direction: column; align-items: flex-start; }
  /* 按钮不横跨整屏:主按钮限宽居中、更矮,招生为文字链接 */
  .hero__actions { width: 100%; flex-direction: column; align-items: center; gap: 16px; margin-top: 34px; }
  .hero__actions .btn--primary { width: 100%; max-width: 210px; padding: 7px 20px; }
  .hero__actions .btn--ghost { padding: 4px 8px; }
}

/* ---------- Publications 响应式(与主题无关) ---------- */
@media (max-width: 760px) {
  .latest { flex-direction: column; align-items: flex-start; }
  .latest__actions { width: 100%; }
  .paper { grid-template-columns: 1fr; gap: 10px; padding: 22px 0; }
  .paper__left { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
  .paper__link { align-self: flex-start; }
}

/* =========================================================================
   V0.19 — 米白 / 暖纸主题(theme-ivory)· 试验版
   实现方式:body.theme-ivory 覆盖页面级 token(背景翻成米白、文字翻成暖炭黑);
   Hero 与 Nav 作为「深色岛」就地重声明原黑银 token,渲染保持不变;
   其余为针对白底硬编码值(hairline / hover / SVG / 按钮 / 照片 vignette)的定点覆盖。
   回滚:删除 <body class="theme-ivory"> 或删除本区块即可回到原黑银版,base 规则未改。
   ========================================================================= */
body.theme-ivory {
  /* —— V0.20 统一米白 / 暖纸调色板(全站非 Hero 区共用一套) —— */
  --paper:       #f5efe3;   /* 唯一基底:所有非 Hero 区同色,消除区块硬切 */
  --paper-soft:  #efe7d8;   /* 极轻层次,差值很小,肉眼不像两块拼接 */
  --paper-card:  rgba(255, 252, 244, 0.46);   /* 半透明暖纸卡片底 */
  --paper-line:  rgba(78, 67, 51, 0.13);       /* 暖灰 hairline */
  --ink:         #29241d;   /* 主文字 */
  --ink-2:       #665d50;   /* 副文字 */
  --ink-3:       #948a7a;   /* 弱文字 */
  --warm:        #c47f3f;   /* 暖橙点缀 */
  --copper:      #9a6248;   /* 铜色点缀 */

  /* 让既有组件 token 指向统一系统:--bg 与 --bg-soft 同色 → 区块之间不再有偏灰/偏黄硬切 */
  --bg:        var(--paper);
  --bg-soft:   var(--paper);
  --bg-elev:   #fbf7ee;
  --text:      var(--ink);
  --text-2:    var(--ink-2);
  --text-3:    var(--ink-3);
  --link:      #5a5145;
  --link-hi:   var(--ink);
  --line:      var(--paper-line);
  --line-soft: rgba(78, 67, 51, 0.07);
  --accent-line:   rgba(150, 110, 60, 0.42);
  --accent-copper: var(--copper);
  --warm-soft:     rgba(196, 127, 63, 0.14);
  --warm-line:     rgba(196, 127, 63, 0.42);
  --signal:    #5f7d8c;   /* 米白下加深的冷点缀,保证对比 */
  /* 人物照片底座:浅暖灰,照片自然贴合米白 */
  --photo-fog:      #e9e1d0;
  --photo-fog-deep: #ddd3bf;
  --photo-line:     rgba(120, 95, 55, 0.26);
  background: var(--paper);
  color: var(--ink);
}

/* —— 统一所有非 Hero 区底色为同一张纸:即使 base 里有 --bg/--bg-soft 之分,这里也压成同色 —— */
body.theme-ivory .research,
body.theme-ivory .team,
body.theme-ivory .achievements,
body.theme-ivory .publications,
body.theme-ivory .admission,
body.theme-ivory .contact,
body.theme-ivory .footer { background: var(--paper); }

/* 中和 V0.17 黑色版 section seam 渐变带(黑灰渐变会污染米白):米白下区块已同色,无需过渡带 */
body.theme-ivory .research::before,
body.theme-ivory .team::before,
body.theme-ivory .achievements::before,
body.theme-ivory .admission::before,
body.theme-ivory .contact::before { background: none; }

/* =========================================================================
   V0.21 — Hero / Nav 转米白浅色科技感(取代 V0.19/20 的黑色深色岛)
   Hero 不再是黑岛:继承 body.theme-ivory 的米白 ink token,背景=纸色;
   神经丝线转译成暖灰细线 + 铜/暖金节点 + 轻微几何条纹,浅底清晰可见;
   Nav 改米白玻璃态,内容/标题用深墨色,绝不再出现灰黑横条压在米白上。
   回滚:删除 <body class="theme-ivory"> 即整体回到原黑银版,base 规则未改。
   ========================================================================= */
/* Hero 背景:纯净纸色;中部留白由「信号光环」(径向脑电波环,见 base .hero__halo)占据 */
body.theme-ivory .hero { background: var(--paper); }
/* 标题:实心深墨(比渐变裁切更干净锐利,不发灰发糊);优先用更精致的中文字体,缺失则回退系统 YaHei */
body.theme-ivory .hero .hero__title {
  font-family: "PingFang SC", "MiSans", "HarmonyOS Sans SC", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
  letter-spacing: .012em;
  background: none;
  -webkit-text-fill-color: #2b2620; color: #2b2620;
}
body.theme-ivory .hero .hero__title-en { color: rgba(41,36,29,0.46); }
body.theme-ivory .hero .hero__lead { color: var(--ink-2); }
body.theme-ivory .hero .hero__eyebrow,
body.theme-ivory .hero .hero__aside-label { color: var(--ink-3); }
body.theme-ivory .hero .hero__focus-en { color: var(--ink-2); }
body.theme-ivory .hero .hero__focus-no { color: var(--ink-3); }
body.theme-ivory .hero .hero__focus-dot { background: var(--ink-3); }
/* 唯一暖铜焦点点,呼应全站点睛 */
body.theme-ivory .hero .hero__focus li:first-child .hero__focus-dot {
  background: var(--warm); box-shadow: 0 0 8px var(--warm-soft);
}
/* Research Focus 分隔细线 + 滚动指示器:浅底用暖灰 hairline;hover 不做方框,仅文字/点变化(见 base) */
body.theme-ivory .hero__focus li + li .hero__focus-link { border-top-color: var(--paper-line); }
body.theme-ivory .hero__scroll { border-color: var(--paper-line); }
body.theme-ivory .hero__scroll-dot { background: var(--ink-3); }
/* Hero 中央柔光:单层、居中、极淡的暖色渐隐,给米白封面一点匀净暖意 */
body.theme-ivory .hero::before {
  background: radial-gradient(ellipse 58% 56% at 50% 47%, rgba(201, 138, 73, 0.075), transparent 72%);
}
/* Hero 最终收口:不放任何纹理 / 网格 / 线条,背景就是纯净纸色;
   中和 base 的暗色径向遮罩(在米白下无意义),只保留上方那层极淡中央暖光(::before) */
body.theme-ivory .hero::after {
  background: none;
}


/* —— Nav 米白玻璃态:深墨字,浅底,Hero 与内容区上方都干净,无灰黑横条 —— */
body.theme-ivory .nav__brand-en { color: var(--ink); }
body.theme-ivory .nav__brand-sub { color: var(--ink-3); }
body.theme-ivory .nav__links a { color: var(--ink-2); }
body.theme-ivory .nav__links a:hover { color: var(--ink); }
body.theme-ivory .nav__toggle span { background: var(--ink); }
body.theme-ivory .nav.is-scrolled {
  background: rgba(245, 239, 227, 0.72);
  -webkit-backdrop-filter: saturate(150%) blur(16px); backdrop-filter: saturate(150%) blur(16px);
  border-bottom-color: rgba(78,67,51,0.10);
}
@media (max-width: 720px) {
  body.theme-ivory .nav__links { background: rgba(245,239,227,0.97); }
  body.theme-ivory .nav__links a { border-bottom-color: rgba(78,67,51,0.10); }
}

/* Hero → About 衔接:两侧都是纸色,底部丝线在纸色里自然渐隐,无黑切、无硬缝 */
body.theme-ivory .hero__fade {
  height: clamp(180px, 24vh, 280px);
  background: linear-gradient(to bottom, rgba(245,239,227,0) 0%, var(--paper) 78%, var(--paper) 100%);
}
body.theme-ivory .about {
  padding-top: clamp(110px, 13vh, 160px);
  background: var(--paper);
}

/* 研究方向 SVG:米白底上清楚可见但不发脏。中性炭灰 → 暖褐灰(tone-on-tone,像墨线落在暖纸上) */
body.theme-ivory .rmod__svg .stroke {
  stroke: rgba(84, 66, 44, 0.40); stroke-width: 1.4;   /* 主线:暖褐墨线,克制 */
}
body.theme-ivory .rmod__svg .stroke-dim { stroke: rgba(84, 66, 44, 0.22); stroke-width: 1.15; }
body.theme-ivory .rmod__svg .dot { fill: rgba(84, 66, 44, 0.58); }
body.theme-ivory .rmod__svg .dot-accent { fill: rgba(196, 127, 63, 0.88); }   /* 暖橙焦点节点 */
body.theme-ivory .rmod__svg .glowdot { fill: rgba(154, 98, 72, 0.86); }       /* 铜色异常点 */
body.theme-ivory .rmod__visual::before {
  background: radial-gradient(ellipse 80% 80% at 50% 46%, rgba(196, 127, 63, 0.07), transparent 72%);
}

/* 区块装饰线图形:暖褐灰细线,从纸里长出来的科研暗纹;比 Hero 略实一点(作区块气质锚点),但不抢正文 */
body.theme-ivory .sec-deco { opacity: .82; }
body.theme-ivory .sec-deco--admission { opacity: .8; }
body.theme-ivory .sec-deco .ln       { stroke: rgba(92, 72, 48, 0.30); stroke-width: 1.1; }
body.theme-ivory .sec-deco .ln-dim   { stroke: rgba(92, 72, 48, 0.15); stroke-width: 1; }
body.theme-ivory .sec-deco .nd       { fill: rgba(92, 72, 48, 0.46); }
body.theme-ivory .sec-deco .nd-dim   { fill: rgba(92, 72, 48, 0.26); }
body.theme-ivory .sec-deco .nd-warm  { fill: rgba(196, 127, 63, 0.78); }
body.theme-ivory .sec-deco .nd-gold  { fill: rgba(196, 127, 63, 0.74); }
body.theme-ivory .sec-deco .nd-copper{ fill: rgba(154, 98, 72, 0.70); }
body.theme-ivory .sec-deco .glow       { fill: rgba(196, 127, 63, 1); opacity: .07; }
body.theme-ivory .sec-deco .glow--warm { fill: rgba(196, 127, 63, 1); opacity: .09; }

/* 团队信息行:把白色 hairline / hover 全部翻成暖灰暖炭 */
body.theme-ivory .pcard { border-top-color: var(--line); }
body.theme-ivory .pcard:not(.pcard--lead):nth-child(3n+2),
body.theme-ivory .pcard:not(.pcard--lead):nth-child(3n+3) { border-left-color: var(--line-soft); }
body.theme-ivory .pcard--lead { border-bottom-color: var(--line); }
body.theme-ivory .pcard:hover .pcard__name { color: var(--text); }
body.theme-ivory .pcard:hover .pcard__avatar { border-color: rgba(74,58,34,.28); }
body.theme-ivory .pcard__avatar { background: rgba(74,58,34,.04); border-color: rgba(74,58,34,.16); }
body.theme-ivory .pcard--lead .pcard__avatar { background: rgba(74,58,34,.06); border-color: rgba(74,58,34,.20); color: var(--text); }

/* 成果 / 招生 / 联系 卡片:半透明暖纸底 + 暖灰 hairline(不纯白大卡、不灰块);整卡随 reveal 一起淡入 */
body.theme-ivory .acard, body.theme-ivory .adcard, body.theme-ivory .contact__card {
  background: var(--paper-card); border-top-color: var(--paper-line);
}
body.theme-ivory .acard:nth-child(3n+2), body.theme-ivory .acard:nth-child(3n+3),
body.theme-ivory .adcard:nth-child(2n), body.theme-ivory .contact__card:nth-child(2n) { border-left-color: var(--paper-line); }
body.theme-ivory .acard:hover .acard__title { color: var(--text); }
body.theme-ivory a.contact__card:hover .contact__value { color: var(--text); }

/* hover 提起:白色微亮底 / 重黑投影 → 暖灰微底 + 轻暖投影 */
@media (hover: hover) and (pointer: fine) {
  body.theme-ivory .acard.is-visible:hover, body.theme-ivory .adcard.is-visible:hover,
  body.theme-ivory .stat.is-visible:hover, body.theme-ivory .contact__card.is-visible:hover {
    box-shadow: 0 16px 38px rgba(80, 60, 30, .14);
  }
  body.theme-ivory .pcard.is-visible:hover { background-color: rgba(74, 58, 34, .04); }
  body.theme-ivory .contact__card.is-visible:hover { background-color: rgba(74, 58, 34, .045); }
}

/* 按钮(米白区):主按钮翻暖炭、次按钮暖灰描边;Hero 内按钮用更高优先级还原浅色 */
body.theme-ivory .btn--primary {
  background: linear-gradient(180deg, #3b3429 0%, #2a2620 100%); color: #F6F1E6;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10), 0 6px 16px rgba(70, 52, 26, .22);
}
body.theme-ivory .btn--primary:hover {
  background: linear-gradient(180deg, #463d30 0%, #322c24 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 9px 22px rgba(70, 52, 26, .28);
}
body.theme-ivory .btn--ghost {
  color: var(--link); border-color: var(--line); background: rgba(74, 58, 34, .035);
}
body.theme-ivory .btn--ghost:hover {
  color: var(--text); border-color: rgba(74, 58, 34, .34); background: rgba(74, 58, 34, .07);
}
/* Hero 现为浅色,按钮沿用上方米白默认(深炭主按钮 + 暖灰次按钮),不再单独覆盖 */

/* 人物照片在米白下:略降饱和压住证件照冷蓝底 + 暖纸底座 + 暖色边缘雾化,照片融入纸面而非硬贴 */
body.theme-ivory .about__photo-img,
body.theme-ivory .pcard__img { filter: saturate(.86) brightness(1.0) contrast(1.0); }
body.theme-ivory .about__photo-ph {
  box-shadow: 0 18px 44px rgba(80, 60, 30, .16);
}
/* 边缘暖雾更明显:四周向暖纸色收拢,证件照硬边被揉进底座;顶/底再压一层暖渐变 */
body.theme-ivory .about__photo-ph::after {
  background:
    radial-gradient(ellipse 84% 76% at 50% 40%, transparent 56%, rgba(214, 196, 168, .34) 84%, rgba(204, 184, 152, .50) 100%),
    linear-gradient(180deg, rgba(214, 196, 168, .20) 0%, transparent 22%, transparent 64%, rgba(204, 184, 152, .30) 100%);
}
body.theme-ivory .about__photo-ph::before { display: none; }   /* 米白下不需要深色人像剪影 */
body.theme-ivory .pcard__photo { box-shadow: 0 6px 16px rgba(80, 60, 30, .16); }
body.theme-ivory .pcard__photo::after {
  background: radial-gradient(ellipse 80% 76% at 50% 40%, transparent 62%, rgba(90, 70, 40, .16) 100%);
}
body.theme-ivory .pcard--member:hover .pcard__photo { box-shadow: 0 8px 20px rgba(80, 60, 30, .22); }

/* =========================================================================
   V0.21 — 网格闭合 hairline 修复(成果 / 招生 / 联系 / 团队硕士)
   旧法:每格只画上+左,首列贴左、末列/末行无线、孤格只剩半截线 → 像乱贴的格子。
   新法:容器画完整 4 边外框,每格只画右+下内分隔线 →
        横线竖线完整连续,第一行/第一列/最后一列都有边、不断线;
        任意卡片数量(含奇数孤格)都由外框兜底,绝不出现半截线;
        去掉半透明卡底(消除"浮块"),发丝线 + 大留白 → 轻量信息网格,不像 Excel。
   ========================================================================= */
body.theme-ivory .achv__grid,
body.theme-ivory .contact__grid,
body.theme-ivory .team__cards--master,
body.theme-ivory .ugroup__list {
  background: transparent; gap: 0; border-radius: 0;
  border: 1px solid rgba(92, 72, 48, 0.10);   /* 更淡更暖的发丝外框,不像 Excel 粗线 */
}
/* 每格:透明底 + 仅右/下内分隔线(外框由容器负责);招生要点卡不走网格,见下方 V0.22 */
body.theme-ivory .achv__grid > *,
body.theme-ivory .contact__grid > *,
body.theme-ivory .team__cards--master > *,
body.theme-ivory .ugroup__list > * {
  background: transparent !important;
  border: 0 !important;
  border-right: 1px solid rgba(92, 72, 48, 0.10) !important;
  border-bottom: 1px solid rgba(92, 72, 48, 0.10) !important;
}
/* 首列内容不贴外框:统一恢复左内边距(覆盖旧版首列 padding-left:0 / 移动端 !important) */
body.theme-ivory .achv__grid > .acard,
body.theme-ivory .team__cards--master > .pcard { padding-left: 26px !important; }
body.theme-ivory .contact__grid > .contact__card { padding-left: 30px !important; }
/* 消除奇数孤格留下的空网格:联系首卡(官方主页)跨整行 → 余 4 张 2×2;
   团队"招生中"卡跨整行 → 前 9 张 3×3 满行。两者都让每一行被填满,行线满宽。 */
body.theme-ivory .contact__grid > .contact__card:first-child { grid-column: 1 / -1; }
body.theme-ivory .team__cards--master > .pcard--open { grid-column: 1 / -1; }

/* 本科生分组同款细线网格:每个同学是一格,行线左右连续、上下对齐(取代旧的断续两列 hairline) */
body.theme-ivory .ugroup__list > .urow { padding: 15px 22px; }
/* 奇数组里最后一个孤格跨整行,避免右侧出现空洞 */
body.theme-ivory .ugroup__list > .urow:last-child:nth-child(odd) { grid-column: 1 / -1; }
/* 分组标题下不再单独画线(下方网格已有外框),留出呼吸 */
body.theme-ivory .ugroup__dir { border-bottom: 0; padding-bottom: 0; margin-bottom: 14px; }

/* 论文目录:列表收尾补一条 hairline,首尾都有线、不留半开口 */
body.theme-ivory .pub__list .paper:last-child { border-bottom: 1px solid var(--paper-line); }

/* =========================================================================
   V0.21 — 导师 Advisor 真实头像(圆形小头像,克制尺寸;失败回退姓名)
   About 右侧大照片不动;研究生照片不动;本科生仍不放照片。
   ========================================================================= */
.pcard--lead .pcard__photo { flex: 0 0 60px; width: 60px; height: 60px; }
.pcard--lead .pcard__img { object-position: 50% 22%; }

/* =========================================================================
   V0.21 — 招生区重排:打散"标准左竖排 + 右卡块 + 下方硬贴引语"的模板感
   桌面:标题(左·与正文等高居中) 与 正文(右) 并置成一条松弛的导语带 →
        四张要点卡整幅铺在下方(通透留白,不是右半边硬拼的表格)→
        导师引语作为独立但呼应的「收尾 pull-quote 面板」(暖纸软底 + 大引号 + 居中)→
        CTA 收在引语之后,像自然的结束动作。消除上下硬拼接。
   ========================================================================= */
/* V0.22 招生要点最终收口:不做表格、不做闭合网格、不画边框格子——
   四个信息点像自然分散落在纸面上:两列大留白排布,右列略微下沉形成错落,
   每点只有 ◆ 小标记 + 标题 + 一句说明,靠留白而非线条分隔。 */
body.theme-ivory .admission__cards {
  background: transparent; border: 0; border-radius: 0;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(34px, 5vh, 54px) clamp(44px, 7vw, 110px);
}
body.theme-ivory .admission__cards > .adcard {
  background: transparent; border: 0; padding: 0;
  max-width: 460px;
}
body.theme-ivory .adcard__icon { color: var(--warm); font-size: 12px; display: block; margin-bottom: 12px; }
body.theme-ivory .adcard__title { margin: 0 0 8px; }
body.theme-ivory .adcard__text { margin: 0; }
/* 桌面端:右列整体下沉一点,信息点错落呼吸,不再是 2×2 方阵 */
@media (min-width: 901px) {
  body.theme-ivory .admission__cards > .adcard:nth-child(2n) { margin-top: clamp(20px, 3.4vh, 38px); }
}
/* 信息点无边框无底色,hover 不再抬起投影(避免透明块浮起的怪异感),只让标题微深 */
@media (hover: hover) and (pointer: fine) {
  body.theme-ivory .adcard.is-visible:hover { transform: none; box-shadow: none; }
  body.theme-ivory .adcard.is-visible:hover .adcard__title { color: var(--text); }
}
/* 窄屏:单列纵排,取消错落,顺序自然 */
@media (max-width: 760px) {
  body.theme-ivory .admission__cards { grid-template-columns: 1fr; gap: clamp(30px, 4.5vh, 44px); }
}

/* 引语:从"盒子面板"改回安静的下半区——去边框、去方块底,只用大留白 + 一条短引导线 + 克制大引号。
   并明显下移,与上方招生信息拉开距离,像从容的下半段,而不是硬贴上去。 */
body.theme-ivory .admission__quote {
  position: relative; max-width: 600px;
  margin: clamp(64px, 10vh, 132px) auto 0;          /* 与卡片自然拉开(原本距离) */
  padding: clamp(24px, 3vw, 34px) 0 0;
  text-align: left; border: 0; border-radius: 0;    /* 左对齐:中文不再居中参差成一坨 */
  background: none;   /* 去掉背景暖光面板:引语直接落在纸面上,不再像贴上去的一块 */
}
/* 顶部短引导线左对齐,作安静的引文起头 */
body.theme-ivory .admission__quote::after {
  content: ""; position: absolute; top: 0; left: 0;
  width: 40px; height: 1px; background: var(--accent-line);
}
/* 去掉悬浮大引号(原本让它像一块贴上去的引用卡片);正文本身已带引号,身份靠下方署名 */
body.theme-ivory .admission__quote::before { content: none; }
body.theme-ivory .admission__quote p { position: relative; z-index: 1; }

@media (min-width: 901px) {
  /* 导语带:标题左(竖向居中,对齐右侧长正文中部)+ 正文右,打散一列到底的竖排 */
  body.theme-ivory .admission__wrap {
    grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
    column-gap: clamp(48px, 6vw, 116px); row-gap: clamp(40px, 6vh, 72px);
    align-items: start;
  }
  body.theme-ivory .admission__wrap > .section__head {
    grid-column: 1; grid-row: 1; align-self: center; margin: 0;
  }
  body.theme-ivory .admission__lead {
    grid-column: 2; grid-row: 1; max-width: 600px; margin: 0;
  }
  /* 四张要点卡整幅铺开,成 2×2 细线闭合网格(与成果区同款) */
  body.theme-ivory .admission__cards {
    grid-column: 1 / -1; grid-row: 2; margin: 0;
  }
  body.theme-ivory .admission__quote { grid-column: 1 / -1; grid-row: 3; }
  body.theme-ivory .admission__cta {
    grid-column: 1 / -1; grid-row: 4; text-align: center; margin: clamp(6px, 1.4vh, 16px) 0 0;
  }
}

/* =========================================================================
   V0.22 — 论文目录区版式与相邻区块统一:
   同款宽版心 + 桌面端左对齐标题轴(此前论文区是唯一仍居中窄版心的内容区,显得突兀)
   ========================================================================= */
.publications .container { max-width: var(--maxw-page); position: relative; z-index: 1; }
@media (min-width: 901px) {
  .publications .container { padding-left: var(--edge-l); padding-right: var(--edge-r); }
  .publications .section__head {
    text-align: left; margin-left: 0; margin-right: 0; max-width: var(--text-measure);
  }
}
