/* ------------------------------------------------------------
   Wodniack-inspired theme extracted from wodniack_clone_static.zip
   Colors updated to Morandi Green Series (冷灰绿色莫兰迪色系)
   iOS 26 style - elegant, gentle, with frosted glass effects
------------------------------------------------------------ */
*, *::before, *::after {
  box-sizing: border-box;
}

:root{
  --font-text: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Source Han Sans SC", "WenQuanYi Micro Hei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";

  /* 冷灰绿色莫兰迪色系 - iOS 26风格 */
  /* 温柔优雅的绿色系，带有层次感的毛玻璃效果 */
  --color-primary:#8fa39a;
  --color-secondary:#0f1a16;
  --color-shadow:#0a120f;
  --color-white:#e6ebe9;

  --primary-rgb: 143, 163, 154;
  --secondary-rgb: 15, 26, 22;

  --panel-radius:28px;
  --panel-border:1px solid rgba(var(--secondary-rgb), .75);
  --panel-shadow: 0 20px 70px rgba(var(--secondary-rgb), .14);
  --grid-line: rgba(var(--secondary-rgb), .12);

  --font-display: "Bigger Display", "PingFang SC", "Microsoft YaHei", ui-serif, Georgia, serif;
  --font-body: "Editorial New", "PingFang SC", "Microsoft YaHei", ui-serif, Georgia, serif;
  --font-mono: "Fraktion Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
}

/* Fonts (from ZIP) */
@font-face{font-family:"Bigger Display";font-style:normal;font-weight:700;src:url(../fonts/Bigger-Display.woff2) format("woff2");font-display:swap;text-rendering:optimizelegibility}
@font-face{font-family:"Editorial New";font-style:normal;font-weight:200;src:url(../fonts/PPEditorialNew-Ultralight.woff2) format("woff2");font-display:swap;text-rendering:optimizelegibility}
@font-face{font-family:"Editorial New";font-style:normal;font-weight:400;src:url(../fonts/PPEditorialNew-Regular.woff2) format("woff2");font-display:swap;text-rendering:optimizelegibility}
@font-face{font-family:"Fraktion Mono";font-style:normal;font-weight:400;src:url(../fonts/PPFraktionMono-Regular.woff2) format("woff2");font-display:swap;text-rendering:optimizelegibility}
@font-face{font-family:"Fraktion Mono";font-style:normal;font-weight:700;src:url(../fonts/PPFraktionMono-Bold.woff2) format("woff2");font-display:swap;text-rendering:optimizelegibility}

html,body{
  height:100%;
  background:var(--color-white);
  color:var(--color-secondary);
  margin:0;
  overflow-x:hidden;
  font-family: var(--font-body);
}
body{
  background: linear-gradient(135deg, #e6ebe9 0%, #dde4e1 100%);
}

/* Background layer: paper + grid (parallax via CSS vars set in JS) */
#bg{
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  overflow:hidden;
}
#bg .bg-paper,
#bg .bg-grid{
  position:absolute;
  inset:-20%;
  will-change: transform;
}
#bg .bg-paper{
  background:
    radial-gradient(1100px 780px at calc(18% + var(--bg-mx, 0px)) calc(15% + var(--bg-my, 0px)),
      rgba(var(--primary-rgb), .28), transparent 62%),
    radial-gradient(920px 720px at calc(86% + var(--bg-mx, 0px)) calc(28% + var(--bg-my, 0px)),
      rgba(var(--primary-rgb), .18), transparent 58%),
    radial-gradient(1200px 900px at 50% 96%,
      rgba(var(--secondary-rgb), .10), transparent 60%),
    linear-gradient(0deg, rgba(230,235,233,.98), rgba(230,235,233,.98));
  filter: saturate(1.05);
  transform: translate3d(var(--bg-paper-x,0px), var(--bg-paper-y,0px), 0) scale(1.02);
}
#bg .bg-grid{
  inset:-20%;
  background:
    linear-gradient(0deg,
      transparent calc(50% - 1.5px),
      var(--grid-line) calc(50% - 1.5px),
      var(--grid-line) 50%,
      transparent 50%) top/100% 92px repeat,
    linear-gradient(90deg,
      transparent calc(50% - 1.5px),
      var(--grid-line) calc(50% - 1.5px),
      var(--grid-line) 50%,
      transparent 50%) left/92px 100% repeat;
  opacity:.32;
  mix-blend-mode:multiply;
  transform: translate3d(var(--bg-grid-x,0px), var(--bg-grid-y,0px), 0);
}

/* Floating decorations */
#bg .bg-floats{ position:absolute; inset:0; }
.bg-float{
  position:absolute;
  width:54px;
  height:54px;
  opacity:.9;
  filter: drop-shadow(0 12px 36px rgba(var(--secondary-rgb), .14));
  animation: floaty 9s ease-in-out infinite;
}
.bg-float.star{background: url(../images/asset-star.svg) center/contain no-repeat; filter: drop-shadow(0 12px 36px rgba(var(--secondary-rgb), .12));}
.bg-float.smiley{background: url(../images/asset-smiley--main.svg) center/contain no-repeat; filter: drop-shadow(0 12px 36px rgba(var(--secondary-rgb), .12)) hue-rotate(90deg) saturate(.65);}
@keyframes floaty{
  0%{transform:translate3d(0,0,0) rotate(-6deg)}
  50%{transform:translate3d(0,-16px,0) rotate(6deg)}
  100%{transform:translate3d(0,0,0) rotate(-6deg)}
}

/* Reveal.js base */
.reveal{
  position:relative;
  z-index:1;
}
.reveal .slides{
  text-align:left;
}

/* In scroll view, sections get their own white background; we make them transparent
   and rely on floating panels to structure content. */
.reveal section{
  padding: 72px 7vw;
  box-sizing:border-box;
}
@media (max-width: 900px){
  .reveal section{ padding: 64px 5.5vw; }
}

.h1{
  font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  font-weight:700;
  letter-spacing:-.02em;
  line-height:1.02;
}
.h2{
  font-family: var(--font-mono);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:20px;
}
.p{
  font-size:20px;
  line-height:1.55;
  max-width: 56ch;
}
.research-stage-full .p{
  max-width: none;
  font-size: 22px;
}
.small{
  font-family: var(--font-mono);
  font-size:14px;
  line-height:1.5;
  opacity:.88;
}

/* Floating panel */
.panel{
  border: var(--panel-border);
  border-radius: var(--panel-radius);
  background: rgba(var(--primary-rgb), .18);
  box-shadow: var(--panel-shadow);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
}
.panel--solid{
  background: rgba(var(--primary-rgb), .25);
}
.panel-pad{
  padding: 28px 30px;
}
@media (max-width: 900px){
  .panel-pad{ padding: 22px 22px; }
}

.kicker{
  display:flex;
  gap:10px;
  align-items:center;
  margin-bottom:12px;
}
.kicker .dot{
  width:10px;height:10px;border-radius:50%;
  background: var(--color-primary);
  box-shadow: 0 8px 22px rgba(var(--primary-rgb),.22);
}

/* Tilt */
.tilt{
  transform-style:preserve-3d;
  will-change: transform;
  transform:
    translate3d(var(--tx,0px), var(--ty,0px), 0)
    rotateX(var(--rx,0deg))
    rotateY(var(--ry,0deg));
  transition: transform 120ms ease-out;
}
.tilt.is-idle{
  transition: transform 360ms ease-out;
}

/* Slide layouts */
.cover-wrap{
  min-height: 78vh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:18px;
}
.cover-title{
  font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  font-size: clamp(56px, 7vw, 110px);
  margin:0;
}
.cover-sub{
  font-family: var(--font-mono);
  font-size:18px;
  margin:0;
}
.cover-line{
  height:1px;
  width: min(720px, 72vw);
  background: linear-gradient(90deg, var(--color-secondary), var(--color-primary));
  transform-origin:left;
  transform: scaleX(.2);
  animation: line-in 1.4s cubic-bezier(.2,.9,.2,1) .2s forwards;
  opacity: .85;
}
@keyframes line-in{to{transform:scaleX(1)}}
/* Cover: interactive waves behind content */
.slide-cover{ position:relative; }
.cover-panel{ position:relative; z-index:2; }
.cover-waves{
  position:absolute;
  inset:0;
  z-index:1;
  opacity:.25;
  mix-blend-mode:multiply;
}
.waves-svg{
  width:100%;
  height:100%;
  display:block;
}
.waves-svg path{
  fill:none;
  stroke: rgba(var(--secondary-rgb), .38);
  stroke-width:1;
  vector-effect: non-scaling-stroke;
}

/* Book cover: no frame, floating shadow */
.book-float{
  border-radius: 30px;
  background: transparent;
  padding: 0;
  filter: drop-shadow(0 26px 90px rgba(var(--secondary-rgb), .18));
}
.book-float img{
  width:100%;
  height:auto;
  display:block;
  border-radius: 20px;
}
@media (max-width: 980px){
  .book-float{ max-width: 560px; }
}

/* Work title: rise from background on enter */
.work-title{
  margin: 0 0 18px 0;
  font-size: clamp(56px, 6vw, 96px);
  opacity: 0;
  transform: translate3d(0, 26px, 0);
  filter: blur(6px);
  transition: opacity 720ms cubic-bezier(.2,.9,.2,1),
              transform 720ms cubic-bezier(.2,.9,.2,1),
              filter 720ms cubic-bezier(.2,.9,.2,1);
}
.slide-visible .work-title{
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

.two-col{
  display:grid;
  grid-template-columns: minmax(260px, 420px) 1fr;
  gap: 28px;
  align-items:start;
}
@media (max-width: 980px){
  .two-col{ grid-template-columns: 1fr; }
}

.book-card{
  padding: 18px;
  border-radius: 26px;
}
.book-cover{
  width:100%;
  aspect-ratio: 4/5;
  border-radius: 24px;
  border: 1px solid rgba(var(--secondary-rgb),.16);
  overflow:hidden;
  background: rgba(var(--primary-rgb), .22);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.book-cover img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  border-radius: 20px;
}

.video-stage{
  display:grid;
  grid-template-columns: 1.35fr .95fr;
  gap: 28px;
  align-items:start;
}
@media (max-width: 980px){
  .video-stage{ grid-template-columns: 1fr; }
}
.video-frame{
  padding: 18px;
  border-radius: 26px;
}
.video-shell{
  width:100%;
  aspect-ratio: 16/9;
  border-radius: 24px;
  border: 1px solid rgba(var(--secondary-rgb),.18);
  overflow:hidden;
  background: rgba(var(--secondary-rgb),.92);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  position:relative;
}
.video-shell video{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.video-shell .fallback{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding: 24px;
  text-align:center;
  color: var(--color-white);
  font-family: var(--font-mono);
  font-size: 14px;
  line-height:1.5;
}

/* Research collage */
.research-stage{
  display:grid;
  grid-template-columns: 1.05fr 1fr;
  gap: 28px;
  align-items:start;
}
@media (max-width: 980px){
  .research-stage{ grid-template-columns: 1fr; }
}

.research-stage .left-column{
  display:flex;
  flex-direction:column;
  gap: 18px;
}

.research-stage-full{
  display:flex;
  flex-direction:column;
  max-width: 1200px;
  margin: 0 auto;
  gap: 18px;
  align-items: flex-start;
}
.research-stage-full .panel{
  width: 100%;
}
.mosaic{
  display:grid;
  grid-template-columns: 1fr;
  gap: 14px;
}
.mosaic .tile{
  border-radius: var(--panel-radius);
  border: var(--panel-border);
  overflow:hidden;
  background: rgba(var(--primary-rgb), .18);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  height: auto;
  box-shadow: var(--panel-shadow);
}
.mosaic .tile.big{
  grid-column: 1 / -1;
}
.mosaic .tile img{ width:100%; height:100%; object-fit:cover; display:block; }

/* Work docs grid + overlay reader */
.work-stage{
  display:flex;
  flex-direction:column;
  gap: 18px;
}
.work-title{
  font-size: clamp(42px, 5vw, 80px);
  margin:0;
  opacity:0;
  transform: translate3d(0, 24px, 0);
}
.slide-visible .work-title{
  animation: title-rise .9s cubic-bezier(.2,.9,.2,1) forwards;
}
@keyframes title-rise{
  to{opacity:1; transform: translate3d(0,0,0)}
}
.doc-grid{
  display:grid;
  grid-template-columns: repeat(5, minmax(150px, 1fr));
  gap: 14px;
}
@media (max-width: 1100px){
  .doc-grid{ grid-template-columns: repeat(2, minmax(160px, 1fr)); }
}
@media (max-width: 520px){
  .doc-grid{ grid-template-columns: 1fr; }
}

.doc-card{
  position:relative;
  height: 190px;
  border-radius: 24px;
  border: 1px solid rgba(var(--secondary-rgb),.20);
  background: rgba(var(--primary-rgb), .20);
  box-shadow: 0 12px 35px rgba(var(--secondary-rgb),.12);
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
  cursor:pointer;
  overflow:hidden;
  transition: transform 200ms cubic-bezier(.2,.9,.2,1);
  transform-style:preserve-3d;
}
.doc-card:hover{ transform: translate3d(0,-8px,0) scale(1.02); }
.doc-card .face{
  position:absolute; inset:0;
  padding: 16px 16px;
  backface-visibility:hidden;
  display:flex; flex-direction:column; justify-content:space-between;
}
.doc-card .front{
  transform: rotateY(0deg);
}
.doc-card .back{
  transform: rotateY(180deg);
}
.doc-card .label{
  font-family: var(--font-mono);
  font-weight:700;
  font-size:12px;
  letter-spacing:.10em;
  text-transform:uppercase;
}
.doc-card .name{
  font-family: var(--font-display);
  font-size: 32px;
  margin: 10px 0 0 0;
}
.doc-card .meta{
  font-family: var(--font-mono);
  font-size: 12px;
  opacity:.8;
}
.doc-card .accent{
  position:absolute;
  left: -40px; top: -40px;
  width: 110px; height: 110px;
  border-radius: 50%;
  background: rgba(var(--primary-rgb),.28);
  filter: blur(2px);
}

/* Overlay reader */
.reader-backdrop{
  position:fixed;
  inset:0;
  z-index:50;
  background: rgba(var(--secondary-rgb),.30);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display:none;
  align-items:center;
  justify-content:center;
  padding: 28px;
}
.reader-backdrop.is-open{ display:flex; }
.reader{
  width: min(980px, 92vw);
  max-height: min(78vh, 840px);
  border-radius: 28px;
  border: 1px solid rgba(var(--secondary-rgb),.24);
  background: rgba(var(--primary-rgb), .24);
  box-shadow: 0 28px 100px rgba(var(--secondary-rgb),.22);
  backdrop-filter: blur(24px) saturate(160%);
  -webkit-backdrop-filter: blur(24px) saturate(160%);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.reader-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  padding: 16px 18px;
  border-bottom: 1px solid rgba(var(--secondary-rgb),.10);
}
.reader-title{
  font-family: var(--font-mono);
  font-weight:700;
  font-size: 13px;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.reader-close{
  width: 40px; height: 40px;
  border-radius: 999px;
  border: 1px solid rgba(var(--secondary-rgb),.16);
  background: rgba(var(--primary-rgb), .28);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  cursor:pointer;
  font-family: var(--font-mono);
}
.reader-body{
  padding: 18px 18px 22px;
  font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 16.5px;
  line-height: 1.68;
  overflow:auto;
  overscroll-behavior:contain;
}
.reader-body h1,.reader-body h2,.reader-body h3{
  font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  font-weight: 700;
}
.reader-body code{
  font-family: "Cascadia Code", "Fira Code", "Consolas", "Monaco", "Courier New", monospace, "Segoe UI Emoji", "Apple Color Emoji";
  background: rgba(var(--primary-rgb),.12);
  padding: 0 6px;
  border-radius: 8px;
}
.reader-body pre{
  background: rgba(var(--secondary-rgb),.06);
  border: 1px solid rgba(var(--secondary-rgb),.08);
  padding: 12px 14px;
  border-radius: 16px;
  overflow:auto;
  font-family: "Cascadia Code", "Fira Code", "Consolas", "Monaco", "Courier New", monospace, "Segoe UI Emoji", "Apple Color Emoji";
}

/* Footer contact */
.contact{
  display:flex;
  flex-wrap:wrap;
  gap: 10px 18px;
  align-items:center;
  justify-content:space-between;
  margin-top: 18px;
  padding: 16px 18px;
}
.contact a{
  color: var(--color-secondary);
  text-decoration:none;
  border-bottom: 1px solid rgba(var(--secondary-rgb),.28);
}
.contact a:hover{ border-bottom-color: var(--color-primary); }

/* ------------------------------------------------------------
   Offline scroll deck (no reveal.js runtime)
------------------------------------------------------------ */
body{ overflow:hidden; }

.deck{
  position:relative;
  z-index:1;
  height:100vh;
  overflow-y:auto;
  overflow-x:hidden;
  scroll-behavior:smooth;
  /* gentle snapping: feels continuous but helps land on a section */
  scroll-snap-type: y proximity;
}

.slide{
  min-height:100vh;
  scroll-snap-align:start;
  box-sizing:border-box;
  padding: 72px 7vw;
  display:flex;
  align-items:center;
}
.slide-inner{ width:100%; position: relative; }

@media (max-width: 900px){
  .slide{ padding: 64px 5.5vw; }
}

/* paper-stack: subtle layered sheets behind book cover */
.paper-stack{ position:relative; }
.paper-stack:before,
.paper-stack:after{
  content:"";
  position:absolute;
  left: 18px;
  right: 18px;
  top: 18px;
  bottom: 18px;
  border-radius: 26px;
  border: 1px solid rgba(var(--secondary-rgb),.12);
  background: rgba(var(--primary-rgb), .20);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: 0 18px 52px rgba(var(--secondary-rgb),.08);
  z-index:-1;
}
.paper-stack:before{ transform: translate3d(0,10px,0) rotate(-1.4deg); }
.paper-stack:after{ transform: translate3d(0,18px,0) rotate(1.1deg); opacity:.92; }

/* doc-card inner flip */
.doc-card{ position:relative; }
.doc-card__inner{
  position:absolute;
  inset:0;
  transform-style:preserve-3d;
  transition: transform 520ms cubic-bezier(.2,.9,.2,1);
}
.doc-card.is-flipped .doc-card__inner{ transform: rotateY(180deg); }

/* reader pop-in animation from clicked card */
.reader{
  transform-origin: center;
  --fromX: 0px;
  --fromY: 0px;
  --fromS: 0.8;
}
.reader.animate-in{
  animation: reader-in 520ms cubic-bezier(.2,.9,.2,1) both;
}
.reader.animate-out{
  animation: reader-out 320ms cubic-bezier(.4,.0,.2,1) both;
}
@keyframes reader-in{
  from{ transform: translate(var(--fromX), var(--fromY)) scale(var(--fromS)) rotateY(180deg); opacity:0; }
  to{ transform: translate(0px,0px) scale(1) rotateY(0deg); opacity:1; }
}
@keyframes reader-out{
  from{ transform: translate(0px,0px) scale(1) rotateY(0deg); opacity:1; }
  to{ transform: translate(var(--fromX), var(--fromY)) scale(var(--fromS)) rotateY(-120deg); opacity:0; }
}

/* video play button (only shown if autoplay fails) */
.video-play{
  position:absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  padding: 12px 16px;
  border-radius: 999px;
  border: 1px solid rgba(var(--primary-rgb), .30);
  background: rgba(var(--secondary-rgb),.70);
  color: var(--color-white);
  font-family: "Fraktion Mono", ui-monospace, Menlo, monospace;
  font-weight:700;
  letter-spacing:.08em;
  text-transform: uppercase;
  cursor:pointer;
  display:none;
}
.video-play.is-visible{ display:block; }

/* focus outline for contenteditable */
[contenteditable="true"]:focus{
  outline: 2px solid rgba(var(--primary-rgb),.40);
  outline-offset: 6px;
  border-radius: 10px;
}


/* Extra canvases (offline) */
#bgGrid3D{
  position:fixed;
  inset:0;
  width:100vw;
  height:100vh;
  z-index:0;
  pointer-events:none;
}
#coverLines{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:1;
  pointer-events:none;
  opacity:.55;
  mix-blend-mode:multiply;
}

/* Bullet list for research */
.bullets{
  margin: 10px 0 0 0;
  padding-left: 18px;
  font-size: 18px;
  line-height: 1.55;
}
.research-stage-full .bullets{
  font-size: 20px;
}

/* KaTeX 公式样式 */
.katex-display {
  margin: 1.2em 0 !important;
  text-align: center !important;
}
.katex {
  font-size: 2em;
}

/* 公式面板文字样式 */
.formula-panel {
  font-size: 18px;
  line-height: 1.8;
}
.bullets li{ margin: 8px 0; }
.bullets strong{ font-family: var(--font-mono); font-size: 15px; letter-spacing: .06em; text-transform: uppercase; }

/* ------------------------------------------------------------
   新增：学生卡片样式（简单布局，证件照尺寸）
------------------------------------------------------------ */
.student-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 24px;
  margin-top: 24px;
}
@media (max-width: 768px){
  .student-grid{ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
}

.student-card{
  position:relative;
  border-radius: 20px;
  border: 1px solid rgba(var(--secondary-rgb),.20);
  background: rgba(var(--primary-rgb), .18);
  box-shadow: 0 12px 35px rgba(var(--secondary-rgb),.12);
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
  cursor:pointer;
  overflow:hidden;
  transition: transform 200ms cubic-bezier(.2,.9,.2,1), box-shadow 200ms cubic-bezier(.2,.9,.2,1);
  padding: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.student-card:hover{
  transform: translate3d(0,-8px,0);
  box-shadow: 0 18px 45px rgba(var(--secondary-rgb),.18);
}

/* 证件照标准尺寸 */
.student-photo{
  width: 120px;
  height: 160px;
  background: rgba(var(--primary-rgb), .15);
  overflow: hidden;
  border-radius: 12px;
  margin-bottom: 12px;
  border: 2px solid rgba(var(--secondary-rgb),.16);
  box-shadow: 0 4px 12px rgba(var(--secondary-rgb),.10);
}
.student-photo img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.student-name{
  font-family: var(--font-display);
  font-size: 18px;
  margin: 0 0 4px 0;
  font-weight: 700;
  text-align: center;
  color: var(--color-secondary);
}

.student-research{
  font-size: 13px;
  opacity:.85;
  text-align: center;
  line-height: 1.4;
}

/* 笑脸弹出特效 */
.student-card:hover::after{
  content: '';
  position: absolute;
  right: -8px;
  top: -8px;
  width: 32px;
  height: 32px;
  background: url(../images/asset-smiley--main.svg) center/contain no-repeat;
  filter: hue-rotate(90deg) saturate(.65);
  opacity: 0.9;
  animation: smiley-pop 0.3s ease-out;
  z-index: 10;
}

@keyframes smiley-pop{
  0%{
    transform: scale(0) rotate(-180deg);
    opacity: 0;
  }
  60%{
    transform: scale(1.2) rotate(10deg);
    opacity: 1;
  }
  100%{
    transform: scale(1) rotate(0deg);
    opacity: 0.9;
  }
}

/* ------------------------------------------------------------
   新增：活动卡片样式
------------------------------------------------------------ */
.activity-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));
  gap: 24px;
  margin-top: 20px;
}
@media (max-width: 768px){
  .activity-grid{ grid-template-columns: 1fr; }
}

.activity-card{
  position:relative;
  border-radius: 24px;
  border: 1px solid rgba(var(--secondary-rgb),.20);
  background: rgba(var(--primary-rgb), .20);
  box-shadow: 0 12px 35px rgba(var(--secondary-rgb),.12);
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
  overflow:hidden;
  transition: transform 200ms cubic-bezier(.2,.9,.2,1), box-shadow 200ms cubic-bezier(.2,.9,.2,1);
  padding: 18px;
}
.activity-card:hover{
  transform: translate3d(0,-8px,0);
  box-shadow: 0 18px 45px rgba(var(--secondary-rgb),.18);
}
.activity-photo{
  width: 100%;
  aspect-ratio: 16/9;
  background: rgba(var(--primary-rgb), .15);
  overflow: hidden;
  border-radius: 20px;
}

/* ------------------------------------------------------------
   新增：联系方式样式
------------------------------------------------------------ */
.contact-group{
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(var(--secondary-rgb),.10);
}
.contact-group:last-child{
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}
.contact-group .h3{
  font-family: var(--font-display);
  font-size: 22px;
  margin: 0 0 8px 0;
  font-weight: 700;
  color: var(--color-primary);
}
.contact-group .p{
  margin: 0;
  font-size: 16px;
}
.contact-group a{
  color: var(--color-secondary);
  text-decoration:none;
  border-bottom: 1px solid rgba(var(--secondary-rgb),.28);
}
.contact-group a:hover{
  border-bottom-color: var(--color-primary);
}

/* ------------------------------------------------------------
   标题样式调整
------------------------------------------------------------ */
.h3{
  font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.2;
}

/* ------------------------------------------------------------
   Recruitment和Publications部分样式调整
   移除段落max-width限制，让文字占满容器
------------------------------------------------------------ */
/* 导师介绍页面内的所有段落 */
.slide-cover .panel .p {
  max-width: none;
}

/* 导师介绍页面内的所有p标签 */
.slide-cover .panel p {
  max-width: none;
  width: 100%;
  box-sizing: border-box;
}

/* 主要论文和科研项目部分内的段落 */
.slide-cover .panel.panel-pad p {
  box-sizing: border-box;
}

/* 确保带有背景色的段落不会超出容器 */
.slide-cover .panel.panel-pad p[style*="background"] {
  box-sizing: border-box;
  margin-left: 0;
  margin-right: 0;
}

/* 所有slide内的段落都移除max-width限制 */
.slide .panel .p {
  max-width: none;
}

/* 所有slide内的p标签 */
.slide .panel p {
  max-width: none;
  width: 100%;
  box-sizing: border-box;
}

/* deck内所有段落都移除max-width限制 */
.deck .panel .p {
  max-width: none;
}

/* deck内所有p标签 */
.deck .panel p {
  max-width: none;
  width: 100%;
  box-sizing: border-box;
}
