:root{--bg:#fafafa;--ink:#101010;--muted:#737373;--line:#dedede;--dark:#080808;--display:'Instrument Serif',Georgia,serif;--sans:Inter,Arial,sans-serif;--mono:'IBM Plex Mono',monospace;--surface:#222325;--field:#292a2d;--chat-ink:#eeeeef;--chat-muted:#9b9ba0;--chat-line:#343538}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:84px}body{margin:0;color:var(--ink);background:var(--bg);font-family:var(--sans);font-size:16px;line-height:1.7;letter-spacing:0}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:5px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #898989;outline-offset:5px}button:disabled{cursor:not-allowed;opacity:.45}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--display);font-weight:400;letter-spacing:0;line-height:1.02}em{font-weight:400}button{border:0}.wrap{max-width:1376px;margin:auto;padding-left:64px;padding-right:64px}.section{padding-top:100px;padding-bottom:100px}.eyebrow,.project-kicker,.date,.stack{font-family:var(--mono);font-size:12px;line-height:1.6;font-weight:400}.muted{color:var(--muted)}.small{font-size:14px}.section-top{display:flex;justify-content:space-between;gap:20px;margin-bottom:34px}h2{font-size:72px}h3{font-size:43px}h2 em{color:#888}.site-header{height:82px;position:absolute;z-index:5;top:0;left:0;right:0;padding:0 48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff24;color:#fff}.wordmark{font-family:var(--display);font-size:38px;line-height:1}.wordmark span{color:#888;font-family:var(--mono);font-size:22px}.site-header nav{display:flex;gap:32px;font-size:14px}.ask-nav{font-size:13px;color:#e9e9e9;background:#ffffff0b;border:1px solid #ffffff3a;padding:9px 16px;border-radius:4px}.hero{position:relative;background:var(--dark);color:white;overflow:hidden}.hero #net{position:absolute;inset:0;opacity:.65;pointer-events:auto}.hero-inner{position:relative;z-index:1;padding-top:122px;padding-bottom:26px;pointer-events:none}.hero-inner a,.hero-inner button{pointer-events:auto}.hero-meta{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:#aaa}.hero h1{font-size:152px;line-height:1;margin:44px 0;text-shadow:0 2px 40px #000}.hero h1 em{color:#b6b6b6}.hero-bottom{display:flex;justify-content:space-between;gap:40px}.hero-lead{font-size:24px;line-height:1.35}.hero-description{color:#a7a7a7;font-size:16px;margin-top:20px}.hero-actions{display:flex;align-items:center;gap:26px;margin-top:29px}.solid-button,.quiet-button{font-size:13px;display:inline-flex;align-items:center;gap:32px;padding:12px 18px;min-height:44px}.solid-button{background:#f3f3f3;color:#101010;border-radius:3px}.quiet-button{background:transparent;color:#eee;padding-left:0;padding-right:0}.solid-button:hover{background:white;text-decoration:none}.hero-note{align-self:flex-end;text-align:right;font-size:11px;font-family:var(--mono);line-height:2.1}.hero-note span{display:block}.hero-note .muted{color:#909090}.hero-note pre{height:88px;font-size:13px;line-height:1.35;color:#b0b0b0;margin:0 0 20px;overflow:hidden}.hero-footer{display:flex;justify-content:space-between;margin-top:64px;border-top:1px solid #ffffff25;padding-top:19px;font-size:10px;font-family:var(--mono);color:#949494}.hero-footer a{color:#d3d3d3}.hero-footer a span{margin-left:20px}.work h2{margin-bottom:66px}.project{display:grid;grid-template-columns:40px minmax(0,1fr) 230px;gap:28px;border-top:1px solid var(--line);padding:42px 0 60px}.project-number{font-family:var(--mono);font-size:12px;color:#999}.project-kicker{color:#737373;margin-bottom:18px}.project-main>p{max-width:650px;color:#626262;margin-top:22px}.project-art{align-self:center;text-align:center;color:#949494}.project-art pre{height:210px;overflow:hidden;font-family:var(--mono);font-size:9px;line-height:1.1;white-space:pre}.project-art>span{font-family:var(--mono);font-size:10px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;margin:36px 0}.metrics strong{font-family:var(--display);font-size:49px;display:block;font-weight:400;line-height:1.2}.metrics span{display:block;font-size:12px;color:#747474;line-height:1.5;margin-top:7px}.project-details{display:grid;grid-template-columns:1fr 1fr;gap:28px;border-top:1px solid var(--line);padding-top:24px}.project-details p{font-size:14px;color:#666;margin-top:11px}.project-main .stack{font-size:10px;line-height:1.9;margin-top:25px;color:#858585}.compact{padding-bottom:0}.line-link{display:inline-flex;gap:48px;border-bottom:1px solid #aaa;font-size:14px;margin-top:24px;padding-bottom:6px}.project-side{padding-top:44px}.project-side p{font-size:16px;color:#777;margin-top:15px}.research{background:#111;color:#efefef}.research h2 em{color:#777}.research-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin-top:65px}.research-grid article{border-top:1px solid #383838;padding-top:26px}.research-grid .eyebrow{font-size:11px;color:#999}.research-grid h3{font-size:39px;margin:26px 0;line-height:1.08}.research-grid p{font-size:15px;color:#adadad;max-width:510px}.research-fact{display:flex;gap:27px;align-items:center;margin:36px 0 25px}.research-fact strong{font-family:var(--display);font-size:55px;font-weight:400;white-space:nowrap}.research-fact span{font-size:13px;color:#999;line-height:1.6;max-width:280px}.research-grid .stack{font-size:10px;color:#888}.research-grid .research-caveat{font-size:12px;color:#8e8e8e}.about-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr);gap:94px}.portrait img{display:block;width:100%;aspect-ratio:4/5;height:auto;object-fit:cover;background:#151515}.portrait figcaption{display:flex;justify-content:space-between;gap:16px;margin-top:16px;font-family:var(--mono);font-size:10px;color:#777}.about-copy h2{margin-bottom:30px}.about-copy p{color:#606060;margin-top:19px}.about-copy .large-copy{font-size:21px;color:#222}.education{margin:31px 0;padding-top:25px;border-top:1px solid var(--line)}.education p{font-size:14px}.education .small{font-size:12px}.about-copy .stack{font-size:10px;line-height:2}.experience{margin-top:80px}.experience article{display:grid;grid-template-columns:1fr 1.7fr auto;gap:45px;align-items:start;padding:28px 0;border-top:1px solid var(--line);margin-top:24px}.experience article+article{margin-top:0}.experience h3{font-size:32px}.experience article span{font-size:12px;color:#777}.experience p{font-size:14px;color:#606060}.experience .date{font-size:10px}.interests{background:#ececec}.interests-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}.interests h2{margin-top:25px}.interests-grid>div>p{max-width:360px;color:#777;font-size:15px;margin-top:25px}.interest-list>div{position:relative;border-top:1px solid #cecece;padding:24px 0 24px 40px}.interest-list span{position:absolute;left:0;font-family:var(--mono);font-size:11px;color:#999}.interest-list h3{font-family:var(--sans);font-size:17px;font-weight:500;line-height:1.5}.interest-list p{font-size:14px;color:#777;margin-top:9px}.questions h2{margin-bottom:50px}.questions-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:90px}.ask-column>p{color:#737373;font-size:15px;margin:14px 0 26px;max-width:380px}.contact{background:#080808;color:#eee;padding-bottom:25px}.contact h2{font-size:95px;margin-top:30px}.contact-bottom{display:flex;justify-content:space-between;gap:40px;margin:58px 0 76px}.direct-contact a{display:block;font-size:21px;margin:8px 0}.direct-contact span{margin-left:30px;color:#888}.socials{display:flex;gap:27px;align-self:flex-end;font-size:14px;color:#bbb}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #333;padding-top:22px;font-family:var(--mono);font-size:10px;color:#898989}.skip{position:absolute;top:-100px;background:white;padding:15px;z-index:100;color:black}.skip:focus{top:5px}
.faq-item{border-top:1px solid #ddd}.faq-item summary{cursor:pointer;list-style:none;padding:22px 34px 22px 0;position:relative;font-size:16px;line-height:1.5}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:'+';position:absolute;right:6px;font-family:var(--mono);font-size:19px;color:#888}.faq-item[open] summary:after{content:'−'}.faq-item p{padding:0 24px 23px 0;font-size:14px;line-height:1.8;color:#686868;white-space:pre-wrap;overflow-wrap:anywhere}.reveal.is-hidden{opacity:0;transform:translateY(22px)}.reveal.is-visible{opacity:1;transform:none;transition:opacity .65s ease,transform .65s ease}@keyframes fade-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes pixel{0%,100%{opacity:.2}50%{opacity:1}}
.work.section{padding-top:54px}
.project{grid-template-columns:minmax(0,1fr) 230px}.hero-lead{font-size:20px;line-height:1.5;max-width:720px}.hero-footer{margin-top:48px}.hero-note{padding-left:20px}.hero-note pre{margin-bottom:0}.interests h2,.contact h2{margin-top:0}.compact{grid-template-columns:minmax(0,1fr)}
@media(max-width:1100px){.project{grid-template-columns:minmax(0,1fr)}}
.intro-screen{animation:intro-away .6s cubic-bezier(.76,0,.24,1) 3.6s forwards}
.intro-screen>.hello-word{font-family:var(--sans);font-size:46px;font-weight:300;line-height:1.3;animation:none;transition:opacity .22s ease,transform .22s ease;text-transform:capitalize}.hello-word.visible{opacity:1;transform:none}.hello-word.fading{opacity:0;transform:translateY(5px)}
.hero h1{animation-delay:3.75s}.hero-bottom{animation-delay:3.9s}.site-header{animation-delay:3.8s}
html{background:#080808;overscroll-behavior-y:none;scroll-snap-type:y proximity;scroll-padding-top:0}
body{background:#080808;overscroll-behavior-y:none}main{background:var(--bg)}main>section{scroll-snap-align:start;scroll-snap-stop:normal}.chat-body{overscroll-behavior:contain}
.intro-screen{position:fixed;inset:0;z-index:100;background:#080808;color:#eee;display:grid;place-items:center;pointer-events:none;animation:intro-away .6s cubic-bezier(.76,0,.24,1) 3.6s forwards}
.intro-screen>span{font-family:var(--display);font-size:100px;animation:intro-mark .65s ease both}.intro-slash{color:#777}.intro-screen i{position:absolute;left:0;right:0;height:1px;top:calc(50% + 90px);background:#ffffff20;transform-origin:left;animation:intro-line .75s ease both}
.hero h1{animation:hero-enter 1s cubic-bezier(.2,.7,.2,1) 3.75s both}.hero-bottom{animation:hero-enter 1s ease 3.9s both}.site-header{animation:header-enter .8s ease 3.8s both}
.solid-button,.ask-nav,.chat-trigger,.send-button,.quiet-button{transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease}
.solid-button:hover,.ask-nav:hover{transform:translateY(-3px);box-shadow:0 7px 24px #ffffff10}.solid-button:active,.ask-nav:active,.chat-trigger:active,.send-button:active{transform:scale(.96)}
.line-link span,.solid-button span,.quiet-button span,.direct-contact span{display:inline-block;transition:transform .25s ease}.line-link:hover span,.quiet-button:hover span,.direct-contact a:hover span{transform:translate(3px,-3px)}.solid-button:hover span{transform:translate(3px,3px)}
.project{transition:border-color .3s ease}.project:hover{border-color:#777}.portrait{overflow:hidden}.portrait img{transition:filter .5s ease}.portrait:hover img{filter:brightness(1.06)}.faq-item[open]>p{animation:fade-up .25s ease}.socials{flex-wrap:wrap;row-gap:14px}.contact footer{padding-right:145px}
@keyframes intro-away{to{clip-path:inset(0 0 100% 0);visibility:hidden}}@keyframes intro-mark{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}@keyframes intro-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes hero-enter{from{opacity:0;transform:translateY(28px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}@keyframes header-enter{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
html[data-motion=paused]{scroll-behavior:auto;scroll-snap-type:none}html[data-motion=paused] *,html[data-motion=paused] *:before,html[data-motion=paused] *:after{animation:none!important;transition:none!important}html[data-motion=paused] .intro-screen{display:none}html[data-motion=paused] .reveal.is-hidden{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.intro-screen{display:none}html{scroll-snap-type:none}}
@media(max-width:760px){.socials{gap:18px}.contact footer{padding-right:125px}}
html[data-motion=paused] .pixel-loader i{animation:none}
@media(min-width:1700px){.hero-inner{padding-top:136px}.hero h1{font-size:172px}.hero-footer{margin-top:74px}}
@media(max-width:1100px){.wrap{padding-left:40px;padding-right:40px}.site-header{padding:0 32px}.hero h1{font-size:128px}.project{grid-template-columns:30px minmax(0,1fr)}.project-art,.project-side{display:none}.about-grid{gap:50px}.questions-grid{gap:40px}.research-grid{gap:40px}.experience article{gap:25px}.interests-grid{gap:40px}.contact h2{font-size:82px}}
@media(max-width:760px){.wrap{padding-left:25px;padding-right:25px}.section{padding-top:65px;padding-bottom:65px}.site-header{height:72px;padding:0 25px}.site-header nav{gap:20px;font-size:12px}.ask-nav{display:none}.wordmark{font-size:32px}.hero-inner{padding-top:103px;padding-bottom:22px}.hero-meta{font-size:9px}.hero h1{font-size:96px;margin:32px 0}.hero-bottom{gap:10px}.hero-note{display:none}.hero-lead{font-size:22px}.hero-description{font-size:14px}.hero-footer{margin-top:44px;font-size:8px}.hero-footer>span{max-width:170px}.hero-footer>a{align-self:flex-end}.hero h1 em{display:block}.hero-actions{gap:22px;margin-top:25px}.solid-button,.quiet-button{font-size:12px;gap:15px;padding:12px 15px}.quiet-button{padding-left:0}.section-top{margin-bottom:24px}.section-top>.eyebrow:last-child{display:none}.eyebrow{font-size:10px}h2{font-size:55px}h3{font-size:36px}.work h2{margin-bottom:38px}.project{grid-template-columns:20px minmax(0,1fr);gap:12px;padding-top:27px;padding-bottom:38px}.project-kicker{font-size:9px}.project-main>p{font-size:14px}.metrics{gap:15px;margin:26px 0}.metrics strong{font-size:38px}.metrics span{font-size:10px}.project-details{grid-template-columns:1fr;gap:20px}.project-details p{font-size:13px}.project-main .stack{font-size:9px}.research-grid{grid-template-columns:1fr;gap:45px;margin-top:40px}.research-grid h3{font-size:36px}.research-grid .eyebrow{font-size:10px}.research-grid p{font-size:14px}.research-fact{margin:23px 0}.research-fact strong{font-size:46px}.about-grid{grid-template-columns:1fr;gap:42px}.portrait{max-width:440px}.portrait img{aspect-ratio:4/5}.about-copy p{font-size:15px}.experience{margin-top:48px}.experience article{grid-template-columns:1fr;gap:14px;padding:24px 0}.experience h3{font-size:32px}.interests-grid{grid-template-columns:1fr;gap:36px}.interest-list h3{font-size:16px}.questions-grid{grid-template-columns:1fr;gap:38px}.questions h2{margin-bottom:34px}.contact h2{font-size:62px}.contact-bottom{flex-direction:column;gap:30px;margin:35px 0 48px}.direct-contact a{font-size:18px}.socials{align-self:flex-start;gap:27px;font-size:13px}footer{font-size:8px}.chat-trigger{right:16px;bottom:18px;min-height:45px;font-size:12px}.floating-shell{right:16px;bottom:76px}.motion-button{left:13px;bottom:23px;width:30px;height:30px}.faq-item summary{font-size:15px}.faq-item p{font-size:14px}.chat-panel{height:410px}}
@media(max-width:370px){.wrap{padding-left:20px;padding-right:20px}.site-header{padding:0 20px}.site-header nav{gap:13px;font-size:11px}.hero h1{font-size:83px}.hero-footer>a{max-width:100px}.metrics{grid-template-columns:1fr 1fr}.contact h2{font-size:53px}.direct-contact a{font-size:16px}.contact-bottom{gap:23px}.hero-actions{gap:14px}.solid-button{padding:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal.is-hidden{opacity:1;transform:none}}
@media(max-width:1100px){.project{grid-template-columns:minmax(0,1fr)}}
/* One continuous greeting-to-page transition. */
.hero-note{flex:0 0 280px;padding-left:0}.hero-note pre{font-size:21px;height:142px;line-height:1.35}.project-art pre{font-size:15px;height:370px;margin:0;line-height:1.1}@media(min-width:1101px){.project:not(.compact){grid-template-columns:minmax(0,1fr) 365px}}@media(min-width:761px) and (max-width:1000px){.hero-bottom{gap:24px}.hero-note{flex-basis:230px}.hero-note pre{font-size:18px;height:122px}}
.about-grid{grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:64px}.profile-actions{display:flex;flex-wrap:wrap;align-items:start;gap:12px 24px;margin-top:24px}.profile-actions .resume-link{margin-top:0}.copy-profile{display:inline-flex;align-items:center;gap:8px;background:none;color:var(--ink);font-size:14px;padding:0 0 6px;border-bottom:1px solid #aaa;min-height:31px}.copy-profile:hover{border-color:#111}.copy-status{display:block;font-size:12px;color:var(--muted);min-height:21px}.experience{margin-top:48px}.experience h3 a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px;text-decoration-color:#bbb}.experience h3 a:hover{text-decoration-color:currentColor}@media(max-width:760px){.about-grid{grid-template-columns:1fr;gap:32px}}
.motion-button{position:fixed;left:19px;bottom:23px;z-index:19;background:#222;color:#ddd;border:1px solid #555;width:35px;height:35px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.intro-screen{animation:intro-dissolve .85s cubic-bezier(.22,1,.36,1) 3.25s forwards}
.hero h1,.hero-bottom{animation:none}
.hero-inner{transform-origin:45% 35%;animation:scene-arrive 1.25s cubic-bezier(.22,1,.36,1) 3.3s both}
.site-header{animation:header-enter 1s ease 3.45s both}
@keyframes intro-dissolve{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.035);visibility:hidden}}
@keyframes scene-arrive{from{opacity:0;transform:scale(.965) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}
.portrait{max-width:420px;align-self:start}.portrait img{aspect-ratio:700/680}.questions #faq-root{max-width:850px}.contact footer{padding-right:0}.site-header nav{margin-left:auto}
.line-link{gap:15px}.line-link span{font-family:var(--mono);font-size:11px;color:var(--muted)}
@media(prefers-reduced-motion:reduce){.hero-inner{animation:none;opacity:1;transform:none}.intro-screen{display:none}}
