:root{font-family:system-ui,sans-serif;color:#20182a;background:#fcfbfd;--plum:#46143e;--teal:#00796e;--line:#dbdce3;--muted:#575364}
*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input,select{font:inherit}button{cursor:pointer}html{scroll-padding-top:1rem}p{line-height:1.6}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(2rem,3.8vw,3.6rem);letter-spacing:-.055em;line-height:1.05;margin-bottom:.5rem}h2{font-size:1.55rem;letter-spacing:-.035em;margin-bottom:.85rem}h3{font-size:1.15rem;letter-spacing:-.02em;margin-bottom:.65rem}
.rail{position:fixed;inset:0 auto 0 0;width:225px;padding:34px 18px;background:linear-gradient(150deg,#511849,#31102d);color:white;overflow:auto}.brand{display:block;text-decoration:none;font-size:1.55rem;font-weight:780;letter-spacing:-.04em;line-height:1.12;margin:6px 8px 1rem}.brand::after{content:"";display:block;width:42px;height:3px;background:#8bd2c8;margin-top:15px}.rail p{color:#ebd9e6;margin:0 8px 28px;font-size:.9rem}.rail nav{display:grid;gap:5px}.rail nav a{display:flex;gap:.75rem;padding:.68rem .8rem;border-radius:8px;text-decoration:none;font-size:.94rem}.rail nav a:hover,.rail nav a[aria-current]{background:#ffffff22}.rail nav span{width:1.15rem;color:#a5e2da;text-align:center}
main{margin-left:225px;padding:30px clamp(18px,2.5vw,44px);max-width:1700px}.dashboard{display:grid;grid-template-columns:minmax(0,1fr) minmax(225px,29%);gap:26px}.intro,#impact,#publications{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--line)}.eyebrow{text-transform:uppercase;letter-spacing:.13em;color:var(--teal);font-weight:800;font-size:.72rem;margin-bottom:.65rem}.role,.affiliation{margin:0;font-size:clamp(1rem,1.6vw,1.35rem)}.affiliation{font-weight:700;color:var(--teal)}.section-heading{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px}.badge{border-radius:30px;background:#e4f3ef;color:#00584e;padding:.3rem .65rem;font-size:.74rem;font-weight:650}.metrics{margin:0 0 14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.metrics div{padding:14px 12px;border:1px solid #cfdfdc;background:linear-gradient(130deg,#eff8f6,#e6f3ef);border-radius:10px}.metrics dt{font-size:.81rem;font-weight:700}.metrics dd{font-size:clamp(1.35rem,2.4vw,2.1rem);font-weight:780;margin:.3rem 0 0;color:#00594f;font-variant-numeric:tabular-nums}
.charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.chart{border:1px solid var(--line);border-radius:10px;background:white;padding:12px;margin:0;min-width:0}.chart figcaption{font-size:.9rem;font-weight:750}.chart svg{display:block;width:100%;height:auto;overflow:visible;margin-top:8px}.chart text{fill:var(--muted);font-size:11px}.chart summary{cursor:pointer;color:var(--teal);font-size:.75rem}.chart table{border-collapse:collapse;width:100%;font-size:.78rem;margin-top:.4rem}.chart th,.chart td{text-align:left;padding:.2rem;border-bottom:1px solid var(--line)}
.note{color:var(--muted);font-size:.8rem;margin:.65rem 0}.filters{display:grid;grid-template-columns:2fr 1fr 1.45fr;gap:8px}.filters label{min-width:0;font-size:.78rem;font-weight:700}.filters input,.filters select{width:100%;margin-top:.35rem;border:1px solid #aaa4b3;background:white;color:inherit;padding:.6rem;border-radius:7px;font-size:.86rem}.results{padding:0;list-style:none;margin:0 0 .8rem}.results li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);background:white;border-radius:8px;margin-bottom:8px}.results strong{font-size:.92rem}.results small{display:block;color:var(--muted);margin-top:.2rem}button{border:0;border-radius:7px;background:#00685e;color:white;font-size:.82rem;font-weight:700;padding:.58rem .8rem;flex-shrink:0}button:hover{background:#004e47}
aside{border-left:1px solid var(--line);padding-left:23px;font-size:.94rem}aside h2::after{content:"";display:block;width:38px;height:3px;background:var(--teal);margin-top:10px}aside h3{padding-top:15px;border-top:1px solid var(--line)}.timeline{list-style:none;padding:0 0 0 13px;margin:0 0 20px}.timeline li{border-left:1px solid #92bdb6;padding:0 0 16px 14px;position:relative}.timeline li:last-child{padding-bottom:0}.timeline li::before{content:"";position:absolute;left:-5px;top:.35em;width:9px;height:9px;border-radius:50%;background:var(--teal)}.timeline span{display:block;color:var(--muted);font-size:.82rem;margin-top:.2rem}
footer{margin-top:14px;padding-top:16px;border-top:1px solid var(--line)}.sources{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;font-size:.82rem}.sources dt,#record-details dt{font-weight:750}.sources dd,#record-details dd{margin:.25rem 0 .7rem;color:var(--muted);line-height:1.45;overflow-wrap:anywhere}dialog{width:min(560px,calc(100% - 28px));border:1px solid var(--line);border-radius:14px;padding:24px;color:inherit}dialog::backdrop{background:#2012269e}.close{float:right;margin:0 0 8px 8px}.skip{position:fixed;left:8px;top:8px;transform:translateY(-160%);z-index:2;background:white;padding:8px}.skip:focus{transform:none}:focus-visible{outline:3px solid #ab4fb0;outline-offset:3px}
@media(max-width:1120px){.rail{width:175px}main{margin-left:175px}.dashboard{grid-template-columns:minmax(0,1fr) 225px;gap:16px}aside{padding-left:15px}}
@media(max-width:900px){.rail{position:static;width:auto;padding:15px 18px}.rail p,.brand::after,.brand br{display:none}.brand{margin:0 0 .75rem}.brand br::after{content:" "}.rail nav{display:flex;flex-wrap:wrap;gap:3px}.rail nav a{padding:.4rem .55rem}.rail nav span{display:none}main{margin:0}.dashboard{grid-template-columns:minmax(0,1fr)}aside{border-left:0;padding:0}}
@media(max-width:530px){.metrics,.sources{grid-template-columns:repeat(2,minmax(0,1fr))}.charts{grid-template-columns:minmax(0,1fr)}.filters{grid-template-columns:1fr 1fr}.filters label:first-child{grid-column:1/-1}.results li{align-items:flex-start;flex-direction:column}}
[hidden]{display:none!important}
main>section{max-width:1120px}
#biography,#teaching,#sources{max-width:940px}
#biography>p,#teaching>p,.overview-copy,.export-list{max-width:72ch}
.overview-copy{margin:1.5rem 0;color:var(--muted)}
.overview-links{display:flex;flex-wrap:wrap;gap:.7rem}
.overview-links a{border:1px solid var(--line);background:white;border-radius:8px;padding:.7rem .9rem;text-decoration:none;color:var(--teal);font-weight:700}
.overview-links a:hover{background:#e4f3ef}
.source-control{display:flex;align-items:center;gap:.65rem;margin:.1rem 0 1rem;font-size:.85rem;font-weight:700}
.source-control select{background:white;border:1px solid #aaa4b3;border-radius:7px;padding:.5rem;color:inherit}
.filters{grid-template-columns:2fr .8fr 1fr 1.25fr}
.export-list li{margin-bottom:.75rem;line-height:1.6}
@media(max-width:680px){.filters{grid-template-columns:1fr 1fr}.filters label:first-child,.filters label:last-child{grid-column:1/-1}}
.metrics small{display:block;font-size:.75rem;color:var(--muted);margin-top:.3rem}

/* Shared editorial layout */
:root{--paper:#f8f7f5;--plum:#38172e;--teal:#006c61;--line:#d9d5d6;background:var(--paper);color:#221b26}
.rail{width:230px;background:var(--plum);padding:32px 16px}
.brand{font:700 2.1rem/1.02 Georgia,serif;max-width:8ch;letter-spacing:-.045em;margin:0 12px 22px}
.brand::after{width:155px;height:1px;background:#ffffff60;margin-top:23px}
.rail nav a{min-height:42px;align-items:center;padding:.65rem .8rem}
.rail nav a[aria-current]{background:#70415e}
main{margin-left:230px;padding:38px clamp(24px,3.4vw,58px) 56px}
main>section,#biography,#teaching,#sources{max-width:1200px}
main>section>h2,.section-heading h2,h1{font:700 clamp(2.7rem,5vw,5rem)/1.03 Georgia,serif;letter-spacing:-.045em;margin:0 0 16px}
h3,.chart figcaption{font:700 1.35rem/1.2 Georgia,serif;letter-spacing:-.02em}
.lede,.overview-copy{color:var(--muted);max-width:68ch;font-size:1.05rem}
#overview,#impact,#publications{border:0;margin:0;padding:0}
.hero{display:grid;grid-template-columns:1.35fr 1fr;align-items:center;gap:20px;padding:16px 0 38px}
.hero-art{width:100%;height:auto;mix-blend-mode:multiply}
.role,.affiliation{font-size:clamp(1rem,1.55vw,1.3rem)}
.affiliation{color:inherit;font-weight:500}
.overview-links a{border-color:var(--teal);font-size:.9rem}
.overview-links a:first-child{background:var(--teal);color:white}
.themes{border-top:1px solid var(--line);padding-top:25px}
.themes h2{font:700 2.25rem Georgia,serif}
.theme-grid,.course-grid,.bio-grid{display:grid;gap:24px}
.theme-grid{grid-template-columns:repeat(3,1fr)}
.theme-grid article+article{border-left:1px solid var(--line);padding-left:24px}
.theme-grid p,.course-list,.supervision p{color:var(--muted)}
.bio-grid{grid-template-columns:1.55fr 1fr;border-top:1px solid var(--line);padding-top:24px}
.bio-grid p{max-width:65ch}
.bio-grid h3{margin-top:20px}
.career{border-left:1px solid var(--line);padding-left:24px}
.career h3{margin-top:0}
.timeline li{padding-bottom:22px}
.timeline strong{display:block;margin-top:7px}
.timeline .badge{display:inline-block;color:#00584e}
.education,.course-list,.topics{list-style:none;padding:0}
.education li{border-left:3px solid var(--teal);padding-left:12px;margin:12px 0}
.education span,.source-table small{display:block;color:var(--muted);font-size:.85em;margin-top:.3em}
.filters{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.filters label:first-child{grid-column:1/-1}
.filters input,.filters select{min-height:44px}
.results li{border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;margin:0;padding:16px 0}
.results strong{font:700 1.18rem/1.25 Georgia,serif}
.source-control{border:0;padding:0;flex-wrap:wrap}
.source-control legend{margin-bottom:.5rem}
.source-control label{position:relative;display:flex;align-items:center;gap:.5rem;padding:.55rem .8rem;border:1px solid var(--line);border-radius:8px;background:white;cursor:pointer}
.source-control label:has(:checked){background:var(--teal);color:white;border-color:var(--teal)}
.source-control input{accent-color:var(--plum);margin:0}
.metrics div,.chart,.panel,.source-table{background:white;border:1px solid var(--line);border-radius:10px}
.metrics dd{font:700 clamp(1.6rem,3vw,2.6rem)/1.1 Georgia,serif;color:inherit}
.chart{padding:16px}
.course-grid{grid-template-columns:1fr 1fr}
.panel{padding:18px 22px}
.course-list li{border-top:1px solid var(--line);padding:12px 0;font-weight:650;color:inherit}
.course-list .badge{display:inline-block;margin-top:.3rem}
.supervision{margin-top:22px}
.topics{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:0}
.topics li{background:#edf4f1;border-radius:5px;padding:.45rem .65rem;color:#17463f;font-size:.9rem}
.source-table{overflow:hidden}
.source-table table{width:100%;border-collapse:collapse;text-align:left}
.source-table th,.source-table td{padding:13px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
.source-table thead{background:#eeebed}
.source-table tr:last-child>*{border-bottom:0}
.source-table thead tr:last-child>*{border-bottom:1px solid var(--line)}
.source-table .badge{display:inline-block}
.pending{background:#faebcb;color:#67430b}
.export{margin-top:22px}
.export summary{font-weight:750;cursor:pointer}
.export ol{padding-left:1.3rem;margin-bottom:0}
main :is(h1,h2)[tabindex="-1"]:focus{outline:none}
@media(max-width:900px){
  .rail{width:auto;padding:16px 20px}
  .brand{max-width:none;font-size:1.65rem;margin:0 0 10px}
  .rail nav a{min-height:40px;padding:.4rem .6rem}
  main{margin:0;padding:26px 20px 40px}
}
@media(max-width:650px){
  .hero,.theme-grid,.bio-grid,.course-grid{grid-template-columns:1fr}
  .hero{gap:14px}
  .hero-art{max-width:440px}
  .theme-grid article+article,.career{border-left:0;padding-left:0}
  .theme-grid article+article,.career{border-top:1px solid var(--line);padding-top:16px}
  .filters{grid-template-columns:1fr 1fr}
  .filters label:last-child{grid-column:1/-1}
  .source-table th,.source-table td{padding:8px 6px;font-size:.75rem;overflow-wrap:anywhere}
  .source-table .badge{font-size:.68rem;padding:.25rem .35rem}
}

.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.project p:last-child{margin-bottom:0;color:var(--muted)}
.cv-actions{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.cv-paper{max-width:900px;padding:clamp(18px,4vw,52px);background:white;border:1px solid var(--line);border-radius:10px;overflow-wrap:anywhere}
.cv-paper header{border-bottom:1px solid var(--line);margin-bottom:20px}
.cv-paper header h3{font-size:clamp(1.9rem,4vw,3rem)}
.cv-paper h4{font:700 1.35rem Georgia,serif;margin:24px 0 12px}
.cv-list{padding-left:1.35rem}
.cv-list li{padding:0 0 .65rem;line-height:1.5}
@media(max-width:650px){.project-grid{grid-template-columns:1fr}}
@page{size:A4;margin:16mm}
@media print{
  body:has(#cv:not([hidden])){background:white;color:black}
  body:has(#cv:not([hidden])) :is(.rail,.skip,.cv-actions,.cv-tab-title){display:none}
  body:has(#cv:not([hidden])) main{margin:0;padding:0}
  .cv-paper{border:0;padding:0;max-width:none;font-size:10pt}
  .cv-paper .course-grid{display:block}
  .cv-paper .panel{padding:0;border:0}
  .cv-paper :is(h3,h4){break-after:avoid}
  .cv-paper li{break-inside:avoid}
}

.project-grid{counter-reset:research-project}
.project{counter-increment:research-project;border-top:3px solid var(--teal)}
.project .eyebrow::before{content:counter(research-project,decimal-leading-zero) " / ";color:var(--muted)}
.cv-paper header{border-bottom:2px solid var(--teal);padding-bottom:12px}
.cv-paper h4{border-bottom:1px solid var(--line);padding-bottom:7px}
@media screen{
  .cv-paper{margin-top:24px}
  .cv-paper header .eyebrow{letter-spacing:.18em}
}

/* Research portfolio and curriculum vitae */
.project-banner{padding:clamp(24px,5vw,64px);margin-bottom:24px;border-radius:12px;background:#183d39;color:#fffaf1}
.project-banner .eyebrow{color:#d9bc82}
.project-banner h2,.cv-masthead h2{font:700 clamp(2.5rem,5vw,4.6rem)/1.02 Georgia,serif;letter-spacing:-.04em;margin:0}
.project-banner h2::after{content:"";display:block;width:60px;height:3px;background:#d9bc82;margin-top:20px}
.section-band{background:#183d39;color:#fffaf1;border-radius:6px;padding:10px 15px}
#project-list{counter-reset:research-project}
.project-grid{grid-template-columns:minmax(0,1fr);counter-reset:none;margin-bottom:26px}
.project{border:1px solid var(--line);display:grid;grid-template-columns:3rem minmax(0,1fr);column-gap:16px}
.project::before{content:counter(research-project,decimal-leading-zero);grid-row:1/4;border-right:1px solid var(--line);font:700 1.55rem Georgia,serif;color:var(--teal)}
.project .eyebrow::before{content:none}
.project h3{color:var(--plum)}
.cv-masthead{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding:12px 0 22px}
.cv-masthead h2{border-left:4px solid #b79355;padding-left:16px}
.cv-masthead p:last-child{margin:8px 0 0}
.cv-actions{display:block;margin:0}
.cv-layout{display:grid;grid-template-columns:175px minmax(0,1fr);align-items:start;gap:24px;margin-top:24px}
.cv-index{position:sticky;top:16px;background:#eeebe3;padding:14px;border-radius:8px}
.cv-index p{font:700 1.15rem Georgia,serif;margin:0 0 8px}
.cv-index button{display:block;width:100%;text-align:left;background:transparent;color:#183d39;padding:8px 5px}
.cv-index button:hover{background:#e1ddd1}
.cv-paper{max-width:none;margin:0;padding:clamp(16px,3vw,36px)}
.cv-paper .section-band:not(:first-child){margin-top:24px}
#cv-profile{margin-top:24px}
@media(max-width:700px){
  .cv-layout{grid-template-columns:minmax(0,1fr)}
  .cv-index{position:static}
  .cv-index button{display:inline-block;width:auto}
  .project{grid-template-columns:2rem minmax(0,1fr);column-gap:10px;padding:14px}
}
@media print{
  .cv-index{display:none}
  .cv-layout{display:block;margin:12px 0 0}
  .cv-masthead{display:block;padding:0 0 10px}
  .cv-masthead h2{font-size:26pt;border:0;padding:0}
  .cv-paper{padding:0}
  .cv-paper .section-band{background:none;color:black;border-bottom:1px solid #777;border-radius:0;padding:0 0 4px}
}

/* Site navigation and footer */
.rail {
  background: #192C40;
  border-inline-end: 1px solid #354D64;
}
.rail .brand::after { background: #d5b483; }
.rail nav a[aria-current] { background: #354D64; }
.site-footer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr);
  gap: 28px;
  padding: clamp(20px, 4vw, 38px);
  border-top: 3px solid #d5b483;
  background: #173a37;
  color: #fffaf1;
}
.site-footer p { margin: 0 0 8px; }
.site-footer .footer-name { font: 700 1.45rem Georgia, serif; }
.site-footer nav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  gap: 10px 16px;
}
.site-footer a { color: inherit; text-underline-offset: .2em; }
.site-footer a[aria-current="page"] { color: #f4d9af; }
.site-footer .footer-contact {
  display: inline-block;
  margin-top: 8px;
  padding: 8px 13px;
  border: 1px solid #d5b483;
  border-radius: 6px;
}
@media (max-width: 600px) {
  .site-footer { grid-template-columns: minmax(0, 1fr); }
}
@media print {
  .site-footer { display: none; }
}

@media screen {
  body {
    display: grid;
    min-height: 100vh;
    grid-template-rows: 1fr auto;
  }
}
@media screen and (min-width: 901px) {
  .site-layout {
    display: grid;
    grid-template-columns: 230px minmax(0, 1fr);
  }
  .rail {
    position: sticky;
    top: 0;
    align-self: start;
    height: 100vh;
  }
  main { margin-left: 0; }
}


#overview { --agenda-gold: #9a712c; }
#overview .hero-kicker { letter-spacing: .16em; }
#overview .hero-kicker::after {
  content: "";
  display: block;
  width: 52px;
  height: 2px;
  margin-top: 12px;
  background: var(--agenda-gold);
}
#overview .overview-copy {
  border-inline-start: 3px solid var(--agenda-gold);
  padding-inline-start: 14px;
  font: italic 1.25rem/1.5 Georgia, serif;
}
#overview .themes { border-top-color: var(--agenda-gold); }
.theme-number {
  display: block;
  margin-bottom: 6px;
  color: var(--agenda-gold);
  font: 700 1.55rem Georgia, serif;
}
.research-links {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 30px;
  margin-top: 26px;
  padding: 14px 18px;
  border-inline-start: 3px solid var(--agenda-gold);
  background: #eee6d7;
}
.research-links a { color: #173a37; font-weight: 700; }
.site-footer > div {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 14px;
}
.site-footer .footer-name { margin: 0; }
.site-footer .footer-contact {
  margin: 0;
  background: #d5b483;
  color: #192c40;
  font-weight: 750;
}
.site-footer nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 18px;
}
.site-footer .footer-contact[aria-current="page"] { color: #192c40; }
.publication-citation {
  margin: 0;
  padding-inline-start: 1.2em;
  text-indent: -1.2em;
  overflow-wrap: anywhere;
}

.profile-portrait {
  display: block;
  width: min(100%, 350px);
  height: auto;
  justify-self: center;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.impact-engagement {
  border-inline-start: 3px solid #9a712c;
  padding: 14px 18px;
  background: #eee6d7;
  margin: 16px 0 24px;
}
.impact-engagement ul { padding-inline-start: 1.2rem; }
.impact-engagement li { margin-block: .35rem; }
@media (min-width: 901px) {
  #overview .theme-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #publications .filters { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 651px) and (max-width: 900px) {
  #overview .theme-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #overview .theme-grid article:nth-child(odd) { border-inline-start: 0; padding-inline-start: 0; }
}

.site-footer .footer-profiles {
  grid-column: 1 / -1;
  padding-top: 18px;
  border-top: 1px solid #6d8984;
}

.footer-profiles a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
}

.footer-profiles img,
.footer-profiles svg {
  flex: none;
  box-sizing: content-box;
  padding: 4px;
  border-radius: 6px;
  background: #fff;
  object-fit: contain;
}

@media (max-width: 600px) {
  .site-footer .footer-profiles {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px 12px;
  }
}

.contact-form {
  display: grid;
  gap: 16px;
  max-width: 640px;
}

.contact-form label {
  display: grid;
  gap: 6px;
  font-weight: 650;
}

.contact-form input,
.contact-form textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #75827f;
  border-radius: 6px;
  font: inherit;
  font-weight: 400;
}

.contact-form textarea { resize: vertical; }
.contact-form button { justify-self: start; min-height: 44px; }
.contact-form .note { margin: 0; }
