@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Libre+Caslon+Display&display=swap');
:root{--bg:#faf9f6;--ink:#252c2a;--muted:#646d68;--accent:#17635d;--line:#dedfd8;--soft:#eeefe8;--panel:#f2f2eb;--serif:'Libre Caslon Display',Georgia,'Times New Roman',serif;--sans:'DM Sans',Arial,sans-serif;color-scheme:light}
:root[data-theme=dark]{--bg:#171e1b;--ink:#e9eae3;--muted:#b4bdb5;--accent:#91cec0;--line:#3b453e;--soft:#26332b;--panel:#202b24;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}p{margin:0 0 16px}a:hover{color:var(--accent)}button{font:inherit;cursor:pointer;color:var(--ink)}button:disabled{cursor:default}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:5px;border-radius:2px}button{border:0;background:transparent}button:hover{color:var(--accent)}[hidden]{display:none!important}.site-frame{max-width:1184px;margin:0 auto;padding:0 44px}.site-header{display:flex;align-items:center;min-height:104px;border-bottom:1px solid var(--line);gap:32px}.wordmark{display:flex;align-items:center;gap:12px;white-space:nowrap}.monogram{font:italic 36px/.9 Georgia,serif;letter-spacing:-4px}.monogram span{color:var(--accent)}.wordmark-name{font-size:14px;font-weight:650;letter-spacing:-.2px}.site-header nav{display:flex;gap:28px;margin-left:auto;align-items:center}.site-header nav a{font-size:13px;position:relative;padding:8px 0;color:var(--muted);font-weight:500}.site-header nav a[aria-current=page]{color:var(--accent)}.site-header nav a[aria-current=page]:after{content:'';height:3px;width:3px;border-radius:100%;background:var(--accent);position:absolute;left:50%;bottom:-2px}.theme-toggle{border-left:1px solid var(--line);padding:0 0 0 24px;font-size:23px;line-height:1}.skip-link{position:fixed;top:-100px;left:20px;background:var(--accent);color:var(--bg);z-index:10;padding:10px 20px}.skip-link:focus{top:10px}.intro{display:grid;grid-template-columns:1fr 225px;gap:76px;padding:68px 0 60px}.eyebrow{text-transform:uppercase;letter-spacing:1.7px;font-size:10px;font-weight:650;color:var(--accent);line-height:1.6;display:flex;align-items:center;gap:10px}.accent-line{display:inline-block;width:24px;height:1px;background:var(--accent)}h1,h2,h3{font-weight:500;line-height:1.18;margin:0}h1,h2{font-family:var(--serif)}.intro h1{font-size:92px;letter-spacing:-3.8px;margin:17px 0 22px;line-height:1}h1 em,h2 em{font-weight:400;color:var(--accent)}.name-dot{color:var(--accent)}.intro-copy{font-size:17px;line-height:1.8;max-width:670px}.intro-interest{color:var(--muted);font-size:15px;line-height:1.8;max-width:625px}.intro-links{display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin-top:27px}.button{display:inline-flex;gap:20px;align-items:center;justify-content:center;background:var(--accent);color:var(--bg);border:1px solid var(--accent);padding:11px 18px;font-size:12px;font-weight:550;line-height:1.5;border-radius:3px}.button:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)}.quiet-link{font-size:12px;font-weight:500}.intro-note{align-self:start;border-left:1px solid var(--line);padding:8px 0 4px 28px;margin-top:49px;font-size:13px;line-height:1.8}.current-role{font-weight:600;margin:15px 0 0;font-size:14px}.current-company{color:var(--accent)}.note-rule{height:1px;width:35px;background:var(--line);margin:23px 0}.intro-note p:last-child{margin-bottom:0}.location{color:var(--muted);font-size:12px}.location span{margin-right:5px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:13px}.section-heading>div{display:flex;align-items:center;gap:18px}.section-heading h2{font-size:33px;letter-spacing:-.5px}.section-number{font-size:10px;color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums}.section-heading>a{font-size:11px;color:var(--muted);white-space:nowrap}.section-heading>a span{padding-left:12px}.section-intro{color:var(--muted);font-size:13px;margin:0 0 27px 33px}main>section:not(.intro){margin-bottom:66px}.research-row{display:grid;grid-template-columns:34px 1fr 145px;gap:0;padding:25px 0;border-top:1px solid var(--line)}.research-row:last-child{border-bottom:1px solid var(--line)}.row-index{font:11px/1.5 var(--sans);color:var(--muted);padding-top:4px;font-variant-numeric:tabular-nums}.row-meta{display:flex;align-items:center;gap:13px;flex-wrap:wrap;font-size:10px;color:var(--muted);margin-bottom:10px}.row-meta>span:first-child{letter-spacing:.5px}.status{display:inline-flex;font-size:9px;line-height:1.5;text-transform:uppercase;letter-spacing:.7px;border:1px solid var(--line);border-radius:3px;padding:3px 7px;color:var(--muted);white-space:nowrap}.status.published{color:var(--accent);background:var(--soft);border-color:transparent}.row-content h3{font-size:19px;font-weight:550;letter-spacing:-.35px;margin-bottom:9px}.title-arrow{font-size:14px;font-weight:400;color:var(--accent);padding-left:5px}.row-content p{color:var(--muted);font-size:13px;margin:0;max-width:650px}.artifact-links{display:flex;gap:18px;flex-wrap:wrap;font-size:11px;font-weight:550;color:var(--accent);margin-top:14px}.row-aside{align-self:center;text-align:right}.detail-link{font-size:10px;color:var(--muted)}.detail-link span{margin-left:12px}.timeline{margin-top:28px}.timeline-entry{display:grid;grid-template-columns:190px 1fr;gap:38px;padding:22px 0 25px;border-top:1px solid var(--line)}.timeline-entry h3{font-size:17px;font-weight:600;margin-bottom:5px}.timeline-date,.date{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.timeline-date{padding-top:3px}.timeline-entry .role{color:var(--accent);font-size:13px;margin-bottom:10px}.timeline-entry p{font-size:14px;color:var(--muted);max-width:710px}.timeline-entry p:last-child{margin-bottom:0}.text-link{font-size:12px;color:var(--accent)}details summary{cursor:pointer;color:var(--accent);font-size:12px;list-style-position:outside;margin-left:14px;padding:5px 0}details ul{font-size:13px;color:var(--muted);padding-left:18px}.awards{display:grid;grid-template-columns:repeat(3,1fr);margin-top:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.awards article{padding:27px 25px 26px 0;margin-right:25px}.awards article+article{border-left:1px solid var(--line);padding-left:25px}.awards h3{font-size:14px;font-weight:600;margin:13px 0 9px}.awards p{color:var(--muted);font-size:12px;line-height:1.8;margin-bottom:0}.tiny-cross{font-size:22px;color:var(--accent)}.contact-strip{background:var(--panel);padding:35px 38px;display:flex;align-items:center;justify-content:space-between;gap:28px;border-radius:3px}.contact-strip h2{font-size:35px;letter-spacing:-.5px;margin:11px 0 13px}.contact-strip p{font-size:12px;color:var(--muted);margin:0}.contact-email{font-size:14px;color:var(--accent);border-bottom:1px solid var(--accent);padding-bottom:8px;white-space:nowrap}.contact-email span{padding-left:18px}footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:32px 0 37px;margin-top:65px}.footer-name{font-size:13px;font-weight:600}.footer-name span{color:var(--accent)}footer p{font-size:10px;color:var(--muted);margin:6px 0 0}.footer-right{text-align:right}.footer-right>div{display:flex;gap:22px;justify-content:flex-end;font-size:10px}.footer-sep{margin:0 8px}.page-heading{padding:64px 0 39px;max-width:850px}.page-heading h1{font-size:65px;line-height:1.06;letter-spacing:-1.8px;margin:20px 0}.lead{font-size:16px;line-height:1.9;color:var(--muted);max-width:780px;margin-bottom:0}.filters{display:flex;gap:9px;flex-wrap:wrap;margin:1px 0 28px}.filters button{font-size:11px;border:1px solid var(--line);border-radius:3px;padding:7px 11px}.filters button[aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:var(--accent)}.research-list{margin-bottom:65px}.publication{padding:25px 0;border-top:1px solid var(--line)}.publication-top{display:flex;gap:15px;align-items:center;margin-bottom:12px}.publication h3{font-size:17px;line-height:1.5;max-width:860px;font-weight:500}.publication p{font-size:12px;color:var(--muted);margin:7px 0 0}.presentation{padding:25px 0;border-top:1px solid var(--line)}.presentation h3{font-size:19px;margin:12px 0}.presentation p{font-size:14px;color:var(--muted);max-width:800px}.back-link{font-size:12px;color:var(--muted);display:inline-block;margin-top:35px}.back-link+.page-heading{padding-top:30px;padding-bottom:20px}.back-link+.page-heading h1{font-size:57px;max-width:900px}.project-meta{display:flex;align-items:center;gap:18px;flex-wrap:wrap;color:var(--muted);font-size:12px}.detail-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:38px;margin:48px 0}.detail-toc{display:flex;align-items:flex-start;flex-direction:column;gap:15px;position:sticky;top:35px;align-self:start;padding-top:7px}.detail-toc .eyebrow{margin-bottom:6px}.detail-toc a{font-size:11px;color:var(--muted)}.detail-body section{margin-bottom:43px;scroll-margin-top:35px}.detail-body h2{font-size:31px;margin-bottom:19px;letter-spacing:-.5px}.detail-body p,.detail-body li{font-size:15px;line-height:1.9}.detail-body .research-question{font:27px/1.4 var(--serif);color:var(--accent);margin-bottom:20px}.method-list{padding-left:21px}.detail-body li{padding-left:6px;margin-bottom:13px}.tech-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.tech-tags span{font-size:10px;padding:4px 9px;border:1px solid var(--line);border-radius:3px;color:var(--muted)}.table-scroll{overflow-x:auto;margin-top:22px;border-bottom:1px solid var(--line)}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left;min-width:460px}caption{text-align:left;font-size:11px;color:var(--muted);padding:0 0 12px}th,td{border-top:1px solid var(--line);padding:13px 12px;vertical-align:top}thead th{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);background:var(--panel)}tbody th{font-weight:500;width:28%}td:nth-child(2){color:var(--accent);font-weight:600;white-space:nowrap}td:last-child{color:var(--muted)}.metric-note{font-size:11px!important;color:var(--muted);margin-top:15px}.publication-note{padding:24px;background:var(--panel);border-left:2px solid var(--accent)}.publication-note h2{font-family:var(--sans);font-size:17px;line-height:1.6;margin:12px 0}.publication-note p{font-size:12px;color:var(--muted)}.publication-note p .status{margin-right:10px}.project-bottom{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;padding:25px 0;font-size:12px;color:var(--accent)}.inline-note{background:var(--panel);padding:18px 22px;font-size:13px;margin-bottom:32px}.inline-note a{color:var(--accent);font-weight:500}.additional-project{padding:30px 0;border-top:1px solid var(--line)}.additional-project h2{font:26px var(--serif);margin:10px 0 15px}.additional-project p{font-size:15px;max-width:850px}.project-caveat{color:var(--muted);font-size:12px!important}.education-entry{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:25px 0}.education-entry h3{font-size:18px;margin-bottom:8px}.education-entry p{font-size:14px;margin-bottom:6px}.muted{color:var(--muted)}.leadership{padding:25px 0}.leadership h3{font-size:18px;margin-bottom:10px}.leadership p{font-size:14px;max-width:800px}.leadership .role{color:var(--accent)}.leadership .date{font-size:11px}.skills{margin:25px 0}.skills>div{display:grid;grid-template-columns:190px 1fr;gap:38px;border-top:1px solid var(--line);padding:18px 0;font-size:13px}.skills dt{font-weight:600}.skills dd{margin:0;color:var(--muted)}.certifications{list-style:none;padding:0}.certifications li{display:flex;gap:25px;justify-content:space-between;padding:16px 0;border-top:1px solid var(--line);font-size:13px}.certifications .date{white-space:nowrap}.coursework{margin-bottom:45px}.coursework p{font-size:13px;color:var(--muted);margin-top:12px}.contact-page{padding:15px 0 65px}.big-email{font:36px var(--serif);color:var(--accent);border-bottom:1px solid var(--accent);padding-bottom:7px;display:inline-block;overflow-wrap:anywhere}.contact-columns{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:65px;border-top:1px solid var(--line);padding-top:32px}.contact-columns .eyebrow{margin-bottom:20px}.contact-columns a{display:block;margin-bottom:14px;font-size:15px;color:var(--accent)}.contact-columns p{font-size:14px}.prose{max-width:770px}.prose h2{font-size:28px;margin:35px 0 16px}.prose p{font-size:15px;line-height:1.95}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.outline-button{font-size:12px;padding:11px 18px;border:1px solid var(--line);border-radius:3px}.consent{position:fixed;bottom:20px;left:20px;right:20px;max-width:650px;margin-left:auto;background:var(--bg);border:1px solid var(--line);box-shadow:0 5px 30px #0002;padding:20px;z-index:5;font-size:13px}.consent p{margin-bottom:10px}.consent>div{display:flex;gap:17px;align-items:center;flex-wrap:wrap}.consent button{border:1px solid var(--line);border-radius:3px;padding:6px 10px;font-size:11px}.consent a{font-size:11px;color:var(--accent)}.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}
.menu-toggle{display:none}
@media(min-width:1400px){.site-frame{max-width:1220px}.intro{padding-top:77px;padding-bottom:73px}.intro h1{font-size:102px}}
@media(max-width:950px){.site-frame{padding:0 30px}.site-header{gap:20px}.site-header nav{gap:18px}.wordmark-name{display:none}.intro{gap:35px;grid-template-columns:1fr 200px}.intro h1{font-size:78px}.intro-note{padding-left:20px}.intro-links{gap:13px}.research-row{grid-template-columns:30px 1fr 110px}.contact-strip{padding:30px}.contact-email{font-size:12px}.contact-email span{padding-left:5px}.detail-layout{grid-template-columns:150px 1fr;gap:25px}}
@media(max-width:700px){.site-frame{padding:0 23px}.site-header{min-height:78px;flex-wrap:wrap;gap:0}.wordmark-name{display:inline;font-size:13px}.monogram{font-size:33px}.site-header nav{order:4;width:100%;margin:0;justify-content:space-between;gap:12px;padding:14px 0;flex-wrap:wrap}.site-header nav a{font-size:12px}.site-header nav.enhanced:not(.is-open){display:none}.menu-toggle:not([hidden]){display:flex;align-items:center;gap:10px;margin-left:auto;font-size:12px;padding:10px 14px}.theme-toggle{font-size:21px;padding-left:17px;margin-left:3px}.intro{padding:40px 0 43px;display:block}.intro h1{font-size:74px;letter-spacing:-3px;margin:22px 0}.intro .eyebrow{font-size:9px;letter-spacing:1.2px}.intro-copy{font-size:16px}.intro-interest{font-size:14px}.intro-links{gap:15px;margin-top:22px}.intro-note{border-left:0;border-top:1px solid var(--line);margin-top:31px;padding:20px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:0 16px;font-size:12px}.intro-note>.eyebrow{grid-column:1/-1;margin-bottom:10px}.intro-note .current-role{margin:0;font-size:13px}.intro-note .current-company{grid-column:1;grid-row:3;margin-bottom:0}.intro-note .note-rule{display:none}.intro-note>p:nth-last-child(2){grid-column:2;grid-row:2/4;margin-bottom:0}.intro-note .location{grid-column:1/-1;margin-top:13px}.section-heading h2{font-size:27px}.section-heading>div{gap:11px}.section-heading>a{font-size:10px}.section-heading>a span{padding-left:4px}.section-intro{margin-left:24px;font-size:12px}.research-row{grid-template-columns:24px 1fr;padding:23px 0}.row-aside{display:none}.row-content h3{font-size:18px;line-height:1.4}.row-content p{font-size:13px}.row-meta{gap:9px}.row-meta>span:first-child{font-size:9px}.status{font-size:8px}.timeline-entry{grid-template-columns:1fr;gap:9px;padding:22px 0}.timeline-entry h3{font-size:16px}.timeline-entry p{font-size:13px}.awards{grid-template-columns:1fr}.awards article{margin:0;padding:23px 0}.awards article+article{border-left:0;border-top:1px solid var(--line);padding-left:0}.awards h3{display:inline;margin-left:12px;font-size:14px}.awards p{margin:10px 0 0 34px}.tiny-cross{font-size:20px}.contact-strip{display:block;padding:27px}.contact-strip h2{font-size:32px}.contact-email{font-size:12px;display:inline-block;margin-top:25px}.contact-email span{padding-left:5px}main>section:not(.intro){margin-bottom:45px}footer{margin-top:45px;padding:25px 0;align-items:flex-start;gap:20px;flex-direction:column}.footer-right{text-align:left}.footer-right>div{justify-content:flex-start}.page-heading{padding:43px 0 30px}.page-heading h1{font-size:51px;letter-spacing:-1.4px}.lead{font-size:15px;line-height:1.9}.filters{gap:7px}.filters button{font-size:10px;padding:7px 9px}.back-link+.page-heading h1{font-size:43px}.detail-layout{display:block;margin-top:32px}.detail-toc{position:static;display:flex;flex-direction:row;flex-wrap:wrap;gap:12px 20px;padding-bottom:23px;border-bottom:1px solid var(--line);margin-bottom:30px}.detail-toc .eyebrow{width:100%;margin:0}.detail-body h2{font-size:29px}.detail-body .research-question{font-size:25px}.detail-body p,.detail-body li{font-size:14px}.detail-body li{padding-left:0}.table-scroll{margin-left:0;max-width:100%}.publication-note{padding:20px}.project-meta{gap:12px;font-size:11px}.publication h3{font-size:15px}.education-entry{display:block}.education-entry>.date{display:inline-block;margin-top:10px}.skills>div{grid-template-columns:1fr;gap:7px}.certifications li{flex-direction:column;gap:5px}.big-email{font-size:27px}.contact-columns{grid-template-columns:1fr;gap:25px;margin-top:40px}.contact-page{padding-bottom:10px}.project-bottom{font-size:11px}.prose p{font-size:14px}.consent{left:12px;right:12px;bottom:12px}}
@media(max-width:700px){.intro h1{font-size:clamp(52px,14vw,74px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
@media print{.site-header,.detail-toc,.intro-links,.consent,.filters,.theme-toggle,footer{display:none!important}.site-frame{padding:0;max-width:none}body{background:white;color:black;font-size:11pt}a{color:inherit}.page-heading{padding:15px 0}.page-heading h1{font-size:36pt}.detail-layout{display:block}.timeline-entry,.publication,.education-entry{break-inside:avoid}main>section:not(.intro){margin-bottom:25px}}

/* Evidence and resource refinements, retaining the original palette and typography. */
.eyebrow{font-size:11px;letter-spacing:1.4px}.status{font-size:10px;font-weight:550;border-color:var(--muted)}
.row-meta{font-size:12px}.row-content p{font-size:14px;line-height:1.85}.row-content h3{font-size:21px}
.research-row{grid-template-columns:34px minmax(0,1fr) 210px;column-gap:18px;padding:30px 0}.row-aside img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:3px}.row-aside{padding-left:5px}.row-index{padding-top:3px}.row-content .preview-contribution{margin-top:10px;color:var(--ink);font-size:13px}.preview-contribution strong{font-weight:600;display:block;font-size:11px;letter-spacing:.2px;margin-bottom:1px}.row-content .preview-result{color:var(--accent);font-size:13px;margin-top:10px}.artifact-links{font-size:13px;gap:18px}.booking-link{margin-top:18px;font-size:13px;color:var(--accent)}.intro-links{gap:20px}.quiet-link{font-size:13px}.site-header nav a{font-size:13px}.detail-link{font-size:12px}.section-heading>a{font-size:12px}.section-intro{font-size:14px}.source-note,.metric-note{font-size:12px!important;line-height:1.8!important;color:var(--muted)}.supervision{font-size:13px!important;color:var(--muted)}.subheading{font-family:var(--sans);font-size:18px;line-height:1.5;margin:27px 0 13px;font-weight:550}.experience-bullets{font-size:14px;color:var(--ink);padding-left:18px;line-height:1.9}.experience-bullets li{margin-bottom:8px}.authors{font-size:13px!important;color:var(--ink)!important}.authors strong{font-weight:600}.publication p{font-size:13px}.publication h4{font-size:18px;line-height:1.5;font-weight:550;margin:0}.book-contributions{margin-top:27px}.book-contributions>h3{font-size:18px;font-weight:550;margin-bottom:18px}.citation{margin:18px 0 0}.citation summary{font-size:13px}.citation>p{font-size:13px;overflow-wrap:anywhere;padding:15px 0 8px}.citation button{font-size:12px}.copy-status{font-size:12px;color:var(--accent);margin-left:12px}.flow-figure{margin:25px 0 30px;padding:24px;background:var(--panel);border:1px solid var(--line);border-radius:4px}.flow-figure h3{font:550 16px/1.5 var(--sans);margin-bottom:20px}.flow-stages{list-style:none;counter-reset:stage;padding:0!important;margin:0}.flow-stages li{counter-increment:stage;position:relative;padding:0 0 24px 36px!important;margin:0!important;line-height:1.6!important;min-height:68px}.flow-stages li:before{content:counter(stage);position:absolute;left:0;top:0;border:1px solid var(--accent);width:23px;height:23px;text-align:center;border-radius:50%;color:var(--accent);font-size:11px;line-height:21px;font-weight:600}.flow-stages li:not(:last-child):after{content:'↓';position:absolute;left:6px;bottom:3px;color:var(--accent);font-size:15px}.flow-stages strong{display:block;font-size:14px;font-weight:600;margin-bottom:4px}.flow-stages span{display:block;font-size:13px;color:var(--muted)}.flow-stages li:last-child{padding-bottom:0!important;min-height:0}.flow-figure figcaption{border-top:1px solid var(--line);padding-top:16px;margin-top:22px;font-size:12px;color:var(--muted);line-height:1.8}.evidence-figure{margin:24px 0}.evidence-figure>a{display:block;border:1px solid var(--line);border-radius:4px;overflow:hidden}.evidence-figure img{display:block;width:100%;height:auto;max-width:100%}.enlarge-label{display:block;font-size:12px;color:var(--accent);background:var(--panel);padding:8px 12px;border-top:1px solid var(--line)}figcaption{font-size:12px;line-height:1.8;color:var(--muted);margin-top:12px}.prototype-gallery{display:grid;grid-template-columns:minmax(0,.67fr) minmax(0,1.33fr);gap:22px;align-items:start;margin:27px 0 10px}.prototype-gallery .evidence-figure{margin:0}.prototype-gallery img{object-fit:contain}.result-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:28px 0}.result-pair article{padding:20px;background:var(--panel);border-top:2px solid var(--accent)}.result-pair strong{font:37px var(--serif);color:var(--accent)}.result-pair p{font-size:13px!important;margin:9px 0 0}.heldout-results{grid-template-columns:repeat(3,minmax(0,1fr))}.heldout-results strong{font-size:33px}.benchmark-splits{display:grid;grid-template-columns:1fr 1fr;margin:26px 0 13px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.benchmark-splits div{display:flex;align-items:center;gap:18px;padding:19px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.benchmark-splits strong{font:32px var(--serif);color:var(--accent)}.benchmark-splits span{font-size:12px}.recognition-note{border-left:2px solid var(--accent);padding:18px 22px;background:var(--panel);margin-top:22px}.recognition-note strong{font:30px var(--serif);color:var(--accent)}.recognition-note p{font-size:13px!important;margin:10px 0 0}.figure-dialog{max-width:min(1120px,94vw);max-height:94vh;border:1px solid var(--line);border-radius:5px;padding:20px;background:var(--bg);color:var(--ink);overflow:auto}.figure-dialog::backdrop{background:#101a14d9}.figure-dialog button{display:block;margin-left:auto;margin-bottom:16px}.figure-dialog img{display:block;max-width:100%;max-height:72vh;object-fit:contain;margin:auto}.figure-dialog p{font-size:13px;margin:15px 0 0}.figure-dialog:not([open]){display:none}.resume-version{font-size:13px;color:var(--muted)}.resume-actions{display:flex;flex-wrap:wrap;gap:15px;align-items:center;margin:25px 0 37px}.pdf-section h2{font-size:28px;margin-bottom:20px}.pdf-viewer{display:block;border:1px solid var(--line);background:var(--panel)}.pdf-fallback,.calendar-fallback{font-size:13px;line-height:1.9;margin-top:18px}.pdf-fallback a,.calendar-fallback a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.booking{scroll-margin-top:35px;border-top:1px solid var(--line);padding-top:35px}.booking h2{font-size:36px;margin-bottom:15px}.booking>p{font-size:15px}.booking-calendar{display:block;width:100%;height:900px;border:1px solid var(--line);border-radius:4px;background:white;margin-top:25px}.contact-page{padding-bottom:10px}.contact-columns{margin-top:35px}.contact-strip h2{font-size:34px}.certifications .date,.timeline-date,.date{font-size:12px}.certifications li{font-size:14px}footer p,.footer-right>div{font-size:11px}
@media(max-width:1000px){.site-header{min-height:82px;gap:0;flex-wrap:wrap}.wordmark-name{display:inline}.menu-toggle:not([hidden]){display:flex;align-items:center;gap:10px;margin-left:auto;font-size:13px;padding:12px 16px}.site-header nav{order:4;width:100%;margin:0;padding:12px 0 20px;justify-content:space-between;flex-wrap:wrap;gap:14px}.site-header nav.enhanced:not(.is-open){display:none}.site-header nav a{font-size:13px}.theme-toggle{margin-left:5px;padding-left:18px}.research-row{grid-template-columns:25px minmax(0,1fr) 175px;column-gap:12px}.intro{gap:30px;grid-template-columns:minmax(0,1fr) 200px}}
@media(max-width:700px){.intro{display:block}.research-row{grid-template-columns:24px minmax(0,1fr);column-gap:0}.row-aside{display:block;grid-column:2;padding:0;margin-top:18px;max-width:280px;text-align:left}.row-aside img{max-height:180px;object-fit:contain;background:var(--panel)}.row-aside:has(.detail-link){display:none}.row-content h3{font-size:20px}.row-content p{font-size:14px}.row-meta{font-size:11px}.row-meta>span:first-child{font-size:11px}.status{font-size:10px}.intro .eyebrow{font-size:10px}.section-heading{align-items:flex-start}.section-heading h2{font-size:27px}.section-heading>a{font-size:11px}.section-heading .section-number{font-size:11px}.prototype-gallery{grid-template-columns:1fr;gap:28px}.prototype-gallery .evidence-figure:first-child{max-width:310px;margin:auto}.flow-figure{padding:19px}.flow-stages span{font-size:13px}.result-pair{gap:12px}.result-pair article{padding:15px}.heldout-results{grid-template-columns:1fr}.heldout-results article{display:flex;align-items:center;gap:20px}.heldout-results p{margin:0}.benchmark-splits{grid-template-columns:1fr}.benchmark-splits div{padding:13px 17px}.page-heading h1{font-size:clamp(39px,9.5vw,51px);overflow-wrap:anywhere}.pdf-viewer{height:72vh;min-height:450px}.booking-calendar{height:1050px}.big-email{font-size:clamp(23px,6.2vw,30px)}.contact-strip{padding:24px}.contact-email{white-space:normal;overflow-wrap:anywhere}.timeline-entry p,.experience-bullets{font-size:14px}.figure-dialog{padding:13px}.outline-button{display:inline-block}.publication h3{font-size:16px}.authors{font-size:12px!important}}
@media print{.experience-bullets{display:block}.coursework{display:block}.resume-actions,.pdf-section,.booking,.figure-dialog{display:none!important}.certifications li{break-inside:avoid}.leadership,.book-contributions{break-inside:avoid}.coursework>p{display:block!important}}
.pdf-local-viewer{border:1px solid var(--line);border-radius:4px;padding:18px;background:var(--panel)}.pdf-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.pdf-toolbar .outline-button{background:var(--bg);font-size:12px}.pdf-toolbar button:disabled{opacity:.55}.pdf-page-label{font-size:12px;white-space:nowrap}.pdf-canvas-wrap{max-width:100%;overflow:auto;text-align:center}.pdf-canvas-wrap canvas{display:block;margin:auto;max-width:100%;height:auto!important;background:white;box-shadow:0 1px 6px #0002}.pdf-local-viewer>[role=status]{font-size:13px;color:var(--muted)}.pdf-local-viewer>[role=status]:empty{display:none}.pdf-text-alternative{margin-top:18px}.pdf-text-alternative p{font-size:14px;line-height:1.9;margin-top:18px}
@media(max-width:450px){.pdf-local-viewer{padding:10px}.pdf-toolbar{gap:7px;flex-wrap:wrap}.pdf-toolbar .outline-button{padding:8px 9px;font-size:11px}.pdf-page-label{font-size:11px;order:3;width:100%;text-align:center}.pdf-text-alternative summary{font-size:12px}}
.research-jump-links{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:0 0 38px;font-size:14px;color:var(--accent)}.research-jump-links a{text-decoration:underline;text-underline-offset:5px;text-decoration-color:var(--line);padding:7px 0}.research-jump-links a:hover{text-decoration-color:var(--accent)}.research-jump-links>span{color:var(--muted)}.research-jump-target{scroll-margin-top:100px}.research-jump-target:focus-visible{outline:2px solid var(--accent);outline-offset:7px}.research-selected-title{font-size:32px;margin-bottom:24px}.recognition-note p{margin:0!important;font-size:15px!important}.recognition-note strong{font-family:var(--sans);font-size:inherit;font-weight:700;color:inherit}.evaluation-context{color:var(--muted);font-size:13px!important;margin-top:22px}
@media(max-width:450px){.research-jump-links{gap:9px;font-size:13px}.research-selected-title{font-size:28px}.research-jump-target{scroll-margin-top:90px}}
html:has(.research-jump-links){scroll-behavior:auto}

.certifications .certification-link{color:var(--accent);text-decoration:underline;text-underline-offset:3px}

/* Engineering work and document actions use the existing type and colour system. */
.cv-resume-actions{gap:12px;margin:0 0 52px}.resume-actions>a{display:inline-flex;align-items:center;justify-content:center}.engineering-previews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;border-top:1px solid var(--line);padding-top:25px}.engineering-previews article{min-width:0}.engineering-previews .eyebrow{font-size:10px}.engineering-previews h3{font:28px/1.25 var(--serif);margin:12px 0}.engineering-previews p{font-size:14px;line-height:1.8;color:var(--muted);margin-bottom:12px}.engineering-previews .text-link{font-size:12px;color:var(--accent)}.beyond-projects p{max-width:850px;font-size:16px;line-height:1.95;margin-left:34px}.engineering-project{border-top:1px solid var(--line);padding:32px 0;scroll-margin-top:90px}.engineering-project h3{font:32px/1.3 var(--serif);margin:12px 0}.engineering-project>p,.engineering-details,.engineering-project .implementation-details{max-width:880px}.engineering-project p{font-size:15px}.engineering-role{color:var(--accent);font-size:12px!important;margin-bottom:12px}.engineering-details{padding-left:20px;font-size:14px;line-height:1.85}.engineering-details li{padding-left:3px;margin-bottom:9px}.engineering-stack{font-size:12px!important;color:var(--muted);margin:18px 0 10px}.engineering-project .row-meta{flex-wrap:wrap}.documented-contribution{border-left:2px solid var(--accent);padding:14px 20px;margin:24px 0;max-width:850px;background:var(--panel)}.documented-contribution h4{font-size:13px;margin:0 0 9px}.documented-contribution p{font-size:14px;margin-bottom:10px}.documented-contribution a,.contribution-entry>a{color:var(--accent);font-size:13px;text-decoration:underline;text-underline-offset:4px}.engineering-flow{margin:25px 0;max-width:880px}.engineering-flow ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:25px;padding:0;list-style:none}.engineering-flow li{position:relative;font-size:13px;line-height:1.7;border-top:2px solid var(--accent);padding-top:12px}.engineering-flow li:not(:last-child):after{content:'→';position:absolute;right:-20px;top:12px;color:var(--accent)}.engineering-flow figcaption{font-size:11px}.implementation-details{margin:20px 0}.implementation-details summary{font-size:13px;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:4px}.implementation-details ul{font-size:14px;line-height:1.85;padding-left:20px;margin-top:14px}.contributions-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.contribution-entry{border-top:1px solid var(--line);padding:25px 0;min-width:0;scroll-margin-top:90px}.contribution-entry .row-meta{flex-wrap:wrap}.contribution-entry h3{font:28px var(--serif);margin:14px 0}.contribution-entry p{font-size:14px;line-height:1.85}.contribution-intro{margin-left:0}.engineering-group,.contributions-group{scroll-margin-top:90px}.worked-example{border:1px solid var(--line);padding:25px;margin:28px 0;background:var(--panel);border-radius:4px}.worked-example>h3{font:27px/1.35 var(--serif);margin:13px 0}.worked-example .example-stages{list-style:none;counter-reset:example;padding:0}.example-stages>li{counter-increment:example;padding:17px 0!important;border-top:1px solid var(--line);margin:0!important}.example-stages h4{font-size:14px;margin:0 0 10px}.example-stages h4:before{content:counter(example) ' / ';color:var(--accent)}.example-stages blockquote{margin:0;font:21px/1.5 var(--serif);color:var(--ink)}.example-stages p{font-size:13px!important;margin:10px 0 0}.worked-example figcaption a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.worked-example code{overflow-wrap:anywhere;font-size:11px}.worked-example figcaption{border-top:1px solid var(--line);padding-top:15px;margin-top:0}.engineering-project .artifact-links a{color:var(--accent)}
@media(max-width:700px){.cv-resume-actions{margin-bottom:42px}.engineering-previews,.contributions-grid{grid-template-columns:1fr;gap:24px}.engineering-previews article+article{border-top:1px solid var(--line);padding-top:24px}.engineering-previews h3{font-size:25px}.beyond-projects p{margin-left:0;font-size:14px}.engineering-project{padding:25px 0}.engineering-project h3{font-size:28px}.engineering-project p{font-size:14px}.engineering-flow ol{grid-template-columns:1fr 1fr;gap:22px}.engineering-flow li{font-size:12px}.engineering-flow li:nth-child(2):after{content:''}.contributions-grid{gap:5px}.worked-example{padding:19px}.worked-example>h3{font-size:24px}.example-stages blockquote{font-size:20px}.documented-contribution{padding:14px 16px}}
.projects-jump-links{margin-top:28px;margin-bottom:35px}
@media(max-width:700px){.engineering-flow ol{grid-template-columns:1fr;gap:24px}.engineering-flow li:not(:last-child):after{content:'↓';left:0;right:auto;top:auto;bottom:-24px}}
