@charset "UTF-8";
/* ==========================================================================
   HOTEL CAMPESTRE CACIQUE YARIGUÍ — style.css
   Hoja de estilos única del sitio. Mobile-first. Sin @import, sin terceros.
   Dirección de arte: «Balcón sobre el Fonce».
   Orden del archivo:
     01 · TOKENS
     02 · RESET
     03 · TIPOGRAFÍA
     04 · UTILIDADES DE LAYOUT
     05 · IMAGEN, MEDIA Y SKELETON
     06 · BOTONES E ICONOS
     07 · NAVEGACIÓN
     08 · HERO
     09 · KICKER / CABECERA DE SECCIÓN / TARJETA GENÉRICA
     10 · CONTADORES Y BANDA DE DATOS
     11 · TARJETAS: HABITACIÓN, PLAN, SERVICIO, DESTINO
     12 · CHIPS DE FILTRO Y ESTADO VACÍO
     13 · CARRUSEL SCROLL-SNAP
     14 · GALERÍA Y LIGHTBOX
     15 · TESTIMONIOS Y SLIDER
     16 · ACORDEÓN FAQ
     17 · FORMULARIOS
     18 · WIZARD DE RESERVA (MODAL)
     19 · PANEL «TU PLAN» Y COTIZADOR FLOTANTE
     20 · CTA FINAL
     21 · FOOTER
     22 · BARRA MÓVIL Y FAB
     23 · REVEAL Y MOVIMIENTO
     24 · IMPRESIÓN Y BLINDAJES FINALES
   ========================================================================== */

/* ==========================================================================
   01 · TOKENS  — PROHIBIDO escribir un literal de color/radio/sombra fuera de aquí
   ========================================================================== */
:root{

  /* ---------- COLOR · superficies claras ---------- */
  --y-crema:#FBF8F4;
  --y-superficie:#FFFFFF;
  --y-superficie-2:#F1EDE6;
  --y-turquesa-suave:#E2F1F2;

  /* ---------- COLOR · tinta ---------- */
  --y-tinta:#16211F;
  --y-tinta-2:#55635F;

  /* ---------- COLOR · marca ---------- */
  --y-turquesa:#0B6E78;
  --y-turquesa-osc:#095B64;
  --y-terracota:#B3400F;
  --y-terracota-osc:#8F330C;
  --y-selva:#143028;
  --y-sol:#F2A413;
  --y-sol-tinta:#8A5B04;

  /* ---------- COLOR · acción (conversión) ---------- */
  --y-wa:#0F7A3D;
  --y-wa-osc:#0C6633;

  /* ---------- COLOR · vidrio, velos y scrims ---------- */
  --y-vidrio-oscuro:rgba(9,38,42,.72);
  --y-vidrio-oscuro-solido:rgba(9,38,42,.88);
  --y-vidrio-claro:rgba(255,255,255,.90);
  --y-vidrio-claro-solido:rgba(255,255,255,.97);
  --y-vidrio-borde:rgba(255,255,255,.55);
  --y-vidrio-blur:blur(20px) saturate(150%);
  --y-scrim-hero:linear-gradient(180deg,rgba(8,32,36,.55) 0%,rgba(8,32,36,.18) 40%,rgba(8,32,36,.78) 100%);
  --y-scrim-foto:linear-gradient(180deg,rgba(8,32,36,0) 38%,rgba(8,32,36,.72) 100%);

  /* ---------- COLOR · líneas ---------- */
  --y-linea:rgba(22,33,31,.10);
  --y-linea-fuerte:rgba(22,33,31,.16);
  --y-linea-clara:rgba(255,255,255,.28);

  /* ---------- TIPOGRAFÍA · familias ---------- */
  --y-font-display:'Fraunces',Georgia,'Times New Roman',serif;
  --y-font-texto:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;

  /* ---------- TIPOGRAFÍA · escala fluida ---------- */
  --y-h1:clamp(2.5rem,7.4vw,5.25rem);
  --y-h2:clamp(1.95rem,4.6vw,3.25rem);
  --y-h3:clamp(1.2rem,2.2vw,1.6rem);
  --y-h4:1.0625rem;
  --y-lead:clamp(1.0625rem,1.6vw,1.3125rem);
  --y-body:clamp(1.0625rem,1.1vw,1.125rem);
  --y-body-sm:0.9375rem;
  --y-meta:0.875rem;
  --y-micro:0.8125rem;
  --y-pie:0.9375rem;

  --y-lh-tight:1.0;
  --y-lh-h2:1.06;
  --y-lh-titulo:1.16;
  --y-lh-body:1.65;
  --y-ls-h1:-0.02em;
  --y-ls-h2:-0.015em;
  --y-ls-kicker:0.06em;
  --y-medida:64ch;

  /* ---------- ESPACIADO (escala de 4px) ---------- */
  --y-s1:4px;  --y-s2:8px;  --y-s3:12px; --y-s4:16px; --y-s5:20px;
  --y-s6:24px; --y-s7:32px; --y-s8:40px; --y-s9:56px; --y-s10:72px;
  --y-sec-pad:clamp(72px,9vw,136px);
  --y-gutter:clamp(20px,4vw,48px);
  --y-gap:clamp(16px,2vw,24px);
  --y-card-pad:clamp(20px,2.2vw,28px);
  --y-max:1240px;
  --y-max-ancho:1440px;

  /* ---------- RADIOS ---------- */
  --y-r-chip:999px;
  --y-r-sm:16px;
  --y-r-md:24px;
  --y-r-lg:32px;
  --y-r-xl:44px;

  /* ---------- SOMBRAS ---------- */
  --y-sh-1:0 1px 2px rgba(11,46,50,.06),0 2px 8px rgba(11,46,50,.05);
  --y-sh-2:0 2px 4px rgba(11,46,50,.05),0 12px 28px -8px rgba(11,46,50,.14);
  --y-sh-3:0 4px 8px rgba(11,46,50,.06),0 28px 56px -16px rgba(11,46,50,.22);
  --y-sh-vidrio:0 8px 32px rgba(8,32,36,.28),inset 0 1px 0 rgba(255,255,255,.5);

  /* ---------- MOVIMIENTO ---------- */
  --y-ease-salida:cubic-bezier(.16,1,.3,1);
  --y-ease-suave:cubic-bezier(.2,.7,.3,1);
  --y-t-micro:150ms;
  --y-t-estado:220ms;
  --y-t-card:260ms;
  --y-t-nav:320ms;
  --y-t-reveal:600ms;
  --y-t-foto:600ms;
  --y-t-barra:380ms;
  --y-stagger:70ms;

  /* ---------- FOTO ---------- */
  --y-grado:saturate(1.06) contrast(1.03);

  /* ---------- CAPAS ---------- */
  --y-z-nav:100; --y-z-bar:90; --y-z-fab:80; --y-z-lightbox:200;

  /* ---------- CONVERSIÓN ---------- */
  --y-wa-url:"https://wa.me/573163325511";
}

/* Degradación de movimiento: un solo interruptor global */
@media (prefers-reduced-motion: reduce){
  :root{
    --y-t-micro:1ms; --y-t-estado:120ms; --y-t-card:120ms; --y-t-nav:120ms;
    --y-t-reveal:200ms; --y-t-foto:1ms; --y-t-barra:120ms; --y-stagger:0ms;
  }
}

/* Sustituto sólido cuando no hay backdrop-filter o en móvil de gama baja */
@supports not (backdrop-filter: blur(1px)){
  :root{
    --y-vidrio-oscuro:rgba(9,38,42,.88);
    --y-vidrio-claro:rgba(255,255,255,.97);
    --y-vidrio-blur:none;
  }
}
@media (max-width:639px){
  :root{
    --y-vidrio-oscuro:rgba(9,38,42,.88);
    --y-vidrio-claro:rgba(255,255,255,.97);
    --y-vidrio-blur:none;
  }
}

/* ==========================================================================
   02 · RESET MODERNO
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; }
*{ margin:0; }
html{
  font-size:100%;
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:96px;
}
body{
  min-height:100%;
  overflow-x:hidden;
}
img,picture,video,canvas,svg{ display:block; max-width:100%; }
input,button,textarea,select{ font:inherit; color:inherit; }
button{ background:none; border:0; cursor:pointer; }
p,h1,h2,h3,h4,h5,h6{ overflow-wrap:break-word; }
ul,ol{ list-style:none; padding:0; }
a{ color:inherit; text-decoration:none; }
table{ border-collapse:collapse; }
:where(dialog){ border:0; padding:0; }
[hidden]{ display:none !important; }

/* Bloqueo de scroll cuando hay modal / drawer abierto (lo pone el JS en <body>) */
body.y-bloqueado{ overflow:hidden; }

/* Foco: nunca se elimina, siempre se sustituye */
:focus{ outline:none; }
:focus-visible{
  outline:3px solid var(--y-turquesa);
  outline-offset:2px;
  border-radius:var(--y-s1);
}

/* ==========================================================================
   03 · TIPOGRAFÍA
   ========================================================================== */
body{
  font-family:var(--y-font-texto);
  font-size:var(--y-body);
  font-weight:400;
  line-height:var(--y-lh-body);
  color:var(--y-tinta);
  background:var(--y-crema);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

.y-h1,h1{
  font-family:var(--y-font-display);
  font-optical-sizing:auto;
  font-variation-settings:'opsz' 120;
  font-weight:700;
  font-size:var(--y-h1);
  line-height:var(--y-lh-tight);
  letter-spacing:var(--y-ls-h1);
  text-wrap:balance;
}
.y-h2,h2{
  font-family:var(--y-font-display);
  font-optical-sizing:auto;
  font-weight:600;
  font-size:var(--y-h2);
  line-height:var(--y-lh-h2);
  letter-spacing:var(--y-ls-h2);
  text-wrap:balance;
}
.y-h3,h3{
  font-family:var(--y-font-display);
  font-optical-sizing:auto;
  font-weight:600;
  font-size:var(--y-h3);
  line-height:var(--y-lh-titulo);
  letter-spacing:-0.01em;
}
.y-h4,h4{
  font-family:var(--y-font-texto);
  font-weight:700;
  font-size:var(--y-h4);
  line-height:1.35;
}
.y-lead{
  font-family:var(--y-font-texto);
  font-weight:400;
  font-size:var(--y-lead);
  line-height:1.5;
  color:var(--y-tinta-2);
  max-width:52ch;
}
.y-lead--claro{ color:var(--y-turquesa-suave); }

.y-body{ font-size:var(--y-body); line-height:var(--y-lh-body); max-width:var(--y-medida); }
.y-body-sm{ font-size:var(--y-body-sm); line-height:1.55; }
.y-meta{ font-size:var(--y-meta); line-height:1.45; color:var(--y-tinta-2); }
.y-micro{ font-size:var(--y-micro); line-height:1.4; color:var(--y-tinta-2); }

.y-kicker{
  display:flex;
  align-items:center;
  font-family:var(--y-font-texto);
  font-weight:600;
  font-size:var(--y-micro);
  letter-spacing:var(--y-ls-kicker);
  line-height:1;
  color:var(--y-turquesa);
  text-transform:none;
}
.y-kicker__dot{
  width:6px; height:6px;
  flex:0 0 auto;
  background:var(--y-sol);
  border-radius:var(--y-r-chip);
  margin-right:var(--y-s2);
  animation:y-pulso 2400ms ease-in-out infinite;
}
.y-kicker--claro{ color:var(--y-turquesa-suave); }

.y-pie{
  font-family:var(--y-font-display);
  font-style:italic;
  font-weight:400;
  font-size:var(--y-pie);
  line-height:1.4;
  color:var(--y-tinta-2);
  max-width:56ch;
}
.y-pie--claro{ color:var(--y-turquesa-suave); }

.y-num{
  font-family:var(--y-font-display);
  font-weight:700;
  font-size:clamp(2.5rem,5.6vw,4rem);
  line-height:1;
  letter-spacing:-0.03em;
  font-variant-numeric:tabular-nums;
  color:var(--y-tinta);
  display:block;
}

@keyframes y-pulso{
  0%,100%{ opacity:.55; }
  50%{ opacity:1; }
}

/* ==========================================================================
   04 · UTILIDADES DE LAYOUT
   ========================================================================== */

/* Solo lector de pantalla */
.y-sr{
  position:absolute !important;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}

/* Contenedor */
.y-wrap{
  width:100%;
  max-width:var(--y-max);
  margin-inline:auto;
  padding-inline:var(--y-gutter);
}
.y-wrap--ancho{ max-width:var(--y-max-ancho); }
.y-wrap--medida{ max-width:var(--y-medida); }

/* Sección */
.y-sec{
  padding-block:var(--y-sec-pad);
  position:relative;
}
.y-sec--alt{ background:var(--y-superficie-2); }
.y-sec--turquesa{ background:var(--y-turquesa-suave); }
.y-sec--blanco{ background:var(--y-superficie); }
.y-sec--selva{ background:var(--y-selva); color:var(--y-superficie); }
.y-sec--selva .y-h2,
.y-sec--selva h2,
.y-sec--selva .y-h3,
.y-sec--selva h3{ color:var(--y-superficie); }
.y-sec--selva .y-lead,
.y-sec--selva .y-body,
.y-sec--selva .y-meta,
.y-sec--selva .y-micro{ color:var(--y-turquesa-suave); }
.y-sec--compacta{ padding-block:clamp(48px,6vw,88px); }

/* Bloque a sangre dentro del flujo normal */
.y-sangre{
  width:100vw;
  margin-inline:calc(50% - 50vw);
  max-width:100vw;
}

/* Rejillas */
.y-grid{ display:grid; gap:var(--y-gap); }
.y-grid--2{ grid-template-columns:1fr; }
.y-grid--3{ grid-template-columns:1fr; }
.y-grid--4{ grid-template-columns:1fr; }
.y-grid--auto{ grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); }
.y-grid--auto-lg{ grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); }
@media (min-width:640px){
  .y-grid--2{ grid-template-columns:repeat(2,1fr); }
  .y-grid--3{ grid-template-columns:repeat(2,1fr); }
  .y-grid--4{ grid-template-columns:repeat(2,1fr); }
}
@media (min-width:1024px){
  .y-grid--3{ grid-template-columns:repeat(3,1fr); }
  .y-grid--4{ grid-template-columns:repeat(4,1fr); }
}

/* Bento asimétrico (sección 03 del home) */
.y-bento{ display:grid; gap:var(--y-gap); grid-template-columns:repeat(2,1fr); }
.y-bento__grande{ grid-column:span 2; }
@media (min-width:900px){
  .y-bento{ grid-template-columns:repeat(4,1fr); }
  .y-bento__grande{ grid-column:span 2; grid-row:span 2; }
}

/* Pila vertical */
.y-stack{ display:flex; flex-direction:column; gap:var(--y-s4); }
.y-stack--s2{ gap:var(--y-s2); }
.y-stack--s3{ gap:var(--y-s3); }
.y-stack--s6{ gap:var(--y-s6); }
.y-stack--s7{ gap:var(--y-s7); }
.y-stack--s9{ gap:var(--y-s9); }

/* Fila con envoltura */
.y-fila{ display:flex; flex-wrap:wrap; gap:var(--y-s3); align-items:center; }
.y-fila--acciones{ gap:var(--y-s4); }

/* Layout con columna sticky (habitaciones / aventura, ≥1100px) */
.y-conCol{ display:grid; gap:var(--y-gap); grid-template-columns:1fr; }
@media (min-width:1100px){
  .y-conCol{ grid-template-columns:minmax(0,1fr) 380px; align-items:start; }
  .y-sticky{ position:sticky; top:96px; }
}

/* Lista de servicios a dos columnas con hairlines */
.y-lista{ display:grid; grid-template-columns:1fr; gap:0; }
@media (min-width:768px){ .y-lista{ grid-template-columns:repeat(2,1fr); column-gap:var(--y-s8); } }
.y-lista__item{
  display:flex; align-items:flex-start; gap:var(--y-s3);
  padding-block:var(--y-s4);
  border-bottom:1px solid var(--y-linea);
  font-size:var(--y-body-sm);
}
.y-lista__item .y-ico{ color:var(--y-turquesa); flex:0 0 auto; margin-top:2px; }
.y-sec--selva .y-lista__item{ border-bottom-color:var(--y-linea-clara); }
.y-sec--selva .y-lista__item .y-ico{ color:var(--y-turquesa-suave); }

/* Tarjeta genérica reutilizable */
.y-tarjeta{
  background:var(--y-superficie);
  border:1px solid var(--y-linea);
  border-radius:var(--y-r-md);
  box-shadow:var(--y-sh-2);
  padding:var(--y-card-pad);
}
.y-tarjeta--sm{ border-radius:var(--y-r-sm); box-shadow:var(--y-sh-1); }
.y-tarjeta--lg{ border-radius:var(--y-r-lg); }
.y-tarjeta--plana{ box-shadow:none; }
.y-tarjeta--vidrio{
  background:var(--y-vidrio-claro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-vidrio-borde);
  box-shadow:var(--y-sh-vidrio);
}
.y-tarjeta--oscura{
  background:var(--y-vidrio-oscuro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-linea-clara);
  color:var(--y-superficie);
  box-shadow:var(--y-sh-vidrio);
}
.y-tarjeta--oscura .y-meta,
.y-tarjeta--oscura .y-micro{ color:var(--y-turquesa-suave); }

/* Píldora informativa (banda de confianza, metadatos de plan) */
.y-pill{
  display:inline-flex; align-items:center; gap:var(--y-s2);
  background:var(--y-superficie-2);
  color:var(--y-tinta-2);
  border-radius:var(--y-r-chip);
  font-size:var(--y-micro);
  font-weight:500;
  line-height:1.2;
  padding:6px 12px;
  min-height:32px;
}
.y-pill--blanca{ background:var(--y-superficie); color:var(--y-tinta-2); }
.y-pill--turquesa{ background:var(--y-turquesa-suave); color:var(--y-turquesa); }
.y-pill .y-ico{ width:16px; height:16px; }

/* Badge sobre foto */
.y-badge{
  position:absolute;
  display:inline-flex; align-items:center; gap:var(--y-s1);
  border-radius:var(--y-r-chip);
  font-size:var(--y-micro);
  font-weight:600;
  line-height:1;
  padding:8px 14px;
  z-index:2;
}
.y-badge--cap{
  left:var(--y-s3); bottom:var(--y-s3);
  background:var(--y-vidrio-oscuro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  color:var(--y-superficie);
}
.y-badge--tipo{
  left:var(--y-s3); top:var(--y-s3);
  background:var(--y-terracota);
  color:var(--y-superficie);
}
.y-badge--cat{
  left:var(--y-s3); top:var(--y-s3);
  background:var(--y-vidrio-claro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  color:var(--y-tinta);
}

/* ==========================================================================
   05 · IMAGEN, MEDIA Y SKELETON
   Toda <img> del sitio lleva .y-img. Todo contenedor de foto lleva .y-media
   (o una clase __media de componente), que aporta aspect-ratio + hairline.
   ========================================================================== */
.y-img{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:var(--y-grado);
  background:var(--y-superficie-2);
}

/* Contenedor de foto genérico. El aspect-ratio se controla con --ar. */
.y-media{
  position:relative;
  overflow:hidden;
  border-radius:var(--y-r-lg);
  aspect-ratio:var(--ar,16/9);
  background:var(--y-superficie-2);
  isolation:isolate;
}
.y-media--sm{ border-radius:var(--y-r-sm); }
.y-media--md{ border-radius:var(--y-r-md); }
.y-media--lg{ border-radius:var(--y-r-lg); }
.y-media--xl{ border-radius:var(--y-r-xl); }
.y-media--recta{ border-radius:0; }

/* Hairline interior OBLIGATORIO en todo contenedor de foto */
.y-media::after,
.y-room__media::after,
.y-plan__media::after,
.y-serv__media::after,
.y-destino__media::after,
.y-gal-item::after,
.y-hero__media::after,
.y-hero__thumb::after{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  box-shadow:inset 0 0 0 1px var(--y-linea);
  pointer-events:none;
  z-index:3;
}
.y-hero__media::after,
.y-cta::after{ box-shadow:none; }

/* Velo degradado opcional sobre una foto (para poner texto encima) */
.y-media__velo{
  position:absolute; inset:0;
  background:var(--y-scrim-foto);
  pointer-events:none;
  z-index:2;
}
.y-media__pie{
  position:absolute; left:var(--y-s5); right:var(--y-s5); bottom:var(--y-s5);
  z-index:3;
  color:var(--y-superficie);
}

/* object-position calibrado foto por foto (se declara con data-pos en la img) */
.y-img[data-pos="rio-vista"]{ object-position:48% 38%; }
.y-img[data-pos="kiosco"]{ object-position:50% 34%; }
.y-img[data-pos="hero"]{ object-position:65% 38%; }
.y-img[data-pos="alto"]{ object-position:50% 22%; }
.y-img[data-pos="bajo"]{ object-position:50% 78%; }
@media (min-width:900px){
  .y-img[data-pos="hero"]{ object-position:58% 42%; }
}

/* Skeleton / shimmer mientras la foto carga.
   El JS pone .is-cargada en la <img> al terminar. Sin JS todo se ve. */
.js .y-img{ opacity:0; transition:opacity var(--y-t-estado) var(--y-ease-suave); }
.js .y-img.is-cargada{ opacity:1; }
.js .y-media:not(.is-lista)::before,
.js .y-room__media:not(.is-lista)::before,
.js .y-plan__media:not(.is-lista)::before,
.js .y-serv__media:not(.is-lista)::before,
.js .y-destino__media:not(.is-lista)::before,
.js .y-gal-item:not(.is-lista)::before{
  content:"";
  position:absolute; inset:0;
  z-index:1;
  background:linear-gradient(90deg,
    var(--y-superficie-2) 0%,
    var(--y-crema) 40%,
    var(--y-superficie-2) 80%);
  background-size:220% 100%;
  animation:y-shimmer 1400ms linear infinite;
}
@keyframes y-shimmer{
  from{ background-position:120% 0; }
  to{ background-position:-120% 0; }
}

/* Pie de foto bajo una imagen grande */
.y-figura{ display:flex; flex-direction:column; gap:var(--y-s3); }

/* ==========================================================================
   06 · BOTONES E ICONOS
   ========================================================================== */
.y-ico{
  width:20px; height:20px;
  flex:0 0 auto;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.y-ico--lg{ width:26px; height:26px; }
.y-ico--sm{ width:16px; height:16px; }
.y-ico--end{ margin-left:var(--y-s1); }
.y-ico--solido{ fill:currentColor; stroke:none; }

.y-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--y-s2);
  min-height:52px;
  padding-inline:var(--y-s6);
  border-radius:var(--y-r-chip);
  border:1.5px solid transparent;
  font-family:var(--y-font-texto);
  font-weight:700;
  font-size:1rem;
  line-height:1;
  text-align:center;
  cursor:pointer;
  transition:background-color var(--y-t-estado) var(--y-ease-suave),
             border-color var(--y-t-estado) var(--y-ease-suave),
             color var(--y-t-estado) var(--y-ease-suave),
             transform var(--y-t-estado) var(--y-ease-suave);
  -webkit-tap-highlight-color:transparent;
}
.y-btn:active{ transform:scale(.985); transition-duration:var(--y-t-micro); }
.y-btn:focus-visible{ outline:3px solid var(--y-turquesa); outline-offset:2px; }
.y-btn[disabled],.y-btn[aria-disabled="true"]{
  opacity:.5;
  pointer-events:none;
}
.y-btn--sm{ min-height:44px; padding-inline:var(--y-s5); font-size:var(--y-meta); }
.y-btn--block{ display:flex; width:100%; }

.y-btn--primary{ background:var(--y-turquesa); color:var(--y-superficie); }
.y-btn--primary:hover{ background:var(--y-turquesa-osc); transform:translateY(-2px); }
.y-btn--primary:active{ transform:scale(.985); }

.y-btn--ghost{
  background:transparent;
  border-color:var(--y-linea-fuerte);
  color:var(--y-tinta);
}
.y-btn--ghost:hover{
  border-color:var(--y-turquesa);
  color:var(--y-turquesa);
  background:var(--y-superficie);
  transform:translateY(-2px);
}
.y-btn--wa{ background:var(--y-wa); color:var(--y-superficie); }
.y-btn--wa:hover{ background:var(--y-wa-osc); transform:translateY(-2px); }

/* Variante sobre foto / banda oscura */
.y-btn--sobre-foto{
  background:rgba(9,38,42,.28);
  border-color:var(--y-vidrio-borde);
  color:var(--y-superficie);
}
.y-btn--sobre-foto:hover{
  background:rgba(9,38,42,.44);
  border-color:var(--y-superficie);
  color:var(--y-superficie);
}
.y-btn--sobre-foto:focus-visible,
.y-sec--selva .y-btn:focus-visible,
.y-cta .y-btn:focus-visible,
.y-footer .y-btn:focus-visible,
.y-hero .y-btn--sobre-foto:focus-visible{
  outline:3px solid var(--y-superficie);
}

/* Enlace de texto con subrayado de color */
.y-enlace{
  color:var(--y-turquesa);
  font-weight:600;
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-thickness:1px;
  text-decoration-color:var(--y-sol);
}
.y-enlace:hover{ color:var(--y-turquesa-osc); text-decoration-color:var(--y-turquesa); }

/* ==========================================================================
   07 · NAVEGACIÓN (píldora flotante)
   ========================================================================== */
.y-nav{
  position:fixed;
  inset-block-start:var(--y-s4);
  inset-inline:0;
  z-index:var(--y-z-nav);
  padding-inline:var(--y-gutter);
  pointer-events:none;
}
.y-nav__skip{
  position:absolute;
  left:var(--y-gutter);
  top:0;
  transform:translateY(-200%);
  background:var(--y-superficie);
  color:var(--y-tinta);
  border-radius:var(--y-r-chip);
  padding:var(--y-s3) var(--y-s5);
  font-weight:600;
  font-size:var(--y-meta);
  box-shadow:var(--y-sh-2);
  pointer-events:auto;
  transition:transform var(--y-t-estado) var(--y-ease-suave);
}
.y-nav__skip:focus-visible{ transform:translateY(0); }

.y-nav__pill{
  pointer-events:auto;
  display:flex;
  align-items:center;
  gap:var(--y-s4);
  width:100%;
  max-width:var(--y-max);
  margin-inline:auto;
  min-height:64px;
  padding:var(--y-s2) var(--y-s2) var(--y-s2) var(--y-s5);
  border-radius:var(--y-r-chip);
  background:var(--y-vidrio-oscuro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-linea-clara);
  box-shadow:var(--y-sh-1);
  color:var(--y-superficie);
  transition:min-height var(--y-t-nav) var(--y-ease-suave),
             background-color var(--y-t-nav) var(--y-ease-suave),
             color var(--y-t-nav) var(--y-ease-suave),
             box-shadow var(--y-t-nav) var(--y-ease-suave),
             border-color var(--y-t-nav) var(--y-ease-suave);
}
.y-nav[data-scrolled="true"] .y-nav__pill{
  min-height:54px;
  background:var(--y-vidrio-claro);
  border-color:var(--y-vidrio-borde);
  color:var(--y-tinta);
  box-shadow:var(--y-sh-2);
}
.y-nav__brand{
  display:flex; align-items:center; gap:var(--y-s2);
  font-weight:800;
  font-size:var(--y-body-sm);
  letter-spacing:-0.01em;
  white-space:nowrap;
  min-height:44px;
}
.y-nav__brand-mark{
  width:22px; height:22px;
  flex:0 0 auto;
  border-radius:var(--y-r-chip);
  background:var(--y-sol);
  box-shadow:inset 0 0 0 4px var(--y-turquesa);
}
.y-nav__menu{
  position:relative;
  display:none;
  align-items:center;
  gap:var(--y-s1);
  margin-inline:auto;
}
.y-nav__indicator{
  position:absolute;
  left:0; top:50%;
  height:36px;
  width:0;
  transform:translateY(-50%);
  border-radius:var(--y-r-chip);
  background:var(--y-turquesa-suave);
  opacity:0;
  transition:transform var(--y-t-nav) var(--y-ease-suave),
             width var(--y-t-nav) var(--y-ease-suave),
             opacity var(--y-t-nav) var(--y-ease-suave);
  z-index:0;
}
.y-nav[data-scrolled="true"] .y-nav__indicator[data-activo="true"]{ opacity:1; }
.y-nav__link{
  position:relative;
  z-index:1;
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding-inline:var(--y-s4);
  border-radius:var(--y-r-chip);
  font-size:var(--y-meta);
  font-weight:600;
  color:currentColor;
  white-space:nowrap;
  transition:color var(--y-t-estado) var(--y-ease-suave),
             opacity var(--y-t-estado) var(--y-ease-suave);
}
.y-nav__link:hover{ opacity:.75; }
.y-nav[data-scrolled="true"] .y-nav__link[aria-current="page"],
.y-nav[data-scrolled="true"] .y-nav__link.is-activo{ color:var(--y-turquesa); }
.y-nav__link[aria-current="page"],
.y-nav__link.is-activo{ opacity:1; }
.y-nav__cta{ margin-left:auto; }
.y-nav__burger{
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  width:44px; height:44px;
  margin-left:auto;
  border-radius:var(--y-r-chip);
  color:currentColor;
}
.y-nav__burger span{
  display:block;
  width:20px; height:2px;
  border-radius:var(--y-r-chip);
  background:currentColor;
  transition:transform var(--y-t-estado) var(--y-ease-suave),
             opacity var(--y-t-estado) var(--y-ease-suave);
}
.y-nav__burger[aria-expanded="true"] span:first-child{ transform:translateY(3.5px) rotate(45deg); }
.y-nav__burger[aria-expanded="true"] span:last-child{ transform:translateY(-3.5px) rotate(-45deg); }

.y-nav__drawer{
  pointer-events:auto;
  display:flex;
  flex-direction:column;
  gap:var(--y-s1);
  width:100%;
  max-width:var(--y-max);
  margin:var(--y-s3) auto 0;
  padding:var(--y-s4);
  border-radius:var(--y-r-lg);
  background:var(--y-vidrio-claro-solido);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-linea);
  box-shadow:var(--y-sh-3);
  max-height:calc(100svh - 140px);
  overflow-y:auto;
  animation:y-drawer var(--y-t-estado) var(--y-ease-salida) both;
}
@keyframes y-drawer{
  from{ opacity:0; transform:translateY(-8px); }
  to{ opacity:1; transform:none; }
}
.y-nav__dlink{
  display:flex; align-items:center;
  min-height:48px;
  padding-inline:var(--y-s4);
  border-radius:var(--y-r-sm);
  font-weight:600;
  font-size:var(--y-body-sm);
  color:var(--y-tinta);
}
.y-nav__dlink:hover{ background:var(--y-turquesa-suave); color:var(--y-turquesa); }

@media (min-width:1024px){
  .y-nav__menu{ display:flex; }
  .y-nav__burger{ display:none; }
  .y-nav__drawer{ display:none !important; }
}
@media (max-width:1023px){
  .y-nav__cta{ display:none; }
}

/* ==========================================================================
   08 · HERO
   ========================================================================== */
.y-hero{
  position:relative;
  height:100svh;
  min-height:620px;
  max-height:900px;
  display:flex;
  align-items:flex-end;
  overflow:hidden;
  isolation:isolate;
  background:var(--y-selva);
}
.y-hero__media{
  position:absolute;
  inset:0;
  z-index:0;
  overflow:hidden;
}
.y-hero__media .y-img{
  width:100%;
  height:100%;
  will-change:transform;
}
.y-hero__scrim{
  position:absolute;
  inset:0;
  z-index:1;
  background:var(--y-scrim-hero);
  pointer-events:none;
}
.y-hero__inner{
  position:relative;
  z-index:2;
  width:100%;
  max-width:var(--y-max);
  margin-inline:auto;
  padding-inline:var(--y-gutter);
  padding-block:var(--y-s10) var(--y-s9);
  display:flex;
  flex-direction:column;
  gap:var(--y-s5);
  color:var(--y-superficie);
}
.y-hero__ubi{
  display:inline-flex;
  align-items:center;
  gap:var(--y-s2);
  align-self:flex-start;
  padding:var(--y-s2) var(--y-s4);
  border-radius:var(--y-r-chip);
  background:var(--y-vidrio-oscuro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-linea-clara);
  font-size:var(--y-micro);
  font-weight:600;
  color:var(--y-superficie);
  min-height:36px;
}
.y-hero__punto{
  width:8px; height:8px;
  border-radius:var(--y-r-chip);
  background:var(--y-sol);
  animation:y-pulso 2400ms ease-in-out infinite;
  flex:0 0 auto;
}
.y-hero__titulo{ color:var(--y-superficie); max-width:16ch; }
.y-hero__lead{ color:var(--y-superficie); max-width:52ch; opacity:.94; }
.y-hero__acciones{ display:flex; flex-wrap:wrap; gap:var(--y-s3); }

/* Panel de reserva flotante (desktop) */
.y-hero__panel{
  display:none;
  width:min(520px,100%);
  padding:var(--y-s6);
  border-radius:var(--y-r-xl);
  background:var(--y-vidrio-claro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-vidrio-borde);
  box-shadow:var(--y-sh-vidrio);
  color:var(--y-tinta);
}
.y-hero__panel .y-micro{ color:var(--y-tinta-2); }

/* Tarjetas de dato escalonadas a la derecha */
.y-hero__tarjetas{
  display:none;
  position:absolute;
  right:var(--y-gutter);
  bottom:calc(var(--y-s10) + var(--y-s9));
  z-index:2;
  flex-direction:column;
  gap:var(--y-s4);
  width:280px;
}
.y-hero__tarjeta{
  padding:var(--y-s5);
  border-radius:var(--y-r-lg);
  background:var(--y-vidrio-oscuro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-linea-clara);
  box-shadow:var(--y-sh-vidrio);
  color:var(--y-superficie);
  font-size:var(--y-body-sm);
  font-weight:600;
  display:flex; align-items:center; gap:var(--y-s3);
}
.y-hero__tarjeta:nth-child(2){ margin-right:var(--y-s8); }
.y-hero__mini{
  width:48px; height:48px;
  flex:0 0 auto;
  border-radius:var(--y-r-chip);
  overflow:hidden;
  position:relative;
}

/* Carrete de miniaturas pegado al borde inferior */
.y-hero__carrete{
  position:absolute;
  left:0; right:0;
  bottom:var(--y-s5);
  z-index:2;
  display:none;
  gap:var(--y-s3);
  padding-inline:var(--y-gutter);
  max-width:var(--y-max);
  margin-inline:auto;
  overflow-x:auto;
  scrollbar-width:none;
}
.y-hero__carrete::-webkit-scrollbar{ display:none; }
.y-hero__thumb{
  position:relative;
  flex:0 0 auto;
  width:84px;
  aspect-ratio:1/1;
  border-radius:var(--y-r-sm);
  overflow:hidden;
  box-shadow:var(--y-sh-2);
}

@media (min-width:900px){
  .y-hero{ align-items:center; }
  .y-hero__inner{ padding-block:var(--y-s10); gap:var(--y-s6); }
  .y-hero__panel{ display:block; }
  .y-hero__tarjetas{ display:flex; }
  .y-hero__carrete{ display:flex; }
  .y-hero__acciones{ display:none; }
}

/* ==========================================================================
   09 · CABECERA DE SECCIÓN
   ========================================================================== */
.y-sec-head{
  display:flex;
  flex-direction:column;
  gap:var(--y-s4);
  max-width:52ch;
  margin-bottom:var(--y-s9);
}
.y-sec-head--claro .y-h2,
.y-sec-head--claro h2{ color:var(--y-superficie); }
.y-sec-head--claro .y-lead{ color:var(--y-turquesa-suave); }
.y-sec-head--conChips{ margin-bottom:var(--y-s6); }
.y-sec-head + .y-chips{ margin-bottom:var(--y-s7); }

/* ==========================================================================
   10 · CONTADORES Y BANDA DE DATOS
   ========================================================================== */
.y-datos{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:var(--y-gap);
}
@media (min-width:900px){ .y-datos{ grid-template-columns:repeat(4,1fr); } }
.y-dato{
  background:var(--y-superficie);
  border:1px solid var(--y-linea);
  border-radius:var(--y-r-md);
  box-shadow:var(--y-sh-1);
  padding:var(--y-card-pad);
  display:flex;
  flex-direction:column;
  gap:var(--y-s2);
}
.y-dato__num{
  font-family:var(--y-font-display);
  font-weight:700;
  font-size:clamp(2.5rem,5.6vw,4rem);
  line-height:1;
  letter-spacing:-0.03em;
  font-variant-numeric:tabular-nums;
  color:var(--y-tinta);
}
.y-dato__num small{
  font-family:var(--y-font-texto);
  font-size:var(--y-body-sm);
  font-weight:700;
  letter-spacing:0;
  margin-left:var(--y-s1);
  color:var(--y-tinta-2);
}
.y-dato__txt{ font-size:var(--y-meta); color:var(--y-tinta-2); }

/* ==========================================================================
   11 · TARJETAS: HABITACIÓN, PLAN, SERVICIO, DESTINO
   ========================================================================== */
.y-room,
.y-plan,
.y-serv,
.y-destino{
  display:flex;
  flex-direction:column;
  height:100%;
  background:var(--y-superficie);
  border:1px solid var(--y-linea);
  overflow:hidden;
  transition:transform var(--y-t-card) var(--y-ease-suave),
             box-shadow var(--y-t-card) var(--y-ease-suave);
}
.y-room,.y-plan,.y-destino{ border-radius:var(--y-r-md); box-shadow:var(--y-sh-2); }
.y-serv{ border-radius:var(--y-r-sm); box-shadow:var(--y-sh-1); }

.y-room__media,
.y-plan__media,
.y-serv__media,
.y-destino__media{
  position:relative;
  overflow:hidden;
  flex:0 0 auto;
  background:var(--y-superficie-2);
  isolation:isolate;
}
.y-room__media{ aspect-ratio:4/3; border-radius:var(--y-r-sm); margin:var(--y-s2); }
.y-plan__media{ aspect-ratio:3/2; border-radius:var(--y-r-sm); margin:var(--y-s2); }
.y-serv__media{ aspect-ratio:16/10; border-radius:10px; margin:var(--y-s1); }
.y-destino__media{ aspect-ratio:3/4; border-radius:var(--y-r-sm); margin:var(--y-s2); }

.y-room__body,
.y-plan__body,
.y-destino__body{
  display:flex;
  flex-direction:column;
  gap:var(--y-s3);
  padding:var(--y-card-pad);
  flex:1 1 auto;
}
.y-serv__body{
  display:flex;
  flex-direction:column;
  gap:var(--y-s1);
  padding:var(--y-s4) var(--y-s5) var(--y-s5);
}
.y-room__desc,.y-plan__body .y-body-sm{ color:var(--y-tinta-2); }
.y-room__body .y-btn,
.y-plan__acciones{ margin-top:auto; }

.y-room__specs{ display:flex; flex-direction:column; gap:var(--y-s2); }
.y-spec{
  display:flex;
  align-items:flex-start;
  gap:var(--y-s2);
  font-size:var(--y-meta);
  color:var(--y-tinta-2);
  line-height:1.4;
}
.y-spec .y-ico{ width:18px; height:18px; color:var(--y-turquesa); margin-top:1px; }

.y-plan__meta{ display:flex; flex-wrap:wrap; gap:var(--y-s2); }
.y-plan__acciones{ display:flex; flex-wrap:wrap; gap:var(--y-s2); }
.y-plan__acciones .y-btn{ flex:1 1 auto; }

.y-plan__add[aria-pressed="true"]{
  background:var(--y-turquesa-suave);
  border-color:var(--y-turquesa);
  color:var(--y-turquesa);
}

@media (hover:hover){
  .y-room:hover,.y-plan:hover,.y-destino:hover{
    transform:translateY(-6px);
    box-shadow:var(--y-sh-3);
  }
  .y-serv:hover{ transform:translateY(-4px); box-shadow:var(--y-sh-2); }
  .y-room:hover .y-img,
  .y-plan:hover .y-img,
  .y-serv:hover .y-img,
  .y-destino:hover .y-img,
  .y-gal-item__btn:hover .y-img{ transform:scale(1.04); }
}
.y-room .y-img,
.y-plan .y-img,
.y-serv .y-img,
.y-destino .y-img,
.y-gal-item .y-img{
  transition:transform var(--y-t-foto) var(--y-ease-suave),
             opacity var(--y-t-estado) var(--y-ease-suave);
}
.y-room:active,.y-plan:active,.y-serv:active,.y-destino:active{
  transform:scale(.985);
  transition-duration:var(--y-t-micro);
}

/* Estado oculto por filtro */
.y-oculto{ display:none !important; }
.y-saliendo{
  opacity:0;
  transform:scale(.96);
  transition:opacity 180ms var(--y-ease-suave), transform 180ms var(--y-ease-suave);
}

/* ==========================================================================
   12 · CHIPS DE FILTRO Y ESTADO VACÍO
   ========================================================================== */
.y-chips{
  display:flex;
  gap:var(--y-s3);
  align-items:center;
  overflow-x:auto;
  scroll-snap-type:x proximity;
  padding-block:var(--y-s1);
  padding-inline:var(--y-gutter);
  margin-inline:calc(var(--y-gutter) * -1);
  scrollbar-width:none;
}
.y-chips::-webkit-scrollbar{ display:none; }
@media (min-width:768px){
  .y-chips{
    flex-wrap:wrap;
    overflow:visible;
    padding-inline:0;
    margin-inline:0;
  }
}
.y-chip{
  scroll-snap-align:start;
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:var(--y-s2);
  min-height:44px;
  padding-inline:var(--y-s5);
  border-radius:var(--y-r-chip);
  border:1px solid transparent;
  background:var(--y-superficie-2);
  color:var(--y-tinta);
  font-family:var(--y-font-texto);
  font-weight:600;
  font-size:var(--y-meta);
  line-height:1;
  white-space:nowrap;
  transition:background-color var(--y-t-estado) var(--y-ease-suave),
             border-color var(--y-t-estado) var(--y-ease-suave),
             color var(--y-t-estado) var(--y-ease-suave),
             transform var(--y-t-micro) var(--y-ease-suave);
}
.y-chip:hover{ background:var(--y-superficie); border-color:var(--y-linea-fuerte); }
.y-chip:active{ transform:scale(.94); }
.y-chip[aria-pressed="true"]{
  background:var(--y-turquesa-suave);
  color:var(--y-turquesa);
  border-color:var(--y-turquesa);
}
.y-chip:focus-visible{ outline:3px solid var(--y-turquesa); outline-offset:2px; }
.y-chips__live{ margin-top:var(--y-s3); }

.y-vacio{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:var(--y-s4);
  padding:var(--y-s8) var(--y-card-pad);
  border:1px dashed var(--y-linea-fuerte);
  border-radius:var(--y-r-md);
  background:var(--y-superficie);
}

/* ==========================================================================
   13 · CARRUSEL SCROLL-SNAP
   ========================================================================== */
.y-carrusel{ position:relative; }
.y-carrusel__pista{
  display:flex;
  gap:var(--y-gap);
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  padding-block:var(--y-s2) var(--y-s6);
  padding-inline:var(--y-gutter);
  margin-inline:calc(var(--y-gutter) * -1);
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.y-carrusel__pista::-webkit-scrollbar{ display:none; }
.y-carrusel__item{
  scroll-snap-align:start;
  flex:0 0 82vw;
  max-width:420px;
}
@media (min-width:640px){ .y-carrusel__item{ flex-basis:46vw; } }
@media (min-width:1100px){
  .y-carrusel__item{ flex-basis:340px; }
  .y-carrusel__pista{ padding-inline:0; margin-inline:0; }
}
.y-carrusel__nav{ display:flex; gap:var(--y-s2); justify-content:flex-end; margin-top:var(--y-s3); }
.y-carrusel__flecha{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px; height:44px;
  border-radius:var(--y-r-chip);
  border:1.5px solid var(--y-linea-fuerte);
  color:var(--y-tinta);
  background:var(--y-superficie);
  transition:border-color var(--y-t-estado) var(--y-ease-suave),
             color var(--y-t-estado) var(--y-ease-suave);
}
.y-carrusel__flecha:hover{ border-color:var(--y-turquesa); color:var(--y-turquesa); }
.y-carrusel__flecha[disabled]{ opacity:.4; pointer-events:none; }

/* ==========================================================================
   14 · GALERÍA Y LIGHTBOX
   ========================================================================== */
.y-gal{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:var(--y-s3);
}
@media (min-width:640px){ .y-gal{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:1100px){ .y-gal{ grid-template-columns:repeat(4,1fr); } }

.y-gal-item{
  position:relative;
  overflow:hidden;
  border-radius:var(--y-r-sm);
  aspect-ratio:var(--ar,4/3);
  background:var(--y-superficie-2);
  isolation:isolate;
}
.y-gal-item__btn{
  display:block;
  width:100%; height:100%;
  position:relative;
}
.y-gal-item__btn:focus-visible{ outline:3px solid var(--y-turquesa); outline-offset:-3px; }
.y-gal-item__lupa{
  position:absolute;
  right:var(--y-s3); bottom:var(--y-s3);
  z-index:4;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:36px; height:36px;
  border-radius:var(--y-r-chip);
  background:var(--y-vidrio-oscuro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  color:var(--y-superficie);
  opacity:0;
  transform:scale(.9);
  transition:opacity var(--y-t-estado) var(--y-ease-suave),
             transform var(--y-t-estado) var(--y-ease-suave);
}
.y-gal-item__btn:hover .y-gal-item__lupa,
.y-gal-item__btn:focus-visible .y-gal-item__lupa{ opacity:1; transform:none; }
@media (hover:none){ .y-gal-item__lupa{ opacity:1; transform:none; } }

/* --- Lightbox --- */
.y-lb{
  position:fixed;
  inset:0;
  z-index:var(--y-z-lightbox);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:var(--y-s4);
}
.y-lb[hidden]{ display:none; }
.y-lb__fondo{
  position:absolute;
  inset:0;
  background:var(--y-vidrio-oscuro-solido);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  animation:y-fade var(--y-t-estado) var(--y-ease-suave) both;
}
@keyframes y-fade{ from{ opacity:0; } to{ opacity:1; } }
.y-lb__fig{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  gap:var(--y-s3);
  align-items:center;
  max-width:min(1100px,100%);
  max-height:100%;
  animation:y-lb-in 320ms var(--y-ease-salida) both;
}
@keyframes y-lb-in{
  from{ opacity:0; transform:scale(.94); }
  to{ opacity:1; transform:none; }
}
.y-lb__img{
  display:block;
  max-width:100%;
  max-height:calc(100svh - 190px);
  width:auto; height:auto;
  object-fit:contain;
  border-radius:var(--y-r-md);
  background:var(--y-selva);
  filter:var(--y-grado);
}
.y-lb__pie{
  color:var(--y-superficie);
  text-align:center;
  max-width:64ch;
  font-family:var(--y-font-display);
  font-style:italic;
  font-size:var(--y-pie);
  line-height:1.4;
}
.y-lb__contador{
  color:var(--y-turquesa-suave);
  font-size:var(--y-micro);
  font-weight:600;
  font-variant-numeric:tabular-nums;
}
.y-lb__cerrar,
.y-lb__prev,
.y-lb__next{
  position:absolute;
  z-index:2;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:48px; height:48px;
  border-radius:var(--y-r-chip);
  background:var(--y-vidrio-oscuro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-linea-clara);
  color:var(--y-superficie);
  transition:background-color var(--y-t-estado) var(--y-ease-suave);
}
.y-lb__cerrar:hover,.y-lb__prev:hover,.y-lb__next:hover{ background:var(--y-vidrio-oscuro-solido); }
.y-lb__cerrar:focus-visible,.y-lb__prev:focus-visible,.y-lb__next:focus-visible{
  outline:3px solid var(--y-superficie); outline-offset:2px;
}
.y-lb__cerrar{ top:var(--y-s4); right:var(--y-s4); }
.y-lb__prev{ left:var(--y-s4); top:50%; transform:translateY(-50%); }
.y-lb__next{ right:var(--y-s4); top:50%; transform:translateY(-50%); }
@media (max-width:639px){
  .y-lb__prev{ left:var(--y-s3); }
  .y-lb__next{ right:var(--y-s3); }
  .y-lb__img{ max-height:calc(100svh - 220px); }
}

/* ==========================================================================
   15 · TESTIMONIOS Y SLIDER
   ========================================================================== */
.y-quote{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:var(--y-s5);
  height:100%;
  background:var(--y-superficie);
  border:1px solid var(--y-linea);
  border-radius:var(--y-r-md);
  box-shadow:var(--y-sh-2);
  padding:var(--y-card-pad);
  overflow:hidden;
  transition:transform var(--y-t-card) var(--y-ease-suave),
             box-shadow var(--y-t-card) var(--y-ease-suave);
}
@media (hover:hover){ .y-quote:hover{ transform:translateY(-6px); box-shadow:var(--y-sh-3); } }
.y-quote__mark{
  position:absolute;
  top:var(--y-s2); right:var(--y-s5);
  font-family:var(--y-font-display);
  font-weight:700;
  font-size:4rem;
  line-height:1;
  color:var(--y-sol);
  opacity:.35;
  pointer-events:none;
}
.y-quote__txt{
  font-family:var(--y-font-display);
  font-weight:400;
  font-size:clamp(1.125rem,2vw,1.5rem);
  line-height:1.4;
  color:var(--y-tinta);
  position:relative;
  z-index:1;
}
.y-quote__pie{
  display:flex;
  flex-direction:column;
  gap:var(--y-s1);
  margin-top:auto;
}
.y-quote__nombre{ font-weight:700; font-size:var(--y-body-sm); }
.y-quote__meta{ font-size:var(--y-micro); color:var(--y-tinta-2); }
.y-quote__nota{ font-size:var(--y-micro); font-weight:600; color:var(--y-turquesa); }

/* Tarjeta de subpuntajes */
.y-quote--datos{ gap:var(--y-s4); background:var(--y-turquesa-suave); box-shadow:var(--y-sh-1); }
.y-quote__dato{ display:flex; flex-direction:column; gap:var(--y-s2); }
.y-quote__dato-fila{
  display:flex; justify-content:space-between; align-items:baseline;
  font-size:var(--y-body-sm); font-weight:600;
  font-variant-numeric:tabular-nums;
}
.y-quote__barra{
  height:6px;
  border-radius:var(--y-r-chip);
  background:var(--y-superficie);
  overflow:hidden;
}
.y-quote__barra span{
  display:block;
  height:100%;
  border-radius:var(--y-r-chip);
  background:var(--y-turquesa);
  width:var(--val,0%);
  transition:width var(--y-t-reveal) var(--y-ease-salida);
}

/* Slider genérico (testimonios) */
.y-slider{ position:relative; }
.y-slider__pista{
  display:flex;
  gap:var(--y-gap);
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  padding-block:var(--y-s2) var(--y-s5);
  padding-inline:var(--y-gutter);
  margin-inline:calc(var(--y-gutter) * -1);
  scrollbar-width:none;
}
.y-slider__pista::-webkit-scrollbar{ display:none; }
.y-slider__item{ scroll-snap-align:start; flex:0 0 86vw; max-width:460px; }
@media (min-width:768px){ .y-slider__item{ flex-basis:44vw; } }
@media (min-width:1100px){
  .y-slider__item{ flex-basis:calc((100% - var(--y-gap) * 2) / 3); max-width:none; }
  .y-slider__pista{ padding-inline:0; margin-inline:0; }
}
.y-slider__ctrl{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--y-s4);
  margin-top:var(--y-s4);
}
.y-slider__puntos{ display:flex; gap:var(--y-s2); align-items:center; }
.y-slider__punto{
  width:44px; height:44px;
  display:inline-flex; align-items:center; justify-content:center;
  border-radius:var(--y-r-chip);
}
.y-slider__punto::before{
  content:"";
  display:block;
  width:8px; height:8px;
  border-radius:var(--y-r-chip);
  background:var(--y-linea-fuerte);
  transition:background-color var(--y-t-estado) var(--y-ease-suave),
             width var(--y-t-estado) var(--y-ease-suave);
}
.y-slider__punto[aria-current="true"]::before{ width:24px; background:var(--y-turquesa); }
.y-slider__flechas{ display:flex; gap:var(--y-s2); }

/* ==========================================================================
   16 · ACORDEÓN FAQ
   Soporta <details>/<summary> nativo y la variante <button aria-expanded>.
   ========================================================================== */
.y-faq{ display:flex; flex-direction:column; gap:var(--y-s3); max-width:var(--y-medida); }
.y-faq__item{
  background:var(--y-superficie);
  border:1px solid var(--y-linea);
  border-radius:var(--y-r-sm);
  overflow:hidden;
}
.y-faq__q{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--y-s4);
  width:100%;
  min-height:56px;
  padding:var(--y-s5);
  text-align:left;
  font-family:var(--y-font-texto);
  font-weight:600;
  font-size:var(--y-h4);
  line-height:1.35;
  color:var(--y-tinta);
  cursor:pointer;
  list-style:none;
}
.y-faq__q::-webkit-details-marker{ display:none; }
.y-faq__q::marker{ content:""; }
.y-faq__q:hover{ color:var(--y-turquesa); }
.y-faq__q:focus-visible{ outline:3px solid var(--y-turquesa); outline-offset:-3px; }
.y-faq__chev{
  color:var(--y-turquesa);
  transition:transform var(--y-t-estado) var(--y-ease-suave);
}
.y-faq__item[open] .y-faq__chev,
.y-faq__q[aria-expanded="true"] .y-faq__chev{ transform:rotate(180deg); }

.y-faq__a{
  padding:0 var(--y-s5) var(--y-s5);
  display:flex;
  flex-direction:column;
  gap:var(--y-s4);
  align-items:flex-start;
}
.y-faq__a .y-body{ color:var(--y-tinta-2); }

/* Variante JS (button + div): animación de altura sin saltos */
.y-faq__panel{
  display:grid;
  grid-template-rows:0fr;
  transition:grid-template-rows var(--y-t-estado) var(--y-ease-suave);
}
.y-faq__panel > *{ overflow:hidden; }
.y-faq__panel.is-abierto{ grid-template-rows:1fr; }

/* ==========================================================================
   17 · FORMULARIOS
   ========================================================================== */
.y-form{ display:flex; flex-direction:column; gap:var(--y-s5); }
.y-campo{ display:flex; flex-direction:column; gap:var(--y-s2); }
.y-campo__label{
  font-size:var(--y-meta);
  font-weight:600;
  color:var(--y-tinta);
}
.y-campo__ayuda{ font-size:var(--y-micro); color:var(--y-tinta-2); }

.y-input,
.y-select,
.y-textarea{
  width:100%;
  min-height:52px;
  padding:var(--y-s3) var(--y-s4);
  border-radius:var(--y-r-sm);
  border:1.5px solid var(--y-linea-fuerte);
  background:var(--y-superficie);
  color:var(--y-tinta);
  font-family:var(--y-font-texto);
  font-size:var(--y-body-sm);
  line-height:1.4;
  transition:border-color var(--y-t-estado) var(--y-ease-suave),
             box-shadow var(--y-t-estado) var(--y-ease-suave);
  -webkit-appearance:none;
  appearance:none;
}
.y-textarea{ min-height:110px; padding-block:var(--y-s3); resize:vertical; }
.y-select{
  background-image:linear-gradient(45deg,transparent 50%,var(--y-turquesa) 50%),
                   linear-gradient(135deg,var(--y-turquesa) 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%, calc(100% - 14px) 50%;
  background-size:6px 6px, 6px 6px;
  background-repeat:no-repeat;
  padding-right:var(--y-s8);
}
.y-input:hover,.y-select:hover,.y-textarea:hover{ border-color:var(--y-turquesa); }
.y-input:focus-visible,.y-select:focus-visible,.y-textarea:focus-visible{
  outline:3px solid var(--y-turquesa);
  outline-offset:2px;
  border-color:var(--y-turquesa);
}
.y-input[aria-invalid="true"],
.y-select[aria-invalid="true"],
.y-textarea[aria-invalid="true"]{ border-color:var(--y-terracota); }
.y-input[disabled],.y-select[disabled],.y-textarea[disabled]{ opacity:.5; pointer-events:none; }
.y-error{
  font-size:var(--y-micro);
  font-weight:600;
  color:var(--y-terracota);
  display:flex; align-items:center; gap:var(--y-s2);
}
.y-error:empty{ display:none; }

/* Stepper numérico (adultos, niños, habitaciones) */
.y-stepper{
  display:inline-flex;
  align-items:center;
  gap:var(--y-s2);
  background:var(--y-superficie-2);
  border-radius:var(--y-r-chip);
  padding:var(--y-s1);
}
.y-stepper__btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px; height:44px;
  border-radius:var(--y-r-chip);
  background:var(--y-superficie);
  border:1px solid var(--y-linea-fuerte);
  color:var(--y-turquesa);
  transition:border-color var(--y-t-estado) var(--y-ease-suave),
             background-color var(--y-t-estado) var(--y-ease-suave);
}
.y-stepper__btn:hover{ border-color:var(--y-turquesa); background:var(--y-turquesa-suave); }
.y-stepper__btn[disabled]{ opacity:.4; pointer-events:none; }
.y-stepper__valor{
  min-width:3ch;
  text-align:center;
  font-weight:700;
  font-size:var(--y-h4);
  font-variant-numeric:tabular-nums;
}
.y-stepper__fila{
  display:flex; align-items:center; justify-content:space-between; gap:var(--y-s4);
  padding-block:var(--y-s3);
  border-bottom:1px solid var(--y-linea);
}
.y-stepper__fila:last-child{ border-bottom:0; }

/* Opciones tipo tarjeta (radio / checkbox accesible) */
.y-opts{ display:flex; flex-direction:column; gap:var(--y-s3); }
@media (min-width:640px){ .y-opts--2{ display:grid; grid-template-columns:repeat(2,1fr); } }
.y-opt{
  position:relative;
  display:flex;
  align-items:center;
  gap:var(--y-s3);
  min-height:56px;
  padding:var(--y-s4) var(--y-s5);
  border-radius:var(--y-r-sm);
  border:1.5px solid var(--y-linea-fuerte);
  background:var(--y-superficie);
  cursor:pointer;
  font-size:var(--y-body-sm);
  font-weight:600;
  transition:border-color var(--y-t-estado) var(--y-ease-suave),
             background-color var(--y-t-estado) var(--y-ease-suave),
             color var(--y-t-estado) var(--y-ease-suave);
}
.y-opt:hover{ border-color:var(--y-turquesa); background:var(--y-superficie); }
.y-opt input{
  position:absolute;
  opacity:0;
  width:1px; height:1px;
  margin:0;
}
.y-opt__caja{
  width:22px; height:22px;
  flex:0 0 auto;
  border-radius:var(--y-r-sm);
  border:1.5px solid var(--y-linea-fuerte);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--y-superficie);
  transition:background-color var(--y-t-estado) var(--y-ease-suave),
             border-color var(--y-t-estado) var(--y-ease-suave);
}
.y-opt input[type="radio"] ~ .y-opt__caja{ border-radius:var(--y-r-chip); }
.y-opt__caja .y-ico{ width:14px; height:14px; opacity:0; }
.y-opt input:checked ~ .y-opt__caja{ background:var(--y-turquesa); border-color:var(--y-turquesa); }
.y-opt input:checked ~ .y-opt__caja .y-ico{ opacity:1; }
.y-opt:has(input:checked){
  border-color:var(--y-turquesa);
  background:var(--y-turquesa-suave);
  color:var(--y-turquesa);
}
.y-opt:has(input:focus-visible){ outline:3px solid var(--y-turquesa); outline-offset:2px; }
.y-opt__txt{ display:flex; flex-direction:column; gap:2px; }
.y-opt__sub{ font-weight:500; font-size:var(--y-micro); color:var(--y-tinta-2); }
.y-opt:has(input:checked) .y-opt__sub{ color:var(--y-turquesa); }

/* ==========================================================================
   18 · WIZARD DE RESERVA (MODAL)
   El markup lo inyecta app.js. Aquí solo su vestido.
   ========================================================================== */
.y-wiz{
  position:fixed;
  inset:0;
  z-index:var(--y-z-lightbox);
  display:flex;
  align-items:flex-end;
  justify-content:center;
  padding:0;
}
.y-wiz[hidden]{ display:none; }
@media (min-width:640px){
  .y-wiz{ align-items:center; padding:var(--y-s6); }
}
.y-wiz__fondo{
  position:absolute;
  inset:0;
  background:var(--y-vidrio-oscuro-solido);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  animation:y-fade var(--y-t-estado) var(--y-ease-suave) both;
}
.y-wiz__caja{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  width:100%;
  max-width:600px;
  max-height:calc(100svh - var(--y-s5));
  background:var(--y-crema);
  border:1px solid var(--y-linea);
  border-radius:var(--y-r-xl) var(--y-r-xl) 0 0;
  box-shadow:var(--y-sh-3);
  overflow:hidden;
  animation:y-wiz-in var(--y-t-barra) var(--y-ease-salida) both;
}
@media (min-width:640px){
  .y-wiz__caja{ border-radius:var(--y-r-xl); max-height:calc(100svh - var(--y-s10)); }
}
@keyframes y-wiz-in{
  from{ opacity:0; transform:translateY(24px) scale(.98); }
  to{ opacity:1; transform:none; }
}
.y-wiz__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:var(--y-s4);
  padding:var(--y-s6) var(--y-card-pad) var(--y-s4);
  background:var(--y-superficie);
  border-bottom:1px solid var(--y-linea);
}
.y-wiz__titulos{ display:flex; flex-direction:column; gap:var(--y-s1); }
.y-wiz__paso-num{
  font-size:var(--y-micro);
  font-weight:600;
  letter-spacing:var(--y-ls-kicker);
  color:var(--y-turquesa);
  font-variant-numeric:tabular-nums;
}
.y-wiz__titulo{
  font-family:var(--y-font-display);
  font-weight:600;
  font-size:var(--y-h3);
  line-height:var(--y-lh-titulo);
  color:var(--y-tinta);
}
.y-wiz__cerrar{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px; height:44px;
  flex:0 0 auto;
  border-radius:var(--y-r-chip);
  border:1px solid var(--y-linea-fuerte);
  color:var(--y-tinta);
  background:var(--y-superficie);
  transition:border-color var(--y-t-estado) var(--y-ease-suave),
             color var(--y-t-estado) var(--y-ease-suave);
}
.y-wiz__cerrar:hover{ border-color:var(--y-turquesa); color:var(--y-turquesa); }
.y-wiz__progreso{
  height:4px;
  background:var(--y-superficie-2);
  overflow:hidden;
  flex:0 0 auto;
}
.y-wiz__barra{
  display:block;
  height:100%;
  width:20%;
  background:var(--y-turquesa);
  border-radius:var(--y-r-chip);
  transition:width var(--y-t-nav) var(--y-ease-salida);
}
.y-wiz__cuerpo{
  padding:var(--y-card-pad);
  overflow-y:auto;
  flex:1 1 auto;
  -webkit-overflow-scrolling:touch;
}
.y-wiz__paso{ display:flex; flex-direction:column; gap:var(--y-s5); }
.y-wiz__paso[hidden]{ display:none; }
.y-wiz__grid2{ display:grid; grid-template-columns:1fr; gap:var(--y-s4); }
@media (min-width:560px){ .y-wiz__grid2{ grid-template-columns:repeat(2,1fr); } }
.y-wiz__noches{
  display:flex; align-items:center; gap:var(--y-s2);
  padding:var(--y-s3) var(--y-s4);
  border-radius:var(--y-r-chip);
  background:var(--y-turquesa-suave);
  color:var(--y-turquesa);
  font-size:var(--y-meta);
  font-weight:600;
  align-self:flex-start;
  font-variant-numeric:tabular-nums;
}
.y-wiz__resumen{
  display:flex;
  flex-direction:column;
  gap:0;
  background:var(--y-superficie);
  border:1px solid var(--y-linea);
  border-radius:var(--y-r-md);
  padding:var(--y-s5);
}
.y-wiz__fila{
  display:flex;
  justify-content:space-between;
  gap:var(--y-s4);
  padding-block:var(--y-s3);
  border-bottom:1px solid var(--y-linea);
  font-size:var(--y-body-sm);
}
.y-wiz__fila:last-child{ border-bottom:0; }
.y-wiz__fila dt{ color:var(--y-tinta-2); }
.y-wiz__fila dd{ font-weight:600; text-align:right; }
.y-wiz__foot{
  display:flex;
  align-items:center;
  gap:var(--y-s3);
  padding:var(--y-s4) var(--y-card-pad);
  padding-bottom:calc(var(--y-s4) + env(safe-area-inset-bottom));
  background:var(--y-superficie);
  border-top:1px solid var(--y-linea);
  flex:0 0 auto;
}
.y-wiz__foot .y-btn--wa,
.y-wiz__foot .y-btn--primary{ margin-left:auto; }
.y-wiz__aviso{ font-size:var(--y-micro); color:var(--y-tinta-2); }

/* ==========================================================================
   19 · PANEL «TU PLAN» Y COTIZADOR FLOTANTE
   ========================================================================== */
.y-panel{
  display:flex;
  flex-direction:column;
  gap:var(--y-s4);
  background:var(--y-superficie);
  border:1px solid var(--y-linea);
  border-radius:var(--y-r-md);
  box-shadow:var(--y-sh-2);
  padding:var(--y-card-pad);
  transition:box-shadow 400ms var(--y-ease-suave);
}
.y-panel.is-pulso{ box-shadow:var(--y-sh-3); }
.y-panel__tit{ font-weight:700; font-size:var(--y-h4); }
.y-panel__lista{ display:flex; flex-direction:column; gap:var(--y-s2); }
.y-panel__item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--y-s3);
  padding:var(--y-s3) var(--y-s4);
  border-radius:var(--y-r-sm);
  background:var(--y-superficie-2);
  font-size:var(--y-meta);
  font-weight:600;
}
.y-panel__quitar{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px; height:44px;
  margin:-10px -10px -10px 0;
  border-radius:var(--y-r-chip);
  color:var(--y-tinta-2);
}
.y-panel__quitar:hover{ color:var(--y-terracota); }
.y-panel__vacio{ font-size:var(--y-meta); color:var(--y-tinta-2); }
.y-panel__nota{ font-size:var(--y-micro); color:var(--y-tinta-2); }

/* Cotizador flotante (lo inyecta app.js) */
.y-cot{
  position:fixed;
  left:var(--y-gutter);
  right:var(--y-gutter);
  bottom:calc(var(--y-s5) + env(safe-area-inset-bottom));
  z-index:var(--y-z-bar);
  display:flex;
  align-items:center;
  gap:var(--y-s4);
  max-width:520px;
  margin-inline:auto;
  padding:var(--y-s3) var(--y-s3) var(--y-s3) var(--y-s5);
  border-radius:var(--y-r-chip);
  background:var(--y-vidrio-claro-solido);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border:1px solid var(--y-linea);
  box-shadow:var(--y-sh-3);
  transform:translateY(140%);
  transition:transform var(--y-t-barra) var(--y-ease-salida);
}
.y-cot[data-visible="true"]{ transform:none; }
.y-cot[hidden]{ display:none; }
.y-cot__txt{ font-size:var(--y-meta); font-weight:600; line-height:1.3; }
.y-cot__txt span{ font-variant-numeric:tabular-nums; }
.y-cot .y-btn{ margin-left:auto; }

/* ==========================================================================
   20 · CTA FINAL
   ========================================================================== */
.y-cta{
  position:relative;
  width:100vw;
  margin-inline:calc(50% - 50vw);
  min-height:520px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  isolation:isolate;
  background:var(--y-selva);
  padding-block:var(--y-sec-pad);
}
.y-cta__bg{
  position:absolute;
  inset:0;
  width:100%; height:100%;
  object-fit:cover;
  object-position:50% 55%;
  z-index:0;
}
.y-cta__velo{
  position:absolute;
  inset:0;
  z-index:1;
  background:var(--y-scrim-hero);
  pointer-events:none;
}
.y-cta__velo::before{
  content:"";
  position:absolute;
  inset:0;
  background:var(--y-selva);
  opacity:.82;
}
.y-cta__inner{
  position:relative;
  z-index:2;
  width:100%;
  max-width:var(--y-max);
  margin-inline:auto;
  padding-inline:var(--y-gutter);
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  gap:var(--y-s5);
  color:var(--y-superficie);
}
.y-cta__inner .y-h2,
.y-cta__inner h2{ color:var(--y-superficie); max-width:20ch; }
.y-cta__inner .y-lead{ margin-inline:auto; }
.y-cta__acciones{
  display:flex;
  flex-wrap:wrap;
  gap:var(--y-s3);
  justify-content:center;
  margin-top:var(--y-s2);
}

/* ==========================================================================
   21 · FOOTER
   ========================================================================== */
.y-footer{
  background:var(--y-selva);
  color:var(--y-crema);
  padding-block:var(--y-s10) var(--y-s6);
}
.y-footer__inner{
  width:100%;
  max-width:var(--y-max);
  margin-inline:auto;
  padding-inline:var(--y-gutter);
  display:grid;
  grid-template-columns:1fr;
  gap:var(--y-s8);
}
@media (min-width:640px){ .y-footer__inner{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1024px){ .y-footer__inner{ grid-template-columns:1.4fr 1fr 1fr 1.2fr; } }
.y-footer__col{ display:flex; flex-direction:column; gap:var(--y-s3); }
.y-footer__marca{
  font-family:var(--y-font-display);
  font-weight:600;
  font-size:clamp(1.4rem,2.4vw,1.9rem);
  line-height:1.1;
  color:var(--y-superficie);
}
.y-footer__dir{ color:var(--y-crema); opacity:.82; }
.y-footer__tit{
  font-family:var(--y-font-texto);
  font-weight:700;
  font-size:var(--y-body-sm);
  color:var(--y-turquesa-suave);
  margin-bottom:var(--y-s1);
}
.y-footer__link{
  display:flex;
  align-items:center;
  min-height:44px;
  font-size:var(--y-body-sm);
  color:var(--y-crema);
  opacity:.82;
  transition:color var(--y-t-estado) var(--y-ease-suave),
             opacity var(--y-t-estado) var(--y-ease-suave);
}
.y-footer__link:hover{ color:var(--y-sol); opacity:1; }
.y-footer .y-meta,
.y-footer .y-micro{ color:var(--y-crema); opacity:.82; }
.y-footer__horario{ margin-top:var(--y-s2); }
.y-footer__redes{ display:flex; gap:var(--y-s2); margin-top:var(--y-s2); }
.y-footer__redes a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px; height:44px;
  border-radius:var(--y-r-chip);
  border:1px solid var(--y-linea-clara);
  color:var(--y-crema);
  transition:color var(--y-t-estado) var(--y-ease-suave),
             border-color var(--y-t-estado) var(--y-ease-suave);
}
.y-footer__redes a:hover{ color:var(--y-sol); border-color:var(--y-sol); }
.y-footer__redes a:focus-visible{ outline:3px solid var(--y-superficie); outline-offset:2px; }
.y-footer__base{
  width:100%;
  max-width:var(--y-max);
  margin:var(--y-s8) auto 0;
  padding:var(--y-s5) var(--y-gutter) 0;
  border-top:1px solid var(--y-linea-clara);
  display:flex;
  flex-wrap:wrap;
  gap:var(--y-s3) var(--y-s6);
  justify-content:space-between;
}

/* ==========================================================================
   22 · BARRA MÓVIL Y FAB
   ========================================================================== */
.y-bar{
  position:fixed;
  left:0; right:0; bottom:0;
  z-index:var(--y-z-bar);
  display:flex;
  align-items:center;
  gap:var(--y-s4);
  padding:var(--y-s3) var(--y-gutter);
  padding-bottom:calc(var(--y-s3) + env(safe-area-inset-bottom));
  background:var(--y-vidrio-claro);
  -webkit-backdrop-filter:var(--y-vidrio-blur);
  backdrop-filter:var(--y-vidrio-blur);
  border-top:1px solid var(--y-linea);
  box-shadow:var(--y-sh-3);
  transform:translateY(110%);
  transition:transform var(--y-t-barra) var(--y-ease-salida);
}
.y-bar[data-visible="true"]{ transform:none; }
.y-bar__info{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.y-bar__tit{ font-weight:700; font-size:var(--y-body-sm); line-height:1.2; }
.y-bar__meta{
  font-size:var(--y-micro);
  color:var(--y-tinta-2);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.y-bar .y-btn{ margin-left:auto; flex:0 0 auto; }
@media (min-width:1024px){ .y-bar{ display:none; } }

.y-fab{
  position:fixed;
  right:var(--y-gutter);
  bottom:calc(var(--y-gutter) + env(safe-area-inset-bottom));
  z-index:var(--y-z-fab);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:56px; height:56px;
  border-radius:var(--y-r-chip);
  background:var(--y-wa);
  color:var(--y-superficie);
  box-shadow:var(--y-sh-3);
  opacity:0;
  transform:scale(.9);
  pointer-events:none;
  transition:opacity var(--y-t-estado) var(--y-ease-suave),
             transform var(--y-t-estado) var(--y-ease-suave),
             background-color var(--y-t-estado) var(--y-ease-suave);
}
.y-fab[data-visible="true"]{ opacity:1; transform:none; pointer-events:auto; }
.y-fab:hover{ background:var(--y-wa-osc); transform:scale(1.06); }
.y-fab:focus-visible{ outline:3px solid var(--y-turquesa); outline-offset:3px; }

/* Espacio inferior cuando la barra está visible, para no tapar el footer */
body.y-conBarra{ padding-bottom:84px; }
@media (min-width:1024px){ body.y-conBarra{ padding-bottom:0; } }

/* ==========================================================================
   23 · REVEAL Y MOVIMIENTO
   ========================================================================== */
.js .y-reveal{
  opacity:0;
  transform:translateY(16px) scale(.985);
  transition:opacity var(--y-t-reveal) var(--y-ease-salida),
             transform var(--y-t-reveal) var(--y-ease-salida);
  transition-delay:var(--y-delay,0ms);
  will-change:transform,opacity;
}
.js .y-reveal.is-visible{
  opacity:1;
  transform:none;
  will-change:auto;
}
[data-parallax]{ will-change:transform; }

/* Ken Burns del hero: solo ≥640px y solo una vez */
@media (min-width:640px){
  .y-hero[data-kenburns="true"] .y-hero__media .y-img{
    animation:y-kenburns 20000ms ease-out 1 forwards;
  }
}
@keyframes y-kenburns{
  from{ transform:scale(1); }
  to{ transform:scale(1.05); }
}

/* ==========================================================================
   24 · BLINDAJES FINALES
   ========================================================================== */

/* Regla de cero mayúsculas sostenidas en todo el sitio */
*{ text-transform:none !important; }

/* Movimiento reducido: segunda versión igual de terminada */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  html{ scroll-behavior:auto; }
  .js .y-reveal{ opacity:1 !important; transform:none !important; }
  .y-hero__media .y-img,
  [data-parallax]{ transform:none !important; }
  .y-carrusel__pista,
  .y-slider__pista{ scroll-behavior:auto; }
  .y-kicker__dot,
  .y-hero__punto{ animation:none !important; opacity:1; }
  .js .y-media:not(.is-lista)::before,
  .js .y-room__media:not(.is-lista)::before,
  .js .y-plan__media:not(.is-lista)::before,
  .js .y-serv__media:not(.is-lista)::before,
  .js .y-destino__media:not(.is-lista)::before,
  .js .y-gal-item:not(.is-lista)::before{ animation:none !important; }
}

/* Impresión */
@media print{
  .y-nav,.y-bar,.y-fab,.y-cot,.y-lb,.y-wiz{ display:none !important; }
  body{ background:var(--y-superficie); color:var(--y-tinta); }
  .y-reveal{ opacity:1 !important; transform:none !important; }
}
