/* Native reading stays available for text taller than a scene or menu. */
.has-local-scroll .immersive{align-items:safe flex-end}
.menu-surface{overflow-y:auto;overscroll-behavior:contain}
/* An unavailable decorative image never replaces or hides the text. */
.has-image-fallback .scene-media{background:var(--mineral)}
/* Text and image travel together in the same 500 ms panel cover. */
/* Both paragraphs retain their space, keeping Culture's title and image still. */
.culture-is-sequenced [data-culture-copy]{align-items:start}
/* Match the transparent word box to the existing 148 by 33 SVG viewport.
   The source A1 paths, timing and SVG proportions stay untouched. */
.kso-voile .kso-nom{aspect-ratio:148/33}

/* Saint Laurent local panel and veil timing. The header remains a separate layer. */
.landing-menu{isolation:isolate;background:transparent;--panel-height:560px}
.landing-menu:before{content:'';position:fixed;inset:0 0 auto;height:100dvh;max-height:var(--header);opacity:0;visibility:hidden;background:rgba(252,250,247,.9);backdrop-filter:blur(10px);z-index:-1;transition:max-height .3s cubic-bezier(.25,.1,.25,1),opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s .3s}
.landing-menu:after{content:'';position:fixed;inset-inline:0;top:var(--header);bottom:0;background:rgba(239,239,239,.6);opacity:0;visibility:hidden;pointer-events:none;z-index:-1;transition:visibility 0s .51s,opacity .5s cubic-bezier(.25,.1,.25,1),top .3s cubic-bezier(.25,.1,.25,1)}
.landing-menu.menu-is-visible:before{max-height:var(--panel-height);opacity:1;visibility:visible;transition:max-height .3s cubic-bezier(.25,.1,.25,1),opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s}
.landing-menu.menu-is-visible:after{top:var(--panel-height);opacity:1;visibility:visible;transition:opacity 1s cubic-bezier(.25,.1,.25,1) .3s,top .3s cubic-bezier(.25,.1,.25,1),visibility 0s}
.menu-surface{position:relative;background:transparent;min-height:min(560px,100dvh)}
[data-menu-group],.menu-languages{position:relative;opacity:0;visibility:hidden;transition:opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s .3s}
[data-menu-group].menu-group-visible,.menu-is-visible .menu-languages{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(.25,.1,.25,1) .2s,visibility 0s .2s}
[data-menu-group].menu-group-outgoing{position:absolute;left:var(--gutter);right:var(--gutter);opacity:0;visibility:hidden;transition:opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s .3s}
.menu-is-closing [data-menu-group],.menu-is-closing .menu-languages{opacity:0;visibility:hidden;transition:opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s .3s}
@media(min-width:700px){
  /* Clip the content as the panel retracts, keeping its measured destination height. */
  .menu-surface{clip-path:inset(0 0 max(0px,calc(100% - var(--header))) 0);transition:clip-path .3s cubic-bezier(.25,.1,.25,1)}
  .menu-is-visible .menu-surface{clip-path:inset(0 0 0 0)}
}
@media(max-width:699px){
  .menu-surface{height:100dvh;min-height:0;display:flex;flex-direction:column}
  .menu-surface>[data-menu-group],.menu-back,.menu-languages{flex-shrink:0}
  /* Free space keeps the language links low; long menus retain native scrolling. */
  .menu-languages{margin-top:auto;padding-top:40px}
  .landing-menu:before,.landing-menu.menu-is-visible:before{max-height:100dvh}
  .landing-menu:after{display:none}
  .mobile-menu-toggle path{transform-box:view-box;transform-origin:12px 12px;transition:transform .3s cubic-bezier(.25,.1,.25,1)}
  .menu-is-open .burger-line-first{transform:rotate(45deg) translateY(4px)}
  .menu-is-open .burger-line-last{transform:rotate(-45deg) translateY(-4px)}
}
@media(prefers-reduced-motion:reduce){
  .landing-menu:before,.landing-menu:after,.menu-surface,[data-menu-group],[data-menu-group].menu-group-visible,[data-menu-group].menu-group-outgoing,.menu-is-closing [data-menu-group],.menu-languages,.menu-is-visible .menu-languages,.menu-is-closing .menu-languages,.mobile-menu-toggle path{transition:none}
}

/* The observed menu hover returns to full opacity after the pointer leaves. */
.desktop-navigation button,.landing-menu a,.landing-menu button{opacity:1;transition:color 250ms linear,opacity 250ms linear}
.desktop-navigation button:hover,.landing-menu a:hover,.landing-menu button:hover{opacity:.6}
@media(prefers-reduced-motion:reduce){.desktop-navigation button,.landing-menu a,.landing-menu button{transition:none}}

/* Back follows the group fade and leaves the flow while the root returns. */
.landing-menu button.menu-back{position:relative;opacity:0;visibility:hidden;transition:opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s .3s}
.landing-menu button.menu-back-visible{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(.25,.1,.25,1) .2s,visibility 0s .2s}
.landing-menu button.menu-back-visible:hover{opacity:.6}
.landing-menu button.menu-back-outgoing{position:absolute;left:var(--gutter);right:var(--gutter);opacity:0;visibility:hidden;transition:opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s .3s}
.landing-menu.menu-is-closing button.menu-back{opacity:0;visibility:hidden;transition:opacity .3s cubic-bezier(.25,.1,.25,1),visibility 0s .3s}
@media(prefers-reduced-motion:reduce){.landing-menu button.menu-back,.landing-menu button.menu-back-visible:hover,.landing-menu.menu-is-closing button.menu-back{transition:none}}
