/* Motion language — slow editorial easing, fade-rise reveals, masked image reveals,
   progress-timed hero, drawer menu, page fades. Original code. */
:root{
  --ease-out:cubic-bezier(.22,.61,.36,1);      /* soft decelerate */
  --ease-expo:cubic-bezier(.16,1,.3,1);        /* long, luxurious settle */
  --ease-io:cubic-bezier(.65,0,.35,1);
  --dur-xl:1.6s; --dur-l:1.1s; --dur-m:.6s; --dur-s:.35s;
}

/* Page enter / leave */
.page-veil{position:fixed;inset:0;z-index:200;background:var(--ivory);pointer-events:none;opacity:1;transition:opacity .7s var(--ease-out)}
.is-ready .page-veil{opacity:0}
.is-leaving .page-veil{opacity:1;transition-duration:.45s}
.no-js .page-veil{display:none}

/* Hero load-in */
.hero .hero-media{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hero .hero-media picture{position:absolute;inset:0}
.hero .hero-media img{width:100%;height:100%;object-fit:cover;transform:scale(1.12);transition:transform 2.4s var(--ease-expo)}
.is-ready .hero .hero-media img{transform:scale(1.02)}
.hero .hero-media{clip-path:inset(0 0 100% 0);transition:clip-path 1.5s var(--ease-expo)}
.is-ready .hero .hero-media{clip-path:inset(0 0 0 0)}
.line{display:block;overflow:hidden;padding-bottom:.08em}
.line>span{display:inline-block;transform:translateY(105%);transition:transform 1.2s var(--ease-expo)}
.is-ready .line>span{transform:none}
.hero .rise{opacity:0;transform:translateY(24px);transition:opacity 1s var(--ease-out),transform 1.2s var(--ease-expo)}
.is-ready .hero .rise{opacity:1;transform:none}
.hero [data-delay="1"],.hero [data-delay="1"]>span{transition-delay:.45s}
.hero [data-delay="2"],.hero [data-delay="2"]>span{transition-delay:.6s}
.hero [data-delay="3"]{transition-delay:.85s}
.hero [data-delay="4"]{transition-delay:1.05s}

/* Hero slideshow: crossfade + slow drift, progress bars timed to each slide */
.slides picture{opacity:0;transition:opacity 1.6s var(--ease-io)}
.slides picture.active{opacity:1}
.slides picture img{transform:scale(1.02)}
.slides picture.active img{transform:scale(1.1);transition:transform 9s linear}
.hero-progress{display:flex;gap:.5rem;margin-top:2.5rem;max-width:260px}
.hero-progress button{flex:1;height:22px;padding:0;background:none;border:0;cursor:pointer;position:relative}
.hero-progress button::before,.hero-progress button::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(255,255,255,.35)}
.hero-progress button::after{background:var(--champagne);transform:scaleX(0);transform-origin:left;height:2px;margin-top:-.5px}
.hero-progress button.active::after{transform:scaleX(1);transition:transform var(--slide-ms,7000ms) linear}
.hero-progress button.done::after{transform:scaleX(1)}

/* Scroll reveals */
.reveal{opacity:0;transform:translate3d(0,40px,0);transition:opacity var(--dur-l) var(--ease-out),transform var(--dur-xl) var(--ease-expo);transition-delay:calc(var(--i,0) * 110ms)}
.reveal.in{opacity:1;transform:none}
/* Masked image reveal: curtain wipes up, image settles from slight zoom */
.mask{overflow:hidden;clip-path:inset(100% 0 0 0);transition:clip-path 1.4s var(--ease-expo);transition-delay:calc(var(--i,0) * 120ms)}
.mask img{transform:scale(1.15);transition:transform 2s var(--ease-expo);transition-delay:calc(var(--i,0) * 120ms)}
.mask.in{clip-path:inset(0 0 0 0)}
.mask.in img{transform:scale(1)}
/* Gold rule draws in */
.rule{transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--ease-expo) .2s}
.center .rule{transform-origin:center}
.in .rule,.rule.in{transform:scaleX(1)}

/* Hover language */
.card img,.partner .ph img,.zoom img{transition:transform 1.4s var(--ease-expo)}
.card:hover img,.partner:hover .ph img,.zoom:hover img{transform:scale(1.05)}
.text-link{position:relative;border-bottom:0;padding-bottom:.4rem}
.text-link::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--bronze);transform-origin:right;transition:transform .7s var(--ease-expo)}
.text-link:hover::after{transform:scaleX(0);animation:redraw .9s var(--ease-expo) .15s forwards}
@keyframes redraw{0%{transform:scaleX(0);transform-origin:left}100%{transform:scaleX(1);transform-origin:left}}
.nav-links a{position:relative;border-bottom:0}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:right;transition:transform .6s var(--ease-expo)}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{transform:scaleX(1);transform-origin:left}
.btn{position:relative;overflow:hidden;z-index:0;transition:color .5s var(--ease-out),border-color .5s var(--ease-out)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;transform:translateY(101%);transition:transform .6s var(--ease-expo)}
.btn:hover::before{transform:none}
.btn-gold::before{background:var(--ivory)}
.btn-navy::before{background:var(--taupe-deep)}
.btn-ghost::before{background:var(--charcoal)}
.on-dark .btn-ghost::before{background:var(--ivory)}
.btn-gold:hover{background:var(--camel)}
.btn-navy:hover{background:var(--charcoal)}
.btn-ghost:hover{background:transparent}

/* Header hides on scroll down, returns on scroll up */
.site-header{transition:transform .6s var(--ease-expo),box-shadow .3s,background .3s}
.site-header.hide{transform:translateY(-100%)}

/* Full-screen menu overlay */
.menu-overlay{position:fixed;inset:0;z-index:60;background:var(--charcoal);color:var(--ivory);display:flex;flex-direction:column;visibility:hidden;clip-path:inset(0 0 100% 0);transition:clip-path .9s var(--ease-expo),visibility 0s linear .9s}
.menu-overlay.open{visibility:visible;clip-path:inset(0 0 0 0);transition:clip-path .9s var(--ease-expo),visibility 0s}
.menu-overlay .mo-top{display:flex;justify-content:space-between;align-items:center;height:var(--nav-h);padding:0 var(--pad)}
.menu-overlay .mo-top span{font:500 .8rem/1 var(--caps);letter-spacing:.28em;text-transform:uppercase;color:var(--champagne)}
.menu-close{width:48px;height:48px;border:1px solid rgba(217,202,176,.45);background:none;color:var(--ivory);cursor:pointer;display:grid;place-items:center}
.menu-close svg{width:20px;height:20px}
.menu-overlay ul{list-style:none;margin:0;padding:1rem var(--pad);flex:1;overflow:auto}
.menu-overlay li{overflow:hidden;border-bottom:1px solid rgba(217,202,176,.18)}
.menu-overlay li a{display:block;padding:.8rem 0;font:500 clamp(1.7rem,6vw,2.6rem)/1.15 var(--serif);color:var(--ivory);text-decoration:none;transform:translateY(110%);transition:transform .9s var(--ease-expo),color .3s}
.menu-overlay li a:hover{color:var(--champagne)}
.menu-overlay.open li a{transform:none;transition-delay:calc(.25s + var(--i,0) * 60ms)}
.menu-overlay .mo-foot{padding:1.25rem var(--pad) 2rem;display:grid;gap:.75rem;opacity:0;transition:opacity .6s var(--ease-out)}
.menu-overlay.open .mo-foot{opacity:1;transition-delay:.7s}
.menu-overlay .mo-foot a{color:var(--mist-2)}
body.menu-open{overflow:hidden}

/* Brand marquee */
.marquee{overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--dove);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-track{display:flex;width:max-content;animation:marquee 60s linear infinite}
.marquee:hover .marquee-track,.marquee:focus-within .marquee-track{animation-play-state:paused}
.marquee ul{display:flex;align-items:center;list-style:none;margin:0;padding:0}
.marquee li{padding:2rem clamp(1.5rem,3vw,2.75rem);display:grid;place-items:center}
.marquee img{height:64px;width:auto;max-width:180px;object-fit:contain;filter:grayscale(1);opacity:.8;transition:filter .5s,opacity .5s}
.marquee li:hover img{filter:none;opacity:1}
@keyframes marquee{to{transform:translateX(-50%)}}

/* Reduced motion: everything visible, no movement */
@media (prefers-reduced-motion: reduce){
  .page-veil{display:none}
  .hero .hero-media,.mask{clip-path:none!important}
  .hero .hero-media img,.mask img,.slides picture.active img{transform:none!important}
  .line>span,.hero .rise,.reveal{transform:none!important;opacity:1!important}
  .rule{transform:none}
  .marquee-track{animation:none;flex-wrap:wrap;width:auto;justify-content:center}
  .marquee-track ul[aria-hidden]{display:none}
  .marquee ul{flex-wrap:wrap;justify-content:center}
  .menu-overlay,.menu-overlay li a{transition:none!important}
}
.no-js .reveal,.no-js .line>span,.no-js .hero .rise{opacity:1;transform:none}
.no-js .mask,.no-js .hero .hero-media{clip-path:none}
.no-js .mask img{transform:none}

/* ---------- Velvet curtain intro v2 (home, first load per session) ----------
   Hidden unless the inline head script set .curtain-on (JS on, not seen this session, motion allowed).
   The closed curtain paints from CSS alone. main.js then splits each drape into vertical fold strips and
   runs a small spring/damper simulation (requestAnimationFrame) that writes only transform + opacity:
   the leading edge pulls first, outer folds follow, the hem lags the rail and sways, folds compress and
   darken as they gather into framing swags at the screen edges, a sheen travels across the folds.
   Hard fallback: if JS never takes over, the curtain fades away by itself at 6s and never blocks the page. */
.curtain{display:none}
.curtain-on .curtain{display:block;position:fixed;left:0;right:0;top:0;height:100vh;height:-webkit-fill-available;height:100dvh;
  z-index:300;overflow:hidden;cursor:pointer;touch-action:none;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;
  -webkit-user-select:none;user-select:none;opacity:1;transition:opacity .5s ease;animation:c-fail .45s linear 6s forwards}
.curtain.c-out{opacity:0;pointer-events:none}
.curtain-on .page-veil{display:none}
.curtain-on .hero .hero-media{clip-path:none;transition:none}
@keyframes c-fail{to{opacity:0;visibility:hidden;pointer-events:none}}
/* a drape: the right one is the left one mirrored (static transform, never animated) */
.cd{position:absolute;top:0;bottom:-2%;left:0;width:50.5%;-webkit-transform:translateZ(0);transform:translateZ(0)}
.cd-r{left:auto;right:0;-webkit-transform:scaleX(-1) translateZ(0);transform:scaleX(-1) translateZ(0)}
.cd,.cs{background:
    linear-gradient(var(--champagne),var(--champagne)) left 0 bottom 5%/100% 1px no-repeat,
    linear-gradient(180deg,rgba(236,214,186,.10) 0%,rgba(236,214,186,0) 20%,rgba(20,13,8,0) 66%,rgba(20,13,8,.55) 100%),
    linear-gradient(90deg,#1d140e 0%,#382820 16%,#5b4437 40%,#4a372c 60%,#2b1e16 84%,#1d140e 100%)}
.cd{background-size:100% 1px,100% 100%,var(--fold,clamp(38px,2rem + 4vw,104px)) 100%;background-repeat:no-repeat,no-repeat,repeat-x}
.cd.built{background:none}
.cs{position:absolute;top:0;left:0;height:100%;-webkit-transform-origin:0 0;transform-origin:0 0;will-change:transform;
  -webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}
.cs:nth-child(3n+1){background:
    linear-gradient(var(--champagne),var(--champagne)) left 0 bottom 5%/100% 1px no-repeat,
    linear-gradient(180deg,rgba(236,214,186,.08) 0%,rgba(236,214,186,0) 22%,rgba(20,13,8,0) 64%,rgba(20,13,8,.58) 100%),
    linear-gradient(90deg,#1b120c 0%,#33251d 22%,#533e32 48%,#3f2f25 70%,#24180f 100%)}
.cs>i,.cs>b{position:absolute;inset:0;opacity:0;will-change:opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}
.cs>i{background:linear-gradient(90deg,rgba(12,8,5,.85) 0%,rgba(12,8,5,.15) 38%,rgba(12,8,5,0) 52%,rgba(12,8,5,.25) 70%,rgba(12,8,5,.9) 100%)}  /* compression shade */
.cs>b{background:linear-gradient(90deg,rgba(255,236,210,0) 18%,rgba(255,236,210,.20) 42%,rgba(255,236,210,0) 66%)}                   /* travelling sheen */
.cs.lead::after{content:"";position:absolute;top:0;bottom:0;right:0;width:2px;background:linear-gradient(180deg,var(--champagne),#B79F7C 50%,var(--champagne))}
.c-shadow{position:absolute;top:0;bottom:0;left:0;width:clamp(24px,4vw,60px);opacity:0;will-change:transform,opacity;pointer-events:none;
  background:linear-gradient(90deg,rgba(18,12,8,.55),rgba(18,12,8,.18) 45%,rgba(18,12,8,0))}
/* pelmet / valance with champagne trim; the drapes hang from behind it */
.c-pelmet{position:absolute;left:0;right:0;top:0;z-index:3;height:clamp(26px,4.4vh,56px);
  background:linear-gradient(180deg,#2a1d15 0%,#4a372c 38%,#3a2a21 72%,#1d140e 100%);
  box-shadow:0 6px 14px -6px rgba(10,6,4,.7)}
.c-pelmet::before,.c-pelmet::after{content:"";position:absolute;left:0;right:0;height:1px;background:var(--champagne)}
.c-pelmet::before{bottom:5px;opacity:.55}.c-pelmet::after{bottom:0;height:2px;background:linear-gradient(90deg,#B79F7C,var(--champagne) 50%,#B79F7C)}
.c-mark{position:absolute;left:50%;top:50%;z-index:2;display:grid;justify-items:center;gap:clamp(1rem,2vw,1.6rem);
  -webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);will-change:transform,opacity;animation:c-mark-in .4s ease-out .05s both}
.c-mark img{width:clamp(150px,8rem + 16vw,400px);height:auto}
.c-rule{display:block;width:clamp(64px,8vw,120px);height:1px;background:var(--champagne);opacity:.8}
@keyframes c-mark-in{from{opacity:0}to{opacity:1}}
html.curtain-lock,html.curtain-lock body{overflow:hidden}
@media (prefers-reduced-motion:reduce){.curtain{display:none!important}}
.c-mark::before{content:"";position:absolute;left:-25%;right:-25%;top:-35%;bottom:-35%;z-index:-1;background:radial-gradient(closest-side,rgba(18,12,8,.5),rgba(18,12,8,0))}
