@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;450;500;600&family=Space+Grotesk:wght@400;500&display=swap');

/* Light is the default, including without JavaScript. */
:root {
  color-scheme: light;
  --bg: #f6f5f1;
  --surface: #ffffff;
  --text: #182c3b;
  --muted: #536371;
  --accent: #28667b;
  --line: #cbd3d5;
  --glow: #e6eef0;
  --grid: #46607816;
  --intro: #415564;
  --intro-original: #415564;
  --lede-original: #415564;
  --strong-muted: #2c414e;
  --compact-text: #415564;
  --venue: #416777;
  --link-rule: #74909c;
  --link-rule-original: #74909c;
  --paper-link-rule: #74909c;
  --intro-rule: #8ba2ac;
  --intro-rule-original: #8ba2ac;
  --monogram-rule: #78939f;
  --control-bg: #e1eaed;
  --control-bg-original: #e1eaed;
  --control-rule-original: #74909c;
  --control-hover: #e5edef;
  --search-rule: #8296a0;
  --selection-bg: #28667b;
  --selection-text: #ffffff;
  --display: 'Space Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono: 'IBM Plex Mono',monospace;
  --sans: 'IBM Plex Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0c141f;
  --surface: #111e2b;
  --text: #e5edf3;
  --muted: #a3b2c0;
  --accent: #95cbdc;
  --line: #2b3b4b;
  --glow: #122437;
  --grid: #4660781f;
  --intro: #b5c3d0;
  --intro-original: #c5cccc;
  --lede-original: #b9c2c2;
  --strong-muted: #cbd0ce;
  --compact-text: #bdc5c5;
  --venue: #a3c2d0;
  --link-rule: #526e82;
  --link-rule-original: #527185;
  --paper-link-rule: #536067;
  --intro-rule: #4c6479;
  --intro-rule-original: #5f686b;
  --monogram-rule: #57778b;
  --control-bg: #142737;
  --control-bg-original: #202b30;
  --control-rule-original: #627077;
  --control-hover: #17293a;
  --search-rule: #647177;
  --selection-bg: #95cbdc;
  --selection-text: #0c141f;
}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none;text-underline-offset:5px}a:hover{color:var(--accent)}button,input{font:inherit}button,a,input{touch-action:manipulation}:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--selection-bg);color:var(--selection-text)}p{margin:0 0 1.25rem}h1,h2,h3{font-weight:400;margin:0;line-height:1.15}h1,h2{font-family:var(--display)}h1{font-size:clamp(3.2rem,6vw,5.5rem);letter-spacing:-.025em}h2{font-size:clamp(2rem,3.5vw,2.8rem);letter-spacing:-.02em}h3{font-size:1.2rem;font-weight:500}small{font-size:.8rem}.wrap{width:min(1120px,calc(100% - 96px));margin-inline:auto}.skip{position:absolute;left:24px;top:-100px;background:var(--text);color:var(--bg);padding:12px;z-index:5}.skip:focus{top:12px}.site-header{height:110px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:30px}.brand{display:flex;align-items:center;gap:14px;font-size:15px;letter-spacing:.015em;white-space:nowrap}.monogram{font-family:var(--display);font-size:26px;width:38px;height:38px;border:1px solid var(--link-rule-original);display:grid;place-items:center;color:var(--accent);line-height:1}.site-nav{display:flex;gap:32px;align-items:center;font-size:14px}.site-nav a{padding:10px 0;position:relative;color:var(--muted)}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--text)}.site-nav a[aria-current=page]:after{content:'';height:2px;background:var(--accent);position:absolute;bottom:0;left:0;right:0}.eyebrow{text-transform:uppercase;letter-spacing:.19em;font-size:11px;font-weight:600;color:var(--accent);margin-bottom:25px}.hero{display:grid;grid-template-columns:1fr 300px;gap:88px;padding:75px 0 70px;align-items:start}.hero .intro{font-size:18px;line-height:1.85;max-width:650px;color:var(--intro-original)}.hero .intro a{text-decoration:underline;text-decoration-color:var(--intro-rule-original)}.hero .intro strong{color:var(--text);font-weight:500}.link-row{display:flex;flex-wrap:wrap;gap:26px;align-items:center;margin-top:29px;font-size:13px;font-weight:500}.text-link{display:inline-flex;align-items:center;gap:12px;border-bottom:1px solid var(--link-rule-original);padding-bottom:5px}.arrow{font-size:17px;color:var(--accent)}.aside{border-top:1px solid var(--accent);margin-top:8px;padding-top:24px}.aside-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.16em;margin:0 0 26px}.areas{padding:0;margin:0;list-style:none}.areas li{border-bottom:1px solid var(--line);padding:19px 0;display:flex;gap:19px;line-height:1.45;font-size:15px}.areas li:first-child{padding-top:0}.areas .number{font-size:11px;color:var(--accent);padding-top:2px;font-variant-numeric:tabular-nums}.aside-note{margin-top:25px;font-size:12px;color:var(--muted);line-height:1.8}.portrait{width:100%;aspect-ratio:4/5;object-fit:cover;margin:0 0 28px;filter:grayscale(100%)}.section{padding:48px 0 58px;border-top:1px solid var(--line)}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:22px}.section-heading .text-link{font-size:12px;white-space:nowrap}.paper{display:grid;grid-template-columns:100px 1fr;gap:26px;padding:29px 0;border-bottom:1px solid var(--line)}.paper:last-child{border-bottom:none}.paper-year{font-size:13px;color:var(--accent);font-variant-numeric:tabular-nums;padding-top:4px}.paper h3{font-size:20px;line-height:1.45;font-weight:450;margin-bottom:9px;max-width:820px}.paper h3 a:hover{text-decoration:underline}.authors{color:var(--muted);font-size:13px;line-height:1.8;margin:0 0 7px}.authors strong{font-weight:500;color:var(--strong-muted)}.venue{font-size:12px;color:var(--venue);line-height:1.7;margin:0}.paper-links{display:flex;flex-wrap:wrap;gap:22px;margin-top:11px;font-size:12px}.paper-links a{border-bottom:1px solid var(--paper-link-rule);line-height:1.8}.paper-links span{color:var(--muted)}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:85px}.quiet{color:var(--muted)}.small{font-size:14px}.timeline{padding:0;margin:27px 0 0;list-style:none}.timeline li{padding:0 0 25px 20px;border-left:1px solid var(--line);position:relative}.timeline li:before{content:'';width:5px;height:5px;position:absolute;top:8px;left:-3px;background:var(--accent)}.timeline li:last-child{padding-bottom:0}.timeline .date{display:block;font-size:11px;color:var(--accent);margin-bottom:5px;letter-spacing:.03em}.timeline .title{display:block;font-size:14px;color:var(--text);line-height:1.7}.timeline .detail{display:block;color:var(--muted);font-size:13px}.page-head{padding:63px 0 43px}.page-head .eyebrow{margin-bottom:20px}.page-head .lede{color:var(--lede-original);font-size:17px;max-width:780px;line-height:1.9}.page-head .link-row{margin-top:22px}.research-tools{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:36px}.filters{display:flex;gap:8px;flex-wrap:wrap}.filter{background:none;color:var(--muted);padding:8px 14px;border:1px solid transparent;cursor:pointer;font-size:12px;line-height:1.7}.filter[aria-pressed=true]{border-color:var(--control-rule-original);background:var(--control-bg-original);color:var(--text)}.filter:hover{color:var(--text);border-color:var(--paper-link-rule)}.search{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--search-rule);padding:7px 1px;min-width:240px}.search input{background:none;border:0;min-width:0;width:100%;color:var(--text);font-size:12px;padding:3px 0;outline-offset:4px}.search input::placeholder{color:var(--muted)}.search svg{width:15px;height:15px;flex-shrink:0;color:var(--muted)}.research-group{padding-bottom:40px}.research-group h2{font-size:31px}.group-title{display:flex;gap:16px;align-items:center}.count{font-family:var(--sans);font-size:11px;color:var(--muted);border:1px solid var(--line);min-width:23px;height:23px;display:grid;place-items:center}.empty{color:var(--muted);padding:30px 0 80px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}.cv-section{border-top:1px solid var(--line);display:grid;grid-template-columns:240px 1fr;gap:42px;padding:38px 0}.cv-section h2{font-size:30px}.cv-items{display:grid;gap:29px}.cv-entry h3{font-size:16px;margin:0 0 5px;line-height:1.5}.cv-entry p{font-size:14px;color:var(--muted);margin:0;line-height:1.85}.cv-entry .date{font-size:12px;color:var(--accent);margin:0 0 5px}.compact-list{list-style:none;padding:0;margin:0}.compact-list li{padding:8px 0;color:var(--compact-text);font-size:14px}.compact-list li:first-child{padding-top:0}.compact-list strong{color:var(--text);font-weight:500}.cv-download{border:1px solid var(--link-rule-original);padding:10px 18px;display:inline-flex;gap:18px;align-items:center;color:var(--text);font-size:13px}.cv-download:hover{background:var(--control-hover)}.course{display:grid;grid-template-columns:240px 1fr;gap:42px;padding:37px 0 48px;border-top:1px solid var(--line)}.course-meta{color:var(--muted);font-size:13px}.course-meta strong{color:var(--accent);font-weight:400;display:block;margin-bottom:9px}.course h2{margin-bottom:20px;font-size:35px}.course p{color:var(--muted);font-size:15px;max-width:640px}.site-footer{border-top:1px solid var(--line);padding:31px 0 35px;display:flex;justify-content:space-between;gap:24px;align-items:flex-end;margin-top:20px}.footer-name{font-family:var(--display);font-size:22px;margin-bottom:4px}.footer-detail{font-size:11px;color:var(--muted);margin:0}.footer-links{display:flex;gap:25px;font-size:12px}.contact-strip{display:flex;justify-content:space-between;gap:30px;align-items:center}.contact-strip h2{font-size:34px;margin-bottom:14px}.contact-strip p{font-size:14px;color:var(--muted);margin:0}.contact-strip .text-link{font-size:15px}.not-found{min-height:65vh}.not-found h1{margin-bottom:25px}.no-js .research-tools{display:none}
@media(min-width:1500px){.wrap{width:1160px}.hero{padding-top:85px;padding-bottom:85px}}
@media(max-width:900px){.wrap{width:calc(100% - 56px)}.hero{grid-template-columns:1fr 250px;gap:42px}.hero .intro{font-size:16px}.site-nav{gap:22px}.two-column{gap:40px}.cv-section,.course{grid-template-columns:190px 1fr;gap:28px}.research-tools{align-items:flex-start;flex-direction:column}.search{width:100%}}
@media(max-width:760px){.hero{display:block}.aside{margin-top:43px}}
@media(max-width:650px){.wrap{width:calc(100% - 40px)}.site-header{height:auto;padding:23px 0 16px;display:block}.brand{font-size:14px;gap:11px}.monogram{width:33px;height:33px;font-size:23px}.site-nav{gap:28px;margin-top:21px;font-size:12px}.site-nav a{padding:4px 0 10px}.hero{display:block;padding:44px 0 36px}.eyebrow{font-size:10px;margin-bottom:22px}.hero .intro{font-size:16px}.aside{margin-top:43px;padding-top:20px}.aside-label{margin-bottom:22px}.areas li{padding:14px 0;font-size:14px}.aside-note{display:none}.link-row{gap:22px;font-size:12px}.section{padding:33px 0 38px}.section-heading{align-items:baseline;gap:12px}.section-heading h2{font-size:31px}.section-heading .text-link{font-size:11px;gap:5px}.paper{grid-template-columns:1fr;gap:8px;padding:23px 0}.paper-year{font-size:11px;padding:0}.paper h3{font-size:18px}.authors{font-size:12px}.venue{font-size:11px}.two-column{grid-template-columns:1fr;gap:36px}.page-head{padding:42px 0 29px}.page-head .lede{font-size:15px}.research-tools{gap:18px;padding:16px 0;margin-bottom:30px}.filter{padding:7px 11px;font-size:11px}.research-group h2{font-size:29px}.research-group{padding-bottom:32px}.cv-section,.course{grid-template-columns:1fr;gap:24px;padding:30px 0}.cv-section h2{font-size:29px}.course h2{font-size:30px}.course-meta{font-size:12px}.contact-strip{display:block}.contact-strip .text-link{margin-top:25px;font-size:14px}.site-footer{display:block;margin-top:5px;padding:25px 0}.footer-links{margin-top:21px;gap:24px}.portrait{max-width:290px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{body{background:white;color:#111;font-size:11pt}a{color:inherit}.wrap{width:100%}.site-header,.site-footer,.research-tools,.link-row,.aside{display:none}.hero,.page-head,.section,.cv-section{padding:15px 0}.hero{display:block}h1{font-size:34pt}h2{font-size:24pt}.quiet,.authors,.venue,.cv-entry p,.date,.eyebrow,.paper-year{color:#444!important}.paper,.cv-entry{break-inside:avoid}}

/* A restrained technical character: cool ink, geometric type, precise rules. */
body{background:radial-gradient(ellipse at 85% 0%,var(--glow) 0,transparent 600px),var(--bg)}
h1,h2{font-weight:400}h2{font-size:clamp(1.8rem,3vw,2.35rem);letter-spacing:-.045em}
.site-header{height:92px}.brand{font-weight:500;letter-spacing:0;font-size:14px}.monogram{font-family:var(--mono);font-size:14px;width:34px;height:34px;border-color:var(--monogram-rule);position:relative}.monogram:after{content:'';position:absolute;right:-3px;bottom:-3px;background:var(--bg);width:9px;height:9px;border-left:1px solid var(--accent);border-top:1px solid var(--accent)}
.site-nav{font-size:12px;gap:34px}.site-nav a[aria-current=page]:after{height:1px}.eyebrow,.aside-label,.paper-year,.timeline .date,.cv-entry .date,.count,.course-meta strong{font-family:var(--mono);font-weight:400}.eyebrow{font-size:10px;letter-spacing:.13em}
.hero{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:44px 78px;padding:43px 0 56px;position:relative}.hero-heading{grid-column:1/-1;position:relative;border-bottom:1px solid var(--line);padding:21px 0 42px;isolation:isolate}.hero-heading:before{content:'';position:absolute;inset:-20px -16px 0 48%;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(90deg,transparent,#000);z-index:-1;pointer-events:none}.hero-heading:after{content:'';position:absolute;bottom:-1px;left:0;width:72px;height:1px;background:var(--accent)}
.hero .eyebrow{margin-bottom:19px}.research-mark{position:absolute;right:8px;bottom:26px;width:190px;height:136px;color:var(--accent);opacity:.5;z-index:-1}.hero .intro{font-size:17px;line-height:1.85;color:var(--intro)}.hero .intro a{text-decoration-color:var(--intro-rule)}.hero .link-row{margin-top:24px}.text-link{border-color:var(--link-rule);font-size:12px}.text-link .arrow{font-size:15px}
.aside{border:0;margin:0;padding:3px 0 0 24px;border-left:1px solid var(--line)}.aside-label{font-size:10px;letter-spacing:.1em;margin-bottom:23px;color:var(--accent)}.areas{display:grid;grid-template-columns:1fr 1fr;gap:23px 24px}.areas li,.areas li:first-child{display:block;border:0;padding:0;font-size:14px;line-height:1.7}.areas .number{display:none}.aside-note{font-size:12px;line-height:1.85;margin-top:27px;max-width:290px}.section{padding:38px 0 48px}.paper{grid-template-columns:82px 1fr;gap:24px}.paper h3{font-size:20px;font-weight:450}.paper-year{font-size:11px;letter-spacing:0}.paper-links{gap:24px}.paper-links a{font-family:var(--mono);font-size:10px;border:0;color:var(--accent)}.paper-links a:hover{text-decoration:underline}.authors{font-size:13px}.venue{font-size:12px;color:var(--venue)}.section-heading .text-link{font-size:11px}.page-head .lede{color:var(--intro)}.research-group h2{font-size:27px;letter-spacing:-.04em}.filter{font-family:var(--mono);font-size:10px}.filter[aria-pressed=true]{background:var(--control-bg);border-color:var(--link-rule)}.search input{font-size:12px}.cv-section h2{font-size:25px}.course h2{font-size:31px}.cv-download{font-size:12px}.contact-strip h2{font-size:30px}.footer-name{font-size:18px;letter-spacing:-.03em}.footer-detail{font-size:11px}.footer-links{font-size:11px}.timeline li:before{background:var(--accent);width:4px;height:4px}.timeline .date{font-size:10px}.site-footer{margin-top:12px}
@media(min-width:1500px){.hero{padding-top:55px;padding-bottom:65px}}
@media(max-width:1050px){.research-mark{width:135px;opacity:.3}.hero{gap:35px 42px}.areas{grid-template-columns:1fr;gap:13px}.areas li br{display:none}.aside-note{margin-top:18px}}
@media(max-width:760px){.hero{display:block;padding-top:30px}.hero-heading{padding:15px 0 30px;margin-bottom:30px}.hero .intro{font-size:16px}.research-mark{display:none}.aside{margin-top:34px;padding:22px 0 0;border-left:0;border-top:1px solid var(--line)}.areas{grid-template-columns:1fr 1fr;gap:18px 28px}.areas li{font-size:13px}.aside-note{display:block;max-width:100%}.hero-heading:before{left:30%;opacity:.65}.site-header{height:auto}.paper{grid-template-columns:1fr;gap:8px}.section-heading h2{font-size:27px}.research-group h2{font-size:25px}.cv-section h2{font-size:25px}}
@media(max-width:400px){.hero .eyebrow{font-size:9px;letter-spacing:.04em}.site-nav{gap:27px}.areas{gap:17px}.section-heading .text-link{font-size:10px}.section-heading h2{font-size:25px}.paper h3{font-size:18px}}
@media print{body{background:white}.hero-heading:before,.hero-heading:after,.research-mark{display:none}.hero-heading{padding:0 0 18px}.hero .intro{color:#333}.venue{color:#444}}

/* Shared navigation: the theme action stays visible and reachable on small screens. */
.header-controls {
  display: flex;
  align-items: center;
  gap: 30px;
}
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  flex-shrink: 0;
  min-height: 44px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 3px;
  background: transparent;
  color: var(--muted);
  font: 11px/1.3 var(--sans);
  white-space: nowrap;
  cursor: pointer;
}
.theme-toggle:hover {
  color: var(--text);
  border-color: var(--link-rule);
  background: var(--control-hover);
}
.theme-toggle:focus-visible {
  outline-offset: 4px;
}
.theme-toggle svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}
@media (max-width: 1000px) {
  .site-header { gap: 24px; }
  .header-controls { gap: 20px; }
  .site-nav { gap: 24px; }
}
@media (max-width: 760px) {
  .site-header {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    height: auto;
    align-items: center;
    gap: 13px 12px;
    padding: 21px 0 13px;
  }
  .brand { grid-column: 1; grid-row: 1; gap: 9px; font-size: 13px; }
  .monogram { width: 31px; height: 31px; }
  .header-controls { display: contents; }
  .theme-toggle { grid-column: 2; grid-row: 1; }
  .site-nav {
    grid-column: 1 / -1;
    grid-row: 2;
    gap: clamp(24px,6vw,36px);
    margin-top: 0;
    font-size: 12px;
  }
  .site-nav a { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 0; }
}
@media (max-width: 360px) {
  .site-header { column-gap: 8px; }
  .brand { font-size: 12px; gap: 8px; }
  .theme-toggle { padding-inline: 9px; gap: 6px; }
}
@media print {
  :root, :root[data-theme] {
    color-scheme: light;
    --bg: #fff;
    --surface: #fff;
    --text: #111;
    --muted: #444;
    --accent: #333;
    --line: #ccc;
    --intro: #333;
    --intro-original: #333;
    --lede-original: #333;
    --strong-muted: #222;
    --compact-text: #333;
    --venue: #444;
  }
  body { background: #fff; }
  .site-header, .theme-toggle { display: none; }
  .page-head .lede, .compact-list li, .course p, .course-meta { color: #444; }
}

/* One title scale and starting position across every page. */
.hero { padding-top: 0; }
.hero-heading, .page-head { padding-top: 64px; }
.hero .eyebrow, .page-head .eyebrow {
  margin: 0 0 20px;
  font-size: 10px;
  line-height: 1.7;
  letter-spacing: .13em;
}
.page-title {
  margin: 0;
  font-family: var(--display);
  font-size: clamp(2.5rem, 5.4vw, 4.75rem);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -.065em;
  text-transform: none;
  white-space: normal;
}
.page-head .page-title { margin-bottom: 25px; }
@media (max-width: 760px) {
  .hero-heading, .page-head { padding-top: 42px; }
}
@media (max-width: 400px) {
  .hero .eyebrow, .page-head .eyebrow {
    font-size: 9px;
    letter-spacing: .04em;
  }
}
@media print {
  .hero-heading, .page-head { padding-top: 15px; }
  .page-title { font-size: 30pt; }
}
