@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
:root{--paper:#fafaf8;--ink:#202529;--muted:#59616b;--blue:#254fd2;--line:#dedfdc;--soft:#f0f2f8}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;background:var(--paper);color:var(--ink);font:18px/1.75 'DM Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--blue);text-decoration:none;text-underline-offset:4px}a:hover{text-decoration:underline}button,input{font:inherit}button,a,input{outline-offset:5px}::selection{background:#dce5ff}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Manrope,system-ui,sans-serif}main,.nav-wrap{max-width:1080px;margin:auto;padding:0 40px}.site-header{border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;background:rgba(250,250,248,.96);backdrop-filter:blur(16px)}.nav-wrap{height:82px;display:flex;align-items:center;justify-content:space-between}.wordmark{font:800 30px/1 Manrope,system-ui;letter-spacing:-2px;color:var(--ink)}.wordmark span{color:var(--blue)}nav{display:flex;align-items:center;gap:30px}nav a{font-size:15px;font-weight:550;color:#656a70}nav a.active{color:var(--blue)}nav .cv-nav{border:1px solid #d3d7df;padding:6px 16px;border-radius:5px;color:var(--ink)}.intro{padding:80px 0 76px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:78px;align-items:start}.eyebrow{font-size:12px;font-weight:700;letter-spacing:2px;color:var(--muted);margin-bottom:21px}h1{font-size:65px;font-weight:750;letter-spacing:-3.6px;line-height:1.1;margin:0 0 27px}h1>span:not(.name-dot){font-weight:450}.name-dot{color:var(--blue)}.lead{font-size:23px;line-height:1.5;font-weight:450;color:#3d434b;letter-spacing:-.35px;margin-bottom:23px}.intro-copy>p:not(.eyebrow):not(.lead){font-size:18px;line-height:1.8;color:#414a55;margin-bottom:21px}.intro-copy strong{font-weight:550;color:var(--ink)}.socials{display:flex;gap:25px;margin-top:28px;font-size:14px;font-weight:650}.portrait-block{margin-top:42px}.portrait-frame{border-radius:7px;overflow:hidden;background:#e8e9e4;box-shadow:14px 14px 0 #eeefeb}.portrait-frame img{width:100%;height:320px;object-fit:cover;object-position:50% 35%;display:block}.portrait-caption{display:flex;justify-content:space-between;color:var(--muted);font-size:13px;line-height:1.65;margin-top:28px}.caption-mark{color:var(--blue);font-size:27px;line-height:1}.research-section{border-top:1px solid var(--line);padding:45px 0 55px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}.section-heading .eyebrow{margin-bottom:8px}h2{font-size:32px;font-weight:650;line-height:1.3;letter-spacing:-1.1px;margin-bottom:0}.section-number{font:12px 'DM Sans',sans-serif;color:#606976}.interests{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.interests>a{border-top:2px solid #cbd5ed;padding:20px 0 0;position:relative;color:var(--ink);transition:border-color .2s}.interests>a:hover{border-color:var(--blue);text-decoration:none}.interest-num{font-size:12px;color:var(--blue);font-weight:650}.interests h3{font-size:19px;line-height:1.5;font-weight:650;letter-spacing:-.3px;margin:11px 0}.interests p{font-size:15px;line-height:1.75;color:var(--muted);max-width:250px;margin-bottom:0}.interest-arrow{position:absolute;right:2px;top:18px;font-size:22px;color:var(--blue)}.publications-section{padding:44px 0 50px;border-top:1px solid var(--line)}.publication-toolbar{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;margin:28px 0 15px}.filters{display:flex;flex-wrap:wrap;gap:6px}.filters button{font-size:13px;color:#656a70;border:1px solid transparent;padding:6px 11px;border-radius:4px;background:transparent;cursor:pointer;white-space:nowrap}.filters button[aria-pressed=true]{background:var(--blue);color:white}.filters button:hover:not([aria-pressed=true]){background:#eaece8}.search-label{position:relative;flex-shrink:0}.search-label input{width:190px;border:1px solid var(--line);background:transparent;border-radius:4px;padding:9px 32px 9px 12px;font-size:13px;color:var(--ink)}.search-label>span:last-child{position:absolute;right:10px;top:0px;font-size:22px;color:var(--muted);pointer-events:none}.result-count{font-size:12px;letter-spacing:.35px;color:#606976;margin-bottom:15px}.paper{display:grid;grid-template-columns:107px minmax(0,1fr);gap:23px;border-top:1px solid var(--line);padding:24px 0}.paper[hidden]{display:none}.paper-venue{padding-top:4px}.paper-venue span{font-size:12px;font-weight:650;line-height:1.6;display:inline-block;color:var(--blue);background:#eaf0fb;padding:4px 9px;border-radius:3px;max-width:107px}.paper h3{font-size:18px;line-height:1.55;font-weight:650;letter-spacing:-.25px;margin:0 0 7px}.paper h3 a{color:var(--ink)}.paper h3 a:hover{color:var(--blue)}.authors{font-size:15px;color:#59616b;line-height:1.75;margin-bottom:10px}.authors strong{font-weight:550;color:#444a52}.paper-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#606976;gap:16px}.paper-link{font-size:13px;font-weight:600;white-space:nowrap}.paper-link span{padding-left:4px}.preprint{font-size:12px}.scholar-link{display:inline-block;font-size:14px;font-weight:550;margin-top:20px}.scholar-link span{margin-left:12px}.empty{padding:35px;color:var(--muted);text-align:center;font-size:16px}.background{border-top:1px solid var(--line);padding:43px 0 50px}.background .eyebrow{margin-bottom:8px}.background h2{font-size:26px;margin-bottom:20px}.background>p:last-child{font-size:16px;line-height:1.9;max-width:760px;color:#505a66;margin:0}.background strong{font-weight:550;color:var(--ink)}footer{border-top:1px solid var(--line);padding:35px 0 38px;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:13px}footer p{color:#606976;font-size:13px;margin:5px 0 0}.footer-name{font-family:Manrope,sans-serif;font-size:16px;font-weight:700;color:var(--ink);letter-spacing:-.3px}.footer-name span{color:var(--blue)}.back-top{color:var(--muted)}.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}.skip{position:fixed;left:15px;top:-70px;padding:8px 18px;background:var(--blue);color:white;z-index:10}.skip:focus{top:12px}@media(min-width:1300px){main,.nav-wrap{max-width:1120px}.intro{gap:100px;grid-template-columns:minmax(0,1fr) 280px}.portrait-frame img{height:350px}}@media(max-width:800px){main,.nav-wrap{padding-left:25px;padding-right:25px}.intro{grid-template-columns:minmax(0,1fr) 200px;gap:35px;padding-top:55px}h1{font-size:52px}.portrait-frame img{height:265px}.socials{gap:16px}.publication-toolbar{align-items:flex-start;flex-direction:column}.search-label,.search-label input{width:100%}.interests{gap:20px}.interests h3{font-size:17px}}@media(max-width:570px){.nav-wrap{height:68px}nav{gap:12px}nav a{font-size:13px}nav .cv-nav{padding:4px 9px}.wordmark{font-size:26px}.intro{grid-template-columns:1fr;gap:32px;padding:43px 0}.intro-copy .eyebrow{font-size:10px;letter-spacing:1.4px}h1{font-size:56px;margin-bottom:23px}.lead{font-size:22px}.portrait-block{margin-top:0;display:grid;grid-template-columns:135px 1fr;gap:27px;align-items:center}.portrait-frame{box-shadow:8px 8px 0 #eeefeb}.portrait-frame img{height:164px}.portrait-caption{margin:0;gap:15px;font-size:12px}.caption-mark{display:none}.research-section,.publications-section{padding:33px 0 38px}h2{font-size:28px}.interests{grid-template-columns:1fr;gap:22px}.interests>a{display:grid;grid-template-columns:25px 1fr;column-gap:15px;padding-top:16px}.interest-num{grid-row:1/3;padding-top:6px}.interests h3{font-size:18px;margin:0 0 5px}.interests h3 br{display:none}.interests p{max-width:90%;grid-column:2;font-size:14px}.interest-arrow{top:13px}.section-heading{margin-bottom:23px}.filters{gap:3px}.filters button{font-size:12px;padding:6px 8px}.paper{grid-template-columns:1fr;gap:10px;padding:22px 0}.paper-venue{padding:0}.paper-venue span{max-width:100%;font-size:11px}.paper h3{font-size:17px}.authors{font-size:13px}.paper-meta{font-size:11px}.background{padding:32px 0}.background>p:last-child{font-size:15px}footer{flex-wrap:wrap;padding:28px 0;gap:22px}footer>div{width:100%}.back-top{margin-left:auto}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* News and recent publications */
.news-list{list-style:none;margin:0;padding:0}.news-list li{display:grid;grid-template-columns:125px minmax(0,1fr);gap:28px;padding:16px 0;border-top:1px solid var(--line)}.news-list time{font-size:14px;font-weight:600;color:var(--blue);padding-top:2px}.news-list p{font-size:16px;line-height:1.8;color:#414a55;margin:0}.recent-item{display:grid;grid-template-columns:38px minmax(0,1fr);gap:22px;padding:25px 0;border-top:1px solid var(--line)}.recent-number{font-size:12px;color:var(--blue);font-weight:600;padding-top:5px}.recent-item h3{font-size:18px;line-height:1.55;font-weight:650;letter-spacing:-.25px;margin:0 0 9px}.recent-item h3 a{color:var(--ink)}.recent-item h3 a:hover{color:var(--blue)}.recent-item .paper-meta{font-size:13px;line-height:1.6}.recent-work .section-heading,.news-section .section-heading{margin-bottom:22px}@media(max-width:570px){.news-list li{grid-template-columns:1fr;gap:6px;padding:18px 0}.news-list p{font-size:16px}.recent-item{grid-template-columns:25px minmax(0,1fr);gap:12px;padding:22px 0}.recent-item h3{font-size:17px}.recent-item .paper-meta{font-size:12px;flex-wrap:wrap}}

/* Optional right-hand publication thumbnails. */
.recent-item-with-figure{grid-template-columns:26px minmax(0,1fr) 220px;gap:20px;align-items:start}
.recent-item-with-figure>div{min-width:0}
.recent-figure{width:220px;max-width:220px;margin:3px 0 0;border:1px solid #dce1e8;border-radius:7px;overflow:hidden;background:#fff}
.recent-figure-link{display:flex;align-items:center;justify-content:center;height:120px;padding:8px;background:#fff}
.recent-figure-link:hover{background:#f7f9fd}
.recent-figure img{display:block;width:100%;max-width:202px;height:auto;max-height:104px;object-fit:contain}
.recent-figure figcaption{padding:5px 8px;border-top:1px solid #e7eaf0;background:#f5f7fb;font-size:10px;line-height:1.5;text-align:right}
.recent-figure figcaption>span{display:none}
.recent-figure figcaption a{font-weight:500;white-space:nowrap}
@media(max-width:700px){.recent-item-with-figure{grid-template-columns:20px minmax(0,1fr) 140px;gap:12px}.recent-item-with-figure .recent-figure{width:140px;max-width:140px}.recent-figure-link{height:85px}.recent-figure img{max-width:122px;max-height:69px}}
@media(max-width:480px){.recent-item-with-figure{grid-template-columns:20px minmax(0,1fr)}.recent-item-with-figure .recent-figure{grid-column:2;justify-self:end;margin-top:0}}

/* Native, keyboard-accessible paper preview overlay. */
.paper-dialog{width:min(1080px,calc(100vw - 64px));max-width:1080px;max-height:calc(100dvh - 64px);padding:0;border:1px solid rgba(255,255,255,.7);border-radius:16px;background:#fafaf8;color:var(--ink);box-shadow:0 30px 100px rgba(12,20,38,.3);overflow:auto;overscroll-behavior:contain}
.paper-dialog::backdrop{background:rgba(19,27,43,.68);backdrop-filter:blur(7px)}
.paper-dialog[open]{animation:paper-dialog-in .22s ease-out}
.paper-dialog[open]::backdrop{animation:paper-backdrop-in .22s ease-out}
.paper-dialog-header{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:28px;padding:30px 36px 24px;border-bottom:1px solid var(--line)}
.paper-dialog-header .eyebrow{font-size:11px;margin:0 0 10px;color:var(--blue)}
.paper-dialog-header h2{font-size:27px;line-height:1.4;letter-spacing:-.7px;max-width:820px}
.paper-dialog-close{flex-shrink:0;width:36px;height:36px;display:grid;place-items:center;border:1px solid #d7dce4;border-radius:50%;background:#fff;color:#414a55;font-size:26px;line-height:1;cursor:pointer}
.paper-dialog-close:hover{background:#eaf0fb;color:var(--blue)}
.paper-dialog-image{padding:30px 24px;background:#fff;border-bottom:1px solid var(--line)}
.paper-dialog-image img{display:block;width:100%;height:auto;max-height:42vh;object-fit:contain}
.paper-dialog-abstract{max-width:880px;padding:30px 36px 36px;margin:auto}
.paper-dialog-abstract-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}
.paper-dialog-abstract h3{font-size:20px;font-weight:650;margin:0;letter-spacing:-.3px}
.paper-dialog-abstract-heading>a{font-size:13px;font-weight:600;white-space:nowrap}
.paper-dialog-abstract p{font-size:17px;line-height:1.85;color:#414a55;margin:0 0 18px}
.paper-dialog-abstract p:last-child{margin-bottom:0}
@keyframes paper-dialog-in{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes paper-backdrop-in{from{background:rgba(19,27,43,0);backdrop-filter:blur(0)}to{background:rgba(19,27,43,.68);backdrop-filter:blur(7px)}}
@media(max-width:600px){.paper-dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 32px);border-radius:12px}.paper-dialog-header{padding:22px 20px 18px;gap:14px}.paper-dialog-header h2{font-size:21px}.paper-dialog-header .eyebrow{font-size:9px;letter-spacing:1.4px}.paper-dialog-close{width:32px;height:32px}.paper-dialog-image{padding:22px 10px}.paper-dialog-abstract{padding:22px 20px 26px}.paper-dialog-abstract p{font-size:16px;line-height:1.8}.paper-dialog-abstract-heading{margin-bottom:16px}}
@media(prefers-reduced-motion:reduce){.paper-dialog[open],.paper-dialog[open]::backdrop{animation:none}}

/* A sentence-length introduction needs quieter typography than section labels. */
.intro-copy > .eyebrow{font-size:15px;line-height:1.55;font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted);max-width:38ch;text-wrap:balance;margin-bottom:24px}
@media(max-width:570px){.intro-copy > .eyebrow{font-size:14px;max-width:35ch;margin-bottom:20px}}
