:root{--bg:#f5f4f0;--text:#1a1a1a;--text-muted:#999;--transition-slow:.8s cubic-bezier(.16,1,.3,1);--transition-medium:.5s cubic-bezier(.16,1,.3,1);--transition-fast:.3s ease;--easing:cubic-bezier(.16,1,.3,1);--page-padding:clamp(13px,4vw,55px);--border:#1a1a1a1f}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-inter,"Inter",sans-serif);letter-spacing:.02em;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;line-height:1.6}body{min-height:100svh}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}ul,ol{list-style:none}.fade-in-up{opacity:0;transition:opacity var(--transition-slow),transform var(--transition-slow);transform:translateY(34px)}.fade-in-up.visible{opacity:1;transform:translateY(0)}html,body,a,button{cursor:none}.cursor-dot{background:var(--text);pointer-events:none;z-index:9999;will-change:transform;border-radius:50%;width:10px;height:10px;position:fixed;top:-5px;left:-5px}.cursor-aura{pointer-events:none;z-index:9998;will-change:transform;opacity:.6;background:radial-gradient(circle,#1a1a1a14 0%,#0000 70%);border-radius:50%;width:40px;height:40px;position:fixed;top:-20px;left:-20px}@media (pointer:coarse){.cursor-dot,.cursor-aura{display:none}html,body,a,button{cursor:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
.preloader{z-index:9999;background:#0d0c0b;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.preloader--exit{animation:1.3s cubic-bezier(.4,0,0,1) forwards preloaderExit}.preloader__content{flex-direction:column;align-items:center;gap:13px;display:flex}.preloader__name-row{letter-spacing:.04em;text-transform:lowercase;color:#fff;font-size:clamp(1.6rem,4.5vw,3rem);font-weight:300;overflow:hidden}.preloader__first{opacity:0;transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1);display:inline-block;transform:translateY(-21px)}.preloader__first--visible{opacity:1;transform:translateY(0)}.preloader__last{opacity:0;transition:opacity .9s cubic-bezier(.16,1,.3,1) .15s,transform .9s cubic-bezier(.16,1,.3,1) .15s;display:inline-block;transform:translateY(21px)}.preloader__last--visible{opacity:1;transform:translateY(0)}.preloader__subtitle{letter-spacing:.2em;text-transform:uppercase;color:#ffffff73;opacity:0;font-size:clamp(.65rem,1.2vw,.8rem);font-weight:400;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(6px)}.preloader__subtitle--visible{opacity:1;transform:translateY(0)}@keyframes preloaderExit{to{transform:translateY(-100%)}}main{opacity:0}:root.preloader-reveal main{animation:1.2s ease-in-out .4s forwards contentReveal}:root.preloader-done main{opacity:1}@keyframes contentReveal{0%{opacity:0}to{opacity:1}}.nav{opacity:0}:root.preloader-reveal .nav{animation:1.2s ease-in-out .5s forwards contentReveal}:root.preloader-done .nav{opacity:1}:root.preloader-reveal .hero-shrink__inner{animation:2s cubic-bezier(.4,0,.2,1) .3s both heroReveal}:root.preloader-done .hero-shrink__inner{opacity:1;transform:scale(1)}@keyframes heroReveal{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@media (max-width:480px){.preloader__name-row{font-size:1.4rem}.preloader__subtitle{letter-spacing:.15em;font-size:.6rem}.preloader__content{gap:8px}}
.nav{pointer-events:none;z-index:200;padding:21px var(--page-padding);position:fixed;inset:0}.nav__name{top:21px;left:var(--page-padding);pointer-events:auto;letter-spacing:.01em;text-transform:lowercase;transition:opacity var(--transition-fast);font-size:14px;font-weight:400;position:absolute}.nav__name:hover{opacity:.5}.nav__links{top:21px;right:var(--page-padding);pointer-events:auto;gap:21px;display:flex;position:absolute}.nav__link{letter-spacing:.01em;text-transform:lowercase;transition:opacity var(--transition-fast);cursor:pointer;color:var(--text);background:0 0;border:none;font-size:14px;font-weight:400}.nav__link:hover{opacity:.5}.nav__name,.nav__link{transition:opacity var(--transition-fast),color .4s ease}:root.hero-dark .nav__name,:root.hero-dark .nav__link{color:#fff}@media (max-width:768px){.nav{padding:13px var(--page-padding)}.nav__name{font-size:12px;top:13px}.nav__links{gap:13px;top:13px}.nav__link{font-size:12px}}
.overlay{z-index:200;background:var(--bg);visibility:hidden;transition:transform var(--transition-slow),visibility 0s linear .8s;padding:var(--page-padding);flex-direction:column;justify-content:center;padding-left:clamp(34px,10vw,144px);display:flex;position:fixed;inset:0;transform:translate(100%)}.overlay--open{visibility:visible;transition:transform var(--transition-slow),visibility 0s linear 0s;transform:translate(0)}.overlay__close{top:var(--page-padding);right:var(--page-padding);text-transform:lowercase;letter-spacing:.05em;transition:opacity var(--transition-fast);font-size:12px;position:absolute}.overlay__close:hover{opacity:.5}.overlay__list{flex-direction:column;gap:8px;display:flex}.overlay__item{opacity:0;transition:opacity var(--transition-medium),transform var(--transition-medium);transform:translate(34px)}.overlay--open .overlay__item{opacity:1;transform:translate(0)}.overlay__link{text-transform:lowercase;letter-spacing:.05em;transition:transform var(--transition-fast),opacity var(--transition-fast);font-size:clamp(1.4rem,3vw,2.5rem);font-weight:300;line-height:1.2;display:inline-block}.overlay__link:hover{opacity:.6;transform:translate(20px)}@media (max-width:768px){.overlay{padding-left:var(--page-padding)}.overlay__link{font-size:clamp(1.2rem,5vw,1.8rem)}}
.lightbox{z-index:300;background:var(--bg);justify-content:center;align-items:center;animation:.3s both lightboxFadeIn;display:flex;position:fixed;inset:0}@keyframes lightboxFadeIn{0%{opacity:0}to{opacity:1}}.lightbox__image-container{cursor:pointer;width:100%;height:100%;position:relative}.lightbox__image{justify-content:center;align-items:center;padding:clamp(89px,12vh,144px) clamp(55px,12vw,233px);transition:opacity .4s;display:flex;position:absolute;inset:0}.lightbox__image--entering{opacity:0}.lightbox__image--active{opacity:1}.lightbox__image--exiting{opacity:0}.lightbox__image img{object-fit:contain;max-width:100%;max-height:100%}.lightbox__counter{bottom:var(--page-padding);letter-spacing:.05em;color:var(--text-muted);font-size:11px;position:absolute;left:50%;transform:translate(-50%)}.lightbox__close{top:var(--page-padding);right:var(--page-padding);text-transform:lowercase;letter-spacing:.05em;z-index:10;transition:opacity var(--transition-fast);font-size:12px;position:absolute}.lightbox__close:hover{opacity:.5}.lightbox__nav{z-index:5;display:flex;position:absolute;inset:0}.lightbox__nav-prev,.lightbox__nav-next{cursor:pointer;background:0 0;border:none;flex:1}.lightbox__nav-prev{cursor:w-resize}.lightbox__nav-next{cursor:e-resize}@media (max-width:768px){.lightbox__image{padding:55px 13px}}
.image-reveal{overflow:hidden}
.masonry{column-count:3;column-gap:10px}.masonry__item{break-inside:avoid;margin-bottom:10px}@media (max-width:1024px){.masonry{column-count:2}}@media (max-width:768px){.masonry{column-count:1}}
.justified-grid__row{display:flex}.justified-grid__item{flex-shrink:0;overflow:hidden}.justified-grid__item img{transition:transform var(--transition-medium);display:block}.justified-grid__item .gallery-card:hover img{transform:scale(1.03)}@media (max-width:640px){.justified-grid__row{flex-direction:column}.justified-grid__item,.justified-grid__item img{width:100%!important;height:auto!important}}
.hero-shrink{height:200svh;position:relative}.hero-shrink__sticky{z-index:10;background:var(--bg);justify-content:center;align-items:center;height:100svh;display:flex;position:fixed;top:0;left:0;right:0;overflow:hidden}.hero-shrink__inner{will-change:width,height;contain:layout style paint;width:100vw;height:100svh;position:relative;overflow:hidden}.hero-shrink__inner img{object-fit:cover;width:100%;height:100%}.scroll-hint{z-index:10;will-change:opacity;flex-direction:column;align-items:center;gap:8px;animation:1s 1.5s both scrollHintIn;display:flex;position:absolute;bottom:clamp(24px,4vh,48px);left:50%;transform:translate(-50%)}.scroll-hint__text{letter-spacing:.15em;text-transform:uppercase;color:#fff9;font-size:10px;font-weight:400}:root:not(.hero-dark) .scroll-hint__text{color:var(--text-muted)}.scroll-hint__line{width:1px;height:34px;position:relative;overflow:hidden}.scroll-hint__line:before{content:"";background:linear-gradient(#0000,#ffffff80 30% 70%,#0000);animation:1.6s ease-in-out infinite scrollLineMove;position:absolute;inset:0}:root:not(.hero-dark) .scroll-hint__line:before{background:linear-gradient(to bottom,transparent,var(--text-muted)30%,var(--text-muted)70%,transparent)}@keyframes scrollHintIn{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes scrollLineMove{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}.scroll-gallery{position:relative}.scroll-gallery__panel{content-visibility:auto;contain-intrinsic-size:auto 100svh;height:100svh;position:relative}.scroll-gallery__sticky{visibility:hidden;justify-content:center;align-items:center;height:100svh;display:flex;position:sticky;top:0}.scroll-gallery__image-wrapper{aspect-ratio:4/5;will-change:opacity;contain:layout style;width:min(38.2vw,420px,80svh - 64px);position:relative;overflow:hidden}.scroll-gallery__image{opacity:0;transition:opacity .6s var(--easing);will-change:opacity;contain:layout style paint;position:absolute;inset:0}.scroll-gallery__image--active{opacity:1}.scroll-gallery__image a{width:100%;height:100%;display:block}.scroll-gallery__image img{object-fit:cover;width:100%;height:100%}.scroll-gallery__indicator{will-change:opacity,transform;align-items:center;gap:13px;width:min(38.2vw,420px,80svh - 64px);display:flex;position:absolute;top:calc(50% + min(38.2vw,420px,80svh - 64px)/1.6 + 21px);left:50%;translate:-50%}.scroll-gallery__index,.scroll-gallery__total{letter-spacing:.05em;color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:10px;font-weight:400}.scroll-gallery__progress{background:#00000014;flex:1;height:2px;overflow:hidden}.scroll-gallery__progress-bar{background:var(--text);transform-origin:0;will-change:transform;width:100%;height:100%;transform:scaleX(0)}@media (max-width:768px){.scroll-gallery__image-wrapper{width:min(70vw,320px,80svh - 64px)}.scroll-gallery__indicator{width:min(70vw,320px,80svh - 64px);top:calc(50% + min(70vw,320px,80svh - 64px)/1.6 + 16px)}}@media (max-width:480px){.scroll-gallery__image-wrapper{width:min(80vw,80svh - 64px)}.scroll-gallery__indicator{width:min(80vw,80svh - 64px);top:calc(50% + min(80vw,80svh - 64px)/1.6 + 16px)}}
.gallery-page{padding:89px var(--page-padding)55px}.gallery-page__header{justify-content:space-between;align-items:center;margin-bottom:21px;display:flex}.gallery-card{display:block}.gallery-card__image{line-height:0;position:relative;overflow:hidden}.gallery-card__image img{object-fit:cover;width:100%;height:100%;transition:transform var(--transition-medium),box-shadow var(--transition-medium)}.gallery-card:hover .gallery-card__image img{transform:scale(1.02)}.gallery-card__title{text-transform:lowercase;letter-spacing:.03em;color:var(--text-muted);transition:color var(--transition-fast);margin-top:8px;font-size:11px;font-weight:400}.gallery-card:hover .gallery-card__title{color:var(--text)}.project-list{padding:0}.gallery-page__controls{align-items:center;gap:21px;animation:1.4s cubic-bezier(.16,1,.3,1) .15s both listTitleIn;display:flex}.gallery-filter{align-items:center;gap:8px;display:flex}.gallery-filter__link{letter-spacing:.08em;text-transform:lowercase;color:var(--text-muted);transition:color var(--transition-fast);font-size:10px;font-weight:400;line-height:1}.gallery-filter__link:hover,.gallery-filter__link--active{color:var(--text)}.gallery-filter__divider{color:var(--border);-webkit-user-select:none;user-select:none;font-size:10px}.view-toggle{align-items:center;gap:8px;display:flex}.view-toggle__link{color:var(--text-muted);transition:color var(--transition-fast);align-items:center;line-height:1;display:flex}.view-toggle__link:hover,.view-toggle__link--active{color:var(--text)}.view-toggle__divider{color:var(--text-muted);opacity:.4;-webkit-user-select:none;user-select:none;font-size:10px;line-height:1}.project-list__heading{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:400;animation:1.4s cubic-bezier(.16,1,.3,1) .1s both listTitleIn}.project-list__item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:13px 0;display:flex}.project-list__title{letter-spacing:-.01em;color:var(--text);opacity:0;font-size:clamp(1.25rem,2.5vw,2rem);font-weight:400;transition:opacity .2s;transform:translateY(12px)}.fade-in-up.visible .project-list__title{animation:1s cubic-bezier(.16,1,.3,1) both listTitleIn;animation-delay:calc(80ms + var(--i,0)*.1s)}@keyframes listTitleIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.project-list__title:hover{opacity:.5}.project-list__count{letter-spacing:.08em;color:var(--text-muted);font-variant-numeric:tabular-nums;opacity:0;flex-shrink:0;margin-left:21px;font-size:10px;font-weight:400;transform:translateY(12px)}.fade-in-up.visible .project-list__count{animation:.8s cubic-bezier(.16,1,.3,1) both listTitleIn;animation-delay:calc(80ms + var(--i,0)*.1s + .8s)}@media (max-width:768px){.gallery-page{padding-top:55px;padding-bottom:34px}}
.project-page{padding:144px var(--page-padding)89px}.project-page--commercial{padding:0}.project-page--commercial .project-page__header{padding:144px var(--page-padding)0}.project-page__header{text-align:center;margin-bottom:34px}.project-page__title{text-transform:lowercase;letter-spacing:.05em;font-size:clamp(1.4rem,3vw,2.5rem);font-weight:300}.project-page__description{color:var(--text-muted);max-width:600px;margin-top:13px;margin-left:auto;margin-right:auto;font-size:13px;line-height:1.6}.personal-detail{max-width:800px;margin:0 auto}.personal-detail__image{line-height:0;overflow:hidden}.personal-detail__image img{display:block}.personal-detail__info{text-align:center;margin-top:34px}.personal-detail__title{text-transform:lowercase;letter-spacing:.05em;font-size:clamp(1.25rem,2.5vw,2rem);font-weight:300}.personal-detail__description{color:var(--text-muted);max-width:500px;margin-top:13px;margin-left:auto;margin-right:auto;font-size:13px;line-height:1.6}.cc-panel{height:100svh}.cc__sticky{pointer-events:none;justify-content:center;align-items:center;height:100svh;margin-bottom:-100svh;display:flex;position:sticky;top:0}.cc__image-wrapper{aspect-ratio:4/5;width:min(55vw,760px,75svh - 90px);position:relative;overflow:hidden}.cc__image{opacity:0;transition:opacity .6s var(--easing);position:absolute;inset:0}.cc__image--active{opacity:1}.cc__image img{object-fit:cover;width:100%;height:100%}.cc__indicator{align-items:center;gap:13px;width:min(55vw,760px,75svh - 90px);display:flex;position:absolute;top:calc(50% + min(55vw,760px,75svh - 90px)/1.6 + 21px);left:50%;translate:-50%}.cc__index,.cc__total{letter-spacing:.05em;color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:10px;font-weight:400}.cc__progress{background:#00000014;flex:1;height:2px;overflow:hidden}.cc__progress-bar{background:var(--text);transform-origin:0;will-change:transform;width:100%;height:100%;transform:scaleX(0)}.cc__nav{pointer-events:auto;gap:13px;display:none;position:absolute;bottom:clamp(24px,5vh,48px);left:50%;translate:-50%}.cc__arrow{border:1px solid var(--border);background:var(--bg);width:48px;height:48px;color:var(--text);cursor:pointer;transition:border-color var(--transition-fast),opacity var(--transition-fast);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;display:flex}.cc__arrow:active{opacity:.6}.cc__arrow:disabled{opacity:.25;cursor:default}.project-page__photos{flex-direction:column;gap:89px;display:flex}.project-photo{overflow:hidden}.project-photo--full{width:100%}.project-photo--offset-right{width:60%;margin-left:auto}.project-photo--centered{width:80%;margin-left:auto;margin-right:auto}.project-photo__image{position:relative;overflow:hidden}.project-photo__image img{width:100%;height:auto;display:block}.project-photo__title{text-transform:lowercase;letter-spacing:.1em;color:var(--text-muted);margin-top:8px;font-size:11px;font-weight:400}@media (max-width:768px){.project-page,.project-page--commercial .project-page__header{padding-top:55px}.project-page__header{margin-bottom:34px}.personal-detail__info{margin-top:21px}.cc__image-wrapper{width:min(78vw,75svh - 90px)}.cc__indicator{width:min(78vw,75svh - 90px);top:calc(50% + min(78vw,75svh - 90px)/1.6 + 16px)}.cc__nav{display:flex}.project-page__photos{gap:34px}.project-photo--offset-right,.project-photo--centered{width:100%;margin-left:0;margin-right:0}}
.about-page{padding:89px var(--page-padding)55px;align-items:center;min-height:100svh;display:flex}.about-page__content{grid-template-columns:2fr 3fr;align-items:start;gap:clamp(34px,6vw,89px);width:100%;max-width:1200px;margin:0 auto;display:grid}.about-page__portrait{aspect-ratio:3/4;position:relative;overflow:hidden}.about-page__portrait img{object-fit:cover;width:100%;height:100%}.about-page__bio{flex-direction:column;gap:21px;display:flex}.about-page__name{text-transform:lowercase;letter-spacing:.05em;font-size:clamp(1.2rem,2.5vw,1.8rem);font-weight:300}.about-page__text{color:var(--text);font-size:13px;line-height:1.8}.about-page__links{gap:21px;margin-top:13px;display:flex}.about-page__link{text-transform:lowercase;letter-spacing:.03em;color:var(--text-muted);transition:color var(--transition-fast);font-size:12px}.about-page__link:hover{color:var(--text)}@media (max-width:768px){.about-page{align-items:flex-start;padding-top:55px;padding-bottom:34px}.about-page__content{grid-template-columns:1fr;gap:34px}.about-page__portrait{max-width:280px}.about-page__bio{gap:13px}.about-page__name{font-size:1.2rem}.about-page__links{margin-top:8px}}

.coming-soon{background:var(--bg);justify-content:center;align-items:center;min-height:100svh;display:flex}.coming-soon__content{flex-direction:column;align-items:center;gap:13px;display:flex}.coming-soon__name{letter-spacing:.08em;text-transform:lowercase;color:var(--text);font-size:clamp(1.2rem,3vw,2rem);font-weight:300;animation:1.4s cubic-bezier(.16,1,.3,1) both comingSoonFade}.coming-soon__label{letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:400;animation:1.4s cubic-bezier(.16,1,.3,1) .2s both comingSoonFade}@keyframes comingSoonFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
