/* (BoH)® — movimiento. Curvas: expo-out para entradas, quart para salidas */
:root{--expo:cubic-bezier(.16,1,.3,1);--quart:cubic-bezier(.76,0,.24,1);--wipe:cubic-bezier(.65,.05,.25,1)}

/* Lenis */
html.smooth-on{scroll-behavior:auto}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}

/* ---------- intro ---------- */
.loader{position:fixed;inset:0;z-index:100;background:var(--black);color:var(--white);display:grid;place-content:center;justify-items:center;gap:18px;transition:clip-path 1.2s var(--quart);clip-path:inset(0 0 0 0)}
.loader.is-out{clip-path:inset(0 0 100% 0)}
.loader__logo{font-family:var(--serif);font-size:clamp(64px,12vw,150px);line-height:1;letter-spacing:-.03em;display:flex;align-items:baseline}
.loader__logo span,.loader__logo i,.loader__logo sup{display:inline-block;font-style:normal;opacity:0;transform:translateY(40%);animation:ldIn .9s var(--expo) forwards}
.loader__logo span{color:var(--orange)}
.loader__logo sup{font-size:.22em;align-self:flex-start;margin:.35em 0 0 .12em}
.loader__logo :nth-child(1){animation-delay:.05s}.loader__logo :nth-child(2){animation-delay:.12s}.loader__logo :nth-child(3){animation-delay:.19s}
.loader__logo :nth-child(4){animation-delay:.26s}.loader__logo :nth-child(5){animation-delay:.33s}.loader__logo :nth-child(6){animation-delay:.40s}
.loader__logo :nth-child(7){animation-delay:.47s}.loader__logo :nth-child(8){animation-delay:.6s}
.loader__logo span{animation-name:ldInP}
@keyframes ldIn{to{opacity:1;transform:none}}
@keyframes ldInP{to{opacity:1;transform:none}}
.loader__tag{font-size:11px;opacity:0;animation:ldIn 1s var(--expo) .55s forwards;transform:translateY(10px)}
.loader__line{width:min(220px,40vw);height:1px;background:rgba(255,255,255,.15);position:relative;overflow:hidden}
.loader__line::after{content:"";position:absolute;inset:0;background:var(--orange);transform:scaleX(0);transform-origin:left;animation:ldLine 1.3s var(--quart) .15s forwards}
@keyframes ldLine{to{transform:scaleX(1)}}
.loader.is-out>*{transition:opacity .5s,transform .9s var(--quart);opacity:0;transform:translateY(-30px)}

/* ---------- palabras en máscara ---------- */
.split .w{display:inline-block;overflow:hidden;vertical-align:top;padding:0 .02em .12em;margin-bottom:-.12em}
.split .w>span{display:inline-block;transform:translateY(105%) rotate(4deg);transform-origin:0 100%;transition:transform 1.25s var(--expo);transition-delay:calc(var(--i) * 45ms)}
.split.is-in .w>span{transform:none}
/* hero: espera a que termine la intro */
.hero__title .w>span{transition-delay:calc(.25s + var(--i) * 70ms);transition-duration:1.5s}
.is-loaded .hero__title .w>span{transform:none}
.no-intro .hero__title .w>span{transition-delay:calc(var(--i) * 60ms)}

/* hero: medios, kicker, botones, pie */
.hero__media{inset:-12% 0}
.hero__media img.is-on{transition:opacity 1.6s ease,transform 9s linear}
.hero .hero__kicker,.hero .hero__row,.hero .hero__foot{opacity:0;transform:translateY(24px);transition:opacity 1.2s var(--expo),transform 1.4s var(--expo)}
.is-loaded .hero .hero__kicker{opacity:.9;transform:none;transition-delay:.15s}
.is-loaded .hero .hero__row{opacity:1;transform:none;transition-delay:.85s}
.is-loaded .hero .hero__foot{opacity:.85;transform:none;transition-delay:1.05s}
.hero__media{transform:scale(1.12);transition:transform 2.6s var(--expo)}
.is-loaded .hero__media{transform:none}

/* nav entra y se esconde */
.nav{transform:translateY(-110%);transition:transform .8s var(--expo),background .4s,padding .4s}
.is-loaded .nav{transform:none;transition-delay:.4s}
.is-loaded .nav.is-hidden{transform:translateY(-110%);transition-delay:0s}

/* subida suave */
.rise,.reveal{opacity:0;transform:translateY(36px);transition:opacity 1.1s var(--expo),transform 1.3s var(--expo);transition-delay:var(--d,0ms)}
.rise.is-in,.reveal.is-in{opacity:1;transform:none}
.stats li,.cta__contact>div,.amen__list li,.near li{opacity:0;transform:translateY(24px);transition:opacity 1s var(--expo),transform 1.2s var(--expo);transition-delay:var(--d,0ms)}
.is-in>li,.cta__contact.is-in>div{opacity:1;transform:none}
.stats li{border-color:transparent}
.stats.is-in li{border-color:var(--line);transition-property:opacity,transform,border-color}

/* imágenes en máscara */
/* la máscara va en los hijos: si se recorta el elemento observado, IntersectionObserver nunca lo ve */
.reveal img,.mask>*{clip-path:inset(100% 0 0 0);transition:clip-path 1.1s var(--wipe),transform 1.6s var(--expo);transition-delay:var(--d,0ms)}
.reveal img{transform:scale(1.1)}
.reveal.is-in img,.mask.is-in>*{clip-path:inset(0 0 0 0)}
.reveal.is-in img{transform:scale(1)}
.sense:hover .sense__img img{transform:scale(1.06);transition-delay:0s}
.intro__img{overflow:hidden}
.intro__img img,.amen__hero>img{scale:1.18}
.amen__hero{overflow:hidden}
.amen__hero img{clip-path:none!important}
.amen__hero{clip-path:inset(12% 6% 12% 6% round 4px);transition:clip-path 1.6s var(--expo)}
.amen__hero.is-in{clip-path:inset(0 0 0 0 round 4px)}
.amen__hero .amen__hero-txt{opacity:0;transform:translateY(30px);transition:opacity 1.2s var(--expo) .5s,transform 1.4s var(--expo) .5s}
.amen__hero.is-in .amen__hero-txt{opacity:1;transform:none}
.amen__hero.reveal{opacity:1;transform:none}

/* ticker */
.ticker__track>*{opacity:0;transform:translateY(60%);transition:opacity .9s var(--expo),transform 1.1s var(--expo)}
.ticker.is-in .ticker__track>*{opacity:1;transform:none}

/* habitaciones: cambio de pestaña */
.room.is-on .room__gallery img:first-child{animation:roomImg 1.2s var(--expo) both}
/* sin scale: dentro de la galería (contenedor con scroll) agrandaría el área desplazable */
@keyframes roomImg{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}
.room.is-on .room__info>*{animation:roomTxt 1s var(--expo) both}
.room.is-on .room__info>*:nth-child(2){animation-delay:.06s}.room.is-on .room__info>*:nth-child(3){animation-delay:.12s}
.room.is-on .room__info>*:nth-child(4){animation-delay:.18s}.room.is-on .room__info>*:nth-child(5){animation-delay:.24s}
.room.is-on .room__info>*:nth-child(6){animation-delay:.3s}
@keyframes roomTxt{from{opacity:0;transform:translateY(22px)}}
.room.is-on{animation:none}
.rooms__tabs button{transition:background .5s var(--expo),color .5s var(--expo),border-color .5s,opacity .3s}

/* botones: relleno que sube + imán */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;transform:translateY(101%);transition:transform .6s var(--expo)}
.btn--accent::before{background:var(--white)}
.btn--dark::before{background:var(--orange)}
.btn--ghost::before,.btn--line-dark::before{background:currentColor;opacity:0}
.btn:hover::before{transform:none}
.btn--accent:hover{background:var(--orange)}
.btn--dark:hover{background:var(--black);color:var(--black)}
.magnet{transition:translate .6s var(--expo),transform .3s var(--expo),background .3s,color .3s,border-color .3s}

/* tarjetas */
.sense,.amen__card,.exp__card{transition:transform .9s var(--expo)}
.amen__card img,.exp__card img{transition:clip-path 1.5s var(--expo),transform 2s var(--expo),filter .6s}
.amen__card:hover img,.exp__card:hover img{transform:scale(1.04)}

/* popovers del buscador */
.pop{animation:popin .5s var(--expo)}
@keyframes popin{from{opacity:0;transform:translateY(-10px) scale(.98)}}

@media (prefers-reduced-motion:reduce){
  .manila__map iframe{opacity:1!important}
  .loader{display:none}
  .split .w>span,.rise,.reveal,.reveal img,.mask,.hero .hero__kicker,.hero .hero__row,.hero .hero__foot,.nav,.stats li,.cta__contact>div,.amen__list li,.near li,.ticker__track>*,.mask>*,.amen__hero,.amen__hero .amen__hero-txt{opacity:1!important;transform:none!important;clip-path:none!important;scale:none!important}
}

.film__reel{background:#111}
.film__player,.film__reel,.tour__frame{background-color:#151614}

/* mapa: la tarjeta entra después de la cortina; el iframe funde al cargar */
.manila__map>.map__card{clip-path:none!important;opacity:0;transform:translateY(18px);transition:opacity .8s var(--expo) .65s,transform 1.1s var(--expo) .65s,background .4s,color .4s}
.manila__map.is-in>.map__card{opacity:1;transform:none}
.film__reel iframe{opacity:0;transition:opacity .9s ease}
.film__reel iframe.is-ready{opacity:1}
