:root{color:#27272a;font-synthesis:none;-webkit-font-smoothing:antialiased;--background:#fff;--text:#27272a;--muted:#52525b;--subtle:#a1a1aa;--surface:#f4f4f5;--soft:#fafafa;--line:#efeff0;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-move:cubic-bezier(.65, 0, .35, 1);--heading-weight:500;--button-weight:500;--role:#71717a;--ease-reveal:cubic-bezier(.16, 1, .3, 1);background:#fff;font-family:SF Pro,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root[data-theme=dark]{--background:#18181b;--text:#fafafa;--muted:#d4d4d8;--subtle:#b4b4bd;--role:#b4b4bd;--surface:#2a2a2e;--soft:#202023;--line:#36363c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{color:var(--text);background:var(--background);margin:0}body.intro-playing{overflow:hidden}p,h1,h2,h3,h4,figure,blockquote{margin:0}h1,h2,h3,h4{font-weight:var(--heading-weight)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;border:0}a,button{-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed}img{display:block}button,a{touch-action:manipulation}a:focus-visible,button:focus-visible{outline-offset:5px;outline:2px solid #7c71dd}::selection{color:#27272a;background:#dcd6fa}.semibold,strong{font-weight:590}.button{background:var(--surface);font-size:12px;font-weight:var(--button-weight);letter-spacing:-.5px;transition:background .16s ease, transform .16s var(--ease-out);border-radius:12px;flex-shrink:0;justify-content:center;align-self:flex-start;align-items:center;gap:8px;padding:12px;line-height:16px;display:inline-flex}.button:hover:not(:disabled){background:var(--line)}.button:active:not(:disabled),.header a:active,.theme-toggle:active{transform:scale(.97)}.button:disabled{opacity:.6}.icon{flex:none}.skip-link,.skip-intro{z-index:200;background:var(--text);color:var(--background);border-radius:8px;padding:12px 16px;position:fixed;top:16px;left:16px;transform:translateY(-160%)}.skip-link:focus,.skip-intro:focus{transform:translateY(0)}::view-transition-old(root){animation:.24s cubic-bezier(.4,0,1,1) both page-out}::view-transition-new(root){animation:page-in .56s var(--ease-reveal) 80ms both}::view-transition-group(site-header){animation-duration:.3s}@keyframes page-out{to{opacity:0;transform:translateY(-12px)}}@keyframes page-in{0%{opacity:0;transform:translateY(20px)}}.header{view-transition-name:site-header;z-index:30;background:var(--background);border-bottom:1px solid var(--surface);opacity:0;height:60px;transition:opacity .5s var(--ease-out), transform .6s var(--ease-out);grid-template-columns:calc(41.2037vw - 24px) minmax(0,1fr) 320px;align-items:center;padding:12px 24px;display:grid;position:fixed;top:0;left:0;right:0;transform:translateY(-14px)}.header.is-shown{opacity:1;transform:translateY(0)}.header.is-shown.is-tucked{transition:transform .52s var(--ease-reveal);transform:translateY(calc(-100% - 1px))}.header a{width:fit-content;font-size:12px;font-weight:var(--button-weight);letter-spacing:-.5px;color:var(--muted);transition:background .16s ease, transform .16s var(--ease-out);white-space:nowrap;border-radius:12px;padding:8px 12px;line-height:16px;display:inline-flex}.header a:hover{background:var(--surface)}.header .wordmark{color:var(--text);letter-spacing:-1px;font-size:14px}.header nav{padding-left:28px;display:flex}.header-actions{justify-content:end;align-items:center;display:flex}.theme-toggle{width:44px;height:36px;transition:background .16s ease, transform .16s var(--ease-out);background:0 0;border-radius:12px;place-items:center;display:grid}.theme-toggle:hover{background:var(--surface)}[data-theme=dark] .theme-toggle img,[data-theme=dark] .social-buttons img,[data-theme=dark] .case-text .button img{filter:invert()}.hero{--circle:240px;--portrait-intro-y:0px;border-bottom:1px dashed var(--line);isolation:isolate;height:760px;position:relative;overflow:hidden;container-type:inline-size}.portrait-stage{width:100%;height:759px;transform:translateY(var(--portrait-intro-y));transition:transform 1.25s var(--ease-move), border-color .5s ease;border-right:1px solid #0000;position:absolute;top:0;left:0;overflow:hidden}.portrait-rail{width:var(--circle);height:var(--circle);transition:transform 1.25s var(--ease-move);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.portrait-circle{background:var(--surface);transition:transform 1.15s var(--ease-move);border-radius:50%;position:absolute;inset:0;overflow:hidden;transform:translate(0)}.portrait-circle img{object-fit:cover;width:100%;height:100%}.circle-0 img,.circle-2 img,.circle-6 img,.circle-8 img{opacity:.5}.circle-2,.circle-6,.circle-8{filter:grayscale()}.circle-2 img{transform:scaleX(-1)}.circle-4{z-index:2}.circle-4 img{width:322.59%;max-width:none;height:484%;position:absolute;top:-147.14%;left:-92%}.circle-6 img{width:212.2%;max-width:none;height:318.38%;position:absolute;top:-62.76%;left:-53.54%}.hero[data-phase="0"] .portrait-stage{opacity:0}.hero[data-phase="1"] .portrait-stage{animation:portrait-enter .55s var(--ease-out) both}.hero.is-spread .portrait-circle{transform:translateX(calc(var(--offset) * (var(--circle) + 8px)))}.hero.is-split .portrait-stage{border-right-color:var(--line);transform:translate(-58.7963%)}.hero.is-split .portrait-rail{transform:translate(calc(29.3981cqw - 50%),-50%)}.hero-copy{flex-direction:column;justify-content:center;gap:12px;height:759px;padding:0 40px;display:flex;position:absolute;top:0;left:41.2037%;right:0}.hero-line{margin:-.12em 0;padding:.12em 0;display:block;overflow:clip}.hero-line>span{transform-origin:0 100%;opacity:0;filter:blur(6px);transition:transform 1.05s var(--ease-reveal), opacity .7s var(--ease-out), filter .8s var(--ease-out);transition-delay:calc(var(--line) * 95ms);display:block;transform:translateY(115%)rotate(3deg)}.hero.has-copy .hero-line>span{opacity:1;filter:none;transform:none}.hero-greeting,.hero-role{letter-spacing:-.5px;color:var(--muted);padding:0 7px;font-size:clamp(23px,2.1164vw,36px);font-weight:400;line-height:1.4}.hero h1{letter-spacing:-3px;font-size:clamp(72px,8.46561vw,152px);font-weight:700;line-height:.9}.hero-role{white-space:nowrap}.home-content{opacity:0;transition:opacity .7s var(--ease-out), transform .85s var(--ease-out);transform:translateY(18px)}.home-content.is-shown{opacity:1;transform:none}.loader{z-index:100;background:var(--background);opacity:1;transition:opacity .4s var(--ease-out);place-items:center;display:grid;position:fixed;inset:0}.loader.is-finished{opacity:0;pointer-events:none}.loader-copy{text-align:center;flex-direction:column;align-items:center;gap:12px;font-weight:400;display:flex}.loader-name{color:var(--muted);font-size:16px;line-height:1.4}.loader-title{font-weight:var(--heading-weight);letter-spacing:-2px;font-size:96px;line-height:.9}.loader-track{background:var(--surface);border-radius:99px;width:200px;height:4px;margin:12px 0;overflow:hidden}.loader-track span{background:var(--text);transform-origin:0;width:100%;height:100%;animation:2.9s cubic-bezier(.45,.05,.25,1) both load-progress;display:block}.loader-year{color:var(--muted);letter-spacing:-1px;font-variant-numeric:tabular-nums;white-space:pre;align-items:center;font-size:14px;line-height:1.4;display:inline-flex}.year-reel{height:1.4em;display:inline-block;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 20% 80%,#0000);mask-image:linear-gradient(#0000,#000 20% 80%,#0000)}.year-reel>span{transform:translateY(calc(var(--step) * -1.4em));flex-direction:column;transition:transform .62s cubic-bezier(.7,0,.2,1);display:flex}.year-reel i{text-align:center;height:1.4em;font-style:normal;line-height:1.4em}@keyframes load-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes portrait-enter{0%{opacity:0;transform:translateY(calc(var(--portrait-intro-y) + 10px))}to{opacity:1;transform:translateY(var(--portrait-intro-y))}}.featured{border-bottom:1px dashed var(--line);flex-direction:column;gap:40px;padding-bottom:60px;display:flex}.section-heading{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:center;gap:10px;padding:40px 24px;display:flex}.section-heading h2{font-size:32px;line-height:1.4;font-weight:var(--heading-weight);letter-spacing:-.5px}.section-heading>span{letter-spacing:-.5px;color:var(--muted);font-size:16px;line-height:1.4}.project-row,.home-about,.references{grid-template-columns:25.7937% minmax(0,1fr);display:grid}.project-copy{letter-spacing:-.5px;flex-direction:column;align-self:start;gap:24px;padding:24px;font-size:16px;line-height:1.4;display:flex;position:sticky;top:72px}.project-copy>div{flex-direction:column;gap:10px;display:flex}.project-copy h3,.project-copy h4{font-size:inherit;font-weight:var(--heading-weight)}.project-copy p{color:var(--muted)}.project-art{flex-direction:column;gap:12px;padding:24px 24px 24px 12px;display:flex}.project-image{border-radius:8px;display:block;overflow:hidden}.project-image img{aspect-ratio:1086/680;width:100%;height:auto;transition:transform .55s var(--ease-out)}@media (hover:hover){.project-image:hover img{transform:scale(1.015)}}.project-last{padding-bottom:60px}.home-about{border-bottom:1px dashed var(--line);padding-bottom:60px}.home-about-heading{flex-direction:column;gap:24px;padding:24px;display:flex}.home-about h2,.references h2{font-size:16px;line-height:1.4;font-weight:var(--heading-weight);letter-spacing:-.5px}.social-buttons{gap:8px;display:flex}.social-buttons .button{gap:4px;padding:8px 12px 8px 8px}.social-buttons .icon-button{width:32px;height:32px;padding:8px}.home-about-copy{letter-spacing:-.3px;color:var(--muted);flex-direction:column;gap:24px;padding:24px 200px 24px 24px;font-size:24px;line-height:1.4;display:flex}.home-about-copy .button{color:var(--text)}.references>h2{padding:24px}.reference-grid{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.reference{border-left:1px dashed var(--line);letter-spacing:-.5px;flex-direction:column;padding:24px 24px 120px;font-size:16px;line-height:1.4;display:flex}.reference-placeholder{background:var(--surface);border-radius:4px;height:305px;margin-bottom:24px}.reference-placeholder-1{height:396px}.reference figcaption{flex-direction:column;margin-top:10px;display:flex}.reference figcaption span:last-child{color:var(--muted)}.footer-reveal{--footer-height:900px;--edge-tile:clamp(64px, 6.07vw, 140px);height:var(--footer-height);isolation:isolate;position:relative;overflow:clip}.footer{height:var(--footer-height);color:#fff;background:linear-gradient(#1e1b4b,#312e81);overflow:hidden}.footer-surface{flex-direction:column;height:100%;display:flex}.footer-edge{z-index:2;height:clamp(16px,1.55vw,28px);color:var(--background);pointer-events:none;position:absolute;top:-1px;left:0;right:0;overflow:hidden}.footer-edge svg{width:calc(var(--edge-tile) * 24);height:100%;animation:5s linear infinite paused footer-edge-drift;display:block}.footer-reveal[data-revealing=true] .footer-edge svg{animation-play-state:running}@keyframes footer-edge-drift{to{transform:translate(-4.16667%)}}.footer-top{grid-template-columns:320px minmax(0,1fr) 320px;gap:12px;padding:100px 40px;display:grid}.footer-email,.footer-social{letter-spacing:-.3px;align-self:start;align-items:center;gap:10px;padding:20px 0;font-size:16px;font-weight:400;line-height:1.4;display:flex}.footer-email:hover,.footer-social:hover{text-underline-offset:4px;text-decoration:underline}.footer-social{color:#d4d4d8;justify-content:end}.footer-center{text-align:center;flex-direction:column;align-items:center;gap:48px;display:flex}.footer-heading{font-size:clamp(60px,6.3492vw,106px);font-weight:var(--heading-weight);letter-spacing:-2px;line-height:.9}.footer-center>p{opacity:.72;letter-spacing:-.2px;text-transform:uppercase;white-space:nowrap;font-size:18px;font-weight:400;line-height:.9}.card-stack{width:306.167px;height:124.916px;position:relative}.card-stack span{width:107px;height:107px;transition:transform .5s var(--ease-out);background:#dcdcdc;border-radius:9px;outline:6px solid #fff;place-items:center;display:grid;position:absolute;top:0}.card-stack img{filter:drop-shadow(0 6px 8px #0000002e);width:78%;height:auto}.card-stack span:first-child{background:#c7f0ff}.card-stack span:nth-child(2){background:#d9f99d}.card-stack span:last-child{background:#fed7aa}.card-stack span:first-child{z-index:3;top:7px;left:8px;transform:rotate(8.89deg)}.card-stack span:nth-child(2){z-index:2;left:98px}.card-stack span:last-child{z-index:1;top:9px;right:8px;transform:rotate(-10.64deg)}@media (hover:hover){.footer-center:hover .card-stack span:first-child{transform:translate(-8px)rotate(2deg)}.footer-center:hover .card-stack span:last-child{transform:translate(8px)rotate(-3deg)}}.footer-blocks{flex:1;align-items:end;display:flex;overflow:hidden}.footer-blocks-track{width:max-content;animation:38s linear infinite paused footer-blocks-drift;display:flex}.footer-reveal[data-revealing=true] .footer-blocks-track{animation-play-state:running}.footer-blocks-set{align-items:end;gap:12px;padding-right:12px;display:flex}.footer-blocks span{background:#f4f4f5;flex-shrink:0;height:252px}@keyframes footer-blocks-drift{to{transform:translate(-50%)}}.inner-page{padding-top:60px}.case-hero{border-bottom:1px dashed var(--line);grid-template-columns:calc(50% - 20px) calc(50% + 20px);display:grid}@media (width>=1251px){.case-hero[data-node-id="8800:3188"]{min-height:471px}}.case-hero>div:first-child{padding:60px 40px}.case-hero h1,.case-text h2{font-size:32px;font-weight:var(--heading-weight);letter-spacing:-.5px;line-height:1.4}.case-hero>div:first-child>p{letter-spacing:-.5px;color:var(--role);margin-top:2px;font-size:16px;line-height:1.4}.case-intro{letter-spacing:-.4px;color:var(--muted);flex-direction:column;gap:24px;padding:60px 80px 60px 40px;font-size:20px;line-height:1.5;display:flex}.tags{flex-wrap:wrap;gap:8px;display:flex}.tags span{background:var(--surface);color:var(--text);letter-spacing:-.5px;font-size:12px;line-height:16px;font-weight:var(--button-weight);border-radius:8px;padding:8px 12px}.case-blocks{flex-direction:column;gap:12px;padding:24px 24px 84px;display:flex}.case-art{border-radius:8px;width:100%;height:auto}.case-art-frame{position:relative;container-type:inline-size}.case-art-frame .case-art{display:block}.case-art-video{object-fit:cover;pointer-events:none;border-radius:.68cqw;position:absolute}.case-text{min-height:var(--design-height);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.case-text-heading{padding:60px 40px}.case-text-heading .tags{display:none}.visually-empty-heading h2{visibility:hidden}.case-text-body{letter-spacing:-.4px;color:var(--muted);flex-direction:column;gap:24px;padding:60px 120px 60px 0;font-size:20px;line-height:1.5;display:flex}.case-text-body .button{color:var(--text)}.case-pagination{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0 24px 120px;display:grid}.case-pagination a{aspect-ratio:726/400;background:var(--soft);isolation:isolate;border-radius:8px;place-items:center;display:grid;position:relative;overflow:hidden}.case-pagination a:after{content:"";z-index:1;background:var(--soft);opacity:.86;transition:opacity .4s var(--ease-out);position:absolute;inset:0}.case-pagination img{object-fit:cover;filter:grayscale(.35);width:100%;height:100%;transition:transform .6s var(--ease-out), filter .4s var(--ease-out);position:absolute;inset:0}.case-pagination-arrow{z-index:2;fill:none;stroke:#52525b;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:clamp(56px,8vw,112px);transition:transform .4s var(--ease-out);position:relative}[data-theme=dark] .case-pagination-arrow{stroke:var(--text)}@media (hover:hover){.case-pagination a:hover:after{opacity:.7}.case-pagination a:hover img{filter:none;transform:scale(1.03)}.case-pagination a:first-child:hover .case-pagination-arrow{transform:translate(-8px)}.case-pagination a:last-child:hover .case-pagination-arrow{transform:translate(8px)}}.location-carousel{border-bottom:1px dashed var(--line);height:589.086px;position:relative;overflow:hidden}.location-caption{z-index:1;text-align:center;letter-spacing:-.2px;color:var(--muted);white-space:nowrap;font-family:Figma Hand,Kalam,Bradley Hand,cursive;font-size:21px;font-weight:300;line-height:16px;position:absolute;top:95px;left:0;right:0;transform:translateY(-50%)}.location-track{justify-content:center;align-items:center;gap:80px;height:100%;padding:160px 100px 120px;display:flex}.location-card{opacity:.5;border:6.279px solid #fff;border-radius:1.57px;flex-shrink:0;width:354.052px;height:236.254px;position:relative;overflow:hidden;box-shadow:0 19.622px 39.245px #0000001f}.location-card.is-center{opacity:1;border-width:7.765px;width:437.832px;height:292.159px;transform:rotate(-2.11deg);box-shadow:0 24.266px 48.531px #0000001f}.location-card img{width:161.92%;height:323.85%;position:absolute;top:-203.04%;left:-34.42%}.reading-column{width:100%;max-width:920px;margin:0 auto;padding-left:120px;padding-right:120px}.about-bio{padding:80px 24px 100px;position:relative}.about-bio h1,.playground h2{font-size:32px;font-weight:var(--heading-weight);letter-spacing:-.3px;line-height:1.2}.bio-paragraphs{letter-spacing:-.4px;color:var(--muted);margin-top:40px;font-size:20px;line-height:1.5}.experience{background:var(--soft);padding:80px 24px 100px;position:relative}.experience .reading-column{flex-direction:column;gap:40px;display:flex}.experience h2{font-weight:var(--heading-weight);letter-spacing:-.4px;color:var(--subtle);font-size:20px;line-height:14px}.job-list{flex-direction:column;width:100%;display:flex}.job{letter-spacing:-.4px;white-space:nowrap;align-items:center;gap:8px;min-height:60px;padding:16px 0;font-size:18px;line-height:1;display:flex;position:relative}.job:first-child{min-height:44px;padding-top:0}.job:last-child{min-height:44px;padding-bottom:0}.job:not(:last-child):after{content:"";border-bottom:1px dashed var(--line);position:absolute;bottom:0;left:40px;right:0}.job img{border-radius:50%;flex-shrink:0}.job-company{font-weight:var(--heading-weight)}.job-role,.job-date{color:var(--subtle)}.job-date{margin-left:auto;font-size:16px}.playground{padding:0 24px 120px}.playground-heading{flex-direction:column;gap:40px;padding-top:100px;padding-bottom:80px;display:flex}.playground-heading>p{letter-spacing:-.4px;color:var(--muted);font-size:20px;line-height:1.5}.playground-projects{flex-direction:column;gap:20px;display:flex}.playground-project{color:#27272a;background:#f7f3ff;border-radius:12px;grid-template-rows:minmax(0,1fr);grid-template-columns:400px minmax(0,1fr);height:622px;display:grid;overflow:hidden}.playground-project:nth-child(2){background:#fcf6f4}.playground-description{flex-direction:column;justify-content:space-between;padding:48px;display:flex}.playground-logo{width:32px;height:32px}.playground-logo.logo-savee{width:54px;height:54px;margin:-7.73px -11.32px -14.27px -10.68px}.playground-description h3,.playground-description p{letter-spacing:-.5px;font-size:16px;line-height:1.4}.playground-description h3{font-weight:var(--heading-weight);margin-bottom:10px}.playground-description p{color:#52525b}.playground-art{min-height:0;padding:48px 48px 0 24px}.playground-art>img{width:100%;height:auto}.lightbox{border:1px solid var(--line);background:var(--background);width:min(1440px,100vw - 64px);max-height:calc(100dvh - 64px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 32px 100px #0004}.lightbox::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#14141bb3}.lightbox-content{padding:20px}.lightbox-bar,.lightbox-controls{justify-content:space-between;align-items:center;gap:16px;display:flex}.lightbox h2{font-size:18px;font-weight:var(--heading-weight)}.lightbox-content>img{object-fit:contain;border-radius:8px;width:100%;height:auto;max-height:calc(100dvh - 240px);margin:20px 0}.lightbox-video{border-radius:8px;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 160px);margin:20px auto 0;display:block}.lightbox-controls{font-size:14px}.lightbox.has-prototype{width:min(1080px,100vw - 64px)}.prototype{grid-template-columns:auto 320px;justify-content:center;align-items:center;gap:72px;padding:20px 8px 8px;display:grid}.proto-stage{flex-direction:column;align-items:center;gap:16px;min-width:0;display:flex}.proto-hint{background:var(--text);min-height:36px;color:var(--background);font-size:13px;font-weight:var(--button-weight);letter-spacing:-.2px;animation:proto-hint-in .42s var(--ease-reveal) both;border-radius:99px;align-items:center;gap:8px;padding:8px 14px;display:inline-flex}.proto-hint:before{content:"";background:#ee8b74;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #ee8b7440}@keyframes proto-hint-in{0%{opacity:0;transform:translateY(6px)}}.proto-phone{box-sizing:content-box;background:#0d0d0f;border-radius:58px;flex-shrink:0;height:calc(min(740px,100dvh - 210px) - 20px);padding:10px;box-shadow:0 0 0 1px #3a3a40,0 30px 70px -20px #0007}.proto-screen{isolation:isolate;cursor:pointer;--frame-unit:calc(100cqw / 430);--proto-sheet:#fdfbf7;--proto-accent:#ee8b74;background:#faf7f3;border-radius:48px;width:100%;height:100%;position:relative;overflow:hidden;container-type:inline-size}.proto-layer{overscroll-behavior:contain;scrollbar-width:none;position:absolute;inset:0;overflow:hidden auto}.proto-layer::-webkit-scrollbar{display:none}.proto-canvas{width:100%;position:relative}.proto-canvas>img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.proto-layer.is-leave{pointer-events:none}.proto-screen[data-transition=fade] .is-enter,.proto-screen[data-transition=shutter] .is-enter{animation:.36s both proto-fade}.proto-screen[data-transition=push] .is-enter{z-index:2;animation:proto-push-in .52s var(--ease-reveal) both;box-shadow:-12px 0 30px #0002}.proto-screen[data-transition=push] .is-leave{animation:proto-push-out .52s var(--ease-reveal) both}.proto-screen[data-transition=back] .is-leave{z-index:2;animation:proto-pop-out .46s var(--ease-reveal) both;box-shadow:-12px 0 30px #0002}.proto-screen[data-transition=back] .is-enter{animation:proto-pop-in .46s var(--ease-reveal) both}.proto-screen[data-transition=sheet-up] .is-enter{z-index:2;animation:proto-sheet-in .56s var(--ease-reveal) both}.proto-screen[data-transition=sheet-up] .is-leave{animation:proto-recede .56s var(--ease-reveal) both}.proto-screen[data-transition=sheet-down] .is-leave{z-index:2;animation:.48s cubic-bezier(.4,0,.2,1) both proto-sheet-out}.proto-screen[data-transition=sheet-down] .is-enter{animation:proto-rise .48s var(--ease-reveal) both}@keyframes proto-fade{0%{opacity:0}}@keyframes proto-push-in{0%{transform:translate(100%)}}@keyframes proto-push-out{to{filter:brightness(.85);transform:translate(-28%)}}@keyframes proto-pop-out{to{transform:translate(100%)}}@keyframes proto-pop-in{0%{filter:brightness(.85);transform:translate(-28%)}}@keyframes proto-sheet-in{0%{transform:translateY(100%)}}@keyframes proto-recede{to{filter:brightness(.8);border-radius:40px;transform:scale(.94)}}@keyframes proto-sheet-out{to{transform:translateY(100%)}}@keyframes proto-rise{0%{filter:brightness(.8);transform:scale(.94)}}.proto-flash{z-index:3;pointer-events:none;background:#fff;animation:.38s ease-out both proto-flash;position:absolute;inset:0}@keyframes proto-flash{0%{opacity:.95}to{opacity:0}}.proto-hotspot{z-index:4;cursor:pointer;background:0 0;border-radius:14px;padding:0;position:absolute}.proto-hotspot.is-round{border-radius:50%}.proto-hotspot:focus-visible{outline-offset:3px;outline:3px solid #7c71dd}.proto-ring{border-radius:inherit;animation:proto-ring 1.6s var(--ease-out) infinite;pointer-events:none;border:2px solid #ee8b74;position:absolute;inset:-4px;box-shadow:0 0 0 4px #ee8b7433}@keyframes proto-ring{0%{opacity:0;transform:scale(.96)}25%{opacity:1}70%{opacity:0;transform:scale(1.12)}to{opacity:0}}.proto-pointer{fill:#fff;stroke:#18181b;stroke-width:1.6px;stroke-linejoin:round;filter:drop-shadow(0 4px 8px #0005);pointer-events:none;width:34px;height:34px;animation:proto-tap 1.6s var(--ease-out) infinite;position:absolute;top:55%;left:50%}@keyframes proto-tap{0%,to{transform:translate(6px,14px)scale(1)}35%{transform:translate(-4px)scale(1)}45%{transform:translate(-4px)scale(.86)}60%{transform:translate(-4px)scale(1)}}.show-targets .proto-hotspot{background:#7c71dd2e;animation:1.1s both proto-targets;box-shadow:inset 0 0 0 2px #7c71dd}@keyframes proto-targets{0%,to{opacity:0}20%,70%{opacity:1}}.proto-busy{pointer-events:none;border-radius:6px;place-items:center;display:grid;position:absolute;overflow:hidden}.proto-busy:before{content:"";background:linear-gradient(100deg,#0000 30%,#fff5 50%,#0000 70%);animation:1.4s ease-in-out infinite proto-sweep;position:absolute;inset:0;transform:translate(-100%)}.proto-busy-label{color:#fff;font-size:12px;font-weight:var(--button-weight);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#18181bcc;border-radius:99px;align-items:center;gap:8px;padding:8px 12px;display:inline-flex;position:relative}.proto-busy-label i{border:2px solid #fff5;border-top-color:#fff;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite proto-spin}@keyframes proto-sweep{to{transform:translate(100%)}}@keyframes proto-spin{to{transform:rotate(1turn)}}.proto-toast{z-index:3;color:#fff;font-size:calc(var(--frame-unit) * 14);font-weight:var(--button-weight);animation:proto-toast .52s var(--ease-reveal) both;pointer-events:none;background:#3f3f46f2;border-radius:12px;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;box-shadow:0 10px 24px #0003}.proto-toast span{color:#3f3f46;background:#fff;border-radius:50%;place-items:center;width:1.3em;height:1.3em;font-size:.8em;display:grid}@keyframes proto-toast{0%{opacity:0;transform:translateY(-14px)scale(.96)}}.proto-cover{z-index:2;pointer-events:none;animation:.42s both proto-fade;position:absolute}.proto-typing{z-index:2;white-space:nowrap;pointer-events:none;align-items:center;padding:0 .3em;line-height:1.3;display:flex;position:absolute;overflow:hidden}.proto-caret{background:#ee8b74;width:1.5px;height:1.1em;margin-left:1px;animation:.9s step-end infinite proto-blink;display:inline-block}@keyframes proto-blink{50%{opacity:0}}.proto-presets{z-index:2;touch-action:pan-y;background:0 0;border-radius:4px;padding:0;position:absolute;overflow:visible}.proto-presets-photo{border-radius:inherit;animation:proto-preset .38s var(--ease-reveal) both;position:absolute;inset:0}@keyframes proto-preset{0%{opacity:.4;transform:scale(.97)}}.proto-presets-label{left:calc(var(--frame-unit) * 12);top:calc(var(--frame-unit) * 13);color:#fff;font-size:calc(var(--frame-unit) * 14);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#3f3f46cc;border-radius:8px;padding:.35em .7em;position:absolute}.proto-presets-dots{left:0;right:0;bottom:calc(var(--frame-unit) * -24);justify-content:center;gap:5px;display:flex;position:absolute}.proto-presets-dots i{width:6px;height:6px;transition:background .25s ease, transform .25s var(--ease-out);background:#d4d4d8;border-radius:50%}.proto-presets-dots i.is-on{background:#ee8b74;transform:scale(1.3)}.proto-compare{z-index:2;cursor:ew-resize;touch-action:none;position:absolute;overflow:hidden}.proto-compare img{object-fit:cover;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.proto-compare-before{clip-path:inset(0 calc(100% - var(--split)) 0 0)}.proto-compare-line{top:0;bottom:0;left:var(--split);pointer-events:none;background:#fff;width:2px;margin-left:-1px;position:absolute;box-shadow:0 0 6px #0004}.proto-compare-handle{top:50%;left:var(--split);width:calc(var(--frame-unit) * 46);height:calc(var(--frame-unit) * 46);margin:calc(var(--frame-unit) * -23) 0 0 calc(var(--frame-unit) * -23);pointer-events:none;background:#fff;border-radius:50%;position:absolute;box-shadow:0 4px 14px #0004}.proto-compare-handle:before{content:"‹ ›";font-size:calc(var(--frame-unit) * 18);color:#27272a;letter-spacing:2px;place-items:center;display:grid;position:absolute;inset:0}.proto-compare-tag{top:calc(var(--frame-unit) * 12);color:#fff;font-size:calc(var(--frame-unit) * 11);pointer-events:none;background:#18181b99;border-radius:6px;padding:.3em .65em;position:absolute}.proto-compare-tag.is-before{left:calc(var(--frame-unit) * 12)}.proto-compare-tag.is-after{right:calc(var(--frame-unit) * 12)}.proto-compare-range{opacity:0;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.proto-compare:has(.proto-compare-range:focus-visible) .proto-compare-handle{outline-offset:3px;outline:3px solid #7c71dd}.proto-toggle{z-index:2;cursor:pointer;background:0 0;border-radius:4px;padding:0;transition:box-shadow .2s;position:absolute}.proto-toggle.is-on{box-shadow:inset 0 0 0 calc(var(--frame-unit) * 4) var(--proto-accent);background:color-mix(in srgb, var(--proto-accent) 8%, transparent)}.proto-check{top:calc(var(--frame-unit) * 7);right:calc(var(--frame-unit) * 7);width:calc(var(--frame-unit) * 20);height:calc(var(--frame-unit) * 20);background:var(--proto-accent);color:#fff;font-size:calc(var(--frame-unit) * 11);animation:proto-pop .3s var(--ease-reveal) both;border-radius:50%;place-items:center;font-weight:700;display:grid;position:absolute;box-shadow:0 0 0 2px #fff}@keyframes proto-pop{0%{opacity:0;transform:scale(.4)}}.proto-toggle:focus-visible,.proto-presets:focus-visible,.proto-live-button:focus-visible{outline-offset:3px;outline:3px solid #7c71dd}.proto-live-button{z-index:3;border-radius:calc(var(--frame-unit) * 12);background:var(--proto-accent);color:#fff;font-size:calc(var(--frame-unit) * 15);font-weight:var(--button-weight);animation:.3s both proto-fade;position:absolute}.proto-live-button .proto-ring{border-radius:inherit;inset:-5px}.proto-live-button .proto-pointer{left:60%}.proto-toggle.is-row.is-on{box-shadow:none;background:0 0}.proto-toggle.is-row .proto-check{margin-top:calc(var(--frame-unit) * -9);width:calc(var(--frame-unit) * 18);height:calc(var(--frame-unit) * 18);box-shadow:none;border-radius:4px;top:50%;left:0;right:auto}.proto-toggle.is-chip{border-radius:calc(var(--frame-unit) * 12)}.proto-toggle.is-chip.is-on{box-shadow:inset 0 0 0 1.5px var(--proto-accent)}.proto-toggle.is-chip .proto-check{top:50%;right:calc(var(--frame-unit) * 9);margin-top:calc(var(--frame-unit) * -9);width:calc(var(--frame-unit) * 18);height:calc(var(--frame-unit) * 18);box-shadow:none}.proto-slider{z-index:2;justify-content:center;align-items:center;gap:calc(var(--frame-unit) * 6);padding:0 calc(var(--frame-unit) * 32);border-radius:calc(var(--frame-unit) * 14);color:#27272a;flex-direction:column;display:flex;position:absolute}.proto-slider-value{color:var(--proto-accent);align-items:baseline;gap:.2em;line-height:1;display:flex}.proto-slider-value b{font-size:calc(var(--frame-unit) * 34);animation:proto-pop .26s var(--ease-reveal) both;font-variant-numeric:tabular-nums;font-weight:500}.proto-slider-value small{font-size:calc(var(--frame-unit) * 11);color:#71717a}.proto-slider-caption{font-size:calc(var(--frame-unit) * 13);color:#71717a}.proto-slider-track{width:100%;height:calc(var(--frame-unit) * 30);margin-top:calc(var(--frame-unit) * 8);border-radius:calc(var(--frame-unit) * 10);background:color-mix(in srgb, var(--proto-accent) 14%, #fff);position:relative}.proto-slider-fill{width:max(calc(var(--frame-unit) * 34), var(--fill));border-radius:inherit;background:var(--proto-accent);transition:width .16s var(--ease-out);position:absolute;inset:0 auto 0 0}.proto-slider-fill:after{content:"";right:calc(var(--frame-unit) * 8);width:calc(var(--frame-unit) * 4);background:#fff;border-radius:2px;position:absolute;top:22%;bottom:22%}.proto-slider input{opacity:0;cursor:ew-resize;touch-action:none;width:100%;height:100%;margin:0;position:absolute;inset:0}.proto-slider:has(input:focus-visible) .proto-slider-track{outline-offset:3px;outline:3px solid #7c71dd}.proto-slider-marker{width:calc(var(--frame-unit) * 40);height:calc(var(--frame-unit) * 40);margin:calc(var(--frame-unit) * -20) 0 0 calc(var(--frame-unit) * -20);pointer-events:none;border-radius:50%;position:absolute;top:50%}.proto-slider-marker .proto-pointer{animation-name:proto-drag}@keyframes proto-drag{0%,to{transform:translateY(12px)}50%{transform:translate(calc(var(--frame-unit) * 60), 12px)}}.proto-scanline{z-index:2;pointer-events:none;position:absolute;overflow:hidden}.proto-scanline:before{content:"";background:var(--proto-accent);height:3px;box-shadow:0 0 18px 4px color-mix(in srgb, var(--proto-accent) 60%, transparent);border-radius:3px;animation:1.6s ease-in-out infinite alternate proto-scan;position:absolute;left:4%;right:4%}@keyframes proto-scan{0%{top:4%}to{top:94%}}.proto-pulse{z-index:1;pointer-events:none;position:absolute}.proto-pulse i{border:2px solid var(--proto-accent);border-radius:50%;animation:2s ease-out infinite proto-radar;position:absolute;inset:0}.proto-pulse i+i{animation-delay:1s}@keyframes proto-radar{0%{opacity:.9;transform:scale(.55)}to{opacity:0;transform:scale(1.35)}}.proto-panel{letter-spacing:-.2px;flex-direction:column;gap:16px;font-size:14px;line-height:1.45;display:flex}.proto-eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--subtle);font-size:12px}.proto-panel h3{letter-spacing:-.4px;margin-top:-8px;font-size:22px;line-height:1.2}.proto-summary{color:var(--muted)}.proto-paths{background:var(--surface);border-radius:14px;flex-wrap:wrap;gap:6px;padding:4px;display:flex}.proto-paths button{font-size:12px;font-weight:var(--button-weight);color:var(--muted);background:0 0;border-radius:10px;flex:1;padding:9px 10px;transition:background .2s,color .2s}.proto-paths button.is-active{background:var(--background);color:var(--text);box-shadow:0 1px 3px #0000001f}.proto-steps{counter-reset:step;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.proto-steps li{counter-increment:step;color:var(--subtle);align-items:center;gap:10px;padding:7px 0;transition:color .3s;display:flex}.proto-steps li:before{content:counter(step);background:var(--surface);width:22px;height:22px;font-size:11px;font-weight:var(--button-weight);border-radius:50%;flex:none;place-items:center;transition:background .3s,color .3s;display:grid}.proto-steps li.is-done{color:var(--muted)}.proto-steps li.is-done:before{content:"✓";color:#c4593f;background:#ee8b7433}.proto-steps li.is-current{color:var(--text);font-weight:var(--button-weight)}.proto-steps li.is-current:before{color:#fff;background:#ee8b74}.proto-end{color:var(--text);animation:proto-hint-in .42s var(--ease-reveal) both;background:#ee8b741f;border-radius:12px;padding:12px 14px}.proto-actions{gap:8px;display:flex}.proto-actions .button{align-self:auto}.proto-tip{color:var(--subtle);font-size:12px}@media (width<=860px){.prototype{grid-template-columns:1fr;gap:12px;padding:8px 0 0}.proto-stage{gap:10px}.proto-phone{border-radius:40px;height:calc(min(640px,100dvh - 272px) - 12px);padding:6px}.proto-screen{border-radius:34px}.proto-panel{flex-flow:wrap;order:-1;align-items:center;gap:8px}.proto-paths{flex:100%}.proto-eyebrow,.proto-panel h3,.proto-summary,.proto-steps,.proto-tip,.proto-end{display:none}.proto-hint{min-height:30px;padding:6px 12px;font-size:12px}}@media (prefers-reduced-motion:reduce){.proto-ring,.proto-pointer,.proto-busy:before,.proto-caret,.proto-scanline:before,.proto-pulse i{animation:none!important}.proto-ring{opacity:1}}.not-found{flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100svh;display:flex}.not-found .button{align-self:auto}@media (width>=1800px){.hero{height:850px}.portrait-stage,.hero-copy{height:849px}}@media (width<=1250px) and (width>=761px){.header{grid-template-columns:calc(41.2037vw - 24px) 1fr auto}.header nav{padding-left:12px}.hero{--circle:210px;height:690px}.hero-copy,.portrait-stage{height:689px}.hero-copy{padding:0 28px}.hero-role,.hero-greeting{font-size:24px}.project-row,.home-about,.references{grid-template-columns:30% minmax(0,1fr)}.project-copy{padding:20px}.home-about-copy{padding-right:50px}.reference{padding:24px 16px 80px}.reference-placeholder{height:230px}.reference-placeholder-1{height:300px}.footer-top{grid-template-columns:210px minmax(0,1fr) 160px;padding:100px 28px}.footer-center>p{white-space:normal;font-size:14px;line-height:1.2}.footer-email,.footer-social{font-size:13px}.footer-heading{font-size:64px}.footer-break{display:none}.case-text-body{padding-right:40px}.case-text{min-height:0}.playground-project{grid-template-columns:30% 1fr;height:520px}.playground-description{padding:28px}.playground-art{padding-right:28px}}@media (width<=760px){html{scroll-padding-top:72px}.header{grid-template-columns:1fr auto;height:56px;padding:10px 12px}.header nav{padding:0}.header .wordmark{padding-left:4px;font-size:13px}.header nav a{padding:8px}.header-actions{display:none}.hero{--circle:clamp(144px, 38vw, 200px);--portrait-intro-y:115px;height:680px}.portrait-stage{height:330px;transition:transform 1.25s var(--ease-move);border-right:0;top:40px}.hero.is-split .portrait-stage{transform:translateY(0)}.hero.is-split .portrait-rail{transform:translate(-50%,-50%)}.hero-copy{justify-content:start;gap:14px;height:280px;padding:16px 24px;top:370px;left:0}.hero h1{letter-spacing:-2px;font-size:clamp(52px,13vw,94px);line-height:.93}.hero-greeting,.hero-role{padding:0 3px;font-size:22px}.loader-title{font-weight:var(--heading-weight);font-size:72px}.loader-name{font-size:14px}.section-heading{padding:28px 20px}.section-heading h2{font-size:26px}.section-heading>span{font-size:13px}.featured{gap:24px;padding-bottom:40px}.project-row,.home-about,.references{flex-direction:column;display:flex}.project-copy{gap:22px;padding:24px 20px 16px;font-size:16px;line-height:1.5;position:static}.project-copy>div{gap:10px}.project-art{gap:10px;padding:8px 12px 24px}.project-last{padding-bottom:24px}.home-about{padding-bottom:32px}.home-about-heading{padding:28px 20px 20px}.home-about-copy{padding:12px 20px 24px;font-size:22px;line-height:1.45}.references>h2{padding:28px 20px}.reference-grid{grid-template-columns:1fr}.reference{border-left:0;border-top:1px dashed var(--line);padding:24px 20px 40px}.reference-placeholder,.reference-placeholder-1{height:320px}.footer-reveal{--footer-height:720px}.footer-top{grid-template-columns:1fr auto;gap:48px 12px;padding:32px 20px 48px}.footer-email,.footer-social{gap:7px;padding:0;font-size:12px;line-height:1.4}.footer-center{grid-area:2/1/auto/-1;gap:32px}.footer-heading{letter-spacing:-1.5px;font-size:clamp(46px,10vw,76px)}.footer-center>p{white-space:normal;font-size:12px;line-height:1.4}.card-stack{margin-top:-12px;margin-bottom:-24px;transform:scale(.7)}.footer-blocks{gap:8px}.footer-blocks span{max-width:120px;height:160px}.inner-page{padding-top:56px}.case-hero{grid-template-columns:1fr}.case-hero>div:first-child{padding:48px 20px 24px}.case-hero h1,.case-text h2{font-size:28px}.case-intro{gap:22px;padding:0 20px 40px;font-size:18px}.case-blocks{gap:12px;padding:12px 12px 48px}.case-art{border-radius:6px}.case-text{grid-template-columns:1fr;gap:0;min-height:0}.case-text-heading{padding:32px 8px 20px}.visually-empty-heading{display:none}.case-text-body{gap:22px;padding:0 8px 36px;font-size:18px;line-height:1.5}.visually-empty-heading+.case-text-body{padding-top:32px}.case-pagination{gap:10px;padding:0 12px 48px}.location-carousel{height:360px}.location-track{gap:28px;padding:80px 0 30px}.location-card{border-width:4px;width:230px;height:154px}.location-card.is-center{border-width:5px;width:285px;height:190px}.reading-column{padding-left:0;padding-right:0}.about-bio{padding:56px 24px 64px}.about-bio h1,.playground h2{font-size:28px;line-height:1.25}.bio-paragraphs{margin-top:32px;font-size:18px}.experience{padding:48px 24px 56px}.experience .reading-column{gap:32px}.job{white-space:normal;grid-template-columns:28px 1fr;gap:6px 12px;padding:16px 0;font-size:16px;line-height:1.2;display:grid}.job img{grid-row:1/3}.job-role{grid-column:2;font-size:14px}.job-date{grid-column:2;margin-left:0;font-size:12px}.job:first-child{padding-top:0}.playground{padding:0 12px 64px}.playground-heading{gap:24px;padding:64px 12px 40px}.playground-heading>p{font-size:18px}.playground-project{grid-template-rows:none;grid-template-columns:1fr;height:auto}.playground-description{gap:36px;padding:28px 24px}.playground-art{max-height:280px;padding:0 24px;overflow:hidden}.lightbox{width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}.lightbox-content{padding:12px}.lightbox h2{font-size:15px}.lightbox-content>img{margin:16px 0}.lightbox-video{margin-top:16px}}@media (prefers-reduced-motion:reduce){.footer-edge svg,.footer-blocks-track{animation:none}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html{scroll-behavior:auto}}.location-card{border:0;outline:6.279px solid #fff}.location-card.is-center{outline-width:7.765px;margin:0 5.232px}.project-copy>div{max-width:341px}@media (width<=760px){.location-card{outline-width:4px}.location-card.is-center{outline-width:5px;margin:0}.location-caption{font-size:19px;top:50px}.project-copy>div{max-width:none}}
