/**
 * main.css — Minxu Liu Personal Academic Website
 * Aesthetic: Refined Editorial · High-end Academic
 * Themes: 10 switchable color schemes via data-theme attribute
 */

/* ── FONTS ──────────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&family=Outfit:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap');

/* ════════════════════════════════════════════════════════════
   THEME TOKENS
   Usage: <html data-theme="dark"> etc.
   ════════════════════════════════════════════════════════════ */

/* 1. Ivory & Jade (default — light) */
:root, [data-theme="ivory"] {
  --bg:           #f9f7f4;
  --bg2:          #f3f0eb;
  --bg3:          #ece7df;
  --surface:      #e8e0d4;
  --border:       #ddd7ce;
  --border2:      #cec8bf;
  --ink:          #1c1916;
  --text:         #3a3630;
  --text2:        #6b6459;
  --text3:        #9e968a;
  --text4:        #c5bfb7;
  --accent:       #7aac96;
  --accent-light: rgba(122,172,150,0.14);
  --accent-border:rgba(122,172,150,0.32);
  --accent-text:  #4a8a70;
  --accent2:      #b8965a;
  --accent2-light:rgba(184,150,90,0.12);
  --accent2-border:rgba(184,150,90,0.30);
  --accent2-text: #9a7a38;
  --green:        #5a9e7a;
  --amber:        #c49a3c;
  --nav-bg:       rgba(249,247,244,0.88);
  --shadow:       rgba(28,25,22,0.06);
  --shadow-md:    rgba(28,25,22,0.12);
  --serif:        'Cormorant Garamond', Georgia, serif;
  --sans:         'Outfit', sans-serif;
  --mono:         'JetBrains Mono', monospace;
  --radius:       6px;
  --radius-lg:    12px;
  --ease:         cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --max-w:        1080px;
  --gap:          clamp(20px, 5vw, 64px);
}

/* 2. Deep Slate (dark cyan) */
[data-theme="dark"] {
  --bg:           #0d0f14;
  --bg2:          #13161e;
  --bg3:          #1a1e28;
  --surface:      #1e2330;
  --border:       rgba(255,255,255,0.07);
  --border2:      rgba(255,255,255,0.12);
  --ink:          #e8ecf4;
  --text:         #c8d0de;
  --text2:        #8b95a8;
  --text3:        #5a6174;
  --text4:        #363d4e;
  --accent:       #6ee7f7;
  --accent-light: rgba(110,231,247,0.08);
  --accent-border:rgba(110,231,247,0.22);
  --accent-text:  #6ee7f7;
  --accent2:      #a78bfa;
  --accent2-light:rgba(167,139,250,0.10);
  --accent2-border:rgba(167,139,250,0.28);
  --accent2-text: #a78bfa;
  --green:        #4ade80;
  --amber:        #fbbf24;
  --nav-bg:       rgba(13,15,20,0.88);
  --shadow:       rgba(0,0,0,0.25);
  --shadow-md:    rgba(0,0,0,0.45);
}

/* 3. Midnight Blue */
[data-theme="midnight"] {
  --bg:           #0f1523;
  --bg2:          #141c2e;
  --bg3:          #1a2438;
  --surface:      #1f2c42;
  --border:       rgba(126,184,247,0.10);
  --border2:      rgba(126,184,247,0.18);
  --ink:          #dce8f8;
  --text:         #b8cde8;
  --text2:        #7090b8;
  --text3:        #445572;
  --text4:        #28384e;
  --accent:       #7eb8f7;
  --accent-light: rgba(126,184,247,0.10);
  --accent-border:rgba(126,184,247,0.28);
  --accent-text:  #7eb8f7;
  --accent2:      #f0a070;
  --accent2-light:rgba(240,160,112,0.10);
  --accent2-border:rgba(240,160,112,0.28);
  --accent2-text: #f0a070;
  --green:        #56c990;
  --amber:        #f0b840;
  --nav-bg:       rgba(15,21,35,0.90);
  --shadow:       rgba(0,0,0,0.30);
  --shadow-md:    rgba(0,0,0,0.50);
}

/* 4. Forest & Moss (light green) */
[data-theme="forest"] {
  --bg:           #f4f7f4;
  --bg2:          #edf2ec;
  --bg3:          #e2ebe1;
  --surface:      #d6e2d5;
  --border:       #c8d9c7;
  --border2:      #b4c8b2;
  --ink:          #1a2618;
  --text:         #2e4228;
  --text2:        #5a7856;
  --text3:        #8aaa84;
  --text4:        #b4ccb0;
  --accent:       #5a8c6a;
  --accent-light: rgba(90,140,106,0.12);
  --accent-border:rgba(90,140,106,0.30);
  --accent-text:  #3d6e4e;
  --accent2:      #8b6b3d;
  --accent2-light:rgba(139,107,61,0.10);
  --accent2-border:rgba(139,107,61,0.26);
  --accent2-text: #6e5030;
  --green:        #4a8e5e;
  --amber:        #b88040;
  --nav-bg:       rgba(244,247,244,0.90);
  --shadow:       rgba(26,38,24,0.06);
  --shadow-md:    rgba(26,38,24,0.12);
}

/* 5. Rose Quartz (light pink) */
[data-theme="rose"] {
  --bg:           #fdf6f6;
  --bg2:          #f8eeee;
  --bg3:          #f1e4e4;
  --surface:      #e8d8d8;
  --border:       #decccc;
  --border2:      #d0bcbc;
  --ink:          #2a1818;
  --text:         #4a2828;
  --text2:        #8a5858;
  --text3:        #b88888;
  --text4:        #d8b0b0;
  --accent:       #c4706b;
  --accent-light: rgba(196,112,107,0.10);
  --accent-border:rgba(196,112,107,0.28);
  --accent-text:  #a85050;
  --accent2:      #7a8caa;
  --accent2-light:rgba(122,140,170,0.10);
  --accent2-border:rgba(122,140,170,0.26);
  --accent2-text: #5a6e90;
  --green:        #7aaa80;
  --amber:        #c49060;
  --nav-bg:       rgba(253,246,246,0.90);
  --shadow:       rgba(42,24,24,0.06);
  --shadow-md:    rgba(42,24,24,0.12);
}

/* 6. Obsidian & Gold (dark warm) */
[data-theme="obsidian"] {
  --bg:           #131210;
  --bg2:          #1a1916;
  --bg3:          #22201c;
  --surface:      #2a2824;
  --border:       rgba(201,168,76,0.10);
  --border2:      rgba(201,168,76,0.20);
  --ink:          #f0ead8;
  --text:         #d8cebc;
  --text2:        #9a9080;
  --text3:        #60584a;
  --text4:        #3a342a;
  --accent:       #c9a84c;
  --accent-light: rgba(201,168,76,0.10);
  --accent-border:rgba(201,168,76,0.28);
  --accent-text:  #c9a84c;
  --accent2:      #a07088;
  --accent2-light:rgba(160,112,136,0.10);
  --accent2-border:rgba(160,112,136,0.26);
  --accent2-text: #a07088;
  --green:        #7ab880;
  --amber:        #e0a840;
  --nav-bg:       rgba(19,18,16,0.90);
  --shadow:       rgba(0,0,0,0.35);
  --shadow-md:    rgba(0,0,0,0.55);
}

/* 7. Arctic White (crisp blue-white) */
[data-theme="arctic"] {
  --bg:           #f7f9fb;
  --bg2:          #eef2f7;
  --bg3:          #e2eaf2;
  --surface:      #d4dfec;
  --border:       #c4d3e4;
  --border2:      #adc0d8;
  --ink:          #0e1e30;
  --text:         #1e3448;
  --text2:        #4a6a90;
  --text3:        #7898bc;
  --text4:        #aac0d8;
  --accent:       #4a90d9;
  --accent-light: rgba(74,144,217,0.10);
  --accent-border:rgba(74,144,217,0.28);
  --accent-text:  #2a70c0;
  --accent2:      #e05050;
  --accent2-light:rgba(224,80,80,0.08);
  --accent2-border:rgba(224,80,80,0.24);
  --accent2-text: #c03030;
  --green:        #40a878;
  --amber:        #d09020;
  --nav-bg:       rgba(247,249,251,0.90);
  --shadow:       rgba(14,30,48,0.06);
  --shadow-md:    rgba(14,30,48,0.12);
}

/* 8. Lavender Dusk (light purple) */
[data-theme="lavender"] {
  --bg:           #f5f4fb;
  --bg2:          #edeaf8;
  --bg3:          #e3dff2;
  --surface:      #d6d0e8;
  --border:       #c8c0e0;
  --border2:      #b4aad4;
  --ink:          #1e1830;
  --text:         #342e4e;
  --text2:        #6858a8;
  --text3:        #9888c8;
  --text4:        #c0b0e0;
  --accent:       #7c6fc4;
  --accent-light: rgba(124,111,196,0.10);
  --accent-border:rgba(124,111,196,0.28);
  --accent-text:  #5e50b0;
  --accent2:      #d47898;
  --accent2-light:rgba(212,120,152,0.10);
  --accent2-border:rgba(212,120,152,0.26);
  --accent2-text: #b85878;
  --green:        #68b880;
  --amber:        #c09848;
  --nav-bg:       rgba(245,244,251,0.90);
  --shadow:       rgba(30,24,48,0.06);
  --shadow-md:    rgba(30,24,48,0.12);
}

/* 9. Sand & Terracotta (warm earth) */
[data-theme="sand"] {
  --bg:           #faf5ee;
  --bg2:          #f5ede0;
  --bg3:          #ede0cc;
  --surface:      #e0d0b8;
  --border:       #d4c0a0;
  --border2:      #c4a880;
  --ink:          #2c1c0c;
  --text:         #4a3020;
  --text2:        #8a6040;
  --text3:        #b89070;
  --text4:        #d8bca0;
  --accent:       #c46a3a;
  --accent-light: rgba(196,106,58,0.10);
  --accent-border:rgba(196,106,58,0.28);
  --accent-text:  #a85020;
  --accent2:      #5a8090;
  --accent2-light:rgba(90,128,144,0.10);
  --accent2-border:rgba(90,128,144,0.26);
  --accent2-text: #3a6070;
  --green:        #6a9e68;
  --amber:        #c09040;
  --nav-bg:       rgba(250,245,238,0.90);
  --shadow:       rgba(44,28,12,0.06);
  --shadow-md:    rgba(44,28,12,0.12);
}

/* 10. Carbon & Neon (dark green neon) */
[data-theme="carbon"] {
  --bg:           #1a1a1a;
  --bg2:          #212121;
  --bg3:          #2a2a2a;
  --surface:      #333333;
  --border:       rgba(57,255,144,0.10);
  --border2:      rgba(57,255,144,0.20);
  --ink:          #eefff4;
  --text:         #c8f0d8;
  --text2:        #70a888;
  --text3:        #446655;
  --text4:        #2a3e32;
  --accent:       #39ff90;
  --accent-light: rgba(57,255,144,0.08);
  --accent-border:rgba(57,255,144,0.22);
  --accent-text:  #28e878;
  --accent2:      #ff6b6b;
  --accent2-light:rgba(255,107,107,0.08);
  --accent2-border:rgba(255,107,107,0.22);
  --accent2-text: #ff6b6b;
  --green:        #39ff90;
  --amber:        #ffd700;
  --nav-bg:       rgba(26,26,26,0.90);
  --shadow:       rgba(0,0,0,0.40);
  --shadow-md:    rgba(0,0,0,0.60);
}

/* ── RESET ───────────────────────────────────────────────── */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; font-size: 16px; }
body {
  background: var(--bg);
  color: var(--ink);
  font-family: var(--sans);
  font-weight: 300;
  line-height: 1.75;
  overflow-x: hidden;
  transition: background 0.35s, color 0.35s;
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }

/* ── SCROLLBAR ───────────────────────────────────────────── */
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: var(--bg2); }
::-webkit-scrollbar-thumb { background: var(--surface); border-radius: 3px; }

/* ── PAPER TEXTURE ───────────────────────────────────────── */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  opacity: 0.025;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='400'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='400' height='400' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
}

/* ── THEME PANEL ─────────────────────────────────────────── */
#theme-panel {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 600;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
}
#theme-toggle {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--border2);
  background: var(--bg2);
  font-size: 1.1rem;
  cursor: pointer;
  box-shadow: 0 2px 12px var(--shadow-md);
  transition: transform 0.2s, box-shadow 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}
#theme-toggle:hover { transform: scale(1.1); box-shadow: 0 4px 18px var(--shadow-md); }
#theme-grid {
  background: var(--bg2);
  border: 1px solid var(--border2);
  border-radius: var(--radius-lg);
  padding: 14px 16px;
  box-shadow: 0 8px 32px var(--shadow-md);
  min-width: 200px;
  transition: background 0.3s, border-color 0.3s;
}
#theme-grid.hidden { display: none; }
.theme-label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text3);
  margin-bottom: 10px;
}
.theme-swatches {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
}
.swatch {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 6px 8px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--bg3);
  cursor: pointer;
  transition: all 0.18s;
}
.swatch:hover { border-color: var(--accent-border); background: var(--accent-light); }
.swatch.active { border-color: var(--accent-border); background: var(--accent-light); }
.swatch span {
  width: 14px; height: 14px;
  border-radius: 3px;
  flex-shrink: 0;
  border: 1px solid rgba(0,0,0,0.1);
}
.swatch small {
  font-family: var(--mono);
  font-size: 10px;
  color: var(--text2);
  white-space: nowrap;
}

/* ── NAVIGATION ─────────────────────────────────────────── */
#nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 500;
  height: 56px;
  display: flex;
  align-items: center;
  padding: 0 var(--gap);
  background: var(--nav-bg);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
  transition: box-shadow 0.3s var(--ease), background 0.35s;
}
#nav.scrolled { box-shadow: 0 1px 20px var(--shadow); }
.nav-inner {
  max-width: var(--max-w);
  width: 100%;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.nav-logo {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 500;
  color: var(--ink);
  letter-spacing: 0.02em;
}
.nav-logo span { color: var(--accent-text); }
.nav-links {
  list-style: none;
  display: flex;
  gap: 36px;
}
.nav-links a {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text2);
  transition: color 0.2s;
  position: relative;
}
.nav-links a::after {
  content: '';
  position: absolute;
  bottom: -3px; left: 0; right: 0;
  height: 1px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s var(--ease);
}
.nav-links a:hover { color: var(--ink); }
.nav-links a:hover::after { transform: scaleX(1); }

/* ── LAYOUT ──────────────────────────────────────────────── */
.page-wrap {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 0 var(--gap);
}

/* ── SECTION BASE ────────────────────────────────────────── */
.section {
  padding: 80px 0;
  border-top: 1px solid var(--border);
}
.section-eyebrow {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent-text);
  margin-bottom: 10px;
}
.section-title {
  font-family: var(--serif);
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  font-weight: 400;
  color: var(--ink);
  letter-spacing: -0.01em;
  line-height: 1.2;
  margin-bottom: 44px;
}
.section-title em {
  font-style: italic;
  color: var(--text2);
}

/* ── HERO ────────────────────────────────────────────────── */
#hero {
  padding-top: 128px;
  padding-bottom: 100px;
  display: grid;
  grid-template-columns: 1fr 210px;
  gap: 56px;
  align-items: start;
  min-height: 92vh;
}

.hero-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 5px 12px;
  border-radius: 100px;
  background: var(--accent-light);
  border: 1px solid var(--accent-border);
  font-size: 12px;
  font-weight: 500;
  color: var(--green);
  font-family: var(--sans);
  margin-bottom: 28px;
  letter-spacing: 0.02em;
}
.hero-tag .dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--green);
  animation: breathe 2.5s ease-in-out infinite;
}
.hero-tag a { color: var(--green); border-bottom: 1px solid rgba(90,158,122,0.3); }
.hero-tag a:hover { border-color: var(--green); }

@keyframes breathe {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.35; transform: scale(0.75); }
}

.hero-name {
  font-family: var(--serif);
  font-size: clamp(3.2rem, 7vw, 5.5rem);
  font-weight: 400;
  letter-spacing: -0.025em;
  line-height: 0.95;
  color: var(--ink);
  margin-bottom: 6px;
}
.hero-name-zh {
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2vw, 1.5rem);
  font-weight: 300;
  color: var(--text3);
  letter-spacing: 0.15em;
  margin-bottom: 28px;
  font-style: italic;
}

.hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin-bottom: 28px;
  font-size: 13.5px;
  color: var(--text2);
  align-items: center;
}
.hero-meta a { color: var(--accent-text); border-bottom: 1px solid var(--accent-border); transition: border-color 0.2s; }
.hero-meta a:hover { border-color: var(--accent); }
.hero-meta .sep { color: var(--text4); }

.hero-bio {
  font-size: 15.5px;
  line-height: 1.85;
  color: var(--text2);
  max-width: 600px;
  margin-bottom: 20px;
}
.hero-bio strong { color: var(--ink); font-weight: 500; }
.hero-bio a { color: var(--accent-text); border-bottom: 1px solid var(--accent-border); }
.hero-bio a:hover { border-color: var(--accent); }

/* ── Collaboration box ───────────────────────────────────── */
.hero-collab {
  max-width: 580px;
  padding: 16px 20px;
  border-left: 2.5px solid var(--accent);
  background: var(--accent-light);
  border-radius: 0 var(--radius) var(--radius) 0;
  margin-bottom: 32px;
}
.collab-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.collab-emoji { font-size: 1.1rem; }
.hero-collab strong {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
}
.hero-collab p {
  font-size: 13.5px;
  line-height: 1.7;
  color: var(--text2);
}

/* ── Research interests ─────────────────────────────────── */
.hero-interests {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 32px;
}
.interest-tag {
  padding: 4px 12px;
  border-radius: 100px;
  font-size: 12px;
  background: var(--bg3);
  border: 1px solid var(--border);
  color: var(--text2);
  font-family: var(--mono);
  transition: all 0.2s;
}
.interest-tag:hover {
  background: var(--accent-light);
  border-color: var(--accent-border);
  color: var(--accent-text);
}

/* ── CTA buttons ────────────────────────────────────────── */
.hero-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-items: flex-start;
}
.email-group {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.link-group {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  border-radius: var(--radius);
  font-family: var(--sans);
  transition: all 0.22s var(--ease);
  cursor: pointer;
  line-height: 1.2;
}
.btn-primary {
  background: var(--ink);
  color: var(--bg);
  border: 1px solid var(--ink);
}
.btn-primary:hover {
  background: var(--text);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px var(--shadow-md);
}
.btn-ghost {
  background: transparent;
  color: var(--text2);
  border: 1px solid var(--border2);
}
.btn-ghost:hover {
  border-color: var(--text3);
  color: var(--ink);
  transform: translateY(-1px);
}
.btn-icon {
  font-size: 13px;
  font-weight: 500;
  padding: 10px 16px;
  font-family: var(--mono);
  letter-spacing: 0.03em;
}

/* Email button — two-line layout */
.email-btn {
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
}
.email-icon {
  font-size: 0.95rem;
  flex-shrink: 0;
}
.email-text {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
.email-label {
  font-size: 10px;
  font-family: var(--mono);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.6;
  line-height: 1;
}
.email-addr {
  font-size: 12.5px;
  font-weight: 500;
  font-family: var(--mono);
  letter-spacing: 0.01em;
  line-height: 1.2;
}

/* ── PROFILE PHOTO ──────────────────────────────────────── */
/* Aligned to the top of hero, NOT offset right */
.hero-photo-wrap {
  position: sticky;
  top: 80px;           /* sticks under nav while scrolling */
  align-self: start;
}
.hero-photo-frame {
  width: 200px;
  height: 220px;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--bg3);
  border: 1px solid var(--border2);
}
.hero-photo-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  filter: sepia(6%) contrast(1.02);
  transition: filter 0.4s;
}
.hero-photo-frame:hover img { filter: sepia(0%) contrast(1); }
.hero-photo-initials {
  width: 100%; height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--serif);
  font-size: 4rem;
  font-weight: 300;
  color: var(--text3);
}
.hero-photo-caption {
  margin-top: 10px;
  text-align: center;   /* centred under photo, not drifting right */
  font-size: 11px;
  color: var(--text3);
  font-family: var(--mono);
  letter-spacing: 0.05em;
  line-height: 1.6;
  width: 200px;         /* match photo width exactly */
}

/* ── STATS ROW ──────────────────────────────────────────── */
.stats-row {
  display: flex;
  gap: 0;
  margin-bottom: 60px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--bg2);
}
.stat-item {
  flex: 1;
  padding: 20px 24px;
  text-align: center;
  border-right: 1px solid var(--border);
  transition: background 0.2s;
}
.stat-item:last-child { border-right: none; }
.stat-item:hover { background: var(--bg3); }
.stat-number {
  font-family: var(--serif);
  font-size: 2.2rem;
  font-weight: 400;
  color: var(--ink);
  line-height: 1;
  margin-bottom: 4px;
}
.stat-label {
  font-size: 11.5px;
  color: var(--text3);
  font-family: var(--mono);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* ── NEWS ────────────────────────────────────────────────── */
.news-list { display: flex; flex-direction: column; }
.news-item {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 24px;
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
  align-items: start;
}
.news-item:first-child { border-top: 1px solid var(--border); }
.news-date {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--text3);
  padding-top: 3px;
  letter-spacing: 0.05em;
}
.news-body {
  font-size: 14px;
  color: var(--text2);
  line-height: 1.65;
}
.news-body strong { color: var(--ink); font-weight: 500; }
.news-body em { font-style: italic; }
.news-body a { color: var(--accent-text); border-bottom: 1px solid var(--accent-border); }
.news-body a:hover { border-color: var(--accent); }
.news-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 9px;
  border-radius: 100px;
  font-size: 10.5px;
  font-weight: 500;
  font-family: var(--mono);
  letter-spacing: 0.05em;
  margin-right: 6px;
  vertical-align: middle;
  position: relative;
  top: -1px;
}
.pill-admission { background: var(--accent-light); color: var(--green); border: 1px solid var(--accent-border); }
.pill-paper     { background: var(--accent-light); color: var(--accent-text); border: 1px solid var(--accent-border); }
.pill-award     { background: var(--accent2-light); color: var(--accent2-text); border: 1px solid var(--accent2-border); }

/* ── RESEARCH AREA ──────────────────────────────────────── */
.research-area { margin-bottom: 56px; }
.area-header {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 16px;
  align-items: center;
  margin-bottom: 20px;
}
.area-number {
  font-family: var(--serif);
  font-size: 2.5rem;
  font-weight: 300;
  color: var(--border2);
  line-height: 1;
}
.area-info-title {
  font-family: var(--serif);
  font-size: 1.25rem;
  font-weight: 400;
  color: var(--ink);
}
.area-info-sub {
  font-size: 12.5px;
  color: var(--text3);
  font-family: var(--mono);
}
.area-divider {
  height: 1px;
  background: linear-gradient(to right, var(--accent-border), transparent);
  margin-bottom: 20px;
}

/* ── PAPER CARD ─────────────────────────────────────────── */
.paper-card {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 24px;
  padding: 24px;
  border-radius: var(--radius-lg);
  background: var(--bg2);
  border: 1px solid var(--border);
  margin-bottom: 12px;
  transition: all 0.3s var(--ease);
  position: relative;
}
.paper-card::before {
  content: '';
  position: absolute;
  left: 0; top: 16px; bottom: 16px;
  width: 2px;
  border-radius: 2px;
  background: var(--accent);
  opacity: 0;
  transition: opacity 0.3s;
}
.paper-card:hover {
  border-color: var(--border2);
  box-shadow: 0 6px 28px var(--shadow);
  transform: translateY(-2px);
}
.paper-card:hover::before { opacity: 1; }

.paper-thumb {
  width: 100%;
  aspect-ratio: 10/9;
  border-radius: var(--radius);
  background: linear-gradient(135deg, var(--bg3), var(--surface));
  overflow: hidden;
  border: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.paper-thumb img { width: 100%; height: 100%; object-fit: cover; }
.paper-thumb-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%; height: 100%;
  font-size: 2.4rem;
  opacity: 0.45;
}

.paper-meta-row {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
  margin-bottom: 9px;
}
.venue-pill {
  display: inline-block;
  padding: 2px 9px;
  border-radius: 4px;
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.04em;
}
.venue-ccfa { background: var(--accent-light); color: var(--accent-text); border: 1px solid var(--accent-border); }
.venue-ccfb { background: var(--accent-light); color: var(--accent-text); border: 1px solid var(--accent-border); opacity: 0.8; }
.venue-q1   { background: var(--accent2-light); color: var(--accent2-text); border: 1px solid var(--accent2-border); }

.status-pill {
  font-family: var(--mono);
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 4px;
  letter-spacing: 0.04em;
}
.status-accepted { background: var(--accent-light); color: var(--green); border: 1px solid var(--accent-border); }
.status-review   { background: var(--accent2-light); color: var(--amber); border: 1px solid var(--accent2-border); }

.paper-index { font-family: var(--mono); font-size: 10px; color: var(--text4); margin-left: auto; }

.paper-title {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--ink);
  line-height: 1.4;
  margin-bottom: 5px;
  transition: color 0.2s;
}
.paper-card:hover .paper-title { color: var(--accent-text); }

.paper-authors {
  font-size: 12.5px;
  color: var(--text3);
  margin-bottom: 4px;
  line-height: 1.5;
}
.paper-authors .self { color: var(--accent-text); font-weight: 500; }
.first-author-tag {
  font-size: 10px;
  font-family: var(--mono);
  background: var(--accent-light);
  border: 1px solid var(--accent-border);
  color: var(--accent-text);
  padding: 1px 5px;
  border-radius: 3px;
  margin-left: 3px;
}

.paper-venue-line {
  font-size: 12px;
  color: var(--text3);
  font-style: italic;
  margin-bottom: 10px;
}
.paper-period { font-style: normal; color: var(--text4); }

.paper-abstract {
  font-size: 13px;
  color: var(--text2);
  line-height: 1.7;
  margin-bottom: 14px;
}

.paper-links { display: flex; gap: 7px; flex-wrap: wrap; }
.paper-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 11px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
  font-family: var(--mono);
  background: var(--bg3);
  border: 1px solid var(--border);
  color: var(--text2);
  transition: all 0.2s;
}
.paper-link:hover {
  background: var(--accent-light);
  border-color: var(--accent-border);
  color: var(--accent-text);
}

/* ── EDUCATION ──────────────────────────────────────────── */
.edu-list { display: flex; flex-direction: column; gap: 2px; }
.edu-item {
  display: grid;
  grid-template-columns: 52px 1fr auto;
  gap: 20px;
  padding: 22px 24px;
  border-radius: var(--radius-lg);
  background: var(--bg2);
  border: 1px solid var(--border);
  align-items: start;
  transition: all 0.25s var(--ease);
}
.edu-item.incoming {
  border-color: var(--accent-border);
  background: linear-gradient(135deg, var(--bg2), var(--accent-light));
}
.edu-item:hover {
  box-shadow: 0 4px 20px var(--shadow);
  transform: translateY(-1px);
}
.edu-icon-wrap {
  width: 44px; height: 44px;
  border-radius: 10px;
  background: var(--bg3);
  border: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  flex-shrink: 0;
}
.edu-body { min-width: 0; }
.edu-school {
  font-size: 15px;
  font-weight: 500;
  color: var(--ink);
  margin-bottom: 3px;
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
}
.edu-school a { border-bottom: 1px solid var(--border); transition: border-color 0.2s; }
.edu-school a:hover { border-color: var(--accent); color: var(--accent-text); }
.edu-school-zh { font-size: 12px; color: var(--text3); font-weight: 300; }
.incoming-badge {
  font-family: var(--mono);
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--accent-light);
  border: 1px solid var(--accent-border);
  color: var(--green);
  font-weight: 500;
  letter-spacing: 0.04em;
}
.edu-degree { font-size: 13.5px; color: var(--text2); margin-bottom: 4px; }
.edu-note { font-size: 12px; color: var(--text3); font-family: var(--mono); }
.edu-gpa { color: var(--accent-text); font-family: var(--mono); font-size: 12px; }
.edu-period {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--text3);
  white-space: nowrap;
  padding-top: 3px;
}

/* ── AWARDS ─────────────────────────────────────────────── */
.awards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 8px;
}
.award-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 18px;
  border-radius: var(--radius);
  background: var(--bg2);
  border: 1px solid var(--border);
  transition: all 0.2s var(--ease);
}
.award-item:hover { border-color: var(--border2); background: var(--bg3); }
.award-icon { font-size: 1rem; flex-shrink: 0; margin-top: 3px; }
.award-name { font-size: 13px; font-weight: 400; color: var(--ink); line-height: 1.5; margin-bottom: 3px; }
.award-footer { display: flex; align-items: center; gap: 8px; }
.award-date { font-family: var(--mono); font-size: 10.5px; color: var(--text3); }
.award-level-badge {
  font-family: var(--mono);
  font-size: 10px;
  padding: 1px 7px;
  border-radius: 3px;
  background: var(--bg3);
  color: var(--text3);
  border: 1px solid var(--border);
}
.award-level-badge.intl { background: var(--accent2-light); color: var(--accent2-text); border-color: var(--accent2-border); }
.award-level-badge.natl { background: var(--accent-light); color: var(--green); border-color: var(--accent-border); }

/* ── FOOTER ──────────────────────────────────────────────── */
#footer {
  border-top: 1px solid var(--border);
  padding: 44px 0;
  background: var(--bg2);
}
.footer-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 0 var(--gap);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
}
.footer-name { font-family: var(--serif); font-size: 1.1rem; font-weight: 400; color: var(--ink); }
.footer-copy { font-size: 11px; color: var(--text4); font-family: var(--mono); margin-top: 4px; }
.footer-links { display: flex; gap: 20px; }
.footer-links a {
  font-size: 12px;
  color: var(--text3);
  font-family: var(--mono);
  letter-spacing: 0.04em;
  transition: color 0.2s;
}
.footer-links a:hover { color: var(--accent-text); }

/* ── SCROLL REVEAL ──────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.65s var(--ease), transform 0.65s var(--ease);
}
.reveal.visible { opacity: 1; transform: none; }

/* ── RESPONSIVE ─────────────────────────────────────────── */
@media (max-width: 820px) {
  #hero { grid-template-columns: 1fr; min-height: auto; }
  .hero-photo-wrap { display: none; }
  .paper-card { grid-template-columns: 1fr; }
  .paper-thumb { max-width: 180px; }
  .edu-item { grid-template-columns: 44px 1fr; }
  .edu-period { display: none; }
  .stats-row { flex-wrap: wrap; }
  .stat-item { flex: 0 0 50%; }
  .email-group { flex-direction: column; }
}
@media (max-width: 560px) {
  .nav-links { display: none; }
  .news-item { grid-template-columns: 1fr; gap: 4px; }
  .awards-grid { grid-template-columns: 1fr; }
  #theme-panel { bottom: 16px; right: 16px; }
}
