@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-ext-opsz-normal-oos9povj.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-opsz-normal-Bf69Tn_J.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg1:#fff;--bg2:#f0f0f0;--bg3:#e3e3e3;--fg1:#000;--fg2:#777;--fg3:#474747;--shape-top:#3a3a3a;--shape-bottom:#000;--font:"DM Sans Variable", system-ui, sans-serif;--fs-title:clamp(3rem, 7.4vw, 7rem);--fs-h1:clamp(2rem, 4.2vw, 3.75rem);--fs-lead:clamp(1.5rem, 3vw, 2.75rem);--fs-label:1.25rem;--fs-text:1.125rem;--fs-sub:.8125rem;--gutter:clamp(1rem, 8vw, 10.75rem);--radius:10px;--ease:cubic-bezier(.22, 1, .36, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg1:#0b0b0b;--bg2:#171717;--bg3:#242424;--fg1:#fff;--fg2:#8c8c8c;--fg3:#c4c4c4;--shape-top:#fff;--shape-bottom:#bdbdbd;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg1);color:var(--fg1);font-family:var(--font);font-size:var(--fs-text);-webkit-font-smoothing:antialiased;transition:background-color .5s var(--ease), color .5s var(--ease);margin:0;line-height:1.5}h1,h2,h3,p{margin:0}a{color:inherit}button,input,textarea{font:inherit;color:inherit}::selection{background:var(--fg1);color:var(--bg1)}:focus-visible{outline:2px solid var(--fg1);outline-offset:3px;border-radius:4px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.page{overflow-x:clip}.brand{align-items:center;gap:10px;font-size:.95rem;text-decoration:none;display:inline-flex}.brand__name{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.theme-toggle{cursor:pointer;width:36px;height:36px;transition:transform .6s var(--ease);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.theme-toggle:hover{transform:rotate(-25deg)scale(1.1)}.section-label{font-size:var(--fs-label);color:var(--fg2);text-transform:uppercase;letter-spacing:.01em;align-items:center;gap:1.25rem;margin-bottom:clamp(2rem,6vh,3.5rem);font-weight:500;display:flex}.section-label__mask{display:block;overflow:hidden}.section-label__text{display:block}.section-label__index{font-size:var(--fs-sub);font-variant-numeric:tabular-nums;vertical-align:.25em;margin-right:.9em}.section-label__line{background:var(--bg3);transform-origin:0;flex:1;height:1px}.letters{display:block}.letters__mask{vertical-align:top;margin-bottom:-.1em;padding:.04em 0 .1em;display:inline-block;overflow:hidden}.letters__char{display:inline-block}.header{z-index:50;transition:transform .6s var(--ease);padding:14px clamp(12px,2vw,28px);position:fixed;inset:0 0 auto}.header.is-hidden{transform:translateY(-110%)}.header__bar{transition:background-color .5s var(--ease), border-color .5s var(--ease), box-shadow .5s var(--ease);border:1px solid #0000;border-radius:14px;align-items:center;gap:2rem;padding:12px 18px;display:flex}.header.is-scrolled .header__bar{background:color-mix(in srgb, var(--bg1) 72%, transparent);border-color:var(--bg3);-webkit-backdrop-filter:blur(14px)saturate(1.4);box-shadow:0 10px 40px -20px #00000040}.header__progress{background:var(--fg1);transform-origin:0;opacity:0;height:1px;transition:opacity .4s;position:absolute;bottom:14px;left:clamp(26px,3vw,46px);right:clamp(26px,3vw,46px)}.header.is-scrolled .header__progress{opacity:1}.header__nav{gap:clamp(1.25rem,3vw,2.75rem);margin-left:auto;font-size:.95rem;display:flex}.header__nav a{line-height:1.4;text-decoration:none;display:block;overflow:hidden}.header__nav span{transition:transform .5s var(--ease);display:block;position:relative}.header__nav span:after{content:attr(data-text);position:absolute;top:100%;left:0}.header__nav a:hover span{transform:translateY(-100%)}.menu-toggle{cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;height:36px;padding:0 4px;font-size:.95rem;display:none}.mobile-menu{z-index:40;background:var(--bg1);flex-direction:column;justify-content:center;gap:.25rem;padding:0 1.5rem;display:flex;position:fixed;inset:0}.mobile-menu__link{letter-spacing:-.03em;font-size:clamp(2.75rem,13vw,4.5rem);font-weight:600;line-height:1.1;text-decoration:none;display:block;overflow:hidden}.mobile-menu__link span{display:block}.mobile-menu__social{color:var(--fg2);gap:1.25rem;margin-top:2.5rem;display:flex}.mobile-menu__social a{place-items:center;width:40px;height:40px;display:grid}.rail{z-index:30;mix-blend-mode:difference;flex-direction:column;align-items:flex-end;gap:12px;display:flex;position:fixed;top:50%;right:clamp(14px,2vw,30px);transform:translateY(-50%)}.rail__item{cursor:pointer;color:#fff;opacity:.5;background:0 0;border:0;flex-direction:row-reverse;align-items:center;gap:10px;padding:4px;transition:opacity .4s;display:flex}.rail__item.is-active,.rail__item:hover{opacity:1}.rail__label{font-size:var(--fs-sub);opacity:0;transition:opacity .4s var(--ease), transform .4s var(--ease);transform:translate(6px)}.rail__item:hover .rail__label{opacity:1;transform:none}.socials{z-index:30;mix-blend-mode:difference;color:#fff;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;bottom:0;left:clamp(14px,2vw,30px)}.socials__link{border-radius:50%;place-items:center;width:36px;height:36px;display:grid;position:relative}.socials__link svg{opacity:.7;transition:opacity .3s, transform .5s var(--ease)}.socials__link:hover svg{opacity:1;transform:translateY(-3px)scale(1.12)}.socials__label{font-size:var(--fs-sub);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .4s var(--ease), transform .4s var(--ease);position:absolute;left:calc(100% + 6px);transform:translate(-6px)}.socials__link:hover .socials__label{opacity:1;transform:none}.socials__line{opacity:.5;transform-origin:top;background:currentColor;width:1px;height:clamp(40px,9vh,90px);margin-top:6px}.section{padding:clamp(6rem, 16vh, 11rem) var(--gutter);position:relative}.marquee{white-space:nowrap;overflow:hidden}.marquee__track{will-change:transform;width:max-content;display:flex}.marquee__group{flex-shrink:0;align-items:center;display:flex}.hero{height:100svh;min-height:600px;position:relative;overflow:hidden}.ribbon{text-transform:uppercase;letter-spacing:.01em;will-change:transform;width:150vw;padding:.55em 0;font-size:clamp(1.1rem,2.4vw,2.25rem);font-weight:500;position:absolute;left:-25vw}.ribbon .marquee__group>span{padding:0 .9em}.ribbon__dot{font-size:.6em}.ribbon--grey{z-index:0;background:var(--bg3);color:var(--fg2);top:1%}.ribbon--black{z-index:1;background:var(--fg1);color:var(--bg1);top:23%}.hero__shapes{z-index:2;aspect-ratio:1;pointer-events:none;width:clamp(200px,30vw,460px);position:absolute;top:30%;right:clamp(1rem,12vw,13rem)}.hero__shapes-inner{position:absolute;inset:0}.hero__shape{filter:drop-shadow(0 30px 40px #0000002e);will-change:transform;position:absolute;inset:0}.hero__shape svg{width:100%;height:100%;display:block}.hero__shape--c{transform-origin:35% 31%}.hero__shape--d{transform-origin:62% 69%}.hero__intro{z-index:3;left:var(--gutter);max-width:min(90vw,34rem);position:absolute;bottom:clamp(5rem,16vh,10rem)}.hero__greeting{color:var(--fg2);margin-bottom:.5rem;font-size:clamp(1.1rem,1.8vw,1.6rem)}.hero__name{font-size:var(--fs-title);letter-spacing:-.03em;white-space:nowrap;font-weight:700;line-height:1}.hero__tagline{max-width:26rem;color:var(--fg3);margin-top:1.25rem}.hero__cue{z-index:3;cursor:pointer;width:44px;height:44px;animation:bob 2.2s var(--ease) infinite;background:0 0;border:0;border-radius:50%;place-items:center;margin-left:-22px;display:grid;position:absolute;bottom:2rem;left:50%}@keyframes bob{50%{transform:translateY(8px)}}.about__text{max-width:24em;font-size:var(--fs-lead);letter-spacing:-.015em;font-weight:500;line-height:1.25}.reveal-word{white-space:pre;will-change:transform, opacity;display:inline-block}.about__facts{grid-template-columns:repeat(3,1fr);gap:2rem;margin:clamp(4rem,10vh,7rem) 0 0;display:grid}.about__fact{border-top:1px solid var(--bg3);padding-top:1rem}.about__fact dt{font-size:var(--fs-sub);color:var(--fg2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.35rem}.about__fact dd{margin:0}.skills__rows{margin:0 calc(-1 * var(--gutter));will-change:transform}.skills__row{padding:.1em 0}.skills__word{letter-spacing:-.035em;font-size:clamp(3rem,9vw,8.5rem);font-weight:700;line-height:1.12;transition:color .4s}.skills__word--outline{color:#0000;-webkit-text-stroke:1.5px var(--fg1)}.skills__word--outline:hover{color:var(--fg1)}.skills__sep{aspect-ratio:1;background:var(--fg1);border-radius:30%;width:clamp(14px,1.6vw,26px);margin:0 clamp(1rem,2.4vw,2.5rem);transform:rotate(45deg)}.skills__groups{grid-template-columns:repeat(4,1fr);gap:2rem;margin-top:clamp(4rem,12vh,8rem);display:grid}.skills__group h3{border-bottom:1px solid var(--bg3);font-size:var(--fs-sub);color:var(--fg2);text-transform:uppercase;letter-spacing:.04em;margin:0 0 1rem;padding-bottom:.75rem;font-weight:500}.skills__group ul{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.services__stack{padding-bottom:6vh}.service{margin-bottom:14vh;position:sticky}.service:last-child{margin-bottom:0}.service__card{will-change:transform;background:var(--bg2);transform-origin:top;border-radius:24px;grid-template-columns:minmax(6rem,.6fr) 1fr;gap:2rem;min-height:min(62vh,560px);padding:clamp(1.5rem,4vw,3.5rem);display:grid;position:relative;overflow:hidden}.service__card--dark{background:var(--fg1);color:var(--bg1)}.service__index{letter-spacing:-.05em;font-size:clamp(4rem,10vw,9rem);font-weight:700;line-height:.85}.service__body{flex-direction:column;align-self:end;gap:1.25rem;display:flex}.service__title{font-size:var(--fs-h1);letter-spacing:-.025em;font-weight:600;line-height:1.05}.service__text{opacity:.72;max-width:32em}.service__points{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.service__points li{font-size:var(--fs-sub);opacity:.8;border:1px solid;border-radius:999px;padding:.35rem .85rem}.service__shade{pointer-events:none;background:#000;position:absolute;inset:0}.projects{padding-bottom:0}.projects__lead{max-width:40em;color:var(--fg3)}.projects__pin{margin:clamp(2rem, 6vh, 4rem) calc(-1 * var(--gutter)) 0;position:relative}.projects__sticky{flex-direction:column;justify-content:center;gap:2rem;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.projects__track{width:max-content;padding:0 var(--gutter);will-change:transform;gap:clamp(1rem,2vw,1.5rem);display:flex}.project{background:var(--bg2);width:clamp(290px,40vw,600px);height:min(68vh,620px);transition:transform .6s var(--ease), background-color .4s;border-radius:14px;flex-direction:column;padding:clamp(1.1rem,2vw,1.6rem);display:flex}.project:hover{background:var(--bg3);transform:translateY(-8px)}.project__head{font-size:var(--fs-sub);color:var(--fg2);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;display:flex}.project__name{text-transform:uppercase;letter-spacing:-.01em;margin-top:.15rem;font-size:clamp(1.75rem,3vw,2.75rem);font-weight:500;line-height:1.05}.project__visual{flex:1;place-items:center;min-height:0;display:grid}.project__text{color:var(--fg3);font-size:.95rem}.project__foot{justify-content:space-between;align-items:end;gap:1rem;margin-top:1rem;display:flex}.project__tags{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.project__tags li{border:1px solid var(--bg3);background:var(--bg1);border-radius:999px;padding:.2rem .65rem;font-size:.75rem}.project__count{font-size:var(--fs-sub);color:var(--fg2);font-variant-numeric:tabular-nums;flex-shrink:0}.projects__progress{padding:0 var(--gutter);font-size:var(--fs-sub);align-items:center;gap:1.5rem;display:flex}.projects__current{text-transform:uppercase;letter-spacing:.04em;min-width:12ch;font-weight:500}.projects__bar{background:var(--bg3);flex:1;height:1px}.projects__bar span{background:var(--fg1);transform-origin:0;height:100%;display:block}.pv{aspect-ratio:1;width:min(70%,240px);max-height:100%;overflow:visible}.pv__ink{fill:var(--fg1)}.pv__ink--soft{opacity:.4}.pv__guide{fill:none;stroke:var(--fg2);stroke-dasharray:2 6}.pv__stroke{fill:none;stroke:var(--fg1);stroke-width:3px}.pv__track{fill:var(--bg3)}.pv__spin{transform-origin:100px 100px;animation:10s linear infinite spin}.pv__lock{transform-box:fill-box;transform-origin:50%;animation:pulse 2.4s var(--ease) infinite}.pv__bar{transform-box:fill-box;transform-origin:0;animation:share 3.2s var(--ease) infinite alternate}.pv__stream{fill:none;stroke:var(--fg1);stroke-width:1.5px;stroke-linecap:round;stroke-dasharray:8 10;animation:1.6s linear infinite stream}.pv--cube{perspective:700px;place-items:center;display:grid}.cube{width:110px;height:110px;transform-style:preserve-3d;animation:14s linear infinite tumble;position:relative}.cube__face{border:1.5px solid var(--fg1);background:color-mix(in srgb, var(--fg1) 5%, transparent);border-radius:6px;position:absolute;inset:0}.cube__face--front{transform:translateZ(55px)}.cube__face--back{transform:rotateY(180deg)translateZ(55px)}.cube__face--left{transform:rotateY(-90deg)translateZ(55px)}.cube__face--right{transform:rotateY(90deg)translateZ(55px)}.cube__face--top{transform:rotateX(90deg)translateZ(55px)}.cube__face--bottom{transform:rotateX(-90deg)translateZ(55px)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{transform:scale(1.15)}}@keyframes share{0%{transform:scaleX(.18)}to{transform:scaleX(.92)}}@keyframes stream{to{stroke-dashoffset:-36px}}@keyframes tumble{0%{transform:rotateX(-22deg)rotateY(0)}to{transform:rotateX(-22deg)rotateY(360deg)}}.contact__headline{font-size:var(--fs-title);letter-spacing:-.035em;flex-direction:column;font-weight:700;line-height:1;display:flex}.contact__headline>span:not(.sr-only){white-space:nowrap;display:block}.contact__line--right{color:var(--fg2);align-self:flex-end}.contact__body{justify-items:start;gap:1.75rem;margin-top:clamp(3.5rem,10vh,6rem);display:grid}.contact__text{max-width:28em;color:var(--fg3)}.contact__mask{max-width:100%;padding-bottom:.12em;display:block;overflow:hidden}.contact__mail{letter-spacing:-.035em;overflow-wrap:anywhere;background:linear-gradient(var(--fg1), var(--fg1)) left bottom / 0% 2px no-repeat, linear-gradient(var(--bg3), var(--bg3)) left bottom / 100% 2px no-repeat;transition:background-size .6s var(--ease);font-size:clamp(1.35rem,5.4vw,4.25rem);font-weight:600;line-height:1.1;text-decoration:none;display:inline-block}.contact__mail:hover{background-size:100% 2px,100% 2px}.button{background:var(--fg1);color:var(--bg1);cursor:pointer;transition:transform .4s var(--ease);border:0;border-radius:8px;align-items:center;padding:.8rem 1.3rem;font-size:.95rem;display:inline-flex}.button:hover{transform:scale(1.04)}.button__label{display:inline-grid;overflow:hidden}.button__label>span{white-space:nowrap;grid-area:1/1}.footer{padding:clamp(3rem, 8vh, 5rem) var(--gutter) 0;border-top:1px solid var(--bg3);overflow:hidden}.footer__cols{grid-template-columns:repeat(3,1fr);gap:2rem;font-size:.95rem;display:grid}.footer__label{color:var(--fg2);text-transform:uppercase;letter-spacing:.04em;margin:1.25rem 0 .4rem;font-size:.7rem}.footer__label:first-child{margin-top:0}.footer__strong{font-weight:500;text-decoration:none}.footer__underline{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.footer__links{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.footer__links a{text-decoration:none}.footer__links a:hover{text-underline-offset:3px;text-decoration:underline}.footer__links--muted{font-size:var(--fs-sub);color:var(--fg2)}.wordmark{letter-spacing:-.06em;justify-content:center;margin-top:clamp(3rem,10vh,6rem);font-size:clamp(4rem,23vw,22rem);font-weight:700;line-height:.78;display:flex}.wordmark__mask{padding:.06em .02em .05em;display:inline-block;overflow:hidden}.wordmark__char{display:inline-block}@media (width<=1080px){.skills__groups{grid-template-columns:repeat(2,1fr)}.rail{display:none}}@media (width<=760px){.header__nav,.socials{display:none}.menu-toggle{margin-left:auto;display:grid}.header__bar,.header.is-scrolled .header__bar{background:color-mix(in srgb, var(--bg1) 78%, transparent);border-color:var(--bg3);-webkit-backdrop-filter:blur(14px)saturate(1.4);gap:.75rem;padding:6px 8px 6px 12px}.header__progress{left:24px;right:24px}.hero__shapes{width:52vw;top:34%;right:1.25rem}.ribbon--black{top:22%}.hero__intro{bottom:6.5rem}.hero__name{font-size:clamp(2.6rem,13vw,4rem)}.about__facts,.skills__groups,.footer__cols{grid-template-columns:1fr}.service__card{grid-template-columns:1fr;min-height:56vh}.project{width:82vw;height:min(72vh,560px)}.contact__headline{font-size:clamp(2.4rem,12vw,4rem)}}@media (prefers-reduced-motion:reduce){.pv *,.cube,.hero__cue{animation:none!important}}
