/* ---------- theme tokens ---------- */
:root{
  --bg: #fbfbfa;
  --surface: #ffffff;
  --text: #1a1a1c;
  --muted: #5f5f68;
  --faint: #6a6a72;
  --border: #e8e7e3;
  --accent: #5b51d8;
  --accent-soft: #efedfb;
  --badge-bg: #f2f1ec;
  --sun-display: none;
  --moon-display: inline;
  --max: 720px;
  --header-h: 68px; /* live-updated by script.js to the sticky header's real height */
}
:root[data-theme="dark"]{
  --bg: #0b0b0d;
  --surface: #141417;
  --text: #ececef;
  --muted: #a2a2ad;
  --faint: #8b8b95;
  --border: #26262b;
  --accent: #a99bf5;
  --accent-soft: #1d1a2e;
  --badge-bg: #1c1c20;
  --sun-display: inline;
  --moon-display: none;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:16px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
.lede a, .block-lede a, .foundations a, .statement a, .entry p a{text-decoration:underline;text-underline-offset:2px}
a:focus-visible, button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}
em{font-style:italic;color:var(--text)}
strong{font-weight:600}

.skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:8px 14px;border-radius:8px;z-index:10}
.skip:focus{left:12px;top:12px}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:5;
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;
  padding:16px clamp(20px,5vw,40px);
  background:color-mix(in srgb, var(--bg) 82%, transparent);
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--border);
}
.brand{
  font-family:'Newsreader',Georgia,serif;
  font-size:17px;font-weight:500;color:var(--text);
  letter-spacing:.01em;
}
.brand:hover{text-decoration:none;color:var(--accent)}
.site-nav{display:flex;align-items:center;gap:22px}
.site-nav a{color:var(--muted);font-size:14.5px}
.site-nav a:hover{color:var(--text);text-decoration:none}
#theme-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;padding:0;
  background:transparent;border:1px solid var(--border);border-radius:9px;
  color:var(--muted);cursor:pointer;transition:color .15s,border-color .15s;
}
#theme-toggle:hover{color:var(--text);border-color:var(--faint)}
.i-sun{display:var(--sun-display)}
.i-moon{display:var(--moon-display)}

/* ---------- layout ---------- */
main{max-width:var(--max);margin:0 auto;padding:0 clamp(20px,5vw,40px)}
.block{padding:34px 0}
/* keep in-page anchor targets (nav jumps, skip link) clear of the sticky header */
main,.block{scroll-margin-top:calc(var(--header-h) + 14px)}
.section-label{
  font-size:12.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--faint);margin:0 0 18px;
}
.section-label a{color:inherit}
.block-lede{color:var(--muted);max-width:60ch;margin:0 0 22px}

.divider{color:var(--border);line-height:0;opacity:.9}
.divider svg{display:block;color:var(--border)}

/* ---------- hero ---------- */
.hero{padding:48px 0 30px}
.hero::after{content:"";display:block;clear:both}
.hero h1{
  font-family:'Newsreader',Georgia,serif;
  font-weight:500;font-size:clamp(34px,6vw,46px);line-height:1.05;
  letter-spacing:-.01em;margin:0 0 10px;
}
.role{font-size:17px;color:var(--muted);margin:0 0 20px}
.lede{font-size:17px;color:var(--text);max-width:60ch;margin:0 0 24px}
.hero-photo{
  float:right;margin:6px 0 16px 32px;
  width:220px;height:auto;
  border-radius:14px;border:1px solid var(--border);
}

/* link rows */
.links{list-style:none;display:flex;flex-wrap:wrap;gap:10px 20px;margin:0;padding:0}
.links a{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:15px}
.links a:hover{color:var(--accent);text-decoration:none}
.links svg{flex:none}

/* ---------- news ---------- */
.news{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:13px}
.news li{display:flex;gap:18px;align-items:baseline}
.news .when{flex:none;width:74px;color:var(--faint);font-size:13.5px;font-variant-numeric:tabular-nums}
.news .what{color:var(--text)}

/* ---------- research agenda ---------- */
.pillar{padding:16px 0;border-bottom:1px solid var(--border)}
.pillar:last-of-type{border-bottom:0}
.pillar-head{display:flex;align-items:baseline;gap:10px;margin:0 0 5px}
.pillar-num{font-size:12.5px;color:var(--accent);font-variant-numeric:tabular-nums}
.pillar h3{margin:0;font-size:16px;font-weight:600}
.pillar p{margin:0 0 5px;color:var(--muted);font-size:14.5px}
.related{font-size:13px;color:var(--faint)}
.foundations{margin:18px 0 0;font-size:14px;color:var(--muted)}
.statement{margin:20px 0 0;padding:12px 0 12px 18px;border-left:2px solid var(--accent);color:var(--text);font-size:15px;line-height:1.65}

/* ---------- availability ---------- */
.availability{display:inline-flex;align-items:center;gap:9px;margin:0 0 22px;padding:6px 13px;border:1px solid var(--border);border-radius:20px;font-size:13.5px;color:var(--muted)}
.availability::before{content:"";width:7px;height:7px;border-radius:50%;background:#1d9e75;flex:none}

/* ---------- publications ---------- */
.pub{padding:18px 0;border-bottom:1px solid var(--border)}
.pub:last-child{border-bottom:0}
.pub h3{margin:0 0 6px;font-size:17px;font-weight:600;line-height:1.4}
.authors{margin:0 0 7px;font-size:14.5px;color:var(--muted)}
.authors strong{color:var(--text)}
.meta{margin:0 0 7px;font-size:13.5px;color:var(--faint);display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.badge{
  font-size:11.5px;font-weight:600;letter-spacing:.02em;
  padding:3px 9px;border-radius:20px;background:var(--badge-bg);color:var(--muted);
}
.badge.review{color:#845a00;background:#fbf1d9}
.badge.award{color:#0e7a5f;background:#e0f3ec}
.badge.accepted{color:var(--accent);background:var(--accent-soft)}
.badge.now{color:#0e7a5f;background:#e0f3ec}
.badge.inprep{color:var(--faint);background:var(--badge-bg)}
:root[data-theme="dark"] .badge.review{color:#e7b94e;background:#2a2410}
:root[data-theme="dark"] .badge.award{color:#62d3ab;background:#0f241d}
:root[data-theme="dark"] .badge.now{color:#62d3ab;background:#0f241d}

/* publication pipeline */
.pub-legend{font-size:13px;color:var(--faint);margin:0 0 20px}
.subhead{font-size:12.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin:24px 0 10px}
.inprep-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.inprep-list li{font-size:15px;color:var(--text);position:relative;padding-left:16px}
.inprep-list li::before{content:"";position:absolute;left:0;top:10px;width:5px;height:5px;border-radius:50%;background:var(--accent)}
.pub-links{margin:0;display:flex;gap:16px;font-size:14px}
.pub-links a{display:inline-flex;align-items:center;gap:5px}

/* ---------- experience / education ---------- */
.entry{padding:14px 0;border-bottom:1px solid var(--border)}
.entry:last-child{border-bottom:0}
.entry-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap}
.entry-head h3{margin:0;font-size:16px;font-weight:600}
.entry-meta{color:var(--faint);font-size:13.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.entry p{margin:5px 0 0;color:var(--muted);font-size:14.5px}

/* ---------- footer ---------- */
.site-footer{
  max-width:var(--max);margin:20px auto 0;padding:26px clamp(20px,5vw,40px) 48px;
  border-top:1px solid var(--border);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;
  color:var(--faint);font-size:13.5px;
}
.site-footer p{margin:0}

/* ---------- responsive ---------- */
@media (max-width:620px){
  .site-header{flex-wrap:wrap;gap:8px 16px}
  .site-nav{gap:14px}
  .site-nav a{font-size:14px}
  .hero{padding-top:34px}
  .hero-photo{float:none;width:150px;margin:0 0 16px}
  .news li{flex-direction:column;gap:1px}
  .news .when{width:auto}
}
@media (max-width:430px){
  .site-nav{gap:10px}
  .site-nav a{font-size:13px}
}
