/* Keep the visual identity; give the story room to be read. */
:root{--dark-copy:#d0d0da;--light-copy:#494954}
body{font-size:16px}
.site-header{position:sticky;top:0;height:88px;gap:24px;box-shadow:0 1px 0 #ffffff0a}
.site-header nav{font-size:15px;gap:24px}
.site-header nav a{padding-block:12px}
.site-header nav a[aria-current=location]:not(.nav-contact){color:var(--yellow)}
.site-header nav a[aria-current=location]:after{transform:scaleX(1)}
.site-header nav .nav-contact{font-size:14px;min-height:44px}
.brand-code{display:none}
.motion-toggle{font-size:11px;color:#c9c9d3;min-height:44px}
.menu-toggle{font-size:12px;min-height:44px}
.hero-topline,.hero-topline>span{font-size:11px;color:#b8b8c5;line-height:1.6}
.hello-label{font:600 12px/1.7 var(--font);letter-spacing:.4px;color:var(--yellow);max-width:440px}
.hero-description{font-size:17px;line-height:1.8;color:var(--dark-copy);max-width:470px}
.hero-description strong{color:var(--paper);font-weight:600}
.hero-actions{gap:26px;flex-wrap:wrap}
.button,.cv-link{font-size:13px;min-height:48px}
.hero-shortcut{display:inline-flex;align-items:center;gap:20px;font-size:14px;color:#d0d0da;margin-top:20px;padding-block:6px}
.hero-shortcut span{color:var(--yellow);transition:transform .25s}
.hero-shortcut:hover span{transform:translateY(4px)}
.avatar-panel-label{font-size:11px;line-height:1.6;color:#c3c3cf}
.avatar-panel-label>span:last-child{color:#b6b6c3}
.avatar-response{min-height:90px;padding:16px}
.avatar-response>p{font-size:15px;line-height:1.65;color:#e0e0e9}
.avatar-controls button{font-size:12px;min-height:48px;gap:8px;line-height:1.5}
.avatar-controls button>span:first-child{display:none}
.avatar-controls button>span:last-child{font-size:16px;margin-right:8px}
.avatar-touch-hint{font-size:10px}
.hero-bottom,.hero-bottom>span,.hero-bottom>button{font-size:11px;line-height:1.7;color:#b9b9c6}
.hero-bottom>button{min-height:44px}
.eyebrow,.section-coordinate{font-size:12px;line-height:1.7}
.section-coordinate{color:#b4b4c2}
.light-section .section-coordinate{color:var(--light-copy)}
.overview-section{padding-top:64px;padding-bottom:56px;border-bottom:1px solid var(--line)}
.overview-heading-row{display:flex;justify-content:space-between;align-items:flex-end;gap:50px;margin:32px 0 42px}
.overview-heading-row>.display-heading{font-size:clamp(66px,7.5vw,108px)}
.overview-heading-row>p{max-width:440px;font-size:18px;line-height:1.8;color:var(--dark-copy)}
.overview-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;border-top:1px solid var(--line)}
.overview-column{padding:27px 0 30px;display:flex;flex-direction:column;align-items:flex-start;position:relative}
.capability-symbol{font:700 37px/1 var(--font);color:var(--yellow);display:block;margin-bottom:24px;transition:transform .4s}
.overview-column:hover .capability-symbol{transform:translateY(-5px) rotate(-8deg)}
.overview-column h3{font-size:22px;line-height:1.3;font-weight:600;margin-bottom:15px}
.overview-column p{font-size:16px;line-height:1.8;color:var(--dark-copy);margin-bottom:22px}
.overview-column .text-link{margin-top:auto;min-height:44px;font-size:13px}
.overview-column .text-link:hover{color:var(--yellow)}
.profile-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;padding:28px 0;border-block:1px solid var(--line)}
.profile-facts strong{font-size:17px;font-weight:600;line-height:1.5;display:block}
.profile-facts span{display:block;font-size:14px;line-height:1.7;color:#babac8;margin-top:6px}
.overview-next{display:flex;gap:25px;justify-content:space-between;align-items:center;margin-top:24px;font-size:15px;color:#d0d0da}
.overview-next .text-link:hover{color:var(--yellow)}
.work-heading-row>p,.bench-heading-row>p,.journey-title p{font-size:17px;line-height:1.8;max-width:370px}
.work-heading-row>p,.journey-title p{color:var(--light-copy)}
.work-toolbar{flex-wrap:wrap;gap:16px}
.filters,.bench-filters{flex-wrap:wrap;gap:5px}
.filters button,.bench-filters button{font:600 12px/1.5 var(--font);min-height:44px;padding:12px 15px}
.filters button{color:var(--light-copy)}
.filters button>span,.bench-filters button span{font:12px var(--mono);margin-left:10px}
.project-count,.bench-count{font-size:12px}
.project-count{color:var(--light-copy)}
.featured-copy h3{font-size:clamp(40px,4vw,58px);line-height:1.02}
.featured-copy h3 br{display:initial}
.featured-copy>p,.row-title>p{font-size:16px;line-height:1.8;color:var(--light-copy);max-width:570px}
.project-index,.row-category{font:600 12px/1.6 var(--font);letter-spacing:.3px;color:#50505c;max-width:none}
.row-open{padding-block:36px;position:relative}
.row-open:after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .4s}
.row-open:hover:after,.row-open:focus-visible:after{transform:scaleX(1)}
.row-title h3{font-size:clamp(34px,3.1vw,45px);line-height:1.03}
.row-open:hover h3{transform:none}
.row-index{font-size:13px;color:#50505c}
.tags>span{font-size:11px;padding:6px 9px;color:#41414e}
.project-link,.project-detail-link{font:600 13px/1.5 var(--font)}
.project-detail-link{display:inline-flex;gap:18px;align-items:center;color:var(--blue);margin-top:16px}
.project-detail-link>span{display:inline-block;transition:transform .25s}
.row-open:hover .project-detail-link>span{transform:translate(3px,-3px)}
.row-arrow,.research-next .round-arrow{min-width:44px;min-height:44px}
.text-link,.work-end .text-link,.bench-jump{font-size:13px;line-height:1.6;min-height:44px;align-content:center}
.work-end{flex-wrap:wrap}
.bench-heading-row>p,.bench-description{color:var(--dark-copy)}
.bench-count,.bench-category,.bench-format,.bench-footer{font-size:12px;line-height:1.7}
.bench-filters button{color:#dedee7}
.bench-filters button.active{color:var(--ink)}
.bench-category{font-family:var(--font);font-weight:500;letter-spacing:.2px;color:#c3c3cf}
.bench-card h3{font-size:23px;line-height:1.35;margin-top:10px}
.bench-description{font-size:16px;line-height:1.8;max-width:none}
.bench-play{width:48px;height:48px}
.bench-footer{color:#b9b9c6}
.about-copy>p:not(.big-copy){font-size:17px;line-height:1.85;color:var(--dark-copy);margin-bottom:22px}
.big-copy{font-size:29px}
.human-signature{font-size:14px;line-height:1.7}
.human-signature>span,.stat-pair p,.recognition,.toolkit>.eyebrow{font-size:12px;line-height:1.7;color:#c4c4d0}
.recognition{color:var(--yellow)}
.stat-pair{flex-wrap:wrap;gap:32px}
.stat-pair p{max-width:190px}
.toolkit-flow{flex-wrap:wrap;gap:10px}
.toolkit-flow>span{font-size:13px;padding:10px 14px}
.research-intro>p{font-size:22px;line-height:1.6}
.research-intro>.eyebrow,.publication-meta,.publication-tag,.publication-copy>p.citation,.research-next>.eyebrow{font-size:12px;line-height:1.7}
.publication-copy>h3{font-size:27px;line-height:1.4;letter-spacing:-.3px}
.publication-copy>p,.research-next p{font-size:16px;line-height:1.8;color:#f1f2ff}
.publication-copy .text-link{font-size:13px;min-height:44px}
.research-next h3{font-size:21px;line-height:1.4}
.column-label{font:600 12px/1.7 var(--font);color:var(--light-copy)}
.degree{grid-template-columns:50px 1fr}
.degree>span,.experience>span{font-size:13px;color:var(--light-copy);line-height:1.7}
.degree p,.degree-note,.experience .organisation{font-size:14px;line-height:1.7;color:var(--light-copy)}
.degree-note{display:block}
.experience{grid-template-columns:94px 1fr;gap:20px}
.experience h4{font-size:20px;line-height:1.4}
.experience p:last-child{font-size:16px;line-height:1.8;color:var(--light-copy)}
.contact-bottom p{font-size:17px;line-height:1.8;color:#403711}
.contact-note,.contact-socials,.site-footer,.site-footer>a{font-size:12px;line-height:1.7}
.contact-socials a{min-height:44px;display:inline-flex;align-items:center}
.email-link{font-size:clamp(18px,2vw,25px);overflow-wrap:anywhere;min-height:44px}
.site-footer>a{padding-block:12px}
dialog{width:min(820px,calc(100% - 32px));scrollbar-gutter:stable}
.dialog-top .eyebrow{font-size:12px;line-height:1.7}
.dialog-top{position:sticky;top:0;z-index:2;background:var(--paper);padding-top:12px}
#dialog-close,#media-close,.media-navigation button{min-width:44px;min-height:44px}
.dialog-summary{font-size:18px;line-height:1.8;color:var(--light-copy)}
#dialog-content h3{font:600 13px/1.7 var(--font);letter-spacing:.3px}
#dialog-content p,#dialog-content li{font-size:16px;line-height:1.8;color:var(--light-copy)}
#dialog-content li+li{margin-top:12px}
#dialog-content .dialog-note{font-size:14px;line-height:1.8}
.dialog-fact{font-size:13px;line-height:1.8}
.dialog-photos figcaption{font:12px/1.7 var(--font);color:var(--light-copy)}
.dialog-links .text-link{font-size:14px;min-height:44px}
.media-viewer-header .eyebrow{font-size:12px;line-height:1.7}
.media-description{font-size:16px;line-height:1.8;color:var(--dark-copy)}
.media-viewer-footer>a,#media-position{font-size:12px;line-height:1.7}
.media-viewer-footer>a{min-height:44px;align-content:center}
.button,.cv-link,.text-link,.project-link,.avatar-controls button,.contact-socials{font-family:var(--font);font-weight:500;letter-spacing:.1px}

/* Motion marks an arrival or interaction. The copy stays still while reading. */
.avatar-sprite{position:relative}
/* The blink keeps the smile frame. Only these registered eye patches change. */
.avatar-sprite[data-expression="1"]{background-position:0 0}
.avatar-blink-eyes{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}
.avatar-sprite[data-expression="1"] .avatar-blink-eyes{animation:eyes-blink .24s linear both}
@keyframes eyes-blink{0%,100%{opacity:0}28%,52%{opacity:1}}
html.motion-off .avatar-blink-eyes{opacity:0!important}
.js .reveal{opacity:1;transform:none;transition:none}
.hero-copy{animation:hero-arrive .65s ease-out both}
.avatar-panel{animation:hero-arrive .8s .12s ease-out both}
.reveal.visible,.bench-card.visible{animation:section-arrive .6s ease-out both}
.overview-column:nth-child(2){animation-delay:.08s}.overview-column:nth-child(3){animation-delay:.16s}
.avatar-ring{animation:orbit-ring 42s linear infinite}
.visible .mini-bars{animation:bars-arrive .8s cubic-bezier(.2,.7,.3,1);transform-origin:bottom}
.visible .art-risk path{stroke-dasharray:650;stroke-dashoffset:0;animation:signal-arrive 1.7s ease-out}
.project.filter-enter{animation:filter-arrive .35s ease-out both}
dialog[open] .dialog-inner,dialog[open] .media-viewer-inner{animation:dialog-arrive .25s ease-out}
@keyframes hero-arrive{from{opacity:.3;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes section-arrive{from{opacity:.65;translate:0 18px}to{opacity:1;translate:0 0}}
@keyframes orbit-ring{to{rotate:360deg}}
@keyframes bars-arrive{from{scale:1 .25}to{scale:1 1}}
@keyframes signal-arrive{from{stroke-dashoffset:650}to{stroke-dashoffset:0}}
@keyframes filter-arrive{from{opacity:.4;translate:0 8px}to{opacity:1;translate:0 0}}
@keyframes dialog-arrive{from{opacity:.6;translate:0 10px}to{opacity:1;translate:0 0}}
.motion-off .hero-copy,.motion-off .avatar-panel,.motion-off .reveal,.motion-off .bench-card,.motion-off .project.filter-enter{animation:none}
.motion-off .overview-column:hover .capability-symbol,.motion-off .hero-shortcut:hover span,.motion-off .row-open:hover .project-detail-link>span{transform:none}
html.motion-off *,html.motion-off *:before,html.motion-off *:after{animation:none!important;transition:none!important}

@media(max-width:1100px){.site-header{height:80px}.header-right{gap:20px}.site-header nav{gap:17px}.hero-description{font-size:16px}.avatar-panel-label{font-size:10px}.row-open{grid-template-columns:35px 1fr 150px 48px;gap:20px}.row-category{font-size:11px}.overview-column h3{font-size:20px}.overview-columns,.profile-facts{gap:24px}.experience{grid-template-columns:1fr;gap:7px}}
@media(max-width:980px){.site-header nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--ink);padding:20px 6% 26px;border-bottom:1px solid var(--line);box-shadow:0 16px 25px #0006;align-items:flex-start;font-size:17px}.site-header nav.open{display:flex;flex-direction:column;gap:7px}.site-header nav>a{width:100%;min-height:44px}.site-header nav .nav-contact{width:auto;margin-top:8px;padding:12px 18px;font-size:15px}.menu-toggle{display:flex;align-items:center;gap:12px;background:none;font:12px var(--font)}.menu-toggle>span{font-size:24px}.header-right{gap:26px}.overview-columns{gap:22px}.overview-column h3{font-size:19px}.overview-heading-row>p{font-size:17px}.profile-facts strong{font-size:16px}.row-open{grid-template-columns:30px 1fr 120px 46px;gap:18px}.row-art{height:125px}}
@media(max-width:820px){.hero-grid{display:block;max-width:660px;margin-inline:auto}.hero h1{font-size:clamp(150px,29vw,220px)}.hero h2{font-size:clamp(38px,7vw,55px)}.hero-description{font-size:17px;max-width:550px}.avatar-panel{max-width:510px;margin:45px auto 0}.avatar-scene{height:430px}.avatar-body{width:min(94%,430px)}.avatar-panel-label{font-size:11px}.avatar-controls button{font-size:12px}.overview-columns{grid-template-columns:1fr}.overview-column{display:grid;grid-template-columns:65px 1fr;padding:26px 0;border-bottom:1px solid var(--line);column-gap:20px}.capability-symbol{grid-row:1/4;margin-top:3px}.overview-column h3{font-size:23px}.overview-column .text-link{justify-self:start;margin-top:0}.profile-facts{grid-template-columns:1fr;gap:20px}.profile-facts>div+div{border-top:1px solid var(--line);padding-top:20px}.profile-facts strong{font-size:18px}.overview-heading-row{display:block}.overview-heading-row>p{max-width:600px;margin-top:25px}.overview-heading-row>.display-heading{font-size:82px}.work-heading-row{display:block}.work-heading-row>p{max-width:600px;margin-top:24px}.work-toolbar{align-items:flex-start}.project-count{position:static;clip-path:none;width:auto;height:auto;overflow:visible}.featured-open{display:block}.ed-poster{max-width:550px;height:355px}.featured-copy{padding-top:28px}.featured-copy h3{font-size:46px}.featured-copy>p{max-width:600px}.row-open{grid-template-columns:28px 1fr 46px;gap:16px}.row-art{display:none}.row-title h3{font-size:38px}.project-index,.row-category{font-size:12px}.row-arrow{width:44px;height:44px;font-size:23px}.about-grid,.research-grid{display:block}.about-heading .display-heading{font-size:clamp(64px,11vw,90px)}.about-copy{padding-top:32px}.research-intro{margin-top:28px}.research-grid .display-heading{font-size:clamp(60px,10vw,84px)}.journey-title{display:block}.journey-title p{margin-top:25px;max-width:none}.journey-grid{grid-template-columns:1fr;gap:25px}.experience{grid-template-columns:105px 1fr;gap:22px}.bench-heading-row{display:block}.bench-heading-row>p{margin-top:25px;max-width:580px}.bench-heading-row .display-heading{font-size:clamp(58px,10vw,84px)}.bench-toolbar{flex-wrap:wrap}.bench-count{position:static;width:auto;height:auto;clip-path:none;overflow:visible}.publication{display:block}.publication-copy{margin-top:24px}.publication-meta{flex-direction:row;justify-content:space-between;gap:24px}.research-next{grid-template-columns:1fr 44px;gap:18px}.research-next>.eyebrow{grid-column:1/-1;max-width:none}}
@media(max-width:620px){html{scroll-padding-top:90px}.section-wrap{padding-inline:6%}.site-header{height:72px}.header-right{gap:18px}.brand{font-size:32px}.hero{padding-top:20px}.hero-topline{display:block}.hero-topline>p{font-size:12px}.hero-topline>span{display:none}.hello-label{font-size:12px;letter-spacing:.15px;margin-bottom:25px}.hero h1{font-size:31vw}.hero h2{font-size:clamp(35px,8.8vw,54px);margin-top:27px}.hero-description{font-size:16px;line-height:1.85;margin-top:24px}.hero-actions{gap:18px;margin-top:26px}.button{font-size:12px;gap:24px;padding:15px 16px}.cv-link{font-size:12px;gap:14px}.hero-shortcut{font-size:14px}.avatar-panel{margin-top:36px}.avatar-scene{height:390px}.avatar-body{width:min(94%,390px)}.avatar-controls button{font-size:11px}.hero-bottom{gap:14px;align-items:center}.hero-bottom>span,.hero-bottom>button,.hero-bottom>a{font-size:11px}.hero-bottom>a{width:100%;padding-top:16px}.hero-bottom>a>span{font-size:18px}.section-top{align-items:flex-start;gap:15px}.eyebrow,.section-coordinate{font-size:11px}.section-coordinate{max-width:145px;text-align:right}.overview-section{padding-top:42px;padding-bottom:38px}.overview-heading-row{margin:27px 0 30px}.overview-heading-row>.display-heading{font-size:19vw}.overview-heading-row>p{font-size:16px}.overview-column{grid-template-columns:40px 1fr;gap:0 14px}.capability-symbol{font-size:29px}.overview-column h3{font-size:21px}.overview-column p{font-size:16px}.overview-next{display:block}.overview-next .text-link{margin-top:8px}.work-heading-row>p,.bench-heading-row>p,.journey-title p{font-size:16px}.work-toolbar{margin-bottom:25px}.filters button,.bench-filters button{font-size:12px;padding:11px 12px}.filters button>span,.bench-filters button span{font-size:11px;margin-left:7px}.project-count,.bench-count{font-size:12px}.featured-copy h3{font-size:40px}.featured-copy>p,.row-title>p{font-size:16px}.project-index,.row-category{font-size:11px;line-height:1.7}.row-open{grid-template-columns:20px 1fr 44px;gap:10px;padding-block:30px}.row-title h3{font-size:32px;line-height:1.08;overflow-wrap:anywhere}.row-index{font-size:12px}.row-title>p{line-height:1.8;margin-top:15px}.row-title>p,.row-title h3,.project-detail-link{grid-column:1}.project-detail-link{font-size:13px;margin-top:17px}.work-end .text-link,.bench-jump{font-size:12px;max-width:none}.bench-section{padding-block:42px}.bench-heading-row .display-heading{font-size:15vw}.bench-description{font-size:16px}.bench-category,.bench-footer,.bench-format{font-size:11px}.bench-grid{gap:34px}.bench-card h3{font-size:23px}.about-heading .display-heading{font-size:16vw}.about-copy>p:not(.big-copy){font-size:16px}.big-copy{font-size:27px}.human-signature{font-size:13px}.human-signature>span,.stat-pair p,.recognition,.toolkit>.eyebrow{font-size:11px}.stat-pair{gap:30px}.toolkit-flow>span{font-size:12px}.research-grid .display-heading{font-size:13.3vw}.research-intro>p{font-size:21px}.publication-copy>h3{font-size:24px}.publication-copy>p,.research-next p{font-size:16px}.publication-copy>p.citation,.publication-meta,.publication-tag,.research-intro>.eyebrow,.research-next>.eyebrow{font-size:11px}.publication-copy .text-link{font-size:13px}.research-next h3{font-size:20px}.column-label{font-size:12px}.degree{grid-template-columns:42px 1fr;gap:15px}.degree h4{font-size:29px}.degree>span,.experience>span{font-size:13px}.degree p,.degree-note,.experience .organisation{font-size:14px}.experience{grid-template-columns:1fr;gap:7px}.experience h4{font-size:20px}.experience p:last-child{font-size:16px}.contact-note{font-size:10px;line-height:1.6}.contact-bottom p{font-size:16px}.contact-socials{font-size:13px;gap:24px;flex-wrap:wrap}.email-link{font-size:clamp(16px,4.9vw,22px);letter-spacing:-.5px}.site-footer,.site-footer>a{font-size:11px}.dialog-inner{padding:22px}.dialog-top{gap:16px}.dialog-top .eyebrow{font-size:11px}.dialog-inner h2{font-size:45px}.dialog-summary{font-size:17px}#dialog-content h3{font-size:13px}#dialog-content p,#dialog-content li{font-size:16px}.dialog-fact{font-size:12px}.dialog-photos{grid-template-columns:1fr;gap:20px}.dialog-photos img{aspect-ratio:4/3}.dialog-photos figcaption{font-size:12px}.dialog-links .text-link{font-size:13px}.media-viewer-inner{padding:16px}.media-viewer-header .eyebrow{font-size:11px}.media-viewer-header h2{font-size:23px}.media-description{font-size:16px}.media-navigation{gap:10px}.media-viewer-footer{gap:12px;flex-wrap:wrap}.media-viewer-footer>a,#media-position{font-size:12px}}
@media(max-width:390px){.header-right{gap:14px}.motion-toggle{font-size:10px}.avatar-scene{height:340px}.avatar-body{width:min(94%,340px)}.hero-actions{gap:15px}.button{font-size:11px;gap:18px}.cv-link{font-size:11px;gap:12px}.row-open{grid-template-columns:20px 1fr;gap:10px}.row-arrow{display:none}.row-title h3{font-size:32px}.row-title>p{max-width:none}.filters,.bench-filters{gap:4px}.filters button,.bench-filters button{font-size:11px;padding:10px}.profile-facts strong{font-size:17px}.hero-bottom>span,.hero-bottom>button{font-size:10px}}
@media(prefers-reduced-motion:reduce){.hero-copy,.avatar-panel,.reveal.visible,.bench-card.visible,.avatar-ring,.visible .mini-bars,.visible .art-risk path,.project.filter-enter,dialog[open] .dialog-inner,dialog[open] .media-viewer-inner{animation:none!important}.overview-column:hover .capability-symbol,.hero-shortcut:hover span,.row-open:hover .project-detail-link>span{transform:none}.avatar-blink-eyes{opacity:0!important;animation:none!important}}
