/* Website v0.04 · 2026-10-14. Static, responsive, light by default. */
:root{color-scheme:light;--bg:#fff;--surface:#f4f7fb;--ink:#172133;--muted:#536176;--accent:#2457a4;--line:#dce4ef;--font:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;--measure:1100px;--gutter:clamp(22px,5vw,60px)}
:root[data-theme=dark]{color-scheme:dark;--bg:#111821;--surface:#192535;--ink:#edf1f7;--muted:#b1bfd0;--accent:#abcaff;--line:#34475e}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:28px}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.72 var(--font);letter-spacing:-.01em;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}a{color:var(--accent);text-underline-offset:4px;text-decoration-thickness:1px;overflow-wrap:anywhere}a:hover{text-decoration:underline}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img,svg{max-width:100%;height:auto}img{display:block}[hidden]{display:none!important}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:600;text-wrap:balance;letter-spacing:-.035em}h1{font-size:48px;line-height:1.13}h2{font-size:32px;line-height:1.25}h3{font-size:19px;line-height:1.42;letter-spacing:-.018em}p+p{margin-top:15px}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.wrap{width:min(var(--measure),calc(100% - 2*var(--gutter)));margin-inline:auto}.prose{max-width:70ch}.muted{color:var(--muted)}.eyebrow{font-size:12px;font-weight:600;line-height:1.5;letter-spacing:.11em;text-transform:uppercase;color:var(--accent);margin-bottom:16px}.lede{font-size:21px;line-height:1.53;letter-spacing:-.025em}.small-note,.site-note{font-size:14px;color:var(--muted)}.site-note{max-width:75ch;margin-top:44px;padding-top:25px;border-top:1px solid var(--line)}.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:16px;top:-120px;z-index:100;background:var(--bg);padding:12px 20px}.skip-link:focus{top:12px}.preview-banner{background:var(--surface);border-bottom:1px solid var(--line);font-size:12px;line-height:1.5;color:var(--muted);padding:10px 0}.preview-banner b{font-size:11px;letter-spacing:.1em;margin-right:18px;color:var(--ink)}
/* Navigation and explicit theme preference. */
.site-header{background:var(--bg);position:relative;z-index:10}.header-row{min-height:90px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);position:relative}.brand{font-size:22px;font-weight:600;letter-spacing:-.04em;color:var(--ink);text-decoration:none!important;white-space:nowrap}.header-controls{display:flex;gap:22px;align-items:center}.site-nav{display:flex;gap:23px;align-items:center;font-size:14px;line-height:1.45}.site-nav a{position:relative;display:flex;align-items:center;min-height:46px;color:var(--muted);padding:10px 0;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--ink)}.site-nav a[aria-current=page]::after{content:"";position:absolute;bottom:1px;left:0;right:0;height:2px;background:var(--accent)}.theme-control{display:none;align-items:center;border-left:1px solid var(--line);padding-left:16px;color:var(--muted)}.js .theme-control{display:flex}.theme-control svg{width:16px;height:16px;margin-right:3px}.theme-control select{min-height:44px;font-size:12px;font-weight:500;max-width:84px;background:var(--bg);color:var(--muted);border:0;border-radius:4px;padding:8px 2px;cursor:pointer}.menu-toggle{display:none;min-height:44px;background:none;border:1px solid var(--line);border-radius:7px;padding:8px 12px;align-items:center;gap:8px;color:var(--ink);font-size:13px}.menu-toggle svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7}
main{min-height:55vh}.view{padding:52px 0 72px}.home{display:grid;grid-template-columns:minmax(0,1fr) 225px;gap:78px;align-items:start;padding:15px 0 66px}.home-text h1{font-size:64px;line-height:1.06;letter-spacing:-.05em;margin-bottom:27px}.home-text>p{max-width:59ch}.home-text .lede{margin-bottom:21px}.home-text .small-note{margin-top:14px}.portrait-card{width:225px;margin-top:66px}.portrait-card img{width:100%;border:0;border-radius:0;box-shadow:none}.profile-caption{font-size:11px;color:var(--muted);margin-top:10px;line-height:1.5}.focus-aside{margin-top:78px;border-top:2px solid var(--accent);padding-top:18px}.focus-aside .eyebrow{margin-bottom:16px;color:var(--muted);font-size:11px}.focus-aside p:not(.eyebrow){font-size:19px;line-height:1.5;letter-spacing:-.02em;padding-bottom:15px;margin-top:14px;border-bottom:1px solid var(--line)}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:27px}.btn{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:14px;padding:10px 19px;border-radius:7px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;font-weight:500;text-decoration:none!important;transition:background .16s,border-color .16s}.btn:hover{border-color:var(--accent);background:var(--surface)}.btn.primary{background:var(--accent);color:white;border-color:var(--accent)}[data-theme=dark] .btn.primary{color:#112237}.btn.small{font-size:13px;min-height:44px}
/* One continuous panel: heading, descriptions and arrows share the background. */
.research-explore{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-top:8px}.section-intro{padding:34px 34px 28px}.section-intro .eyebrow{margin-bottom:11px}.section-intro>p:last-child{color:var(--muted);font-size:16px;max-width:65ch;margin-top:12px}.project-jumps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.project-jump{display:flex;flex-direction:column;min-width:0;position:relative;padding:26px 34px 27px;min-height:229px;border-top:1px solid var(--line);background:transparent;text-decoration:none!important;color:var(--ink);transition:background-color .15s}.project-jump:nth-child(even){border-left:1px solid var(--line)}.project-jump:hover{background:color-mix(in srgb,var(--surface) 92%,var(--accent) 8%)}.jump-index{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:10px}.project-jump h3{font-size:23px;line-height:1.3;max-width:30ch}.project-jump p{font-size:15px;line-height:1.65;color:var(--muted);margin-top:11px;max-width:43ch}.jump-action{margin-top:auto;padding-top:21px;display:flex;justify-content:space-between;align-items:center;gap:18px;font-size:13px;color:var(--accent);font-weight:500}.jump-action>span{font-size:24px;line-height:1;flex:none}.background-section{margin-top:64px}.background-section>.section-intro{padding:0 0 24px}.timeline-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:28px;border-top:1px solid var(--line);padding:23px 0}.date{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.timeline-row h3{font-size:19px}.timeline-row div>p{font-size:15px;color:var(--muted);margin-top:5px}
.page-head{max-width:820px;padding:14px 0 35px}.page-head h1{margin-bottom:26px}.page-head .lede{max-width:64ch}.page-head>p:not(.eyebrow){max-width:70ch}.page-head>p+p{margin-top:17px}.section-nav{display:flex;flex-wrap:wrap;gap:9px 13px;padding:0 0 15px;max-width:100%}.section-nav a{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;background:var(--surface);border:1px solid var(--line);border-radius:6px;font-size:13px;line-height:1.45;text-decoration:none}.project{padding-top:38px;margin-top:36px;border-top:1px solid var(--line);scroll-margin-top:26px}.project>header{max-width:850px}.project .eyebrow{margin-bottom:13px}.project h2{max-width:42ch}.project-summary{margin-top:17px;color:var(--muted);font-size:18px;line-height:1.6;max-width:72ch}.project-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:50px;margin-top:29px}.project-columns h3{font-size:16px;margin-bottom:13px}.project-columns p{font-size:16px;line-height:1.75}.project>.prose{margin-top:23px}.project-links{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:24px}.project-links a{font-size:14px;line-height:1.55;min-height:44px;display:inline-flex;align-items:center;gap:8px;text-decoration:none}.project-links a:hover{text-decoration:underline}.project-links a span{font-size:19px}.project-columns strong{font-weight:600}.driving-section{margin-top:4px;border-top:0;padding:26px 30px 30px;background:var(--surface);border-radius:12px}.publication-group{margin-top:31px}.publication-group>h2{font-size:23px;border-bottom:1px solid var(--line);padding-bottom:16px}.publication-list{list-style:none;padding:0;margin:0}.publication{display:grid;grid-template-columns:44px minmax(0,1fr);gap:18px;padding:23px 0;border-bottom:1px solid var(--line);scroll-margin-top:30px}.pub-id{font-size:13px;color:var(--muted);padding-top:4px;font-variant-numeric:tabular-nums}.pub-title{font-size:19px;line-height:1.5;letter-spacing:-.015em;text-wrap:initial;font-weight:600}.pub-title a{color:var(--ink);text-decoration:none}.pub-title a:hover{color:var(--accent);text-decoration:underline}.pub-authors{font-size:14px;color:var(--muted);margin-top:9px}.pub-venue{font-size:14px;margin-top:7px;line-height:1.6}.pub-note{font-size:12px;color:var(--muted);margin-top:7px}.pub-links{display:flex;gap:20px;flex-wrap:wrap;margin-top:8px}.pub-links a{font-size:13px;min-height:40px;display:inline-flex;align-items:center}.status-label{display:inline-block;margin-top:10px;padding:4px 9px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:12px;border-radius:4px}
.contact-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:65px;margin:18px 0 55px}.contact-primary{border-top:2px solid var(--accent);padding-top:25px}.email-link{font-size:clamp(21px,2.7vw,29px);font-weight:500;line-height:1.55;letter-spacing:-.03em}.copy-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:24px 0}.copy-row button{display:none}.js .copy-row button{display:inline-flex}#copy-status{font-size:13px;color:var(--muted)}.contact-primary>p:last-child{font-size:15px;color:var(--muted)}.contact-secondary{border-top:1px solid var(--line);padding-top:25px}.contact-secondary h2{font-size:21px;margin-bottom:18px}.contact-secondary>a{display:block;padding:13px 0;font-size:15px;border-bottom:1px solid var(--line);min-height:48px}
/* Page navigation is a pair of large links, not fine-print arrows. */
.site-footer{background:var(--bg);border-top:1px solid var(--line);padding:37px 0 28px}.footer-kicker{font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:18px}.pager{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:35px}.pager-card{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:18px;padding:22px 24px;min-height:98px;border:1px solid var(--line);border-radius:9px;background:var(--surface);text-decoration:none!important;color:var(--ink)}.pager-card.next{grid-template-columns:minmax(0,1fr) 30px}.pager-card:hover{border-color:var(--accent)}.pager-card .arrow{font-size:27px;color:var(--accent);line-height:1}.pager-copy{display:flex;flex-direction:column;gap:4px}.pager-label{font-size:11px;line-height:1.4;color:var(--muted);text-transform:uppercase;letter-spacing:.075em}.pager-copy strong{font-size:22px;line-height:1.3;font-weight:600;letter-spacing:-.025em}.footer-bottom{display:flex;gap:20px;justify-content:space-between;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--muted)}.footer-bottom a{font-size:14px}.preview-footnote{margin-top:23px;border-top:1px solid var(--line);padding-top:16px;color:var(--muted);font-size:12px;line-height:1.6;max-width:95ch}
@media(max-width:1050px){.site-nav{gap:16px;font-size:13px}.header-controls{gap:14px}.home{gap:43px;grid-template-columns:minmax(0,1fr) 205px}.portrait-card{width:205px}.home-text h1{font-size:57px}.project-columns{gap:35px}.header-row{gap:20px}}
@media(max-width:920px){.header-row{min-height:76px}.menu-toggle{display:flex}.js .site-nav[data-open=false]{display:none}.site-nav{position:absolute;top:100%;left:0;right:0;background:var(--bg);display:flex;flex-direction:column;align-items:stretch;gap:0;border:1px solid var(--line);padding:12px 20px 17px;font-size:15px;box-shadow:0 12px 20px #00000008}.site-nav a{padding:13px 4px;border-bottom:1px solid var(--line)}.site-nav a[aria-current=page]::after{display:none}.site-nav a[aria-current=page]{font-weight:600;color:var(--accent)}.site-nav a:last-child{border:0}.theme-control{padding-left:0;border:0}.brand{font-size:21px}.home-text h1{font-size:51px}.home-text .lede{font-size:20px}}
@media(max-width:700px){:root{--gutter:24px}body{font-size:16px}.view{padding:30px 0 49px}.home{grid-template-columns:1fr;gap:27px;padding:12px 0 38px}.home-text h1{font-size:46px;margin-bottom:23px}.home-text .lede{font-size:20px;line-height:1.5}.eyebrow{font-size:11px}.portrait-card{width:180px;margin-top:0}.focus-aside{margin-top:0;padding-top:18px;display:flex;flex-wrap:wrap;gap:12px 22px}.focus-aside .eyebrow{flex-basis:100%;margin-bottom:0}.focus-aside p:not(.eyebrow){font-size:16px;margin-top:0;padding-bottom:0;border:0}.actions{gap:10px}.btn{font-size:13px;padding:10px 15px}.research-explore{border-radius:11px;margin-top:0}.section-intro{padding:26px 23px 24px}.section-intro h2{font-size:28px}.section-intro>p:last-child{font-size:15px}.project-jumps{grid-template-columns:1fr}.project-jump{min-height:0;padding:23px}.project-jump:nth-child(even){border-left:0}.project-jump h3{font-size:23px}.project-jump p{font-size:15px}.jump-action{padding-top:21px}.background-section{margin-top:43px}.timeline-row{grid-template-columns:1fr;gap:7px;padding:21px 0}.timeline-row h3{font-size:18px}.page-head{padding:14px 0 24px}.page-head h1{font-size:37px;line-height:1.15;margin-bottom:23px}.page-head .lede{font-size:19px}.project{padding-top:28px;margin-top:29px}.project h2{font-size:27px}.project-summary{font-size:17px}.project-columns{grid-template-columns:1fr;gap:25px;margin-top:23px}.project-links{gap:7px 18px}.section-nav{gap:8px}.section-nav a{font-size:12px;padding:8px 11px}.driving-section{padding:25px 23px;margin-top:4px}.publication{grid-template-columns:30px minmax(0,1fr);gap:10px;padding:22px 0}.pub-title{font-size:18px}.publication-group>h2{font-size:22px}.contact-grid{grid-template-columns:1fr;gap:35px;margin-top:4px;margin-bottom:32px}.email-link{font-size:23px}.site-footer{padding-top:29px}.pager{grid-template-columns:1fr;gap:12px;margin-bottom:29px}.pager-card{padding:19px 21px;min-height:90px}.pager-copy strong{font-size:21px}.footer-bottom{flex-direction:column;align-items:flex-start;gap:9px}}
@media(max-width:380px){:root{--gutter:20px}.brand{font-size:19px}.header-controls{gap:8px}.theme-control svg{display:none}.theme-control select{font-size:11px;max-width:70px}.menu-toggle{padding:8px 9px}.home-text h1{font-size:41px}.page-head h1{font-size:33px}.email-link{font-size:20px}.project-jump h3{font-size:21px}}
html:not(.js) .header-row{flex-wrap:wrap;padding-block:17px}html:not(.js) .header-controls{width:100%}html:not(.js) .site-nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;padding:0;border:0;box-shadow:none;gap:12px 18px}html:not(.js) .menu-toggle{display:none}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{body{font-size:11pt;color:#111;background:#fff}.preview-banner,.site-header,.site-footer,.actions,.copy-row,.section-nav{display:none!important}.wrap{width:100%}.view{padding:0;display:block!important}.view[hidden]{display:block!important}.project,.publication{break-inside:avoid}.home{display:block}.portrait-card{display:none}a{color:inherit}h1{font-size:28pt}h2{font-size:18pt}}
/* Allow narrow effective widths under browser/text zoom; do not hide overflow. */
.home-text,.header-controls,.pager-copy,.project-columns>section{min-width:0}
.portrait-card{max-width:100%}
@media(max-width:700px){.header-row{flex-wrap:wrap;row-gap:8px;padding-block:13px}.header-controls{max-width:100%;flex-wrap:wrap;row-gap:6px}.home{grid-template-columns:minmax(0,1fr)}.pager{grid-template-columns:minmax(0,1fr)}}

/* Non-interactive route targets receive focus without a page-sized ring. */
.view:focus,.project:focus,.publication:focus,main:focus{outline:none}
