@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400..700&family=Space+Grotesk:wght@300..700&display=swap');
:root{--ink:#17191b;--paper:#fafbf8;--mint:#c2f970;--blue:#2b43ee;--orange:#ff9266;--line:#d9dcd5}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--blue);outline-offset:6px}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4,.brand,.metrics strong,.project-stats strong{font-family:'Space Grotesk',sans-serif}h1,h2,h3,h4{line-height:1.06;letter-spacing:-.045em}p{max-width:75ch}.skip{position:absolute;left:20px;top:-100px;padding:12px;background:white;z-index:99}.skip:focus{top:10px}header{max-width:1440px;margin:auto;padding:24px 5%;display:flex;align-items:center;gap:30px;min-height:98px}.brand{font-size:33px;font-weight:700;letter-spacing:-.08em}.brand span{color:var(--blue)}nav{display:flex;gap:29px;margin-left:auto;font-size:14px;font-weight:600}nav a{padding:8px 0;border-bottom:2px solid transparent}nav a:hover,nav a[aria-current]{border-color:var(--blue)}.cv{font-size:14px;border:1px solid var(--ink);padding:10px 17px;border-radius:50px;font-weight:600}.cv:hover{background:var(--ink);color:white}main{max-width:1440px;margin:auto}.hero{position:relative;margin:14px 3% 0;padding:35px 4% 45px;background:var(--mint);border-radius:24px;overflow:hidden}.hero-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.eyebrow,.location,.date,.project-top,.num{font-size:13px;font-weight:700;letter-spacing:.09em}.location{letter-spacing:0;font-weight:500}.hero h1{font-size:clamp(72px,10.6vw,152px);font-weight:500;letter-spacing:-.075em;line-height:.94;margin:55px 0 32px}.period{color:var(--blue)}.hero-bottom{display:flex;align-items:end;justify-content:space-between;gap:32px}.hero-bottom p{font-size:20px;max-width:530px;line-height:1.5}.button{display:inline-flex;align-items:center;justify-content:center;padding:15px 25px;border-radius:50px;font-size:15px;font-weight:600;white-space:normal;text-align:center;transition:transform .2s,background .2s}.button:hover{transform:translateY(-3px)}.dark{background:var(--ink);color:white}.dark:hover{background:#303640}.hero-note{position:absolute;right:4%;top:48%;writing-mode:vertical-rl;font-size:12px;letter-spacing:.16em;font-weight:600}.profile{display:grid;grid-template-columns:1fr 2fr;gap:40px;padding:100px 7% 60px}.profile h2{font-size:clamp(36px,4.2vw,58px);margin-bottom:25px}.profile em{font-style:normal;color:var(--blue)}.profile p:not(.eyebrow){font-size:18px;color:#50554f}.metrics{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 7%}.metrics>div{padding:28px 15px 30px;border-right:1px solid var(--line)}.metrics>div:first-child{padding-left:0}.metrics>div:last-child{border:0}.metrics strong{display:block;font-size:36px;letter-spacing:-.07em;font-weight:500;line-height:1.2}.metrics span{display:block;font-size:13px;color:#535950;line-height:1.5;margin-top:8px}.section{padding:85px 7%}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:40px}.section-heading .eyebrow{margin-bottom:18px}.section-heading h2{font-size:clamp(32px,4vw,52px)}.text-link{font-size:15px;font-weight:600;border-bottom:1px solid;padding-bottom:5px;white-space:nowrap}.project-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:22px}.project{display:flex;flex-direction:column;min-height:450px;padding:30px;border-radius:18px;transition:transform .25s}.project:hover{transform:translateY(-5px)}.blue{background:var(--blue);color:white}.orange{background:var(--orange)}.project-top{display:flex;justify-content:space-between;gap:15px;font-size:12px}.project h3{font-size:clamp(30px,3.3vw,46px);margin:48px 0 18px}.project>p{font-size:15px}.project-stats{display:flex;gap:25px;margin:35px 0 28px}.project-stats strong{display:block;font-size:30px;line-height:1.2;letter-spacing:-.05em}.project-stats span{display:block;font-size:12px;margin-top:5px}.project-link{font-size:14px;margin-top:auto;font-weight:600;text-decoration:underline;text-underline-offset:5px}.experience{background:#eef0e9}.role{display:grid;grid-template-columns:.8fr 1.3fr 2fr;gap:30px;padding:32px 0;border-top:1px solid #ccd0c5}.date{font-size:13px;letter-spacing:0}.role h3{font-size:24px}.role-title{font-size:14px;margin-top:8px}.role h4{font-size:17px;letter-spacing:-.015em;line-height:1.4}.role ul{padding-left:18px;margin:10px 0 0;font-size:15px;color:#4e554d}.role li+li{margin-top:10px}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.skill-grid article{border-top:2px solid var(--ink);padding-top:18px}.num{color:var(--blue)}.skill-grid h3{font-size:23px;margin:20px 0 12px;line-height:1.2}.skill-grid p{color:#555c52;font-size:15px}.education{margin:0 7% 70px;display:grid;grid-template-columns:1fr 2fr;gap:8px 35px;border-top:1px solid var(--line);padding-top:30px}.education .eyebrow{grid-row:span 3}.education h3{font-size:23px}.education p,.education>span:last-child{font-size:14px}.contact{margin:0 3% 28px;background:var(--orange);padding:55px 4%;border-radius:22px}.contact h2{font-size:clamp(34px,5vw,65px);margin:25px 0 35px}.contact-links{display:flex;flex-wrap:wrap;gap:24px;font-size:14px;margin-top:22px}.contact-links a:hover{text-decoration:underline}footer{display:flex;align-items:center;flex-wrap:wrap;gap:24px;max-width:1440px;margin:auto;padding:35px 7%;font-size:14px}footer p{margin-right:auto}.copyright{font-size:12px;color:#636960;width:100%;border-top:1px solid var(--line);padding-top:20px}.page-intro{background:var(--mint);margin:14px 3% 0;padding:50px 4% 60px;border-radius:22px}.page-intro h1{font-size:clamp(48px,7vw,92px);max-width:1000px;margin:32px 0 25px}.lead{font-size:20px;max-width:760px}.case+.case{background:#eef0e9}.case h2{font-size:clamp(32px,4vw,50px);max-width:830px;margin:20px 0 25px}.case-lead{font-size:18px;color:#4e554d}.tags{display:flex;flex-wrap:wrap;gap:10px;margin:25px 0}.tags span{padding:7px 13px;border:1px solid #aab5a0;border-radius:30px;font-size:14px;font-weight:500}.case .tags span{background:var(--mint);border:0}.intervention-heading{font-size:24px;margin:45px 0 25px}.interventions{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.interventions>div{border-top:1px solid #bfc5b8;padding-top:15px}.interventions h4{font-size:21px;line-height:1.2;letter-spacing:-.025em;margin:18px 0 15px}.interventions p{font-size:16px;color:#50584e}.spec-list article{display:grid;grid-template-columns:.25fr 1fr 1.6fr;gap:25px;padding:32px 0;border-top:1px solid var(--line)}.spec-list h2{font-size:28px;line-height:1.15}.spec-list p{color:#50584e}.spec-list .tags{margin-bottom:0}.journal article{display:grid;grid-template-columns:.5fr 1.5fr 1.4fr;gap:35px;border-top:1px solid var(--line);padding:38px 0}.journal h2{font-size:31px;line-height:1.15}.journal article>p:last-child{color:#50584e}.lab-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.lab-grid article{padding:35px;border-radius:18px;background:#e5eaff;display:flex;flex-direction:column}.lab-grid article:nth-child(2){background:#ffe1d5}.lab-grid h2{font-size:30px;overflow-wrap:anywhere;line-height:1.1;margin:28px 0 20px}.lab-grid p{color:#464e49}.lab-grid .button{align-self:start;margin-top:auto}.lab-grid .tags{margin-bottom:35px}::selection{background:var(--orange);color:var(--ink)}
@media(min-width:1600px){.hero h1{font-size:152px}}@media(max-width:1000px){header{gap:22px}nav{gap:18px}.metrics{grid-template-columns:repeat(3,1fr)}.metrics>div:nth-child(3){border:0}.metrics>div:nth-child(n+4){border-top:1px solid var(--line)}.metrics>div:nth-child(4){padding-left:0}.project-grid{grid-template-columns:1fr 1fr}.project{padding:25px}.project-top{flex-direction:column;gap:5px}.project-stats{flex-wrap:wrap;gap:20px}.role{grid-template-columns:.7fr 1fr 1.5fr}.journal article{grid-template-columns:.6fr 2fr}.journal article>p:last-child{grid-column:2}.skill-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){header{padding:20px 6%;flex-wrap:wrap;gap:14px;justify-content:space-between}.brand{font-size:30px}.cv{margin-left:auto}nav{order:3;width:100%;margin:0;justify-content:space-between;gap:12px;font-size:14px}.hero{padding:25px 6% 30px;margin:0 4%}.hero-top{align-items:start;flex-direction:column;gap:6px}.hero h1{font-size:clamp(60px,16vw,110px);margin:45px 0 25px}.hero-bottom{align-items:start;flex-direction:column;gap:25px}.hero-bottom p{font-size:18px}.hero-note{display:none}.profile{padding:55px 7% 35px;grid-template-columns:1fr;gap:20px}.profile h2{font-size:42px}.profile p:not(.eyebrow){font-size:16px}.metrics strong{font-size:29px}.metrics span{font-size:12px}.metrics>div{padding:20px 10px}.section{padding:55px 7%}.section-heading{align-items:start;flex-direction:column;gap:20px;margin-bottom:28px}.section-heading h2{font-size:35px}.project-grid{grid-template-columns:1fr}.project{min-height:405px;padding:26px}.project-top{flex-direction:row}.project h3{font-size:38px;margin-top:40px}.project-stats{gap:25px}.role{grid-template-columns:1fr;gap:14px;padding:28px 0}.role h3{font-size:25px}.role h4{font-size:18px}.role ul{font-size:16px}.skill-grid{gap:25px}.skill-grid h3{font-size:22px}.skill-grid p{font-size:16px}.education{grid-template-columns:1fr;margin-bottom:50px;gap:10px}.education .eyebrow{grid-row:auto;margin-bottom:12px}.contact{margin:0 4% 15px;padding:35px 6%}.contact h2{font-size:38px}.contact .button{font-size:14px;padding:15px 20px;max-width:100%;overflow-wrap:anywhere}footer{padding:30px 7%;gap:20px}footer p{width:calc(100% - 120px);font-size:13px}.page-intro{margin:0 4%;padding:35px 6% 40px}.page-intro h1{font-size:48px}.lead{font-size:18px}.interventions{grid-template-columns:1fr}.case-lead{font-size:16px}.spec-list article{grid-template-columns:25px 1fr;gap:18px}.spec-list article>div{grid-column:2}.spec-list h2{font-size:28px}.journal article{grid-template-columns:1fr;gap:20px}.journal article>p:last-child{grid-column:auto}.journal h2{font-size:30px}.lab-grid{grid-template-columns:1fr}.lab-grid article{padding:28px}.lab-grid h2{font-size:30px}}
@media(max-width:380px){.skill-grid{grid-template-columns:1fr}.hero h1{font-size:60px}.project h3{font-size:33px}.project-top{flex-direction:column}.metrics strong{font-size:25px}.page-intro h1{font-size:40px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media(max-width:1000px){.hero-note{display:none}.hero-bottom .button{flex-shrink:0}}
/* Scroll choreography */
.hero-line{display:block;overflow:hidden;padding:.14em .02em;margin:-.14em -.02em}
.hero-line>span{display:block}
.hero-character{display:inline-block;white-space:pre}
.motion-intro{position:fixed;inset:0;z-index:1000;pointer-events:none;background:var(--ink);color:var(--mint);display:flex;flex-direction:column;justify-content:center;align-items:center;animation:curtain-exit .85s cubic-bezier(.76,0,.24,1) .65s forwards}
.intro-mark{font-family:'Space Grotesk',sans-serif;font-size:clamp(52px,9vw,120px);letter-spacing:-.08em;animation:intro-mark .6s ease both}
.intro-mark>span{color:var(--orange)}.intro-rule{height:2px;background:var(--mint);width:140px;transform-origin:left;animation:intro-rule .65s ease both;margin-top:20px}
@keyframes curtain-exit{to{transform:translateY(-105%)}}
@keyframes intro-mark{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}
@keyframes intro-rule{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes character-rise{from{transform:translateY(125%) rotate(8deg);opacity:0}to{transform:translateY(0) rotate(0);opacity:1}}
@keyframes opening-reveal{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
.reading-word{transition:color .2s ease}.reading-copy{font-size:clamp(23px,2.6vw,37px)!important;line-height:1.4!important;letter-spacing:-.035em}
.word-mask{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.13em;margin-bottom:-.13em}.word-slide{display:inline-block}
.rolling-label{display:block;position:relative;overflow:hidden;line-height:1.5}.rolling-label>span{display:block;transition:transform .45s cubic-bezier(.16,1,.3,1)}.rolling-copy{position:absolute;inset:0;transform:translateY(120%)}
@media(prefers-reduced-motion:no-preference){
.experience-motion .hero-character{animation:character-rise 1.1s cubic-bezier(.16,1,.3,1) var(--character-delay,700ms) both}
.experience-motion .hero-top{animation:opening-reveal .8s ease .8s both}
.experience-motion .hero-bottom{animation:opening-reveal .9s ease 1.1s both}
.experience-motion .scroll-reveal{opacity:0;transform:translateY(48px);transition:opacity .9s ease var(--reveal-delay,0ms),transform 1s cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms)}
.experience-motion .scroll-reveal.is-revealed{opacity:1;transform:none}
.experience-motion .scroll-reveal .word-slide{transform:translateY(115%) rotate(3deg);transition:transform .95s cubic-bezier(.16,1,.3,1) var(--word-delay,0ms)}
.experience-motion .scroll-reveal.is-revealed .word-slide{transform:none}
.experience-motion .reading-word{color:#74796f}.experience-motion .reading-word.is-lit{color:var(--ink)}
.experience-motion .motion-card{transform:perspective(1000px) translateY(var(--card-y,0px)) rotate(var(--card-rotate,0deg)) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) scale(var(--card-scale,1));transition:transform .18s linear,box-shadow .3s ease;transform-origin:50% 60%}
.experience-motion .motion-card:hover{box-shadow:0 20px 35px #17191b22}
}
@media(min-width:701px) and (prefers-reduced-motion:no-preference){
.experience-motion .hero-stage{height:170vh;min-height:1050px;margin:14px 3% 0}
.experience-motion .hero-stage>.hero{position:sticky;top:12px;margin:0;padding:35px 4% 45px;min-height:calc(100svh - 24px);display:flex;flex-direction:column;justify-content:space-between;border-radius:24px;transform:scale(calc(1 - var(--hero-progress,0)*.04));transform-origin:center}
.experience-motion .hero h1{margin:35px 0;perspective:1000px}
.experience-motion .hero-line:first-child{translate:calc(var(--hero-progress,0)*-65px) 0}
.experience-motion .hero-line:nth-child(2){translate:calc(var(--hero-progress,0)*65px) 0}
.experience-motion .hero-line{opacity:calc(1 - var(--hero-progress,0)*.35)}
.experience-motion .hero-bottom{translate:0 calc(var(--hero-progress,0)*-22px)}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
.experience-motion .button,.experience-motion .cv,.experience-motion nav a,.experience-motion .text-link{translate:var(--magnet-x,0px) var(--magnet-y,0px);transition:translate .2s ease,background .2s ease,color .2s ease}
a:hover .rolling-label>span:first-child{transform:translateY(-120%)}a:hover .rolling-copy{transform:translateY(0)}
}
@media(max-width:700px){.reading-copy{font-size:23px!important}.hero-stage{margin:0}.hero-character{animation-duration:.8s!important}}
@media(prefers-reduced-motion:reduce){.motion-intro{display:none}.hero-character{animation:none!important}.word-slide,.motion-card,.scroll-reveal{transform:none!important;opacity:1!important}.reading-word{color:var(--ink)!important}.rolling-label>span{transform:none!important}.rolling-copy{display:none}}
.experience-motion .hero-note{display:none}
/* A distinct scroll scene for each chapter. */
.motion-band,.toolkit-type,.footer-wordmark{display:none}
.digit-window{display:inline-block!important;height:1em;overflow:hidden;width:.62em;vertical-align:bottom;line-height:1em!important;margin:0!important;color:inherit!important;font-size:inherit!important}.digit-strip{display:block!important;line-height:1em!important;font:inherit!important;margin:0!important;color:inherit!important}.digit-strip>span{display:block!important;height:1em;font:inherit!important;line-height:1em!important;color:inherit!important;margin:0!important}.digit-suffix{display:inline!important;font:inherit!important;color:inherit!important;margin:0!important}
@media(prefers-reduced-motion:no-preference){
.journey-motion .motion-band{display:block;overflow:hidden;background:var(--ink);color:var(--mint);padding:65px 0;margin-top:70px}.band-track{display:flex;align-items:center;gap:45px;white-space:nowrap;width:max-content;transform:translateX(var(--band-x,0px));font-family:'Space Grotesk',sans-serif;font-size:clamp(55px,8vw,110px);letter-spacing:-.07em;line-height:1}.band-track i{font-size:.5em;font-style:normal;color:var(--orange)}
.journey-motion .metrics{margin:0;padding:80px 7%;gap:15px;background:#e6eaff;border:0;perspective:1000px}.journey-motion .metrics>div{border:0;border-radius:14px;padding:28px 16px!important;background:var(--paper);transform:translateY(var(--metric-rise,0px)) rotateX(var(--metric-turn,0deg));transform-origin:center bottom;opacity:calc(.25 + var(--metrics-progress,1)*.75)}.journey-motion .metrics strong{letter-spacing:-.04em;line-height:1em;font-variant-numeric:tabular-nums}.journey-motion .metrics>div>span{margin-top:18px}
.journey-motion .experience{position:relative;background:var(--ink);color:var(--paper);padding-top:100px;padding-bottom:100px}.journey-motion .experience .section-heading{margin-bottom:65px}.journey-motion .role{border-color:#3c4238;transform:translateX(calc((1 - var(--role-entry,1))*45px));opacity:calc(.4 + var(--role-entry,1)*.6);transition:color .3s ease}.journey-motion .role .date{color:var(--mint)}.journey-motion .role ul{color:#c7cec1}.journey-motion .role h3{transition:color .3s ease}.journey-motion .role-active h3{color:var(--mint)}.journey-motion .role-active{border-color:var(--mint)}
.journey-motion .expertise{position:relative;background:#e7eddf;overflow:hidden}.journey-motion .expertise .section-heading{position:relative;z-index:3}.journey-motion .skill-grid{position:relative;z-index:2}.journey-motion .skill-grid article{position:relative;border:0;padding:23px;border-radius:15px;min-height:210px;background:var(--mint);transform:translate(var(--deck-x,0px),var(--deck-y,0px)) rotate(var(--deck-rotate,0deg)) scale(var(--deck-scale,1));opacity:var(--deck-opacity,1);transform-origin:center;box-shadow:0 8px 22px #17191b16}.journey-motion .skill-grid article:nth-child(3n+2){background:var(--blue);color:white}.journey-motion .skill-grid article:nth-child(3n+2) p,.journey-motion .skill-grid article:nth-child(3n+2) .num{color:#fff}.journey-motion .skill-grid article:nth-child(3n){background:var(--orange)}.journey-motion .skill-grid h3{margin:15px 0 12px;font-size:22px}.journey-motion .skill-grid p{font-size:15px;line-height:1.45}.journey-motion .skill-grid article:nth-child(1){z-index:6}.journey-motion .skill-grid article:nth-child(2){z-index:5}.journey-motion .skill-grid article:nth-child(3){z-index:4}.journey-motion .skill-grid article:nth-child(4){z-index:3}.journey-motion .skill-grid article:nth-child(5){z-index:2}.journey-motion .skill-grid article:nth-child(6){z-index:1}
.journey-motion .education{padding:55px 0;margin-top:45px}
.journey-motion .contact{overflow:hidden;margin:0;padding:90px 7%;min-height:600px;background:var(--orange);border-radius:calc((1 - var(--contact-progress,1))*80px);clip-path:inset(0 calc((1 - var(--contact-progress,1))*6%) round 28px);transform:translateY(calc((1 - var(--contact-progress,1))*55px))}.journey-motion .contact h2{font-size:clamp(40px,6.5vw,88px);translate:calc((1 - var(--contact-progress,1))*-50px) 0}.journey-motion .contact .button{background:var(--ink);color:white}.journey-motion .contact-links{font-size:16px}
.journey-motion footer{background:var(--ink);color:var(--paper);padding-top:60px;overflow:hidden;max-width:none;position:relative}.journey-motion footer .brand span{color:var(--mint)}.journey-motion footer .copyright{color:#afb6a9;border-color:#40483a}.journey-motion .footer-wordmark{display:flex;width:100%;justify-content:center;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(72px,20vw,280px);letter-spacing:-.07em;line-height:1.1;margin:45px 0 10px;transform:translateY(calc((1 - var(--footer-progress,1))*80px))}.footer-wordmark>span{display:block;color:transparent;background:repeating-linear-gradient(to bottom,var(--mint) 0,var(--mint) 1px,transparent 1px,transparent 7px);background-clip:text;-webkit-background-clip:text;translate:0 var(--letter-wave,0px);transition:translate .3s ease}.footer-wordmark>span:last-child{background-image:repeating-linear-gradient(to bottom,var(--orange) 0,var(--orange) 1px,transparent 1px,transparent 7px)}
}
@media(min-width:901px) and (prefers-reduced-motion:no-preference){
.journey-motion .work-stage{height:250vh}.journey-motion #work{position:sticky;top:0;height:100svh;padding:0;max-width:none;background:var(--paper)}.journey-motion .work-viewport{height:100%;overflow:hidden}.journey-motion .work-track{display:flex;align-items:center;gap:40px;height:100%;width:max-content;padding:55px 7vw;transform:translateX(var(--work-x,0px))}.journey-motion .work-track>.section-heading{display:block;flex:0 0 40vw;width:40vw;margin:0}.journey-motion .work-track .section-heading h2{font-size:clamp(44px,5vw,68px)}.journey-motion .work-track .text-link{display:inline-block;margin-top:35px}.journey-motion .work-track>.project-grid{display:contents}.journey-motion .work-track .project{flex:0 0 47vw;width:47vw;min-height:470px;max-height:calc(100svh - 80px);padding:35px;transform:none!important}.journey-motion .project h3{font-size:clamp(35px,4vw,54px)}
.journey-motion .experience .section-heading{position:sticky;top:30px;width:31%;float:left}.journey-motion .experience .section-heading h2{font-size:44px}.journey-motion .experience .role{margin-left:36%;display:grid;grid-template-columns:1fr;gap:18px;padding:45px 0}.journey-motion .experience::after{content:'';display:block;clear:both}.journey-motion .role h3{font-size:34px}
.journey-motion .toolkit-stage{height:240vh}.journey-motion .expertise{position:sticky;top:0;height:100svh;padding:35px 7%;display:flex;flex-direction:column;justify-content:center}.journey-motion .expertise .section-heading{margin-bottom:25px}.journey-motion .expertise .section-heading h2{font-size:40px}.journey-motion .skill-grid{gap:20px;position:relative;display:grid;grid-template-columns:repeat(3,1fr)}.journey-motion .skill-grid article{min-height:195px}.journey-motion .toolkit-type{display:flex;flex-direction:column;position:absolute;inset:0;align-items:center;justify-content:center;pointer-events:none;z-index:1;font-family:'Space Grotesk',sans-serif;font-size:clamp(65px,10vw,135px);font-weight:600;letter-spacing:-.08em;line-height:.9;opacity:calc(1 - var(--scatter-progress,0))}.toolkit-type>div{display:flex}.toolkit-type span{display:inline-block;transform:translate(calc(var(--scatter-progress,0)*var(--scatter-x)),calc(var(--scatter-progress,0)*var(--scatter-y))) rotate(calc(var(--scatter-progress,0)*var(--scatter-r)))}
}
@media(max-width:900px){.journey-motion .work-track>.section-heading{margin-bottom:35px}.journey-motion .metrics{padding:50px 7%}.journey-motion .contact{padding:55px 7%;min-height:480px}.journey-motion .skill-grid article{min-height:220px}.journey-motion .motion-band{padding:40px 0}.journey-motion .experience{padding-top:55px;padding-bottom:55px}}
@media(max-width:700px){.journey-motion .metrics{grid-template-columns:repeat(2,1fr)}.journey-motion .metrics strong{font-size:32px}.journey-motion .metrics>div>span{font-size:13px}.journey-motion .skill-grid{grid-template-columns:1fr}.journey-motion .skill-grid article{min-height:0}.journey-motion .contact h2{font-size:42px}.journey-motion .footer-wordmark{margin-top:25px}}
@media(prefers-reduced-motion:reduce){.motion-band,.toolkit-type,.footer-wordmark{display:none!important}.work-track{transform:none!important}}
@media(min-width:901px) and (prefers-reduced-motion:no-preference){.journey-motion .toolkit-type{inset:220px 0 60px;font-size:clamp(60px,8vw,105px)}}
/* Full-screen chapters, with native scrolling inside the long animation scenes. */
.brand{letter-spacing:-.055em;font-size:29px}.hero-position{display:flex;flex-direction:column;gap:4px;margin:0 0 22px;line-height:1.4}.hero-position strong{font-size:21px}.hero-position span{font-size:15px}.interactive-name{display:none}
@media(prefers-reduced-motion:no-preference){
html.chapter-mode{scroll-snap-type:y mandatory;scroll-padding-top:0;scroll-behavior:smooth}
.chapter-mode body{overflow-x:clip}.chapter-mode main{max-width:none}.chapter-mode header{position:fixed;top:0;left:0;width:100%;max-width:none;z-index:50;padding:15px 5%;min-height:80px;background:#fafbf8ee;border-bottom:1px solid #17191b10;backdrop-filter:blur(12px)}
.chapter-mode .hero-stage{margin:0;height:200svh;min-height:0;scroll-snap-align:start;scroll-snap-stop:always}
.chapter-mode .hero-stage>.hero{position:sticky;top:0;height:100svh;min-height:100svh;margin:0;border-radius:0;transform:none;display:flex;flex-direction:column;justify-content:center;padding:105px 7% 40px;overflow:hidden}
.chapter-mode .hero>.hero-top,.chapter-mode .hero>h1,.chapter-mode .hero>.hero-position,.chapter-mode .hero>.hero-bottom{opacity:var(--profile-card-progress,0);translate:0 calc((1 - var(--profile-card-progress,0))*40px);animation:none;pointer-events:auto}
.chapter-mode .hero>.hero-top{margin-bottom:10px}.chapter-mode .hero>h1{font-size:clamp(65px,8.5vw,120px);margin:15px 0 20px}.chapter-mode .hero-line{translate:none!important;opacity:1!important}.chapter-mode .hero-character{animation:none!important}.chapter-mode .hero>.hero-bottom{align-items:center;gap:25px}.chapter-mode .hero-bottom p{font-size:18px}.chapter-mode .hero-position{margin-bottom:25px}
.chapter-mode .interactive-name{position:absolute;inset:80px 0 0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 7%;opacity:calc(1 - var(--name-progress,0));transform:scale(calc(1 - var(--name-progress,0)*.16));pointer-events:auto}
.chapter-mode .hero[data-hero-state='profile'] .interactive-name{pointer-events:none;visibility:hidden}
.interactive-name>.eyebrow{margin-bottom:30px}.interactive-name-type{font-family:'Space Grotesk',sans-serif;font-size:clamp(64px,11vw,154px);letter-spacing:-.075em;line-height:1.05;perspective:1000px;transform:rotateX(var(--name-rx,0deg)) rotateY(var(--name-ry,0deg));transition:transform .3s ease;cursor:pointer}.name-row{white-space:nowrap}.name-letter{display:inline-block;white-space:pre;translate:0 var(--name-lift,0px);transition:translate .22s ease;animation:character-rise .9s cubic-bezier(.16,1,.3,1) var(--name-delay,0ms) both}.name-dot{color:var(--blue)}.opening-position{display:flex;flex-direction:column;gap:5px;margin-top:32px;line-height:1.5}.opening-position strong{font-size:20px}.opening-position span{font-size:15px}.scroll-cue{font-size:13px;margin-top:30px;letter-spacing:.05em}
.chapter-mode .profile{min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always;align-items:center;padding:110px 7% 50px;gap:35px}.chapter-mode .profile .reading-copy{font-size:clamp(23px,2.15vw,31px)!important;line-height:1.45!important}.chapter-mode .profile h2{font-size:clamp(38px,4vw,54px);margin-bottom:25px}
.chapter-mode .motion-band{height:100svh;min-height:0;margin:0;display:flex;align-items:center;justify-content:center;padding:110px 6% 50px;scroll-snap-align:start;scroll-snap-stop:always;overflow:hidden}.chapter-mode .band-track{width:100%;max-width:1300px;justify-content:center;gap:clamp(14px,2.5vw,40px);font-size:clamp(27px,5.8vw,82px);line-height:1.3;letter-spacing:-.06em;transform:translateY(var(--strip-shift,0px));white-space:nowrap}.chapter-mode .band-track>span{display:block}.chapter-mode .band-track i{flex-shrink:0}
.chapter-mode .metrics{min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always;display:grid;grid-template-columns:repeat(3,1fr);align-content:center;padding:110px 10% 50px;gap:22px}.chapter-mode .metrics>div{min-height:170px;padding:28px!important;display:flex;flex-direction:column;justify-content:center}.chapter-mode .metrics strong{font-size:48px}.chapter-mode .metrics>div>span{font-size:15px}
.chapter-mode .work-stage{height:200svh;scroll-snap-align:start;scroll-snap-stop:always}.chapter-mode #work{position:sticky;top:0;height:100svh;padding:0;background:var(--paper)}.chapter-mode .work-viewport{position:relative;overflow:hidden;height:100%}.chapter-mode .work-viewport>.section-heading{position:absolute;top:105px;left:7%;right:7%;display:flex;align-items:end;justify-content:space-between;gap:20px;margin:0;height:95px;z-index:2}.chapter-mode .work-viewport>.section-heading .eyebrow{margin-bottom:12px}.chapter-mode .work-viewport>.section-heading h2{font-size:36px;line-height:1.1}.chapter-mode .work-viewport>.section-heading h2 br{display:none}.chapter-mode .work-viewport>.section-heading h2 .word-mask{margin-right:.2em}.chapter-mode .work-track{display:flex;align-items:center;gap:0;height:100%;width:max-content;padding:225px 0 35px;transform:translateX(var(--work-x,0px))}.chapter-mode .work-track>.project-grid{display:contents}.chapter-mode .project-panel{width:var(--panel-width,100vw);flex:0 0 var(--panel-width,100vw);padding:0 7%;height:100%;display:flex;align-items:center;justify-content:center}.chapter-mode .work-track .project{flex:1;width:100%;max-width:1040px;min-height:0;height:100%;max-height:470px;padding:28px 35px;transform:none!important}.chapter-mode .project h3{font-size:clamp(34px,3.3vw,48px);margin:25px 0 12px}.chapter-mode .project-stats{margin:20px 0}.chapter-mode .project-top{flex-direction:row}.chapter-mode .project-link{margin-top:auto}
.chapter-mode .experience{padding:0}.chapter-mode .experience>.section-heading{position:sticky;top:80px;height:110px;margin:0;padding:24px 7%;width:100%;float:none;background:var(--ink);z-index:5;display:block}.chapter-mode .experience .section-heading .eyebrow{margin-bottom:10px}.chapter-mode .experience .section-heading h2{font-size:35px}.chapter-mode .experience .section-heading h2 .word-mask{margin-right:.2em}.chapter-mode .experience .chapter-role{height:100svh;min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always;margin:0!important;padding:210px 12% 55px;display:flex;flex-direction:column;justify-content:center;gap:24px;transform:none;opacity:1;border:0}.chapter-mode .chapter-role h3{font-size:clamp(32px,5vw,64px)}.chapter-mode .chapter-role .role-title{font-size:19px}.chapter-mode .chapter-role h4{font-size:22px;line-height:1.4}.chapter-mode .chapter-role ul{font-size:18px;line-height:1.6;max-width:900px}.chapter-mode .chapter-role .date{font-size:15px}
.chapter-mode .toolkit-stage{height:240svh;scroll-snap-align:start;scroll-snap-stop:always}.chapter-mode .expertise{position:sticky;top:0;height:100svh;padding:115px 7% 35px;justify-content:center}.chapter-mode .expertise .section-heading{margin-bottom:20px}.chapter-mode .expertise .section-heading h2{font-size:36px}.chapter-mode .skill-grid{gap:16px}.chapter-mode .skill-grid article{min-height:0;padding:20px}.chapter-mode .skill-grid h3{font-size:20px;margin:12px 0 10px}.chapter-mode .skill-grid p{font-size:14px;line-height:1.45}
.chapter-mode .education{min-height:100svh;margin:0;scroll-snap-align:start;scroll-snap-stop:always;padding:110px 10% 70px;border:0;display:flex;flex-direction:column;justify-content:center;gap:20px;background:#e7eddf}.chapter-mode .education h3{font-size:clamp(32px,5vw,62px);max-width:850px}.chapter-mode .education p{font-size:23px}.chapter-mode .education>span:last-child{font-size:18px}
.chapter-mode .contact{height:100svh;min-height:100svh;padding:110px 7% 50px;display:flex;flex-direction:column;justify-content:center;scroll-snap-align:start;scroll-snap-stop:always}.chapter-mode .contact h2{font-size:clamp(40px,6vw,80px)}.chapter-mode .contact .button{align-self:start}
.chapter-mode footer{min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always;padding:120px 7% 40px;align-content:center}.chapter-mode .footer-wordmark{font-size:clamp(44px,11vw,190px);width:100%;margin-top:40px}.chapter-mode footer .brand{font-size:29px}
}
@media(max-width:900px) and (prefers-reduced-motion:no-preference){
.chapter-mode .work-stage{height:auto}.chapter-mode #work{height:auto;position:relative}.chapter-mode .work-viewport{height:auto;overflow:visible}.chapter-mode .work-viewport>.section-heading{position:relative;inset:auto;padding:110px 7% 30px;height:auto;display:block;min-height:220px}.chapter-mode .work-viewport>.section-heading h2{font-size:34px}.chapter-mode .work-viewport>.section-heading .text-link{display:inline-block;margin-top:20px}.chapter-mode .work-track{height:auto;display:block;width:100%;padding:0;transform:none!important}.chapter-mode .work-track>.project-grid{display:block}.chapter-mode .project-panel{width:100%;min-height:100svh;padding:110px 7% 45px;scroll-snap-align:start;scroll-snap-stop:always}.chapter-mode .work-track .project{height:auto;min-height:500px;max-height:none;width:100%;padding:28px}.chapter-mode .project-top{flex-direction:column}.chapter-mode .project h3{font-size:38px}.chapter-mode .project-stats{flex-wrap:wrap}
.chapter-mode .toolkit-stage{height:auto}.chapter-mode .expertise{position:relative;height:auto;padding:0}.chapter-mode .expertise>.section-heading{padding:110px 7% 30px;margin:0;min-height:240px}.chapter-mode .skill-grid{display:block}.chapter-mode .skill-grid article{border-radius:0;min-height:100svh;margin:0;padding:150px 10% 70px;display:flex;flex-direction:column;justify-content:center;transform:none!important;opacity:1!important;scroll-snap-align:start;scroll-snap-stop:always}.chapter-mode .skill-grid h3{font-size:36px;margin:25px 0}.chapter-mode .skill-grid p{font-size:21px;line-height:1.6}.chapter-mode .toolkit-type{display:none}
}
@media(max-width:700px) and (prefers-reduced-motion:no-preference){
.chapter-mode header{padding:13px 6%;min-height:112px;gap:6px}.chapter-mode header .brand{font-size:25px}.chapter-mode header nav{font-size:13px}.chapter-mode header .cv{font-size:12px;padding:8px 12px}.chapter-mode .hero-stage>.hero{padding:145px 7% 40px}.chapter-mode .interactive-name{inset:112px 0 0;padding:30px 5%}.interactive-name-type{font-size:clamp(46px,13.5vw,90px)}.interactive-name>.eyebrow{font-size:12px;margin-bottom:25px}.opening-position strong{font-size:18px}.opening-position span{font-size:14px}.chapter-mode .hero>h1{font-size:60px}.chapter-mode .hero-top{gap:6px}.chapter-mode .hero-bottom{flex-direction:column;align-items:start!important}.chapter-mode .hero-bottom p{font-size:16px}.chapter-mode .hero-position strong{font-size:19px}.chapter-mode .profile{padding:145px 7% 35px;display:flex;flex-direction:column;justify-content:center;align-items:start;gap:15px}.chapter-mode .profile .reading-copy{font-size:22px!important;line-height:1.5!important}.chapter-mode .profile h2{font-size:35px;margin-bottom:20px}.chapter-mode .motion-band{padding:145px 6% 45px}.chapter-mode .band-track{flex-direction:column;white-space:normal;font-size:56px;line-height:1.1;gap:22px}.chapter-mode .band-track i{font-size:26px}.chapter-mode .metrics{grid-template-columns:repeat(2,1fr);padding:145px 7% 40px;gap:14px}.chapter-mode .metrics>div{min-height:125px;padding:18px!important}.chapter-mode .metrics strong{font-size:33px}.chapter-mode .metrics>div>span{font-size:13px;line-height:1.4;margin-top:15px}.chapter-mode .experience .chapter-role{height:auto;min-height:100svh;padding:225px 7% 45px;gap:20px}.chapter-mode .experience>.section-heading{top:112px;height:105px;padding:18px 7%}.chapter-mode .experience .section-heading h2{font-size:31px}.chapter-mode .chapter-role h3{font-size:34px}.chapter-mode .chapter-role .role-title{font-size:17px}.chapter-mode .chapter-role h4{font-size:18px}.chapter-mode .chapter-role ul{font-size:16px}.chapter-mode .education{padding:145px 7% 50px}.chapter-mode .education h3{font-size:36px}.chapter-mode .education p{font-size:20px}.chapter-mode .contact{height:auto;padding:145px 7% 45px}.chapter-mode .contact h2{font-size:38px}.chapter-mode footer{padding:150px 7% 50px}.chapter-mode .footer-wordmark{font-size:10.5vw}
}
@media(prefers-reduced-motion:reduce){html{scroll-snap-type:none}.hero-position{display:flex}.interactive-name{display:none!important}}
/* Shared opening elements travel into the profile card. */
@media(prefers-reduced-motion:no-preference){
.chapter-mode .interactive-name{opacity:1;transform:none;overflow:visible}
.chapter-mode .interactive-name-type{line-height:.94}
.chapter-mode .name-row{width:max-content;margin:0 auto;transform-origin:top left}
.chapter-mode .interactive-name>.eyebrow,.chapter-mode .opening-position{transform-origin:top left}
.chapter-mode .opening-position{text-align:left}
.chapter-mode .hero>.hero-top,.chapter-mode .hero>h1,.chapter-mode .hero>.hero-position{opacity:0;translate:none}
.chapter-mode .hero>.hero-bottom{opacity:var(--hero-details-progress,0);translate:0 calc((1 - var(--hero-details-progress,0))*35px)}
.chapter-mode .hero[data-hero-state='profile']>.hero-top,.chapter-mode .hero[data-hero-state='profile']>h1,.chapter-mode .hero[data-hero-state='profile']>.hero-position{opacity:1;visibility:visible}
.chapter-mode .hero-top .location{opacity:var(--hero-details-progress,0)}
.chapter-mode .hero[data-hero-state='transition'] .interactive-name{pointer-events:none}
/* A complete impact cluster, retaining the number rolls and card flips. */
.chapter-mode .impact-screen{height:100svh;min-height:0;scroll-snap-align:start;scroll-snap-stop:always;padding:110px 7% 40px;background:#e6eaff;display:flex;flex-direction:column;justify-content:center;gap:26px;overflow:hidden}
.chapter-mode .impact-screen .motion-band{height:auto;min-height:0;flex:0 0 auto;padding:25px 3%;border-radius:16px;scroll-snap-align:none;background:var(--ink)}
.chapter-mode .impact-screen .band-track{font-size:clamp(26px,4.5vw,65px);gap:2vw;transform:translateX(calc(var(--band-x,0px)*.07)) translateY(var(--strip-shift,0px))}
.chapter-mode .impact-screen .metrics{min-height:0;padding:0;margin:0;scroll-snap-align:none;gap:18px;background:transparent;flex:0 0 auto}
.chapter-mode .impact-screen .metrics>div{min-height:140px;padding:22px!important}
.chapter-mode .impact-screen .metrics strong{font-size:44px}
.chapter-mode .impact-screen .metrics>div>span{margin-top:12px}
/* Restore the flowing career timeline from the earlier build. */
.chapter-mode .experience{padding:100px 7%;scroll-snap-align:start;scroll-snap-stop:always}
.chapter-mode .experience>.section-heading{position:relative;top:auto;height:auto;padding:0;margin-bottom:65px;width:auto;background:transparent}
.chapter-mode .experience .role{scroll-snap-align:none;transform:translateX(calc((1 - var(--role-entry,1))*45px));opacity:calc(.4 + var(--role-entry,1)*.6)}
}
@media(min-width:901px) and (prefers-reduced-motion:no-preference){
.chapter-mode .experience>.section-heading{position:sticky;top:120px;width:31%;float:left;margin-bottom:0}
.chapter-mode .experience .section-heading h2{font-size:44px}
.chapter-mode .experience .role{margin-left:36%;display:grid;grid-template-columns:1fr;gap:18px;padding:45px 0}
}
@media(max-width:700px) and (prefers-reduced-motion:no-preference){
.chapter-mode .impact-screen{padding:135px 6% 28px;min-height:0;gap:18px}
.chapter-mode .impact-screen .motion-band{padding:22px 12px}
.chapter-mode .impact-screen .band-track{flex-direction:row;white-space:nowrap;font-size:clamp(18px,5.1vw,32px);gap:8px;line-height:1.2}
.chapter-mode .impact-screen .band-track i{font-size:16px}
.chapter-mode .impact-screen .metrics{grid-template-columns:repeat(2,1fr);gap:12px}
.chapter-mode .impact-screen .metrics>div{min-height:115px;padding:16px!important}
.chapter-mode .impact-screen .metrics strong{font-size:32px}
.chapter-mode .impact-screen .metrics>div>span{font-size:13px}
.chapter-mode .experience{padding:145px 7% 65px}
.chapter-mode .experience>.section-heading{position:relative;top:auto;height:auto;padding:0;margin-bottom:35px}
}
/* Individual glyphs interpolate position, size, and variable font weight. */
.hero-scroll-cue{display:none}
@media(prefers-reduced-motion:no-preference){
.chapter-mode .interactive-name{opacity:0!important;visibility:visible!important;pointer-events:auto}
.chapter-mode .interactive-name>.eyebrow{font-weight:500}
.chapter-mode .interactive-name-type{font-weight:400}
.chapter-mode .opening-position{font-size:20px;font-weight:500;margin-top:32px;text-align:center}
.chapter-mode .opening-location{font-size:15px;font-weight:700;margin-top:12px}
.flight-character{display:inline-block;white-space:pre}
.chapter-mode .hero-flight{position:absolute;inset:0;pointer-events:none;z-index:3}
.travel-glyph{position:absolute;display:block;white-space:pre;line-height:normal;letter-spacing:0;transform-origin:top left}
.chapter-mode .hero-flight{visibility:visible}
.chapter-mode .hero-scroll-cue{display:block;position:absolute;bottom:22px;right:7%;font-size:13px;font-weight:500;letter-spacing:.05em;opacity:0}
.chapter-mode .hero[data-hero-state='profile'] .hero-scroll-cue{opacity:1}
.chapter-mode .hero-position>span{opacity:var(--hero-details-progress,0)}
.chapter-mode .expertise .education{min-height:0;height:auto;scroll-snap-align:none;margin:20px 0 0;padding:16px 0 0;border-top:1px solid #17191b33;background:transparent;display:grid;grid-template-columns:1fr 2fr;gap:3px 20px;z-index:4;opacity:var(--deck-opacity,1)}
.chapter-mode .expertise .education .eyebrow{grid-row:span 3;font-size:12px}
.chapter-mode .expertise .education h3{font-size:20px}
.chapter-mode .expertise .education p,.chapter-mode .expertise .education>span:last-child{font-size:14px}
.chapter-mode .expertise .skill-grid{flex-shrink:0}
}
.expertise .education{margin:30px 0 0;padding:20px 0 0}
@media(max-width:900px) and (prefers-reduced-motion:no-preference){
.chapter-mode .expertise .education{display:flex;min-height:0;padding:35px 10%;margin:0;gap:12px;scroll-snap-align:none}
.chapter-mode .expertise .education h3{font-size:24px}
}
@media(max-width:700px) and (prefers-reduced-motion:no-preference){
.chapter-mode .opening-position{font-size:18px;max-width:100%;margin-top:28px}
.chapter-mode .opening-location{font-size:14px}
}
@media(prefers-reduced-motion:no-preference){.chapter-mode .opening-position{display:block}.chapter-mode .expertise .education{opacity:clamp(0,calc(var(--toolkit-progress,1)*3 - 2),1)}}
.flight-character{font:inherit!important;letter-spacing:inherit}
@media(min-width:901px) and (prefers-reduced-motion:no-preference){.chapter-mode .expertise{padding:105px 7% 30px}.chapter-mode .expertise .skill-grid article{padding:16px}.chapter-mode .expertise .education{margin-top:15px;padding-top:12px}}
/* Generous desktop spacing and a distinct entrance for each chapter. */
@media(min-width:901px){.chapter-mode .opening-position{margin-top:clamp(52px,7svh,86px)}.chapter-mode .hero>h1{margin-bottom:36px}}

@media(prefers-reduced-motion:no-preference){
html.chapter-mode.section-crossfade{scroll-snap-type:none}
.section-crossfade .fade-anchor{position:relative;scroll-snap-align:start;scroll-snap-stop:normal}
.section-crossfade .fade-surface{opacity:var(--section-opacity,1);translate:none;will-change:opacity,clip-path}
.section-crossfade .fade-surface.viewport-pinned{position:fixed!important;top:var(--viewport-top,0px)!important;left:0;right:0;width:100%;margin:0!important}
.section-crossfade .profile{background:var(--paper)}
.section-crossfade .fade-surface[data-transition='curtain']{clip-path:inset(calc((1 - var(--background-entry,1))*100%) 0 0 0)}
.section-crossfade .fade-surface[data-transition='side']{clip-path:inset(0 calc((1 - var(--background-entry,1))*100%) 0 0)}
.section-crossfade .fade-surface[data-transition='iris']{clip-path:circle(calc(150% * var(--background-entry,1)) at 50% 100%)}
.section-crossfade .fade-surface>.entry-content{opacity:var(--content-local,1)}
.section-crossfade .fade-surface:not(.profile):not(.experience)>.entry-content{translate:0 calc((1 - var(--content-local,1))*22px)}
.section-crossfade .experience>.role{opacity:calc(var(--content-local,1)*(.4 + var(--role-entry,1)*.6))}
.section-crossfade .contact{transform:none;border-radius:0}
.section-crossfade .contact h2{translate:0 calc((1 - var(--content-local,1))*22px)}
.section-crossfade .expertise .toolkit-type{opacity:calc((1 - var(--scatter-progress,0))*var(--content-entry,1))}
.section-crossfade .expertise .education{opacity:calc(clamp(0,var(--toolkit-progress,1)*3 - 2,1)*var(--content-entry,1))}
.section-crossfade .work-viewport,.section-crossfade .project,.section-crossfade .project-panel{clip-path:none!important}
}
@media(prefers-reduced-motion:reduce){.fade-surface,.entry-content{opacity:1!important;translate:none!important;clip-path:none!important}}

/* Keep the same glyphs after landing; no text-layer replacement at the endpoint. */
@media(prefers-reduced-motion:no-preference){
.chapter-mode .hero>h1{opacity:0!important}
.chapter-mode .hero>.hero-top{opacity:1;translate:none}
.chapter-mode .hero>.hero-top>.eyebrow,.chapter-mode .hero>.hero-top>.location{opacity:0}
.chapter-mode .hero>.hero-position{opacity:var(--hero-details-progress,0);translate:none}
.chapter-mode .hero>.hero-position>strong{opacity:0}
.chapter-mode .hero .hero-scroll-cue{opacity:0!important}
.chapter-mode .hero-flight{visibility:visible!important}
}
.hero h1 .period{color:var(--blue)}

/* Compact navigation with a right-hand, focus-contained menu. */
header.site-header,.chapter-mode header.site-header{position:fixed;inset:0 0 auto;z-index:50;max-width:none;min-height:80px;padding:18px 5%;display:flex;flex-wrap:nowrap;justify-content:space-between;background:#fafbf8e8;backdrop-filter:blur(16px);gap:20px}
.menu-toggle,.menu-close{display:inline-flex;align-items:center;justify-content:center;gap:24px;border:1px solid var(--ink);border-radius:50px;background:transparent;color:var(--ink);font:600 14px 'DM Sans',sans-serif;padding:10px 18px;cursor:pointer}
.menu-toggle span,.menu-close span{font-size:20px;line-height:1}
.menu-toggle:hover,.menu-close:hover{background:var(--mint)}
button:focus-visible{outline:3px solid var(--blue);outline-offset:4px}
.site-menu{position:fixed;inset:12px 12px 12px auto;margin:0;width:min(380px,calc(100vw - 24px));height:calc(100svh - 24px);max-height:none;max-width:none;padding:22px 30px 30px;border:0;border-radius:22px;background:var(--paper);color:var(--ink);overflow:auto;transform-origin:top right;box-shadow:0 20px 70px #17191b33}
.site-menu::backdrop{background:#17191b8c;backdrop-filter:blur(4px)}
.menu-top{display:flex;align-items:center;justify-content:space-between;gap:15px}
.site-menu nav{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:55px 0 30px;width:auto;font-family:'Space Grotesk',sans-serif;font-size:32px;font-weight:500;letter-spacing:-.04em}
.site-menu nav>a{padding:2px 0;border:0;line-height:1.3}
.site-menu nav>a:hover,.site-menu nav>a[aria-current]{color:var(--blue)}
.site-menu .cv{display:inline-flex;margin:0}
.menu-contact{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding-top:45px;font-size:14px}
.menu-contact .eyebrow{margin-bottom:3px;font-size:11px;color:#626a60}
.menu-contact>span{font-size:12px;color:#626a60;margin-top:10px}
.menu-contact a:hover{text-decoration:underline;text-underline-offset:4px}
@media(max-width:700px){header.site-header,.chapter-mode header.site-header{padding:18px 6%;min-height:80px}.site-menu nav{margin-top:40px;font-size:30px}.menu-contact{padding-top:30px}}
@media(prefers-reduced-motion:no-preference){
.page-transitions main{max-width:none}
.page-transitions .page-intro{min-height:100svh;margin:0;border-radius:0;padding:130px 7% 60px;display:flex;flex-direction:column;justify-content:center}
.page-transitions .spec-list,.page-transitions .journal,.page-transitions .lab-grid{padding:0;display:block}
.page-transitions .page-scene{min-height:100svh;padding:130px 7% 70px;border:0;border-radius:0;background:var(--paper);align-content:center}
.page-transitions .page-scene[data-scene='1'],.page-transitions .page-scene[data-scene='4']{background:#e6eaff}
.page-transitions .page-scene[data-scene='2']{background:#eef0e9}
.page-transitions .page-scene[data-scene='3']{background:#ffe1d5}
.page-transitions .lab-grid .page-scene{justify-content:center;align-items:flex-start;background:#e6eaff}
.page-transitions .lab-grid .page-scene[data-scene='1']{background:#ffe1d5}
.page-transitions .lab-grid h2{font-size:clamp(32px,5vw,64px);max-width:100%}
.page-transitions .lab-grid .button{margin-top:0}
.page-transitions .spec-list h2,.page-transitions .journal h2{font-size:clamp(30px,3.5vw,48px)}
.page-transitions .page-scene p{font-size:18px}
.page-transitions footer{min-height:100svh;padding:130px 7% 60px;align-content:center;background:var(--ink);color:var(--paper);max-width:none}
.page-transitions .footer-wordmark{font-size:clamp(44px,11vw,190px);margin-top:40px}
.page-transitions .fade-surface{transition:none;transform:none}
.page-transitions .fade-surface .word-slide{transform:none!important}
@media(max-width:700px){.page-transitions .page-scene{padding:115px 7% 50px}.page-transitions .page-scene p{font-size:16px}.page-transitions .lab-grid h2{font-size:34px}.page-transitions .page-intro{padding-top:115px}}
}
/* Keep the static pages clear of the fixed navigation too. */
@media(prefers-reduced-motion:reduce){main{padding-top:80px}}

/* Keep every route within the viewport; grid children can wrap instead of expanding it. */
html,body{max-width:100%;overflow-x:clip}
main,section,article,.section-heading,.role>*,.profile>*,.spec-list article>*,.journal article>*,.skill-grid>*,.hero-bottom>*{min-width:0}
h1,h2,h3,h4,p,.tags,.contact-links{overflow-wrap:anywhere}
.section-heading{flex-wrap:wrap}
.word-mask{max-width:100%;padding-right:.06em;margin-right:-.06em}
.chapter-mode .impact-screen .band-track{max-width:1300px;margin-inline:auto;font-size:clamp(24px,3.6vw,65px);transform:none}
.chapter-mode .impact-screen .motion-band{overflow:visible}
/* Retain the choreography when it fits; allow taller content to remain readable. */
@media(prefers-reduced-motion:no-preference){
.chapter-mode .hero-stage>.hero{height:auto;min-height:max(100svh,650px)}
.chapter-mode .hero-stage{height:max(200svh,1300px)}
.chapter-mode .impact-screen{height:auto;min-height:100svh;overflow:visible}
.chapter-mode .contact{height:auto;min-height:100svh}
.chapter-mode .work-viewport>.section-heading{height:auto;min-height:95px}
.chapter-mode .project-panel .project{flex:0 1 1040px;max-width:100%}
}
@media(max-width:900px),(hover:none),(pointer:coarse){
html,body{touch-action:pan-y pinch-zoom}
.profile,.spec-list article,.journal article{grid-template-columns:1fr}
.spec-list article>div,.journal article>p:last-child{grid-column:auto}
.project-grid,.lab-grid{grid-template-columns:1fr}
.role{grid-template-columns:1fr}
.journey-motion .experience .section-heading,.chapter-mode .experience>.section-heading{position:relative;top:auto;float:none;width:auto}
.journey-motion .experience .role,.chapter-mode .experience .role{margin-left:0;transform:none}
.chapter-mode .impact-screen .band-track{font-size:clamp(16px,4.6vw,36px);gap:8px;flex-direction:row;white-space:nowrap}
.chapter-mode .impact-screen .band-track i{font-size:.65em}
.chapter-mode .work-stage,.chapter-mode .toolkit-stage{height:auto}
.chapter-mode #work,.chapter-mode .expertise{height:auto;position:relative}
.chapter-mode .work-viewport{height:auto;overflow:visible}
.chapter-mode .work-viewport>.section-heading{position:relative;inset:auto;padding:110px 7% 30px;display:block;margin:0}
.chapter-mode .work-viewport>.section-heading .text-link{display:inline-block;margin-top:20px}
.chapter-mode .work-track{height:auto;display:block;width:100%;padding:0;transform:none!important}
.chapter-mode .work-track>.project-grid{display:block}
.chapter-mode .project-panel{width:100%;min-height:100svh;height:auto;padding:110px 7% 45px}
.chapter-mode .work-track .project{height:auto;min-height:0;max-height:none;width:100%;padding:28px}
.chapter-mode .project-top{flex-direction:column}
.chapter-mode .project-stats{flex-wrap:wrap}
.chapter-mode .expertise{padding:0}
.chapter-mode .expertise>.section-heading{padding:110px 7% 30px;margin:0}
.chapter-mode .skill-grid{display:block}
.chapter-mode .skill-grid article{border-radius:0;min-height:100svh;padding:115px 10% 55px;display:flex;flex-direction:column;justify-content:center;transform:none!important;opacity:1!important}
.chapter-mode .toolkit-type{display:none}
.chapter-mode .expertise .education{display:flex;flex-direction:column;padding:35px 10%;gap:12px;opacity:1}
.chapter-mode .hero-top{align-items:flex-start;flex-direction:column;gap:6px}
.chapter-mode .hero-bottom{flex-direction:column;align-items:flex-start}
.chapter-mode .hero>h1{font-size:clamp(46px,13.5vw,90px)}
.chapter-mode .interactive-name-type{font-size:clamp(42px,13.5vw,90px)}
.chapter-mode .opening-position{font-size:18px;margin-top:28px}
.chapter-mode .hero-stage>.hero{min-height:max(100svh,700px)}
.chapter-mode .hero-stage{height:max(200svh,1400px)}
}
/* Short wide windows need flowing cards rather than a clipped pinned stage. */
@media(min-width:901px) and (max-height:800px) and (prefers-reduced-motion:no-preference){
.chapter-mode .work-stage,.chapter-mode .toolkit-stage{height:auto}
.chapter-mode #work,.chapter-mode .expertise{position:relative;height:auto;min-height:100svh}
.chapter-mode .work-viewport{height:auto;overflow:visible}
.chapter-mode .work-viewport>.section-heading{position:relative;inset:auto;height:auto;padding:110px 7% 30px}
.chapter-mode .work-track{display:block;width:100%;height:auto;padding:0;transform:none!important}
.chapter-mode .work-track>.project-grid{display:block}
.chapter-mode .project-panel{height:auto;min-height:100svh;width:100%;padding:30px 7% 60px}
.chapter-mode .work-track .project{height:auto;min-height:0;max-height:none}
.chapter-mode .expertise{padding:110px 7% 50px;overflow:visible}
.chapter-mode .skill-grid article{transform:none!important;opacity:1!important}
.chapter-mode .expertise .education{opacity:1}
.chapter-mode .toolkit-type{display:none}
}

/* The opening banner fits the visible Chrome viewport on landscape phones. */
@media(orientation:landscape) and (max-height:500px){
header.site-header,.chapter-mode header.site-header{min-height:64px;padding:10px 5%}
header.site-header .brand{font-size:24px}
.chapter-mode .interactive-name{inset:64px 0 auto;height:calc(100svh - 64px);padding:8px 5%;gap:8px;justify-content:center}
.chapter-mode .interactive-name>.eyebrow{font-size:11px;margin:0}
.chapter-mode .interactive-name-type{font-size:clamp(28px,10svh,50px);line-height:.94}
.chapter-mode .opening-position{font-size:14px;line-height:1.3;margin:0}
.chapter-mode .opening-location{font-size:12px;line-height:1.3;margin:0}
.chapter-mode .scroll-cue{font-size:11px;line-height:1.3;margin:0}
.chapter-mode .hero-stage>.hero{padding:88px 7% 30px;min-height:max(100svh,500px)}
.chapter-mode .hero-stage{height:max(200svh,1000px)}
.chapter-mode .hero>h1{font-size:48px;margin:12px 0 20px}
.chapter-mode .hero-position strong{font-size:18px}
.chapter-mode .profile,.chapter-mode .experience,.chapter-mode .contact{padding-top:88px}
.chapter-mode .work-viewport>.section-heading,.chapter-mode .project-panel,.chapter-mode .expertise>.section-heading,.chapter-mode .skill-grid article{padding-top:88px}
.page-transitions .page-intro,.page-transitions .page-scene{padding-top:88px}
}

/* Landscape cards use their full content height and remain in the reading flow. */
.landscape-flow .fade-anchor{height:auto!important;z-index:auto!important}
.landscape-flow .fade-surface{clip-path:none!important;opacity:1!important;overflow:visible}
.landscape-flow .fade-surface>.entry-content{translate:none!important}
.landscape-flow .experience>.section-heading{position:relative;top:auto;float:none}
.landscape-flow .footer-wordmark{transform:none}
.landscape-flow .project-panel,.landscape-flow .page-scene{height:auto;max-height:none}
.landscape-flow .scroll-reveal{opacity:1;transform:none;transition:none}
.landscape-flow .scroll-reveal .word-slide{transform:none;transition:none}
