:root{
  --paper:#f3f1e9;--ink:#111310;--muted:rgba(17,19,16,.56);--line:rgba(17,19,16,.14);--accent:#6f7d68;--sage:#d6ddcf;
  --night:#111310;--light:#f7f5ef;--sans:"Manrope",-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",sans-serif;
  --mono:"Manrope",-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",sans-serif;--ease:cubic-bezier(.22,1,.36,1);--ease-move:cubic-bezier(.76,0,.24,1);--max:1440px
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;overflow-x:hidden;color:var(--ink);background:var(--paper);font:400 1rem/1.5 var(--sans);font-optical-sizing:auto;-webkit-font-smoothing:antialiased}
body.loading{overflow:hidden}a{color:inherit}button{font:inherit}img{max-width:100%}
::selection{color:var(--paper);background:var(--accent)}
:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
[id]{scroll-margin-top:6rem}.shell{width:min(var(--max),calc(100% - clamp(2rem,5vw,6rem)));margin-inline:auto}
.section-no,.project-number,.project-type,.hero-kicker,.hero-index,.contact-meta,.contact-foot{font:400 .68rem/1.2 var(--mono);letter-spacing:.04em;text-transform:uppercase}

.loader{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;color:var(--paper);background:var(--ink);transition:transform .9s var(--ease-move);transform-origin:top}
.loader span{font-size:clamp(3rem,8vw,8rem);font-weight:700;letter-spacing:-.08em;animation:loaderPulse .7s ease-in-out infinite alternate}
.loader i{position:absolute;left:0;bottom:0;width:0;height:3px;background:var(--accent);animation:loaderLine 1s var(--ease) forwards}
.loaded .loader{transform:translateY(-102%);pointer-events:none}.loaded .loader span{animation:none}
@keyframes loaderPulse{to{opacity:.28;transform:scale(.96)}}@keyframes loaderLine{to{width:100%}}
.scroll-progress{position:fixed;z-index:90;top:0;left:0;width:100%;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;will-change:transform}

.site-header{position:fixed;z-index:80;top:0;left:0;width:100%;color:var(--ink);transition:color .25s ease}
.site-header:before{content:"";position:absolute;inset:0;background:rgba(242,240,234,.72);border-bottom:1px solid transparent;-webkit-backdrop-filter:saturate(160%) blur(18px);backdrop-filter:saturate(160%) blur(18px);opacity:0;transition:opacity .25s ease,border-color .25s ease}
.site-header.scrolled:before{opacity:1;border-color:var(--line)}
.nav{position:relative;height:5rem;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:2rem}
.brand{width:max-content;display:flex;align-items:center;gap:.75rem;text-decoration:none}.brand>span{width:2.25rem;height:2.25rem;display:grid;place-items:center;color:var(--paper);background:var(--ink);border-radius:50%;font:600 .72rem/1 var(--sans)}.brand small{font-size:.76rem;font-weight:600;letter-spacing:-.01em}
.nav-center{display:flex;align-items:center;gap:.55rem;color:var(--muted);font:400 .64rem/1 var(--mono);text-transform:uppercase}.status-dot{width:.45rem;height:.45rem;border-radius:50%;background:#43aa5b;box-shadow:0 0 0 4px rgba(67,170,91,.13);animation:pulse 2.2s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 0 8px rgba(67,170,91,0)}}
.nav-right{justify-self:end;display:flex;align-items:center;gap:1.4rem}.nav-right>a{position:relative;min-height:44px;display:flex;align-items:center;text-decoration:none;font-size:.76rem;font-weight:600}.nav-right>a:after{content:"";position:absolute;left:0;bottom:10px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .25s var(--ease)}
.languages{--active:0;position:relative;display:grid;grid-template-columns:repeat(2,2.35rem);padding:3px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.3)}.languages[data-active="en"]{--active:1}.lang-thumb{position:absolute;top:3px;left:3px;width:2.35rem;height:2rem;border-radius:999px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.08);transform:translateX(calc(var(--active)*2.35rem));transition:transform .4s var(--ease)}.languages button{position:relative;z-index:1;height:2rem;padding:0;border:0;color:var(--muted);background:transparent;cursor:pointer;font:400 .62rem/1 var(--mono)}.languages button[aria-pressed=true]{color:var(--ink)}

.hero{position:relative;min-height:100svh;padding-top:7rem;display:grid;grid-template-rows:auto 1fr auto;isolation:isolate}
.hero-kicker{align-self:start;display:flex;justify-content:space-between;width:calc(50% - 2rem);color:var(--muted)}
.hero-title{position:relative;z-index:3;align-self:center;margin:0;padding:3rem 0 7rem;font-size:clamp(4.7rem,9.7vw,10rem);font-weight:600;line-height:.82;letter-spacing:-.085em;text-wrap:nowrap}
.title-line{display:block;overflow:hidden;padding:0 .08em .1em}.title-line>span{display:block;transform:translateY(110%);transition:transform 1.15s .1s var(--ease)}.loaded .title-line>span{transform:none}.title-line--shift{padding-left:12vw}.title-line i{font-family:Georgia,"Times New Roman",serif;font-weight:400}.title-line b{color:var(--accent);font-weight:600}
.hero-portrait{position:absolute;z-index:2;right:-2.5%;bottom:0;width:min(46vw,42rem);height:min(83vh,55rem);margin:0;pointer-events:none;transform:translate3d(var(--portrait-x,0),var(--portrait-y,2rem),0) scale(.94);opacity:0;transition:opacity .9s .45s ease,transform 1.2s .35s var(--ease);will-change:transform}
.loaded .hero-portrait{opacity:1;transform:translate3d(var(--portrait-x,0),var(--portrait-y,0),0) scale(1)}.hero-portrait img{position:absolute;right:-5%;bottom:-1%;width:112%;height:auto;filter:saturate(.82) contrast(1.03) drop-shadow(0 2rem 3rem rgba(0,0,0,.08))}
.hero-bottom{position:relative;z-index:4;align-self:end;display:flex;align-items:end;justify-content:space-between;padding:0 0 2.5rem}.hero-bottom p{width:min(29rem,42%);margin:0;color:var(--muted);font-size:clamp(.95rem,1.15vw,1.1rem);line-height:1.55}.round-link{width:4.5rem;height:4.5rem;display:grid;place-items:center;border:1px solid var(--ink);border-radius:50%;text-decoration:none;font-size:1.45rem;transition:color .2s ease,background .2s ease}.round-link span{transition:transform .3s var(--ease)}
.hero-index{position:absolute;z-index:1;right:0;top:50%;color:var(--muted);writing-mode:vertical-rl;transform:translateY(-50%)}

.ticker{overflow:hidden;border-block:1px solid var(--ink);background:var(--accent)}.ticker-track{width:max-content;display:flex;align-items:center;gap:2.2rem;padding:.78rem 0;animation:ticker 24s linear infinite}.ticker-track span{font-size:.8rem;font-weight:700;letter-spacing:.02em}.ticker-track i{font-style:normal;font-size:.8rem}@keyframes ticker{to{transform:translateX(-50%)}}

.intro{min-height:85svh;display:grid;grid-template-columns:1fr 3fr;align-items:start;padding-block:clamp(8rem,15vw,15rem)}.intro p{max-width:67rem;margin:0;font-size:clamp(3rem,6.4vw,6.7rem);font-weight:500;line-height:.98;letter-spacing:-.065em}.intro p span:last-child{color:var(--muted)}.intro em{color:var(--accent);font-family:Georgia,"Times New Roman",serif;font-weight:400}

.work{padding:2rem 0 clamp(8rem,14vw,14rem)}.work-heading{display:grid;grid-template-columns:1fr 3fr auto;align-items:end;padding-bottom:2.5rem;border-bottom:1px solid var(--ink)}.work-heading h2{margin:0;font-size:clamp(3.5rem,7vw,7.5rem);line-height:.88;letter-spacing:-.07em;font-weight:600}.work-count{font:400 .7rem/1 var(--mono)}
.project{position:relative;display:grid;grid-template-columns:1fr 3fr;gap:clamp(2rem,5vw,6rem);padding-block:clamp(6rem,10vw,10rem);border-bottom:1px solid var(--line)}.project-copy{position:sticky;top:8rem;align-self:start}.project-copy>div{display:flex;justify-content:space-between;color:var(--muted)}.project-copy h3{margin:2rem 0 1.25rem;font-size:clamp(3.6rem,6.5vw,7.2rem);font-weight:600;line-height:.86;letter-spacing:-.075em}.project-copy p{max-width:22rem;margin:0 0 2rem;color:var(--muted);font-size:1rem}.text-link{width:max-content;min-height:48px;display:flex;align-items:center;gap:1rem;border-bottom:1px solid var(--ink);text-decoration:none;font-size:.8rem;font-weight:700}.text-link b{font-size:1rem;transition:transform .3s var(--ease)}
.project-visual{position:relative;display:block;overflow:hidden;border:1px solid rgba(17,17,15,.12);border-radius:1.35rem;background:#e8e5dd;box-shadow:0 1px 2px rgba(17,17,15,.05),0 35px 90px rgba(17,17,15,.13);text-decoration:none;transform:perspective(1200px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:box-shadow .45s var(--ease);will-change:transform}.project[data-project="02"] .project-visual{background:#dce9df}.project[data-project="03"] .project-visual{background:#dfe3ef}.browser-bar{height:3rem;display:flex;align-items:center;gap:.38rem;padding:0 1rem;border-bottom:1px solid rgba(17,17,15,.1);background:rgba(255,255,255,.58);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.browser-bar i{width:.48rem;height:.48rem;border-radius:50%;background:rgba(17,17,15,.2)}.browser-bar small{position:absolute;left:50%;color:rgba(17,17,15,.45);transform:translateX(-50%);font:400 .62rem/1 var(--mono)}
.image-wrap{height:min(58vw,50rem);overflow:hidden}.image-wrap img{display:block;width:100%;height:calc(100% + 5rem);object-fit:cover;object-position:top;transform:translate3d(0,var(--image-y,-2.5rem),0) scale(1.015);transition:transform .7s var(--ease);will-change:transform}

.manifesto{color:var(--light);background:var(--night)}.manifesto-inner{min-height:90svh;display:grid;grid-template-columns:1fr 3fr;align-content:center;padding-block:8rem}.manifesto .section-no{color:rgba(246,244,238,.45)}.manifesto p{max-width:65rem;margin:0;font-size:clamp(3.4rem,7.2vw,7.7rem);font-weight:500;line-height:.92;letter-spacing:-.07em}.manifesto p span{color:rgba(246,244,238,.38)}.manifesto em{color:var(--accent);font-family:Georgia,"Times New Roman",serif;font-weight:400}

footer{color:var(--paper);background:var(--accent)}.contact{min-height:100svh;display:flex;flex-direction:column;justify-content:space-between;padding:3rem 0 2rem}.contact-meta,.contact-foot{display:flex;justify-content:space-between}.contact-main>span{display:block;margin-bottom:1.5rem;font:400 .72rem/1 var(--mono);text-transform:uppercase}.contact-main h2{margin:0;font-size:clamp(4rem,10vw,11rem);font-weight:600;line-height:.82;letter-spacing:-.085em}.contact-main h2 a{display:flex;align-items:center;justify-content:space-between;text-decoration:none}.contact-main h2 i{width:.34em;height:.34em;display:grid;place-items:center;border:2px solid currentColor;border-radius:50%;font-size:.42em;font-style:normal;letter-spacing:0;transition:color .25s ease,background .25s ease,transform .4s var(--ease)}

.reveal{opacity:0;transform:translateY(2.5rem);transition:opacity .8s ease,transform .9s var(--ease)}.reveal.in-view{opacity:1;transform:none}
.magnetic{transition:transform .35s var(--ease);will-change:transform}.cursor{--cx:-10rem;--cy:-10rem;position:fixed;z-index:200;top:0;left:0;width:5.5rem;height:5.5rem;display:grid;place-items:center;border-radius:50%;color:var(--paper);background:var(--accent);pointer-events:none;opacity:0;transform:translate3d(var(--cx),var(--cy),0) translate(-50%,-50%) scale(.3);transition:opacity .2s ease,transform .35s var(--ease);font:400 .62rem/1 var(--mono);text-transform:uppercase}.cursor.active{opacity:1;transform:translate3d(var(--cx),var(--cy),0) translate(-50%,-50%) scale(1)}

@media (hover:hover) and (pointer:fine){.nav-right>a:hover:after{transform:scaleX(1);transform-origin:left}.round-link:hover{color:var(--paper);background:var(--ink)}.round-link:hover span{transform:translateY(.25rem)}.text-link:hover b{transform:translate(.18rem,-.18rem)}.project-visual:hover{box-shadow:0 2px 3px rgba(17,17,15,.05),0 50px 110px rgba(17,17,15,.18)}.project-visual:hover img{transform:translate3d(0,var(--image-y,-2.5rem),0) scale(1.035)}.contact-main h2 a:hover i{color:var(--accent);background:var(--paper);transform:rotate(45deg)}}

@media(max-width:1000px){.nav-center{display:none}.nav{grid-template-columns:1fr auto}.hero-title{font-size:clamp(4.4rem,11vw,7.8rem)}.hero-portrait{right:-12%;width:57vw;opacity:.96}.intro,.manifesto-inner,.project{grid-template-columns:1fr}.intro,.manifesto-inner{gap:4rem}.project{gap:2.5rem}.project-copy{position:relative;top:0}.project-copy p{max-width:34rem}.work-heading{grid-template-columns:auto 1fr auto;gap:2rem}.image-wrap{height:min(71vw,46rem)}}
@media(max-width:700px){.shell{width:calc(100% - 2rem)}.nav{height:4.25rem}.brand small,.nav-right>a{display:none}.nav-right{gap:.5rem}.hero{min-height:100svh;padding-top:5.75rem;grid-template-rows:auto 1fr auto}.hero-kicker{width:100%}.hero-title{align-self:start;padding:12vh 0 0;font-size:clamp(3.6rem,16.6vw,5.5rem);line-height:.86;white-space:normal}.title-line--shift{padding-left:0}.title-line i,.title-line b{display:block}.hero-portrait{right:-23%;bottom:5.5rem;width:88vw;height:59vh;opacity:.88}.hero-portrait img{right:0;width:110%}.hero-bottom{padding-bottom:1.5rem}.hero-bottom p{width:68%;font-size:.86rem}.round-link{width:3.7rem;height:3.7rem}.hero-index{display:none}.ticker-track{gap:1.4rem}.intro{min-height:auto;gap:3rem;padding-block:8rem}.intro p{font-size:clamp(2.75rem,12.7vw,4.2rem)}.work{padding-top:0}.work-heading{grid-template-columns:1fr auto;padding-bottom:1.4rem}.work-heading .section-no{display:none}.work-heading h2{font-size:clamp(3.3rem,15vw,5rem)}.project{padding-block:5rem}.project-copy h3{font-size:clamp(4rem,18vw,6rem)}.project-visual{border-radius:.75rem}.browser-bar{height:2.3rem;padding-inline:.75rem}.image-wrap{height:76vw}.image-wrap img{height:calc(100% + 2.5rem);--image-y:-1.25rem}.manifesto-inner{min-height:80svh;gap:3rem}.manifesto p{font-size:clamp(3rem,13vw,4.5rem)}.contact{min-height:85svh}.contact-meta span:first-child{display:none}.contact-meta{justify-content:flex-end}.contact-main h2{font-size:clamp(4rem,17vw,6rem);line-height:.88}.contact-main h2 a{align-items:flex-end}.contact-foot{font-size:.58rem}.cursor{display:none}}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.loader{display:none}.ticker-track,.status-dot{animation:none}*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.title-line>span,.reveal{opacity:1;transform:none}.hero-portrait{opacity:1;transform:none}.image-wrap img{transform:translateY(-2.5rem)}.cursor{display:none}}
@media(prefers-reduced-transparency:reduce){.site-header:before,.browser-bar{background:var(--paper);-webkit-backdrop-filter:none;backdrop-filter:none}}

/* Unified black / warm white / earthy green palette */
.site-header:before{background:rgba(243,241,233,.78);-webkit-backdrop-filter:saturate(145%) blur(18px);backdrop-filter:saturate(145%) blur(18px)}
.status-dot{background:var(--accent);box-shadow:0 0 0 4px rgba(111,125,104,.16)}
.lang-thumb{background:#fbfaf6;box-shadow:0 2px 10px rgba(17,19,16,.07)}
.hero-portrait img{filter:saturate(.72) contrast(1.02) drop-shadow(0 2rem 3rem rgba(17,19,16,.08))}
.ticker{background:var(--sage)}.ticker-track i{color:var(--accent)}
.project-visual,.project[data-project="02"] .project-visual,.project[data-project="03"] .project-visual{border-color:rgba(17,19,16,.12);background:#e1e3dc;box-shadow:0 1px 2px rgba(17,19,16,.04),0 35px 90px rgba(17,19,16,.11)}
.browser-bar{border-color:rgba(17,19,16,.1);background:rgba(247,245,239,.72)}
footer{color:var(--ink);background:var(--paper);border-top:1px solid var(--ink)}
.contact-main>span{color:var(--muted)}.contact-main h2 a span{color:var(--accent)}
@media (hover:hover) and (pointer:fine){.contact-main h2 a:hover i{color:var(--paper);background:var(--accent)}}

/* One type family + uncropped project previews */
.title-line i,.intro em,.manifesto em{font-family:var(--sans);font-style:normal}
.section-no,.project-number,.project-type,.hero-kicker,.hero-index,.contact-meta,.contact-foot,.nav-center,.languages button,.browser-bar small,.cursor{font-family:var(--sans);font-weight:500;letter-spacing:.06em}
.image-wrap{height:auto;overflow:hidden;background:#f8f7f2}
.image-wrap img,.project-visual:hover .image-wrap img{display:block;width:100%;height:auto;aspect-ratio:1440/1000;object-fit:contain;object-position:center;transform:none!important}
.work{padding-top:clamp(7rem,12vw,11rem)}

/* Full-screen portfolio panels */
html{scroll-snap-type:y mandatory;overscroll-behavior-y:none}
.snap-panel{min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always}
.nav{grid-template-columns:1fr auto}.brand strong{font-size:.82rem;font-weight:600;letter-spacing:-.02em}
.hero{display:flex;align-items:center;overflow:hidden;padding-block:6rem}.hero-title{width:100%;padding:0;line-height:.9;letter-spacing:-.055em}.title-line{padding:.02em .08em .14em}.title-line--shift{margin-top:.04em}.title-line--portfolio{margin-top:.18em;padding-left:25vw;color:var(--muted);font-size:.42em;letter-spacing:.06em}
.hero-portrait{--depth-x:0px;--depth-y:0px;--depth-bg-x:0px;--depth-bg-y:0px;--portrait-rx:0deg;--portrait-ry:0deg;isolation:isolate;transform-style:preserve-3d}
.hero-portrait:before{content:"";position:absolute;z-index:-1;inset:18% 4% 3% 15%;border-radius:46% 54% 34% 42%;background:radial-gradient(circle at 54% 42%,rgba(255,255,255,.46) 0,rgba(111,125,104,.2) 34%,rgba(17,19,16,.1) 64%,transparent 77%);filter:blur(20px);opacity:.68;transform:translate3d(calc(1.1rem + var(--depth-bg-x)),calc(1.4rem + var(--depth-bg-y)),-2rem) scale(.93);transition:transform .28s cubic-bezier(.22,1,.36,1),opacity .28s ease;will-change:transform}
.hero-portrait:after{content:"";position:absolute;z-index:0;left:36%;top:14%;width:42%;height:36%;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.3),transparent 68%);filter:blur(14px);opacity:0;transform:translate3d(var(--depth-bg-x),var(--depth-bg-y),0);transition:transform .28s cubic-bezier(.22,1,.36,1),opacity .25s ease;pointer-events:none}
.hero.is-spatial .hero-portrait:before{opacity:.9}.hero.is-spatial .hero-portrait:after{opacity:.7}
.hero-portrait img{z-index:1;transform:perspective(1100px) translate3d(var(--depth-x),var(--depth-y),1.4rem) rotateX(var(--portrait-rx)) rotateY(var(--portrait-ry));transform-origin:52% 54%;backface-visibility:hidden;filter:saturate(.76) contrast(1.04) drop-shadow(0 1px 0 rgba(255,255,255,.62)) drop-shadow(0 1.2rem 1.5rem rgba(17,19,16,.11)) drop-shadow(0 2.8rem 3.8rem rgba(17,19,16,.09));transition:transform .28s cubic-bezier(.22,1,.36,1),filter .28s ease;will-change:transform}
.work{padding:0}.project{height:100svh;min-height:100svh;align-items:center;padding-block:6.5rem 3rem;border-bottom:1px solid var(--line)}
.project-copy{position:relative;top:auto}.project-copy h2{margin:0;font-size:clamp(3.8rem,7vw,7.5rem);font-weight:600;line-height:.86;letter-spacing:-.075em}
.project[data-project="01"] .project-copy h2{color:#f20d0d}
.project[data-project="02"] .project-copy h2{color:#315bd8}
.project[data-project="03"] .project-copy h2{color:#7ca52c}
.project-copy p{max-width:25rem;margin:1.4rem 0 0;color:var(--muted);font-size:clamp(.94rem,1.05vw,1.05rem);line-height:1.55;text-wrap:balance}
.contact-main h2{line-height:.94;letter-spacing:-.055em}
.contact-link{position:relative;width:max-content;max-width:100%;display:inline-block!important;padding:.1em .025em .18em}
.contact-link:after{content:"";position:absolute;left:.025em;right:.025em;bottom:.055em;height:.035em;background:var(--accent);transform:scaleX(0);transform-origin:left;opacity:0;transition:transform .42s cubic-bezier(.22,1,.36,1),opacity .18s ease}
.contact-link span{display:block;color:var(--accent);transform:translate3d(0,0,0);transition:transform .42s cubic-bezier(.22,1,.36,1)}
@media (hover:hover) and (pointer:fine){.contact-link:hover:after,.contact-link:focus-visible:after{transform:scaleX(1);opacity:1}.contact-link:hover span,.contact-link:focus-visible span{transform:translate3d(0,-.055em,0)}}
.contact-link:active span{transform:translate3d(0,0,0) scale(.985)}
.project-visual{max-height:calc(100svh - 9.5rem)}
.contact{min-height:100svh;justify-content:center;padding-block:6rem}
@media(max-width:1000px){.project{grid-template-columns:1fr;grid-template-rows:auto 1fr;align-content:center;gap:1.5rem}.project-copy h2{font-size:clamp(3.5rem,12vw,6rem)}.project-visual{align-self:start}.title-line--portfolio{padding-left:10vw}}
@media(max-width:700px){.brand strong{display:none}.hero{padding-block:5rem}.hero-title{font-size:clamp(3.45rem,15.2vw,5.15rem);line-height:.94;letter-spacing:-.045em}.title-line--shift{margin-top:.08em}.title-line--portfolio{margin-top:.28em;padding-left:0;font-size:.36em}.hero-portrait{right:-24%;bottom:0}.hero-portrait:before{inset:19% 1% 2% 12%;filter:blur(16px)}.project{padding-block:5.25rem 2rem;gap:1rem}.project-copy h2{font-size:clamp(3.2rem,15vw,4.8rem)}.project-visual{border-radius:.65rem}.contact{min-height:100svh}.contact-main h2{font-size:clamp(3rem,13.6vw,5.3rem);line-height:.98;letter-spacing:-.045em}}
