html { overflow-y:scroll; }
:root {
  color-scheme:light;
  --bg:#fff;
  --text:#202428;
  --muted:#626970;
  --line:#e3e6e8;
  --soft:#f6f7f8;
  --accent:#315fc1;
  --inverse:#fff;
  --width:900px
}
:root[data-theme=dark] {
  color-scheme:dark;
  --bg:#17191c;
  --text:#edf0f2;
  --muted:#a5adb7;
  --line:#353a41;
  --soft:#202429;
  --accent:#9ebcff;
  --inverse:#17191c
}
* {
  box-sizing:border-box
}
body {
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased
}
a {
  color:var(--accent);
  text-underline-offset:4px
}
a:hover {
  text-decoration:underline
}
button {
  font:inherit;
  cursor:pointer
}
a,button {
  -webkit-tap-highlight-color:transparent
}
a:focus-visible,button:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:5px
}
main:focus {
  outline:none
}
[hidden] {
  display:none!important
}
nav,main,footer {
  width:min(calc(100% - 64px),var(--width));
  margin-inline:auto
}
.nav-shell {
  border-bottom:1px solid var(--line);
  background:var(--bg)
}
nav {
  min-height:80px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px
}
.brand {
  font-size:21px;
  font-weight:650;
  letter-spacing:-.7px;
  color:var(--text);
  text-decoration:none;
  white-space:nowrap
}
.brand-dot {
  color:var(--accent)
}
.nav-controls {
  display:flex;
  align-items:center;
  gap:24px
}
.nav-links {
  display:flex;
  align-items:center;
  gap:25px;
  list-style:none;
  margin:0;
  padding:0
}
.nav-links a {
  font-size:14px;
  color:var(--muted);
  text-decoration:none;
  padding-block:12px
}
.nav-links a:hover,.nav-links a[aria-current=page] {
  color:var(--text)
}
.nav-links a[aria-current=page] {
  text-decoration:underline;
  text-decoration-color:var(--accent);
  text-decoration-thickness:2px;
  text-underline-offset:10px
}
.theme-button {
  display:grid;
  place-items:center;
  width:44px;
  height:44px;
  border:1px solid var(--line);
  border-radius:50%;
  color:var(--text);
  background:var(--bg)
}
.theme-button:hover {
  background:var(--soft)
}
.sun {
  display:none
}
[data-theme=dark] .sun {
  display:block
}
[data-theme=dark] .moon {
  display:none
}
.menu-button {
  display:none
}
.skip-link {
  position:fixed;
  top:-100px;
  left:16px;
  background:var(--text);
  color:var(--bg);
  padding:10px 18px;
  z-index:100
}
.skip-link:focus {
  top:12px
}
main {
  min-height:calc(100vh - 158px);
  padding-block:64px 72px
}
.group-label {
  color:var(--muted);
  font-size:12px;
  font-weight:550;
  letter-spacing:.14em;
  text-transform:uppercase
}
h1,h2,p,figure {
  margin-top:0
}
h1 {
  font-family:Georgia,"Times New Roman",serif;
  font-weight:400;
  font-size:clamp(40px,5vw,48px);
  letter-spacing:-.035em;
  line-height:1.13;
  margin-bottom:28px
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:24px;
  min-height:46px;
  padding:10px 18px;
  border:1px solid var(--line);
  border-radius:5px;
  color:var(--text);
  text-decoration:none;
  font-size:14px;
  font-weight:550
}
.button-primary {
  background:var(--text);
  color:var(--inverse);
  border-color:var(--text)
}
.button:hover {
  opacity:.85;
  text-decoration:none
}
.text-link {
  color:var(--text);
  font-size:14px;
  text-decoration:none
}
.text-link span {
  margin-left:10px
}
footer {
  display:flex;
  justify-content:space-between;
  gap:16px;
  padding-block:28px;
  border-top:1px solid var(--line);
  font-size:12px;
  color:var(--muted)
}
footer a {
  color:var(--muted)
}
.content-section {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  max-width:900px;
  margin-inline:auto;
  gap:32px;
  padding-block:0
}
.section-kicker h1 {
  font-size:44px;
  margin-bottom:0
}
.section-content {
  min-width:0
}
.section-content p {
  margin-bottom:24px
}
.section-content {
  color:var(--text)
}
.section-content strong {
  color:var(--text);
  font-weight:600
}
.research-tags {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:28px
}
.research-tags span {
  padding:5px 10px;
  border:1px solid var(--line);
  border-radius:4px;
  font-size:12px;
  color:var(--muted)
}
.group-label {
  padding-bottom:14px;
  border-bottom:1px solid var(--line);
  margin-bottom:0
}
.publication-group+.publication-group {
  margin-top:40px
}
.item-list,.experience-list {
  list-style:none;
  margin:0;
  padding:0
}
.item-card {
  padding-block:24px;
  border-bottom:1px solid var(--line)
}
.item-card em {
  font-size:14px
}
.experience-list li {
  padding:0 0 26px 22px;
  border-left:1px solid var(--line);
  position:relative
}
.experience-list li::before {
  content:"";
  position:absolute;
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--accent);
  left:-4px;
  top:10px
}

.teaching { border-top:1px solid var(--line); }
.teaching-heading { padding-block:28px 32px; }
.teaching-term { font-size:14px; color:var(--muted); margin-bottom:16px; }
.teaching-term span { margin-left:8px; }
.teaching h2 { font-size:24px; font-weight:550; letter-spacing:-.025em; line-height:1.5; margin:0; }
.course-code { display:block; font-size:14px; letter-spacing:.04em; color:var(--muted); font-weight:500; margin-bottom:4px; }
.resource-list { list-style:none; padding:0; margin:0; }
.resource { display:flex; align-items:center; justify-content:space-between; gap:24px; padding-block:24px; border-block:1px solid var(--line); }
.resource-info { min-width:0; }
.resource h3 { font-size:16px; font-weight:550; margin:0 0 6px; }
.resource p { color:var(--muted); font-size:14px; margin:0; }
.resource-actions { display:flex; gap:24px; flex-shrink:0; }
.resource-actions a { font-size:14px; text-decoration:none; padding-block:10px; }
.resource-actions a:hover { text-decoration:underline; }
.resource-actions a:last-child { color:var(--muted); }
.resource-actions span { margin-left:6px; }
@media(max-width:700px) {
  .resource { align-items:flex-start; flex-direction:column; gap:12px; }

  .teaching h2 { font-size:22px; }
}
@media(max-width:1000px) {
  .nav-links {
    gap:16px
  }
  .nav-controls {
    gap:16px
  }
  .content-section {
    gap:36px;
    grid-template-columns:minmax(0,1fr)
  }
}
@media(max-width:900px) {
  nav {
    min-height:80px;
    flex-wrap:wrap;
    padding-block:18px;
    position:relative
  }
  .nav-controls {
    flex-wrap:wrap;
    justify-content:flex-end
  }
  .nav-links {
    flex-wrap:wrap
  }
  .js .menu-button {
    display:block;
    border:1px solid var(--line);
    background:var(--bg);
    color:var(--text);
    border-radius:5px;
    padding:5px 12px;
    min-height:44px;
    font-size:14px
  }
  .js .nav-links {
    display:none;
    position:absolute;
    top:100%;
    left:0;
    right:0;
    background:var(--bg);
    z-index:10;
    padding:18px;
    border:1px solid var(--line);
    box-shadow:0 8px 20px #00000008
  }
  .js .nav-links.open {
    display:grid;
    gap:8px
  }
  .nav-links a {
    display:block;
    padding:8px
  }
  .content-section {
    grid-template-columns:1fr;
    gap:20px
  }

  .section-kicker h1 {
    font-size:44px
  }
}
@media(max-width:600px) {
  nav,main,footer {
    width:calc(100% - 40px)
  }
  main {
    padding-block:42px 56px
  }
  footer {
    flex-wrap:wrap;
    font-size:12px
  }

  .section-kicker h1 {
    font-size:40px
  }
}

/* Social links follow the copyright, leaving the primary navigation unchanged. */
footer { align-items:center; }
.footer-identity { display:flex; align-items:center; flex-wrap:wrap; gap:8px 16px; }
.profile-links { display:flex; gap:0; margin:0; }
.profile-links a { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; color:var(--muted); border-radius:4px; }
.profile-links a:hover { color:var(--accent); background:var(--soft); }
.profile-icon { display:block; width:16px; height:16px; background:currentColor; -webkit-mask:var(--icon) center / contain no-repeat; mask:var(--icon) center / contain no-repeat; }
.icon-google-scholar { --icon:url('./icons/google-scholar.svg'); }
.icon-orcid { --icon:url('./icons/orcid.svg'); }
.icon-linkedin { --icon:url('./icons/linkedin.svg'); }
.academic-home { padding-top:52px; }
.about-header { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:36px; align-items:center; padding-bottom:32px; margin-bottom:30px; border-bottom:1px solid var(--line); }
.about-identity { min-width:0; }
.identity-row { display:grid; grid-template-columns:112px minmax(0,1fr); gap:20px; align-items:stretch; }
.identity-copy { min-width:0; }
.portrait-frame { position:relative; overflow:hidden; border-radius:5px; }
.about-identity h1 { font-size:48px; margin:0 0 10px; line-height:1.125; }
.academic-role { margin:0 0 2px; font-size:17px; }
.academic-affiliation { color:var(--muted); margin:0; font-size:15px; }
.about-contact { margin-top:18px; }
.academic-email { font-size:14px; text-decoration:none; overflow-wrap:anywhere; }
.about-contact address { margin-top:8px; font-size:14px; font-style:normal; line-height:1.7; color:var(--muted); }
.profile-photo { display:block; position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.landscape { margin:0; min-width:0; }
.landscape img { display:block; width:100%; aspect-ratio:188 / 125; height:auto; object-fit:cover; border-radius:4px; }
.landscape figcaption { margin-top:10px; font-size:12px; color:var(--muted); line-height:1.7; }
.landscape figcaption a { color:inherit; }
@media(max-width:800px) {
  .about-header { grid-template-columns:minmax(0,1fr); gap:26px; align-items:start; }
  .landscape { width:100%; max-width:460px; }
}
.about-body { width:100%; max-width:none; margin-inline:0; }
.academic-bio { font-size:16px; line-height:1.8; overflow-wrap:break-word; }
.academic-bio p { margin:0 0 20px; }
.academic-bio a { text-decoration:none; }
.academic-bio a:hover { text-decoration:underline; }
@media(max-width:600px) {
  .academic-home { padding-top:36px; }
  .about-header { grid-template-columns:minmax(0,1fr); gap:24px; padding-bottom:26px; margin-bottom:26px; }
  .about-identity h1 { font-size:36px; }
  .academic-role { font-size:16px; }
  .identity-row { grid-template-columns:90px minmax(0,1fr); gap:16px; }
  .about-contact address { font-size:13px; }
}
@media(max-width:380px) {
  .identity-row { grid-template-columns:80px minmax(0,1fr); gap:12px; }
  .about-identity h1 { font-size:32px; }
}
@media print {
  :root { --bg:#fff; --text:#202428; --muted:#626970; --accent:#315fc1; --line:#e3e6e8; }
  .nav-shell, .skip-link { display:none; }
  main { min-height:0; padding-block:24px; }
  .academic-home { padding-top:24px; }
  .resource, .item-card { break-inside:avoid; }
}

@media(min-width:721px) {
  .academic-bio { text-align:justify; hyphens:auto; }
}

.image-credit { flex-basis:100%; width:100%; margin:0; padding:0; text-align:left; font-size:12px; line-height:1.7; color:var(--muted); }
.image-credit a { color:inherit; }

/* Keep the original copyright/social/contact row separate from attribution. */
.footer-with-credit { display:block; }
.footer-main { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.footer-with-credit .image-credit { margin-top:10px; max-width:100%; overflow-wrap:anywhere; }
@media(max-width:480px) {
  .footer-main { flex-wrap:wrap; gap:8px 16px; }
}

.resource.talk-entry { display:block; padding-block:28px; }
.talk-entry .talk-date { display:flex; flex-wrap:wrap; gap:4px 20px; margin:0 0 12px; font-size:13px; line-height:1.6; font-variant-numeric:tabular-nums; }
.talk-date > span { white-space:nowrap; }
.talk-entry .talk-title { max-width:680px; margin:0; font-size:clamp(20px,2.5vw,24px); font-weight:550; line-height:1.4; letter-spacing:-.02em; text-wrap:balance; }
.talk-entry .resource-actions { flex-wrap:wrap; gap:4px 24px; margin-top:14px; }
.talk-entry .resource-actions a { display:inline-flex; align-items:center; min-height:44px; }
