
@font-face{font-family:Vollkorn;src:url(assets/fonts/vollkorn-latin-400-normal.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Vollkorn;src:url(assets/fonts/vollkorn-latin-400-italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Vollkorn;src:url(assets/fonts/vollkorn-latin-600-normal.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Vollkorn;src:url(assets/fonts/vollkorn-latin-600-italic.woff2) format('woff2');font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:Newsreader;src:url(assets/fonts/newsreader-latin-400-normal.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Newsreader;src:url(assets/fonts/newsreader-latin-400-italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Newsreader;src:url(assets/fonts/newsreader-latin-600-normal.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Newsreader;src:url(assets/fonts/newsreader-latin-600-italic.woff2) format('woff2');font-weight:600;font-style:italic;font-display:swap}
/* Layout: fixed identity column on the left, one long reading column on the right; stacks on phones. No external fonts or scripts. */
:root{--bg:#fafbfb;--panel:#f0f3f3;--ink:#17222b;--muted:#5b6872;--line:#d9dfe1;--accent:#0e5a63;--ctr:#565a8f;
--serif:Vollkorn,"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Songti SC",serif;
--sans:Newsreader,Georgia,"Songti SC",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif}
@media (prefers-color-scheme:dark){:root{--bg:#11181d;--panel:#182228;--ink:#e6ecee;--muted:#9aa8b0;--line:#2a373e;--accent:#7cc7cf;--ctr:#a9acd6;color-scheme:dark}}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font:17.5px/1.6 var(--sans)}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.wrap{max-width:1140px;margin:0 auto;padding-inline:24px;display:grid;grid-template-columns:250px minmax(0,1fr);gap:64px}
aside{position:sticky;top:0;align-self:start;padding-block:56px 32px;display:flex;flex-direction:column;gap:20px}
.photo{width:215px;aspect-ratio:5/7;object-fit:cover;border-radius:3px;background:var(--panel);max-width:100%}
h1{font:600 2.1rem/1.1 var(--serif);margin:0;letter-spacing:.01em}
.role{color:var(--muted);font-size:.93rem;line-height:1.5;margin:0}
nav{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:18px}
nav a{color:var(--ink);font-size:.95rem}
nav a:hover{color:var(--accent)}
.contact{font-size:.88rem;color:var(--muted);display:flex;flex-direction:column;gap:3px;border-top:1px solid var(--line);padding-top:18px}
main{padding-block:56px 80px;display:flex;flex-direction:column;gap:56px;min-width:0}
section{scroll-margin-top:24px}
h2{font:600 1.45rem/1.2 var(--serif);margin:0 0 18px;padding-bottom:10px;border-bottom:1px solid var(--line);text-wrap:balance}
h3{font:600 .8rem/1.3 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:26px 0 10px}
p{margin:0 0 14px;text-align:justify;hyphens:auto;-webkit-hyphens:auto}
aside p{text-align:left;hyphens:manual}
.lead{font:1.2rem/1.6 var(--serif)}
ul{list-style:none;margin:0;padding:0}
.papers{display:flex;flex-direction:column;gap:16px}
.papers .t{display:block;font:600 1.04rem/1.4 var(--serif);color:var(--ink)}
.papers a.t:hover{color:var(--accent)}
.papers .m{display:block;color:var(--muted);font-size:.92rem}
.inst{display:grid;grid-template-columns:210px minmax(0,1fr);gap:8px 28px;padding:16px 0;border-bottom:1px solid var(--line);align-items:baseline}
.inst:last-child{border-bottom:0}
.inst h3{margin:0;line-height:1.6}
.rows li{padding:2px 0;font-size:.97rem}
.rows .d,.media .d{color:var(--muted);font-size:.86rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.media li{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);align-items:baseline}
.media .o{font-weight:600;font-size:.86rem;color:var(--muted)}
.media .t{color:var(--ink);font:1.04rem/1.45 var(--serif)}
.media .t:hover{color:var(--accent)}
.btn{display:inline-block;border:1px solid var(--accent);padding:8px 16px;border-radius:3px;font-size:.93rem}
.btn:hover{background:var(--accent);color:var(--bg);text-decoration:none}
.cite{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}
.cite i{display:block;height:7px;min-width:3px;border-radius:2px;background:var(--accent);opacity:.8}
.cite b{font-weight:500}
.metrics{color:var(--muted);font-size:.9rem;margin:-6px 0 4px}
.mail{display:inline-flex;align-items:center;gap:7px}
.cvl li{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;padding:4px 0;font-size:.96rem;align-items:baseline}
.cvl .d{color:var(--muted);font-size:.86rem;font-variant-numeric:tabular-nums}
.bio{font-size:1.06rem;line-height:1.75}
.ctr{color:var(--ctr);display:block}
.grp{font:italic 600 1.22rem/1.35 var(--serif);text-align:left;hyphens:manual;color:var(--ink);margin:52px 0 2px;padding:14px 16px;background:var(--panel);border-radius:3px}
h2+.grp{margin-top:6px}
.btnrow{display:flex;flex-wrap:wrap;gap:12px;text-align:left}
.btnrow .btn{font-weight:600}
#research h3{font-size:1.2rem;letter-spacing:.06em;color:var(--ink);margin:48px 0 18px;padding:12px 16px;background:var(--panel);border-radius:3px}
#research h2+h3,#research .metrics+h3{margin-top:6px}
.papers .m i{font-weight:600}
#about h3{margin:34px 0 12px}
.feat{color:var(--muted);font:1.18rem/1.7 var(--serif);text-align:left;hyphens:manual;margin-bottom:8px}
.outlets{font-style:italic;color:var(--muted)}
.feat b{font-style:normal;color:var(--accent);font-weight:400;padding:0 3px}
.cvl li>span:last-child{text-align:justify;hyphens:auto;-webkit-hyphens:auto}
.small{color:var(--muted);font-size:.92rem}
footer{color:var(--muted);font-size:.82rem;border-top:1px solid var(--line);padding-top:18px}
@media (max-width:820px){
.wrap{grid-template-columns:1fr;gap:0;padding-inline:20px}
aside{position:static;padding-block:32px 8px}
.photo{width:160px}
nav{flex-direction:row;flex-wrap:wrap;gap:6px 18px}
main{padding-block:32px 56px;gap:44px}
.media li{grid-template-columns:1fr;gap:2px}
.inst{grid-template-columns:1fr;gap:6px}
.cvl li{grid-template-columns:1fr;gap:0;padding:6px 0}
}
nav a[aria-current]{color:var(--accent);font-weight:600}
@media (max-width:820px){body.sub .photo{display:none}}
