/* Root academic portal only. No external fonts or UI dependencies. */
:root {
  color-scheme: light;
  --ink: #172629; --ink-2: #384d52; --ink-3: #52666b;
  --paper: #fff; --surface: #f3f7f7; --border: #d5e0e1; --border-strong: #9cafb4;
  --accent: #14665f; --accent-soft: #edf6f3; --blue: #285e94; --terra: #9b4533;
  --teal: #14665f; --indigo: #285e94;
  --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --mono: ui-monospace, "Cascadia Code", Consolas, monospace;
  --measure: 70ch; --wrap: 1160px;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark; --ink: #eef4f2; --ink-2: #c2d0cd; --ink-3: #a8bcb7;
    --paper: #141b1c; --surface: #1c2728; --border: #35474a; --border-strong: #6b868a;
    --accent: #8bd7c4; --accent-soft: #233a33; --blue: #9bbfec; --terra: #e8a390;
    --teal: #8bd7c4; --indigo: #9bbfec;
  }
}
:root[data-theme="dark"] {
  color-scheme: dark; --ink: #eef4f2; --ink-2: #c2d0cd; --ink-3: #a8bcb7;
  --paper: #141b1c; --surface: #1c2728; --border: #35474a; --border-strong: #6b868a;
  --accent: #8bd7c4; --accent-soft: #233a33; --blue: #9bbfec; --terra: #e8a390;
  --teal: #8bd7c4; --indigo: #9bbfec;
}
* { box-sizing: border-box; letter-spacing: 0; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 2rem; }
body { margin: 0; min-height: 100dvh; display: flex; flex-direction: column; background: var(--paper); color: var(--ink); font: 16px/1.65 var(--sans); }
main { flex: 1; }
a { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: .23em; overflow-wrap: anywhere; }
a:hover { text-decoration-thickness: 2px; }
a:focus-visible, button:focus-visible, select:focus-visible, summary:focus-visible { outline: 3px solid var(--blue); outline-offset: 5px; }
[hidden] { display: none !important; }
.wrap { width: min(100% - 3rem, var(--wrap)); margin-inline: auto; }
.skip { position: fixed; z-index: 10; top: .6rem; left: 1rem; padding: .6rem 1rem; background: var(--paper); transform: translateY(-200%); }
.skip:focus { transform: translateY(0); }
.skip:not(:focus) { clip-path: inset(50%); width: 1px; height: 1px; overflow: hidden; white-space: nowrap; }
.site-header { border-bottom: 1px solid var(--border); }
.navigation { min-height: 82px; display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding-block: 1rem; }
.nav-name { color: var(--ink); font-size: 1.05rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
.nav-links { display: flex; flex-wrap: wrap; gap: .7rem 1.5rem; }
.nav-links a { color: var(--ink-2); font-size: .88rem; text-decoration: none; padding-block: .45rem; }
.nav-links a:hover, .nav-links a[aria-current] { color: var(--accent); text-decoration: underline; }
h1,h2,h3,h4 { color: var(--ink); line-height: 1.2; text-wrap: balance; margin: 0 0 1rem; overflow-wrap: anywhere; }
h1,h2 { font-family: var(--serif); font-weight: 500; }
h1 { font-size: 3.5rem; }
h2 { font-size: 2.25rem; }
h3 { font-size: 1.2rem; font-weight: 600; }
h4 { font-size: 1.1rem; font-weight: 600; }
p { margin: 0 0 1rem; }
p, li { overflow-wrap: anywhere; }
li { margin-block: .5rem; }
ul { padding-left: 1.3rem; }
.lede { font-size: 1.17rem; color: var(--ink-2); max-width: var(--measure); }
.small, figcaption { font-size: .85rem; color: var(--ink-3); }
.eyebrow { font: 500 .77rem/1.5 var(--mono); color: var(--accent); margin-bottom: 1rem; }
.links { display: flex; gap: .5rem 1.3rem; flex-wrap: wrap; align-items: center; }
.btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: .8rem; padding: .7rem 1rem; border: 1px solid var(--border-strong); border-radius: 4px; text-decoration: none; font-size: .9rem; font-weight: 600; }
.btn:hover { border-color: var(--accent); background: var(--accent-soft); text-decoration: none; }
.btn.primary { background: var(--accent); border-color: var(--accent); color: var(--paper); }
.btn.primary:hover { filter: brightness(.92); }
.introduction { padding-block: 3.5rem 3rem; }
.introduction h1 { font-size: 4rem; margin-bottom: 1.1rem; }
.degree { font: 400 1.5rem var(--sans); color: var(--ink-3); }
.research-line { font-size: 1.75rem; font-weight: 500; line-height: 1.35; }
.intro-copy { max-width: 63ch; color: var(--ink-2); font-size: 1.07rem; margin-block: 1.3rem; }
.affiliation { color: var(--ink-3); font-size: .85rem; line-height: 1.55; }
.social { font-size: .85rem; margin-top: 1.4rem; }
.band { padding-block: 3.5rem; border-top: 1px solid var(--border); }
.feature { background: var(--surface); }
.section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem 2rem; flex-wrap: wrap; margin-bottom: 1.8rem; }
.section-head > div { flex: 1 1 580px; }
.section-head .lede { margin-bottom: 0; }
.section-head > a { font-size: .9rem; }
.pathways { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 1.5rem; margin-block: 2.3rem; }
.pathways section { border-top: 2px solid var(--accent); padding-top: 1rem; }
.pathways section:nth-child(2), .pathways section:nth-child(5) { border-color: var(--blue); }
.pathways section:nth-child(3) { border-color: var(--terra); }
.pathways h3 a { color: var(--ink); text-decoration: none; display: flex; justify-content: space-between; }
.pathways p { font-size: .88rem; color: var(--ink-2); }
.pathways .links { font-size: .82rem; gap: .35rem .8rem; }
.product-showcase { display: grid; grid-template-columns: minmax(220px,.7fr) minmax(360px,1.3fr); gap: 2rem; align-items: center; margin-top: 2.2rem; padding: 1.25rem; border: 1px solid var(--border); border-radius: 10px; background: var(--paper); }
.product-showcase-copy { max-width: 34ch; }
.product-showcase-copy .eyebrow { margin-bottom: .55rem; }
.product-showcase-copy h3 { font: 500 1.55rem/1.25 var(--serif); margin-bottom: .7rem; }
.product-showcase-copy p:not(.eyebrow) { color: var(--ink-2); font-size: .93rem; }
.product-showcase-copy > a { font-size: .88rem; font-weight: 600; }
.product-figure { margin: 0; width: 100%; max-width: 640px; justify-self: end; }
.product-figure img { display: block; width: 100%; height: auto; border: 1px solid var(--border); border-radius: 7px; background: #fff; }
.product-figure figcaption { margin: .55rem 0 0; }
.product-note { margin: .9rem 0 0; }
.project-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1.15rem; }
.project-grid article { min-height: 100%; border: 1px solid var(--border); border-top: 3px solid var(--accent); border-radius: 9px; padding: 1.25rem; background: var(--paper); }
.project-grid article:nth-child(2) { border-top-color: var(--blue); }
.project-grid article:nth-child(3) { border-top-color: var(--terra); }
.project-grid article:nth-child(4) { border-top-color: var(--border-strong); }
.project-grid h3 { font: 500 1.65rem/1.2 var(--serif); }
.project-grid h3 a { color: var(--ink); text-decoration: none; }
.project-grid h3 a:hover { color: var(--accent); }
.project-grid p:not(.eyebrow) { font-size: .91rem; color: var(--ink-2); }
.project-grid > article > a { font-size: .86rem; }
.communication-highlight { display: grid; grid-template-columns: minmax(230px,.72fr) minmax(0,1.28fr); gap: 2rem; align-items: center; padding: 1.35rem; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
.communication-highlight-preview { display: block; overflow: hidden; border: 1px solid var(--border); border-radius: 7px; background: #fff; }
.communication-highlight-preview img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: contain; background: #fff; }
.communication-highlight-copy .eyebrow { margin-bottom: .65rem; }
.communication-highlight-copy h3 { font: 500 1.45rem/1.35 var(--serif); margin-bottom: .8rem; max-width: 38ch; }
.communication-highlight-copy h3 a { color: var(--ink); text-decoration: none; }
.communication-highlight-copy h3 a:hover { text-decoration: underline; }
.communication-highlight-copy > p:not(.eyebrow) { color: var(--ink-2); max-width: 62ch; }
.communication-highlight-copy .links { margin-top: 1.1rem; font-size: .88rem; }
.publication { display: grid; grid-template-columns: 64px minmax(0,1fr); gap: 1.5rem; padding: 1.8rem 0; border-bottom: 1px solid var(--border); }
.publication:last-child { border-bottom: 0; padding-bottom: 0; }
.publication-year { color: var(--ink-3); font: .85rem var(--mono); padding-top: .2rem; }
.publication h3 { max-width: 78ch; line-height: 1.45; font-size: 1.07rem; margin-bottom: .65rem; }
.publication h3 a { color: var(--ink); text-decoration: none; }
.publication h3 a:hover { text-decoration: underline; }
.authors, .journal { font-size: .85rem; color: var(--ink-2); margin-bottom: .5rem; }
.authors strong { color: var(--ink); }
.citation-links { font-size: .81rem; margin: .8rem 0 0; }
.research-detail { margin-top: 1.1rem; border-top: 1px solid var(--border); scroll-margin-top: 2rem; }
.research-detail > summary { cursor: pointer; padding-block: .8rem; color: var(--accent); font-size: .9rem; font-weight: 600; min-height: 44px; }
.research-detail > summary:hover { text-decoration: underline; }
.research-detail[open] > summary { color: var(--ink); }
.detail-body { max-width: 76ch; padding-block: .3rem 1rem; color: var(--ink-2); }
.detail-body h4 { margin-top: 1.3rem; font-size: 1rem; line-height: 1.5; }
.detail-body > :first-child { margin-top: 0; }
.detail-body p { font-size: .95rem; line-height: 1.75; }
.detail-body .detail-source, .detail-body .detail-links { font-size: .82rem; color: var(--ink-3); }
.detail-body .links { font-size: .88rem; }
.research-detail:target { border-top-color: var(--accent); }
.talks .detail-body strong { font: inherit; font-weight: 600; color: var(--ink); }
.talks { list-style: none; margin: 1.5rem 0; padding: 0; }
.talks li { margin-block: 1.4rem; }
.talks strong { font: .76rem var(--mono); color: var(--accent); }
.talks h3 { margin: .6rem 0 0; font-size: 1.02rem; line-height: 1.55; }
.talks.compact { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 2rem; }
.about-short p { max-width: 75ch; }
.page-heading { padding-block: 3.5rem 2.4rem; }
.page-heading h1 { margin-bottom: 1rem; }
.section-nav { display: flex; flex-wrap: wrap; gap: .6rem 2rem; padding-block: 0 2rem; font-size: .9rem; }
.project-detail { display: grid; grid-template-columns: minmax(200px,1fr) minmax(0,2.5fr); gap: 3rem; }
.project-status { font-size: .82rem; color: var(--ink-3); }
.project-detail .lede { font-size: 1.35rem; }
.note, blockquote { border-left: 3px solid var(--border-strong); margin: 1.5rem 0; padding-left: 1.2rem; color: var(--ink-2); }
.note { font-size: .9rem; }
.meeting { margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid var(--border); max-width: 85ch; }
.meeting > h4 { line-height: 1.5; }
.communication-heading { display: flex; align-items: start; justify-content: space-between; gap: 1rem 2rem; }
.language-link { white-space: nowrap; margin-top: .8rem; }
.communication-browser { padding-bottom: 4rem; }
.communication-filters { display: flex; align-items: end; justify-content: space-between; gap: 1rem; padding: 1rem 0 2rem; border-top: 1px solid var(--border); }
.communication-filters label { display: grid; gap: .35rem; color: var(--ink-2); font-size: .82rem; }
.communication-filters select { min-height: 42px; padding: .45rem .7rem; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--paper); color: var(--ink); font: inherit; }
.segmented { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--border-strong); border-radius: 4px; overflow: hidden; }
.segmented button { min-height: 42px; border: 0; border-right: 1px solid var(--border-strong); padding: .55rem .9rem; background: var(--paper); color: var(--ink); font: inherit; cursor: pointer; }
.segmented button:last-child { border-right: 0; }
.segmented button[aria-pressed="true"] { background: var(--accent); color: var(--paper); }
.communication-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 2rem; }
.communication-card { display: grid; grid-template-rows: auto 1fr; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; background: var(--paper); }
.communication-preview { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--surface); }
.communication-preview img { display: block; width: 100%; height: 100%; object-fit: contain; background: #fff; }
.communication-card-body { display: flex; flex-direction: column; padding: 1.25rem; }
.communication-card h2 { font: 600 1.2rem/1.35 var(--sans); margin: .8rem 0; }
.communication-card h2 a { color: var(--ink); text-decoration: none; }
.communication-card h2 a:hover { text-decoration: underline; }
.communication-card-body > p { color: var(--ink-2); font-size: .9rem; }
.communication-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .7rem; color: var(--ink-3); font: .76rem var(--mono); margin: 0; }
.status { border: 1px solid var(--border-strong); border-radius: 999px; padding: .12rem .5rem; }
.status.upcoming { border-color: var(--terra); color: var(--terra); }
.topic-list { display: flex; flex-wrap: wrap; gap: .4rem; margin: .7rem 0 1rem; }
.topic-list span { border: 1px solid var(--border); border-radius: 999px; padding: .18rem .55rem; color: var(--ink-2); font-size: .74rem; }
.communication-actions { margin-top: auto; padding-top: .5rem; }
.communication-actions a:not(.btn) { font-size: .83rem; }
.communication-empty { padding: 2rem 0; color: var(--ink-2); }
.communication-detail { padding-block: 2rem 4rem; }
.communication-detail-nav { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 2.5rem; font-size: .9rem; }
.communication-detail header { max-width: 88ch; }
.communication-detail h1 { margin-top: 1rem; }
.communication-hero { margin: 2.5rem 0; }
.communication-hero img { display: block; width: 100%; height: auto; border: 1px solid var(--border); background: #fff; }
.communication-detail-grid { display: grid; grid-template-columns: minmax(0,2fr) minmax(250px,1fr); gap: 3rem; padding-block: 1rem 3rem; }
.communication-detail-grid h2, .communication-citation h2 { font: 600 1.15rem/1.3 var(--sans); margin-top: 1.6rem; }
.communication-detail-grid h2:first-child { margin-top: 0; }
.communication-facts { display: grid; grid-template-columns: 115px minmax(0,1fr); gap: .65rem 1rem; margin: 0; }
.communication-facts dt { color: var(--ink-3); font-size: .82rem; }
.communication-facts dd { margin: 0; color: var(--ink-2); }
.communication-downloads { display: flex; flex-wrap: wrap; gap: .6rem; }
.communication-citation { border-top: 1px solid var(--border); padding-top: 1.5rem; }
.communication-citation details summary { cursor: pointer; color: var(--accent); min-height: 44px; padding-block: .7rem; }
.communication-citation code { overflow-wrap: anywhere; }
.prose > p, .prose > ul, .prose > dl { max-width: 75ch; }
.prose h3 { margin-top: 2rem; }
.identifiers { display: grid; grid-template-columns: 110px minmax(0,1fr); gap: 1rem; }
.identifiers dt { color: var(--ink-3); font-size: .9rem; }
.identifiers dd { margin: 0; min-width: 0; }
.contact-address { font-size: 1.35rem; }
.closing-link { margin-block: 0 3rem; }
.site { border-top: 1px solid var(--border); padding-block: 2.3rem; background: var(--surface); }
.footer-top { display: flex; justify-content: space-between; gap: 2rem; align-items: start; }
.footer-top p { font-size: .8rem; color: var(--ink-3); margin-top: .5rem; }
.footer-links { display: flex; flex-wrap: wrap; gap: .7rem 1.1rem; font-size: .82rem; max-width: 430px; }
.footer-bottom { display: flex; gap: .5rem 2rem; flex-wrap: wrap; font-size: .75rem; color: var(--ink-3); padding-top: 1.4rem; align-items: center; }
.footer-bottom p { margin: 0; }
.theme-control { display: flex; align-items: center; gap: .5rem; }
.theme-control select { font: inherit; padding: .3rem; border: 1px solid var(--border-strong); border-radius: 3px; background: var(--paper); color: var(--ink); }
.measure { max-width: var(--measure); }
.cite { font-size: .86rem; padding: 1rem; background: var(--surface); white-space: pre-wrap; overflow-wrap: anywhere; }
.tablewrap { overflow-x: auto; }
table { border-collapse: collapse; text-align: left; width: 100%; }
th,td { border-bottom: 1px solid var(--border); padding: .8rem; }
details.legacy-guide { margin-block: 1rem 3rem; }
details.legacy-guide > summary { cursor: pointer; font-weight: 600; padding: 1rem 0; color: var(--accent); }
@media (max-width: 1000px) {
  .navigation { align-items: start; gap: 1rem; }
  .nav-links { gap: .5rem 1rem; justify-content: end; max-width: 490px; }
  .pathways { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .project-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .product-showcase { grid-template-columns: minmax(190px,.75fr) minmax(300px,1.25fr); }
}
@media (max-width: 700px) {
  .wrap { width: calc(100% - 2rem); }
  .navigation { flex-direction: column; gap: .65rem; padding-block: 1rem .8rem; }
  .nav-links { justify-content: start; gap: .4rem 1.25rem; }
  .nav-links a { font-size: .82rem; }
  h1 { font-size: 2.65rem; }
  h2 { font-size: 1.9rem; }
  .introduction { padding-block: 2.2rem; }
  .introduction h1 { font-size: 3rem; }
  .degree { font-size: 1.2rem; }
  .research-line { font-size: 1.35rem; }
  .intro-copy { font-size: 1rem; }
  .affiliation { font-size: .8rem; }
  .band { padding-block: 2.5rem; }
  .page-heading { padding-block: 2.5rem 1.8rem; }
  .pathways { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; }
  .project-grid, .project-detail, .talks.compact, .communication-grid, .communication-detail-grid, .product-showcase, .communication-highlight { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
  .product-showcase { padding: 1rem; }
  .communication-highlight { padding: 1rem; }
  .communication-highlight-preview { max-width: 520px; }
  .communication-heading, .communication-filters { align-items: stretch; flex-direction: column; }
  .language-link { margin-top: 0; }
  .segmented { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
  .segmented button { padding-inline: .4rem; }
  .communication-facts { grid-template-columns: 100px minmax(0,1fr); }
  .talks.compact li { margin-block: .25rem; }
  .project-detail > div:first-child > :last-child { margin-bottom: 0; }
  .publication { grid-template-columns: minmax(0,1fr); gap: .5rem; }
  .publication-year { margin: 0; }
  .footer-top { flex-direction: column; gap: 1rem; }
  .identifiers { grid-template-columns: minmax(0,1fr); gap: .25rem; }
  .identifiers dd { margin-bottom: .8rem; }
}
@media (max-width: 370px) {
  .navigation { padding-block: .8rem .6rem; gap: .45rem; }
  .nav-links a { padding-block: .25rem; }
  .introduction { padding-block: 1.25rem .25rem; }
  .introduction h1 { font-size: 2.6rem; margin-bottom: .75rem; }
  .degree { display: block; font-size: 1.05rem; margin-top: .15rem; }
  .intro-copy { font-size: .94rem; line-height: 1.55; margin-block: 1rem; }
  .affiliation { margin-bottom: .5rem; }
  .social { margin-top: .75rem; }
  .feature { padding-top: 1.5rem; }
  .pathways { grid-template-columns: minmax(0,1fr); }
}
@media print {
  .site-header, .skip, .theme-control { display: none !important; }
  body { background: white; color: black; font-size: 11pt; }
  .band { padding-block: 1.5rem; }
  a { color: inherit; }
  .publication, .meeting { break-inside: avoid; }
}
