:root{--paper:#e8e2d6;--paper-2:#ded7c9;--ink:#1d2430;--muted:#5d6470;--red:#c4502b;--rule:#1d243033;--sans:"Geist", system-ui, sans-serif;--mono:"Geist Mono", ui-monospace, monospace;--serif:"Newsreader", Georgia, serif;--gutter:clamp(16px, 3vw, 40px);--ease:cubic-bezier(.2, .7, .1, 1)}*,:before,:after{box-sizing:border-box}html{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}html.lenis,html.lenis body{height:auto}body{font-family:var(--sans);background:var(--paper);margin:0;font-size:clamp(15px,1vw,17px);line-height:1.55;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}figure{margin:0}h1,h2,h3{letter-spacing:-.035em;margin:0;font-weight:400;line-height:.95}em{font-family:var(--serif);letter-spacing:-.01em;font-style:italic;font-weight:300}:focus-visible{outline:2px solid var(--red);outline-offset:3px}.l-mono{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.72rem}p.l-mono{margin:0 0 1.5rem}.concept-badge{z-index:60;color:#ede6da;white-space:nowrap;backdrop-filter:blur(8px);background:#0e0d0bd9;border-radius:999px;padding:.55em 1.1em;font-size:.75rem;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.l-nav{z-index:50;padding:.9rem var(--gutter);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule);background:#e8e2d6d9;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;display:grid;position:fixed;inset:0 0 auto}.l-logo{letter-spacing:-.02em;font-weight:500}.l-logo span,.l-footer span span{color:var(--red);margin-left:2px}.l-nav nav{gap:2rem;font-size:.9rem;display:flex}.l-nav nav span{font-family:var(--mono);color:var(--muted);margin-right:.3rem;font-size:.65rem}.l-nav nav a:hover{color:var(--red)}.l-coords{font-family:var(--mono);color:var(--muted);justify-self:end;font-size:.7rem}@media (width<=760px){.l-nav{grid-template-columns:1fr auto}.l-nav nav{display:none}}.l-hero{min-height:100svh;padding:6rem var(--gutter) 3rem;border-bottom:1px solid var(--rule);grid-template-columns:5fr 7fr;align-items:end;gap:2rem;display:grid}@media (width<=860px){.l-hero{grid-template-columns:1fr;align-items:start;padding-top:5.5rem}}.l-title{font-size:clamp(3.4rem,8.4vw,9rem);font-weight:400}.l-title em{color:var(--red)}.l-line{padding-bottom:.08em;display:block;overflow:hidden}.l-line>span{display:inline-block}.l-hero-sub{max-width:36ch;color:var(--muted);margin:2rem 0 0;font-size:1.05rem}.l-model{align-self:stretch;min-height:420px;display:grid;position:relative}.l-model-fallback,.l-canvas{grid-area:1/1;width:100%;height:100%}.l-model-fallback{object-fit:cover}.l-canvas{opacity:0;transition:opacity .6s var(--ease);display:block}.l-model.has-3d .l-canvas{opacity:1}.l-model.has-3d .l-model-fallback{visibility:hidden}.l-model figcaption{margin:0;position:absolute;bottom:-.2rem;left:0}@media (width<=860px){.l-model{min-height:62vw}}.l-projects{padding:clamp(5rem, 10vw, 8rem) var(--gutter)}.l-section-head{border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:2.5rem;padding-bottom:1rem;display:flex}.l-section-head p.l-mono{margin:0}.l-filters{flex-wrap:wrap;gap:.4rem;display:flex}.l-filters button{font:400 .9rem var(--sans);color:var(--ink);border:1px solid var(--rule);cursor:pointer;transition:background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);background:0 0;border-radius:999px;padding:.45em 1em}.l-filters button sup{font-family:var(--mono);color:var(--muted);margin-left:.25em;font-size:.6rem}.l-filters button:hover{border-color:var(--ink)}.l-filters button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.l-filters button[aria-pressed=true] sup{color:var(--paper-2)}.l-grid{grid-template-columns:repeat(12,1fr);align-items:start;gap:3rem 1.5rem;display:grid}.l-card{grid-column:span var(--span)}.l-card.hidden{display:none}.l-card figure{background:var(--paper-2);overflow:hidden}.l-land figure{aspect-ratio:4/3}.l-tall figure{aspect-ratio:3/4}.l-card img{object-fit:cover;width:100%;height:100%;transition:transform 1.2s var(--ease)}.l-card:hover img{transform:scale(1.04)}.l-card-meta{border-top:1px solid var(--ink);grid-template-columns:auto 1fr auto;align-items:baseline;gap:1rem;margin-top:.9rem;padding-top:.9rem;display:grid}.l-card-meta h3{letter-spacing:-.02em;font-size:clamp(1.3rem,1.8vw,1.7rem)}@media (width<=860px){.l-grid{grid-template-columns:1fr 1fr;gap:2.5rem 1rem}.l-card{grid-column:span 2}.l-tall{grid-column:span 1}.l-card-meta{grid-template-columns:1fr;gap:.2rem}}.l-case{background:var(--ink);color:var(--paper)}.l-case .l-mono{color:#9aa2ae}.l-case-pin{padding:clamp(5rem, 9vw, 7rem) var(--gutter);grid-template-columns:5fr 7fr;gap:3rem;display:grid}.l-case-text h2{margin-bottom:1.5rem;font-size:clamp(3rem,6vw,5.5rem)}.l-case-text>p:not(.l-mono){color:#c8cdd5;max-width:40ch;margin:0}.l-specs{border-top:1px solid #e8e2d633;grid-template-columns:1fr 1fr;margin:2.5rem 0 0;display:grid}.l-specs div{border-bottom:1px solid #e8e2d633;padding:.9rem 0}.l-specs dt{font-family:var(--mono);text-transform:uppercase;color:#9aa2ae;font-size:.68rem}.l-specs dd{margin:.2rem 0 0;font-size:1.15rem}.l-case-index{display:none}.l-case-media{gap:1.5rem;display:grid}.l-case-fig{aspect-ratio:4/3;overflow:hidden}.l-case-fig img{object-fit:cover;width:100%;height:100%}@media (width<=860px){.l-case-pin{grid-template-columns:1fr}}html.motion .l-case{height:300vh}html.motion .l-case-pin{align-items:center;height:100vh;padding-block:5rem 3rem;position:sticky;top:0}html.motion .l-case-index{font-family:var(--mono);text-transform:uppercase;color:#6c7480;gap:1.5rem;margin:2rem 0 0;padding:0;font-size:.7rem;list-style:none;display:flex}html.motion .l-case-index li{transition:color .4s var(--ease)}html.motion .l-case-index li.active{color:var(--paper)}html.motion .l-case-media{height:100%;max-height:calc(100vh - 8rem);display:grid}html.motion .l-case-fig{aspect-ratio:auto;clip-path:inset(0 0 0 100%);height:100%;transition:clip-path 1.1s var(--ease);grid-area:1/1}html.motion .l-case-fig img{transition:transform 1.6s var(--ease);transform:scale(1.1)}html.motion .l-case-fig.active,html.motion .l-case-fig.past{clip-path:inset(0)}html.motion .l-case-fig.active img{transform:scale(1)}html.motion .l-case-fig.active{z-index:2}@media (width<=860px){html.motion .l-case-pin{grid-template-columns:1fr;align-content:center;gap:1.5rem;padding-top:4.5rem}html.motion .l-case-text>p:not(.l-mono),html.motion .l-specs{display:none}html.motion .l-case-media{height:52vh}}.l-atelier{padding:clamp(5rem, 10vw, 8rem) var(--gutter)}.l-statement{letter-spacing:-.03em;max-width:22ch;font-size:clamp(2rem,4.6vw,4.4rem);line-height:1.05}.l-statement em{color:var(--red)}.l-atelier-img{aspect-ratio:16/7;margin:4rem 0;overflow:hidden}.l-atelier-img img{object-fit:cover;width:100%;height:125%}.l-principles{grid-template-columns:repeat(4,1fr);gap:2rem;margin:0;padding:0;list-style:none;display:grid}@media (width<=960px){.l-principles{grid-template-columns:1fr 1fr}}@media (width<=560px){.l-principles{grid-template-columns:1fr}}.l-principles li{padding-top:1.2rem;position:relative}.l-rule{background:var(--ink);transform-origin:0;height:1px;position:absolute;top:0;left:0;right:0}.l-principles h3{letter-spacing:-.02em;margin:.8rem 0 .6rem;font-size:1.45rem}.l-principles p{color:var(--muted);margin:0}.l-contact{padding:clamp(5rem, 10vw, 8rem) var(--gutter) 4rem;border-top:1px solid var(--rule)}.l-mail{letter-spacing:-.05em;transition:color .4s var(--ease);overflow-wrap:anywhere;font-size:clamp(2.6rem,9vw,9rem);line-height:.92;display:inline-block}.l-mail em,.l-mail:hover{color:var(--red)}.l-contact-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:1.5rem;margin-top:3.5rem;display:grid}.l-contact-grid p{gap:.3rem;margin:0;display:grid}.l-footer{padding:1.5rem var(--gutter) 5rem;border-top:1px solid var(--rule);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:1rem;font-size:.8rem;display:flex}.l-footer a{border-bottom:1px solid}html.motion .l-line>span{transform:translateY(105%)}html.motion .l-hero .l-mono,html.motion .l-hero-sub{opacity:0}html.motion .l-card figure{clip-path:inset(100% 0 0)}html.motion .l-card-meta{opacity:0}html.motion .l-rule{transform:scaleX(0)}
