:root {
  --paper: #faf9f6;
  --paper-2: #f3f1ec;
  --ink: #20201e;
  --muted: #696762;
  --faint: #918e87;
  --rule: #d9d5cd;
  --accent: #315b57;
  --accent-soft: #e8efed;
  --max: 1060px;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:var(--sans); line-height:1.62; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
a { color:inherit; text-decoration:none; }
a:hover { color:var(--accent); }
img { max-width:100%; display:block; }
.site { width:min(calc(100% - 40px),var(--max)); margin:0 auto; }
.site-header { display:grid; grid-template-columns:1fr auto; gap:28px; align-items:end; padding:34px 0 18px; border-bottom:1px solid var(--rule); }
.identity { display:inline-block; }
.wordmark { font-family:var(--serif); font-size:25px; line-height:1; letter-spacing:-.02em; font-weight:700; }
.wordmark span { font-weight:400; color:var(--muted); }
.identity-note { margin-top:7px; color:var(--muted); font-size:12px; letter-spacing:.04em; }
nav { display:flex; align-items:center; gap:21px; flex-wrap:wrap; justify-content:flex-end; }
nav a { position:relative; font-size:13px; color:var(--muted); padding:3px 0; }
nav a::after { content:""; position:absolute; left:0; right:100%; bottom:-5px; height:1px; background:var(--accent); transition:right .16s ease; }
nav a:hover::after,nav a.active::after { right:0; }
nav a.active { color:var(--ink); }
nav a.external::after { display:none; }
main { padding-bottom:34px; }
.hero { min-height:510px; display:grid; grid-template-columns:minmax(0,1fr) 230px; gap:78px; align-items:center; padding:72px 0 66px; border-bottom:1px solid var(--rule); }
.eyebrow { margin:0 0 17px; color:var(--accent); font-size:11px; font-weight:650; letter-spacing:.16em; text-transform:uppercase; }
.hero h1,.page-header h1 { font-family:var(--serif); font-weight:500; letter-spacing:-.035em; }
.hero h1 { max-width:760px; margin:0; font-size:clamp(44px,6.3vw,72px); line-height:.99; }
.hero .dek { max-width:680px; margin:28px 0 0; color:var(--muted); font-family:var(--serif); font-size:20px; line-height:1.55; }
.hero .affiliation { margin:19px 0 0; color:var(--muted); font-size:13px; }
.hero .affiliation a { border-bottom:1px solid var(--rule); }
.hero-links,.page-actions,.inline-links { display:flex; flex-wrap:wrap; gap:18px 26px; margin-top:30px; }
.text-link { display:inline-flex; gap:8px; align-items:baseline; font-size:13px; font-weight:650; }
.text-link::after { content:"→"; font-weight:400; color:var(--faint); transition:transform .15s ease; }
.text-link:hover::after { transform:translateX(3px); }
.text-link.external::after { content:"↗"; }
.portrait-wrap { align-self:center; }
.portrait { width:210px; aspect-ratio:1/1; object-fit:cover; object-position:center 20%; border-radius:50%; filter:saturate(.76) contrast(.98); border:1px solid var(--rule); }
.portrait-caption { margin-top:11px; color:var(--muted); font-size:11px; line-height:1.5; }
.portrait-caption strong { color:var(--ink); font-weight:650; }
.section { display:grid; grid-template-columns:190px minmax(0,1fr); gap:42px; padding:47px 0; border-bottom:1px solid var(--rule); }
.section:last-child { border-bottom:0; }
.section-title { margin:0; font-size:12px; font-weight:650; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.section-body { min-width:0; }
.section-lead { margin:-5px 0 25px; max-width:720px; font-family:var(--serif); font-size:21px; line-height:1.55; }
.prose { max-width:770px; font-family:var(--serif); font-size:18px; line-height:1.72; }
.prose p { margin:0 0 1.2em; }
.prose p:last-child { margin-bottom:0; }
.prose a,.inline-text-link { border-bottom:1px solid var(--rule); }
.page-header { padding:65px 0 45px; border-bottom:1px solid var(--rule); }
.page-header h1 { margin:0; font-size:clamp(42px,5vw,61px); line-height:1.03; }
.page-header p { max-width:720px; margin:21px 0 0; color:var(--muted); font-family:var(--serif); font-size:19px; }
.list { list-style:none; margin:0; padding:0; }
.list-item { padding:18px 0; border-top:1px solid var(--rule); }
.list-item:first-child { border-top:0; padding-top:0; }
.item-head { display:flex; justify-content:space-between; gap:22px; align-items:baseline; }
.item-title { font-family:var(--serif); font-size:18px; font-weight:600; line-height:1.35; }
.item-kicker { color:var(--faint); font-size:11px; white-space:nowrap; }
.item-meta { margin-top:5px; color:var(--muted); font-size:12px; line-height:1.55; }
.item-links { display:flex; flex-wrap:wrap; gap:14px; margin-top:8px; }
.item-links a { font-size:11px; font-weight:650; border-bottom:1px solid var(--rule); }
.degree-list { list-style:none; padding:0; margin:0; }
.degree-list li { display:grid; grid-template-columns:80px minmax(0,1fr); gap:20px; padding:14px 0; border-top:1px solid var(--rule); }
.degree-list li:first-child { border-top:0; padding-top:0; }
.degree { font-family:var(--serif); font-size:17px; font-weight:600; }
.degree-meta { color:var(--muted); font-size:12px; }
.research-item { padding:21px 0; border-top:1px solid var(--rule); }
.research-item:first-child { border-top:0; padding-top:0; }
.research-item h3 { margin:0 0 6px; font-family:var(--serif); font-size:20px; font-weight:600; }
.research-item p { margin:4px 0; color:var(--muted); font-size:13px; max-width:730px; }
.awards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:42px; list-style:none; padding:0; margin:0; }
.awards li { padding:13px 0; border-top:1px solid var(--rule); }
.awards li:nth-child(-n+2) { border-top:0; padding-top:0; }
.award-title { font-family:var(--serif); font-size:16px; font-weight:600; }
.award-meta { margin-top:3px; color:var(--muted); font-size:11px; }
.work-index { list-style:none; padding:0; margin:0; }
.work-index li { display:grid; grid-template-columns:160px minmax(0,1fr); gap:28px; padding:24px 0; border-top:1px solid var(--rule); }
.work-index li:first-child { border-top:0; padding-top:0; }
.work-index .label { color:var(--faint); font-size:12px; }
.work-index h2 { margin:0 0 6px; font-family:var(--serif); font-size:24px; font-weight:600; }
.work-index p { margin:0; color:var(--muted); font-size:13px; max-width:680px; }
.visual-list { list-style:none; padding:0; margin:0; }
.visual-item { display:grid; grid-template-columns:145px minmax(0,1fr); gap:28px; padding:25px 0; border-top:1px solid var(--rule); align-items:start; }
.visual-item:first-child { border-top:0; padding-top:0; }
.visual-thumb { width:145px; height:118px; object-fit:contain; background:var(--paper-2); border:1px solid var(--rule); padding:7px; }
.visual-item h3 { margin:0 0 7px; font-family:var(--serif); font-size:19px; line-height:1.35; font-weight:600; }
.visual-item .authors { color:var(--ink); font-size:12px; }
.visual-item .venue { margin-top:4px; color:var(--muted); font-size:12px; line-height:1.5; }
.visual-item .doi { display:inline-block; margin-top:7px; font-size:11px; font-weight:650; border-bottom:1px solid var(--rule); }
.resource-pair { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.resource-image { width:100%; max-height:250px; object-fit:contain; background:var(--paper-2); border:1px solid var(--rule); padding:12px; }
.gallery { columns:3 260px; column-gap:16px; }
.gallery a { display:block; break-inside:avoid; margin:0 0 16px; }
.gallery img { width:100%; height:auto; border:1px solid var(--rule); filter:saturate(.82); transition:filter .18s ease, transform .18s ease; }
.gallery a:hover img { filter:saturate(1); transform:translateY(-2px); }
.contact-line { font-family:var(--serif); font-size:19px; line-height:1.55; }
.contact-line a { border-bottom:1px solid var(--rule); }
.site-footer { display:flex; justify-content:space-between; gap:24px; flex-wrap:wrap; padding:23px 0 38px; border-top:1px solid var(--rule); color:var(--muted); font-size:11px; }
.footer-links { display:flex; gap:17px; flex-wrap:wrap; }
.footer-links a { border-bottom:1px solid transparent; }
.footer-links a:hover { border-color:var(--rule); }
@media (max-width:800px) {
 .site { width:min(calc(100% - 30px),var(--max)); }
 .site-header { grid-template-columns:1fr; align-items:start; gap:16px; padding-top:25px; }
 nav { justify-content:flex-start; gap:15px 19px; }
 .hero { grid-template-columns:1fr 155px; gap:35px; min-height:0; padding:55px 0; }
 .portrait { width:155px; }
 .section { grid-template-columns:145px minmax(0,1fr); gap:28px; }
 .work-index li { grid-template-columns:120px minmax(0,1fr); }
}
@media (max-width:600px) {
 .site { width:min(calc(100% - 26px),var(--max)); }
 .identity-note { display:none; }
 nav { flex-wrap:nowrap; overflow-x:auto; padding-bottom:7px; scrollbar-width:none; }
 nav::-webkit-scrollbar { display:none; }
 .hero { grid-template-columns:1fr; gap:36px; padding:48px 0 42px; }
 .portrait-wrap { display:grid; grid-template-columns:120px 1fr; gap:17px; align-items:end; }
 .portrait { width:120px; }
 .portrait-caption { margin:0 0 2px; }
 .hero .dek { font-size:18px; }
 .section { grid-template-columns:1fr; gap:20px; padding:35px 0; }
 .page-header { padding:48px 0 35px; }
 .page-header p { font-size:17px; }
 .item-head { display:block; }
 .item-kicker { display:block; margin-top:3px; }
 .degree-list li { grid-template-columns:64px minmax(0,1fr); gap:14px; }
 .awards { grid-template-columns:1fr; }
 .awards li:nth-child(2) { border-top:1px solid var(--rule); padding-top:13px; }
 .work-index li { grid-template-columns:1fr; gap:6px; }
 .visual-item { grid-template-columns:96px minmax(0,1fr); gap:17px; }
 .visual-thumb { width:96px; height:88px; }
 .resource-pair { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) { html{scroll-behavior:auto;} nav a::after,.text-link::after,.gallery img{transition:none;} }
