:root {
  --ink: #1c3029;
  --muted: #617068;
  --green: #216b54;
  --green-light: #eef5f1;
  --coral: #ae4c32;
  --line: #dce4de;
  --paper: #fdfefc;
  --serif: 'Newsreader', Georgia, serif;
  --sans: 'DM Sans', sans-serif;
  --mono: 'IBM Plex Mono', monospace;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 32px; }
body { margin: 0; color: var(--ink); background: var(--paper); font: 16px/1.65 var(--sans); letter-spacing: 0; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 4px; }
button { font: inherit; color: inherit; cursor: pointer; }
button:disabled { cursor: default; opacity: .35; }
button, a { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--coral); outline-offset: 5px; }
[hidden] { display: none !important; }
svg { width: 18px; height: 18px; flex-shrink: 0; stroke-width: 1.6; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 400; line-height: 1.1; }
h1 span, h2 span, .footer-name span, .monogram span { color: var(--coral); }
h2 { font-size: 42px; }
h3 { font-size: 29px; }
.wrap { width: min(1200px, calc(100% - 96px)); margin-inline: auto; }
.eyebrow { font: 11px/1.6 var(--mono); text-transform: uppercase; color: var(--muted); letter-spacing: 0; }
.skip-link { position: absolute; top: -80px; left: 20px; padding: 12px; background: white; z-index: 20; }
.skip-link:focus { top: 12px; }
.site-header { min-height: 104px; display: flex; justify-content: space-between; align-items: center; gap: 24px; border-bottom: 1px solid var(--line); }
.identity { display: flex; align-items: center; gap: 18px; text-decoration: none; }
.monogram { font: 36px/1 var(--serif); border-right: 1px solid var(--line); padding-right: 20px; }
.identity-name { font-size: 13px; font-weight: 600; }
.site-header nav { display: flex; align-items: center; gap: 30px; font-size: 13px; }
.site-header nav a { text-decoration: none; padding-block: 10px; }
.site-header nav a:hover, .site-header nav a[aria-current] { color: var(--green); text-decoration: underline; }
.contact-nav { display: flex; align-items: center; gap: 7px; border-bottom: 1px solid var(--green); }
.hero-links { display: flex; flex-wrap: wrap; gap: 24px; margin-top: 23px; font-size: 13px; }
.text-link { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; text-decoration: none; border-bottom: 1px solid var(--line); padding-bottom: 3px; }
.text-link:hover { color: var(--green); border-color: var(--green); }
.icon-button { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 32px; height: 32px; padding: 6px; border: 1px solid var(--line); background: transparent; border-radius: 3px; }
.icon-button:not(:disabled):hover { background: var(--green-light); border-color: var(--green); }
.section-heading { display: flex; justify-content: space-between; align-items: end; gap: 32px; margin-bottom: 36px; }
.section-heading .eyebrow { margin-bottom: 13px; }
.section-heading > .text-link { flex-shrink: 0; margin-bottom: 5px; }
.publications-section { padding-block: 56px 72px; border-top: 1px solid var(--line); }
.publication-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-block: -9px 28px; }
.publication-filters button { padding: 7px 12px; font-size: 12px; border: 1px solid var(--line); background: transparent; border-radius: 3px; }
.publication-filters button[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: white; }
.publication-grid { display: grid; grid-template-columns: 1fr 1.08fr; align-items: start; gap: 48px; }
.paper-entry { border-bottom: 1px solid var(--line); }
.paper-entry:has(.paper-select[hidden]) { display: none; }
.paper-select { width: 100%; padding: 21px 34px 21px 18px; text-align: left; border: 0; border-left: 2px solid transparent; background: transparent; position: relative; display: flex; flex-direction: column; gap: 11px; }
.paper-select:hover { background: #f4f7f4; }
.paper-select.is-selected { border-left-color: var(--green); background: var(--green-light); }
.paper-meta { display: flex; align-items: center; gap: 11px; font: 10px var(--mono); color: var(--muted); }
.venue-tag { color: var(--green); font-weight: 500; }
.venue-chi { color: var(--coral); }
.venue-ecir { color: #32659a; }
.venue-tois { color: #98621d; }
.pdf-label { margin-left: auto; color: var(--green); }
.paper-title { font-family: var(--serif); font-size: 23px; line-height: 1.23; }
.paper-venue { color: var(--muted); font-size: 10px; line-height: 1.5; }
.paper-select > svg { position: absolute; right: 10px; top: 21px; width: 14px; }
.paper-detail { position: sticky; top: 24px; min-width: 0; border-top: 1px solid var(--ink); }
.reader-heading { display: flex; align-items: center; justify-content: space-between; padding-block: 12px; }
.reader-cycle { display: flex; gap: 6px; }
.selected-paper { padding-block: 13px 22px; }
.selected-paper h3 { font-size: 27px; line-height: 1.17; margin-block: 9px 12px; }
.selected-paper p:not(.eyebrow) { color: var(--muted); font-size: 12px; }
.selected-paper .selected-authors { margin-bottom: 10px; }
.pdf-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-block: 10px; border-block: 1px solid var(--line); min-height: 54px; }
.pdf-pagination { display: flex; align-items: center; gap: 12px; }
#pdf-page { min-width: 56px; text-align: center; font: 11px var(--mono); }
.pdf-preview { height: 510px; overflow: auto; background: #eaf0ec; padding: 24px; display: flex; flex-direction: column; align-items: center; scrollbar-width: thin; }
.pdf-preview canvas { flex-shrink: 0; display: block; max-width: 100%; box-shadow: 0 3px 16px #1c302912; }
#pdf-message { margin: auto; max-width: 290px; text-align: center; color: var(--muted); font-size: 13px; }
.site-footer { display: grid; grid-template-columns: 1fr auto; gap: 28px; padding-block: 46px 28px; }
.footer-name { font: 27px var(--serif); text-decoration: none; }
.site-footer p { color: var(--muted); font-size: 11px; margin-top: 9px; }
.footer-links { display: flex; align-items: start; flex-wrap: wrap; gap: 22px; padding-top: 5px; }
.footer-links a { display: inline-flex; gap: 5px; align-items: center; text-decoration: none; font-size: 11px; }
.footer-links svg { width: 13px; }
.site-footer small { grid-column: 1 / -1; border-top: 1px solid var(--line); padding-top: 20px; color: var(--muted); font: 10px var(--mono); }
.page-heading { padding-block: 62px 44px; }
.page-heading h1 { font-size: 66px; margin-block: 16px 22px; }
.page-heading > p:last-child { max-width: 630px; color: var(--muted); font-size: 17px; }
.cv-layout { display: grid; grid-template-columns: 190px 1fr; gap: 56px; padding-bottom: 70px; }
.cv-nav { position: sticky; top: 32px; align-self: start; display: flex; flex-direction: column; gap: 13px; font: 12px var(--mono); }
.cv-nav a { text-decoration: none; }
.cv-nav a:hover { color: var(--green); }
.cv-section { border-top: 1px solid var(--line); padding-block: 27px 32px; }
.cv-section h2 { font-size: 34px; margin-bottom: 26px; }
.cv-entry { margin-bottom: 30px; }
.cv-entry:last-child { margin-bottom: 0; }
.cv-entry-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; }
.cv-entry h3 { font-size: 24px; }
.cv-entry-heading time { font: 11px var(--mono); color: var(--muted); flex-shrink: 0; }
.cv-entry p { font-size: 14px; color: var(--muted); margin-top: 9px; }
.cv-entry .role { color: var(--green); }
.cv-entry ul { padding-left: 19px; color: var(--muted); font-size: 14px; }
.cv-entry li { margin-bottom: 8px; }
.cv-papers { padding-left: 20px; }
.cv-papers li { padding-left: 7px; margin-bottom: 19px; font-size: 14px; }
.cv-papers small { display: block; color: var(--muted); font-size: 11px; }
.skills-list { display: grid; grid-template-columns: 135px 1fr; gap: 12px 24px; font-size: 13px; }
.skills-list dt { color: var(--green); }
.skills-list dd { margin: 0; color: var(--muted); }
.academic-home .site-header { display: none; }
.academic-shell { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 64px; padding-block: 60px 28px; }
.profile-sidebar { position: sticky; top: 40px; align-self: start; }
.profile-sidebar h1 { font: 600 27px/1.25 var(--sans); margin-bottom: 22px; }
.profile-photo { display: block; width: 200px; height: 200px; object-fit: cover; border-radius: 4px; margin-bottom: 19px; }
.profile-role { font-size: 14px; font-weight: 600; margin-bottom: 3px; }
.profile-affiliation { font-size: 12px; line-height: 1.8; color: var(--muted); }
.profile-affiliation a { text-decoration: none; }
.profile-navigation, .profile-links { display: flex; flex-direction: column; align-items: start; gap: 9px; }
.profile-navigation { margin-top: 26px; font-size: 14px; }
.profile-links { margin-top: 24px; font-size: 12px; color: var(--muted); }
.profile-navigation a, .profile-links a { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; }
.profile-navigation a:hover, .profile-links a:hover { color: var(--green); text-decoration: underline; }
.profile-sidebar svg { width: 13px; height: 13px; }
.academic-content { min-width: 0; }
.biography { max-width: 780px; font-size: 15px; line-height: 1.85; }
.biography p + p { margin-top: 19px; }
.biography a { color: var(--green); }
.biography strong { font-weight: 600; }
.biography .collaboration-note { font-size: 13px; color: var(--muted); }
.academic-section { border-top: 1px solid var(--line); margin-top: 34px; padding-top: 27px; }
.academic-content h2 { font: 600 23px/1.3 var(--sans); }
.academic-section > h2 { margin-bottom: 22px; }
.academic-section-heading { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 22px; }
.research-topics { margin: 0; }
.research-topics > div { margin-bottom: 18px; }
.research-topics > div:last-child { margin-bottom: 0; }
.research-topics dt { font-size: 14px; font-weight: 600; margin-bottom: 5px; }
.research-topics dd { margin: 0; font-size: 14px; color: var(--muted); line-height: 1.8; }
.academic-content .publications-section { width: 100%; margin-top: 34px; padding-block: 27px 0; }
.academic-content .section-heading { margin-bottom: 25px; gap: 20px; }
.academic-content .publication-grid { gap: 28px; grid-template-columns: 1fr 1.05fr; }
.academic-content .paper-title { font-size: 21px; }
.academic-content .selected-paper h3 { font-size: 24px; }
.career-entry { display: grid; grid-template-columns: 1fr auto; gap: 6px 20px; padding-block: 19px; border-bottom: 1px solid var(--line); }
.career-entry:first-of-type { padding-top: 0; }
.career-entry:last-child { border: 0; padding-bottom: 0; }
.career-entry h3 { font: 600 15px/1.5 var(--sans); }
.career-role { font-size: 12px; color: var(--green); margin-top: 3px; }
.career-date { font: 10px/1.8 var(--mono); color: var(--muted); padding-top: 3px; }
.career-description { grid-column: 1 / -1; font-size: 13px; color: var(--muted); }
.academic-home .site-footer { margin-top: 25px; border-top: 1px solid var(--line); }
@media (max-width: 1000px) {
  .wrap { width: calc(100% - 56px); }
  .publication-grid { gap: 26px; }
  .academic-shell { grid-template-columns: 170px minmax(0, 1fr); gap: 36px; padding-top: 40px; }
  .profile-photo { width: 170px; height: 170px; }
  .profile-sidebar h1 { font-size: 24px; }
  .academic-content .publication-grid { grid-template-columns: 1fr; }
  .academic-content .paper-list { max-height: 390px; overflow-y: auto; scrollbar-width: thin; }
  .academic-content .paper-detail { position: static; }
  .identity-name { display: none; }
  .monogram { border: 0; padding: 0; }
}
@media (max-width: 720px) {
  .wrap { width: calc(100% - 36px); }
  .site-header { min-height: 82px; gap: 14px; }
  .site-header nav { gap: 18px; font-size: 12px; }
  .site-header .contact-nav { display: none; }
  .monogram { font-size: 31px; }
  .hero-links { gap: 20px; margin-top: 18px; }
  h2 { font-size: 34px; }
  .section-heading { flex-direction: column; align-items: start; gap: 15px; margin-bottom: 28px; }
  .publications-section { padding-block: 38px 44px; }
  .publication-grid { grid-template-columns: 1fr; gap: 28px; }
  .paper-list { max-height: 380px; overflow-y: auto; scrollbar-width: thin; border-top: 1px solid var(--line); }
  .paper-select { padding-block: 16px; }
  .paper-title { font-size: 21px; }
  .paper-detail { position: static; }
  .pdf-preview { height: 430px; padding: 18px; }
  .academic-shell { grid-template-columns: 1fr; gap: 28px; padding-top: 28px; }
  .profile-sidebar { position: static; display: grid; grid-template-columns: 1fr 100px; gap: 0 20px; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
  .profile-sidebar h1 { font-size: 26px; margin-bottom: 9px; }
  .profile-photo { grid-column: 2; grid-row: 1 / 4; width: 100px; height: 100px; margin: 0; }
  .profile-role, .profile-affiliation { grid-column: 1; }
  .profile-navigation, .profile-links { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; gap: 10px 20px; margin-top: 18px; }
  .profile-links { margin-top: 13px; }
  .biography { font-size: 14px; }
  .academic-section { margin-top: 27px; padding-top: 23px; }
  .academic-content .publications-section { margin-top: 27px; padding-top: 23px; }
  .academic-content .section-heading { gap: 12px; }
  .academic-section-heading { align-items: start; }
  .career-entry { grid-template-columns: 1fr; gap: 7px; }
  .career-date, .career-description { grid-column: 1; }
  .site-footer { grid-template-columns: 1fr; padding-top: 32px; gap: 22px; }
  .footer-links { gap: 23px; }
  .page-heading { padding-block: 38px 32px; }
  .page-heading h1 { font-size: 52px; }
  .page-heading > p:last-child { font-size: 15px; }
  .cv-layout { grid-template-columns: 1fr; gap: 24px; }
  .cv-nav { position: static; flex-direction: row; flex-wrap: wrap; gap: 12px 20px; font-size: 11px; }
  .cv-entry-heading { flex-direction: column; gap: 8px; }
  .skills-list { grid-template-columns: 1fr; gap: 8px; }
  .skills-list dd { margin-bottom: 10px; }
}
@media print {
  .site-header, .site-footer, .cv-nav, .contact-band, .skip-link { display: none; }
  .wrap { width: 100%; }
  .cv-layout { display: block; }
  .page-heading { padding-block: 10px 20px; }
  .cv-section { break-inside: avoid; padding-block: 18px; }
  body { font-size: 12px; background: white; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }