:root{--bg:#f7f1e9;--fg:#111;--white:#f7f1e9;--pad:24px;--header-h:88px;--max:1900px}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font-family:Arial,Helvetica,sans-serif;font-size:10px;line-height:1.35;letter-spacing:.035em}
a{color:inherit;text-decoration:none}
img{display:block;width:100%;height:auto}
.site-header{position:fixed;z-index:50;top:0;left:0;right:0;height:var(--header-h);background:#f7f1e9;display:flex;align-items:center;justify-content:center}
.brand-logo{display:block;width:clamp(148px,15vw,220px);position:relative;z-index:52}
.brand-logo img{width:100%;height:auto}
.menu-toggle{position:absolute;z-index:52;right:22px;top:50%;transform:translateY(-50%);width:34px;height:24px;border:0;background:transparent;padding:4px 0;display:flex;flex-direction:column;justify-content:space-between;cursor:pointer}
.menu-toggle span{display:block;width:100%;height:1px;background:#111;transform-origin:center;transition:transform .28s ease,opacity .2s ease}
.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
.menu-panel{position:fixed;z-index:51;top:var(--header-h);left:0;right:0;background:#f7f1e9;max-height:0;overflow:hidden;opacity:0;transition:max-height .34s ease,opacity .22s ease}
.menu-panel.is-open{max-height:260px;opacity:1}
.menu-nav{display:flex;flex-direction:column;padding:18px 24px 26px;gap:7px;font-size:10px;line-height:1.35;letter-spacing:.08em}
.menu-nav a{width:max-content;position:relative}
.menu-nav a:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:#111;transform:scaleX(0);transform-origin:left;transition:transform .22s ease}
.menu-nav a:hover:after,.menu-nav a[aria-current="page"]:after{transform:scaleX(1)}
.hero{position:relative;height:100svh;padding-top:var(--header-h);background:#f7f1e9;overflow:hidden}
.hero-media{position:absolute;top:calc(var(--header-h) + 14px);left:14px;right:14px;bottom:14px;overflow:hidden;background:#e8e5df}
.hero-media img{width:100%;height:100%;object-fit:cover}
.hero-meta{position:absolute;z-index:2;left:30px;right:30px;bottom:27px;display:flex;justify-content:space-between;align-items:end;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.18)}
.hero-title{font:inherit;margin:0}.hero-controls{display:flex;gap:24px;font-size:18px}.hero-controls a{transition:opacity .2s}.hero-controls a:hover{opacity:.55}
.page{padding:calc(var(--header-h) + 48px) var(--pad) 60px;max-width:var(--max);margin:auto}
.intro,.project-header{display:grid;grid-template-columns:1fr 2fr;gap:40px;margin-bottom:68px}
.intro h1,.project-header h1{font:inherit;margin:0;text-transform:uppercase;font-weight:400;letter-spacing:.08em}.intro p{max-width:700px;margin:0}.intro p+p{margin-top:10px}
.projects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 22px}
.project-card{display:block}.project-card figure{margin:0;overflow:hidden;background:#e9e6df;aspect-ratio:4/5}.project-card img{width:100%;height:100%;object-fit:cover;transition:transform .55s ease}.project-card:hover img{transform:scale(1.012)}
.project-caption{display:flex;justify-content:space-between;gap:20px;padding-top:8px;font-size:9px;letter-spacing:.075em}.project-caption span:last-child{opacity:.55}
.project-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 28px;max-width:720px}
.project-copy{max-width:700px;margin:0 0 72px 33.333%}.project-copy p{margin:0 0 12px}
.gallery{display:grid;gap:clamp(35px,6vw,100px)}.gallery figure{margin:0}.gallery .wide{width:100%}.gallery .portrait-left{width:55%;margin-right:auto}.gallery .portrait-right{width:55%;margin-left:auto}.gallery img{max-height:94svh;object-fit:contain}
.editorial-list{display:grid;gap:0;border-top:1px solid rgba(0,0,0,.16)}.editorial-list a,.editorial-list .row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:20px;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.16)}
.design-coming{min-height:calc(100svh - var(--header-h) - 120px);display:grid;place-items:center;text-align:center}.design-coming h1{font-size:10px;font-weight:400;letter-spacing:.12em;margin:0 0 10px}.design-coming p{margin:0;opacity:.55}
.footer{padding:80px var(--pad) 28px;display:flex;justify-content:space-between;gap:20px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:760px){
:root{--pad:15px;--header-h:82px}.brand-logo{width:154px}.menu-toggle{right:18px;width:30px;height:22px;padding:4px 0}.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.menu-nav{padding:17px 18px 24px;font-size:9.5px;gap:7px}.hero-media{top:calc(var(--header-h) + 12px);left:15px;right:15px;bottom:15px}.hero-meta{left:26px;right:26px;bottom:26px}.hero-meta>div:first-child{display:none}.hero-controls{margin-left:auto}
.intro,.project-header{grid-template-columns:1fr;gap:16px;margin-bottom:42px}.page{padding-top:calc(var(--header-h) + 34px)}.projects-grid{grid-template-columns:1fr;gap:34px}.project-card figure{aspect-ratio:4/5}.project-caption{font-size:8.7px;padding-top:7px}.project-copy{margin-left:0;margin-bottom:52px}.project-facts{grid-template-columns:1fr}.gallery{gap:42px}.gallery .portrait-left,.gallery .portrait-right{width:100%;margin:0}.editorial-list a,.editorial-list .row{grid-template-columns:1fr auto}.editorial-list .type{display:none}.footer{flex-direction:column;padding-top:58px}}

/* V6 — Sophie Dries interface × Tagliaferri full-screen imagery */
body{background:#f7f1e9}
.site-header{height:84px}
.brand-logo{width:clamp(145px,14vw,205px)}
.menu-toggle{right:24px;width:22px;height:14px;padding:0;justify-content:space-between}
.menu-toggle span{height:.75px;width:22px}
.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6.6px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.6px) rotate(-45deg)}
.menu-nav{padding:15px 24px 22px;gap:5px;font-size:9px;letter-spacing:.09em}
.menu-panel.is-open{max-height:220px}

.project-stream{padding-top:84px;background:#f7f1e9}
.stream-project{display:block;width:100%;padding:12px 14px 0}
.stream-project figure{margin:0;min-height:calc(100svh - 84px - 12px);display:flex;flex-direction:column}
.stream-project img{display:block;width:100%;height:calc(100svh - 84px - 42px);object-fit:cover;background:#eee}
.stream-project figcaption{height:30px;display:flex;align-items:flex-start;justify-content:space-between;padding-top:7px;font-size:8.5px;line-height:1;letter-spacing:.085em;text-transform:uppercase}
.stream-project figcaption span:last-child{opacity:.48}
.stream-project + .stream-project{padding-top:2px}
.stream-project:hover figcaption span:first-child{opacity:.55}

/* Project pages remain sparse, but images are more immersive. */
.page{max-width:none}
.gallery{gap:clamp(32px,5vw,78px)}
.gallery .wide{width:100%}
.gallery .portrait-left,.gallery .portrait-right{width:84%}
.gallery img{width:100%;max-height:none;object-fit:cover}

@media(max-width:760px){
:root{--header-h:76px}
.site-header{height:76px}.brand-logo{width:145px}
.menu-toggle{right:17px;width:20px;height:13px}.menu-toggle span{width:20px;height:.7px}
.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6.15px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.15px) rotate(-45deg)}
.menu-nav{padding:14px 17px 20px;font-size:8.5px;gap:5px}
.project-stream{padding-top:76px}
.stream-project{padding:8px 8px 0}
.stream-project figure{min-height:calc(100svh - 76px - 8px)}
.stream-project img{height:calc(100svh - 76px - 34px);object-fit:cover}
.stream-project figcaption{height:26px;padding-top:6px;font-size:7.8px}
.stream-project + .stream-project{padding-top:0}
.gallery .wide,.gallery .portrait-left,.gallery .portrait-right{width:100%;margin-left:0;margin-right:0}
}


/* V7 — cinematic Maison Stellar entrance */
.intro-loader{position:fixed;inset:0;z-index:9999;background:#f7f1e9;display:grid;place-items:center;opacity:1;visibility:visible;transition:opacity .62s cubic-bezier(.4,0,.2,1),visibility 0s linear .62s}
.intro-loader.is-leaving{opacity:0;visibility:hidden}
.intro-loader.is-skipped{display:none}
.intro-logo{width:clamp(175px,18vw,255px);overflow:hidden}
.intro-logo img{width:100%;height:auto;opacity:0;transform:translateY(14px);clip-path:inset(100% 0 0 0);animation:stellarReveal .85s cubic-bezier(.22,.8,.24,1) .16s forwards}
@keyframes stellarReveal{to{opacity:1;transform:translateY(0);clip-path:inset(0 0 0 0)}}
.home-page.intro-active{overflow:hidden}
.home-interiors-link{height:34vh;min-height:210px;display:grid;place-items:center;background:#f7f1e9;font-size:8.5px;letter-spacing:.1em}
.home-interiors-link a{position:relative;padding-bottom:3px}.home-interiors-link a:after{content:"";position:absolute;left:0;right:0;bottom:0;height:.6px;background:#111;transform:scaleX(1)}
@media(max-width:760px){.intro-logo{width:170px}.home-interiors-link{height:28vh;min-height:180px;font-size:8px}}
@media(prefers-reduced-motion:reduce){.intro-loader{transition:none}.intro-logo img{animation:none;opacity:1;transform:none;clip-path:none}}

/* V8 — home is intentionally limited to the latest project */
.home-latest{min-height:100svh}
.home-latest .stream-project{padding-bottom:0}
.home-latest .stream-project figure{min-height:calc(100svh - 84px - 12px)}
@media(max-width:760px){
  .home-latest .stream-project figure{min-height:calc(100svh - 76px - 8px)}
}

/* V10 — desktop & tablet: preserve portrait photography like an editorial plate.
   Portrait images fill the available HEIGHT, never get cropped to fake landscape. */
@media (min-width:761px){
  .home-latest .stream-project{padding:12px 14px 0}
  .home-latest .stream-project figure{height:calc(100vh - 84px - 12px);min-height:0}
  .home-latest .stream-project img{
    width:100%;
    height:calc(100vh - 84px - 42px);
    object-fit:contain;
    object-position:center center;
    background:#f7f1e9;
  }
  .home-latest .stream-project figcaption{
    width:min(100%, 1180px);
    margin:0 auto;
  }
}

/* iPad/tablet: same photographic logic, with tighter margins. */
@media (min-width:761px) and (max-width:1180px){
  .home-latest .stream-project{padding-left:10px;padding-right:10px}
  .home-latest .stream-project img{object-fit:contain}
}


/* V11 — editorial desktop/tablet navigation + manifesto sequence */
@media (min-width:701px){
  .site-header{justify-content:flex-start;padding:0 25px;height:84px}
  .brand-logo{width:clamp(142px,12.8vw,192px)}
  .menu-toggle{display:none}
  .menu-panel{position:static;z-index:auto;margin-left:auto;max-height:none;overflow:visible;opacity:1;background:transparent;transition:none}
  .menu-nav{flex-direction:row;align-items:center;padding:0;gap:clamp(22px,2.75vw,48px);font-size:8.5px;line-height:1;letter-spacing:.105em;font-weight:400}
  .menu-nav a{white-space:nowrap;padding:3px 0}
  .menu-nav a:after{height:.55px;bottom:-4px}
}
@media (min-width:701px) and (max-width:1024px){
  .site-header{padding-left:20px;padding-right:20px}
  .brand-logo{width:142px}
  .menu-nav{gap:clamp(14px,2.15vw,22px);font-size:7.8px;letter-spacing:.085em}
}
@media (max-width:700px){
  :root{--header-h:76px}
  .site-header{height:76px;justify-content:center}
  .brand-logo{width:145px}
  .menu-toggle{display:flex;right:17px;width:20px;height:13px}
  .menu-toggle span{width:20px;height:.7px}
  .menu-panel{top:76px}
  .menu-nav{padding:14px 17px 20px;font-size:8.5px;gap:5px}
  .project-stream{padding-top:76px}
}

/* Intro: logo → manifesto → project. The two phases overlap subtly. */
.intro-loader{display:block;transition:none}
.intro-logo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:clamp(175px,18vw,255px);animation:introLogoPhase 1.55s cubic-bezier(.4,0,.2,1) forwards}
.intro-logo img{animation:stellarReveal .82s cubic-bezier(.22,.8,.24,1) .12s forwards}
.intro-manifesto{position:absolute;left:50%;top:50%;transform:translate(-50%,calc(-50% + 8px));width:min(82vw,980px);margin:0;text-align:center;font-size:clamp(19px,2.15vw,34px);line-height:1.24;letter-spacing:-.022em;font-weight:400;opacity:0;animation:introManifestoPhase 2.85s cubic-bezier(.4,0,.2,1) 1.15s forwards}
.intro-loader.is-leaving{animation:introCurtainOut .82s cubic-bezier(.65,0,.35,1) forwards;visibility:visible}
@keyframes introLogoPhase{0%,58%{opacity:1}100%{opacity:0}}
@keyframes introManifestoPhase{0%{opacity:0;transform:translate(-50%,calc(-50% + 8px))}18%,72%{opacity:1;transform:translate(-50%,-50%)}100%{opacity:0;transform:translate(-50%,calc(-50% - 5px))}}
@keyframes introCurtainOut{from{opacity:1}to{opacity:0;visibility:hidden}}
@media(max-width:700px){
  .intro-logo{width:170px}
  .intro-manifesto{width:84vw;font-size:18px;line-height:1.3;letter-spacing:-.018em}
  .intro-manifesto br{display:none}
}
@media(prefers-reduced-motion:reduce){
  .intro-logo,.intro-manifesto,.intro-loader.is-leaving{animation:none}
  .intro-logo{display:none}.intro-manifesto{opacity:1;transform:translate(-50%,-50%)}
}

/* V13 — manifesto typography + extended reading time */
@font-face{font-family:'Louize Display';src:url('assets/fonts/LouizeDisplayTrial-Regular.otf') format('opentype');font-style:normal;font-weight:400;font-display:swap}
.intro-manifesto{font-family:'Louize Display',Georgia,'Times New Roman',serif;font-size:clamp(23px,2.45vw,39px);line-height:1.18;letter-spacing:-.018em;animation-duration:4.15s;animation-delay:1.15s}
@keyframes introManifestoPhase{0%{opacity:0;transform:translate(-50%,calc(-50% + 8px))}13%{opacity:1;transform:translate(-50%,-50%)}82%{opacity:1;transform:translate(-50%,-50%)}100%{opacity:0;transform:translate(-50%,calc(-50% - 5px))}}
@media(max-width:700px){.intro-manifesto{font-size:22px;line-height:1.22;letter-spacing:-.014em}}

/* V14 — Home project viewer: one project at a time, editorial rather than portfolio grid */
.home-viewer{position:relative;height:100svh;padding-top:84px;background:#f7f1e9;overflow:hidden}
.home-slides{position:relative;height:100%}
.home-slide{position:absolute;inset:0;padding:12px 14px 0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity 1s cubic-bezier(.4,0,.2,1),visibility 0s linear 1s}
.home-slide.is-active{opacity:1;visibility:visible;pointer-events:auto;transition:opacity 1s cubic-bezier(.4,0,.2,1)}
.home-slide>a{display:flex;height:calc(100% - 30px);align-items:center;justify-content:center;overflow:hidden}
.home-slide img{width:100%;height:100%;object-fit:contain;object-position:center;background:#f7f1e9}
.home-slide-meta{height:30px;display:flex;align-items:flex-start;justify-content:space-between;padding-top:7px;font-size:8.5px;line-height:1;letter-spacing:.085em;text-transform:uppercase}
.home-slide-meta span:last-child{opacity:.48}
@media (min-width:701px) and (max-width:1180px){
  .home-slide{padding-left:10px;padding-right:10px}
  .home-slide-meta{font-size:8px}
}
@media(max-width:700px){
  .home-viewer{padding-top:76px}
  .home-slide{padding:8px 8px 0}
  .home-slide>a{height:calc(100% - 26px)}
  .home-slide img{object-fit:cover}
  .home-slide-meta{height:26px;padding-top:6px;font-size:7.8px}
}
@media(prefers-reduced-motion:reduce){.home-slide,.home-slide.is-active{transition:none}}

/* V16 — HOME desktop/tablet: editorial side rail inspired by print layouts */
@media (min-width:701px){
  .home-page{background:#f7f1e9;overflow:hidden}
  .home-page .site-header{
    top:0;left:0;right:auto;bottom:0;
    width:clamp(205px,20.5vw,330px);height:100svh;
    padding:0;background:#f7f1e9;
    display:block;
  }
  .home-page .brand-logo{
    position:absolute;left:clamp(24px,2.25vw,38px);bottom:clamp(24px,3.2vh,42px);
    width:clamp(148px,14.2vw,215px);z-index:52;
  }
  .home-page .menu-panel{
    position:absolute;left:clamp(24px,2.25vw,38px);top:clamp(27px,3.6vh,46px);
    right:auto;margin:0;width:auto;max-height:none;overflow:visible;opacity:1;background:transparent;
  }
  .home-page .menu-nav{
    display:flex;flex-direction:column;align-items:flex-start;
    padding:0;gap:5px;
    font-size:8px;line-height:1.22;letter-spacing:.095em;font-weight:400;
  }
  .home-page .menu-nav a{padding:0;white-space:nowrap}
  .home-page .menu-nav a:after{bottom:-2px;height:.5px}
  .home-page .menu-toggle{display:none}

  .home-page .home-viewer{
    position:fixed;top:0;bottom:0;
    left:clamp(205px,20.5vw,330px);right:0;
    width:auto;height:100svh;padding:0;background:#f7f1e9;overflow:hidden;
  }
  .home-page .home-slides{height:100svh}
  .home-page .home-slide{inset:0;padding:0;}
  .home-page .home-slide>a{
    position:absolute;inset:0 0 26px 0;
    height:auto;display:flex;align-items:center;justify-content:flex-start;overflow:hidden;background:#f7f1e9;
  }
  .home-page .home-slide img{
    width:100%;height:100%;object-fit:contain;object-position:left center;background:#f7f1e9;
  }
  .home-page .home-slide-meta{
    position:absolute;left:0;right:0;bottom:0;height:26px;
    padding:7px 1px 0;font-size:7.7px;line-height:1;letter-spacing:.09em;
  }
  .home-page .home-slide-meta span:last-child{padding-right:1px}
}

/* iPad portrait: keep the same editorial grammar, with a narrower rail. */
@media (min-width:701px) and (max-width:1024px){
  .home-page .site-header{width:190px}
  .home-page .home-viewer{left:190px}
  .home-page .brand-logo{left:20px;bottom:26px;width:145px}
  .home-page .menu-panel{left:20px;top:28px}
  .home-page .menu-nav{font-size:7.5px;gap:5px;letter-spacing:.08em}
  .home-page .home-slide-meta{font-size:7.4px}
}

/* Phone remains the V15 experience. */
@media (max-width:700px){
  .home-page{overflow:auto}
}


/* V17 — HOME desktop/tablet: right-aligned photography + social identity block */
@media (min-width:701px){
  .home-page .home-identity{
    position:absolute;left:clamp(24px,2.25vw,38px);bottom:clamp(24px,3.2vh,42px);
    z-index:52;display:flex;flex-direction:column;align-items:flex-start;gap:clamp(16px,2.2vh,24px);
  }
  .home-page .home-identity .brand-logo{
    position:static;left:auto;bottom:auto;width:clamp(148px,14.2vw,215px);
  }
  .home-page .home-socials{
    display:flex;flex-direction:column;align-items:flex-start;gap:4px;
    font-size:7.4px;line-height:1.25;letter-spacing:.085em;font-weight:400;text-transform:uppercase;
  }
  .home-page .home-socials a{position:relative;white-space:nowrap;opacity:.82;transition:opacity .2s ease}
  .home-page .home-socials a:hover{opacity:1}
  .home-page .home-slide>a{justify-content:flex-end}
  .home-page .home-slide img{object-position:right center}
}
@media (min-width:701px) and (max-width:1024px){
  .home-page .home-identity{left:20px;bottom:26px;gap:17px}
  .home-page .home-identity .brand-logo{width:145px}
  .home-page .home-socials{font-size:6.9px;letter-spacing:.07em;gap:3px}
}
@media (max-width:700px){
  .home-page .home-identity{display:contents}
  .home-page .home-socials{display:none}
}
\n\n/* V18 — HOME: full-height photography, no project captions, more legible editorial menu */
@media (min-width:701px){
  .home-page .menu-nav{
    font-size:9.5px;
    line-height:1.25;
    letter-spacing:.09em;
    gap:6px;
  }
  .home-page .home-slide>a{
    inset:0;
    height:100%;
  }
  .home-page .home-slide img{
    height:100svh;
    max-height:none;
  }
  .home-page .home-slide-meta{display:none}
}
@media (min-width:701px) and (max-width:1024px){
  .home-page .menu-nav{
    font-size:9px;
    line-height:1.25;
    letter-spacing:.075em;
    gap:6px;
  }
}

/* V19 — HOME desktop/tablet: the photographic asset itself is exactly viewport-height.
   Width follows the image ratio; no contain-box letterboxing. */
@media (min-width:701px){
  .home-page .home-slide>a{
    inset:0;
    height:100svh;
    width:100%;
    display:flex;
    align-items:stretch;
    justify-content:flex-end;
    overflow:hidden;
  }
  .home-page .home-slide img{
    display:block;
    flex:0 0 auto;
    width:auto;
    height:100svh;
    min-height:100svh;
    max-height:none;
    max-width:none;
    object-fit:initial;
    object-position:initial;
  }
}

/* V20 — HOME desktop/tablet: navigation rhythm inspired by Giampiero Tagliaferri.
   Slightly larger, quieter tracking, tight vertical cadence; socials use the same typographic system. */
@media (min-width:701px){
  .home-page .menu-nav{
    font-size:11px;
    line-height:1.14;
    letter-spacing:.015em;
    gap:2px;
    font-weight:400;
  }
  .home-page .menu-nav a{
    padding:0;
  }
  .home-page .home-socials{
    font-size:11px;
    line-height:1.14;
    letter-spacing:.015em;
    gap:2px;
    font-weight:400;
  }
  .home-page .home-identity{
    gap:clamp(18px,2.4vh,26px);
  }
}
@media (min-width:701px) and (max-width:1024px){
  .home-page .menu-nav,
  .home-page .home-socials{
    font-size:10.5px;
    line-height:1.14;
    letter-spacing:.012em;
    gap:2px;
  }
}

/* V21 — HOME desktop/tablet: more generous vertical navigation cadence. */
@media (min-width:701px){
  .home-page .menu-nav{
    gap:9px;
  }
  .home-page .home-socials{
    gap:7px;
  }
}
@media (min-width:701px) and (max-width:1024px){
  .home-page .menu-nav{
    gap:8px;
  }
  .home-page .home-socials{
    gap:6px;
  }
}


/* V22 — global warm ivory background sampled from supplied reference: #F7F1E9 */
body, .site-header, .menu-panel, .hero, .project-stream, .intro-loader, .home-interiors-link,
.home-page, .home-page .site-header, .home-page .home-viewer, .home-page .home-slide>a, .home-page .home-slide img {
  background-color:#f7f1e9;
}
.brand-logo img, .intro-logo img{mix-blend-mode:multiply;}


/* V24 — Navigation cadence matched to Tagliaferri reference supplied by client. */
@media (min-width:701px){
  .home-page .menu-nav,
  .home-page .home-socials{
    font-size:11px;
    line-height:13px;
    letter-spacing:0;
    font-weight:400;
  }
  .home-page .menu-nav{gap:9px;}
  .home-page .home-socials{gap:9px;}
}
@media (min-width:701px) and (max-width:1024px){
  .home-page .menu-nav,
  .home-page .home-socials{
    font-size:11px;
    line-height:13px;
    letter-spacing:0;
  }
  .home-page .menu-nav,
  .home-page .home-socials{gap:9px;}
}

/* V25 — HOME desktop/tablet: Tagliaferri-inspired identity scale and vertical rhythm. */
@media (min-width:701px){
  .home-page .menu-nav{
    gap:12px;
  }
  .home-page .home-socials{
    font-size:11px;
    line-height:13px;
    letter-spacing:0;
    gap:9px;
    text-transform:none;
  }
  .home-page .home-identity .brand-logo{
    width:clamp(190px,21vw,225px);
  }
}
@media (min-width:701px) and (max-width:1024px){
  .home-page .menu-nav{gap:11px;}
  .home-page .home-socials{font-size:11px;line-height:13px;gap:9px;}
  .home-page .home-identity .brand-logo{width:155px;}
}


/* V26 — persistent Maison Stellar left rail on every page, matching HOME. */
@media (min-width:701px){
  body:not(.home-page) .site-header{
    top:0;left:0;right:auto;bottom:0;
    width:clamp(205px,20.5vw,330px);height:100svh;
    padding:0;background:#f7f1e9;display:block;
  }
  body:not(.home-page) .menu-toggle{display:none}
  body:not(.home-page) .menu-panel{
    position:absolute;left:clamp(24px,2.25vw,38px);top:clamp(27px,3.6vh,46px);
    right:auto;margin:0;width:auto;max-height:none;overflow:visible;opacity:1;background:transparent;transition:none;
  }
  body:not(.home-page) .menu-nav{
    display:flex;flex-direction:column;align-items:flex-start;padding:0;gap:12px;
    font-size:11px;line-height:13px;letter-spacing:0;font-weight:400;
  }
  body:not(.home-page) .menu-nav a{padding:0;white-space:nowrap}
  body:not(.home-page) .menu-nav a:after{bottom:-2px;height:.5px}
  body:not(.home-page) .home-identity{
    position:absolute;left:clamp(24px,2.25vw,38px);bottom:clamp(24px,3.2vh,42px);
    z-index:52;display:flex;flex-direction:column;align-items:flex-start;gap:clamp(18px,2.4vh,26px);
  }
  body:not(.home-page) .home-identity .brand-logo{
    position:static;width:clamp(190px,21vw,225px);
  }
  body:not(.home-page) .home-socials{
    display:flex;flex-direction:column;align-items:flex-start;gap:9px;
    font-size:11px;line-height:13px;letter-spacing:0;font-weight:400;text-transform:none;
  }
  body:not(.home-page) .home-socials a{white-space:nowrap;opacity:.82;transition:opacity .2s ease}
  body:not(.home-page) .home-socials a:hover{opacity:1}
  body:not(.home-page) .page,
  body:not(.home-page) .project-stream,
  body:not(.home-page) .footer{
    margin-left:clamp(205px,20.5vw,330px);
  }
}
@media (min-width:701px) and (max-width:1024px){
  body:not(.home-page) .site-header{width:190px}
  body:not(.home-page) .menu-panel{left:20px;top:28px}
  body:not(.home-page) .menu-nav{gap:11px;font-size:11px;line-height:13px}
  body:not(.home-page) .home-identity{left:20px;bottom:26px;gap:17px}
  body:not(.home-page) .home-identity .brand-logo{width:155px}
  body:not(.home-page) .home-socials{font-size:11px;line-height:13px;gap:9px}
  body:not(.home-page) .page,
  body:not(.home-page) .project-stream,
  body:not(.home-page) .footer{margin-left:190px}
}
@media (max-width:700px){
  body:not(.home-page) .home-identity{display:contents}
  body:not(.home-page) .home-socials{display:none}
}


/* V27 — INTERIORS: horizontal editorial project rail, uniform portrait crops. */
@media (min-width:701px){
  .interiors-page{overflow:hidden;background:#f7f1e9}
  .interiors-page .interiors-stream{
    height:100svh;
    padding:clamp(24px,3.2vh,42px) clamp(24px,2.4vw,38px);
    display:flex;
    flex-direction:row;
    align-items:flex-start;
    gap:clamp(34px,4.2vw,68px);
    overflow-x:auto;
    overflow-y:hidden;
    scroll-snap-type:x proximity;
    scroll-behavior:smooth;
    scrollbar-width:none;
  }
  .interiors-page .interiors-stream::-webkit-scrollbar{display:none}
  .interiors-page .stream-project{
    flex:0 0 auto;
    width:auto;
    height:calc(100svh - clamp(48px,6.4vh,84px));
    padding:0;
    scroll-snap-align:start;
  }
  .interiors-page .stream-project figure{
    margin:0;
    height:100%;
    min-height:0;
    display:flex;
    flex-direction:column;
  }
  .interiors-page .stream-project img{
    width:auto;
    height:calc(100% - 30px);
    aspect-ratio:2 / 3;
    object-fit:cover;
    object-position:center;
    background:#f7f1e9;
  }
  .interiors-page .stream-project figcaption{
    height:30px;
    padding-top:9px;
    display:block;
    font-size:11px;
    line-height:13px;
    letter-spacing:0;
    text-transform:none;
  }
  .interiors-page .stream-project + .stream-project{padding-top:0}
  .interiors-page .stream-project:last-of-type{margin-right:12vw}
}
@media (max-width:700px){
  .interiors-page{overflow:hidden;background:#f7f1e9}
  .interiors-page .interiors-stream{
    height:calc(100svh - 76px);
    padding:14px 18px 12px;
    display:flex;
    flex-direction:row;
    align-items:flex-start;
    gap:18px;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-snap-type:x mandatory;
    scrollbar-width:none;
  }
  .interiors-page .interiors-stream::-webkit-scrollbar{display:none}
  .interiors-page .stream-project{
    flex:0 0 auto;
    height:100%;
    padding:0;
    scroll-snap-align:start;
  }
  .interiors-page .stream-project figure{height:100%;min-height:0;margin:0}
  .interiors-page .stream-project img{
    width:auto;
    height:calc(100% - 30px);
    aspect-ratio:2 / 3;
    object-fit:cover;
  }
  .interiors-page .stream-project figcaption{
    height:30px;padding-top:8px;display:block;
    font-size:10px;line-height:12px;letter-spacing:0;text-transform:none;
  }
  .interiors-page .stream-project + .stream-project{padding-top:0}
  .interiors-page .stream-project:last-of-type{margin-right:18px}
}

/* V28 — INTERIORS: make the horizontal rail explicitly scrollable in every desktop browser. */
@media (min-width:701px){
  .interiors-page .interiors-stream{
    width:calc(100vw - clamp(205px,20.5vw,330px));
    max-width:none;
    box-sizing:border-box;
    overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
    cursor:grab;
  }
  .interiors-page .interiors-stream.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}
}
@media (min-width:701px) and (max-width:1024px){
  .interiors-page .interiors-stream{width:calc(100vw - 190px)}
}
@media (max-width:700px){
  .interiors-page .interiors-stream{width:100vw;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
}


/* V29 — INTERIORS: robust native horizontal scroller with an explicit max-content track. */
@media (min-width:701px){
  .interiors-page .interiors-stream{
    display:block;
    height:100svh;
    padding:0;
    overflow-x:scroll !important;
    overflow-y:hidden !important;
    scroll-snap-type:none;
    scroll-behavior:auto;
    touch-action:pan-x;
  }
  .interiors-page .interiors-track{
    width:max-content;
    min-width:100%;
    height:100svh;
    padding:clamp(24px,3.2vh,42px) clamp(24px,2.4vw,38px);
    display:flex;
    flex-flow:row nowrap;
    align-items:flex-start;
    gap:clamp(34px,4.2vw,68px);
  }
  .interiors-page .stream-project{
    flex:none;
    height:calc(100svh - clamp(48px,6.4vh,84px));
  }
  .interiors-page .stream-project:last-of-type{margin-right:12vw}
}
@media (max-width:700px){
  .interiors-page .interiors-stream{
    display:block;
    height:calc(100svh - 76px);
    padding:0;
    overflow-x:scroll !important;
    overflow-y:hidden !important;
    scroll-snap-type:x mandatory;
    touch-action:pan-x;
  }
  .interiors-page .interiors-track{
    width:max-content;
    min-width:100%;
    height:100%;
    padding:14px 18px 12px;
    display:flex;
    flex-flow:row nowrap;
    align-items:flex-start;
    gap:18px;
  }
  .interiors-page .stream-project{flex:none;height:100%}
}

/* V30 — Interiors project cards are explicit navigation targets. */
.interiors-page a.stream-project{cursor:pointer;}
.interiors-page a.stream-project img{-webkit-user-drag:none;user-select:none;}

/* V32 — single Instagram link + FR/EN switch integrated into the fixed menu. */
.language-switch{
  display:flex;
  align-items:center;
  gap:5px;
  margin-top:18px;
  font:inherit;
  font-size:inherit;
  line-height:inherit;
  letter-spacing:inherit;
}
.language-switch button{
  appearance:none;border:0;background:none;padding:0;margin:0;
  font:inherit;color:inherit;cursor:pointer;opacity:.42;
}
.language-switch button[aria-pressed="true"]{opacity:1;text-decoration:underline;text-underline-offset:3px}
.language-switch span{opacity:.42}
@media (max-width:700px){.language-switch{margin-top:20px}}

/* V33 — Palais Royal: long-form editorial project page, magazine rhythm. */
.editorial-project-page{background:#f7f1e9;overflow-x:hidden}
.project-magazine{margin-left:clamp(205px,20.5vw,330px);padding:0 0 10vh}
.project-magazine figure{margin:0}.project-magazine img{width:100%;height:auto;display:block}
.mag-hero{width:100%;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:0 clamp(28px,4vw,70px)}
.mag-hero img{width:100%;height:100svh;object-fit:cover}
.mag-intro{display:grid;grid-template-columns:minmax(180px,.72fr) 1.28fr;gap:8vw;padding:12vh clamp(28px,6vw,110px) 17vh;align-items:start}
.mag-intro h1{font:inherit;font-size:clamp(22px,2.8vw,48px);line-height:.95;letter-spacing:-.025em;font-weight:400;margin:0 0 13px;text-transform:none}
.mag-place{margin:0;font-size:11px;letter-spacing:0}.mag-copy{max-width:540px;margin:3px 0 0;font-size:12px;line-height:1.55;letter-spacing:0}
.mag-spread{padding:0 clamp(28px,6vw,110px);margin-bottom:18vh}
.mag-spread--pair{display:grid;grid-template-columns:.92fr .72fr;gap:8vw;align-items:start}.mag-spread--pair .mag-lower{margin-top:18vh}
.mag-spread--solo-right{display:flex;justify-content:flex-end}.mag-spread--solo-right figure{width:61%}
.mag-spread--pair-asym{display:grid;grid-template-columns:.67fr .82fr;gap:10vw;align-items:center}.mag-spread--pair-asym figure:first-child{margin-top:12vh}
.mag-spread--wide{padding-left:0;padding-right:0}.mag-spread--wide figure{width:100%}.mag-spread--wide img{max-height:96svh;object-fit:cover}
.mag-spread--pair-bedroom{display:grid;grid-template-columns:.78fr .78fr;gap:7vw;align-items:start}.mag-spread--pair-bedroom .mag-lower{margin-top:22vh}
.mag-spread--solo-left{display:flex;justify-content:flex-start}.mag-spread--solo-left figure{width:58%}
.mag-spread--pair-final{display:grid;grid-template-columns:.72fr .9fr;gap:9vw;align-items:end}.mag-spread--pair-final figure:first-child{margin-bottom:13vh}
.mag-end{min-height:48vh;display:flex;align-items:flex-end;justify-content:flex-end;padding:8vh clamp(28px,6vw,110px)}
.mag-end a{font-size:11px;line-height:1.5;text-align:right}.mag-end span{font-size:clamp(26px,4vw,66px);line-height:1;font-weight:400;letter-spacing:-.03em}
@media (min-width:701px) and (max-width:1024px){.project-magazine{margin-left:190px}.mag-hero{padding:0 26px}.mag-intro,.mag-spread,.mag-end{padding-left:34px;padding-right:34px}}
@media (max-width:700px){
 .project-magazine{margin-left:0;padding-top:76px}.mag-hero{min-height:auto;padding:0 12px}.mag-hero img{height:calc(100svh - 88px);object-fit:cover}
 .mag-intro{grid-template-columns:1fr;gap:28px;padding:68px 18px 92px}.mag-intro h1{font-size:32px}.mag-copy{font-size:11px}
 .mag-spread{padding:0 18px;margin-bottom:82px}.mag-spread--pair,.mag-spread--pair-asym,.mag-spread--pair-bedroom,.mag-spread--pair-final{grid-template-columns:1fr;gap:22px}
 .mag-spread--pair .mag-lower,.mag-spread--pair-asym figure:first-child,.mag-spread--pair-bedroom .mag-lower,.mag-spread--pair-final figure:first-child{margin:0}
 .mag-spread--solo-right figure,.mag-spread--solo-left figure{width:88%}.mag-spread--solo-right{padding-left:46px;padding-right:12px}.mag-spread--solo-left{padding-left:12px;padding-right:46px}
 .mag-spread--wide{padding:0 12px}.mag-end{min-height:38vh;padding:60px 18px}.mag-end span{font-size:34px}
}

/* V34 — Palais Royal: strict editorial rhythm inspired by a magazine spread. */
@font-face{font-family:"Louize Display Trial";src:url("assets/fonts/LouizeDisplayTrial-Regular.otf") format("opentype");font-style:normal;font-weight:400 900;font-display:swap}
.project-magazine-v34{padding-bottom:0}
.mag-title{min-height:46vh;display:flex;flex-direction:column;justify-content:flex-end;padding:0 clamp(32px,6vw,110px) 8vh}
.mag-title h1{margin:0;font-family:"Louize Display Trial",Georgia,serif;font-size:clamp(54px,7.3vw,124px);line-height:.82;letter-spacing:-.045em;font-weight:700}
.mag-title p{margin:22px 0 0;font-size:11px;line-height:1.2}
.editorial-landscape{width:100%;height:100svh;overflow:hidden}
.editorial-landscape img{width:100%;height:100%;object-fit:cover;display:block}
.editorial-pair{height:100svh;display:grid;grid-template-columns:1fr 1fr;background:#f7f1e9;overflow:hidden}
.editorial-pair figure{margin:0;min-width:0}
.editorial-pair-major{height:100%;overflow:hidden}
.editorial-pair-major img{width:100%;height:100%;object-fit:cover;display:block}
.editorial-pair-minor{display:flex;align-items:center;justify-content:center;padding:9vh 12%}
.editorial-pair-minor img{width:auto;max-width:100%;height:auto;max-height:74svh;object-fit:contain;display:block}
.editorial-pair-reverse .editorial-pair-major{grid-column:2;grid-row:1}
.editorial-pair-reverse .editorial-pair-minor{grid-column:1;grid-row:1}
.editorial-text{min-height:60svh;display:flex;align-items:center;justify-content:center;padding:14vh 12vw;background:#f7f1e9}
.editorial-text p{width:min(620px,52vw);margin:0;text-align:center;font-family:"Louize Display Trial",Georgia,serif;font-size:clamp(16px,1.28vw,22px);line-height:1.32;letter-spacing:-.012em;font-weight:400}
.project-magazine-v34 .mag-end{background:#f7f1e9}
.project-magazine-v34 .mag-end span{font-family:"Louize Display Trial",Georgia,serif;font-weight:700}
@media (min-width:701px) and (max-width:1024px){.mag-title{padding-left:42px;padding-right:42px}.editorial-pair-minor{padding-left:9%;padding-right:9%}.editorial-text p{width:min(520px,68vw)}}
@media (max-width:700px){
 .mag-title{min-height:34vh;padding:120px 18px 46px}.mag-title h1{font-size:52px}.mag-title p{margin-top:14px}
 .editorial-landscape{height:72svh}.editorial-landscape img{object-fit:cover}
 .editorial-pair{height:auto;min-height:0;display:grid;grid-template-columns:1fr;padding:0 0 72px}
 .editorial-pair-major,.editorial-pair-reverse .editorial-pair-major{grid-column:1;grid-row:auto;height:72svh}
 .editorial-pair-minor,.editorial-pair-reverse .editorial-pair-minor{grid-column:1;grid-row:auto;padding:72px 42px 0}
 .editorial-pair-minor img{max-height:62svh}
 .editorial-text{min-height:52svh;padding:88px 28px}.editorial-text p{width:100%;font-size:17px;line-height:1.35}
}


/* V35 — Project opening: full-screen image first, then compact title + facts. */
.project-magazine-v34 .editorial-opening{height:100svh}
.mag-title-facts{min-height:44svh;justify-content:center;padding-top:7vh;padding-bottom:7vh}
.mag-title-facts h1{font-size:clamp(38px,4.6vw,76px);line-height:.9;letter-spacing:-.035em}
.project-meta{display:flex;flex-wrap:wrap;gap:8px clamp(22px,3vw,52px);margin-top:28px;font-size:11px;line-height:1.25}
.project-meta span{white-space:nowrap}
@media (max-width:700px){
 .project-magazine-v34 .editorial-opening{height:100svh}
 .mag-title-facts{min-height:42svh;padding:72px 18px}
 .mag-title-facts h1{font-size:42px}
 .project-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px;margin-top:22px;font-size:10px}
}
\n\n/* V36 — Palais Royal project information: editorial grid inspired by the Kelly Wearstler reference. */\n.kw-project-intro{min-height:60svh;padding:0 clamp(28px,3.4vw,62px) 12vh;background:#f7f1e9;color:#111}\n.kw-project-rule{border-top:1px solid rgba(17,17,17,.16);margin-bottom:26px}\n.kw-project-facts{display:grid;grid-template-columns:1.75fr repeat(4,1fr);column-gap:clamp(24px,3vw,64px);align-items:start}\n.kw-project-name h1{margin:0;font-family:"Louize Display Trial",Georgia,serif;font-size:clamp(22px,1.65vw,30px);line-height:1;font-weight:700;letter-spacing:-.02em}\n.kw-fact{margin:0}.kw-fact dt{margin:0 0 5px;font-family:Arial,Helvetica,sans-serif;font-size:10px;line-height:1;text-transform:uppercase;letter-spacing:.035em;font-weight:700}.kw-fact dd{margin:0;font-family:"Louize Display Trial",Georgia,serif;font-size:clamp(15px,1.05vw,19px);line-height:1.08;letter-spacing:-.012em}\n.kw-project-description{margin-left:calc((100% - (4 * clamp(24px,3vw,64px))) * .368);width:min(820px,58vw);padding-top:9vh}\n.kw-project-description p{margin:0;font-family:"Louize Display Trial",Georgia,serif;font-size:clamp(22px,1.65vw,31px);line-height:1.23;letter-spacing:-.022em;font-weight:400}\n@media (min-width:701px) and (max-width:1024px){.kw-project-intro{padding-left:34px;padding-right:34px}.kw-project-facts{grid-template-columns:1.45fr repeat(4,1fr);column-gap:20px}.kw-project-name h1{font-size:22px}.kw-fact dt{font-size:8px}.kw-fact dd{font-size:14px}.kw-project-description{margin-left:29%;width:68%;padding-top:8vh}.kw-project-description p{font-size:22px}}\n@media (max-width:700px){.kw-project-intro{min-height:auto;padding:0 18px 88px}.kw-project-rule{margin-bottom:22px}.kw-project-facts{grid-template-columns:1fr 1fr;gap:28px 18px}.kw-project-name{grid-column:1/-1}.kw-project-name h1{font-size:28px}.kw-fact dt{font-size:8px;margin-bottom:4px}.kw-fact dd{font-size:15px}.kw-project-description{margin-left:0;width:100%;padding-top:64px}.kw-project-description p{font-size:21px;line-height:1.28}}\n
/* V37 — Palais Royal intro: one Louize typographic system. */
.kw-project-intro{min-height:58svh;padding:0 clamp(28px,3.4vw,62px) 11vh}
.kw-project-rule{margin-bottom:30px}
.kw-project-facts{grid-template-columns:1.45fr repeat(4,1fr);column-gap:clamp(26px,3.2vw,70px);align-items:start}
.kw-project-name h1,.kw-fact dt,.kw-fact dd,.kw-project-description p{font-family:"Louize Display Trial",Georgia,serif}
.kw-project-name h1{font-size:clamp(25px,1.9vw,35px);line-height:1;font-weight:700;letter-spacing:-.022em}
.kw-fact dt{margin:0 0 5px;font-size:clamp(11px,.72vw,13px);line-height:1;font-weight:400;text-transform:none;letter-spacing:0}
.kw-fact dd{font-size:clamp(15px,1vw,18px);line-height:1.08;font-weight:400;letter-spacing:-.012em}
.kw-project-description{margin-left:calc((100% - (4 * clamp(26px,3.2vw,70px))) * .32);width:min(760px,55vw);padding-top:8.5vh;text-align:center}
.kw-project-description p{font-size:clamp(18px,1.25vw,23px);line-height:1.34;font-weight:400;letter-spacing:-.016em}
@media (min-width:701px) and (max-width:1024px){.kw-project-facts{grid-template-columns:1.35fr repeat(4,1fr);column-gap:18px}.kw-project-name h1{font-size:25px}.kw-fact dt{font-size:10px}.kw-fact dd{font-size:14px}.kw-project-description{margin-left:26%;width:66%;padding-top:8vh}.kw-project-description p{font-size:18px}}
@media (max-width:700px){.kw-project-facts{grid-template-columns:1fr 1fr;gap:25px 18px}.kw-project-name{grid-column:1/-1}.kw-project-name h1{font-size:28px}.kw-fact dt{font-size:11px}.kw-fact dd{font-size:15px}.kw-project-description{margin-left:0;width:100%;padding-top:58px;text-align:center}.kw-project-description p{font-size:18px;line-height:1.35}}

/* V38 — Project facts stay on one horizontal line at every breakpoint. */
@media (max-width:700px){
  .kw-project-intro{padding-left:12px;padding-right:12px}
  .kw-project-facts{display:grid;grid-template-columns:1.28fr 1.12fr .9fr .72fr .82fr;column-gap:8px;align-items:start;width:100%}
  .kw-project-name{grid-column:auto;min-width:0}
  .kw-project-name h1{font-size:20px;line-height:.98;white-space:nowrap}
  .kw-fact{min-width:0}
  .kw-fact dt{font-size:7px;line-height:1.05;margin-bottom:4px;white-space:nowrap}
  .kw-fact dd{font-size:10px;line-height:1.08;white-space:nowrap}
}

/* V39 — Project identity row: exactly as approved sketch. */
.kw-project-intro{padding-left:clamp(24px,3vw,54px);padding-right:clamp(24px,3vw,54px)}
.kw-project-facts{display:grid;grid-template-columns:minmax(190px,2.1fr) minmax(120px,1.2fr) minmax(100px,1fr) minmax(72px,.72fr) minmax(82px,.82fr);column-gap:clamp(24px,4.1vw,82px);align-items:center;width:100%}
.kw-project-name{align-self:center}
.kw-project-name h1{font-size:clamp(28px,2.25vw,41px);line-height:1;font-weight:700;white-space:nowrap}
.kw-fact{display:block;align-self:center;margin:0}
.kw-fact dt,.kw-fact dd{display:block;margin:0;white-space:nowrap}
.kw-fact dt{font-size:clamp(12px,.8vw,14px);line-height:1.05;margin-bottom:3px}
.kw-fact dd{font-size:clamp(15px,1vw,18px);line-height:1.05}
@media (min-width:701px) and (max-width:1024px){
 .kw-project-facts{grid-template-columns:minmax(150px,1.75fr) 1.2fr 1fr .72fr .82fr;column-gap:22px}
 .kw-project-name h1{font-size:27px}.kw-fact dt{font-size:10px}.kw-fact dd{font-size:14px}
}
@media (max-width:700px){
 .kw-project-intro{padding-left:10px;padding-right:10px}
 .kw-project-facts{grid-template-columns:1.7fr 1.22fr .94fr .66fr .74fr;column-gap:7px;align-items:center}
 .kw-project-name{grid-column:auto}
 .kw-project-name h1{font-size:18px;line-height:1;white-space:nowrap}
 .kw-fact dt{font-size:6.5px;line-height:1;margin-bottom:3px;white-space:nowrap}
 .kw-fact dd{font-size:8.5px;line-height:1;white-space:nowrap}
}

/* V40 — Intro copy aligns with Emplacement and leaves a larger editorial pause before imagery. */
.kw-project-description{
  display:grid;
  grid-template-columns:minmax(190px,2.1fr) minmax(120px,1.2fr) minmax(100px,1fr) minmax(72px,.72fr) minmax(82px,.82fr);
  column-gap:clamp(24px,4.1vw,82px);
  margin-left:0;
  width:100%;
  padding-top:9vh;
  padding-bottom:18vh;
  text-align:left;
}
.kw-project-description p{
  grid-column:2 / 5;
  width:min(720px,100%);
  text-align:left;
}
.kw-project-intro{padding-bottom:0}
@media (min-width:701px) and (max-width:1024px){
 .kw-project-description{grid-template-columns:minmax(150px,1.75fr) 1.2fr 1fr .72fr .82fr;column-gap:22px;margin-left:0;width:100%;padding-top:8vh;padding-bottom:16vh}
 .kw-project-description p{grid-column:2 / 6;width:min(600px,100%)}
}
@media (max-width:700px){
 .kw-project-description{grid-template-columns:1.7fr 1.22fr .94fr .66fr .74fr;column-gap:7px;margin-left:0;width:100%;padding-top:54px;padding-bottom:110px;text-align:left}
 .kw-project-description p{grid-column:2 / 6;width:100%;text-align:left;font-size:16px;line-height:1.34}
}

/* V41 — Full-width landscape photographs keep their original ratio (no crop). */
.project-magazine-v34 .editorial-landscape:not(.editorial-opening){
  width:100%;
  height:auto;
  overflow:visible;
}
.project-magazine-v34 .editorial-landscape:not(.editorial-opening) img{
  display:block;
  width:100%;
  height:auto;
  max-height:none;
  object-fit:contain;
}
@media (max-width:700px){
  .project-magazine-v34 .editorial-landscape:not(.editorial-opening){height:auto}
  .project-magazine-v34 .editorial-landscape:not(.editorial-opening) img{height:auto;object-fit:contain}
}

/* V43 — Palais Royal mobile: readable project facts arranged like the approved iPhone sketch. */
@media (max-width:700px){
  .kw-project-intro{padding-left:18px;padding-right:18px}
  .kw-project-rule{margin-bottom:26px}
  .kw-project-facts{
    display:grid;
    grid-template-columns:1.35fr 1fr .78fr .86fr;
    column-gap:14px;
    row-gap:0;
    align-items:start;
    width:100%;
  }
  .kw-project-name{
    grid-column:1 / -1;
    margin-bottom:34px;
  }
  .kw-project-name h1{
    font-size:29px;
    line-height:1;
    white-space:nowrap;
  }
  .kw-fact dt{
    font-size:11.5px;
    line-height:1.05;
    margin-bottom:4px;
    white-space:nowrap;
  }
  .kw-fact dd{
    font-size:13.5px;
    line-height:1.08;
    white-space:nowrap;
  }
  .kw-project-description{
    display:block;
    margin:0;
    width:100%;
    padding-top:54px;
    padding-bottom:145px;
  }
  .kw-project-description p{
    width:100%;
    margin:0;
    font-size:17px;
    line-height:1.35;
    text-align:left;
  }
}

/* V44 — language choice is part of the opening sequence, between logo and manifesto. */
.intro-language{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:flex;align-items:center;gap:34px;z-index:2;
  opacity:0;pointer-events:none;
  animation:introLanguageIn .65s cubic-bezier(.4,0,.2,1) 1.15s forwards;
}
.intro-language button{
  appearance:none;border:0;background:transparent;padding:6px 0;cursor:pointer;
  font-family:'Louize Display',Georgia,'Times New Roman',serif;
  font-size:clamp(18px,1.55vw,25px);font-weight:400;line-height:1;
  color:#111;letter-spacing:-.012em;
}
.intro-language button:hover{opacity:.55}
.intro-language.is-chosen{opacity:0!important;pointer-events:none!important;transition:opacity .45s ease}
@keyframes introLanguageIn{to{opacity:1;pointer-events:auto}}
/* Override the old timed manifesto animation: it appears only after a language is chosen. */
.intro-manifesto{animation:none!important;opacity:0!important;transform:translate(-50%,calc(-50% + 8px))!important;transition:opacity .75s ease,transform .75s ease}
.intro-manifesto.is-visible{opacity:1!important;transform:translate(-50%,-50%)!important}
@media(max-width:700px){.intro-language{gap:28px}.intro-language button{font-size:20px}}
@media(prefers-reduced-motion:reduce){.intro-language{animation:none;opacity:1;pointer-events:auto}.intro-manifesto{transition:none}}

/* V45 — INTERIORS mobile: vertical editorial feed, full-width uniform frames. */
@media (max-width:700px){
  .interiors-page{overflow:auto;background:#f7f1e9}
  .interiors-page .interiors-stream{
    display:block;
    width:100%;
    height:auto;
    min-height:calc(100svh - 76px);
    padding:0;
    overflow:visible !important;
    scroll-snap-type:none;
    touch-action:pan-y;
    overscroll-behavior-y:auto;
  }
  .interiors-page .interiors-track{
    width:100%;
    min-width:0;
    height:auto;
    padding:0 0 10vh;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:18px;
  }
  .interiors-page .stream-project,
  .interiors-page .stream-project:last-of-type{
    display:block;
    width:100%;
    height:auto;
    margin:0;
    padding:0;
    flex:none;
  }
  .interiors-page .stream-project figure{
    width:100%;
    height:auto;
    min-height:0;
    margin:0;
    display:block;
  }
  .interiors-page .stream-project img{
    display:block;
    width:100%;
    height:auto;
    aspect-ratio:4 / 5;
    object-fit:cover;
    object-position:center;
  }
  .interiors-page .stream-project figcaption{
    height:auto;
    min-height:34px;
    padding:9px 14px 4px;
    display:block;
    font-size:11px;
    line-height:1.15;
    letter-spacing:0;
    text-transform:none;
  }
  .interiors-page .stream-project + .stream-project{padding-top:0}
}

/* V47 — Norman House: low-resolution construction archive kept intentionally smaller. */
.project-magazine .norman-construction-pair .editorial-pair-major{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:14vh 9%;
  background:#f7f1e9;
}
.project-magazine .norman-construction-pair .editorial-pair-major img{
  width:auto;
  height:auto;
  max-width:72%;
  max-height:62svh;
  object-fit:contain;
}
@media (max-width:700px){
  .project-magazine .norman-construction-pair .editorial-pair-major{
    padding:11vh 14vw;
    min-height:70svh;
  }
  .project-magazine .norman-construction-pair .editorial-pair-major img{
    max-width:100%;
    max-height:52svh;
  }
}

/* V48 — Norman House follows the Palais Royal editorial rhythm. Portraits stay portrait; only the low-res construction archive is deliberately small. */
.project-magazine .norman-construction-pair .editorial-pair-major{
  display:block;
  padding:0;
  background:transparent;
  height:100%;
  overflow:hidden;
}
.project-magazine .norman-construction-pair .editorial-pair-major img{
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  object-fit:cover;
}
.project-magazine .norman-construction-pair .norman-archive{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:14vh 12%;
}
.project-magazine .norman-construction-pair .norman-archive img{
  width:auto;
  height:auto;
  max-width:72%;
  max-height:52svh;
  object-fit:contain;
}
@media (max-width:700px){
  .project-magazine .norman-construction-pair .editorial-pair-major{
    padding:0;
    min-height:0;
    height:72svh;
  }
  .project-magazine .norman-construction-pair .editorial-pair-major img{
    width:100%;height:100%;max-width:none;max-height:none;object-fit:cover;
  }
  .project-magazine .norman-construction-pair .norman-archive{
    padding:72px 14vw 0;
    min-height:0;
  }
  .project-magazine .norman-construction-pair .norman-archive img{
    max-width:100%;max-height:42svh;
  }
}

/* V49 — Norman House: construction + façade, then staircase portrait. */
.norman-stair-portrait{
  min-height:100svh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10vh 8vw;
  background:#F7F1E9;
}
.norman-stair-portrait img{
  display:block;
  width:auto;
  height:auto;
  max-width:min(56vw,900px);
  max-height:82svh;
  object-fit:contain;
}
@media (max-width:700px){
  .norman-stair-portrait{min-height:auto;padding:12vh 7vw}
  .norman-stair-portrait img{max-width:100%;max-height:none;width:100%;height:auto}
}

/* V53 — Norman House final photograph: full width, original landscape ratio, no crop. */
.project-magazine-v34 .norman-final-landscape{
  width:100%;
  height:auto;
  overflow:visible;
}
.project-magazine-v34 .norman-final-landscape img{
  display:block;
  width:100%;
  height:auto;
  max-height:none;
  object-fit:contain;
}

/* V54 — Sablons editorial page. Keep low-resolution landscape references at natural scale where possible. */
.sablons-project .sablons-opening img{object-position:center center}
.sablons-project .editorial-pair-major img{object-position:center center}
.sablons-project .editorial-pair-minor img{object-fit:contain}
@media (min-width:701px){
  .sablons-project .editorial-pair + .editorial-pair{margin-top:0}
}

/* V62 — Contact page inspired by Giampiero Tagliaferri: image-led composition with compact contact columns. */
.contact-tf-page{background:#F7F1E9;min-height:100vh}
.contact-tf-main{margin-left:clamp(205px,20.5vw,330px);min-height:100svh;display:grid;grid-template-columns:minmax(0,1.58fr) minmax(300px,.82fr);background:#F7F1E9}
.contact-tf-image{height:100svh;overflow:hidden;background:#111}
.contact-tf-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center center}
.contact-tf-info{align-self:end;padding:0 clamp(34px,4.2vw,72px) clamp(42px,5.2vh,70px);display:grid;gap:clamp(30px,4.5vh,58px);font-family:"Louize Display Trial",Georgia,serif;color:#111}
.contact-tf-block h1,.contact-tf-block h2{margin:0 0 12px;font:inherit;font-size:clamp(17px,1.35vw,22px);line-height:1.05;font-weight:400}
.contact-tf-block p{margin:0;font-size:clamp(13px,.88vw,15px);line-height:1.35}
.contact-tf-block a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor}
.contact-tf-block a:hover{opacity:.58}
@media(max-width:900px){
  .contact-tf-main{margin-left:0;display:block;min-height:auto}
  .contact-tf-image{height:72svh}
  .contact-tf-info{padding:58px 7vw 80px;grid-template-columns:1fr 1fr;align-items:start}
  .contact-tf-block:first-child{grid-column:1/-1}
}
@media(max-width:600px){
  .contact-tf-image{height:64svh}
  .contact-tf-info{display:block;padding:46px 7vw 70px}
  .contact-tf-block+.contact-tf-block{margin-top:36px}
}

/* V65 — Services: discreet editorial extension of About, intentionally absent from primary navigation. */
.studio-services-link{padding-top:4vh;padding-bottom:14vh}
.studio-services-link a,.services-page a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor}
.services-page .service-block{padding-top:9vh;padding-bottom:9vh;border-top:1px solid rgba(17,17,17,.14)}
.services-page .services-intro{padding-bottom:16vh}
.services-page .services-contact{padding-top:16vh;padding-bottom:18vh;border-top:1px solid rgba(17,17,17,.14)}
@media(max-width:700px){.services-page .service-block{padding-top:7vh;padding-bottom:7vh}.services-page .services-intro{padding-bottom:11vh}}

/* V66 — About & Services use the Contact page's editorial language, without photography. */
.editorial-info-main{margin-left:clamp(205px,20.5vw,330px);min-height:100svh;background:#F7F1E9;display:grid;grid-template-columns:minmax(0,1.58fr) minmax(300px,.82fr)}
.editorial-info-panel{grid-column:2;align-self:end;padding:clamp(70px,10vh,130px) clamp(34px,4.2vw,72px) clamp(42px,5.2vh,70px);display:grid;gap:clamp(30px,4.5vh,58px);font-family:"Louize Display Trial",Georgia,serif;color:#111}
.editorial-info-block h1,.editorial-info-block h2{margin:0 0 12px;font:inherit;font-size:clamp(17px,1.35vw,22px);line-height:1.05;font-weight:400}
.editorial-info-block p{margin:0;font-size:clamp(13px,.88vw,15px);line-height:1.35}
.editorial-info-block p+p{margin-top:14px}
.editorial-info-block strong{font-weight:400}
.editorial-info-block a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor}
.editorial-info-block a:hover{opacity:.58}
.about-info-main .editorial-info-panel{padding-top:clamp(90px,12vh,150px)}
@media(max-width:900px){.editorial-info-main{margin-left:0;display:block;min-height:100svh}.editorial-info-panel{padding:120px 7vw 80px;max-width:680px;margin-left:auto}.about-info-main .editorial-info-panel{padding-top:120px}}
@media(max-width:700px){.editorial-info-panel{padding:110px 7vw 70px;display:block;max-width:none}.editorial-info-block+.editorial-info-block{margin-top:38px}}

/* V67 — restore the broader About / Services composition, keeping the Louize editorial typography introduced with Contact. */
.page .intro h1,.page .intro h2,.services-page .intro h1,.services-page .intro h2{
  font-family:"Louize Display Trial",Georgia,serif;
  font-weight:400;
  letter-spacing:0;
  text-transform:none;
}
.page .intro p,.services-page .intro p,.page .intro a,.services-page .intro a{
  font-family:"Louize Display Trial",Georgia,serif;
}
.page .intro strong,.services-page .intro strong{font-weight:400}
.studio-team,.studio-services-link,.services-page .service-block,.services-page .services-contact{border-color:rgba(17,17,17,.14)}

/* V68 — About & Services: larger, readable Louize typography while keeping the editorial grid. */
.page:not(.project-magazine) .intro h1,
.page:not(.project-magazine) .intro h2,
.services-page .intro h1,
.services-page .intro h2{
  font-size:clamp(25px,2.05vw,34px);
  line-height:1.04;
}
.page:not(.project-magazine) .intro p,
.services-page .intro p,
.page:not(.project-magazine) .intro a,
.services-page .intro a{
  font-size:clamp(17px,1.18vw,20px);
  line-height:1.38;
}
.page:not(.project-magazine) .intro p+p,
.services-page .intro p+p{margin-top:16px}
@media(max-width:700px){
  .page:not(.project-magazine) .intro h1,
  .page:not(.project-magazine) .intro h2,
  .services-page .intro h1,
  .services-page .intro h2{font-size:27px;line-height:1.05}
  .page:not(.project-magazine) .intro p,
  .services-page .intro p,
  .page:not(.project-magazine) .intro a,
  .services-page .intro a{font-size:17px;line-height:1.42}
}

/* V69 — About & Services: align each heading with the top of its text column. */
.page:not(.project-magazine) .intro,
.services-page .intro{
  align-items:start;
}
.page:not(.project-magazine) .intro > h1,
.page:not(.project-magazine) .intro > h2,
.services-page .intro > h1,
.services-page .intro > h2,
.page:not(.project-magazine) .intro > div,
.services-page .intro > div{
  align-self:start;
  margin-top:0;
}

/* V70 — About & Services: readable single-screen editorial layouts on desktop. */
@media (min-width:901px){
  body:has(.studio-one-screen),
  body:has(.services-one-screen){overflow:hidden}
  .page.studio-one-screen,
  .page.services-one-screen{
    height:100svh;
    min-height:0;
    padding-top:clamp(34px,4.8vh,58px);
    padding-bottom:clamp(26px,3.8vh,46px);
    display:grid;
    align-content:stretch;
    margin-left:clamp(205px,20.5vw,330px);
    width:auto;
  }
  .page.studio-one-screen{grid-template-rows:1.55fr 1fr .9fr .72fr}
  .page.services-one-screen{grid-template-rows:.78fr repeat(4,1fr) .78fr}
  .page.studio-one-screen .intro,
  .page.services-one-screen .intro{
    grid-template-columns:minmax(170px,.62fr) minmax(0,2fr);
    gap:clamp(34px,5vw,90px);
    margin:0;
    padding:clamp(10px,1.55vh,18px) 0;
    min-height:0;
    align-items:start;
  }
  .page.studio-one-screen .intro + .intro,
  .page.services-one-screen .intro + .intro{border-top:1px solid rgba(17,17,17,.14)}
  .page.studio-one-screen .intro h1,
  .page.studio-one-screen .intro h2,
  .page.services-one-screen .intro h1,
  .page.services-one-screen .intro h2{
    font-size:clamp(22px,1.7vw,29px);
    line-height:1.02;
  }
  .page.studio-one-screen .intro p,
  .page.studio-one-screen .intro a,
  .page.services-one-screen .intro p,
  .page.services-one-screen .intro a{
    font-size:clamp(14px,.98vw,17px);
    line-height:1.28;
    max-width:760px;
  }
  .page.studio-one-screen .intro p+p,
  .page.services-one-screen .intro p+p{margin-top:clamp(5px,.7vh,9px)}
  .page.studio-one-screen .studio-team,
  .page.studio-one-screen .studio-services-link,
  .page.services-one-screen .service-block,
  .page.services-one-screen .services-intro,
  .page.services-one-screen .services-contact{
    padding-top:clamp(10px,1.55vh,18px);
    padding-bottom:clamp(10px,1.55vh,18px);
    margin-bottom:0;
  }
  body:has(.studio-one-screen) > .footer,
  body:has(.services-one-screen) > .footer{display:none}
}
/* V71 — Services: four-phase method, kept legible within one desktop viewport. */
@media (min-width:901px){
  .page.services-one-screen{grid-template-rows:.55fr repeat(4,1fr)}
  .page.services-one-screen .intro{padding:clamp(8px,1.15vh,13px) 0}
  .page.services-one-screen .intro h1,
  .page.services-one-screen .intro h2{font-size:clamp(20px,1.48vw,26px)}
  .page.services-one-screen .intro p,
  .page.services-one-screen .intro a{font-size:clamp(13px,.86vw,15.5px);line-height:1.23;max-width:900px}
}

/* V73 — About mirrors the Services page exactly: same editorial grid, type scale and spacing. */
@media (min-width:901px){
  .page.studio-one-screen{grid-template-rows:1.35fr 1fr 1fr .72fr}
  .page.studio-one-screen .intro{padding:clamp(8px,1.15vh,13px) 0}
  .page.studio-one-screen .intro h1,
  .page.studio-one-screen .intro h2{font-size:clamp(20px,1.48vw,26px);line-height:1.02}
  .page.studio-one-screen .intro p,
  .page.studio-one-screen .intro a{font-size:clamp(13px,.86vw,15.5px);line-height:1.23;max-width:900px}
  .page.studio-one-screen .intro p+p{margin-top:clamp(5px,.7vh,9px)}
}
/* V82 — La Fête project video */
.lafete-video-section{position:relative;width:100%;padding:clamp(70px,10vw,160px) 0;background:#F7F1E9;display:flex;justify-content:center}
.lafete-video{display:block;width:min(76vw,1180px);height:auto;max-height:88svh;background:#000;object-fit:contain}
.lafete-sound{position:absolute;right:max(24px,12vw);bottom:clamp(82px,11vw,175px);border:0;background:transparent;font:inherit;font-size:12px;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
@media(max-width:900px){.lafete-video-section{padding:48px 0}.lafete-video{width:100%}.lafete-sound{right:18px;bottom:58px;background:#F7F1E9;padding:7px 9px}}
/* V83 — La Fête video: remove black side bars by filling the editorial frame */
.lafete-video-section{height:100svh;padding:0;overflow:hidden;background:#F7F1E9}
.lafete-video{width:100%;height:100%;max-height:none;object-fit:cover;background:transparent}
.lafete-sound{right:24px;bottom:24px}
@media(max-width:900px){.lafete-video-section{height:100svh;padding:0}.lafete-video{width:100%;height:100%;object-fit:cover}.lafete-sound{right:18px;bottom:18px}}
/* V84 — La Fête video: preserve the full portrait frame, no black bars */
.lafete-video-section{height:auto;min-height:100svh;padding:0;background:#F7F1E9;display:flex;align-items:center;justify-content:center;overflow:visible}
.lafete-video{display:block;width:auto;height:auto;max-width:100%;max-height:100svh;object-fit:contain;background:transparent}
.lafete-sound{display:none!important}
@media(max-width:900px){.lafete-video-section{height:auto;min-height:100svh;padding:0;background:#F7F1E9}.lafete-video{width:100%;height:auto;max-height:none;object-fit:contain}}
/* V87 — La Fête: concept renders immediately after project introduction */
.lafete-concept-renders{width:100%;padding:clamp(34px,5vw,78px) clamp(24px,6vw,96px) clamp(72px,10vw,150px);box-sizing:border-box;background:#F7F1E9}
.lafete-render{margin:0 0 clamp(42px,6vw,90px)}
.lafete-render:last-child{margin-bottom:0}
.lafete-render img,.lafete-render-video{display:block;width:100%;height:auto;object-fit:contain;background:transparent}
.lafete-render figcaption{margin-top:9px;font-family:"Louize Display Trial",serif;font-size:12px;line-height:1.2;letter-spacing:.01em}
@media(max-width:900px){.lafete-concept-renders{padding:30px 18px 70px}.lafete-render{margin-bottom:38px}.lafete-render figcaption{font-size:11px;margin-top:7px}}


/* V88 — La Fête mobile opening: film replaces cover + sound experience notice */
.lafete-opening-video,.lafete-mobile-audio-intro{display:none}
@media(max-width:900px){
  .lafete-opening{position:relative;width:100%;height:100svh;min-height:100svh;overflow:hidden;background:#000}
  .lafete-opening .lafete-opening-image{display:none!important}
  .lafete-opening-video{display:block;width:100%;height:100%;object-fit:cover;background:#000}
  .lafete-mobile-audio-intro{display:flex;position:absolute;inset:0;z-index:3;align-items:center;justify-content:center;text-align:center;padding:28px;box-sizing:border-box;background:rgba(0,0,0,.28);color:#fff;pointer-events:none;opacity:1;animation:lafeteAudioIntroIn .75s ease both}
  .lafete-mobile-audio-intro span{font-family:"Louize Display Trial",serif;font-size:clamp(18px,5vw,25px);line-height:1.18;font-weight:400;letter-spacing:.005em;text-shadow:0 1px 12px rgba(0,0,0,.35)}
  .lafete-mobile-audio-intro.is-leaving{opacity:0;transition:opacity .85s ease}
}
@keyframes lafeteAudioIntroIn{from{opacity:0}to{opacity:1}}


/* V89 — La Fête mobile: explicit sound-first entrance */
@media(max-width:900px){
  .lafete-mobile-audio-intro{border:0;cursor:pointer;flex-direction:column;gap:0;background:rgba(0,0,0,.34);pointer-events:auto;color:#fff;-webkit-tap-highlight-color:transparent}
  .lafete-mobile-audio-intro span{display:block;text-shadow:0 1px 12px rgba(0,0,0,.35)}
  .lafete-mobile-audio-intro .lafete-audio-kicker{font-family:"Louize Display Trial",serif;font-size:clamp(28px,8vw,42px);line-height:1;margin-bottom:14px}
  .lafete-mobile-audio-intro .lafete-audio-copy{font-family:"Louize Display Trial",serif;font-size:clamp(17px,4.8vw,23px);line-height:1.15;margin-bottom:32px}
  .lafete-mobile-audio-intro .lafete-audio-cta{font-family:Arial,sans-serif;font-size:10px;line-height:1;text-transform:uppercase;letter-spacing:.16em;border-bottom:1px solid rgba(255,255,255,.8);padding-bottom:6px}
  .lafete-mobile-audio-intro.is-leaving{opacity:0;transition:opacity .65s ease;pointer-events:none}
}

/* V90 — La Fête: hide the second project video on phone only */
@media (max-width: 600px){
  .la-fete-project .lafete-video-section{display:none!important;}
}

/* V91 — La Fête: compact 3D presentation on desktop */
@media (min-width:901px){
  .lafete-concept-renders{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.2vw,34px);width:min(1120px,calc(100% - 12vw));margin:0 auto;padding:clamp(42px,5vw,72px) 0 clamp(80px,8vw,120px)}
  .lafete-render{margin:0;min-width:0}
  .lafete-render img,.lafete-render-video{width:100%;height:clamp(190px,20vw,285px);object-fit:contain}
  .lafete-render figcaption{margin-top:10px;font-size:11px}
}


/* V92 — La Fête: centered 3D captions + sound-first desktop film */
@media (min-width:901px){
  .lafete-render figcaption{text-align:center}
  .lafete-video-section{position:relative}
  .lafete-desktop-audio-intro{display:flex;position:absolute;inset:0;z-index:4;align-items:center;justify-content:center;flex-direction:column;border:0;cursor:pointer;text-align:center;padding:28px;box-sizing:border-box;background:rgba(0,0,0,.34);color:#fff;-webkit-tap-highlight-color:transparent}
  .lafete-desktop-audio-intro span{display:block;text-shadow:0 1px 12px rgba(0,0,0,.35)}
  .lafete-desktop-audio-intro .lafete-audio-kicker{font-family:"Louize Display Trial",serif;font-size:clamp(34px,3.2vw,54px);line-height:1;margin-bottom:14px}
  .lafete-desktop-audio-intro .lafete-audio-copy{font-family:"Louize Display Trial",serif;font-size:clamp(18px,1.5vw,25px);line-height:1.15;margin-bottom:32px}
  .lafete-desktop-audio-intro .lafete-audio-cta{font-family:Arial,sans-serif;font-size:10px;line-height:1;text-transform:uppercase;letter-spacing:.16em;border-bottom:1px solid rgba(255,255,255,.8);padding-bottom:6px}
  .lafete-desktop-audio-intro.is-leaving{opacity:0;transition:opacity .65s ease;pointer-events:none}
}
@media (max-width:900px){.lafete-desktop-audio-intro{display:none!important}}


/* V94 — La Fête: iPhone tempo text between Couloir and Dancefloor 3D */
.lafete-tempo-text-mobile{display:none}
@media (max-width:600px){
  .lafete-tempo-text-mobile{display:block;grid-column:1/-1;margin:10px 0 42px;padding:0!important}
  .lafete-tempo-text-original{display:none!important}
}

/* V95 — La Fête: more breathing room before mobile tempo text */
@media (max-width:600px){
  .lafete-tempo-text-mobile{margin-top:34px}
}

/* V96 — iPhone navigation: spacious, readable editorial menu */
@media (max-width:700px){
  .site-header{z-index:80}
  .menu-toggle{z-index:83}
  .menu-panel{
    z-index:82;
    top:0;
    bottom:0;
    height:100svh;
    max-height:none!important;
    background:#F7F1E9;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .32s ease,visibility 0s linear .32s;
    display:flex;
    align-items:center;
    overflow:hidden;
  }
  .menu-panel.is-open{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transition:opacity .32s ease;
  }
  .menu-nav{
    width:100%;
    padding:88px 28px 54px;
    gap:0;
    font-family:"Louize Display Trial",serif;
    font-size:clamp(30px,9vw,42px);
    line-height:1.04;
    letter-spacing:-.015em;
    text-transform:none;
  }
  .menu-nav a{
    display:block;
    width:100%;
    padding:13px 0 15px;
  }
  .menu-nav a:after{bottom:9px;height:.7px;right:auto;width:0;transform:none;transition:width .25s ease}
  .menu-nav a[aria-current="page"]:after{width:28px}
  .menu-nav a:hover:after{width:28px}
  .menu-toggle[aria-expanded="true"]{position:fixed;top:38px;transform:translateY(-50%)}
}

/* V98 — Barbier des Voyeurs: responsive opening covers, no duplicate cover images */
.barbier-responsive-cover picture{display:block;width:100%;height:100%}
.barbier-responsive-cover picture img{display:block;width:100%;height:100%;object-fit:cover}
.barbier-single-portrait{min-height:90svh;display:flex;align-items:center;justify-content:center;padding:9vh 10vw;background:#F7F1E9;box-sizing:border-box}
.barbier-single-portrait img{display:block;width:auto;max-width:min(42vw,620px);height:auto;max-height:74svh;object-fit:contain}
@media(max-width:700px){
 .barbier-single-portrait{min-height:auto;padding:64px 28px 84px}
 .barbier-single-portrait img{max-width:100%;max-height:68svh}
}

/* V99 — Barbier des Voyeurs: device-specific image immediately after project intro */
.barbier-responsive-followup picture{display:block;width:100%}
.barbier-responsive-followup picture img{display:block;width:100%;height:auto;object-fit:contain}

/* V100 — Barbier des Voyeurs: desktop follow-up follows the editorial portrait rhythm */
@media (min-width:701px){
  .barbier-project .barbier-responsive-followup{
    min-height:100svh;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:10vh 10vw;
    box-sizing:border-box;
    background:#F7F1E9;
    overflow:visible;
  }
  .barbier-project .barbier-responsive-followup picture{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
  }
  .barbier-project .barbier-responsive-followup picture img{
    display:block;
    width:auto;
    max-width:min(42vw,620px);
    height:auto;
    max-height:74svh;
    object-fit:contain;
  }
}

/* V101 — Barbier des Voyeurs: Norman House editorial composition */
@media (min-width:701px){
  .barbier-project .barbier-editorial-pair{height:100svh;display:grid;grid-template-columns:1fr 1fr;background:#F7F1E9;overflow:hidden}
  .barbier-project .barbier-editorial-pair .editorial-pair-major{height:100%;overflow:hidden}
  .barbier-project .barbier-editorial-pair .editorial-pair-major picture{display:block;width:100%;height:100%}
  .barbier-project .barbier-editorial-pair .editorial-pair-major img{display:block;width:100%;height:100%;object-fit:cover}
  .barbier-project .barbier-editorial-pair .editorial-pair-minor{display:flex;align-items:center;justify-content:center;padding:9vh 12%;box-sizing:border-box}
  .barbier-project .barbier-editorial-pair .editorial-pair-minor img{display:block;width:auto;max-width:100%;height:auto;max-height:74svh;object-fit:contain}
}
@media (max-width:700px){
  .barbier-project .barbier-editorial-pair{display:block;height:auto;padding:0 0 72px;background:#F7F1E9;overflow:visible}
  .barbier-project .barbier-editorial-pair .editorial-pair-major{height:auto;overflow:visible}
  .barbier-project .barbier-editorial-pair .editorial-pair-major picture{display:block;width:100%;height:auto}
  .barbier-project .barbier-editorial-pair .editorial-pair-major img{display:block;width:100%;height:auto;object-fit:contain}
  .barbier-project .barbier-editorial-pair .editorial-pair-minor{padding:72px 42px 0;display:flex;justify-content:center}
  .barbier-project .barbier-editorial-pair .editorial-pair-minor img{display:block;width:auto;max-width:100%;height:auto;max-height:62svh;object-fit:contain}
}


/* V102 — INTERIORS desktop: subtle horizontal-scroll affordance */
@media (min-width:701px){
  .interiors-page .interiors-scroll-cue{
    position:fixed;
    right:clamp(18px,2vw,30px);
    top:50%;
    width:44px;
    height:44px;
    transform:translateY(-50%);
    z-index:20;
    pointer-events:none;
    display:flex;
    align-items:center;
    justify-content:center;
    opacity:.62;
    transition:opacity .45s ease;
  }
  .interiors-page .interiors-scroll-cue span{
    width:15px;
    height:15px;
    border-top:1px solid currentColor;
    border-right:1px solid currentColor;
    transform:rotate(45deg);
    animation:interiorsCue 1.8s cubic-bezier(.4,0,.2,1) infinite;
  }
  .interiors-page .interiors-scroll-cue.is-hidden{opacity:0}
  @keyframes interiorsCue{
    0%,100%{transform:translateX(-4px) rotate(45deg);opacity:.28}
    50%{transform:translateX(4px) rotate(45deg);opacity:1}
  }
}
@media (max-width:700px){.interiors-page .interiors-scroll-cue{display:none!important}}
@media (prefers-reduced-motion:reduce){.interiors-page .interiors-scroll-cue span{animation:none}}

/* V103 — INTERIORS desktop: clearly perceptible but editorial horizontal cue */
@media (min-width:701px){
  .interiors-page .interiors-scroll-cue{
    right:clamp(20px,2.2vw,36px);
    top:50%;
    width:42px;
    height:42px;
    border-radius:50%;
    background:rgba(247,241,233,.92);
    color:#111;
    opacity:1;
    box-shadow:0 0 0 1px rgba(17,17,17,.08);
    backdrop-filter:blur(4px);
    -webkit-backdrop-filter:blur(4px);
    transition:opacity .45s ease,transform .45s ease;
  }
  .interiors-page .interiors-scroll-cue span{
    width:10px;
    height:10px;
    border-top:1px solid currentColor;
    border-right:1px solid currentColor;
    animation:interiorsCueV103 1.65s cubic-bezier(.4,0,.2,1) infinite;
  }
  .interiors-page .interiors-scroll-cue.is-hidden{
    opacity:0;
    transform:translate(10px,-50%);
  }
  @keyframes interiorsCueV103{
    0%,100%{transform:translateX(-3px) rotate(45deg);opacity:.45}
    50%{transform:translateX(3px) rotate(45deg);opacity:1}
  }
}

/* V104 — INTERIORS desktop: non-clickable sliding gesture cue */
@media (min-width:701px){
  .interiors-page .interiors-scroll-cue{
    position:fixed;
    right:clamp(26px,3vw,52px);
    top:auto;
    bottom:clamp(26px,3.2vh,42px);
    width:78px;
    height:12px;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
    color:#111;
    opacity:.72;
    transform:none;
    display:block;
    overflow:hidden;
    pointer-events:none;
    transition:opacity .45s ease,transform .45s ease;
  }
  .interiors-page .interiors-scroll-cue::before{
    content:"";
    position:absolute;
    left:0;
    right:0;
    top:5px;
    height:1px;
    background:rgba(17,17,17,.28);
  }
  .interiors-page .interiors-scroll-cue span{
    position:absolute;
    left:0;
    top:3px;
    width:24px;
    height:5px;
    border:0;
    background:#111;
    transform:none;
    animation:interiorsSlideCueV104 2.1s cubic-bezier(.55,0,.25,1) infinite;
  }
  .interiors-page .interiors-scroll-cue.is-hidden{
    opacity:0;
    transform:translateY(4px);
  }
  @keyframes interiorsSlideCueV104{
    0%{transform:translateX(0);opacity:.28}
    18%{opacity:1}
    72%{transform:translateX(54px);opacity:1}
    100%{transform:translateX(54px);opacity:0}
  }
}
@media (prefers-reduced-motion:reduce){
  .interiors-page .interiors-scroll-cue span{animation:none;left:27px}
}
