/* ==========================================================
   Wellness Hotel & Spa — Tashkent
   ========================================================== */
:root{
  --night:#0B0E16; --night-2:#111624; --night-3:#182033;
  --ivory:#EDE6DA; --ivory-2:#E3DACB; --ink:#16130F; --ink-2:#5C554A;
  --cream:#EEE6D8; --mute:#B9B2A6; --dim:#8E877B;
  --brass:#C2A06A; --brass-2:#D9BD8C;
  --line:rgba(238,230,216,.14); --line-d:rgba(22,19,15,.14);
  --serif:"Spectral", "Times New Roman", serif;
  --serif-i:"Spectral", "Times New Roman", serif;
  --sans:"Jost", system-ui, sans-serif;
  --ease:cubic-bezier(.19,1,.22,1);
  --ease-io:cubic-bezier(.77,0,.18,1);
  --gut:clamp(18px,4vw,72px);
  --nav-h:88px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{background:var(--night);color:var(--cream);font:400 18px/1.6 var(--sans);overflow-x:clip;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
ul,ol{list-style:none}
em{font-style:italic}
::selection{background:var(--brass);color:var(--night)}
.is-loading{overflow:hidden}
:focus-visible{outline:1px solid var(--brass);outline-offset:4px}

main{counter-reset:sec}
.eyebrow{font:italic 300 16px/1.4 var(--serif-i);letter-spacing:0;color:var(--mute)}
main section .eyebrow:first-child::before,main .floors-text .eyebrow::before,main .rooms-head .eyebrow::before,main .wall-head .eyebrow::before{counter-increment:sec;content:counter(sec,decimal-leading-zero);font:500 11px var(--sans);font-style:normal;letter-spacing:.14em;color:var(--brass);margin-right:14px;vertical-align:2px}
.cap{margin-top:14px;font:italic 300 14px var(--serif-i);color:var(--dim)}
.cap::before{content:"— ";color:var(--brass)}
.intro-pic .ph,.intro-pic2 .ph{width:100%;height:100%}
.kicker{font:italic 300 17px/1.4 var(--serif-i)}

/* reveal primitives */
.m{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.m>span{display:block;transform:translate3d(0,108%,0);transition:transform 1.6s var(--ease)}
.m.in>span{transform:none}
.rv{opacity:0;transform:translate3d(0,24px,0);transition:opacity 1.4s var(--ease),transform 1.4s var(--ease)}
.rv.in{opacity:1;transform:none}
.reveal{overflow:hidden;clip-path:inset(18% 0 0 0);transition:clip-path 1.8s var(--ease)}
.reveal img{transform:scale(1.18);transition:transform 2.4s var(--ease)}
.reveal.in{clip-path:inset(0)}
.reveal.in img{transform:scale(1.04)}

/* buttons */
.btn-line{position:relative;display:inline-flex;align-items:center;gap:16px;padding:10px 0;font:500 13px/1 var(--sans);letter-spacing:.06em;color:inherit}
.btn-line::after{content:"";width:46px;height:1px;background:currentColor;transform-origin:left;transition:width .8s var(--ease)}
.btn-line:hover::after{width:84px}
.btn-line span{position:relative}
.btn-solid{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:19px 36px;background:var(--brass);color:var(--night);
  font:600 13px/1 var(--sans);letter-spacing:.08em;overflow:hidden;isolation:isolate}
.btn-solid::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--brass-2);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.btn-solid:hover::before{transform:scaleX(1)}
.btn-solid.wide{width:100%}
.link{font:500 11px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;border-bottom:1px solid var(--brass);padding-bottom:7px}

/* ---------- loader ---------- */
.loader{position:fixed;inset:0;z-index:200;background:var(--night);color:var(--cream);transition:background-color .8s var(--ease)}
.loader.open{background-color:transparent}
.loader.gone{opacity:0;visibility:hidden;transition:opacity .9s var(--ease),visibility .9s}
.ld-top{position:absolute;left:var(--gut);right:var(--gut);top:30px;display:flex;justify-content:space-between;font:500 11px var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--mute);transition:opacity .6s}
.ld-count{position:absolute;left:var(--gut);bottom:calc(var(--gut) - 14px);font:300 clamp(90px,16vw,280px)/.8 var(--serif);font-variant-numeric:tabular-nums;letter-spacing:-.04em;transition:opacity .6s,transform 1s var(--ease)}
.loader.open .ld-top,.loader.open .ld-count{opacity:0}
.loader.open .ld-count{transform:translateY(30px)}
.ld-stack{position:absolute;left:50%;top:50%;width:clamp(180px,20vw,300px);height:clamp(240px,26.6vw,400px);transform:translate(-50%,-50%)}
.ld-stack img{position:absolute;inset:0;opacity:0;transform:scale(.86) rotate(var(--r,0deg));border-radius:999px 999px 0 0/40% 40% 0 0;transition:opacity .5s var(--ease),transform .9s var(--ease)}
.ld-stack img.on{opacity:1;transform:scale(1) rotate(var(--r,0deg))}
.ld-stack.full{left:50%;top:50%;width:100vw;height:100vh;height:100svh;transform:translate(-50%,-50%);transition:width 1.4s var(--ease-io),height 1.4s var(--ease-io),left 1.4s var(--ease-io),top 1.4s var(--ease-io),transform 1.4s var(--ease-io)}
.ld-stack.grow img:last-child{transform:none;border-radius:0;transition:border-radius 1.4s var(--ease-io),transform 1.4s var(--ease-io)}
.ld-stack.grow img:not(:last-child){opacity:0;transition:opacity .4s}

/* chars & words */
.chars{display:inline-block;white-space:nowrap}
.chars .c{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.chars .c>i{display:inline-block;font-style:inherit;transform:translate3d(0,105%,0);transition:transform 1.6s var(--ease)}
.chars.in .c>i{transform:none}
.words .w{opacity:.14;transition:opacity .6s var(--ease)}
.words .w.on{opacity:1}
.gl-scene{position:fixed;inset:0;width:100vw;height:100vh;z-index:4;pointer-events:none}
.gl-hide{opacity:0!important}
.gl-scene-on .reveal,.gl-scene-on .card-pic{clip-path:none}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto 0;z-index:100;height:var(--nav-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 var(--gut);
  transition:transform 1s var(--ease),background-color .8s var(--ease),height .8s var(--ease)}
.nav::after{content:"";position:absolute;left:var(--gut);right:var(--gut);bottom:0;height:1px;background:var(--line);transform:scaleX(0);transition:transform 1.2s var(--ease)}
.nav.solid{background-color:rgba(11,14,22,.86);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);height:70px}
.nav.solid::after{transform:scaleX(1)}
.nav.hide{transform:translateY(-100%)}
.nav-l{display:flex;gap:34px;font:500 13px var(--sans);letter-spacing:.06em}
.nav-l a{position:relative;opacity:.8;transition:opacity .4s}
.nav-l a:hover{opacity:1}
.nav-l a::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:1px;background:var(--brass);transform:scaleX(0);transform-origin:right;transition:transform .8s var(--ease)}
.nav-l a:hover::after{transform:scaleX(1);transform-origin:left}
.nav-mark{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--brass)}
.nav-mark svg{width:28px;height:28px}
.nav-mark span{font:400 11px var(--sans);letter-spacing:.56em;text-transform:uppercase;color:var(--cream);margin-right:-.56em}
.nav.solid .nav-mark span{display:none}
.nav-r{justify-self:end;display:flex;align-items:center;gap:28px}
.lang{display:flex;gap:2px;font:500 10px var(--sans);letter-spacing:.16em}
.lang button{padding:6px 7px;opacity:.45;transition:opacity .4s;position:relative}
.lang button:hover{opacity:.85}
.lang button.on{opacity:1}
.lang button.on::after{content:"";position:absolute;left:7px;right:7px;bottom:1px;height:1px;background:var(--brass)}
.nav .btn-line{padding:12px 20px;border:1px solid var(--line)}
.nav .btn-line::after{display:none}
.nav .btn-line:hover{border-color:var(--brass)}
.burger{display:none;align-items:center;gap:12px;font:500 11px var(--sans);letter-spacing:.22em;text-transform:uppercase}
.burger-i{position:relative;width:26px;height:12px}
.burger-i i{position:absolute;left:0;right:0;height:1px;background:currentColor;transition:transform .8s var(--ease),top .8s var(--ease)}
.burger-i i:first-child{top:2px}.burger-i i:last-child{top:9px}
.menu-open .burger-i i:first-child{top:6px;transform:rotate(45deg)}
.menu-open .burger-i i:last-child{top:6px;transform:rotate(-45deg)}
.sheet{position:fixed;inset:0;z-index:90;background:var(--night-2);padding:calc(var(--nav-h) + 30px) var(--gut) calc(26px + env(safe-area-inset-bottom));display:flex;flex-direction:column;justify-content:space-between;
  clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--ease-io);visibility:hidden}
.menu-open .sheet{clip-path:inset(0);visibility:visible}
.sheet nav a{display:block;overflow:hidden;font:300 clamp(36px,10vw,56px)/1.18 var(--serif);border-bottom:1px solid var(--line);padding:6px 0}
.sheet nav a span{display:inline-block;transform:translateY(110%);transition:transform 1.1s var(--ease)}
.menu-open .sheet nav a span{transform:none}
.menu-open .sheet nav a:nth-child(2) span{transition-delay:.05s}.menu-open .sheet nav a:nth-child(3) span{transition-delay:.1s}.menu-open .sheet nav a:nth-child(4) span{transition-delay:.15s}.menu-open .sheet nav a:nth-child(5) span{transition-delay:.2s}.menu-open .sheet nav a:nth-child(6) span{transition-delay:.25s}
.sheet-foot{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--mute)}

/* ---------- hero ---------- */
.hero{position:relative;height:230vh}
.hero-stick{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.hero-media{position:absolute;inset:0;clip-path:var(--clip,inset(0));background:#05070B;will-change:clip-path}
.hero-media canvas,.hero-fallback{position:absolute;inset:0;width:100%;height:100%}
.hero-gl .hero-fallback{display:none}
.hero-fallback{transform:scale(calc(1.06 + var(--e,0)*.06));animation:heroDrift 22s linear infinite alternate}
@keyframes heroDrift{from{object-position:50% 50%}to{object-position:46% 52%}}
.hero-media canvas{transform:scale(calc(1 + var(--e,0)*.08))}
.hero-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(11,14,22,.55) 0%,rgba(11,14,22,0) 26%,rgba(11,14,22,0) 48%,rgba(11,14,22,.82) 100%);opacity:calc(1 - var(--e,0))}
.hero-copy{position:absolute;left:var(--gut);right:var(--gut);bottom:clamp(110px,16vh,180px);opacity:calc(1 - var(--e,0)*2.2);transform:translate3d(0,calc(var(--e,0)*-60px),0)}
.hero-copy .kicker{color:var(--mute);margin-bottom:22px}
.hero-title{font:300 clamp(64px,14vw,270px)/.86 var(--serif);letter-spacing:-.04em;margin-left:-.05em;display:flex;flex-direction:column}
.hero-title .sub>span{font:300 italic .3em/1 var(--serif-i);letter-spacing:0;margin:.22em 0 0 .16em;transition-delay:.5s}
.hero-sub{max-width:420px;margin-top:26px;color:var(--mute);font-size:15px}
.hero-sub>span{transition-delay:.18s}
.slides{position:absolute;left:var(--gut);bottom:clamp(30px,5vh,52px);display:flex;gap:26px;opacity:calc(1 - var(--e,0)*3)}
.slides button{display:grid;grid-template-columns:auto auto;gap:4px 10px;align-items:baseline;text-align:left;font:500 10px var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--dim);transition:color .5s}
.slides small{font-size:10px}
.slides i{grid-column:1/-1;display:block;width:96px;height:1px;background:var(--line);position:relative;overflow:hidden;margin-top:6px}
.slides i::after{content:"";position:absolute;inset:0;background:var(--cream);transform:scaleX(0);transform-origin:left}
.slides .on button{color:var(--cream)}
.slides .on i::after{animation:slidebar 8s linear forwards}
@keyframes slidebar{to{transform:scaleX(1)}}
.quick{position:absolute;right:var(--gut);bottom:clamp(30px,5vh,52px);display:grid;grid-template-columns:repeat(3,auto) auto;align-items:stretch;
  background:rgba(11,14,22,.55);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--line);
  opacity:calc(1 - var(--e,0)*3);transition:opacity .6s}
.quick label{display:flex;flex-direction:column;justify-content:center;padding:14px 26px;border-right:1px solid var(--line);font:500 10px var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--dim);min-width:150px}
.quick input,.quick select{background:none;border:0;outline:none;color:var(--cream);font:300 18px var(--serif);letter-spacing:0;text-transform:none;margin-top:4px;color-scheme:dark;appearance:none;-webkit-appearance:none}
.quick select option{background:var(--night-2)}
.quick button{padding:0 30px;background:var(--brass);color:var(--night);font:500 11px var(--sans);letter-spacing:.22em;text-transform:uppercase;transition:background .6s}
.quick button:hover{background:var(--brass-2)}
.flank{position:absolute;top:50%;width:calc((100vw - min(32vw,520px))/2 - var(--gut)*1.6);font:300 clamp(26px,2.6vw,46px)/1.1 var(--serif-i);font-style:italic;color:var(--cream);
  opacity:clamp(0,calc((var(--e,0) - .6)*3),1);transform:translate3d(0,calc(-50% + (1 - var(--e,0))*40px),0)}
.flank-l{left:var(--gut);text-align:right}
.flank-r{right:var(--gut)}

/* ---------- intro ---------- */
.intro{padding:clamp(130px,15vw,240px) var(--gut) clamp(30px,4vw,60px);display:grid;grid-template-columns:repeat(12,1fr);column-gap:20px}
.intro .eyebrow{grid-column:1/4;padding-top:16px}
.intro-text{grid-column:4/13;max-width:44ch;font:300 clamp(28px,3.4vw,58px)/1.18 var(--serif);letter-spacing:-.005em}
.intro-text em{color:var(--brass-2)}
.stats{grid-column:4/13;display:grid;grid-template-columns:repeat(4,1fr);margin-top:clamp(64px,7vw,110px);border-top:1px solid var(--line)}
.stat{padding:26px 24px 0 0}
.stat b{display:block;font:300 clamp(44px,4.6vw,80px)/1 var(--serif);font-variant-numeric:lining-nums tabular-nums}
.stat span{display:block;margin-top:10px;font-size:13px;color:var(--mute);line-height:1.5}
.stat:nth-child(2){transition-delay:.08s}.stat:nth-child(3){transition-delay:.16s}.stat:nth-child(4){transition-delay:.24s}
.intro-pic{grid-column:1/9;margin-top:clamp(80px,10vw,160px);aspect-ratio:16/10}
.intro-pic2{grid-column:10/13;aspect-ratio:3/4;align-self:end;margin-bottom:-8vw}

/* ---------- building ---------- */
.floors{position:relative;height:480vh}
.floors-stick{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;display:grid;grid-template-columns:4fr 6fr;grid-template-rows:minmax(0,1fr);align-items:center;padding:0 var(--gut);gap:3vw}
.floors-title{font:300 clamp(46px,5.4vw,96px)/.98 var(--serif);margin:22px 0 46px;letter-spacing:-.01em}
.floors-list{border-top:1px solid var(--line)}
.floors-list li{border-bottom:1px solid var(--line);color:var(--mute);transition:color .6s var(--ease)}
.floors-list li.on,.floors-list li:hover,.floors-list li:focus-within{color:var(--cream)}
.floors-list button{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:22px 0;width:100%;text-align:left}
.floors-list small{font:500 11px var(--sans);letter-spacing:.08em;color:var(--brass);padding-top:8px;font-variant-numeric:tabular-nums}
.floors-list b{display:block;font:300 clamp(22px,1.8vw,30px)/1.15 var(--serif);font-weight:300}
.floors-list .floor-desc{display:block;max-height:0;overflow:hidden;color:var(--mute);font-size:14px;line-height:1.6;transition:max-height 1.1s var(--ease),margin .9s var(--ease)}
.floors-list li.on .floor-desc{max-height:140px;margin-top:10px}
.floors-scene{position:relative;height:100%;min-height:0}

/* ---------- section titles ---------- */
.sec-title{font:300 clamp(48px,6.2vw,116px)/.95 var(--serif);letter-spacing:-.015em}

/* ---------- rooms (horizontal) ---------- */
.rooms{position:relative;height:420vh}
.rooms-stick{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:4vh;padding-top:var(--nav-h)}
.rooms-head{display:flex;justify-content:space-between;align-items:flex-end;padding:0 var(--gut);gap:30px}
.rooms-head .sec-title{margin-top:14px}
.rooms-meta{text-align:right;color:var(--mute);font-size:14px}
.rooms-bar{width:220px;height:1px;background:var(--line);margin-top:14px;margin-left:auto;overflow:hidden}
.rooms-bar i{display:block;height:100%;background:var(--brass);transform-origin:left;transform:scaleX(var(--rp,0))}
.rooms-track{display:flex;gap:6vw;padding:0 var(--gut);will-change:transform}
.room{flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:3vw;align-items:end;width:min(76vw,1180px)}
.room-pic{height:min(60vh,640px);overflow:hidden;border-radius:50% 50% 0 0/20% 20% 0 0}
.room-n{font:500 11px var(--sans);letter-spacing:.24em;color:var(--brass)}
.room h3{font:300 clamp(36px,3.4vw,62px)/1 var(--serif);margin:16px 0 18px;letter-spacing:-.01em}
.room p{color:var(--mute);font-size:15px}
.room dl{display:grid;grid-template-columns:auto 1fr;gap:10px 26px;margin:26px 0 30px;padding-top:20px;border-top:1px solid var(--line);font-size:13px}
.room dt{color:var(--dim)}

/* ---------- spa ---------- */
.spa{position:relative;min-height:115vh;display:flex;align-items:center;overflow:hidden}
.water{position:absolute;inset:0}
.water canvas,.water .gl-fallback{position:absolute;inset:0;width:100%;height:100%}
.gl-ready>.gl-fallback{display:none}
.spa::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(8,10,16,.86) 0%,rgba(8,10,16,.55) 34%,rgba(8,10,16,0) 64%),linear-gradient(var(--night),transparent 18%,transparent 82%,var(--night))}
.spa-copy{position:relative;z-index:2;padding:0 var(--gut);max-width:calc(560px + var(--gut)*2)}
.spa-title{font:300 clamp(50px,6vw,112px)/.95 var(--serif);margin:22px 0 28px;letter-spacing:-.015em}
.spa-text{color:var(--mute);max-width:44ch}
.spa-list{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;margin:36px 0 44px;max-width:440px;border-top:1px solid var(--line)}
.spa-list li{padding:11px 0;border-bottom:1px solid var(--line);font:300 17px var(--serif)}
.gallery{padding:clamp(70px,8vw,120px) 0 clamp(90px,10vw,160px)}
.gal-track{display:flex;gap:clamp(14px,2vw,28px);overflow-x:auto;padding:0 var(--gut);scroll-snap-type:x mandatory;scrollbar-width:none;cursor:grab;-webkit-overflow-scrolling:touch}
.gal-track::-webkit-scrollbar{display:none}
.gal-track.drag{cursor:grabbing;scroll-snap-type:none}
.gal-track figure{flex:0 0 clamp(250px,25vw,420px);scroll-snap-align:start}
.gp{aspect-ratio:3/4;overflow:hidden;border-radius:50% 50% 0 0 / 30% 30% 0 0}
.gp img{transition:transform 1.8s var(--ease);pointer-events:none}
.gal-track figure:hover .gp img{transform:scale(1.05)}
.gal-track figcaption{display:flex;gap:16px;align-items:baseline;margin-top:18px;font-size:14px}
.gal-track figcaption small{font:500 10px var(--sans);letter-spacing:.2em;color:var(--brass)}

/* ---------- dine (light) ---------- */
.dine{background:var(--ivory);color:var(--ink);padding:clamp(110px,13vw,200px) var(--gut)}
.dine .eyebrow{color:#8A6A3A}
.dine-grid{display:grid;grid-template-columns:repeat(12,1fr);column-gap:20px;align-items:start}
.dine-a{grid-column:1/8;aspect-ratio:4/3.2}
.dine-copy{grid-column:9/13;padding-top:4vw}
.dine-title{font:300 clamp(56px,6.4vw,120px)/.92 var(--serif);margin:22px 0 28px;letter-spacing:-.015em}
.dine-copy p:not(.eyebrow){color:var(--ink-2);max-width:44ch}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:30px 0 40px}
.chips li{padding:9px 16px;border:1px solid var(--line-d);font-size:13px}
.dine .btn-line::before{background:var(--ink)}
.dine .btn-line:hover{color:var(--ink)}
.dine-b{grid-column:5/9;aspect-ratio:4/3;margin-top:-7vw;position:relative;z-index:2;box-shadow:0 40px 80px -40px rgba(22,19,15,.5)}

/* ---------- meet ---------- */
.meet{display:grid;grid-template-columns:7fr 5fr;gap:5vw;align-items:center;padding:clamp(110px,12vw,190px) var(--gut)}
.meet-pic{aspect-ratio:16/11}
.meet-copy .sec-title{margin:22px 0 28px}
.meet-copy p:not(.eyebrow){color:var(--mute);margin-bottom:40px;max-width:44ch}

/* ---------- wall ---------- */
.wall{position:relative;padding:clamp(110px,12vw,190px) var(--gut) 0;overflow:hidden}
.wall-head{text-align:center;margin-bottom:clamp(60px,7vw,110px)}
.wall-head .sec-title{margin-top:18px}
.wall-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2vw,30px);height:150vh;align-items:start}
.wall-col{display:flex;flex-direction:column;gap:clamp(14px,2vw,30px);will-change:transform}
.wall-col:nth-child(2){margin-top:-18vh}
.wall-pic{aspect-ratio:4/5;overflow:hidden}
.wall-col:nth-child(2) .wall-pic:nth-child(odd){aspect-ratio:3/4}
.wall::after{content:"";position:absolute;left:0;right:0;bottom:0;height:30vh;background:linear-gradient(transparent,var(--night));pointer-events:none;z-index:5}

/* ---------- final ---------- */
.final{position:relative;min-height:110vh;display:grid;place-items:center;text-align:center;overflow:hidden}
.final-pic{position:absolute;inset:-12% 0}
.final-pic img{will-change:transform}
.final::after{content:"";position:absolute;inset:0;background:radial-gradient(70% 60% at 50% 50%,rgba(11,14,22,.45),rgba(11,14,22,.92)),linear-gradient(var(--night),transparent 22%,transparent 78%,var(--night))}
.final-copy{position:relative;z-index:2;padding:0 var(--gut);max-width:1100px}
.final-title{font:300 clamp(54px,8.4vw,160px)/.95 var(--serif);margin:24px 0 28px;letter-spacing:-.02em}
.final-copy p:not(.eyebrow){color:var(--mute);max-width:520px;margin:0 auto}
.final-cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:44px}

/* ---------- footer ---------- */
.foot{padding:clamp(70px,8vw,120px) var(--gut) calc(26px + env(safe-area-inset-bottom));border-top:1px solid var(--line);overflow:hidden}
.foot-top{display:grid;grid-template-columns:2fr 1.5fr 1fr;gap:40px}
.foot-top p:not(.eyebrow){margin-top:16px;color:var(--mute);font-size:15px;line-height:1.9}
.foot-top a:hover{color:var(--cream)}
.foot-word{font:300 clamp(80px,21vw,400px)/.8 var(--serif);letter-spacing:-.03em;color:var(--night-3);margin:clamp(60px,7vw,110px) 0 28px;white-space:nowrap;text-align:center}
.foot-bot{display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:12px;color:var(--dim);letter-spacing:.04em}

/* ---------- booking ---------- */
.book{position:fixed;inset:0;z-index:170}
.book[hidden],.book [hidden]{display:none}
.book-veil{position:absolute;inset:0;background:rgba(5,7,11,.62);opacity:0;transition:opacity .9s var(--ease)}
.book.open .book-veil{opacity:1}
.book-panel{position:absolute;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--night-2);padding:100px clamp(24px,3.4vw,56px) 34px;overflow-y:auto;
  transform:translate3d(100%,0,0);transition:transform 1.1s var(--ease);border-left:1px solid var(--line)}
.book.open .book-panel{transform:none}
.book-panel h2{font:300 clamp(36px,3.2vw,52px)/1.05 var(--serif);margin:16px 0 34px}
.book-x{position:absolute;top:30px;right:clamp(24px,3.4vw,56px);width:44px;height:44px;border:1px solid var(--line);border-radius:50%}
.book-x i{position:absolute;left:13px;right:13px;top:50%;height:1px;background:var(--cream);transform:rotate(45deg)}
.book-x i+i{transform:rotate(-45deg)}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.f{display:block;border-bottom:1px solid var(--line);padding:16px 0 10px;margin-bottom:6px;transition:border-color .5s}
.f>span{display:block;font:500 10px var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-bottom:6px}
.f input,.f select{width:100%;background:none;border:0;outline:none;color:var(--cream);font:300 20px var(--serif);color-scheme:dark;appearance:none;-webkit-appearance:none;padding:2px 0}
.f select option{background:var(--night-2)}
.f:focus-within{border-color:var(--brass)}
.book .btn-solid{margin-top:32px}
.book-note{margin-top:18px;font-size:13px;color:var(--dim)}
.book-note a{color:var(--cream);white-space:nowrap}
.book-done h2{margin-bottom:18px}
.book-done p:not(.eyebrow){color:var(--mute)}

.mbook{display:none}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .nav-l a:nth-child(n+3){display:none}
}
@media (max-width:1000px){
  :root{--nav-h:66px}
  button,.btn-line,.btn-solid,.nav-mark,.f input,.f select{min-height:44px}
  .lang button{min-width:44px}
  .sheet-foot{flex-wrap:wrap;gap:12px}
  .nav{grid-template-columns:1fr auto}
  .nav.solid{height:60px}
  .nav-l,.nav-r .lang,.nav-r .btn-line{display:none}
  .nav-mark{flex-direction:row;gap:12px;justify-self:start}
  .nav-mark svg{width:24px;height:24px}
  .nav.solid .nav-mark span{display:inline}
  .burger{display:flex}
  .hero{height:200vh}
  .hero-copy{bottom:calc(110px + env(safe-area-inset-bottom))}
  .hero-title{font-size:clamp(64px,19vw,120px)}
  .hero-media::after{background:linear-gradient(180deg,rgba(11,14,22,.5) 0%,rgba(11,14,22,0) 22%,rgba(11,14,22,.2) 45%,rgba(11,14,22,.92) 88%)}
  .quick{display:none}
  .flank{display:none}
  .intro{grid-template-columns:1fr}.intro>*{grid-column:1/-1!important}
  .intro .eyebrow{padding:0 0 18px}
  .stats{grid-template-columns:1fr 1fr}.stat{padding-bottom:24px}
  .intro-pic{margin-top:60px}
  .floors{height:420vh}
  .floors-stick{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);align-content:start;padding-top:calc(var(--nav-h) + 12px);gap:0}
  .floors-title{font-size:40px;margin:10px 0 16px}
  .floors-list button{grid-template-columns:88px 1fr;gap:10px;padding:10px 0}
  .floors-list b{font-size:18px}
  .floors-list .floor-desc{font-size:13px}
  .floors-list small{padding-top:0}
  .sec-head{grid-template-columns:1fr}.sec-head .eyebrow{grid-row:auto;margin-bottom:16px}
  .rooms{height:auto}
  .rooms-stick{position:relative;height:auto;padding:110px 0 40px;gap:40px}
  .rooms-head{flex-direction:column;align-items:flex-start}
  .rooms-meta{text-align:left}.rooms-bar{display:none}
  .rooms-track{flex-direction:column;gap:70px;transform:none!important}
  .room{grid-template-columns:1fr;width:100%;gap:22px}
  .room-pic{height:auto;aspect-ratio:4/4.6}
  .slides{display:none}
  .intro-pic2{display:none}
  .ld-stack{width:52vw;height:69vw}
  .wall-cols{grid-template-columns:1fr 1fr;height:150vh}
  .wall-col:nth-child(3){display:none}
  .card-pic{max-height:none;min-height:0}
  .card h3{margin:10px 0 10px}
  .card p{font-size:14px}
  .card dl{margin:16px 0 0;padding-top:14px;font-size:13px}
  .card .btn-line{display:none}
  .spa{min-height:100vh;align-items:flex-end;padding-bottom:12vh}
  .spa::after{background:linear-gradient(0deg,rgba(8,10,16,.95) 0%,rgba(8,10,16,.78) 55%,rgba(8,10,16,.45) 100%),linear-gradient(var(--night),transparent 14%)}
  .spa-list{grid-template-columns:1fr 1fr}
  .gal-track figure{flex-basis:72vw}
  .dine-grid>*{grid-column:1/-1!important}
  .dine-copy{padding-top:40px}
  .dine-b{margin-top:40px;width:72%;margin-left:auto}
  .meet{grid-template-columns:1fr}
  .final-cta{flex-direction:column;align-items:stretch}
  .foot-top{grid-template-columns:1fr;gap:26px}
  .foot-bot{flex-direction:column;align-items:flex-start}
  .book-panel{width:100%;border-left:0;padding-top:96px;padding-bottom:calc(30px + env(safe-area-inset-bottom))}
  .mbook{display:block;position:fixed;left:16px;right:16px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:95;padding:18px;background:var(--brass);color:var(--night);font:500 11px var(--sans);letter-spacing:.24em;text-transform:uppercase;
    transform:translate3d(0,170%,0);transition:transform 1s var(--ease)}
  .show-mbook .mbook{transform:none}
}
@media (max-width:600px){body{font-size:17px}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important}
  .m>span,.rv,.reveal img,.chars .c>i,.words .w{transform:none!important;opacity:1!important}
  .reveal,.card-pic{clip-path:none!important}
  .hero{height:100svh}
  .hero-stick{position:relative}
  .hero-fallback,.hero-media canvas{transform:none}
  .rooms{height:auto}
  .rooms-stick{position:relative;height:auto;padding:110px 0 70px;gap:40px}
  .rooms-track{flex-direction:column;gap:70px;transform:none!important}
  .room{width:100%}
  .rooms-bar{display:none}
  .wall-cols{height:auto}
  .wall-col:nth-child(2){margin-top:0}
}

/* ---------- intro reveal (replaces loader) ---------- */
.is-intro{overflow:hidden}
.is-intro .nav,.is-intro .hero-copy,.is-intro .slides,.is-intro .quick{opacity:0}
.revealing .nav,.revealing .hero-copy,.revealing .slides,.revealing .quick{transition:opacity 1.6s var(--ease)}
.intro-line{position:fixed;left:50%;top:50%;width:1px;height:0;background:var(--brass);transform:translate(-50%,-50%);z-index:3;pointer-events:none}

/* ---------- brand intro ---------- */
.brand{position:fixed;inset:0;z-index:200;background:var(--night);display:grid;place-items:center;transition:transform 1.3s var(--ease-io)}
.brand.out{transform:translate3d(0,-100%,0)}
.brand-in{display:flex;flex-direction:column;align-items:center;text-align:center;transition:opacity .8s var(--ease),transform 1.3s var(--ease-io)}
.brand.out .brand-in{opacity:0;transform:translate3d(0,-60px,0)}
.brand svg{width:clamp(56px,6vw,84px);height:auto;color:var(--brass);overflow:visible}
.brand svg path{stroke-dasharray:130;stroke-dashoffset:130;animation:bdraw 1.6s var(--ease) forwards}
.brand svg path:nth-child(2){animation-delay:.08s}.brand svg path:nth-child(3){animation-delay:.16s}.brand svg path:nth-child(4){animation-delay:.24s}.brand svg path:nth-child(5){animation-delay:.32s}.brand svg path:nth-child(6){animation-delay:.4s}.brand svg path:nth-child(7){animation-delay:.48s}
@keyframes bdraw{to{stroke-dashoffset:0}}
.brand-word{margin-top:clamp(22px,3vw,36px);font:300 clamp(54px,8vw,128px)/.9 var(--serif);letter-spacing:-.04em;color:var(--cream)}
.brand-word .chars .c>i{transition-duration:1.4s}
.brand-sub{margin-top:14px;font:italic 300 clamp(18px,1.8vw,26px) var(--serif-i);color:var(--mute);opacity:0;transform:translateY(12px);transition:opacity 1.2s var(--ease) .7s,transform 1.2s var(--ease) .7s}
.brand-rule{width:0;height:1px;background:var(--brass);margin-top:28px;transition:width 1.8s var(--ease) .9s}
.brand.go .brand-sub{opacity:1;transform:none}
.brand.go .brand-rule{width:clamp(80px,10vw,140px)}
.brand-loc{position:absolute;bottom:clamp(24px,4vh,44px);left:0;right:0;text-align:center;font:500 12px var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--dim);opacity:0;transition:opacity 1.2s var(--ease) 1s}
.brand.go .brand-loc{opacity:1}
.is-intro .hero-media canvas,.is-intro .hero-fallback{transform:scale(1.14)}
.revealing .hero-media canvas{transition:transform 2.6s var(--ease)}

/* ---------- typographic polish ---------- */
h1,h2,h3,.intro-text,.final-title,.sec-title{text-wrap:balance}
p{text-wrap:pretty}
.skip{position:fixed;left:16px;top:-60px;z-index:300;padding:12px 18px;background:var(--brass,#A06A40);color:#111;font:600 13px var(--sans);transition:top .3s}
.skip:focus{top:16px}

/* ---------- Mint Leaf carte ---------- */
.carte{margin:34px 0 40px;border-top:1px solid var(--line-d)}
.carte li{display:flex;align-items:baseline;gap:12px;padding:13px 0;border-bottom:1px solid var(--line-d)}
.carte span{font:300 21px var(--serif);letter-spacing:-.01em;white-space:nowrap}
.carte i{flex:1;border-bottom:1px dotted rgba(22,19,15,.35);transform:translateY(-5px)}
.carte em{font:italic 300 16px var(--serif-i);color:var(--ink-2);text-align:right}
/* ---------- room spec table ---------- */
.room dl{grid-template-columns:auto 1fr;gap:0;border-top:1px solid var(--line)}
.room dt,.room dd{padding:9px 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums lining-nums}
.room dt{font:500 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);padding-right:26px;align-self:center}
.room dd{font:300 17px var(--serif);text-align:right}
@media (min-width:1001px){.room{grid-template-columns:minmax(0,1fr) 340px}}
.room p{font-size:16px;line-height:1.6}

/* ---------- day → evening ---------- */
.daynight{position:relative;height:260vh}
.dn-stick{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.dn-media{position:absolute;inset:0}
.dn-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(calc(1.08 - var(--dn,0)*.06))}
.dn-eve{-webkit-mask-image:linear-gradient(100deg,#000 calc(var(--dn,0)*140% - 30%),transparent calc(var(--dn,0)*140% + 10%));mask-image:linear-gradient(100deg,#000 calc(var(--dn,0)*140% - 30%),transparent calc(var(--dn,0)*140% + 10%))}
.dn-stick::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,rgba(11,14,22,.75),rgba(11,14,22,0) 45%),linear-gradient(180deg,rgba(11,14,22,.55),rgba(11,14,22,0) 25%)}
.dn-copy{position:absolute;left:var(--gut);bottom:clamp(40px,8vh,90px);z-index:2;max-width:640px}
.dn-title{font:300 clamp(44px,5.6vw,100px)/1 var(--serif);letter-spacing:-.03em;margin-top:14px}
.dn-scale{position:absolute;right:var(--gut);bottom:clamp(46px,8.6vh,96px);z-index:2;display:flex;align-items:center;gap:16px;font:500 12px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.dn-scale i{position:relative;width:clamp(120px,14vw,220px);height:1px;background:var(--line)}
.dn-scale b{position:absolute;top:-4px;left:calc(var(--dn,0)*100%);width:9px;height:9px;margin-left:-4.5px;border-radius:50%;background:var(--brass);box-shadow:0 0 0 4px rgba(194,160,106,.18)}
.dn-scale span:first-child{opacity:calc(1 - var(--dn,0)*.6)}.dn-scale span:last-child{opacity:calc(.4 + var(--dn,0)*.6)}
@media (max-width:1000px){.daynight{height:220vh}.dn-scale{left:var(--gut);right:auto;bottom:calc(92px + env(safe-area-inset-bottom))}.dn-copy{bottom:calc(130px + env(safe-area-inset-bottom))}}
/* gallery: varied rectangles instead of repeated arches */
.gp{border-radius:0}
.gal-track figure:nth-child(1) .gp{aspect-ratio:4/5}
.gal-track figure:nth-child(2) .gp{aspect-ratio:1/1;margin-top:12%}
.gal-track figure:nth-child(3) .gp{aspect-ratio:3/4}
.gal-track figure:nth-child(4) .gp{aspect-ratio:4/3;margin-top:22%}
.gal-track figure:nth-child(5) .gp{aspect-ratio:4/5;margin-top:6%}
.gal-track{align-items:flex-start}

/* Mobile spacing and containment; sticky scenes keep their scroll runways. */
@media (max-width:1000px){
  .intro,.spa,.gallery,.dine,.meet,.final,.rooms-stick{padding-block:72px}
  .foot{padding-top:72px;padding-bottom:calc(var(--mbook-height,56px) + 24px + env(safe-area-inset-bottom))}
  .intro>*,.floors-stick>*,.rooms-head>*,.room>*,.dine-grid>*,.meet>*,.foot-top>*,.f-row>*{min-width:0}
  .floors-scene,.rooms-track,.foot-word{min-width:0;max-width:100%}
  .floors-list li.on .floor-desc{max-height:12em}
  .rooms-track{width:100%}
  .foot-top,.foot-bot,.room,.dine-copy,.meet-copy{overflow-wrap:anywhere}
  .carte span{white-space:normal}
  .hero-sub,.stat span,.floors-list .floor-desc,.rooms-meta,.room p,.card p,.card dl,
  .book-note,.foot-top p:not(.eyebrow),.foot-bot,.sheet-foot,.gal-track figcaption,.cap,.carte em{font-size:17px}
  button,.btn-line,.btn-solid,.link,.nav-mark,.f input,.f select{min-height:44px;min-width:44px}
  .foot a,.sheet-foot a,.book-note a,.link{display:inline-flex;align-items:center;min-height:44px;min-width:44px;max-width:100%}
  .sheet{overflow-y:auto;overscroll-behavior:contain}
  .f-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .f input,.f select{min-width:0;max-width:100%}
  .book-panel{max-height:100dvh;overscroll-behavior:contain;padding-top:calc(96px + env(safe-area-inset-top));padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right));padding-bottom:calc(30px + env(safe-area-inset-bottom));scroll-padding-block:30px}
  .book-x{top:calc(30px + env(safe-area-inset-top));right:max(24px,env(safe-area-inset-right))}
}

/* ================= comp-driven pass ================= */
/* intro: paragraph left, tall portrait right, facts on a hairline */
.intro{grid-template-columns:repeat(12,1fr);row-gap:0;padding-bottom:clamp(100px,11vw,170px)}
.intro .eyebrow{grid-column:1/13;padding:0 0 clamp(40px,5vw,70px)}
.intro-text{grid-column:1/8;grid-row:2;max-width:none;font-size:clamp(32px,3.6vw,62px);line-height:1.14;align-self:start}
.intro-portrait{grid-column:9/13;grid-row:2/4;margin:0}
.intro-portrait .ph{aspect-ratio:4/5.2;overflow:hidden}
.facts{grid-column:1/8;grid-row:3;align-self:end;margin-top:60px;padding-top:22px;border-top:1px solid var(--line);font:500 13px var(--sans);letter-spacing:.06em;color:var(--mute)}
/* floors list like the comp */
.floors-list button{grid-template-columns:34px 1fr!important}
.fl-n{font:500 12px var(--sans);font-style:normal;color:var(--dim);padding-top:8px}
.floors-list li.on .fl-n,.floors-list li.on small,.floors-list li.on b{color:var(--brass-2)}
.floors-list li.on{border-bottom-color:rgba(194,160,106,.55)}
/* rooms on warm ivory */
.rooms{background:var(--ivory);color:var(--ink)}
.rooms .eyebrow{color:var(--ink-2)}
.rooms .sec-title{color:var(--ink)}
.rooms-meta{color:var(--ink-2)}
.rooms-bar{background:var(--line-d)}
.rooms-bar i{background:#8A6A3A}
.room-n{color:#8A6A3A}
.room p{color:var(--ink-2)}
.room dl,.room dt,.room dd{border-color:var(--line-d)!important}
.room dt{color:#7A7064}
.room dd{color:var(--ink)}
.rooms .btn-line{color:var(--ink)}
.rooms-nav{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.rn{width:46px;height:46px;border:1px solid var(--line-d);border-radius:50%;color:var(--ink);font:400 18px var(--sans);transition:background .5s,color .5s,border-color .5s}
.rn:hover{background:var(--ink);color:var(--ivory);border-color:var(--ink)}
/* meet: address band */
.meet{grid-template-rows:auto auto}
.band{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1fr auto;align-items:center;gap:30px;margin-top:clamp(70px,8vw,110px);padding-top:26px;border-top:1px solid var(--line);color:var(--mute);font-size:16px}
.band a{color:var(--cream)}
/* footer: giant faint word left, three columns right */
.foot-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:end;gap:40px}
.foot-word{margin:0;text-align:left;font-size:clamp(90px,13vw,260px);line-height:.78}
.foot-top{grid-template-columns:1.5fr 1.5fr .9fr;gap:24px;padding-bottom:12px}
.foot-top p:not(.eyebrow){font-size:14px}
.foot-top>div{border-left:1px solid var(--line);padding-left:22px}
.foot-bot{margin-top:clamp(40px,5vw,70px);padding-top:22px;border-top:1px solid var(--line)}
/* dine: rule under title, serif lead */
.dine-title::after{content:"";display:block;width:56px;height:1px;background:#8A6A3A;margin-top:26px}
.dine-copy>p.rv:not(.eyebrow){font:300 clamp(20px,1.5vw,24px)/1.4 var(--serif);color:var(--ink)}
/* wellness index like the comp */
.spa-list li{font:400 15px var(--sans);letter-spacing:.06em}
@media (max-width:1000px){
  .intro-text,.intro-portrait,.facts{grid-column:1/-1!important;grid-row:auto!important}
  .intro-portrait{margin-top:50px}
  .floors-list button{grid-template-columns:28px 1fr!important}
  .floors-list button small{grid-column:2}
  .rooms-nav{display:none}
  .band{grid-template-columns:1fr;gap:12px}
  .foot-main{grid-template-columns:1fr}
  .foot-top{grid-template-columns:1fr}
  .foot-top>div{border-left:0;padding-left:0}
  .foot-word{font-size:21vw;letter-spacing:-.04em}
}

/* readable date fields (assets/js/datefield.js) */
.dfield{position:relative;display:block}
.dfield input[type=date]{width:100%;color:transparent!important;-webkit-text-fill-color:transparent;cursor:pointer}
.dfield input[type=date]::-webkit-datetime-edit{opacity:0}
.dfield input[type=date]::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:auto;height:auto;margin:0;opacity:0;cursor:pointer}
.dval{position:absolute;inset:0;display:flex;align-items:center;white-space:nowrap;overflow:hidden;pointer-events:none}
.dfield.empty .dval{opacity:.5}
.dfield:focus-within .dval{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
/* fixes: floors list on phones, carte names, footer word fits its column */
@media (max-width:1000px){
  .floors-list button .floor-copy{grid-column:2}
  .floors-list button .fl-n{grid-row:1/3}
  .carte span{white-space:nowrap;overflow-wrap:normal}
  .carte em{min-width:0}
}
@media (min-width:1001px){
  .foot-main{container-type:inline-size}
  .foot-word{font-size:min(260px,calc((100cqw - 40px)/2.15/3.95))}
}


:where(em,cite){font-family:var(--serif-i)}
.c>i{font-style:inherit;font-family:inherit}
@media (max-width:700px){.intro-text{font-size:clamp(24px,6.6vw,30px);line-height:1.22}}

.sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* contrast for small labels on ivory */
.room-n{color:#76582B}
.room dt{color:#625A50}

.lang button{opacity:.66}
.lang button.on{opacity:1}

/* audit fixes */
.nav.hide:focus-within{transform:none}
main:focus{outline:none}
.lang button{opacity:.8}
.lang button.on{opacity:1}
@media (prefers-reduced-motion:reduce){.ch-rail,.rooms-nav{display:none}}
.quick input:focus-visible,.quick select:focus-visible{outline:1px solid var(--brass);outline-offset:6px}
/* short landscape phones: no pinned floors scene, the list must stay reachable */
@media (max-width:1000px) and (max-height:520px){.floors{height:auto}.floors-stick{position:relative;height:auto;overflow:visible;padding-bottom:60px}}

.foot-bot .lang button{color:var(--cream);opacity:.72;font-size:12px}
.foot-bot .lang button.on{opacity:1}

/* 3D building (assets/js/building.js) */
.bld{position:relative;width:100%;height:100%;min-height:0}
.bld canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.bld-fallback{position:absolute;inset:8% 0;width:100%;height:84%;object-fit:cover;border-radius:2px;opacity:.9;transition:opacity 1s var(--ease)}
.bld-ready .bld-fallback{opacity:0;pointer-events:none}
@media (min-width:1001px){.floors-stick{grid-template-columns:4fr 7fr}}
.floors-scene{margin-right:calc(var(--gut)*-1);height:100%}
@media (max-width:1000px){.floors-scene{margin:0 calc(var(--gut)*-1)}.floors-list button{grid-template-columns:34px 1fr!important}}

/* booking: honeypot, error line, other platforms */
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.book-err{margin-top:12px;font-size:14px;color:#d08a7a}
.ota{margin-top:14px;font-size:14px;opacity:.85}
.ota a{text-decoration:underline;text-underline-offset:3px}
button[type=submit]:disabled{opacity:.6;cursor:progress}

/* day photo is bright: keep the title and scale readable */
.dn-media::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(0deg,rgba(11,14,22,.62),rgba(11,14,22,.18) 34%,rgba(11,14,22,0) 55%)}
.dn-copy .eyebrow{color:var(--cream)}
.dn-scale{z-index:2}

/* spec rows: label and value share one baseline and one rule */
.room dt,.room dd{align-self:stretch;display:flex;align-items:center;min-height:44px}
.room dd{justify-content:flex-end}
.sec-title,.floors-title,.dn-title,.final-title,.hero-title{letter-spacing:-.025em}

/* ---------- refinement pass (art-direction review) ---------- */
/* no automatic section numbers: labels stay, the counting goes */
main section .eyebrow:first-child::before,main .floors-text .eyebrow::before,main .rooms-head .eyebrow::before,main .wall-head .eyebrow::before{content:none}
/* introduction: a paragraph, not a manifesto */
.intro-text{font-size:clamp(26px,2.5vw,40px);line-height:1.28;letter-spacing:-.01em;max-width:30ch}
/* gallery: one aligned row with a clear lead image */
@media (min-width:1001px){
  .gal-track{display:grid;grid-template-columns:2fr 1fr 1fr;gap:28px;overflow:visible;cursor:auto;scroll-snap-type:none;align-items:start}
  .gal-track figure{flex:none}
  .gal-track figure:nth-child(n) .gp{margin-top:0}
  .gal-track figure:nth-child(1) .gp{aspect-ratio:4/3}
  .gal-track figure:nth-child(2) .gp,.gal-track figure:nth-child(3) .gp{aspect-ratio:2/3}
  .gal-track figure:nth-child(n+4){display:none}
}
.gal-track figcaption{font-size:14px;color:var(--mute)}

/* restaurant: the dish is a detail row under the terrace, aligned to its right edge */
@media (min-width:1001px){.dine-b{grid-column:4/8;grid-row:2;margin-top:20px;aspect-ratio:16/9;box-shadow:none}}
/* conference: the title fits one line */
.meet-copy .sec-title{font-size:clamp(44px,4.4vw,72px)}
@media (min-width:1001px){.dine-copy{grid-row:1/3}}

/* hotel ↔ spa transition veil (assets/js/leave.js) */
.leave-veil{position:fixed;inset:0;z-index:400;display:grid;place-items:center;background:#0B0E16;color:#C2A06A;opacity:0;visibility:hidden;transition:opacity .6s cubic-bezier(.19,1,.22,1),visibility 0s .6s;pointer-events:none}
.leave-veil svg{width:44px;height:44px;transform:translateY(8px);opacity:0;transition:transform .9s cubic-bezier(.19,1,.22,1) .1s,opacity .6s .1s}
.leave-veil.on{opacity:1;visibility:visible;transition:opacity .6s cubic-bezier(.19,1,.22,1)}
.leave-veil.on svg{transform:none;opacity:1}
@media (max-width:1000px){.gal-track{align-items:stretch}.gal-track figure:nth-child(n) .gp{margin-top:0;aspect-ratio:4/5}}
/* day/evening scale: readable pill on any photo */
.dn-scale{color:var(--cream);padding:10px 16px;border-radius:999px;background:rgba(11,14,22,.42);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.dn-scale i{background:rgba(238,230,216,.32)}

/* ---------- round 2 polish ---------- */
/* action links: text + arrow, 44px target */
.btn-line{font-size:14px;gap:12px;min-height:44px}
.btn-line::after{content:"";width:22px!important;height:10px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 10'%3E%3Cpath d='M0 5h20M16 1l4 4-4 4' fill='none' stroke='black' stroke-width='1.2'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 10'%3E%3Cpath d='M0 5h20M16 1l4 4-4 4' fill='none' stroke='black' stroke-width='1.2'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .6s var(--ease)}
.btn-line:hover::after{transform:translateX(6px)}
p,li,figcaption,dd{text-wrap:pretty}

.nav-l{font-size:14px}
.lang button{font-size:12px}
:root{--mute:#C4BDB1}
.intro-text{font-size:clamp(24px,2.35vw,34px);line-height:1.3;max-width:652px;hyphens:none}
@media (max-width:700px){.intro-text{font-size:24px;line-height:1.33}}
/* restaurant list on phones: name above its dishes, no leaders */
@media (max-width:700px){.carte li{display:grid;gap:4px;padding:16px 0}.carte i{display:none}.carte span{font-size:20px}.carte em{text-align:left;font-size:15px}}
/* booking on phones: a solid dock from the first screen */
@media (max-width:1000px){
  .mbook{left:0!important;right:0!important;bottom:0!important;border-radius:0;padding:18px 18px calc(18px + env(safe-area-inset-bottom))!important;font-size:12px!important}
}
/* footer: tighter */
.foot{padding-top:clamp(56px,6vw,80px)}
.foot-bot .lang button{min-width:44px;min-height:44px}

/* closing block: dates and arrival, no repeat of the hero photograph */
.final{min-height:0;display:grid;grid-template-columns:7fr 4fr;gap:40px 6vw;align-items:end;place-items:end start;text-align:left;padding:clamp(96px,10vw,140px) var(--gut);background:var(--night-2);border-top:1px solid var(--line)}
.final::after{display:none}
.final-copy{padding:0;max-width:none}
.final-title{font-size:clamp(48px,5.6vw,92px);margin:20px 0 18px}
.final-copy p:not(.eyebrow){margin:0;max-width:46ch}
.quick-final{position:static;margin-top:40px;grid-template-columns:repeat(3,minmax(0,1fr)) auto;width:100%;max-width:820px;border:1px solid var(--line);background:var(--night)}
.final-info{color:var(--mute)}
.final-info p{margin:0 0 12px;max-width:34ch}
.final-info .eyebrow{margin-bottom:18px}
.final-links{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-top:20px!important}
.final-links .btn-line{color:var(--cream)}
@media (max-width:1000px){
  .final{grid-template-columns:1fr;padding:72px var(--gut)}
  .quick-final{display:grid!important;grid-template-columns:1fr 1fr;position:static}
  .quick-final label{border-bottom:1px solid var(--line)}
  .quick-final label:nth-child(3){grid-column:1/-1}
  .quick-final button{grid-column:1/-1;min-height:56px}
}

/* one vertical rhythm for content sections */
@media (min-width:1001px){
  .intro{padding-top:clamp(112px,10vw,152px);padding-bottom:clamp(96px,9vw,136px)}
  .gallery,.dine,.meet{padding-top:clamp(96px,9vw,136px);padding-bottom:clamp(96px,9vw,136px)}
}
