:root {
  color-scheme: light;
  --ink: #18313e;
  --muted: #4e626c;
  --line: #d7e1e5;
  --divider-width: 2px;
  --link: #075a78;
  --paper: #ffffff;
  --background: #edf2f3;
  --page-gutter: clamp(28px, calc(10vw - 34px), 64px);
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--background);
  color: var(--ink);
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: 17px;
  line-height: 1.62;
}

a { color: var(--link); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: #043e54; text-decoration-thickness: 2px; }
a:focus-visible { outline: 3px solid #c28431; outline-offset: 4px; border-radius: 2px; }

.skip-link {
  position: absolute;
  top: -100px;
  left: 12px;
  padding: 8px 14px;
  background: var(--paper);
  z-index: 5;
}
.skip-link:focus { top: 12px; }

.page {
  max-width: 980px;
  min-height: 100vh;
  margin: 28px auto;
  background: var(--paper);
  box-shadow: 0 12px 42px rgba(20, 46, 59, .08);
}

.hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(240px, 36vw, 350px);
  gap: 24px clamp(24px, 4.3vw, 42px);
  align-items: center;
  justify-content: space-between;
  padding: clamp(34px, 5.3vw, 52px) var(--page-gutter) clamp(34px, 4.3vw, 42px);
  border-top: 7px solid #19607a;
}
.hero-copy { min-width: 0; }
.eyebrow {
  margin: 0 0 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
}
h1, h2, h3, h4, p { margin-top: 0; }
h1 {
  margin-bottom: 5px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.5rem, 5.6vw, 3.55rem);
  font-weight: 600;
  letter-spacing: -.035em;
  line-height: 1.1;
}
.role { max-width: 560px; margin-bottom: 20px; color: #334f5b; font-size: 18px; }
.contact-row { display: grid; grid-template-columns: 3.5em minmax(0, 1fr); gap: 9px; margin-bottom: 12px; font-size: 16px; overflow-wrap: anywhere; }
.contact-label { color: var(--muted); font-weight: 600; }
.profile-links { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 7px 11px; font-size: 16px; }
.profile-item { display: inline-flex; align-items: center; gap: 11px; }
.profile-links a { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.profile-logo { width: 18px; height: 18px; flex: 0 0 auto; }
.profile-logo[data-profile="web-of-science"] { width: 21px; height: 21px; }
.profile-separator { color: var(--muted); }
.portrait-figure {
  width: 100%;
  max-width: 350px;
  margin: 0;
  justify-self: end;
}
.portrait {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--line);
  border-radius: 5px;
}
.portrait-credit {
  margin-top: 6px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
  text-align: right;
}

.page-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 25px;
  padding: 15px var(--page-gutter);
  border-top: var(--divider-width) solid var(--line);
  border-bottom: var(--divider-width) solid var(--line);
  background: #f8fbfb;
  font-size: 15px;
  font-weight: 600;
}

.section { padding: 40px var(--page-gutter) 42px; border-bottom: var(--divider-width) solid var(--line); scroll-margin-top: 15px; }
.section:last-child { border-bottom: 0; }
h2 {
  margin-bottom: 18px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.75rem;
  font-weight: 600;
  line-height: 1.25;
}
.lead { max-width: 780px; margin-bottom: 0; font-size: 19px; line-height: 1.66; }
.section-note { max-width: 780px; margin-bottom: 22px; color: var(--muted); font-size: 15px; }
.year-group + .year-group { margin-top: 29px; }
h3 { margin-bottom: 8px; color: #425b66; font-size: 15px; font-weight: 700; letter-spacing: .04em; }
.publication-list, .simple-list, .service-list { margin: 0; padding: 0; list-style: none; }
.publication { padding: 16px 0 18px; border-top: 1px solid var(--line); }
.publication h4 { margin-bottom: 5px; font-size: 17px; font-weight: 650; line-height: 1.42; }
.publication p { margin-bottom: 0; }
.authors { color: #263e4a; font-size: 15px; line-height: 1.52; }
.authors strong { color: var(--ink); font-weight: 700; }
.pub-meta { margin-top: 4px; color: var(--muted); font-size: 14px; }
.version-links { display: flex; flex-wrap: wrap; align-items: center; gap: 0 9px; margin: 3px 0 0; font-size: 14px; }
.version-links a { display: inline-flex; align-items: center; min-height: 32px; padding: 3px 0; white-space: nowrap; }
.section-tabs { display: flex; flex-wrap: wrap; gap: 8px 26px; padding: 15px var(--page-gutter); border-bottom: var(--divider-width) solid var(--line); background: #f8fbfb; font-size: 15px; font-weight: 600; }
.section-tabs a { display: inline-block; padding: 5px 0; }
.download-links { display: flex; flex-wrap: wrap; gap: 12px 24px; }
.download-links a { display: inline-block; padding: 9px 14px; border: 1px solid var(--link); border-radius: 4px; }
.download-links a:hover { background: #edf5f6; }
.cv-intro { padding-top: 26px; padding-bottom: 26px; }
.subheading { margin: 28px 0 10px; font-size: 18px; letter-spacing: 0; }
.thesis-item { padding-top: 12px; border-top: 1px solid var(--line); }
.thesis-item p { margin-bottom: 5px; }
.thesis-item .item-detail { text-align: left; white-space: normal; }
.inner-header { padding: 40px var(--page-gutter) 32px; border-top: 7px solid #19607a; }
.inner-header .eyebrow { margin-bottom: 16px; }
.page-nav [aria-current="page"] { color: var(--ink); text-decoration: none; }
.page-intro p:last-child { margin-bottom: 0; }
.paper-detail { position: relative; }
.paper-detail h2 { font-family: inherit; font-size: 1.4rem; line-height: 1.4; letter-spacing: -.01em; }
.paper-summary-card { display: block; margin-bottom: 16px; padding: 20px; border: 1px solid var(--line); border-radius: 5px; background: #f8fbfb; color: var(--ink); text-decoration: none; }
.paper-summary-card h2, .paper-summary-action { color: var(--link); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.paper-summary-card:is(:hover, :focus-visible) { color: var(--ink); border-color: var(--link); background: #edf5f6; }
.paper-summary-card:is(:hover, :focus-visible) h2, .paper-summary-card:is(:hover, :focus-visible) .paper-summary-action { text-decoration-thickness: 2px; }
.paper-summary-action { font-size: 14px; font-weight: 600; }
.paper-abstract-preview {
  max-width: 75ch;
  margin: 18px 0;
  font-size: 17px;
  line-height: 1.65;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  line-clamp: 4;
  overflow: hidden;
}
.paper-abstract-preview p { display: inline; margin: 0; }
.paper-abstract-preview p + p::before { content: " "; }
.paper-versions { padding: 0; margin: 0; list-style: none; font-size: 14px; color: var(--muted); }
.paper-versions li + li { margin-top: 10px; }
.abstract-reference-note { margin: 20px 0 0; font-size: 14px; }
.abstract-reference-note p { margin-bottom: 0; }
.paper-header { padding-top: 26px; padding-bottom: 24px; }
.paper-header .eyebrow { margin-bottom: 0; }
.paper-heading h1 { margin: 10px 0 20px; font-size: clamp(1.9rem, 4.3vw, 2.7rem); line-height: 1.17; letter-spacing: -.025em; }
.paper-heading .authors { margin-bottom: 18px; font-size: 16px; }
.paper-heading .pub-meta { margin-bottom: 0; }
.paper-heading .version-links { font-size: 16px; }
.abstract { line-height: 1.75; }
.abstract > p { max-width: 75ch; }
.abstract p:last-child { margin-bottom: 0; }
:is(.abstract, .paper-abstract-preview) math { font-family: "Cambria Math", "STIX Two Math", math; font-size: 1em; }
.abstract math[display="block"] { overflow-x: auto; padding: 10px 0; }
.citation-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; font-size: 15px; }
.citation-actions button { border: 1px solid var(--link); border-radius: 4px; padding: 8px 14px; background: var(--link); color: white; font: inherit; cursor: pointer; }
.citation-actions button:hover { background: #043e54; }
.citation-actions button:focus-visible, .citation pre:focus-visible { outline: 3px solid #c28431; outline-offset: 4px; }
.citation-actions button:disabled { opacity: .7; cursor: wait; }
#citation-status { color: var(--muted); }
.citation pre { margin: 20px 0 0; padding: 20px; border: 1px solid var(--line); border-radius: 4px; background: #f8fbfb; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; line-height: 1.65; tab-size: 2; }
.citation code { font-family: "Cascadia Code", Consolas, monospace; }
address { margin-bottom: 20px; font-style: normal; font-size: 18px; }
.location-map { display: block; width: 100%; height: 440px; margin-top: 28px; border: 1px solid var(--line); border-radius: 4px; }
.simple-item {
  display: flex;
  justify-content: space-between;
  gap: 12px 28px;
  padding: 12px 0;
  border-top: 1px solid var(--line);
}
.simple-item > span:first-child { min-width: 0; }
.item-detail { color: var(--muted); font-size: 15px; text-align: right; white-space: nowrap; }
.code { margin-left: 6px; color: var(--muted); font-size: 14px; white-space: nowrap; }
.service-row { display: grid; grid-template-columns: 175px minmax(0, 1fr); gap: 8px 24px; padding: 9px 0; border-top: 1px solid var(--line); }
.service-row dt { color: var(--muted); font-size: 15px; }
.service-row dd { margin: 0; }
.service-row dd a { white-space: nowrap; }
#education .simple-item { display: block; }
#education .item-detail { display: block; text-align: left; white-space: normal; }
.footer { display: flex; flex-wrap: wrap; align-items: baseline; gap: 12px 24px; padding: 23px var(--page-gutter) 28px; border-top: var(--divider-width) solid var(--line); color: var(--muted); font-size: 14px; }
.footer-navigation { min-width: 0; overflow-wrap: anywhere; }
.footer-licenses { margin-left: auto; flex: 0 0 auto; white-space: nowrap; }
.not-found { min-height: calc(100vh - 108px); padding: 80px var(--page-gutter); border-top: 7px solid #19607a; }
.not-found .role { margin-bottom: 20px; }

@media (max-width: 750px) {
  .page { margin: 0; box-shadow: none; }
  .inner-header { padding: 34px var(--page-gutter) 28px; }
  .page-nav { padding: 13px var(--page-gutter); }
  .section-tabs { padding: 13px var(--page-gutter); }
  .section { padding: 31px var(--page-gutter) 35px; }
  .footer { padding: 22px var(--page-gutter); }
  .not-found { padding: 54px var(--page-gutter); }
  .simple-item { display: block; }
  .item-detail { display: block; text-align: left; white-space: normal; }
}

@media (max-width: 620px) {
  .hero { display: block; }
  .portrait-figure { margin-top: 24px; }
  .profile-links { margin-top: 24px; }
  .service-row { display: block; }
  .service-row dt { margin-bottom: 3px; }
  .location-map { height: 340px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
