/* =============================================================================
   pilar.css — la piel de las pilares (ORDEN-PILAR-XCARET-1, tablero NORMAL
   adaptado al tema). Solo en page-pilar.php, despues de style.css.

   Manda el tema: tokens del tema (y de la skin activa: marco los declara en
   .pilar, nueva y cyber en #c100-main), escala tipografica del tema, ley 42
   (radios 10-20, nada redondo), lineas finas antes que sombras, un solo borde
   fuerte (la tabla de precios y «La cuenta»). Amarillo --ac solo en la accion
   principal; verde --ok solo en lo incluido y la confianza. Cifras tabulares.

   Primero movil (390); desde 760 dos columnas; desde 1000 el escritorio.
   Sin hexadecimales: cada color es un token o un color-mix de tokens.
   ========================================================================== */

.pilar {
  --pilar-s: var(--s, var(--el));
  --pilar-onac: var(--onac, var(--tx));
  --pilar-top: 0px;      /* alto del header pegajoso encima (en movil no hay) */
  --pilar-barra: 58px;   /* alto de la barra de secciones */
  background: var(--g); color: var(--tx);
  font-variant-numeric: tabular-nums;
  padding-bottom: var(--sp8);
  /* Red de seguridad (CORRECCION-PILAR-XCARET-2 §1): nada de la pilar ensancha la pagina. clip, no hidden: no crea
     contenedor de desplazamiento, asi la barra pegajosa sigue pegando. */
  overflow-x: clip;
  /* …y relative, para que la pilar sea el bloque contenedor de lo absoluto: un .sr-only dentro de una tarjeta de
     carrusel (el «antes» de los combos) se colocaba en x = 1498 respecto a la pagina, escapaba del carrusel y del
     clip, y la hacia medir 1790 px en un telefono de 390. */
  position: relative;
}
/* LCP (ORDEN-COLA-B-2 §4): con la red ya libre a los 2.3 s, el primer pintado llegaba a los 3.5 s por maquetar la
   pagina entera (≈ 13,000 px en movil) con la CPU del telefono. Las secciones que no se ven al cargar se maquetan
   cuando se acercan; contain-intrinsic-size «auto» recuerda su alto real una vez vistas. El texto sigue en el HTML
   (Google y el lector de pantalla lo leen igual). El heroe, «Que es» y la barra quedan fuera. */
.pilar__sec:not(.pheroe, .que-es, .bq-heroe, .paq-heroe) { content-visibility: auto; contain-intrinsic-size: auto 900px; }   /* el heroe nunca se aplaza (B-PIL7: el de paquetes pintaba 900 de reserva y saltaba); :not() con lista para no subir la especificidad */
/* Las tarjetas de cualquier carrusel contienen su propio .sr-only: se desplaza con ellas. */
.pilar :is(.parques, .combos__lista, .galeria, .pcar) > li { position: relative; }
/* La barra y los anclajes se colocan justo bajo lo que SE VE del encabezado (CORRECCION-PILARES-ESTRUCTURA-1 §3):
   --c100-header-h lo mide theme.js (1a) en reposo y en flotante, en movil y en escritorio, con la barra de
   administracion. Sin JS, el alto de siempre (64 px de las islas + espacio seguro; 66 del header de escritorio). */
.pilar { --pilar-top: var(--c100-header-h, calc(64px + env(safe-area-inset-top))); }
@media (min-width: 1000px) { .pilar { --pilar-top: var(--c100-header-h, 66px); } }

.pilar .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.pilar__wrap { width: 100%; max-width: var(--wide); margin-inline: auto; padding-inline: var(--gut); }
.pilar__sec { padding-top: clamp(44px, 7vw, 88px); scroll-margin-top: calc(var(--pilar-top) + var(--pilar-barra) + var(--sp3)); }
.pilar__sec--ultima { padding-bottom: 0; }
.pilar h1 { margin: 12px 0 0; font-size: var(--fs-4xl); line-height: 1.04; font-weight: 800; letter-spacing: -.03em; }
.pilar h2 { margin: 8px 0 0; font-size: var(--fs-3xl); line-height: 1.1; font-weight: 800; letter-spacing: -.02em; }
.pilar h3 { margin: 0; font-size: var(--fs-lg); font-weight: 800; }
.pilar__kick { display: block; font-size: 11px; color: var(--mu); }
.pilar .mo { font-family: var(--mo-f); letter-spacing: .12em; text-transform: uppercase; }
.pilar__lede { margin: 10px 0 0; font-size: 16px; line-height: 1.55; color: var(--mu); max-width: 68ch; }
.pilar__lede--despues { margin-top: 20px; }
.pilar__nota { margin: 14px 0 0; font-size: 13px; line-height: 1.5; color: var(--mu); max-width: 72ch; }
.pilar__remate { margin: 14px 0 0; font-size: 15px; font-weight: 700; }
.pilar__h3 { margin: 28px 0 10px; font-size: 18px; font-weight: 800; }
.pilar__h3-sub { font-size: 13px; font-weight: 500; color: var(--mu); }
.pilar__enlace { margin: 16px 0 0; font-size: 14px; }
.pilar__enlace a, .pilar__caja a, .mapa__consultar, .extras__accion, .delfin__ficha { color: var(--tx); font-weight: 800; text-decoration: underline; text-underline-offset: 2px; }
.pilar__caja { margin-top: 20px; padding: 20px 22px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); font-size: 15px; line-height: 1.55; }
.pilar__caja--qroo { padding: 24px 22px; }
.pilar__caja--qroo h2 { font-size: var(--fs-2xl); }
.pilar__caja--qroo p { margin: 10px 0 0; color: var(--mu); }
.pilar__lista { margin: 0; padding: 0 0 0 1.2em; font-size: 15px; line-height: 1.55; }
.pilar__lista li + li { margin-top: 8px; }
.pilar__lista--num { margin-top: 12px; }
@media (min-width: 760px) { .pilar__lista--2 { columns: 2; column-gap: 40px; } .pilar__lista--2 li { break-inside: avoid; } }
.pilar__tabla-marco { margin-top: 12px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); overflow-x: auto; }
.pilar__tabla { width: 100%; border-collapse: collapse; font-size: 14px; }
.pilar__tabla thead th { padding: 12px 14px; text-align: left; font-size: 10px; font-weight: 500; color: var(--mu); }
.pilar__tabla th, .pilar__tabla td { padding: 12px 14px; text-align: left; vertical-align: top; border-top: 1px solid var(--rl); }
.pilar__tabla tbody th { font-weight: 700; }
.pilar__tabla thead th { border-top: 0; }

/* --- botones: el .btn del tema (una tecla, ORDEN-DISENO-GLOBAL-1 §6) con las medidas del tablero (ley 42: 14 · 11) --- */
.pilar .btn.pilar__btn { min-height: var(--c100-btn-alto); padding: 0 var(--c100-btn-pl); gap: 10px; border-radius: 14px; font-size: var(--c100-btn-fuente); }
.pilar .btn.pilar__btn--sm { min-height: var(--c100-btn-alto-chico); padding: 0 var(--c100-btn-pl-chico); border-radius: 11px; font-size: var(--c100-btn-fuente-chico); }
.pilar :is(a, button, summary, [tabindex="0"]):focus-visible { outline: 2px solid var(--tx); outline-offset: 2px; }

/* --- huecos (§7): visibles en staging, 0 para produccion ------------------ */
.pilar__foto-hueco { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 150px; padding: 16px; border: 1px dashed var(--rl); border-radius: 16px; background: repeating-linear-gradient(135deg, color-mix(in oklab, var(--tx) 4%, transparent) 0 12px, transparent 12px 24px), var(--el); color: var(--mu); text-align: center; }
.pilar__foto-hueco .mo { font-size: 11px; }
.pilar__foto-hueco small { font-size: 11px; }

/* --- S1 heroe ------------------------------------------------------------- */
.pheroe { padding-top: 0; }
.pheroe__migas { padding-block: 18px 0; }
.pheroe__grid { display: grid; gap: 24px; margin-top: 18px; }
@media (min-width: 1000px) { .pheroe__grid { grid-template-columns: 1.15fr 1fr; gap: 48px; align-items: start; margin-top: 26px; } }
.pheroe__sello { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 11px; color: var(--ok); }
.pheroe__entrada { margin: 16px 0 0; font-size: 18px; line-height: 1.55; color: var(--mu); max-width: 60ch; }
.pheroe__datos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 22px 0 0; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); overflow: hidden; }
.pheroe__datos > div { padding: 16px 18px; border-top: 1px solid var(--rl); }
.pheroe__datos > div:nth-child(-n + 2) { border-top: 0; }
.pheroe__datos > div:nth-child(2n) { border-left: 1px solid var(--rl); }
@media (min-width: 1000px) {
  .pheroe__datos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .pheroe__datos > div { border-top: 0; }
  .pheroe__datos > div + div { border-left: 1px solid var(--rl); }
}
.pheroe__datos dt { font-size: 10px; color: var(--mu); }
.pheroe__datos dd { margin: 6px 0 0; }
/* (CORRECCION-PILARES-ESCRITORIO-1) La cifra se mide contra su celda: a 4 columnas la celda deja ~103px y «MX$2,000»
   a 22px pedia 109 y se salia. Cada celda es contenedor y la cifra baja hasta 16px antes de salirse. */
.pheroe__datos > div { container-type: inline-size; }
.pheroe__datos dd b { display: block; font-size: clamp(16px, 19cqi, 22px); font-weight: 800; line-height: 1.1; }
.pheroe__datos dd small { display: block; margin-top: 2px; font-size: 12px; color: var(--mu); }
.pheroe__botones { display: grid; gap: 10px; margin-top: 18px; }
@media (min-width: 600px) { .pheroe__botones { display: flex; flex-wrap: wrap; } }
.pheroe__foto img, .pheroe__hueco { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 18px; }
@media (min-width: 1000px) { .pheroe__foto img, .pheroe__hueco { aspect-ratio: 4 / 3; min-height: 440px; } }

/* --- S1b que es Xcaret ---------------------------------------------------- */
.que-es { padding-top: clamp(36px, 5vw, 56px); }
.que-es p { margin: 12px 0 0; font-size: 16px; line-height: 1.6; max-width: 72ch; }

/* --- S14b galeria: en movil el carrusel de profundidad de la home (.track / .slide, style.css §13.4); rejilla en escritorio --- */
.pilar .galeria.track { margin: 12px 0 0; padding: 20px 12% 24px; }
.pilar .galeria .slide { flex-basis: 76%; border-radius: 16px; }
.galeria img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; border-radius: 16px; border: 1px solid var(--rl); }
.galeria figure { margin: 0; }
.galeria figcaption { margin: 6px 0 0; font-size: 12px; color: var(--mu); }
@media (min-width: 701px) {
  .pilar .galeria.track { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 20px; padding: 0; overflow: visible; scroll-snap-type: none; }
  .pilar .galeria .slide { animation: none; transform: none; opacity: 1; filter: none; backdrop-filter: none; -webkit-backdrop-filter: none; will-change: auto; }
}
@media (min-width: 1000px) { .pilar .galeria.track { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; } }

/* --- S2 barra pegajosa ---------------------------------------------------- */
.pilar__barra { position: sticky; top: var(--pilar-top); z-index: var(--z-pegajoso, 40); margin-top: 30px; padding: 10px 0; background: color-mix(in oklab, var(--g) 94%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-top: 1px solid var(--rl); border-bottom: 1px solid var(--rl); }
/* Con el encabezado flotante (escritorio), la barra toma el ancho y el vidrio de su pildora: las dos se leen como un
   bloque. Solo cambian el ancho y el vidrio, nunca el alto: nada se mueve en vertical. */
@media (min-width: 1000px) {
  .c100-hdr-flota .pilar__barra {
    width: var(--c100-header-w, 100%); margin-left: var(--c100-header-x, 0px);
    border: 1px solid var(--vidrio-borde); border-radius: 18px;
    background: color-mix(in oklab, var(--g) 84%, transparent);
    backdrop-filter: blur(16px) saturate(1.15); -webkit-backdrop-filter: blur(16px) saturate(1.15);
    box-shadow: inset 0 1px 0 var(--vidrio-filo), var(--gSh);
  }
  .c100-hdr-flota .pilar__barra > .pilar__wrap { max-width: none; padding-inline: 16px; }
}
.pilar__barra ul { display: flex; gap: 8px; margin: 0; padding-block: 0; list-style: none; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.pilar__barra ul::-webkit-scrollbar { display: none; }
.pilar__barra li { flex: 0 0 auto; }
.pilar__barra a { display: inline-flex; align-items: center; min-height: 38px; padding: 0 14px; border: 1px solid var(--rl); border-radius: 10px; background: var(--pilar-s); font-size: 14px; font-weight: 700; color: var(--tx); text-decoration: none; }
.pilar__barra a[aria-current] { background: var(--tx); color: var(--g); border-color: var(--tx); }

/* --- conmutadores y chips ------------------------------------------------- */
.conmutador { display: inline-flex; padding: 4px; border: 1px solid var(--rl); border-radius: 12px; background: var(--pilar-s); }
.conmutador__b { min-height: 38px; padding: 0 14px; border: 0; border-radius: 9px; background: transparent; color: var(--tx); font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }
.conmutador__b[aria-pressed="true"] { background: var(--tx); color: var(--g); font-weight: 800; }
.chip { position: relative; display: inline-flex; align-items: center; min-height: 38px; padding: 0 14px; border: 1px solid var(--rl); border-radius: 10px; background: var(--pilar-s); font: inherit; font-size: 13px; font-weight: 700; color: var(--tx); cursor: pointer; }
.chip input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.chip:has(input:checked), .chip--b[aria-pressed="true"] { background: var(--tx); color: var(--g); border-color: var(--tx); }
.chip:has(input:focus-visible) { outline: 2px solid var(--tx); outline-offset: 2px; }

/* --- S3 precios ----------------------------------------------------------- */
.precios { margin-top: 22px; border: 2px solid var(--tx); border-radius: 18px; background: var(--pilar-s); overflow: hidden; }
.precios__controles { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--rl); background: var(--pilar-s); }
.precios__tabla { width: 100%; border-collapse: collapse; }
.precios__tabla thead th { padding: 12px 14px; text-align: left; font-size: 10px; font-weight: 500; color: var(--mu); }
/* (CORRECCION-PILARES-ESCRITORIO-1 §3) Una tarifa a la vez en TODOS los anchos (antes solo en movil; en escritorio,
   con la columna lateral de B-P1f, la tabla de 6 columnas se cortaba en «MEXICA…»). La regla que atenuaba la tarifa
   inactiva a 14px tambien pescaba los <th> y los dejaba mas grandes que el resto: fuera. */
.precios[data-tarifa="ext"] .precios__c--nac, .precios[data-tarifa="nac"] .precios__c--ext { display: none; }
.precios__desliza {
  overflow-x: auto; overscroll-behavior-x: contain;
  background:
    linear-gradient(to right, var(--pilar-s) 30%, transparent) left / 28px 100% no-repeat local,
    linear-gradient(to left, var(--pilar-s) 30%, transparent) right / 28px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%, color-mix(in oklab, var(--tx) 22%, transparent), transparent) left / 12px 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%, color-mix(in oklab, var(--tx) 22%, transparent), transparent) right / 12px 100% no-repeat scroll;
}
@media (min-width: 760px) { .precios__tabla th:first-child { min-width: 16ch; } }
.precios__tabla tbody tr { border-top: 1px solid var(--rl); }
.precios__tabla tbody th { padding: 16px 14px; text-align: left; font-size: 15px; font-weight: 800; }
.precios__tabla tbody th small { display: block; margin-top: 3px; font-size: 12px; font-weight: 500; color: var(--mu); }
.precios__tag { display: inline-block; margin-left: 6px; font-size: 9px; color: var(--ai); vertical-align: middle; }
.precios__c { padding: 16px 14px; font-size: 15px; white-space: nowrap; }
.precios__adulto { font-size: 18px; font-weight: 800; }
.precios__accion { padding: 16px 14px; text-align: right; }
.precios__fila--destacada { background: color-mix(in oklab, var(--ac) 9%, transparent); }
.precios__alta { margin: 14px 0 0; font-size: 13px; line-height: 1.5; color: var(--mu); }
.precios__debajo { margin: 14px 0 0; font-size: 15px; line-height: 1.55; }
@media (max-width: 759px) {
  .precios__controles { position: sticky; top: calc(var(--pilar-top) + var(--pilar-barra)); z-index: 30; }
  .precios__tabla, .precios__tabla tbody, .precios__tabla tr { display: block; }
  .precios__tabla thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .precios__tabla tbody tr { padding: 14px 16px; }
  .precios__tabla tbody th { display: block; padding: 0 0 10px; }
  .precios__c { display: flex; justify-content: space-between; align-items: baseline; padding: 6px 0; font-size: 16px; }
  .precios__c::before { content: attr(data-label); font-family: var(--mo-f); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--mu); }
  .precios__accion { display: block; padding: 10px 0 0; text-align: left; }
  .precios__accion .pilar__btn { width: 100%; }
}

/* --- S4 · S7 tarjetas ----------------------------------------------------- */
.tarjetas { display: grid; gap: 16px; margin: 22px 0 0; padding: 0; list-style: none; }
@media (min-width: 760px) { .tarjetas--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tarjeta { padding: 20px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); }
.tarjeta h3 { margin: 10px 0 0; font-size: 17px; }
.tarjeta p { margin: 8px 0 0; font-size: 14px; line-height: 1.55; color: var(--mu); }
.tarjeta__num { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: 1px solid var(--tx); border-radius: 10px; font-family: var(--mo-f); font-size: 12px; font-weight: 700; }
.tarjeta__edad { margin: 0; font-size: 20px; }

/* --- S5 comparar ---------------------------------------------------------- */
.comparar__marco { margin-top: 22px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); overflow-x: auto; }
.comparar { width: 100%; min-width: 640px; border-collapse: collapse; }
.comparar thead th { padding: 14px 8px; font-size: 14px; font-weight: 800; text-align: center; vertical-align: bottom; }
.comparar tbody th { padding: 12px 14px; text-align: left; font-size: 14px; font-weight: 600; border-top: 1px solid var(--rl); }
.comparar tbody td { padding: 12px 8px; text-align: center; font-size: 13px; color: var(--mu); border-top: 1px solid var(--rl); }
.comparar__tag { display: block; margin-top: 4px; font-size: 9px; color: var(--ai); }
.comparar .comparar__plus { background: color-mix(in oklab, var(--ac) 12%, transparent); }
.comparar__precio th, .comparar__precio td { font-weight: 800; color: var(--tx); font-size: 15px; }
.comparar__precio:first-of-type th, .comparar__precio:first-of-type td { border-top: 2px solid var(--tx); }
.sino { display: inline-flex; align-items: center; justify-content: center; }
.sino--si { color: var(--ok); }
.sino--no { color: var(--dim); }
@media (max-width: 759px) {
  .comparar tbody th, .comparar thead th:first-child { position: sticky; left: 0; z-index: 1; background: var(--pilar-s); max-width: 150px; box-shadow: 1px 0 0 var(--rl); }
  .comparar thead th { font-size: 12px; }
}

/* --- S6 calculadora ------------------------------------------------------- */
.calc { display: grid; gap: 20px; margin-top: 22px; }
@media (min-width: 1000px) { .calc { grid-template-columns: minmax(0, 1fr) 400px; gap: 24px; align-items: start; } }
.calc__controles { padding: 20px 22px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); }
.calc__grupo { margin: 0; padding: 0; border: 0; min-width: 0; }
.calc__grupo + .calc__grupo { margin-top: 18px; }
.calc__grupo legend { padding: 0; margin: 0 0 8px; font-size: 10px; color: var(--mu); }
.calc__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.calc__personas { margin-top: 16px; }
.calc__fila { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid var(--rl); }
.calc__fila b { display: block; font-size: 15px; }
.calc__fila small { display: block; font-size: 12px; color: var(--mu); }
.calc__contador { display: flex; align-items: center; gap: 12px; }
.calc__mas-menos { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--rl); border-radius: 10px; background: var(--pilar-s); color: var(--tx); cursor: pointer; }
.calc__mas-menos--mas { border-color: var(--tx); }
.calc__n { min-width: 24px; text-align: center; font-weight: 800; }
.cuenta { border: 2px solid var(--tx); border-radius: 18px; background: var(--pilar-s); }
.cuenta__cab { padding: 18px 22px; border-bottom: 1px solid var(--rl); font-size: 11px; color: var(--mu); }
/* (CORRECCION-PILARES-ESCRITORIO-1 §3) El rotulo arriba y el tour en su propia linea, alineados; sin el punto colgando. */
.cuenta__rotulo, .cuenta__tour { display: block; }
.cuenta__tour { margin-top: 4px; color: var(--tx); }
.cuenta__filas { display: flex; flex-direction: column; gap: 10px; padding: 16px 22px; font-size: 14px; }
.cuenta__filas > div { display: flex; justify-content: space-between; gap: 12px; }
.cuenta__parque { color: var(--mu); }
.cuenta__total { display: flex; justify-content: space-between; align-items: baseline; margin: 0 22px; padding: 16px 0; border-top: 1px solid var(--tx); }
.cuenta__cifra { font-size: 30px; font-weight: 800; letter-spacing: -.02em; }
.cuenta__pie { padding: 0 22px 20px; }
.cuenta__otra { margin: 10px 0 0; font-size: 12px; color: var(--mu); text-align: center; }
@media (max-width: 999px) {
  .cuenta { position: sticky; bottom: var(--pila-muelle, 0px); z-index: 30; display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 4px 16px; align-items: center; padding: 12px 16px; border-radius: 18px; box-shadow: 0 -8px 24px -18px color-mix(in oklab, var(--tx) 40%, transparent); }
  .cuenta__cab, .cuenta__filas, .cuenta__otra { display: none; }
  .cuenta__total { margin: 0; padding: 0; border: 0; flex-direction: column; align-items: flex-start; gap: 0; }
  .cuenta__total b { font-size: 11px; font-family: var(--mo-f); letter-spacing: .12em; text-transform: uppercase; color: var(--mu); }
  .cuenta__cifra { font-size: 24px; }
  .cuenta__pie { padding: 0; }
  /* (CORRECCION-PILARES-ESCRITORIO-1) el total manda (su ancho natural) y el boton toma lo que queda y se parte en dos
     lineas si hace falta: antes, de 401 a 999, el boton no cedia y se salia 6 px a 412, o empujaba la cifra 13 px fuera. */
  .cuenta__pie { justify-self: end; min-width: 0; max-width: 220px; }
  .cuenta__pie .pilar__btn { width: auto; max-width: 100%; line-height: 1.15; white-space: normal; text-align: center; }
}
@media (max-width: 400px) {
  /* 360: la barra de «La cuenta» se salia 41 px (el clip de .pilar la recortaba). El total cede y el boton se parte en dos lineas si hace falta. */
  .cuenta { gap: 4px 10px; padding: 10px 12px; }
  .cuenta__cifra { font-size: 20px; }
  .cuenta__pie { max-width: 180px; }
  .cuenta__pie .pilar__btn { line-height: 1.15; white-space: normal; text-align: center; }
}

/* --- S8 horarios ---------------------------------------------------------- */
.dos-col { display: grid; gap: 24px; margin-top: 8px; }
@media (min-width: 1000px) { .dos-col { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; } }
.recogida td { font-size: 13px; white-space: nowrap; }
.dia { margin: 12px 0 0; padding: 0; list-style: none; }
.dia li { display: grid; grid-template-columns: 96px 1fr; gap: 14px; padding: 12px 0; border-top: 1px solid var(--rl); font-size: 15px; }
.dia__hora { font-size: 12px; font-weight: 700; }
.horarios__hueco { margin-top: 24px; min-height: 200px; }

/* --- S9 mapa -------------------------------------------------------------- */
.mapa { margin-top: 22px; }
.mapa__filtros { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
.mapa__filtros::-webkit-scrollbar { display: none; }
.mapa__filtros .chip { flex: 0 0 auto; }
.mapa__cuerpo { display: grid; gap: 20px; margin-top: 16px; }
@media (min-width: 1000px) { .mapa__cuerpo { grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 32px; align-items: start; } }
.mapa__svg { display: block; width: 100%; max-width: 420px; height: auto; }
@media (max-width: 999px) { .mapa__svg { max-width: 300px; margin-inline: auto; } }
.mapa__zona { cursor: pointer; }
.mapa__zona rect { fill: var(--pilar-s); stroke: var(--rl); stroke-width: 1.5; transition: fill 120ms var(--ez), stroke 120ms var(--ez); }
.mapa__zona:hover rect, .mapa__zona:focus-visible rect { stroke: var(--tx); }
.mapa__zona:focus-visible { outline: none; }
.mapa__zona[aria-pressed="true"] rect { fill: color-mix(in oklab, var(--ac) 22%, var(--pilar-s)); stroke: var(--tx); stroke-width: 2; }
.mapa__zona text { font-family: var(--ui); font-size: 11px; font-weight: 700; fill: var(--tx); pointer-events: none; }
.mapa__agua { fill: none; stroke: var(--mu); stroke-width: 1.2; opacity: .7; }
.mapa__escenario { fill: none; stroke: var(--mu); stroke-width: 1.2; opacity: .7; }
.mapa__zonas { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.mapa__leyenda { display: flex; flex-direction: column; gap: 8px; margin: 16px 0 0; padding: 0; list-style: none; font-size: 13px; color: var(--mu); }
.etq { display: inline-flex; align-items: center; min-height: 24px; padding: 0 9px; border-radius: 10px; font-family: var(--mo-f); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; white-space: nowrap; }
.etq--incluido { background: color-mix(in oklab, var(--ok) 16%, transparent); color: var(--ok); }
.etq--plus { background: var(--ac); color: var(--pilar-onac); }
.etq--extra { border: 1px solid var(--rl); color: var(--mu); }
.mapa__lista { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--rl); }
.mapa__lista li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 2px 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--rl); }
.mapa__lista li[hidden] { display: none; }   /* el filtro pone hidden: sin esto, display: grid ganaba y no se ocultaba nada */
.mapa__lista li > .etq { grid-column: 1; grid-row: 1; }
.mapa__nombre { grid-column: 2; grid-row: 1; font-size: 15px; font-weight: 700; }
.mapa__meta { grid-column: 2; grid-row: 2; font-size: 12px; color: var(--mu); }
.mapa__consultar { grid-column: 3; grid-row: 1 / span 2; font-size: 13px; }
.mapa__vacio { display: block; padding: 16px 0; font-size: 14px; color: var(--mu); }
.mapa__vacio[hidden] { display: none; }   /* el display de arriba le ganaba al hidden: el «Ningun punto/tour» salia siempre */

/* --- S10 extras · S11 delfines · S13 parques ------------------------------ */
.extras { display: grid; gap: 0; margin: 18px 0 0; padding: 0; list-style: none; }
@media (min-width: 760px) { .extras { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; } }
.extras li { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 12px 0; border-top: 1px solid var(--rl); }
.extras b { display: block; font-size: 15px; }
.extras small { display: block; margin-top: 2px; font-size: 13px; color: var(--mu); }
.extras__accion { flex: none; font-size: 13px; padding-top: 2px; }
.delfines { display: grid; gap: 16px; margin: 20px 0 0; padding: 0; list-style: none; }
@media (min-width: 760px) { .delfines { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.delfin { padding: 18px; }
.delfin__hueco { min-height: 150px; border-radius: 12px; }
.delfin h3 { margin: 14px 0 0; font-size: 17px; }
.delfin__precios { margin: 8px 0 0; font-size: 14px; color: var(--mu); }
.delfin__cifra { font-size: 22px; font-weight: 800; color: var(--tx); }
.delfin__dias { margin: 6px 0 0; font-size: 10px; color: var(--mu); }
.delfin__botones { display: flex; align-items: center; gap: 14px; margin-top: 14px; }
.delfin__ficha { font-size: 13px; }
.parques { display: flex; gap: 14px; margin: 20px 0 0; padding: 0 0 8px; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--rl) transparent; }
.parques > li { flex: 0 0 78%; scroll-snap-align: start; }
@media (min-width: 600px) { .parques { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; } .parques > li { flex: none; } }
@media (min-width: 1000px) { .parques { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.parque h3 { margin: 0; font-size: 17px; }
.parque h3 a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.parque__desde { margin: 12px 0 0; font-size: 18px; }
.parque__desde small { display: inline-block; margin-right: 6px; font-size: 10px; color: var(--mu); }
.parque__desde b { font-weight: 800; }
/* combos con Xcaret (§5): su interruptor, y tarjetas en carrusel en movil */
.combos { margin-top: 30px; }
.combos__h3 { margin: 0; font-size: 22px; font-weight: 800; }
.combos__texto { margin: 8px 0 0; color: var(--mu); }
.combos .precios__controles { margin-top: 14px; padding: 0; border: 0; background: transparent; }
.combos__lista { display: flex; gap: 14px; margin: 16px 0 0; padding: 0 0 8px; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--rl) transparent; }
.combos__lista > li { flex: 0 0 78%; scroll-snap-align: start; display: flex; flex-direction: column; }
@media (min-width: 600px) { .combos__lista { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; } .combos__lista > li { flex: none; } }
@media (min-width: 1000px) { .combos__lista { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.combo h4 { margin: 0; font-size: 17px; font-weight: 800; }
.combo__precios { display: grid; gap: 8px; margin: 12px 0 0; }
.combo__precios > div { display: grid; gap: 2px; }
.combo__precios dt { font-size: 10px; color: var(--mu); }
.combo__precios dd { margin: 0; }
.combo__precios s { margin-right: 6px; font-size: 13px; color: var(--mu); }
.combo__precios b { font-size: 20px; font-weight: 800; }
.combo__nota { min-height: 1em; margin: 8px 0 12px; font-size: 12px; color: var(--mu); }
.combo .pilar__btn { margin-top: auto; align-self: flex-start; }

/* --- S15 faq · S16 resenas · S17 resumen · S18 confianza ------------------ */
.faq { margin-top: 16px; border-top: 1px solid var(--rl); }
@media (min-width: 1000px) { .faq { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; } }
.faq__item { padding: 16px 0; border-bottom: 1px solid var(--rl); }
.faq__item summary { cursor: pointer; font-size: 16px; font-weight: 800; line-height: 1.35; list-style: none; display: flex; justify-content: space-between; gap: 12px; }
.faq__item summary::-webkit-details-marker { display: none; }
.faq__item summary::after { content: "+"; flex: none; font-size: 20px; line-height: 1; color: var(--ai); }
.faq__item[open] summary::after { content: "–"; }
.faq__item p { margin: 10px 0 0; font-size: 14px; line-height: 1.6; color: var(--mu); }
.resenas { padding: 24px 22px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); }
.resenas h2 { font-size: var(--fs-2xl); }
.resenas__nota { margin: 12px 0 0; font-size: 14px; color: var(--mu); }
.resenas__cifra { font-size: 44px; font-weight: 800; color: var(--tx); line-height: 1; vertical-align: -6px; margin-right: 6px; }
.resenas__cita { margin: 16px 0 0; padding-top: 14px; border-top: 1px solid var(--rl); }
.resenas__cita p { margin: 0; font-size: 15px; line-height: 1.55; }
.resenas__cita footer { margin-top: 6px; font-size: 12px; color: var(--mu); }
.resumen { padding: 26px; border-radius: 16px; background: var(--tx); color: var(--g); }
.resumen__kick { font-size: 11px; opacity: .7; }
.resumen__texto { margin: 12px 0 0; font-size: 20px; line-height: 1.5; font-weight: 600; }
.resumen__pie { margin: 16px 0 0; font-size: 10px; opacity: .6; }
@media (min-width: 1000px) { #s16 .pilar__wrap, #s17 .pilar__wrap { max-width: var(--wide); } }
.confianza { display: flex; flex-direction: column; gap: 14px; padding: 18px; border: 1px solid var(--rl); border-radius: 14px; background: var(--pilar-s); }
@media (min-width: 760px) { .confianza { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; padding: 26px 30px; border-radius: 16px; } }
.confianza__item { display: flex; gap: 12px; align-items: flex-start; }
.confianza__ico { display: inline-flex; flex: none; margin-top: 2px; color: var(--ok); }
.confianza b { display: block; font-size: 14px; font-weight: 800; }
.confianza p { margin: 3px 0 0; font-size: 13px; line-height: 1.5; color: var(--mu); }

@media (prefers-reduced-motion: reduce) { .mapa__zona rect { transition: none; } }

/* === MOVIL, 700 px o menos (CORRECCION-PILAR-XCARET-2 §2): el mismo contenido, acomodado =================
   Nada se quita: carruseles con scroll-snap (pilar.js pone el contador «2 / 7» y el foco de teclado),
   pestanas con sus paneles en el DOM, plegables <details> y «ver mas» que solo oculta con CSS lo que
   pilar.js marca. Sin JS: los plegables se abren con un toque y las listas se ven completas. En
   escritorio los plegables quedan abiertos (pilar.js) y las pestanas son columnas. */
.pcar__cuenta, .ptabs__lista, .pilar__mas { display: none; }
.conmutador__b[aria-selected="true"] { background: var(--tx); color: var(--g); font-weight: 800; }

/* plegables: el titulo (H2 o H3) vive dentro del summary */
.pplegable > summary { position: relative; display: block; padding-right: 36px; list-style: none; cursor: pointer; }
.pplegable > summary::-webkit-details-marker { display: none; }
.pplegable > summary::after { content: "+"; position: absolute; right: 4px; top: 50%; transform: translateY(-50%); font-size: 24px; line-height: 1; color: var(--ai); }
.pplegable[open] > summary::after { content: "–"; }
.pplegable > summary .pilar__h3 { margin: 0; }
details.pplegable:not(.pilar__caja) { margin-top: 22px; border-block: 1px solid var(--rl); }
details.pplegable:not(.pilar__caja) > summary { padding-block: 14px; }
details.pplegable:not(.pilar__caja)[open] > summary { padding-bottom: 4px; }
details.pplegable:not(.pilar__caja)[open] { padding-bottom: 16px; }
.pplegable[data-fijo] > summary { cursor: default; pointer-events: none; padding-right: 0; }
.pplegable[data-fijo] > summary::after { display: none; }
@media (min-width: 701px) { details.pplegable[data-fijo]:not(.pilar__caja) { margin-top: 0; border: 0; } details.pplegable[data-fijo]:not(.pilar__caja) > summary { padding-block: 28px 10px; } }

/* pestanas de consejos: en escritorio, dos columnas con su H3 */
@media (min-width: 701px) { .ptabs--2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; } }
.ptabs__panel .pilar__h3 { margin-top: 22px; }

@media (max-width: 700px) {
  .pilar { padding-bottom: 40px; }
  .pilar__sec { padding-top: 28px; }
  .pilar__barra { margin-top: 20px; }
  .pilar h1 { font-size: var(--fs-3xl); }
  .pilar h2 { font-size: var(--fs-2xl); }
  .pilar__nota { margin-top: 10px; }
  .tarjeta, .pilar__caja, .calc__controles, .resenas { padding: 16px 18px; }
  .precios__tabla tbody tr { padding-block: 12px; }
  .mapa__lista li { padding-block: 8px; }
  .combos .conmutador__b { min-height: 34px; }
  .pilar__lede { margin-top: 8px; font-size: 15px; line-height: 1.5; }
  .que-es p, .precios__debajo { font-size: 15px; line-height: 1.5; }
  .faq__item p, .tarjeta p { line-height: 1.5; }
  .pilar__h3 { margin-top: 20px; }
  /* minmax(0, 1fr): una columna «auto» crecia al ancho minimo de su contenido (el carrusel de datos) y el heroe medía
     472 px; el clip de .pilar lo escondia recortando la foto. */
  .pheroe__grid, .dos-col, .mapa__cuerpo, .calc { grid-template-columns: minmax(0, 1fr); }
  .pheroe__botones { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pheroe__botones > :first-child { grid-column: 1 / -1; }
  .pheroe__botones .pilar__btn { padding-inline: 12px; }
  .pilar .pheroe__foto img, .pilar .pheroe__hueco { aspect-ratio: 16 / 9; min-height: 0; }
  .comparar tbody th, .comparar tbody td { padding-block: 9px; }
  .mapa__zonas { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
  .mapa__zonas::-webkit-scrollbar { display: none; }
  .mapa__zonas .chip { flex: 0 0 auto; }
  .dia li { padding-block: 9px; }
  .faq__item { padding-block: 13px; }
  .combos { margin-top: 22px; }
  .combos__texto { font-size: 14px; }
  .resumen { padding: 22px; }
  .resumen__texto { font-size: 17px; }

  /* carrusel: una tarjeta y el asomo de la siguiente */
  /* padding-bottom 26: el hueco del contador lo reserva el carrusel, y el contador (que pone el JS) se sube a el con
     margen negativo de su propio alto: al aparecer no empuja nada (CLS 0). */
  .pilar .pcar { display: flex; flex-wrap: nowrap; gap: 12px; margin-inline: 0; padding: 0 0 26px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; border: 0; border-radius: 0; background: none; columns: auto; }
  .pilar .pcar::-webkit-scrollbar { display: none; }
  .pilar :is(.parques, .combos__lista) { padding-bottom: 26px; }
  .pilar .pcar > * { flex: 0 0 84%; min-width: 0; scroll-snap-align: start; }
  .pcar__cuenta:not([hidden]) { display: block; height: 18px; margin: -18px 0 0; font-family: var(--mo-f); font-size: 11px; line-height: 18px; letter-spacing: .12em; color: var(--mu); text-align: right; }
  .pilar .track + .pcar__cuenta:not([hidden]) { margin-top: -22px; height: 22px; text-align: center; }

  /* S1 heroe: los 4 datos en una fila que se desliza */
  .pilar .pheroe__datos.pcar { margin-top: 18px; overflow-x: auto; }
  .pilar .pheroe__datos.pcar > div { flex-basis: 64%; padding: 14px 16px; border: 1px solid var(--rl); border-radius: 14px; background: var(--pilar-s); }
  .pheroe__entrada { font-size: 16px; }
  .pheroe__foto img, .pheroe__hueco { aspect-ratio: 16 / 9; }

  /* S10 extras: cada fila, una tarjeta */
  .pilar .extras.pcar { margin-top: 16px; }
  .pilar .extras.pcar > li { flex-direction: column; justify-content: space-between; gap: 10px; padding: 16px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); }
  .pilar .extras.pcar > li { flex-basis: 70%; }

  /* S11 delfines, S16 resenas */
  .delfin__hueco { min-height: 110px; }
  .pilar .resenas__citas.pcar { margin-top: 14px; }
  .pilar .resenas__citas.pcar > .resenas__cita { margin: 0; padding: 14px; border: 1px solid var(--rl); border-radius: 14px; }

  /* S5 comparar en pestanas: una columna como lista de filas */
  .ptabs__lista:not([hidden]) { display: flex; flex-wrap: wrap; margin-top: 18px; }
  .ptabs__lista + .comparar__marco { margin-top: 12px; }
  .comparar__marco.is-tabs { overflow: visible; }
  .comparar__marco.is-tabs .comparar { min-width: 0; }
  .comparar__marco.is-tabs .comparar thead th:first-child, .comparar__marco.is-tabs .comparar tbody th { position: static; max-width: none; box-shadow: none; }
  .comparar__marco.is-tabs .comparar tbody th { width: 60%; }
  .comparar[data-col="1"] :is(th, td):not(:first-child):not(:nth-child(2)),
  .comparar[data-col="2"] :is(th, td):not(:first-child):not(:nth-child(3)),
  .comparar[data-col="3"] :is(th, td):not(:first-child):not(:nth-child(4)),
  .comparar[data-col="4"] :is(th, td):not(:first-child):not(:nth-child(5)) { display: none; }
  .pilar__caja + .pilar__caja, .comparar__marco + .pilar__caja { margin-top: 14px; }

  /* S14 consejos en pestanas: el H3 de cada panel es el nombre de su pestana */
  .ptabs.is-tabs .ptabs__panel:not(.is-activa) { display: none; }
  .ptabs.is-tabs .ptabs__t { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .ptabs.is-tabs .ptabs__panel .pilar__lista { margin-top: 14px; }

  /* S9 mapa y S15 preguntas: «ver mas» */
  .pilar [data-plegada] > [data-mas] { display: none; }
  .pilar__mas:not([hidden]) { display: flex; width: 100%; justify-content: center; margin-top: 14px; }
  .mapa__cuerpo { gap: 14px; }
  .mapa__leyenda { flex-direction: row; flex-wrap: wrap; gap: 6px 12px; margin-top: 12px; font-size: 12px; }

  /* S12 Quintana Roo, plegable: la caja es el summary */
  .pilar__caja--qroo.pplegable { padding: 18px 20px; }
  .pilar__caja--qroo.pplegable[open] { padding-bottom: 22px; }
  .pilar__caja--qroo > summary h2 { font-size: var(--fs-xl); }

  /* S8 horarios */
  .horarios__hueco { min-height: 150px; }
}

/* =============================================================================================================
   PILAR DE DESTINO (ORDEN-PILAR-ISLA-MUJERES-1, PLANTILLA-PILAR-DESTINO-1) · parts/pilar/destino/, pilar-destino.js
   «Pensar doble»: el escritorio y el movil se piensan distintos desde el inicio; el HTML es el mismo.
   ============================================================================================================= */
.bq-previa { display: inline-block; margin: 0 0 10px; padding: 2px 8px; font-size: 12px; font-weight: 700; }

/* S1 heroe + S3 elegidor */
.bq-heroe { padding-top: 0; }
.bq-heroe__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; margin-top: 18px; }
@media (min-width: 1000px) { .bq-heroe__grid { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 48px; align-items: start; margin-top: 26px; } }
.bq-rapida { margin: 12px 0 0; font-size: 20px; font-weight: 800; line-height: 1.3; }
.bq-heroe__botones { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
.bq-heroe__botones > :first-child { grid-column: 1 / -1; }
/* a 360 «Qual passeio para Chichén Itzá é para mim?» no cabe en una linea: los botones del heroe pueden partirse */
.bq-heroe__botones .btn { white-space: normal; text-align: center; min-width: 0; }
@media (min-width: 600px) { .bq-heroe__botones { display: flex; flex-wrap: wrap; } }
.bq-heroe .pheroe__entrada { margin-top: 18px; }
.bq-elegidor { position: relative; padding: 20px; border: 2px solid var(--tx); border-radius: 18px; background: var(--pilar-s); scroll-margin-top: calc(var(--pilar-top) + var(--pilar-barra) + var(--sp3)); }
.bq-elegidor h2 { font-size: var(--fs-2xl); }
.bq-elegidor__intro { margin: 6px 0 0; color: var(--mu); }
.bq-eleg { margin-top: 14px; }
.bq-eleg__q { margin: 0; padding: 0; border: 0; min-width: 0; }
.bq-eleg__q + .bq-eleg__q { margin-top: 14px; }
.bq-eleg__q legend { padding: 0; margin: 0 0 8px; font-size: 15px; font-weight: 800; }
.bq-eleg__ops { display: flex; flex-wrap: wrap; gap: 8px; }
.bq-eleg__avance { position: relative; display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.bq-eleg__avance[hidden] { display: none; }
.bq-eleg__avance::before { content: ""; flex: 1; height: 6px; border-radius: 3px; background: var(--rl); }
.bq-eleg__barra { position: absolute; left: 0; top: 50%; height: 6px; margin-top: -3px; border-radius: 3px; background: var(--ac); width: 0; transition: width 200ms var(--ez); }
.bq-elegidor[data-paso="1"] .bq-eleg__barra { width: 22%; }
.bq-elegidor[data-paso="2"] .bq-eleg__barra { width: 44%; }
.bq-elegidor[data-paso="3"] .bq-eleg__barra { width: 66%; }
.bq-eleg__paso { flex: none; font-size: 11px; color: var(--mu); }
.bq-eleg__atras, .bq-eleg__otra { margin-top: 12px; padding: 0; border: 0; background: none; color: var(--tx); font: inherit; font-size: 14px; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.bq-eleg__resultado { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--rl); }
.bq-eleg__resultado[hidden], .bq-eleg__tour[hidden], .bq-eleg__nota[hidden] { display: none; }
.bq-eleg__tour[data-orden="1"] { order: 2; }
.bq-eleg__nota { order: 3; margin: 0; font-size: 13px; }
.bq-eleg__otra { order: 4; align-self: flex-start; margin-top: 0; }
.bq-eleg__frase { margin: 0; font-size: 16px; line-height: 1.5; }
.bq-eleg__botones { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; }
.bq-eleg__segunda { display: none; margin: 0; font-size: 14px; color: var(--mu); }
.bq-eleg__tour.is-segunda .bq-eleg__principal { display: none; }
.bq-eleg__tour.is-segunda .bq-eleg__segunda { display: block; }
.bq-eleg__lista { margin-top: 14px; font-size: 14px; }
.bq-eleg__lista[hidden] { display: none; }
.bq-eleg__lista ul { margin: 6px 0 0; padding-left: 1.2em; }
@media (max-width: 700px) {
  .bq-eleg__ops { display: grid; grid-template-columns: minmax(0, 1fr); }
  .bq-eleg__op { min-height: 48px; font-size: 15px; }
  .bq-eleg__q[hidden], .bq-eleg[hidden] { display: none; }
}

/* S2 escalera: tabla en escritorio, tarjetas deslizables en movil */
.bq-escalera { margin-top: 18px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); overflow: hidden; }
.bq-escalera__tabla { width: 100%; border-collapse: collapse; font-size: 14px; }
.bq-escalera__tabla thead th { padding: 12px 14px; text-align: left; font-size: 10px; font-weight: 500; color: var(--mu); }
.bq-escalera__tabla tbody th, .bq-escalera__tabla td { padding: 14px; text-align: left; vertical-align: top; border-top: 1px solid var(--rl); }
.bq-escalera__tabla tbody th { font-size: 15px; font-weight: 800; }
.bq-escalera__precio { font-size: 16px; font-weight: 800; }
.bq-escalera__n { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin-right: 8px; border: 1px solid var(--tx); border-radius: 8px; font-size: 11px; }
@media (max-width: 700px) {
  .bq-escalera { border: 0; border-radius: 0; background: none; overflow: visible; }
  .bq-escalera__tabla, .bq-escalera__tabla tr, .bq-escalera__tabla th, .bq-escalera__tabla td { display: block; }
  .bq-escalera__tabla thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .bq-escalera__tabla tbody { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 6px; }
  .bq-escalera__tabla tbody::-webkit-scrollbar { display: none; }
  .bq-escalera__tabla tbody tr { flex: 0 0 84%; scroll-snap-align: start; padding: 16px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); }
  .bq-escalera__tabla tbody th, .bq-escalera__tabla td { padding: 6px 0 0; border: 0; }
  .bq-escalera__tabla td::before { content: attr(data-label); display: block; font-family: var(--mo-f); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; color: var(--mu); }
}

/* Las dos columnas de escritorio (CORRECCION-PILARES-ESTRUCTURA-1 §2): la lateral ocupa todo el alto de la columna
   principal y la calculadora es un bloque normal dentro, completa, que baja con la pagina; al final de la lateral, el
   mini panel (parts/mini-panel.php), lo unico que se pega, y solo cuando la calculadora ya paso. */
@media (min-width: 1000px) {
  .bq-dos { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 40px; align-items: start; max-width: var(--wide); margin-inline: auto; padding-inline: var(--gut); }
  .bq-dos .pilar__wrap { max-width: none; padding-inline: 0; }
  .bq-dos__lado { align-self: stretch; display: flex; flex-direction: column; gap: 16px; margin-top: clamp(44px, 7vw, 88px); }
  .pilar .bq-calc__abrir, .bq-dos .bq-calc__cerrar { display: none; }
}

/* La capa de escritorio en la pilar de marca (B-P1f; CORRECCION-PILARES-ESTRUCTURA-1 §2). En movil .pcol no tiene estilo
   y la calculadora queda donde siempre; en escritorio las secciones van a la izquierda y la seccion de la calculadora es
   la columna derecha entera: la calculadora (su .pilar__wrap, con el marco) arranca donde siempre, completa, sin alto
   maximo ni barra interna, y baja con la pagina; debajo, el mini panel, que se pega solo cuando ya paso. */
@media (min-width: 1000px) {
  .pcol { display: grid; grid-template-columns: minmax(0, 1fr) 380px; column-gap: 40px; max-width: var(--wide); margin-inline: auto; padding-inline: var(--gut); }
  .pcol > .pilar__sec { grid-column: 1; min-width: 0; }
  .pcol > .pilar__sec > .pilar__wrap { max-width: none; padding-inline: 0; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] { grid-column: 2; grid-row: 1 / span 12; align-self: stretch; margin-top: clamp(44px, 7vw, 88px); padding: 0; content-visibility: visible; display: flex; flex-direction: column; gap: 16px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] > .pilar__wrap { padding: 18px; border: 2px solid var(--tx); border-radius: 18px; background: var(--pilar-s); }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] h2 { font-size: var(--fs-xl); }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .calc { grid-template-columns: minmax(0, 1fr); gap: 14px; margin-top: 16px; }
  /* en la columna, mas compacta: mismas medidas de antes, pero todo a la vista (sin desplazamiento interno) */
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .calc__controles { padding: 14px 16px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .calc__grupo + .calc__grupo { margin-top: 12px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .calc__personas { margin-top: 10px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .calc__fila { padding: 8px 0; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .calc__mas-menos { width: 36px; height: 36px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .cuenta { position: static; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .cuenta__cab { padding: 10px 18px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .cuenta__filas { gap: 6px; padding: 10px 18px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .cuenta__total { margin: 0 18px; padding: 10px 0; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .cuenta__cifra { font-size: 26px; }
  .pilar .pcol > .pilar__sec[data-seccion="calculadora"] .cuenta__pie { padding: 0 18px 14px; }
  /* el mapa grande y la lista a la par: el dibujo se queda fijo mientras pasa la lista */
  .pilar #s9 .pilar__wrap { max-width: var(--wide); }
  .pilar .mapa__cuerpo { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }
  .pilar .mapa__dibujo { position: sticky; top: calc(var(--pilar-top) + var(--pilar-barra) + 16px); }
  .pilar .mapa__svg { max-width: none; }
}

/* S4 estrellas: tarjetas en movil, pestañas en escritorio */
.bq-tabs { display: none; }
.bq-estrellas { margin: 18px 0 0; padding: 0; list-style: none; display: grid; gap: 16px; }
.bq-estrella h3 { margin: 0; font-size: 18px; }
.bq-estrella h3 small { font-size: 10px; color: var(--mu); }
.bq-estrella__precio { margin: 10px 0 0; font-size: 15px; }
.bq-estrella__botones { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.bq-estrella__mas { margin-top: 14px; }
.bq-estrella__ficha { margin: 6px 0 0; }
.bq-estrella__fila { display: grid; gap: 2px; padding: 10px 0; border-top: 1px solid var(--rl); }
.bq-estrella__fila dt { font-size: 10px; color: var(--mu); }
.bq-estrella__fila dd { margin: 0; font-size: 14px; line-height: 1.55; }
.bq-estrella__fila ul { margin: 0; padding-left: 1.1em; }
.bq-estrella.is-recomendada { box-shadow: inset 0 0 0 2px var(--ac); }
.conmutador__b.is-recomendada::after { content: ""; display: inline-block; width: 8px; height: 8px; margin-left: 6px; border-radius: 50%; background: var(--ac); vertical-align: middle; }
@media (min-width: 701px) {
  .bq-tabs { display: inline-flex; flex-wrap: wrap; margin-top: 18px; }
  .bq-estrellas.is-tabs { margin-top: 12px; }
  .bq-estrellas.is-tabs > li:not(.is-activa) { display: none; }
  .bq-estrella__fila { grid-template-columns: 150px minmax(0, 1fr); gap: 16px; }
}

/* S6 la calculadora: fija al lado en escritorio; hoja desde abajo por debajo de 1000 px */
.bq-calc { padding: 18px; border: 2px solid var(--tx); border-radius: 18px; background: var(--pilar-s); }
.bq-calc__cab { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; font-size: 11px; color: var(--mu); }
.bq-calc__cerrar { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--rl); border-radius: 12px; background: var(--pilar-s); color: var(--tx); cursor: pointer; }
.bq-calc .calc__grupo + .calc__grupo { margin-top: 14px; }
.bq-calc .calc__fila small { display: block; font-size: 12px; color: var(--mu); }
.bq-calc__cuenta { display: grid; gap: 6px; margin: 14px 0 0; padding-top: 12px; border-top: 1px solid var(--tx); }
.bq-calc__cuenta > div { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; }
.bq-calc__cuenta dd { margin: 0; font-weight: 700; }
.bq-calc__total { font-size: 16px; }
.bq-calc__total dd { font-size: 24px; font-weight: 800; }
.bq-calc__frase { margin: 10px 0 14px; font-size: 13px; line-height: 1.5; color: var(--mu); }
.bq-calc__reservar { width: 100%; }
.bq-calc__velo { position: fixed; inset: 0; z-index: 110; background: color-mix(in oklab, var(--g) 70%, transparent); }
.bq-calc__velo[hidden] { display: none; }
@media (max-width: 999px) {
  .bq-calc { position: fixed; left: 0; right: 0; bottom: 0; z-index: 120; max-height: 86vh; overflow-y: auto; padding: 16px var(--gut) calc(18px + env(safe-area-inset-bottom)); border-width: 2px 0 0; border-radius: 20px 20px 0 0; visibility: hidden; transform: translateY(105%); transition: transform 260ms var(--ez), visibility 260ms var(--ez); }
  .bq-calc.is-abierta { visibility: visible; transform: none; }
  .bq-calc__abrir { margin-top: 14px; }
}
@media (prefers-reduced-motion: reduce) { .bq-calc { transition: none; } }

/* S7 por tu cuenta, S8 privado */
.bq-cuenta { margin-top: 14px; }
.bq-cuando { display: grid; gap: 12px; margin-top: 16px; }
.bq-cuando .pilar__caja { margin: 0; }
@media (min-width: 760px) { .bq-cuando { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.bq-idea__precio { margin-top: 10px; font-size: 15px; font-weight: 700; color: var(--tx); }
.bq-cotizador { margin-top: 18px; }
.bq-cotizador > summary { display: inline-flex; align-items: center; min-height: 52px; padding: 0 44px 0 22px; border-radius: 14px; background: var(--ac); color: var(--pilar-onac); font-weight: 800; }
.bq-cotizador > summary::after { color: var(--pilar-onac); right: 16px; }
.bq-cotizador[open] > summary { margin-bottom: 14px; }
.bq-cotizador[data-fijo] > summary { min-height: 0; padding: 0; background: none; color: var(--tx); font-size: 18px; }
details.pplegable.bq-cotizador:not(.pilar__caja) { border: 0; }
/* El cotizador de A en dos formatos (B-P1f): completo desde 701 px; en movil, el boton que abre la hoja corta */
.bq-cotizador__abrir { margin-top: 18px; }
@media (max-width: 700px) { .pilar .bq-cotizador { display: none; } }
@media (min-width: 701px) { .pilar .bq-cotizador__abrir { display: none; } }
/* El privado plegado (Xcaret): en movil una fila con el H2 por titulo; desde 701 px, abierto y sin marco */
details.pplegable.bq-privado { margin-top: 0; }
.bq-privado > summary h2 { margin: 2px 0 0; }
@media (min-width: 701px) { details.pplegable.bq-privado[data-fijo] { border: 0; padding-bottom: 0; } details.pplegable.bq-privado[data-fijo] > summary { padding-block: 0; } }

/* S9 mapa propio */
.bq-mapa { margin-top: 18px; }
.bq-mapa__cuerpo { display: grid; gap: 16px; margin-top: 14px; }
@media (min-width: 1000px) {
  .bq-mapa__cuerpo { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 32px; align-items: start; }
  .bq-mapa__col { order: 2; }
  .bq-mapa__lista { max-height: 560px; overflow-y: auto; }
  .bq-mapa__dibujo { order: 1; }
}
.bq-mapa__lista { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--rl); }
.bq-mapa__lista > li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; padding: 12px 8px; border-bottom: 1px solid var(--rl); border-radius: 10px; }
.bq-mapa__lista > li[hidden] { display: none; }
.bq-mapa__lista > li.is-marcado { background: color-mix(in oklab, var(--ac) 16%, transparent); }
.bq-mapa__lista p { margin: 2px 0 0; font-size: 13px; color: var(--mu); }
.bq-mapa__meta { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.bq-mapa__meta b { color: var(--tx); font-weight: 700; }
.bq-mapa__num { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: var(--tx); color: var(--g); font-size: 12px; font-weight: 800; }
.bq-mapa__dibujo > summary { font-weight: 800; }
.bq-mapa__svg { display: block; width: 100%; max-width: 560px; height: auto; margin-inline: auto; }
.bq-mapa__mar { fill: color-mix(in oklab, var(--d5) 16%, var(--pilar-s)); }
.bq-mapa__tierra { fill: var(--el); stroke: var(--rl); stroke-width: .5; }
.bq-mapa__isla { fill: color-mix(in oklab, var(--ok) 22%, var(--pilar-s)); stroke: var(--tx); stroke-width: .4; }
.bq-mapa__contoy { fill: color-mix(in oklab, var(--ok) 22%, var(--pilar-s)); stroke: var(--tx); stroke-width: .4; stroke-dasharray: 1 1; }
.bq-mapa__rotulo { font-family: var(--mo-f); font-size: 3.4px; letter-spacing: .1em; fill: var(--mu); text-transform: uppercase; }
.bq-mapa__punto { cursor: pointer; }
.bq-mapa__punto circle { fill: var(--tx); stroke: var(--g); stroke-width: .6; transition: opacity 120ms var(--ez); }
.bq-mapa__punto.is-snorkel circle { fill: var(--d5); }
.bq-mapa__punto text { font-family: var(--ui); font-size: 2.8px; font-weight: 800; fill: var(--g); text-anchor: middle; pointer-events: none; }
.bq-mapa__punto.is-snorkel text { fill: var(--tx); }
.bq-mapa__punto.is-apagado { opacity: .22; }
.bq-mapa__punto.is-marcado circle { stroke: var(--ac); stroke-width: 1.4; }
.bq-mapa__punto:focus-visible { outline: none; }
.bq-mapa__punto:focus-visible circle { stroke: var(--ac); stroke-width: 1.4; }

/* S10 catalogo */
.bq-cat { margin-top: 14px; }
.bq-cat__lista { display: grid; gap: 14px; margin: 14px 0 0; padding: 0; list-style: none; }
@media (min-width: 760px) { .bq-cat__lista { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .bq-cat__lista { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bq-cat__tour { display: flex; flex-direction: column; }
.bq-cat__tour[hidden] { display: none; }
.bq-cat__tour h3 { margin: 0; font-size: 16px; }
.bq-cat__tour h3 small { font-size: 10px; color: var(--mu); }
.bq-cat__para { margin: 6px 0 0; font-size: 13px; color: var(--mu); }
.bq-cat__precio { margin: 10px 0 12px; font-size: 14px; }
.bq-cat__precio b { font-size: 20px; font-weight: 800; }
.bq-cat__precio small { color: var(--mu); }
.bq-cat__tour .pilar__btn { margin-top: auto; align-self: flex-start; }

/* S12 consejos: tres columnas en escritorio; confianza de 4 */
@media (min-width: 701px) { .ptabs--3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 32px; } }
@media (min-width: 1000px) { .confianza:has(> :nth-child(4)) { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* La barra fija de abajo (movil): Reservar · Calcular · WhatsApp */
.bq-barra-fija { display: none; }
@media (max-width: 999px) {
  .bq-barra-fija { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); border-top: 1px solid var(--rl); background: color-mix(in oklab, var(--g) 94%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
  .bq-barra-fija__b { min-height: 48px; padding: 0 8px; font-size: 14px; gap: 6px; line-height: 1.15; text-align: center; white-space: normal; }
  html.bq-hoja-abierta { overflow: hidden; }
}

/* =============================================================================
   PILAR CON SALIDAS (ORDEN-PILAR-COZUMEL-1): el selector «¿Desde donde sales?», como llegar, el aviso de salida, el
   interruptor de tarifa, el submarino, la tabla por salida y el mapa con la lista en acordeon.
   ========================================================================== */
/* lo de otra salida y la otra tarifa van en el HTML con hidden: ninguna regla de display les gana */
.pilar [data-salida][hidden], .pilar [data-tarifa][hidden] { display: none !important; }

/* el selector: segmentado en el heroe y sobre la calculadora; en movil, pastillas (y pegadas en la barra) */
.bq-salida { margin-top: 16px; }
.bq-salida__t { margin: 0 0 8px; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--mu); }
.bq-salida__ops { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 4px; border: 1px solid var(--rl); border-radius: 14px; background: var(--pilar-s); }
.bq-salida__op { display: flex; align-items: center; justify-content: center; min-height: 48px; padding: 6px 10px; border-radius: 10px; color: var(--tx); font-size: 14px; font-weight: 700; line-height: 1.2; text-align: center; text-decoration: none; }
.bq-salida__op[aria-current="true"] { background: var(--tx); color: var(--g); }
.bq-salida__op:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; }
.bq-salida--calc { margin: 0 0 14px; }
.bq-salida--calc .bq-salida__op { min-height: 40px; padding: 4px 6px; font-size: 12px; }
.bq-salida--barra { display: none; }
@media (min-width: 1000px) { .bq-salida--heroe .bq-salida__op { min-height: 56px; font-size: 15px; } }
@media (max-width: 999px) {
  .pilar--salidas { --pilar-barra: 112px; }   /* la barra lleva la fila de pastillas encima de las secciones */
  .bq-salida--barra { display: block; margin: 0 0 8px; padding-inline: var(--gut); }
  .bq-salida--barra .bq-salida__ops { gap: 3px; padding: 3px; }
  .bq-salida--barra .bq-salida__op { min-height: 40px; padding: 3px 4px; font-size: 12px; }
  .bq-salida--heroe .bq-salida__op { min-height: 46px; padding: 4px 6px; font-size: 13px; }
}

/* S1b como llegar: en columna con la linea vertical (movil); en fila con la linea horizontal (760 o mas) */
.bq-ruta { position: relative; display: grid; gap: 0; margin: 22px 0 0; padding: 0; list-style: none; }
.bq-ruta__paso { position: relative; display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 14px; padding-bottom: 22px; }
.bq-ruta__paso:not(:last-child)::before { content: ""; position: absolute; left: 25px; top: 52px; bottom: 0; width: 2px; background: var(--rl); }
.bq-ruta__ico { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border: 2px solid var(--tx); border-radius: 50%; background: var(--pilar-s); color: var(--tx); }
.bq-ruta__txt p { margin: 0; }
.bq-ruta__lugar { font-size: 17px; }
.bq-ruta__n { margin-right: 4px; font-size: 11px; color: var(--mu); }
.bq-ruta__txt .bq-ruta__dato { margin: 4px 0 6px; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.bq-ruta__txt p:last-child { font-size: 15px; line-height: 1.55; color: var(--mu); }
@media (min-width: 760px) {
  .bq-ruta { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
  .bq-ruta__paso { grid-template-columns: minmax(0, 1fr); gap: 12px; padding-bottom: 0; }
  .bq-ruta__paso:not(:last-child)::before { left: 64px; right: -12px; top: 25px; bottom: auto; width: auto; height: 2px; }
}
.bq-autos { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 14px; margin-top: 22px; }
.bq-autos__ico { color: var(--mu); }
.bq-autos .pilar__h3 { margin: 6px 0; }
.bq-autos p { margin: 0; }
.bq-autos__etq { display: inline-block; padding: 3px 9px; border: 1px solid var(--rl); border-radius: 999px; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--mu); }

/* el aviso de salida: caja amarilla con icono */
.bq-aviso { display: flex; align-items: flex-start; gap: 10px; margin: 12px 0 0; padding: 12px 14px; border: 1px solid color-mix(in oklab, var(--ac) 65%, transparent); border-radius: 12px; background: color-mix(in oklab, var(--ac) 20%, var(--pilar-s)); color: var(--tx); font-size: 14px; line-height: 1.45; }
.bq-aviso svg { flex: none; margin-top: 1px; }
.bq-aviso--sm { margin-top: 8px; padding: 8px 10px; font-size: 12.5px; }
.bq-aviso[hidden] { display: none; }   /* el display:flex de arriba le ganaba a hidden: salia la nota vacia (caja amarilla) en la calculadora */
.bq-estrella__extra { margin: 8px 0 0; font-size: 14px; color: var(--mu); }
.bq-cat__sale { margin: 6px 0 0; font-size: 13px; color: var(--mu); }
.bq-calc__hueco { margin: 0 0 12px; font-size: 13px; }

/* el interruptor Extranjero / Mexicano con INE */
.bq-tarifa { margin-top: 16px; }

/* S4b el submarino: dos columnas (cifras y texto) en escritorio; en movil las cifras deslizan (pcar) y el texto abajo */
.bq-sub__cuerpo { display: grid; gap: 22px; margin-top: 18px; }
.bq-sub__cifras { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0; }
.bq-sub__cifra { display: flex; flex-direction: column-reverse; justify-content: flex-end; gap: 6px; padding: 18px; border: 2px solid var(--tx); border-radius: 16px; background: var(--pilar-s); }
/* (CORRECCION-PILARES-ESCRITORIO-1) la cifra y el reparto se miden contra su contenedor, no contra la ventana: a 1024 la
   columna de la pilar deja 527px y con 3.4vw «45 min» pedia 110px en una celda de 62. */
.bq-sub > .pilar__wrap { container: psub / inline-size; }
.bq-sub__cifra { container-type: inline-size; }
.bq-sub__cifra dd { margin: 0; font-size: clamp(22px, 26cqi, 44px); font-weight: 800; line-height: 1; letter-spacing: -.02em; white-space: nowrap; }
.bq-sub__cifra dt { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.bq-sub__entrada { margin: 0 0 12px; font-size: 17px; line-height: 1.6; }
.bq-sub__precio { margin: 14px 0 0; font-size: 15px; }
@container psub (min-width: 760px) { .bq-sub__cuerpo { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 36px; align-items: start; } }
@media (max-width: 700px) { .pilar .bq-sub__cifras.pcar > .bq-sub__cifra { flex-basis: 46%; } }

/* S5 la tabla por salida: tours en filas. Escritorio, la tabla completa; movil, cada fila es una tarjeta y deslizan */
.bq-comp { margin-top: 18px; }
/* (CORRECCION-PILARES-ESCRITORIO-1) 8 columnas no caben en la columna de 1024: se desliza en su propio contenedor con
   sombra de «hay mas» (la misma receta que la tabla de precios), nunca se sale. */
@media (min-width: 701px) {
  .bq-comp {
    overflow-x: auto; overscroll-behavior-x: contain;
    background:
      linear-gradient(to right, var(--g) 30%, transparent) left / 28px 100% no-repeat local,
      linear-gradient(to left, var(--g) 30%, transparent) right / 28px 100% no-repeat local,
      radial-gradient(farthest-side at 0 50%, color-mix(in oklab, var(--tx) 22%, transparent), transparent) left / 12px 100% no-repeat scroll,
      radial-gradient(farthest-side at 100% 50%, color-mix(in oklab, var(--tx) 22%, transparent), transparent) right / 12px 100% no-repeat scroll;
  }
  .bq-comp__tabla th:first-child { min-width: 16ch; }
}
.bq-comp__tabla { width: 100%; border-collapse: collapse; font-size: 14px; }
.bq-comp__tabla th, .bq-comp__tabla td { padding: 12px 10px; border-bottom: 1px solid var(--rl); text-align: left; vertical-align: top; }
.bq-comp__tabla thead th { font-size: 10px; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--mu); }
.bq-comp__tabla tbody th { font-size: 15px; }
.bq-comp__tabla tr.is-principal { background: color-mix(in oklab, var(--ac) 12%, transparent); }
@media (max-width: 700px) {
  .bq-comp__tabla thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .bq-comp__tabla { display: block; }
  .bq-comp__tabla tbody { display: flex; gap: 12px; padding-bottom: 8px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
  .bq-comp__tabla tbody::-webkit-scrollbar { display: none; }
  .bq-comp__tabla tr { display: grid; flex: 0 0 82%; padding: 14px 16px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); scroll-snap-align: start; }
  .bq-comp__tabla tr.is-principal { border-color: var(--tx); background: color-mix(in oklab, var(--ac) 12%, var(--pilar-s)); }
  .bq-comp__tabla th, .bq-comp__tabla td { padding: 7px 0; }
  .bq-comp__tabla tbody th { padding-top: 0; font-size: 16px; border-bottom: 1px solid var(--tx); }
  .bq-comp__tabla td { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
  .bq-comp__tabla td:last-child { border-bottom: 0; }
  .bq-comp__tabla td::before { content: attr(data-label); font-size: 12px; color: var(--mu); }
}

/* S9 el mapa con la lista en acordeon (movil: el dibujo arriba; escritorio: el dibujo y la lista a la par) */
.bq-mapa__ruta { fill: none; stroke: var(--tx); stroke-width: .5; stroke-dasharray: 1.4 1.1; opacity: .7; }
.bq-mapa__punto.is-destacado circle { fill: var(--ac); stroke: var(--tx); stroke-width: .7; }
.bq-mapa__punto.is-destacado text { fill: var(--onac); }
.bq-mapa__lista > li.is-destacado b { color: var(--tx); }
.bq-mapa--arriba .bq-mapa__svg { max-width: 420px; }
.bq-mapa__acordeon > summary { font-weight: 800; }
details.pplegable.bq-mapa__acordeon:not(.pilar__caja) { margin-top: 0; }
@media (min-width: 1000px) {
  .bq-mapa--arriba .bq-mapa__col { order: 2; }
  .bq-mapa--arriba .bq-mapa__dibujo { order: 1; position: sticky; top: calc(var(--pilar-top) + var(--pilar-barra) + 16px); }
  .bq-mapa--arriba .bq-mapa__svg { max-width: none; }
}

/* =============================================================================
   CHICHEN ITZA Y TULUM (ORDEN-PILAR-CHICHEN-TULUM-1): los cuatro componentes nuevos (destacado, entradas,
   «¿compartido o privado?», elegir operador), lo que ves, los tres lugares de Tulum, los mapas en pestañas y las
   estrellas con niveles. Solo tokens: noche y dia salen de los mismos.
   ========================================================================== */
/* 1 · la tarjeta destacada (Domingo para mexicanos): ancha, las letras chiquitas a la vista */
.pdestac-sec { padding-top: 8px; }
.pdestac { padding: 18px; border: 2px solid var(--tx); border-radius: 20px; background: var(--pilar-s); }
.pdestac__grid { display: grid; gap: 20px; }
.pdestac__grid > * { min-width: 0; }   /* la fila de iconos que se desliza no ensancha la columna */
@media (min-width: 900px) { .pdestac { padding: 24px; } .pdestac__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 36px; align-items: start; } }
.pdestac__foto { overflow: hidden; border-radius: 14px; }
.pdestac__foto img, .pdestac__foto .pilar__foto-hueco { display: block; width: 100%; aspect-ratio: 16 / 10; height: auto; object-fit: cover; }
.pdestac__etq { display: inline-block; margin: 14px 0 0; padding: 4px 10px; border-radius: 8px; background: var(--ac); color: var(--onac); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
.pdestac__t { margin: 10px 0 0; font-size: var(--fs-2xl); line-height: 1.15; }
.pdestac__precio { margin: 8px 0 0; }
.pdestac__precio b { font-size: 34px; font-weight: 800; letter-spacing: -.02em; }
.pdestac__precio span { color: var(--mu); font-size: 14px; }
.pdestac__texto { margin: 8px 0 0; font-size: 15px; line-height: 1.55; }
.pdestac__h3 { margin: 0 0 10px; font-size: 11px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--mu); }
.pdestac__incluye { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.pdestac__incluye li { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 6px; border: 1px solid var(--rl); border-radius: 12px; text-align: center; font-size: 13px; font-weight: 700; line-height: 1.2; }
.pdestac__nota { margin: 8px 0 0; font-size: 12.5px; }
.pdestac__chiquitas { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--rl); }
.pdestac__chiquitas ul { margin: 0; padding-left: 1.1em; font-size: 14px; line-height: 1.55; }
.pdestac__btn { margin-top: 16px; }
@media (max-width: 700px) {
  .pdestac__incluye { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 4px; }
  .pdestac__incluye::-webkit-scrollbar { display: none; }
  .pdestac__incluye li { flex: 0 0 96px; scroll-snap-align: start; }
  .pdestac__btn { width: 100%; }
  .pdestac__foto { display: none; }   /* en movil la tarjeta va sin foto (CONTENIDO S1c: la foto es de la columna de escritorio) */
  .pdestac__etq { margin-top: 0; }
}

/* 2 · la tabla de entradas y como llegar dentro de la misma seccion */
.pentradas__entrada { max-width: 72ch; }
.pentradas__tabla td { white-space: nowrap; font-weight: 700; }
.pentradas__tabla tbody th small { font-weight: 500; color: var(--mu); }
.pentradas__ast { margin-left: 2px; font-weight: 800; color: var(--tx); }
.pentradas__total th, .pentradas__total td { border-top: 2px solid var(--tx); font-weight: 800; }
.pentradas__nota { margin: 8px 0 0; font-size: 13px; color: var(--mu); }
.pentradas__vigencia { margin: 6px 0 0; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
@media (max-width: 700px) { .pentradas__tabla th, .pentradas__tabla td { padding: 10px 8px; font-size: 13px; } }
details.pplegable.bq-llegar { margin-top: 28px; }
.bq-llegar > div { padding-top: 4px; }
.bq-ruta--caminos { gap: 12px; }
.bq-ruta--caminos .bq-ruta__paso { align-content: start; padding: 16px; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); }
.bq-ruta--caminos .bq-ruta__paso::before { content: none; }
@media (min-width: 760px) { .bq-ruta--caminos { gap: 16px; } }
.bq-llegar__cuenta { margin-top: 16px; }

/* 3 · ¿compartido o privado?: lado a lado en escritorio, apiladas en movil */
.pcvp { margin-top: 20px; padding: 18px; border: 2px solid var(--tx); border-radius: 18px; background: var(--pilar-s); }
.pcvp [hidden] { display: none !important; }
.pcvp__t { margin: 0; }
.pcvp__controles { display: grid; gap: 14px; margin-top: 14px; }
@media (min-width: 760px) { .pcvp__controles { grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: start; } }
.pcvp__grupo { min-width: 0; margin: 0; padding: 0; border: 0; }
/* a 360 la chip mas larga (en) se salia 5 px del grupo: puede partirse en dos lineas */
.pcvp__grupo .chip { max-width: 100%; white-space: normal; }
.pcvp__rot { display: block; margin: 0 0 8px; padding: 0; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--mu); }
.pcvp__cols { display: grid; gap: 12px; margin-top: 16px; }
@media (min-width: 600px) { .pcvp__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.pcvp__col { padding: 16px; border: 1px solid var(--rl); border-radius: 14px; }
.pcvp__col--p { border-color: var(--tx); }
.pcvp__col p { margin: 0; }
.pcvp__col-t { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--mu); }
.pcvp__col .pcvp__total { margin-top: 6px; font-size: 28px; font-weight: 800; letter-spacing: -.02em; }
.pcvp__col .pcvp__pp { margin-top: 2px; font-size: 14px; color: var(--mu); }
.pcvp__pp b { color: var(--tx); }
.pcvp__col .pcvp__desglose { margin-top: 8px; font-size: 12.5px; line-height: 1.45; color: var(--mu); }
.pcvp__cotiza { margin-top: 10px; width: 100%; }
.pcvp__mensaje { margin: 14px 0 0; padding: 12px 14px; border-radius: 12px; background: color-mix(in oklab, var(--ac) 20%, var(--pilar-s)); font-size: 15px; font-weight: 700; }

/* 4 · como elegir tu tour sin sorpresas */
.poper { display: grid; gap: 24px; margin-top: 18px; }
.poper > * { min-width: 0; }   /* el carrusel de tarjetas no ensancha la columna */
@media (min-width: 1000px) { .poper { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 40px; } }
.poper__lista { margin: 10px 0 0; padding: 0; list-style: none; }
.poper__lista li { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--rl); font-size: 15px; line-height: 1.5; }
.poper__lista svg { margin-top: 1px; color: var(--tx); }
.poper__lista span { color: var(--mu); }
.poper__tarjetas { display: grid; gap: 12px; margin: 10px 0 0; padding: 0; list-style: none; }
.poper__tarjeta h4 { margin: 10px 0 0; font-size: 16px; }

/* lo que ves (S4b) y los tres lugares de Tulum */
.pquever__t { margin: 10px 0 0; font-size: 16px; }
.pquever__extra { margin-top: 20px; }
.plugares { display: grid; gap: 16px; margin: 18px 0 0; padding: 0; list-style: none; }
@media (min-width: 760px) { .plugares { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.plugares__item { padding: 10px 10px 16px; }
.plugares__foto { overflow: hidden; border-radius: 12px; }
.plugares__foto img, .plugares__foto .pilar__foto-hueco { display: block; width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; }
.plugares__item h3 { margin: 12px 6px 0; font-size: 17px; }
.plugares__item p { margin: 6px 6px 0; }
.plugares__n { margin-right: 4px; font-size: 11px; color: var(--mu); }
.plugares__alrededor { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin: 10px 0 0; padding: 0; list-style: none; }
.plugares__alrededor li { display: flex; align-items: center; gap: 10px; padding: 12px; border: 1px solid var(--rl); border-radius: 14px; background: var(--pilar-s); }
.plugares__alrededor svg { flex: none; }
.plugares__alrededor b { display: block; font-size: 14px; }
.plugares__alrededor span { display: block; font-size: 12.5px; color: var(--mu); }

/* las estrellas con niveles (Clasico, Plus y Deluxe) y la que solo enlaza a su ficha */
.bq-estrella__niveles { margin: 4px 0 0; padding: 0; list-style: none; font-size: 15px; }
.bq-estrella__niveles li { padding: 3px 0; }
.bq-estrella__enlace { margin: 10px 0 0; font-weight: 700; }

/* el elegidor de 4 preguntas (Chichen) */
.bq-elegidor[data-paso="4"] .bq-eleg__barra { width: 88%; }

/* los mapas en pestañas (Chichen: ruta y zona). Sin JS, uno tras otro con su titulo */
.bq-mapas__tabs { display: inline-flex; flex-wrap: wrap; margin-top: 16px; }
.bq-mapas__tabs[hidden], .bq-mapas__panel[hidden] { display: none; }
.bq-mapas__t { margin: 22px 0 0; }
.bq-mapas.is-js .bq-mapas__t { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.bq-mapa__limite { fill: none; stroke: var(--mu); stroke-width: .4; stroke-dasharray: 1 1.2; opacity: .6; }
.bq-mapa__selva { fill: color-mix(in oklab, var(--ok) 14%, var(--pilar-s)); }
.bq-mapa__plaza { fill: var(--el); stroke: var(--rl); stroke-width: .5; }
.bq-mapa__sacbe { fill: none; stroke: var(--tx); stroke-width: 2; stroke-linecap: round; opacity: .3; }
.bq-mapa__agua { fill: color-mix(in oklab, var(--d5) 40%, var(--pilar-s)); stroke: var(--tx); stroke-width: .4; }
.bq-mapa__piramide { fill: color-mix(in oklab, var(--ac) 35%, var(--pilar-s)); stroke: var(--tx); stroke-width: .4; }
/* un H3 que sigue a un parrafo o a una lista dentro de la seccion: aire arriba */
.pilar__wrap > .pilar__h3:not(:first-child) { margin-top: 26px; }
/* la pilar en movil cabe en 13,000 px (ORDEN-PILAR-CHICHEN-TULUM-1 §puerta 6): lo mismo, mas apretado */
@media (max-width: 700px) {
  .bq-mapa--arriba .bq-mapa__svg { max-width: 300px; }
  .pcvp { padding: 14px; }
  .pcvp__controles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .pcvp__controles > :first-child { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
  .pcvp__controles > :first-child .pcvp__rot { margin: 0; }
  .pcvp__cols { margin-top: 12px; gap: 10px; }
  .pcvp__col { padding: 12px 14px; }
  .pcvp__col .pcvp__total { font-size: 24px; }
  .pdestac { padding: 16px; }
  .pdestac__incluye li { padding: 10px 6px; }
  .plugares__alrededor { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 4px; }
  .plugares__alrededor::-webkit-scrollbar { display: none; }
  .plugares__alrededor li { flex: 0 0 72%; scroll-snap-align: start; }
}

/* =============================================================================
   HOLBOX (ORDEN-PILAR-HOLBOX-1): la bioluminiscencia (siempre oscura: data-theme="dark" en la seccion, los tokens cambian
   solos) y el tiburon ballena con su estado por temporada. Solo tokens.
   ========================================================================== */
.pbiolum { position: relative; overflow: hidden; background: var(--g); color: var(--tx);
  /* los tokens de la pilar se resuelven en .pilar con los del tema de la pagina: aqui se vuelven a resolver con los oscuros */
  --pilar-s: var(--s, var(--el)); --pilar-onac: var(--onac, var(--tx)); }
/* el brillo es un degradado quieto: nada que animar (LCP) */
.pbiolum::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(60% 50% at 20% 100%, color-mix(in oklab, var(--d5) 26%, transparent), transparent 70%), radial-gradient(40% 40% at 85% 90%, color-mix(in oklab, var(--d3) 18%, transparent), transparent 70%); }
.pbiolum > .pilar__wrap { position: relative; }
.pbiolum__cuerpo { display: grid; gap: 20px; margin-top: 8px; }
@media (min-width: 760px) { .pbiolum__cuerpo { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px; } }
.ptiburon__cuerpo { display: grid; gap: 16px; margin-top: 18px; }
@media (min-width: 900px) { .ptiburon__cuerpo { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 28px; align-items: start; } }
.ptiburon__cuerpo > .pilar__caja { margin-top: 0; }
.ptiburon__etq { display: inline-block; margin: 0; padding: 4px 10px; border: 1px solid var(--rl); border-radius: 8px; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--mu); }
.ptiburon__etq.is-abierta { border-color: var(--ac); background: var(--ac); color: var(--onac); }
.ptiburon__pico { margin: 8px 0 0; font-size: 14px; }
.ptiburon__tarjeta h3 { margin: 12px 0 0; font-size: 16px; }
.ptiburon__salidas { margin: 10px 0 0; padding: 0; list-style: none; }
.ptiburon__salidas li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; align-items: center; padding: 10px 0; border-top: 1px solid var(--rl); font-size: 14px; }
.ptiburon__salidas li small { color: var(--mu); font-size: 10px; }
.ptiburon__salidas li b { font-size: 16px; }
.ptiburon__salidas li .reservar { grid-column: 1 / -1; justify-self: start; }

/* --- PAQUETES Y COMBOS (ORDEN-PAQUETES-PAGINAS-1, modelo A «Escaparate») --------------------------------------------
   Las piezas son las de la pilar (pilar__sec, pilar__caja, pilar__tabla, rejc) y la tarjeta de siempre; aqui solo lo que
   no existia: el heroe a dos columnas con el destacado, los datos en pildoras, los tres destinos (Cancun mas grande), el
   codigo del traslado y los campos de la calculadora. El acento de cada subpagina es un token: --dest. */
:root { --dest-cancun: #1FA59A; --dest-riviera: #2F9455; --dest-playa: #E2604D; }
.pilar--paquetes-cancun { --dest: var(--dest-cancun); }
.pilar--paquetes-riviera-maya { --dest: var(--dest-riviera); }
.pilar--paquetes-playa-del-carmen { --dest: var(--dest-playa); }
.paq-heroe__in { display: grid; gap: var(--sp6); align-items: start; }
@media (min-width: 1000px) { .paq-heroe--dos .paq-heroe__in { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); } }
.paq-heroe .cab { margin-bottom: var(--sp4); }
.paq-datos { display: flex; flex-wrap: wrap; gap: .45rem; list-style: none; padding: 0; margin: 0 0 var(--sp4); }
.paq-datos li { padding: .35rem .7rem; border-radius: 999px; border: 1px solid var(--rl); border-left: 3px solid var(--dest, var(--aico)); background: var(--s); font-size: var(--fs-sm); font-weight: 700; }
.paq-aviso { margin: 0 0 var(--sp2); }
.paq-linea { margin: 0 0 var(--sp2); color: var(--mu); font-size: var(--fs-sm); }
.paq-destacado { display: grid; gap: var(--sp3); }
.paq-destacado__ver { margin: 0; font-size: var(--fs-sm); }
.paq-destinos__lista { display: grid; gap: var(--sp4); list-style: none; padding: 0; margin: var(--sp5) 0 0; }
@media (min-width: 760px) { .paq-destinos__lista { grid-template-columns: repeat(2, minmax(0, 1fr)); } .paq-destinos__lista--grande > .paq-destino:first-child { grid-column: 1 / -1; } .paq-destinos__lista--grande > .paq-destino:first-child h3 { font-size: var(--fs-2xl); } }
@media (min-width: 1000px) { .paq-destinos__lista:not(.paq-destinos__lista--grande) { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.paq-destino--apagado { opacity: .7; }
.paq-destino { padding: var(--sp5); }
.paq-destino h3 { margin: 0 0 .4rem; }
.paq-destino p { margin: 0 0 .4rem; color: var(--mu); }
.paq-destino__datos { font-size: var(--fs-xs); color: var(--tx); }
.paq-dos { display: grid; gap: var(--sp4); margin-top: var(--sp4); }
@media (min-width: 760px) { .paq-dos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.paq-lista { margin: 0; padding-left: 1.1rem; display: grid; gap: .45rem; }
.paq-pasos { margin: var(--sp4) 0; padding-left: 1.3rem; display: grid; gap: .6rem; }
.paq-traslado { margin-top: var(--sp5); }
.paq-codigo { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin: var(--sp3) 0; }
.paq-codigo code { font-family: var(--mo-f); font-size: var(--fs-xl); font-weight: 700; letter-spacing: .08em; padding: .35rem .8rem; border-radius: 10px; border: 1px dashed var(--aico); background: var(--s); }
.paq-calc__campos { display: flex; flex-wrap: wrap; gap: var(--sp4); margin: var(--sp4) 0; }
.paq-calc__campo { display: grid; gap: .35rem; }
.paq-calc__campo input, .paq-calc__campo select { min-height: 44px; padding: 0 .8rem; border-radius: 10px; border: 1px solid var(--rl); background: var(--s); color: var(--tx); font: inherit; }
.paq-calc__msj { font-weight: 700; min-height: 1.5em; }
.paq-calc__lista { list-style: none; padding: 0; margin: 0 0 var(--sp3); display: grid; gap: .4rem; }
.paq-calc__lista li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .4rem; padding: .55rem .8rem; border-radius: 10px; border: 1px solid var(--rl); background: var(--s); }
.paq-enlaces { margin-top: var(--sp3); }
/* El motor de listados de la tienda dentro de una pilar (catalogo de paquetes, /combos/): sin su propio margen lateral ni
   su aire de arriba, que ya pone .pilar__wrap; asi la barra y la tarjeta miden lo mismo que en la tienda (B-T1). */
.pilar__wrap > .tienda-pagina { padding: 0 0 var(--sp6); max-width: none; }
/* La tarjeta de siempre dentro de una pilar conserva su titulo (style.css 13.3): .pilar h3 lo bajaba a --fs-lg. */
.pilar .card h3 { margin: 0; font-size: 1.15rem; letter-spacing: -.035em; line-height: 1.08; }
.paq-botones { display: flex; flex-wrap: wrap; gap: .6rem; margin: var(--sp4) 0 0; }

/* =============================================================================
   PU · LA PILAR ORDENADA EN SEIS ETAPAS (ORDEN-PILAR-UNIVERSAL-1, B-PU1; hoy solo Xcaret: body.c100-pilar--universal)
   Precios · Elige · Calcula · Conoce · Planea · Dudas. El orden del DOM es el que se lee: nada se reordena con CSS.
   1024 px o mas (PILARES-ESCRITORIO-21-OCT): contenido a la izquierda y UNA barra fija a la derecha, el panel que cambia con la etapa arriba y el indice debajo.
   Por debajo: la barra de etapas ocupa el lugar del header al pasar el hero, y abajo el precio y Reservar.
   ========================================================================== */
.pu-etapa { scroll-margin-top: calc(var(--pilar-top) + 12px); padding-top: clamp(36px, 6vw, 72px); }
.pu-etapa__rot { width: 100%; max-width: var(--wide); margin: 0 auto; padding-inline: var(--gut); font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ai); }
.pu-etapa > .pilar__sec { padding-top: clamp(22px, 3.6vw, 44px); scroll-margin-top: calc(var(--pilar-top) + 12px); }
.pu-indice, .pu-panel { display: none; }

/* El indice y el panel, solo en escritorio ancho */
@media (min-width: 1024px) {
  /* PILARES-ESCRITORIO-21-OCT (Marco 10:31; chat 12:35): 2 columnas. Izquierda el contenido (nunca menos de 600 px); derecha UNA
     barra de 280 px (320 desde 1240): el panel arriba y el índice DEBAJO, del mismo ancho y pegados juntos. Sin tocar el marcado:
     los dos van en la misma celda de la columna derecha; el índice baja lo que mide el panel (--pu-modal-h, lo mide pilar.js). */
  .pu { --pu-lado: 280px; --pu-sep: 16px; --pu-modal-h: 232px; --pu-arriba: clamp(36px, 6vw, 72px); display: grid; grid-template-columns: minmax(600px, 1fr) var(--pu-lado); gap: 40px; width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: var(--gut); align-items: start; }
  .pu-contenido { grid-column: 1; grid-row: 1; min-width: 0; }
  .pu > .pu-panel { grid-column: 2; grid-row: 1; align-self: start; }
  /* el modalcito, de ALTO FIJO (PILARES-ESCRITORIO): no crece ni encoge por etapa (el índice de abajo nunca se mueve: CLS 0); lo que
     no cabe se recorta y el detalle va al contenido (la calculadora ya no se muda aquí) */
  .pu > .pu-panel { height: var(--pu-modal-h); max-height: none; overflow: hidden; box-sizing: border-box; }
  .pu > .pu-indice { grid-column: 2; grid-row: 1; align-self: start; }
  .pu-contenido .pilar__wrap, .pu-contenido .pu-etapa__rot { max-width: none; padding-inline: 0; }
  .pu-indice, .pu-panel { display: block; position: sticky; top: calc(var(--pilar-top) + 20px); margin-top: var(--pu-arriba); }
  .pu > .pu-indice { top: calc(var(--pilar-top) + 20px + var(--pu-modal-h, 0px) + var(--pu-sep)); margin-top: calc(var(--pu-arriba) + var(--pu-modal-h, 0px) + var(--pu-sep));
    max-height: calc(100vh - var(--pilar-top) - 40px - var(--pu-modal-h, 0px) - var(--pu-sep)); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
  .pu-indice__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
  .pu-indice__a { display: flex; gap: 10px; align-items: baseline; padding: 9px 12px; border-left: 3px solid transparent; border-radius: 0 10px 10px 0; color: var(--mu); font-size: 13px; font-weight: 700; text-decoration: none; }
  .pu-indice__a .mo { font-size: 11px; color: var(--mu); }
  .pu-indice__a:hover { color: var(--tx); }
  .pu-indice__a[aria-current] { color: var(--tx); border-left-color: var(--ai); background: var(--pilar-s); }
  .pu-indice__otras { margin: 26px 0 8px; padding-left: 15px; font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--mu); }
  .pu-indice__pilares { list-style: none; margin: 0; padding: 0 0 0 15px; display: grid; gap: 6px; font-size: 12px; }
  .pu-indice__pilares a { color: var(--mu); text-decoration: none; }
  .pu-indice__pilares a:hover { color: var(--tx); text-decoration: underline; text-underline-offset: 3px; }
  .pu-panel { max-height: calc(100vh - var(--pilar-top) - 40px); overflow-y: auto; overscroll-behavior: contain; padding: 18px; border: 1px solid var(--rl); border-radius: 20px; background: var(--pilar-s); box-shadow: 0 18px 40px -24px rgb(0 0 0 / .45); }
  .pu-panel__b { display: grid; gap: 10px; }
  .pu-panel__b[hidden] { display: none; }   /* el display: grid le ganaba a hidden: salian los seis bloques juntos */
  /* un solo boton de color a la vista: en escritorio el «Reservar» es el del panel; el de la cuenta del centro se esconde
     (sigue en el DOM: el del panel lo pulsa, porque es el que lleva lo elegido) */
  .pu-panel__rot { margin: 0; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--mu); }
  .pu-panel__cifra { margin: 0; font-size: 30px; font-weight: 800; letter-spacing: -.03em; line-height: 1.05; font-variant-numeric: tabular-nums; }
  .pu-panel__cifra small { font-size: 13px; font-weight: 600; color: var(--mu); letter-spacing: 0; }
  .pu-panel__nombre { margin: 0; font-size: 17px; font-weight: 800; line-height: 1.25; }
  .pu-panel__txt { margin: 0; font-size: 14px; line-height: 1.5; color: var(--mu); }
  .pu-panel__chico { margin: 0; display: flex; justify-content: space-between; gap: 10px; font-size: 14px; color: var(--mu); }
  .pu-panel__chico b { color: var(--tx); font-size: 18px; font-variant-numeric: tabular-nums; }
  .pu-panel__btn { width: 100%; justify-content: center; }
  /* la calculadora en el panel: sus controles en una columna */
  .pu-panel__calc .calc__controles { display: grid; gap: 14px; }
  .pu-panel .calc__chips { display: flex; flex-wrap: wrap; gap: 6px; }
  .pu-barra, .pu-pie, .pu-hoja { display: none !important; }
}

/* Por debajo de 1024 px: la barra de etapas (arriba) y la de precio y Reservar (abajo) */
@media (max-width: 1023px) {
  .pu-barra {
    position: fixed; top: calc(11px + env(safe-area-inset-top)); left: 12px; right: 12px; z-index: var(--z-encabezado, 90);
    display: flex; align-items: center; gap: 6px; height: 50px; padding: 0 6px;
    border: 1px solid var(--rl); border-radius: 24px; background: color-mix(in oklab, var(--g) 84%, transparent);
    -webkit-backdrop-filter: blur(16px) saturate(1.15); backdrop-filter: blur(16px) saturate(1.15);
    opacity: 0; transform: translateY(-140%); pointer-events: none; transition: transform .25s var(--ez, ease), opacity .2s;
  }
  body.pu-etapas .pu-barra { opacity: 1; transform: none; pointer-events: auto; }
  /* no se apilan: la barra de etapas ocupa el lugar del header */
  body.pu-etapas :is(.islas, .hdr) { opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .2s, visibility 0s .2s; }
}
@media (max-width: 1023px) {
  .pu-barra__menu { flex: none; display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--rl); border-radius: 50%; background: var(--pilar-s); color: var(--tx); }
  .pu-barra__lista { flex: 1 1 auto; min-width: 0; display: flex; gap: 2px; margin: 0; padding: 0; list-style: none; overflow-x: auto; scrollbar-width: none; scroll-snap-type: x proximity; }
  .pu-barra__lista::-webkit-scrollbar { display: none; }
  .pu-barra__a { display: block; padding: 8px 12px; border-radius: 16px; color: var(--mu); font-size: 14px; font-weight: 700; white-space: nowrap; text-decoration: none; scroll-snap-align: start; }
  .pu-barra__a[aria-current] { background: var(--tx); color: var(--g); }
  .pu-pie {
    position: fixed; left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); z-index: var(--z-pegajoso, 40);
    display: flex; align-items: center; gap: 10px; padding: 10px 10px 10px 16px;
    border: 1px solid var(--rl); border-radius: 24px; background: var(--pilar-s); box-shadow: 0 14px 34px rgb(7 9 15 / .28);
  }
  .pu-pie__precio { flex: 1 1 auto; min-width: 0; margin-right: auto; padding: 0; border: 0; background: none; color: var(--tx); text-align: left; cursor: pointer; }
  .pu-pie__precio small { display: block; color: var(--mu); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .pu-pie__precio b { display: block; font-size: 20px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
  .pu-pie__reservar { flex: none; }
  /* la hoja de la calculadora: la misma del modal, pegada abajo y sin desplazamiento interno */
  .pu-hoja { position: fixed; inset: 0; z-index: var(--z-modal, 100); }
  .pu-hoja__fondo { position: absolute; inset: 0; background: rgb(5 7 12 / .55); }
  .pu-hoja__caja { position: absolute; left: 0; right: 0; bottom: 0; display: grid; gap: 14px; padding: 46px var(--gut) calc(16px + env(safe-area-inset-bottom)); border-radius: 22px 22px 0 0; background: var(--pilar-s); box-shadow: 0 -18px 40px rgb(0 0 0 / .35); }
  .pu-hoja__cerrar { position: absolute; top: 10px; right: 12px; display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--rl); border-radius: 50%; background: none; color: var(--tx); }
  .pu-hoja__calc .calc__controles { display: grid; gap: 12px; }
  .pu-hoja__pie { display: flex; align-items: center; gap: 12px; padding-top: 12px; border-top: 1px solid var(--rl); }
  .pu-hoja__pie p { margin: 0 auto 0 0; font-size: 14px; color: var(--mu); }
  .pu-hoja__pie b { display: block; color: var(--tx); font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; }
  body.pu-hoja-abierta { overflow: hidden; }
}

/* La cuenta de S6 en la pilar ordenada: el desglose completo, quieto en su sitio (no la barra pegajosa de B-PL1: ese papel
   lo hace la barra de abajo). Su «Reservar» no se ve en ningun ancho: el boton de color es el del panel o el de la barra,
   que lo pulsan a el (sigue en el DOM porque es el que lleva lo elegido). */
.c100-pilar--universal .cuenta [data-calc-btn] { display: none; }
@media (max-width: 1023px) {
  .c100-pilar--universal .cuenta { position: static; display: block; padding: 0; box-shadow: none; border: 2px solid var(--tx); border-radius: 18px; }
  .c100-pilar--universal :is(.cuenta__cab, .cuenta__otra) { display: block; }
  .c100-pilar--universal .cuenta__filas { display: flex; }
  .c100-pilar--universal .cuenta__total { margin: 0 22px; padding: 16px 0; border-top: 1px solid var(--tx); flex-direction: row; align-items: baseline; justify-content: space-between; }
  .c100-pilar--universal .cuenta__total b { font: inherit; font-weight: 800; letter-spacing: normal; text-transform: none; color: var(--tx); }
  .c100-pilar--universal .cuenta__cifra { font-size: 28px; }
  .c100-pilar--universal .cuenta__pie { max-width: none; padding: 0 22px 20px; justify-self: auto; }
}
/* ORDEN-CAZA-XCARET-1 §1.2: en la pilar ordenada solo hay dos cosas fijas en telefono (barra de arriba y de abajo) y
   dos en escritorio (indice y panel), mas el boton del chat. Nada mas se pega: ni los conmutadores de precios y combos
   (tapaban los precios), ni el dibujo del mapa, ni el header de escritorio. */
.c100-pilar--universal .precios__controles,
.c100-pilar--universal .pilar .mapa__dibujo { position: static; }
@media (min-width: 1024px) {
  /* RESPUESTAS 21-oct 15:43 (Marco): en escritorio el menú va SIEMPRE fijo y visible, también en la pilar ordenada (antes aquí
     .hdr iba position: relative y --pilar-top 0, por ORDEN-CAZA-XCARET-1 §1.2). El índice y el panel quedan DEBAJO del menú:
     su top es --pilar-top (el alto del menú que mide theme.js) + 20. */
  /* el panel termina antes del chat: el boton del chat no tapa el boton del panel */
  .c100-pilar--universal .pu-panel { max-height: calc(100vh - var(--pilar-top) - 128px); }
}
/* §1.3.4: las tres primeras etapas (Precios, Elige, Calcula) sin content-visibility. Con «auto» las secciones fuera de
   pantalla no se pintan, y al bajar rapido el telefono enseñaba la tarjeta vacia (el borde sin la tabla de precios).
   Las tres ultimas (Conoce, Planea, Dudas: mapa, galeria, preguntas, reseñas) lo conservan: sin el, el telefono
   maqueta la pagina entera al aplicar la hoja (un bloque de 0.8 a 1.4 s a 4x de CPU en Lighthouse). */
body.c100-pilar--universal :is([data-pu-etapa="precios"], [data-pu-etapa="elige"], [data-pu-etapa="calcula"]) .pilar__sec:not(.pheroe):not(.que-es) { content-visibility: visible; }   /* gana a la regla base (0,4,0) */
/* §1.3.3: el chat no tapa ningun boton en reposo. En el telefono, con el header (arriba del todo) se oculta —el hero
   trae su WhatsApp—; aparece con la barra de etapas, y mas chico (48 px, sigue pasando los 44 del toque). */
@media (max-width: 1023px) {
  body.c100-pilar--universal:not(.pu-etapas) .c100-chat { opacity: 0; visibility: hidden; }
  body.c100-pilar--universal .c100-chat-flotante { border-radius: 16px; }   /* el alto, el de todos (BOTONES 3D) */
  body.c100-pilar--universal .c100-chat-flotante > svg { width: 22px; height: 22px; }
}

/* ORDEN-CAZA-XCARET-1 §1.4: una sola forma por tipo y ningun toque de menos de 44 px en la pilar ordenada.
   Conmutador: un solo alto (44), tambien el de combos (tenia 34). Chip: 44. Botones de icono de las barras: 44. */
.c100-pilar--universal .conmutador__b,
.c100-pilar--universal .combos .conmutador__b { min-height: 44px; }
.c100-pilar--universal .chip { min-height: 44px; }
.c100-pilar--universal :is(.pu-barra__menu, .pu-hoja__cerrar) { width: 44px; height: 44px; }
@media (max-width: 1023px) {
  .c100-pilar--universal .pu-barra { height: 58px; padding: 0 6px; border-radius: 29px; }
  .c100-pilar--universal .pu-barra__a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border-radius: 22px; }
}
@media (min-width: 1024px) { .c100-pilar--universal .pu-indice__a { min-height: 44px; align-items: center; } }
/* Plegable: las preguntas son .pplegable seguidas, con la forma de los demas plegables (raya arriba y abajo, + a la
   derecha). Se les quita la tarjeta de la FAQ de la home (style.css 13.12 .faq details), que tambien caia aqui. */
.c100-pilar--universal .faq { gap: 0; border-top: 0; }
.c100-pilar--universal .faq > details.pplegable { margin-top: 0; border: 0; border-block: 1px solid var(--rl); border-radius: 0; background: none; }
.c100-pilar--universal .faq > details.pplegable + details.pplegable { margin-top: -1px; }
.c100-pilar--universal .faq > details.pplegable > summary { display: block; padding: 14px 36px 14px 0; font-size: 16px; font-weight: 800; line-height: 1.35; }
.c100-pilar--universal .faq > details.pplegable > p { margin: 0; padding: 0 0 16px; font-size: 15px; line-height: 1.6; color: var(--mu); }
/* Boton chico (Reservar de las tarjetas): 44 de alto, el minimo del toque */
.c100-pilar--universal .btn.btn--sm, .c100-pilar--universal .pilar .btn.pilar__btn--sm { min-height: var(--c100-btn-alto-chico); }
/* Toque de 44 en lo que es de la pilar. Las migas son enlaces en linea: el relleno vertical crece su caja de toque sin
   mover el renglon (en un elemento en linea no cuenta para el alto de la linea). */
.c100-pilar--universal :is(.mhero__migas, .pheroe__migas) a { padding: 15px 9px; margin: 0 -9px; }   /* «Home» mide 26: con 9 por lado llega a 44; tambien en la cabecera de antes (pilar sin foto: Holbox) */
.c100-pilar--universal :is(.mhero__migas, .pheroe__migas) p { line-height: 46px; }   /* B-PQ2: si las migas se parten en dos renglones (paquetes, 390), las zonas de 44 (14 + 30) caben en el renglon de 46 y no se pisan */
.c100-pilar--universal .mhero .rating { min-height: 44px; }
.c100-pilar--universal :is(.extras__accion, .mapa__consultar) { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; padding-top: 0; }
@media (min-width: 1024px) { .c100-pilar--universal .pu-indice__pilares a { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; } .c100-pilar--universal .pu-indice__pilares { gap: 0; } }
/* Tarjeta: la de delfines tenia su propio relleno (18 frente a 20) */
.c100-pilar--universal .tarjeta.delfin { padding: 20px; }
@media (max-width: 700px) { .c100-pilar--universal .tarjeta.delfin { padding: 16px 18px; } }
/* B-PIL7: la tarjeta de los tres lugares (Tulum) con el mismo relleno que las demas; el texto, alineado con la foto */
.c100-pilar--universal .tarjeta.plugares__item { padding: 20px; }
@media (max-width: 700px) { .c100-pilar--universal .tarjeta.plugares__item { padding: 16px 18px; } }
.c100-pilar--universal .plugares__item h3, .c100-pilar--universal .plugares__item p { margin-left: 0; margin-right: 0; }
/* Boton principal: el del cotizador privado (plugin b2b) toma la forma del principal de la pagina (alto, radio, letra) */
.c100-pilar--universal .c100-cp__btn { min-height: var(--c100-btn-alto); padding: 0 var(--c100-btn-pl); border-radius: 14px; font-size: var(--c100-btn-fuente); }
/* Tabla: precios y comparar llevan la base .pilar__tabla; lo propio de cada una se queda (la de precios se vuelve
   tarjetas en el telefono, la de comparar centra sus marcas) */
.c100-pilar--universal .comparar.pilar__tabla td { vertical-align: middle; }

/* B-PIL7: las pilares de destino en el esqueleto. Un chip: el del elegidor con la letra del sistema (13). Nada pegado
   fuera de la lista: el dibujo del mapa de arriba tampoco. */
.c100-pilar--universal .bq-eleg__op { font-size: 13px; min-width: 44px; justify-content: center; }
.c100-pilar--universal .bq-mapa--arriba .bq-mapa__dibujo { position: static; }

/* Sellos de confianza (parts/sellos.php): los de Cozumel, un solo componente */
.sellos { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); margin: 0; padding: 18px; border: 1px solid var(--rl); border-radius: 18px; background: var(--pilar-s); }
.sellos__item { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 10px; align-items: start; }
.sellos__item p { margin: 0; }
.sellos__item b { display: block; font-size: 15px; font-weight: 800; }
.sellos__item span { display: block; margin-top: 2px; font-size: 13px; line-height: 1.45; color: var(--mu); }
.sellos__ico { display: block; }
.sellos__pie { margin: 12px 0 0; font-size: 13px; color: var(--mu); }
.sellos--corto { list-style: none; padding: 12px; gap: 8px; grid-template-columns: 1fr; }
.sellos--corto li { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; }
.sellos--corto .sellos__ico { width: 18px; height: 18px; }

/* Otros destinos: tarjetas a las otras pilares, clic en toda la tarjeta (style.css 13.20) */
.pu-otros h2 { margin-bottom: 18px; }
.pu-otros__lista { list-style: none; margin: 0; padding: 0; }
@media (min-width: 701px) { .pu-otros__lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 14px; } }
.pu-otro { display: flex; flex-direction: column; overflow: hidden; padding: 0; border: 1px solid var(--rl); border-radius: 16px; background: var(--pilar-s); }
.pu-otro__img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; }
.pu-otro h3 { margin: 0; padding: 14px 16px 4px; font-size: 16px; }
.pu-otro h3 a { color: var(--tx); text-decoration: none; }
.pu-otro__desde { margin: 0; padding: 0 16px 14px; font-size: 13px; color: var(--mu); }

/* Un componente por tipo (§4): en la pilar ordenada las variantes que quedaban se ven iguales */
@media (min-width: 701px) { .c100-pilar--universal .galeria.pcar { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin: 20px 0 0; padding: 0; list-style: none; } }
.c100-pilar--universal :is(.pplegable, .faq__item) > summary::after { font-size: 22px; font-weight: 400; color: var(--ai); }
.c100-pilar--universal .faq__item summary { font-size: 16px; font-weight: 800; }
.c100-pilar--universal :is(.precios__tabla, .comparar, .pilar__tabla) :is(th, td) { padding: 12px 14px; border-bottom: 1px solid var(--rl); }
.c100-pilar--universal :is(.precios__tabla, .comparar, .pilar__tabla) thead th { font-family: var(--mo-f); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--mu); font-weight: 700; }

/* B-PQ2: las cuatro de paquetes en el esqueleto. En escritorio dos columnas (el indice con las otras paginas de
   paquetes y los combos a la izquierda, todo el contenido de corrido a la derecha; nada fijo a la derecha). Abajo, en
   telefono: «desde, por pareja», WhatsApp y «Ver paquetes», que bajan a la etapa Paquetes (sin hoja de calculadora). */
.pu-pie__precio:is(a) { text-decoration: none; }
.pu-pie__wa { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--rl); border-radius: 50%; color: var(--tx); text-decoration: none; }
@media (min-width: 1024px) {
  .pu.pu--dos { --pu-modal-h: 0px; }   /* sin panel: el índice arriba de la barra */
}
/* La tarjeta de paquete con su dia a dia (bq-paquete): las piezas de siempre (tarjeta, chip, boton). Telefono: carrusel
   (pcar) con contador; desde 701 px, rejilla de dos y desde 1240 px (con la barra de la derecha), de tres. Arriba, el conmutador «Pareja / 1 persona»
   y los filtros como chips. La ancha (el destacado) solo en escritorio. */
.bq-paquetes__modo { display: flex; margin-top: 18px; }
.bq-paquetes__modo .conmutador__b { flex: 1 1 0; }
.bq-paquetes__filtros { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.bq-paquetes__lista { margin-top: 16px; }
.bq-paquetes__vacio { margin-top: 14px; color: var(--mu); }
.bq-paquete { display: flex; flex-direction: column; gap: 14px; }
.bq-paquete[hidden] { display: none; }
.bq-paquete__foto { position: relative; overflow: hidden; border-radius: 12px; background: var(--el, var(--rl)); aspect-ratio: 4 / 3; }
.bq-paquete__img { display: block; width: 100%; height: 100%; object-fit: cover; }
.bq-paquete__c { display: flex; flex-direction: column; gap: 12px; flex: 1 1 auto; }
.bq-paquete__n { margin: 0; font-size: 18px; line-height: 1.25; }
.bq-paquete__n a { color: inherit; text-decoration: none; }
.bq-paquete__chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.bq-paquete__chips .chip { cursor: default; }
.bq-paquete__chips .chip--ti { border-color: var(--ai); }
.bq-paquete__dias { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; font-size: 14px; }
.bq-paquete__dias li { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 8px; align-items: baseline; }
.bq-paquete__dias .mo, .bq-paquete__tours .mo { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ai); }
.bq-paquete__tours { margin: 0; font-size: 14px; }
.bq-paquete__pre { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--rl); }
.bq-paquete__precio { display: grid; margin: 0; }
.bq-paquete__precio small { color: var(--mu); font-size: 12px; }
.bq-paquete__precio b { font-size: 22px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.bq-paquete__rot { position: absolute; left: 12px; bottom: 12px; padding: 6px 10px; border-radius: 8px; background: rgb(5 7 12 / .72); color: #fff; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
.paq-destacado { display: none; }
@media (min-width: 701px) {
  .pilar .bq-paquetes__lista.pcar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; overflow: visible; padding: 0; }
}
@media (min-width: 1240px) {
  .pilar .bq-paquetes__lista.pcar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .paq-destacado { display: block; }
  .bq-paquete--ancha { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 24px; }
  .bq-paquete--ancha .bq-paquete__foto { aspect-ratio: auto; min-height: 100%; }
  .bq-paquete--ancha .bq-paquete__dias { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 18px; }
}
/* La lista de resultados de la calculadora de presupuesto (Calcula, paquetes): cada paquete es un enlace de 44 */
.c100-pilar--universal .paq-calc__lista a { display: inline-flex; align-items: center; min-height: 44px; }
/* la barra de abajo sin paquetes que mostrar: el nombre de la pagina en dos renglones como mucho, no en cifra de 20 */
.pu-pie--ir p.pu-pie__precio { margin: 0; }
.pu-pie--ir p.pu-pie__precio b { font-size: 15px; line-height: 1.25; letter-spacing: -.01em; }
/* Un heroe con mega hero nunca lleva relleno arriba: el hueco del header ya lo reserva <main> y el mega hero lo cancela
   con su margen negativo. La regla de telefono de .pilar__sec (28 px) le ganaba a .pheroe por venir despues, y la foto
   de Xcaret y de paquetes empezaba en y=28 con una franja del fondo encima (lo midio C en el telefono de Marco). */
.pilar__sec.pheroe--mega { padding-top: 0; }
/* El chat dentro de la barra de abajo (Marco, 5-oct): donde la barra trae su icono (las pilares), el boton flotante se
   esconde en telefono y tableta; asi nunca queda encima de un «Reservar» al bajar. Las de paquetes, cuya barra trae
   WhatsApp, conservan el flotante. */
@media (max-width: 1023px) {
  body:has(.pu-pie [data-pu-chat]) .c100-chat { display: none; }
}

@media (min-width: 1240px) { .pu { --pu-lado: 320px; gap: 48px; } }
