:root{--font-sans:"Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--c-paper:#efeeea;--c-ink:#111;--c-accent:#ff5a1f;--c-accent-ink:#c2410c;--shadow-soft:0 0 1.5rem #00000059, 0 1px 2px #00000073;--c-off-black:#08080a;--ease-menu:cubic-bezier(.22, 1, .36, 1);--dur-menu:.35s;--ease-reveal:cubic-bezier(.25, 1, .5, 1);--dur-reveal:.5s;--ease-page-fade:cubic-bezier(.645, .045, .355, 1);--ease-scene-tilt:cubic-bezier(.315, .61, .355, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100lvh;font-size:clamp(16px,.555556vw + 9.33333px,32px);overflow:hidden}body{background:var(--c-off-black);color:#fff;height:100%;line-height:1.5;font-family:var(--font-sans);-webkit-user-select:none;user-select:none;touch-action:manipulation;-webkit-hyphens:none;hyphens:none;transition:background-color .5s var(--ease-out)}body.is--page{color:#fff;background:#000}a{color:inherit;text-decoration:none}button{font:inherit;letter-spacing:inherit;line-height:inherit;color:inherit;cursor:pointer;text-transform:inherit;background:0 0;border:0}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6,p,span,a span,button span{pointer-events:none}:focus-visible{outline:none}html.is-tabbing :is(a,button,input):focus-visible{outline:2px solid var(--c-accent);outline-offset:3px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%;max-width:128.5rem;margin-inline:auto;padding-inline:1.25rem}@media (min-width:48rem){.container{padding-inline:2.5rem}}.stage{width:100%;height:100%;position:relative}.page-scroll{overscroll-behavior:none;scrollbar-gutter:stable;outline:none;width:100%;height:100%;position:relative;overflow-y:auto}@media (hover:hover) and (pointer:fine){.page-scroll{scrollbar-width:none}.page-scroll::-webkit-scrollbar{display:none}}.is--loading .page-scroll{overflow:hidden}.perspective-root{width:100%;height:100vh;perspective:1000px;perspective-origin:50%;height:100lvh;position:sticky;top:0;overflow:hidden}.scene-tilt{width:100%;height:100%;transform-style:preserve-3d;transform-origin:top;transition:all .5s var(--ease-scene-tilt);position:relative}#app{z-index:0;position:absolute;inset:0}#app canvas{touch-action:pan-y;width:100%;height:100%;display:block}.stage[data-boundary-clickable] .scene-tilt{cursor:pointer}.scroll-length{height:calc(var(--scroll-viewports) * 100svh);pointer-events:none}.mono{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;font-size:.6875rem;font-weight:400;line-height:1.5}.container-b{width:100%;padding-inline:1.25rem}@media (min-width:48rem){.container-b{padding-inline:2.75rem}}@media (max-width:47.99rem){.hide-phone{display:none!important}}.preloader{z-index:10000;background:var(--c-paper);color:var(--c-ink);transition:opacity .5s var(--ease-out), visibility .5s var(--ease-out);position:fixed;inset:0}.preloader[data-exiting]{opacity:0;visibility:hidden}.preloader[hidden]{display:none}.pl-top{grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;height:4.5rem;display:grid;position:relative}.pl-top:after,.header__grid:after{content:"";left:inherit;opacity:.9;background:currentColor;height:1px;position:absolute;bottom:0;right:0}.pl-top:after{left:1.25rem;right:1.25rem}@media (min-width:48rem){.pl-top:after{left:2.75rem;right:2.75rem}}.pl-name{letter-spacing:-.01em;font-size:1.125rem;font-weight:700}.pl-right{text-align:right}@media (max-width:47.99rem){.pl-top{grid-template-columns:1fr auto}}.pl-line{position:absolute;top:50%;left:0}.pl-line:before{content:"";background:#c9c7c0;height:1px;display:block}.pl-line i{background:var(--c-ink);width:0;max-width:calc(100% - 2.5rem);height:1px;position:absolute;top:0;left:1.25rem}@media (min-width:48rem){.pl-line i{max-width:calc(100% - 5.5rem);left:2.75rem}}.pl-bottom{bottom:calc(1.5rem + var(--safe-b));justify-content:space-between;align-items:flex-end;gap:1rem;display:flex;position:absolute}.pl-count{letter-spacing:-.035em;font-variant-numeric:tabular-nums;align-items:flex-start;gap:.5rem;font-size:clamp(7rem,26vw,16rem);font-weight:700;line-height:.74;display:flex}.pl-count small{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-top:.1rem;font-size:.75rem;font-weight:400;line-height:1.4}.pl-note{text-align:right}.motion-gate{background:var(--c-paper);padding:0 1.25rem calc(2rem + var(--safe-b));visibility:hidden;opacity:0;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:1rem;transition:all .3s ease-in;display:flex;position:absolute;inset:0}.preloader[data-asking] .motion-gate{visibility:visible;opacity:1}.mg-h{letter-spacing:-.03em;max-width:12ch;font-size:2.5rem;font-weight:700;line-height:1}.mg-b{color:#444;max-width:32ch;font-size:1rem;line-height:1.45}.motion-gate .btns{flex-direction:column;gap:.5rem;width:100%;max-width:22rem;margin-top:.5rem;display:flex}.motion-gate button{min-height:3rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;text-align:left;padding:0 1rem;font-size:.75rem}.motion-gate .allow{background:var(--c-ink);color:var(--c-paper)}.motion-gate .decline{border:1px solid var(--c-ink)}.header{z-index:999;color:#f2f2f2;opacity:0;pointer-events:none;width:100%;transition:opacity 1s var(--ease-out) .3s;position:fixed;top:0;left:0}.header:before{content:"";pointer-events:none;background:linear-gradient(#08080a8c,#08080a00);height:8rem;transition:opacity .4s;position:absolute;inset:0 0 auto}.header[data-ready]{opacity:1;pointer-events:auto}.header__grid{height:4.5rem;padding-top:var(--safe-t);text-shadow:var(--shadow-soft);grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;column-gap:1.5rem;display:grid;position:relative}.header__grid:after{opacity:.35;left:1.25rem;right:1.25rem}@media (min-width:48rem){.header__grid:after{left:2.75rem;right:2.75rem}}.header__logo{letter-spacing:-.01em;white-space:nowrap;justify-self:start;font-size:1.125rem;font-weight:700}.header__logo:hover{opacity:.75}.header__col{color:#d4d4d4;transition:opacity .3s}.header__right{justify-content:flex-end;align-items:center;gap:1.75rem;display:flex}.header__talk:hover,.menu-trigger:hover{opacity:.75}.menu-trigger{z-index:2;align-items:center;gap:.5rem;min-height:2.75rem;display:flex;position:relative}.menu-trigger .bars{background:currentColor;width:1.375rem;height:1px;translate:0 -.15rem;box-shadow:0 .3125rem}.menu-trigger .when-open{display:none}.menu[data-open] .menu-trigger .when-open{display:inline}.menu[data-open] .menu-trigger .when-closed{display:none}@media (max-width:47.99rem){.header__grid{grid-template-columns:1fr auto}.header__right{gap:1.25rem}}:is(.header:has(.menu[data-open]) .header__col,.header:has(.menu[data-open]) .header__talk){opacity:0;pointer-events:none}.header:has(.menu[data-open]):before{opacity:0}.header:has(.menu[data-open]) .menu-trigger{color:var(--c-ink);text-shadow:none}@media (max-width:47.99rem){.header:has(.menu[data-open]) .header__logo{color:var(--c-ink);text-shadow:none;z-index:2;position:relative}}.header:has(.menu[data-open]) .header__grid:after{opacity:0}.menu-sheet{z-index:1;background:var(--c-paper);width:min(40rem,100%);color:var(--c-ink);text-shadow:none;font-family:var(--font-sans);text-transform:none;letter-spacing:0;padding:calc(4.5rem + var(--safe-t)) 1.25rem calc(1.25rem + var(--safe-b));visibility:hidden;transition:translate .55s var(--ease-menu), visibility .55s;overscroll-behavior:contain;flex-direction:column;font-size:1rem;display:flex;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;translate:100%}@media (min-width:48rem){.menu-sheet{padding-inline:2.75rem}}.menu-sheet:before{content:"";top:calc(4.5rem + var(--safe-t));left:inherit;background:var(--c-ink);height:1px;position:absolute;left:1.25rem;right:1.25rem}@media (min-width:48rem){.menu-sheet:before{left:2.75rem;right:2.75rem}}.menu[data-open] .menu-sheet{visibility:visible;translate:0}.menu-items{margin-top:1.25rem}.menu-items a.item{text-transform:none;letter-spacing:0;border-bottom:1px solid #c9c7c0;grid-template-columns:3rem 1fr auto;align-items:baseline;padding:.625rem 0;display:grid}.item__t{letter-spacing:-.03em;transition:translate .35s var(--ease-menu);font-size:clamp(2.25rem,3vw,2.75rem);font-weight:700;line-height:1.05}.menu-items a.item:hover .item__t{translate:.5rem}.menu-items a.item:hover .mono:first-child,.menu-items a.item[aria-current] .mono:first-child{color:var(--c-accent-ink)}.menu-items a.item[aria-current] .item__t:after{content:" ●";vertical-align:middle;color:var(--c-accent-ink);font-size:.4em}.menu-feature{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:1.75rem;display:grid}.menu-feature a{flex-direction:column;gap:.5rem;display:flex}.menu-feature__img{aspect-ratio:16/9;background:#d9d7d0;display:block;overflow:hidden}.menu-feature__img img{object-fit:cover;width:100%;height:100%;transition:scale .5s var(--ease-menu);display:block}.menu-feature a:hover img{scale:1.04}.menu-foot{border-top:1px solid var(--c-ink);flex-wrap:wrap;justify-content:space-between;gap:.75rem 1.25rem;margin-top:auto;padding-top:1.25rem;display:flex}.menu-foot span{gap:1.25rem;display:flex}.menu-foot a:hover,.menu-feature a:hover .mono{text-underline-offset:.2em;text-decoration:underline}@media (max-height:40rem){.menu-feature{display:none}}.menu-backdrop{z-index:999;opacity:0;pointer-events:none;transition:opacity var(--dur-menu) var(--ease-menu);background:#08080a99;position:fixed;inset:0}:root:has(.menu[data-open]) .menu-backdrop{opacity:1;pointer-events:auto}.footer-row{color:#cfcfcf;border-top:1px solid #ffffff4d;justify-content:space-between;gap:1rem;padding-top:.75rem;display:flex}.footer-row a:hover{color:#fff}.ov{z-index:50;color:#f2f2f2;pointer-events:none;text-shadow:var(--shadow-soft);position:fixed;inset:0}.ov a,.ov button{pointer-events:auto}.intro{opacity:0;transition:opacity 1s var(--ease-out) .3s;align-items:flex-end;display:flex}.intro:before{content:"";pointer-events:none;background:linear-gradient(#08080a00,#08080ab3);height:55%;position:absolute;inset:auto 0 0}.intro[data-ready]{opacity:1}.intro__grid{padding-bottom:calc(3rem + var(--safe-b));visibility:hidden;opacity:0;transition:opacity .2s var(--ease-out), visibility .2s var(--ease-out);grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;column-gap:1.5rem;display:grid;position:relative}body.is--intro .intro__grid{visibility:visible;opacity:1}.intro__name{letter-spacing:-.055em;flex-direction:column;grid-column:span 3;font-size:clamp(5rem,11.5vw,13rem);font-weight:700;line-height:.82;display:flex}.intro__side{flex-direction:column;gap:1.25rem;padding-bottom:.5rem;display:flex}.intro__para{font-size:1.125rem;line-height:1.4}.intro__meta{color:#d4d4d4;border-top:1px solid #fff6;justify-content:space-between;padding-top:.75rem;display:flex}@media (max-width:63.99rem),(max-aspect-ratio:4/3){.intro__grid{height:100%;padding-top:calc(4.5rem + var(--safe-t) + 1.25rem);padding-bottom:calc(1.75rem + var(--safe-b));grid-template-rows:auto 1fr auto;grid-template-columns:1fr;align-items:start}.intro__name{grid-area:1;font-size:clamp(4rem,20vw,8rem);line-height:.84}.intro__side{grid-row:3}.intro__para{max-width:30ch;font-size:1.0625rem}.intro:after{content:"";pointer-events:none;z-index:-1;background:linear-gradient(#08080a8c,#08080a00);height:40%;position:absolute;inset:0 0 auto}}.rail{visibility:hidden;opacity:0;transition:opacity var(--dur-reveal) var(--ease-reveal), visibility var(--dur-reveal) var(--ease-reveal);align-items:center;padding-left:2.75rem;display:none;inset:0 auto 0 0}@media (min-width:64rem) and (min-aspect-ratio:4/3){.rail{display:flex}}body:not(.is--loading) .rail{visibility:visible;opacity:1}:root:has(.menu[data-open]) .rail{opacity:0}.rail__list{flex-direction:column;gap:.625rem;margin-top:-6rem;display:flex}.rail a,.rail button{color:#bdbdbd;text-transform:uppercase;letter-spacing:.08em;text-align:left;align-items:center;gap:.625rem;transition:color .2s;display:flex}.rail a:hover,.rail button:hover{color:#fff}.rail i{opacity:.7;width:.625rem;height:1px;transition:width .35s var(--ease-menu), background-color .2s;background:currentColor;display:block}.rail__projects{transition:grid-template-rows .45s var(--ease-menu), margin .45s var(--ease-menu);grid-template-rows:0fr;padding-left:1.25rem;display:grid;overflow:hidden}.rail__projects>li{min-height:0}.rail__projects{flex-direction:column;gap:.375rem;max-height:0;display:flex}body.is--project .rail__projects{max-height:12rem;transition:max-height .6s var(--ease-menu), margin .45s;margin-top:.5rem}body.is--intro [data-chapter=intro]>a,body.is--about [data-chapter=about]>a,body.is--who [data-chapter=who]>a,body.is--project [data-chapter=work]>a,body.is--contact [data-chapter=contact]>a,.rail button[aria-current]{color:#fff}body.is--intro [data-chapter=intro]>a i,body.is--about [data-chapter=about]>a i,body.is--who [data-chapter=who]>a i,body.is--project [data-chapter=work]>a i,body.is--contact [data-chapter=contact]>a i{opacity:1;width:1.5rem}.rail button[aria-current] i{background:var(--c-accent);opacity:1;width:1.5rem}.project-panel{z-index:50;color:#f2f2f2;visibility:hidden;opacity:0;transition:opacity .15s var(--ease-out), visibility .15s var(--ease-out);position:fixed;inset:auto 0 0}.project-panel:before{content:"";pointer-events:none;z-index:-1;background:linear-gradient(#08080a00,#08080ad1 70%);height:150%;position:absolute;inset:auto 0 0}.project-panel[data-shown]{visibility:visible;opacity:1;transition:opacity var(--dur-reveal) var(--ease-reveal), visibility var(--dur-reveal) var(--ease-reveal)}.pp-grid{padding-bottom:calc(2.5rem + var(--safe-b));grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;column-gap:1.5rem;display:grid}.pp-col-title{flex-direction:column;grid-column:span 2;align-self:end;gap:1.5rem;display:flex}.pp-counter{color:#d4d4d4}.pp-title{letter-spacing:-.06em;text-wrap:balance;padding-top:.08em;font-size:clamp(4rem,9vw,11rem);font-weight:700;line-height:.86}.pp-title.is-long{letter-spacing:-.045em;font-size:clamp(2.75rem,4.6vw,5.5rem);line-height:.9}.pp-col{border-top:1px solid #fff6;flex-direction:column;align-self:stretch;gap:.625rem;padding-top:.75rem;display:flex}.pp-label{color:#d4d4d4}.pp-text{font-size:1rem;line-height:1.45}.pp-dim{color:#bdbdbd}.pp-link{text-underline-offset:.25em;width:-moz-fit-content;width:fit-content;font-size:1rem;line-height:1.45;text-decoration:underline;text-decoration-thickness:1px}.pp-link:hover{color:#fff;-webkit-text-decoration-color:var(--c-accent);text-decoration-color:var(--c-accent)}.pp-thumbs{flex-wrap:wrap;gap:.375rem;margin-top:.375rem;display:flex}.pp-thumbs button{opacity:.55;width:2.875rem;height:1.875rem;transition:opacity .15s var(--ease-out);outline:1px solid #ffffff59;overflow:hidden}.pp-thumbs button:hover{opacity:.85}.pp-thumbs button[data-slide-active]{opacity:1;outline-offset:2px;outline:1px solid #fff}.pp-thumbs button:disabled{pointer-events:none}.pp-thumbs img{object-fit:cover;width:100%;height:100%;display:block}@media (max-width:63.99rem),(max-aspect-ratio:4/3){.project-panel{inset:0}.project-panel:before{height:62%}.project-panel:after{content:"";pointer-events:none;z-index:-1;background:linear-gradient(#08080ab3,#08080a00);height:30%;position:absolute;inset:0 0 auto}.pp-grid{height:100%;padding-top:calc(5.5rem + var(--safe-t));padding-bottom:calc(1.5rem + var(--safe-b));grid-template-rows:auto 1fr auto;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:1.25rem}.pp-col-title{grid-column:1/-1;align-self:start;gap:.5rem}.pp-title{font-size:clamp(2.75rem,12vw,5rem)}.pp-title.is-long{font-size:clamp(1.875rem,7.5vw,3rem)}.pp-col-info{grid-area:3/1/auto/-1}.pp-col-role{grid-area:4/1/auto/-1}.pp-text{font-size:.9375rem}.pp-thumbs{display:none}}.last{visibility:hidden;opacity:0;transition:opacity .15s var(--ease-out), visibility .15s var(--ease-out)}body.is--last .last{visibility:visible;opacity:1}.last-backdrop{inset-block:0;opacity:1;width:70%;transition:opacity .7s var(--ease-out);background:linear-gradient(90deg,#08080ab8,#0000);position:absolute;left:0}.last-backdrop[data-past-header]{opacity:0}@media (max-width:47.99rem){.last-backdrop{width:100%}}.last-stage{opacity:0;transition:opacity .15s;position:absolute;inset:0}.last-stage[data-active]{opacity:1}.last-stage:first-of-type[data-active]{transition-duration:.5s}.last-block{will-change:transform, clip-path;border-top:1px solid #ffffff73;flex-direction:column;gap:1rem;width:min(36rem,50%);padding-top:.75rem;display:flex;position:absolute;bottom:10rem;left:25%}@media (max-width:63.99rem),(max-aspect-ratio:4/3){.last-block{width:auto;left:1.25rem;right:1.25rem;bottom:calc(7rem + var(--safe-b))}}.last-label{color:#d4d4d4}.last-text{flex-direction:column;gap:.875rem;display:flex}.last-text .b1{letter-spacing:-.02em;font-size:clamp(1.5rem,2.1vw,2.25rem);font-weight:500;line-height:1.15}.last-text .b2{color:#dcdcdc;max-width:46ch;font-size:1rem;line-height:1.5}.last-more{color:#f2f2f2;width:-moz-fit-content;width:fit-content}.last-more:hover{text-underline-offset:.25em;text-decoration:underline}.talk-wrap{padding-bottom:calc(6rem + var(--safe-b));align-items:flex-end;display:flex;position:absolute;inset:0}.talk-wrap:before{content:"";pointer-events:none;background:linear-gradient(#08080a00,#08080acc 75%);height:70%;position:absolute;inset:auto 0 0}.talk-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:1rem 1.5rem;display:grid;position:relative}.talk-label{color:#d4d4d4;grid-column:1/-1}.talk{flex-direction:column;grid-column:span 3;gap:1.25rem;display:flex}.talk__h{letter-spacing:-.055em;text-wrap:balance;max-width:13ch;font-size:clamp(3rem,6.6vw,8rem);font-weight:700;line-height:.86}.talk__mail{text-underline-offset:.2em;width:-moz-fit-content;width:fit-content;font-size:clamp(1.25rem,1.8vw,1.75rem);text-decoration:underline;text-decoration-thickness:1px}.talk:hover .talk__mail{-webkit-text-decoration-color:var(--c-accent);text-decoration-color:var(--c-accent)}.talk-side{border-top:1px solid #fff6;flex-direction:column;gap:1rem;padding-top:.75rem;padding-bottom:.5rem;display:flex}.talk__sub{font-size:1rem;line-height:1.45}.socials{flex-direction:column;gap:.375rem;display:flex}.socials a:hover{text-underline-offset:.2em;text-decoration:underline}@media (max-width:63.99rem),(max-aspect-ratio:4/3){.talk-wrap{padding-bottom:calc(5.5rem + var(--safe-b))}.talk-grid{grid-template-columns:1fr}.talk{grid-column:auto}.talk__h{font-size:clamp(2.75rem,13vw,5rem)}}.last-bottom{inset-inline:0;bottom:calc(1.25rem + var(--safe-b));position:absolute}@media (max-height:26rem){.last-bottom .footer-row{display:none}}.page-fade{z-index:9999;opacity:0;pointer-events:none;transition:opacity 1s var(--ease-page-fade);background:#000;position:fixed;inset:0}.page-fade[data-fading]{opacity:1}.scroll-back{color:#f2f2f2;min-height:2.75rem;margin:0 auto 1.25rem;display:none}@media (max-width:47.99rem),(max-aspect-ratio:4/3){.scroll-back{display:block}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation:none!important}}
