/* Movimiento avanzado (ver fx3.js). Nada de esto se aplica con «reducir movimiento». */
.dust{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;mix-blend-mode:screen}

/* Intro de marca */
#intro{position:fixed;inset:0;z-index:200;display:grid;place-items:center;align-content:center;gap:20px;background:#0b0b0d;transition:opacity .7s var(--ease),transform .9s var(--ease),visibility 0s .8s}
#intro img{width:min(190px,48vw);height:auto;animation:intro-logo 1.1s var(--ease) both;filter:drop-shadow(0 0 28px rgba(201,162,75,.35))}
#intro i{display:block;width:min(190px,48vw);height:2px;background:linear-gradient(90deg,transparent,var(--gold-hi),transparent);transform:scaleX(0);animation:intro-line 1s var(--ease) .15s forwards}
#intro.out{opacity:0;transform:scale(1.04);visibility:hidden;pointer-events:none}
@keyframes intro-logo{from{opacity:0;transform:translateY(14px) scale(.92);filter:blur(10px) drop-shadow(0 0 0 transparent)}to{opacity:1;transform:none}}
@keyframes intro-line{to{transform:scaleX(1)}}
body.intro-on{overflow:hidden}

/* Cursor luminoso (solo ratón) */
.cursor-glow{position:fixed;left:0;top:0;width:420px;height:420px;border-radius:50%;pointer-events:none;z-index:1;opacity:0;transition:opacity .5s;background:radial-gradient(circle,rgba(201,162,75,.13),transparent 62%);mix-blend-mode:screen}
.cursor-glow.on{opacity:1}

/* Inclinación 3D: brillo que sigue al puntero */
.tilt{transform-style:preserve-3d;will-change:transform}
.tilt>.glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .35s;background:radial-gradient(420px circle at var(--gx,50%) var(--gy,50%),rgba(255,236,170,.14),transparent 55%);z-index:3}
.tilt:hover>.glare{opacity:1}
.room-media.tilt,.review.tilt,.gscore.tilt,.resto.tilt,.perks li.tilt,.contact-list li.tilt,.faq details.tilt{position:relative}

/* Ondas al pulsar */
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.35);transform:scale(0);animation:ripple .65s ease-out forwards;pointer-events:none;z-index:-1}
@keyframes ripple{to{transform:scale(1);opacity:0}}

/* Entradas más expresivas (solo si hay movimiento) */
.js-fx .in-view:not(.seen) h2{filter:blur(7px);letter-spacing:.06em}
.js-fx .in-view h2{transition:filter 1s var(--ease),letter-spacing 1.2s var(--ease)}
.js-fx .resto.in-view:not(.seen){transform:translateY(34px) scale(.96) rotateX(8deg)}
.js-fx .review.in-view:not(.seen),.js-fx .day.in-view:not(.seen){transform:translateY(30px) scale(.97)}
.js-fx .dish.has-img .dish-img{clip-path:inset(0 0 0 0 round 12px);transition:clip-path 1.3s var(--ease) .15s}
.js-fx .dish.has-img:not(.seen) .dish-img{clip-path:inset(0 100% 0 0 round 12px)}
.js-fx .dish.has-img:not(.seen) .dish-img img{transform:scale(1.25)}
.js-fx .place{transition:transform .5s var(--ease),border-color .3s,opacity .9s var(--ease),filter .9s var(--ease)}
.js-fx .places:not(.seen) .place{opacity:0;transform:translateX(70px) scale(.94);filter:blur(4px)}
.js-fx .places.seen .place{transition-delay:calc(var(--k,0) * 110ms)}
.js-fx .places .place:nth-child(1){--k:0}.js-fx .places .place:nth-child(2){--k:1}.js-fx .places .place:nth-child(3){--k:2}.js-fx .places .place:nth-child(4){--k:3}.js-fx .places .place:nth-child(n+5){--k:4}

/* Titular de la portada con destello dorado */
.hero h1 .w:last-child>span{background:linear-gradient(100deg,var(--ivory) 0%,var(--ivory) 38%,#f6dc8c 50%,var(--ivory) 62%,var(--ivory) 100%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:h1-shine 6s ease-in-out 1.6s infinite}
@keyframes h1-shine{0%,60%,100%{background-position:120% 0}30%{background-position:-30% 0}}

/* Botón principal que «respira» */
.js-fx .hero-cta .btn:not(.ghost){animation:cta-pulse 3.4s ease-in-out 2.4s infinite}
@keyframes cta-pulse{0%,100%{box-shadow:0 0 0 0 rgba(201,162,75,.0)}50%{box-shadow:0 0 0 12px rgba(201,162,75,.16)}}

/* Pelí entra a escena */
.mascot{animation:mascot-in 1.1s cubic-bezier(.34,1.56,.64,1) .8s both}
@keyframes mascot-in{from{opacity:0;transform:translateX(120px) rotate(8deg)}to{opacity:1;transform:none}}

/* Puntos de capítulo y barra con un poco más de vida */
.dots a[aria-current=true]{transform:scale(1.25)}
.progress{box-shadow:0 0 14px rgba(241,210,122,.55)}

@media (prefers-reduced-motion:reduce){
  #intro,.cursor-glow,.dust{display:none!important}
  .hero h1 .w:last-child>span{animation:none;-webkit-text-fill-color:currentColor;background:none}
  .mascot,.hero-cta .btn{animation:none!important}
  .in-view h2{filter:none!important;letter-spacing:inherit!important}
}
