/* =========================================================================
   [MONUMENT] Tickets — Design system
   Poppins (titulares) + Montserrat (texto). Paleta monocromática.
   ========================================================================= */

/* ---------- Fuentes (Google Fonts autohospedadas: mejor LCP y sin request
   a un tercero. Alternativa: el <link> a fonts.googleapis.com del <head>) ---- */
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/montserrat-latin-400-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/montserrat-latin-500-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/poppins-latin-500-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/poppins-latin-600-normal.woff2") format("woff2");
}

:root {
  /* Color */
  --bg: #ffffff;
  --bg-alt: #f6f6f4;
  --text: #161616;
  --text-soft: #676767;
  --border: #ddddda;
  --border-strong: #c9c9c4;
  --cta: #171717;
  --cta-hover: #303030;
  --cta-text: #ffffff;
  --monument: #4a4437; /* único color secundario, oscuro y desaturado */
  --focus: #161616;

  /* Tipografía */
  --font-head: "Poppins", "Helvetica Neue", Arial, sans-serif;
  --font-body: "Montserrat", "Helvetica Neue", Arial, sans-serif;

  /* Spacing scale */
  --s-1: 4px;
  --s-2: 8px;
  --s-3: 12px;
  --s-4: 16px;
  --s-5: 24px;
  --s-6: 32px;
  --s-7: 48px;
  --s-8: 64px;
  --s-9: 96px;

  /* Layout */
  --container: 1240px;
  --gutter: 24px;
  --radius: 8px;
  --radius-sm: 4px;
  --header-h: 72px;
}

/* ---------- Reset ---------- */
*,
*::before,
*::after { box-sizing: border-box; }

.breadcrumb{
    display: none;
}

.topbar{
    text-align: center;
}

.footer__disclaimer{
    max-width: 100% !important;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 16px);
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; display: block; height: auto; }
button { font: inherit; color: inherit; }
a { color: var(--text); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }

:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { transition: none !important; animation: none !important; }
}

/* ---------- Tipografía ---------- */
h1, h2, h3, h4 {
  font-family: var(--font-head);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin: 0 0 var(--s-4);
  color: var(--text);
}

h1 { font-size: clamp(28px, 4.4vw, 46px); }
h2 { font-size: clamp(23px, 2.6vw, 32px); }
h3 { font-size: clamp(18px, 1.5vw, 21px); font-weight: 600; }
h4 { font-size: 16px; font-weight: 600; }

p { margin: 0 0 var(--s-4); }
p:last-child { margin-bottom: 0; }

.eyebrow {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-soft);
  margin: 0 0 var(--s-3);
}

.lead {
  font-size: 17px;
  color: var(--text-soft);
  max-width: 62ch;
}

.text-soft { color: var(--text-soft); }
.small { font-size: 14px; }
.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

/* ---------- Layout ---------- */
.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.section { padding-block: var(--s-8); }
.section--tight { padding-block: var(--s-7); }
.section--alt { background: var(--bg-alt); border-block: 1px solid var(--border); }
.section__head { max-width: 66ch; margin-bottom: var(--s-6); }
.section__head--center { margin-inline: auto; text-align: center; }
.section__head h2 { margin-bottom: var(--s-2); }

.divider { height: 1px; background: var(--border); border: 0; margin: 0; }

/* ---------- Botones ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  min-height: 48px;
  padding: 12px 22px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 15px;
  line-height: 1.2;
  text-align: center;
  cursor: pointer;
  transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}
.btn:hover { text-decoration: none; }

.btn--primary { background: var(--cta); color: var(--cta-text); border-color: var(--cta); }
.btn--primary:hover { background: var(--cta-hover); border-color: var(--cta-hover); }

.btn--outline { background: transparent; color: var(--text); border-color: var(--border-strong); }
.btn--outline:hover { border-color: var(--text); background: var(--bg-alt); }

.btn--block { width: 100%; }
.btn--sm { min-height: 42px; padding: 9px 16px; font-size: 14px; }

.btn__icon { width: 16px; height: 16px; flex: none; }

.link-secondary {
  display: inline-block;
  font-size: 14px;
  color: var(--text-soft);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: var(--border-strong);
  background: none;
  border: 0;
  padding: 6px 0;
  cursor: pointer;
}
.link-secondary:hover { color: var(--text); text-decoration-color: var(--text); }

.link-quiet { color: var(--text-soft); font-size: 14px; }

/* ---------- Badge ----------
   El fondo se define por producto (campo «Color del badge»); si está vacío usa
   el color secundario del monumento. El texto lo calcula PHP según contraste. */
.badge {
  display: inline-block;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 5px 9px;
  border-radius: 2px;
  background: var(--badge-bg, var(--monument));
  color: var(--badge-fg, #fff);
}

/* =========================================================================
   AVISO SOBRE LA CABECERA
   Banda blanca en flujo normal: se va con el scroll, no es sticky.
   ========================================================================= */
.topbar {
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}
.topbar p {
  margin: 0;
  padding: 7px 0;
  font-size: 12.5px;
  line-height: 1.45;
  /* Gris de contraste medio-bajo, pero todavía AA sobre blanco (4.5:1) */
  color: #767676;
}

@media (max-width: 767px) {
  .topbar p { font-size: 11.5px; padding: 6px 0; }
  body .products__grid .product-card .product-card__media { aspect-ratio: 2/1; min-height: 0; }
  body .products__grid .product-card--featured .product-card__media { aspect-ratio: 16/9; }
  body .products__grid .product-card .product-card__body { padding: 16px; }
  body .products__grid .product-card .product-card__title { font-size: 18px; margin-bottom: 6px; }
  body .products__grid .product-card .product-card__desc {
    font-size: 14px; line-height: 1.45; margin-bottom: 10px;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  }
  body .products__grid .product-card .feature-list { font-size: 13px; gap: 3px; margin-bottom: 10px; }
  body .products__grid .product-card .feature-list li { line-height: 1.4; }
  body .products__grid .product-card .product-card__meta { padding-top: 8px; margin-bottom: 12px; font-size: 12px; }
  body .products__grid .product-card .product-card__footer { grid-template-columns: 1fr; justify-content: stretch; gap: 10px; }
  body .products__grid .product-card .product-card__footer .btn { padding: 12px 18px; width: 100%; white-space: nowrap; }
  body .products__grid .product-card .product-card__footer .link-secondary { grid-column: 1/-1; justify-self: center; padding: 2px 0; }
}

/* =========================================================================
   HEADER
   ========================================================================= */
.header {
  position: sticky;
  top: 0;
  z-index: 60;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}

.header__inner {
  display: flex;
  align-items: center;
  gap: var(--s-5);
  min-height: var(--header-h);
}

.brand { display: inline-flex; align-items: center; margin-right: auto; }
.brand:hover { text-decoration: none; }
.brand img { height: var(--logo-height, 38px); width: auto; max-width: 320px; }
@media (max-width: 559px) { 
  .brand img { height: calc(var(--logo-height, 26px) * .82); max-width: 60vw; } 
  .single-experiencia .header {
    z-index: 101;
  }
}

.nav { display: flex; align-items: center; gap: var(--s-5); }

.nav__list {
  display: flex;
  align-items: center;
  gap: var(--s-5);
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav__link {
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  padding: 8px 0;
  border-bottom: 1px solid transparent;
}
.nav__link:hover { text-decoration: none; border-bottom-color: var(--text); }

/* WPML — espacio reservado para el selector real (wpml-ls) */
.wpml-slot {
  display: flex;
  align-items: center;
  padding-left: var(--s-5);
  border-left: 1px solid var(--border);
}
.wpml-ls-legacy-list-horizontal { padding: 0; }
.wpml-ls-legacy-list-horizontal ul { display: flex; gap: var(--s-3); list-style: none; margin: 0; padding: 0; }
.wpml-ls-legacy-list-horizontal a { font-size: 13px; font-weight: 500; color: var(--text-soft); letter-spacing: 0.06em; }
.wpml-ls-legacy-list-horizontal a:hover { color: var(--text); }
.wpml-ls-current-language > a { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }

.nav__toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: transparent;
  cursor: pointer;
}

@media (max-width: 1023px) {
  :root { --header-h: 62px; }
  .nav__toggle { display: inline-flex; }
  .nav {
    position: fixed;
    inset: var(--header-h) 0 auto 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--bg);
    border-bottom: 1px solid var(--border);
    padding: var(--s-4) var(--gutter) var(--s-5);
    transform: translateY(-8px);
    opacity: 0;
    visibility: hidden;
    transition: opacity .16s ease, transform .16s ease, visibility .16s;
    box-shadow: 0 8px 16px -12px rgba(0,0,0,.18);
  }
  .nav.is-open { transform: none; opacity: 1; visibility: visible; position: absolute;
		inset: 100% 0 auto 0;}
  .nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  .nav__link { display: block; padding: 14px 0; border-bottom: 1px solid var(--border); }
  .nav__link:hover { border-bottom-color: var(--border); }
  .nav .btn { margin-top: var(--s-4); }
  .wpml-slot { border-left: 0; padding-left: 0; margin-top: var(--s-4); }
}

/* =========================================================================
   HERO
   ========================================================================= */
.hero {
  position: relative;
  min-height: 50vh;
  display: flex;
  align-items: flex-end;
  background: #22211e;
  overflow: hidden;
}
.hero__media { position: absolute; inset: 0; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; }
.hero::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(12,12,11,.82) 0%, rgba(12,12,11,.5) 45%, rgba(12,12,11,.22) 100%);
}
.hero__inner { position: relative; z-index: 2; padding-block: var(--s-8); }
.hero__content { max-width: 42rem; color: #fff; }
.hero h1 { color: #fff; margin-bottom: var(--s-4); }
.hero__sub { color: rgba(255,255,255,.86); font-size: 17px; max-width: 40rem; margin-bottom: var(--s-6); }
.hero__eyebrow { color: rgba(255,255,255,.72); }
.hero__actions { display: flex; align-items: center; gap: var(--s-5); flex-wrap: wrap; }
.hero .btn--primary { background: #fff; color: var(--text); border-color: #fff; }
.hero .btn--primary:hover { background: #ececea; border-color: #ececea; }
.hero__link { color: rgba(255,255,255,.82); font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
.hero__link:hover { color: #fff; }

@media (max-width: 559px) {
  :root { --gutter: 20px; }
}

@media (max-width: 767px) {
  .hero { min-height: 0; }
  .hero__inner { padding-block: var(--s-7) var(--s-6); }
  .hero__sub { font-size: 15px; margin-bottom: var(--s-5); }
  .hero__actions { gap: var(--s-4); }
  .hero .btn { width: 100%; }
}

/* =========================================================================
   TRUST BENEFITS
   ========================================================================= */
.trust { border-bottom: 1px solid var(--border); background: var(--bg-alt); }
.trust__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-5);
  padding-block: var(--s-5);
}
.trust__item { display: flex; gap: var(--s-3); align-items: flex-start; }
.trust__item svg { width: 20px; height: 20px; flex: none; margin-top: 3px; color: var(--monument); }
.trust__item h3 { font-size: 15px; margin: 0 0 2px; }
.trust__item p { font-size: 13.5px; color: var(--text-soft); margin: 0; line-height: 1.5; }
.trust__item--clone { display: none; }

/* Móvil/tablet: una sola fila que se desplaza en bucle continuo */
@media (max-width: 767px) {
  .trust { overflow: hidden; }
  /* El contenedor es el que hace scroll: main.js lo avanza solo y el
     usuario puede arrastrarlo con el dedo */
  .trust .container {
    padding-inline: 0;
    max-width: none;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  }
  .trust .container::-webkit-scrollbar { display: none; }
  .trust__grid {
    display: flex;
    width: max-content;
    gap: 0;
    padding-block: var(--s-3);
  }
  .trust__item,
  .trust__item--clone { display: flex; }
  /* margen en vez de gap para que el bucle cuadre exacto y no haya salto */
  /* Cada item mide lo que su texto: título y descripción en una sola línea */
  .trust__item { flex: none; margin-right: var(--s-6); align-items: center; }
  .trust__item svg { margin-top: 0; }
  .trust__item h3 { font-size: 14.5px; white-space: nowrap; }
  .trust__item p { font-size: 13px; white-space: nowrap; }
}

/* =========================================================================
   PRODUCTOS
   ========================================================================= */
/* Producto destacado a ancho completo en la primera línea; los otros dos debajo */
.products__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--s-4);
  align-items: stretch;
  align-content: start;
}

.product-card.product-card--featured {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.product-card.product-card--featured .product-card__media { aspect-ratio: auto; min-height: 300px; }
.product-card.product-card--featured .product-card__body { padding: var(--s-6); }
.product-card.product-card--featured .product-card__title { font-size: clamp(21px, 2vw, 26px); }
.product-card.product-card--featured .product-card__desc { font-size: 15.5px; max-width: 52ch; }
.product-card.product-card--featured .product-card__footer { grid-template-columns: auto auto; justify-content: start; align-items: center; gap: var(--s-5); }
.product-card.product-card--featured .product-card__footer .btn { width: auto; padding-inline: 30px; }
.product-card.product-card--featured .product-card__footer .link-secondary { justify-self: start; grid-column: 1 / -1; }

.product-card {
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  transition: border-color .16s ease;
}
.product-card:hover { border-color: var(--border-strong); }
.product-card:focus-within { border-color: var(--text); }

.product-card__media { position: relative; aspect-ratio: 16 / 10; background: var(--bg-alt); }
.products__grid .product-card:not(.product-card--featured) .product-card__media { aspect-ratio: 2 / 1; }
.product-card__media img { width: 100%; height: 100%; object-fit: cover; }
.product-card__media .badge { position: absolute; top: var(--s-3); left: var(--s-3); }

.product-card__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: var(--s-4) var(--s-5) var(--s-5);
}

.product-card__title { font-size: clamp(17px, 1.4vw, 19px); margin-bottom: var(--s-2); }
.product-card__desc { font-size: 14px; color: var(--text-soft); margin-bottom: var(--s-3); }

.feature-list { list-style: none; margin: 0 0 var(--s-3); padding: 0; display: grid; gap: 5px; }
.feature-list li { display: flex; gap: var(--s-2); font-size: 14px; align-items: flex-start; }
.feature-list svg { width: 15px; height: 15px; flex: none; margin-top: 4px; color: var(--monument); }

.product-card__meta {
  display: flex; align-items: center; gap: var(--s-2);
  font-size: 13px; color: var(--text-soft);
  padding-top: var(--s-3);
  border-top: 1px solid var(--border);
  margin-bottom: var(--s-3);
}
.product-card__meta svg { width: 15px; height: 15px; flex: none; }

.product-card__footer { margin-top: auto; display: grid; gap: var(--s-3); justify-items: start; }
.price { font-family: var(--font-head); font-weight: 500; font-size: 15px; color: var(--text-soft); margin: 0; }
.price strong { font-weight: 600; font-size: 22px; color: var(--text); }
/* Precio sin oferta: sólo aparece si el producto lo tiene relleno */
.price__old {
  display: inline-block;
  margin-left: 6px;
  font-size: 15px;
  font-weight: 500;
  color: var(--text-soft);
  text-decoration: line-through;
  text-decoration-thickness: 1px;
}
.sticky-cta .price__old { font-size: 13px; }
.cta-list__price .price__old { display: block; margin: 2px 0 0; font-size: 12.5px; color: rgba(255,255,255,.55); }
.product-card__footer .btn { width: 100%; }
.product-card__footer .link-secondary { justify-self: center; }

/* ---- RegiondoEmbed ---- */
.regiondo {
  position: relative;
  background: var(--bg);
  border: 0px solid var(--border);
  border-radius: var(--radius-sm);
  min-height: 640px;
  overflow: hidden;
}
.regiondo iframe {
  display: block;
  width: 100%;
  height: 640px;
  border: 0;
}
.regiondo--tall { min-height: 720px; }
.regiondo--tall iframe { height: 720px; }

/* Widget moderno de Regiondo (<booking-widget>): altura automática. */
.regiondo--component { min-height: 0; overflow: visible; }
.regiondo booking-widget {
  display: block;
  width: 100%;
}

.regiondo__loading {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-3);
  background: var(--bg);
  font-size: 14px;
  color: var(--text-soft);
}
.regiondo.is-loaded .regiondo__loading { display: none; }

.spinner {
  width: 20px; height: 20px;
  border: 2px solid var(--border-strong);
  border-top-color: var(--text);
  border-radius: 50%;
  animation: spin .7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* =========================================================================
   BLOQUE DE RESERVA (modal de la Home y sección #reservar del single)
   Desktop: información a la izquierda, widget a la derecha.
   Móvil: widget primero y la información debajo.
   ========================================================================= */
.booking-layout {
  display: grid;
  grid-template-columns: 1fr minmax(360px, 440px);
  grid-template-areas: "info widget";
  gap: var(--s-6) var(--s-5);
  align-items: start;
}
.booking-layout__widget { grid-area: widget; min-width: 0; }
.booking-layout__info { grid-area: info; min-width: 0; }
.booking-layout__head { grid-area: head; max-width: 62ch; }
.booking-layout__head h2 { margin-bottom: var(--s-2); }

/* Con cabecera (single): el widget arranca a la altura del título y el sticky
   abarca todo el bloque, cabecera incluida. */
.booking-layout--with-head {
  grid-template-areas: "head widget" "info widget";
  grid-template-rows: auto 1fr;
}

/* El calendario permanece a la vista mientras se lee la información */
@media (min-width: 1024px) {
  /* En el modal el contenedor de scroll es el propio cuerpo del diálogo: con
     top:0 el widget queda alineado con el inicio de la información. */
  .modal .booking-layout__widget { position: sticky; top: 0; }
  /* En el single el sticky se mide contra la ventana, descontando el header. */
  .booking-section .booking-layout__widget { position: sticky; top: calc(var(--header-h) + var(--s-4)); }
}

.booking-info { display: grid; gap: var(--s-5); }
.booking-info__intro { font-size: 15.5px; color: var(--text-soft); margin: 0; max-width: 60ch; }
.booking-info__media {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 21 / 9;
  background: var(--bg-alt);
}
.booking-info__media img { width: 100%; height: 100%; object-fit: cover; }
.booking-info__block h3 {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--text-soft);
  margin: 0 0 var(--s-3);
  padding-bottom: var(--s-2);
  border-bottom: 1px solid var(--border);
}

/* Ficha de datos con iconos */
.specs { margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4) var(--s-5); }
.specs__item { display: flex; gap: var(--s-3); align-items: flex-start; }
.specs__item svg { width: 17px; height: 17px; flex: none; margin-top: 3px; color: var(--monument); }
.specs dt { font-family: var(--font-body); font-weight: 500; font-size: 12.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--text-soft); }
.specs dd { margin: 0; font-size: 14px; line-height: 1.5; }

/* Bloque de audioguía */
.audioguide {
  border: 1px solid var(--border);
  border-left: 3px solid var(--monument);
  border-radius: var(--radius-sm);
  background: var(--bg);
  padding: var(--s-5);
}
.audioguide h3 {
  display: flex; align-items: center; gap: var(--s-2);
  font-family: var(--font-head); font-weight: 600; font-size: 16px;
  margin: 0 0 var(--s-4);
}
.audioguide h3 svg { width: 18px; height: 18px; flex: none; color: var(--monument); }
.audioguide .check-list li { font-size: 14px; }

@media (max-width: 1023px) {
  /* Móvil: primero título y subtítulo, después el widget y luego la información */
  .booking-layout {
    grid-template-columns: 1fr;
    grid-template-areas: "widget" "info";
    gap: var(--s-5);
  }
  .booking-layout--with-head { grid-template-areas: "head" "widget" "info"; grid-template-rows: auto; }
  .booking-layout__head { margin-bottom: var(--s-2); }
  .specs { grid-template-columns: 1fr; }
  .booking-info__media { aspect-ratio: 16 / 9; }
  
}

/* =========================================================================
   MODAL DE PRODUCTO
   ========================================================================= */
body.has-modal { overflow: hidden; }

.modal { position: fixed; inset: 0; z-index: 100; }
.modal__backdrop {
  position: absolute; inset: 0;
  background: rgba(12, 12, 11, .55);
  opacity: 0;
  transition: opacity .18s ease;
}
.modal.is-open .modal__backdrop { opacity: 1; }

.modal__dialog {
  position: relative;
  width: min(1180px, calc(100% - 2 * var(--gutter)));
  max-height: calc(100vh - 2 * var(--s-5));
  margin: var(--s-5) auto;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 24px 60px -30px rgba(0, 0, 0, .4);
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .18s ease, transform .18s ease;
}
.modal.is-open .modal__dialog { opacity: 1; transform: none; }

.modal__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--s-5);
  padding: var(--s-5) var(--s-6);
  border-bottom: 1px solid var(--border);
}
.modal__eyebrow {
  font-size: 11px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase;
  color: var(--text-soft); margin: 0 0 4px;
}
.modal__title { font-size: clamp(19px, 2vw, 24px); margin: 0; }
.modal__head-right { display: flex; align-items: center; gap: var(--s-5); flex: none; }

.modal__close {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: transparent;
  cursor: pointer;
}
.modal__close:hover { background: var(--bg-alt); border-color: var(--text); }
.modal__close svg { width: 18px; height: 18px; }

.modal__body {
  padding: var(--s-6);
  overflow-y: auto;
  overscroll-behavior: contain;
}
.modal__foot { margin: var(--s-6) 0 0; padding-top: var(--s-5); border-top: 1px solid var(--border); }

@media (max-width: 1023px) {
  .modal__dialog {
    width: 100%;
    max-height: 100vh;
    margin: 0;
    border: 0;
    border-radius: 0;
    height: 100%;
  }
  .modal__head { padding: var(--s-4) var(--gutter); position: sticky; top: 0; background: var(--bg); z-index: 2; }
  .modal__head-right .price { display: none; }
  .modal__body { padding: var(--s-5) var(--gutter) var(--s-7); }
  .regiondo { min-height: 620px; }
  .regiondo iframe { height: 620px; }
}

@media (max-width: 767px) {
  .products__grid { grid-template-columns: 1fr; }
  .product-card.product-card--featured { grid-template-columns: 1fr; }
  .product-card.product-card--featured .product-card__media { min-height: 0; aspect-ratio: 16 / 10; }
  .product-card.product-card--featured .product-card__footer { grid-template-columns: 1fr; justify-items: stretch; }
  .product-card.product-card--featured .product-card__footer .btn { width: 100%; }
  .product-card.product-card--featured .product-card__footer .link-secondary { justify-self: center; }
  /* El widget necesita todo el ancho disponible dentro del modal */
  .modal__body { padding-inline: var(--s-4); }
}

@media (max-width: 1023px) {
  .product-card.product-card--featured .product-card__media { min-height: 240px; }
  .product-card.product-card--featured .product-card__body { padding: var(--s-5); }
}

/* =========================================================================
   INFORMACIÓN PRÁCTICA — Horarios y Cómo llegar con el mismo peso visual
   ========================================================================= */
.practical { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4); }
.practical__card {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: var(--s-5);
}
.practical__card h3 { display: flex; align-items: center; gap: var(--s-2); font-size: 17px; margin-bottom: var(--s-4); }
.practical__card h3 svg { width: 18px; height: 18px; color: var(--monument); flex: none; }

.hours { margin: 0; display: grid; }
.hours__row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--s-4);
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.hours__row:first-child { border-top: 1px solid var(--border); }
.hours dt { font-size: 14px; color: var(--text-soft); flex: none; }
.hours dd { margin: 0; font-family: var(--font-head); font-weight: 500; font-size: 14.5px; text-align: right; }
.hours .hours__value--plain { font-family: var(--font-body); font-weight: 400; color: var(--text); max-width: 66%; }

.practical__notes { list-style: none; margin: var(--s-4) 0 0; padding: 0; display: grid; gap: 5px; }
.practical__notes li { font-size: 13px; color: var(--text-soft); padding-left: var(--s-4); position: relative; }
.practical__notes li::before { content: ""; position: absolute; left: 0; top: 9px; width: 5px; height: 1px; background: var(--border-strong); }

.practical__address { font-family: var(--font-head); font-weight: 500; font-size: 15px; margin-bottom: var(--s-3); }

/* Foto de situación en banda estrecha + acceso a Google Maps */
.location { position: relative; margin-top: var(--s-4); }
.location img {
  width: 100%;
  height: 96px;
  object-fit: cover;
  object-position: 50% 35%;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  filter: brightness(.86) saturate(.9);
}
.location .btn {
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  background: var(--bg);
  border-color: var(--bg);
}
.location .btn:hover { background: var(--bg-alt); border-color: var(--bg-alt); }

@media (max-width: 1023px) { .practical { grid-template-columns: 1fr; } }
@media (max-width: 559px) {
  .hours__row { flex-direction: column; gap: 2px; }
  .hours dd { text-align: left; }
  .hours .hours__value--plain { max-width: none; }
}

/* =========================================================================
   SOBRE EL MONUMENTO / SOBRE LA EXPERIENCIA
   El botón "Leer más" queda alineado con el pie de la imagen.
   ========================================================================= */
.about { display: grid; grid-template-columns: 1fr 1.15fr; gap: var(--s-7); align-items: stretch; }
.about--reverse { grid-template-columns: 1.15fr 1fr; }
.about--reverse .about__media { order: 2; }
.about--reverse .about__text { order: 1; }

.about__media { min-height: 300px; }
/* La imagen se recorta a la altura de la columna de texto —sin sobresalir del
   botón ni dejar huecos— y, si el texto se despliega, se limita y acompaña el
   scroll en lugar de estirarse. */
.about__media > img {
  position: sticky;
  top: calc(var(--header-h) + var(--s-5));
  width: 100%;
  height: 100%;
  max-height: 520px;
  object-fit: cover;
  border-radius: var(--radius);
  border: 1px solid var(--border);
}
.about__figure { margin: 0; }
.about__figure img { border-radius: var(--radius-sm); border: 1px solid var(--border); width: 100%; }

.about__text { display: flex; flex-direction: column; max-width: 68ch; }
.about__text p { font-size: 15.5px; }
.about__text--tight p { font-size: 15px; max-width: 62ch; margin-bottom: var(--s-3); }
.about__text .more__toggle { align-self: flex-start; }

/* El contenido ampliable de "Leer más" */
.more { display: none; }
.more[data-open="true"] { display: block; animation: moreIn .2s ease both; }
.more p:last-child { margin-bottom: 0; }
@keyframes moreIn {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: none; }
}
.more__toggle { margin-top: var(--s-5); }
.more[data-open="true"] + .more__toggle { margin-top: var(--s-6); }
.more__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.more__toggle svg { transition: transform .18s ease; }

@media (max-width: 1023px) {
  .about, .about--reverse { grid-template-columns: 1fr; gap: var(--s-6); }
  .about--reverse .about__media { order: 0; }
  .about--reverse .about__text { order: 0; }
  .about__media { min-height: 0; }
  .about__media > img { position: static; height: auto; max-height: none; aspect-ratio: 3 / 2; }
}
@media (max-width: 559px) { .about__media { flex-direction: column; } }

/* =========================================================================
   QUÉ NO PERDERTE — paneles expandibles (hover / focus / tap)
   ========================================================================= */
.showcase {
  display: grid;
  grid-template-columns: 1.7fr 1fr 1fr;
  gap: var(--s-3);
  border-radius: var(--radius);
  transition: grid-template-columns .35s cubic-bezier(.4, 0, .2, 1);
}

.showcase__panel {
  position: relative;
  display: block;
  min-width: 0;
  height: 460px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg-alt);
  overflow: hidden;
  cursor: auto;
  text-align: left;
  color: #fff;
}
.showcase__img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: grayscale(.25);
  transition: transform .5s cubic-bezier(.4, 0, .2, 1), filter .35s ease;
}
.showcase__panel::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(12,12,11,.88) 0%, rgba(12,12,11,.42) 48%, rgba(12,12,11,.12) 100%);
  transition: opacity .35s ease;
}
.showcase__panel.is-active .showcase__img { filter: grayscale(0); transform: scale(1.03); }

.showcase__content {
  position: absolute;
  inset: auto 0 0 0;
  z-index: 2;
  display: block;
  padding: var(--s-5);
}
.showcase__meta {
  display: block;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255,255,255,.72);
  margin-bottom: 6px;
}
.showcase__name {
  display: block;
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 20px;
  line-height: 1.25;
}
.showcase__text {
  display: block;
  font-size: 14px;
  line-height: 1.6;
  color: rgba(255,255,255,.88);
  max-width: 46ch;
  margin-top: var(--s-3);
  opacity: 0;
  max-height: 0;
  overflow: hidden;
  transition: opacity .3s ease, max-height .35s cubic-bezier(.4, 0, .2, 1), margin-top .35s ease;
}
.showcase__panel.is-active .showcase__text { opacity: 1; max-height: 12rem; }

@media (hover: none) {
  .showcase__panel { height: 380px; }
}

@media (max-width: 1023px) {
  .showcase { grid-template-columns: 1fr; gap: var(--s-4); }
  .showcase__panel { height: 300px; }
  .showcase__text { opacity: 1; max-height: 12rem; }
  .showcase__img { filter: grayscale(0); }
}

/* =========================================================================
   FAQ
   ========================================================================= */
.faq { max-width: 900px; margin-inline: auto; }
.faq__list { border-top: 1px solid var(--border); }
.faq__item { border-bottom: 1px solid var(--border); }
.faq__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  width: 100%;
  min-height: 56px;
  padding: var(--s-4) 0;
  background: none;
  border: 0;
  text-align: left;
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 16px;
  cursor: pointer;
}
.faq__trigger:hover { color: var(--cta-hover); }
.faq__trigger svg { width: 18px; height: 18px; flex: none; color: var(--text-soft); transition: transform .18s ease; }
.faq__trigger[aria-expanded="true"] svg { transform: rotate(180deg); }
.faq__panel { display: none; padding: 0 0 var(--s-5); max-width: 72ch; }
.faq__panel[data-open="true"] { display: block; }
.faq__panel p { font-size: 14.5px; color: var(--text-soft); }

/* =========================================================================
   CTA FINAL — cierre con acceso directo a las tres experiencias
   ========================================================================= */
.final-cta { background: var(--text); color: #fff; }
.final-cta__inner {
  padding-block: var(--s-8);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-8);
  align-items: center;
}
.final-cta h2 { color: #fff; }
.final-cta p { color: rgba(255,255,255,.74); max-width: 46ch; margin-bottom: var(--s-5); }

.final-cta__points {
  list-style: none;
  margin: 0 0 var(--s-6);
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3) var(--s-5);
}
.final-cta__points li { display: flex; align-items: center; gap: var(--s-2); font-size: 13.5px; color: rgba(255,255,255,.8); }
.final-cta__points svg { width: 15px; height: 15px; flex: none; color: rgba(255,255,255,.55); }

.final-cta__link { color: #fff; border-color: rgba(255,255,255,.35); }
.final-cta__link:hover { background: rgba(255,255,255,.08); border-color: #fff; }

.cta-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); }
.cta-list__item {
  display: flex;
  align-items: center;
  gap: var(--s-5);
  width: 100%;
  min-height: 76px;
  padding: var(--s-4) var(--s-5);
  text-align: left;
  color: #fff;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: background-color .16s ease, border-color .16s ease;
}
.cta-list__item:hover { background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.4); }
.cta-list__text { display: grid; gap: 2px; margin-right: auto; min-width: 0; }
.cta-list__name { font-family: var(--font-head); font-weight: 500; font-size: 15.5px; line-height: 1.3; }
.cta-list__meta { font-size: 12.5px; color: rgba(255,255,255,.6); }
.cta-list__price { font-family: var(--font-head); font-weight: 500; font-size: 13px; color: rgba(255,255,255,.68); white-space: nowrap; }
.cta-list__price strong { display: block; font-size: 19px; font-weight: 600; color: #fff; }
.cta-list__icon { width: 18px; height: 18px; flex: none; color: rgba(255,255,255,.6); }
.cta-list__item:hover .cta-list__icon { color: #fff; }

@media (max-width: 1023px) {
  .final-cta__inner { grid-template-columns: 1fr; gap: var(--s-6); }
}
@media (max-width: 559px) {
  .cta-list__item { gap: var(--s-4); padding: var(--s-4); }
  .cta-list__icon { display: none; }
}

/* =========================================================================
   FOOTER
   ========================================================================= */
.footer { background: var(--bg-alt); border-top: 1px solid var(--border); padding-block: var(--s-7) var(--s-5); font-size: 14px; }
.footer__grid { display: grid; grid-template-columns: 1.5fr repeat(3, 1fr); gap: var(--s-6); }
.footer__brand .brand img { height: calc(var(--logo-height, 26px) * .92); }
.footer__brand .brand { margin: 0 0 var(--s-3); display: inline-block; }
.footer__brand p { font-size: 13px; color: var(--text-soft); max-width: 32ch; }
.footer h4 { font-family: var(--font-body); font-weight: 500; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-soft); margin-bottom: var(--s-3); }
.footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-2); }
.footer a { font-size: 14px; color: var(--text); }
.footer__bottom { margin-top: var(--s-7); padding-top: var(--s-5); border-top: 1px solid var(--border); display: grid; gap: var(--s-3); }
.footer__disclaimer { font-size: 12.5px; color: var(--text-soft); max-width: 90ch; line-height: 1.6; margin: 0; }
.footer__legal { font-size: 12.5px; color: var(--text-soft); margin: 0; }

@media (max-width: 1023px) { .footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 559px) { .footer__grid { grid-template-columns: 1fr; gap: var(--s-5); } }

/* =========================================================================
   GALERÍA DEL SINGLE
   ========================================================================= */
.gallery { display: grid; gap: var(--s-3); }
.gallery__main {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--bg-alt);
  aspect-ratio: 16 / 10;
}
.gallery__main img { width: 100%; height: 100%; object-fit: cover; }

.gallery__thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-3); }
.gallery__thumb {
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: var(--bg-alt);
  cursor: pointer;
  aspect-ratio: 16 / 10;
  transition: border-color .16s ease, opacity .16s ease;
  opacity: .75;
}
.gallery__thumb img { width: 100%; height: 100%; object-fit: cover; }
.gallery__thumb:hover { opacity: 1; border-color: var(--border-strong); }
.gallery__thumb.is-active { opacity: 1; border-color: var(--text); }

/* =========================================================================
   SINGLE DE PRODUCTO
   ========================================================================= */
.breadcrumb { padding-block: var(--s-4); border-bottom: 1px solid var(--border); }
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: var(--s-2); list-style: none; margin: 0; padding: 0; font-size: 13px; color: var(--text-soft); }
.breadcrumb a { color: var(--text-soft); }
.breadcrumb a:hover { color: var(--text); }
.breadcrumb li[aria-current] { color: var(--text); }
.breadcrumb li + li::before { content: "/"; margin-right: var(--s-2); color: var(--border-strong); }

.product-hero { padding-block: var(--s-7) var(--s-6); }
.product-hero__layout { display: grid; grid-template-columns: 1.1fr 1fr; gap: var(--s-7); align-items: start; }
.product-hero h1 { margin-bottom: var(--s-4); }
.product-hero__desc { font-size: 16.5px; color: var(--text-soft); max-width: 56ch; margin-bottom: var(--s-5); }
.product-hero__actions { display: flex; align-items: center; gap: var(--s-5); flex-wrap: wrap; margin-top: var(--s-5); }
.product-hero__media img { border-radius: var(--radius); border: 1px solid var(--border); aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
.product-hero__price { display: flex; align-items: baseline; gap: var(--s-3); margin-bottom: 0; }
.product-hero__meta { display: flex; align-items: center; gap: var(--s-2); font-size: 14px; color: var(--text-soft); margin: 0; }
.product-hero__meta svg { width: 16px; height: 16px; flex: none; }

.booking-section { background: var(--bg-alt); border-block: 1px solid var(--border); padding-block: var(--s-7); }
.booking-section__layout { display: grid; grid-template-columns: 1fr minmax(360px, 440px); gap: var(--s-7); align-items: start; }
.booking-section__intro h2 { margin-bottom: var(--s-3); }
.booking-section__intro .lead { margin-bottom: var(--s-5); }

@media (max-width: 1023px) {
  .product-hero__layout { grid-template-columns: 1fr; gap: var(--s-6); }
  .product-hero__media { order: -1; }
  .booking-section__layout { grid-template-columns: 1fr; gap: var(--s-6); }
}

.content-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-7); }
.content-block h2, .content-block h3 { font-size: 19px; margin-bottom: var(--s-4); }
.check-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); }
.check-list li { display: flex; gap: var(--s-3); font-size: 14.5px; align-items: flex-start; }
.check-list svg { width: 16px; height: 16px; flex: none; margin-top: 4px; }
.check-list--yes svg { color: var(--monument); }
.check-list--no svg { color: var(--text-soft); }
.check-list--no li { color: var(--text-soft); }

.notice {
  border: 1px solid var(--border);
  border-left: 3px solid var(--monument);
  border-radius: var(--radius-sm);
  background: var(--bg-alt);
  padding: var(--s-5);
}
.notice h3 { font-size: 16px; margin-bottom: var(--s-3); }
.notice ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-2); }
.notice li { font-size: 14px; color: var(--text-soft); padding-left: var(--s-4); position: relative; }
.notice li::before { content: ""; position: absolute; left: 0; top: 9px; width: 5px; height: 1px; background: var(--border-strong); }

@media (max-width: 767px) { .content-grid { grid-template-columns: 1fr; gap: var(--s-6); } }

/* Otras entradas */
.related__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-5); }
.related-card { display: grid; grid-template-columns: 160px 1fr; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--bg); }
.related-card img { width: 100%; height: 100%; object-fit: cover; }
.related-card__body { padding: var(--s-5); }
.related-card h3 { font-size: 16px; margin-bottom: var(--s-2); }
.related-card p { font-size: 13.5px; color: var(--text-soft); margin-bottom: var(--s-4); }
.related-card__foot { display: flex; align-items: center; gap: var(--s-4); flex-wrap: wrap; }

@media (max-width: 1023px) { .related__grid { grid-template-columns: 1fr; } }
@media (max-width: 559px) { .related-card { grid-template-columns: 1fr; } .related-card img { aspect-ratio: 16/9; height: auto;} }

/* Sticky CTA mobile (single) — se oculta cuando el widget es visible */
.sticky-cta {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 50;
  display: none;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-3) var(--gutter);
  background: var(--bg);
  border-top: 1px solid var(--border);
  transform: translateY(100%);
  transition: transform .18s ease;
  z-index: 9999999999;
}
.sticky-cta .price { font-size: 13px; }
.sticky-cta .price strong { font-size: 17px; }
.sticky-cta .btn { margin-left: auto; }

@media (max-width: 767px) {
  .sticky-cta { display: flex; }
  .sticky-cta.is-visible { transform: none; }
  body.has-sticky-cta { padding-bottom: 66px; }
  .footer__disclaimer, .footer__legal, .topbar p{ font-size: 10px; line-height: 12px; }
  .topbar .container{ padding: 0px 5px; }
}

/* Precio dentro de las cards de «Otras entradas» */
.related-card__price { margin-bottom: var(--s-4); }


/* --- Banner de idiomas en cabecera --- */
.cabecera__idiomas {
	display: inline-flex;
	align-items: center;
	gap: .55rem;                          /* separación entre idiomas y separadores */
	margin-left: 0rem;
  padding-left: var(--s-5);
	border-left: 1px solid rgba(0, 0, 0, .15);
	font-size: .95rem;
	line-height: 1;
}

.cabecera__idiomas .cabecera__idioma {
	margin: 0;                            /* anula márgenes heredados del nav del tema */
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: .03em;
	color: inherit;
	opacity: .5;                          /* idiomas no activos, atenuados */
	transition: opacity .15s ease;
}

.cabecera__idiomas .cabecera__idioma:hover,
.cabecera__idiomas .cabecera__idioma:focus-visible {
	opacity: 1;
}

/* Idioma que se está mostrando, claramente señalado */
.cabecera__idiomas .cabecera__idioma.is-active {
	opacity: 1;
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 4px;
	cursor: default;
}

.cabecera__idiomas-sep {
	opacity: .3;
	font-size: .8em;
}

@media (max-width: 600px) {
	.cabecera__idiomas { margin-left: .6rem; padding-left: .6rem; gap: .4rem; }
}


.product-card__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px 16px;
}

.product-card__duration,
.product-card__availability {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.product-card__availability {
	font-weight: 600;
	white-space: nowrap;
}

.product-card__availability-dot {
	display: inline-block;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: #16803c;
	flex: 0 0 auto;
}


/* Selector de idioma compacto estilo tiklic.org */
.wpml-ls-statics-shortcode_actions { border: 0; padding: 0; }
.wpml-ls-statics-shortcode_actions ul {
  display: inline-flex; align-items: center; gap: 0;
  margin: 0; padding: 0; list-style: none; white-space: nowrap;
}
.wpml-ls-statics-shortcode_actions li { margin: 0; padding: 0; border: 0; }

/* Ocultar el texto por defecto de WPML (nombre nativo + traducción) */
.wpml-ls-statics-shortcode_actions .wpml-ls-native,
.wpml-ls-statics-shortcode_actions .wpml-ls-display {
  position: absolute !important; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

/* Estilo de cada código */
.wpml-ls-statics-shortcode_actions .wpml-ls-link {
  display: inline-block; padding: 0; font-size: 0.8rem; line-height: 1;
  letter-spacing: 0.06em; font-weight: 300; color: #8a8a8a;
  text-decoration: none; text-transform: uppercase; transition: color .15s;
}
.wpml-ls-statics-shortcode_actions .wpml-ls-link:hover,
.wpml-ls-statics-shortcode_actions .wpml-ls-link:focus { color: #031e3a; }
.wpml-ls-statics-shortcode_actions .wpml-ls-current-language .wpml-ls-link {
  color: #031e3a; font-weight: 700; cursor: default;
}

/* Separador "·" entre idiomas */
.wpml-ls-statics-shortcode_actions li + li .wpml-ls-link::before {
  content: "\00B7"; display: inline-block; margin: 0 .6em;
  color: #b5b5b5; font-weight: 300;
}

/* Códigos de 2 letras por idioma */
.wpml-ls-item-es    .wpml-ls-link::after { content: "ES"; }
.wpml-ls-item-en    .wpml-ls-link::after { content: "EN"; }
.wpml-ls-item-fr    .wpml-ls-link::after { content: "FR"; }
.wpml-ls-item-de    .wpml-ls-link::after { content: "DE"; }
.wpml-ls-item-it    .wpml-ls-link::after { content: "IT"; }
.wpml-ls-item-pt-pt .wpml-ls-link::after { content: "PT"; }

/* ---- Media de las product cards: misma proporción en todas ---- */
.product-card__media { position: relative; aspect-ratio: 16 / 10; background: var(--bg-alt); overflow: hidden; min-height: 0; }
.products__grid .product-card:not(.product-card--featured) .product-card__media { aspect-ratio: 2 / 1; }
.product-card:not(.product-card--featured) .product-card__media { flex: 0 0 auto; }

/* la imagen sale del flujo: así no impone su alto natural al contenedor */
.product-card__media > img,
.product-card__media > picture,
.product-card__media > picture > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.product-card__media .badge { 
  position: absolute; 
  top: var(--s-3); 
  left: var(--s-3); 
  z-index: 2; 
}

.footer__contact {
	list-style: none;
	margin: 16px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.footer__contact-link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: inherit;
	text-decoration: none;
	line-height: 1.2;
	transition: opacity .15s ease;
}

.footer__contact-link:hover {
	opacity: .75;
	text-decoration: underline;
}

.footer__contact-icon {
	flex: none;
	width: 18px;
	height: 18px;
}

/* Widget de Ventrata: gris grafito cálido con acentos dorados */
ventrata-checkout-element {
  /* Acento dorado en el contorno de FOCUS (outline-gradient-A) */
  --color-gradient-A: #C2A25E;
  --color-gradient-B: #8C7440;
  --gradient-color-A: #C2A25E;
  --gradient-color-B: #8C7440;

  /* HOVER: gris grafito cálido (matiz dorado) → casi negro */
  --button-color--hover: linear-gradient(257.82deg, #4A4235 1.9%, #1C1A17 97.89%);
  --background-image-button--hover: linear-gradient(257.82deg, #4A4235 1.9%, #1C1A17 97.89%);

  /* ACTIVE: un punto más profundo */
  --button-color--active: linear-gradient(257.22deg, #2E2A22 1.76%, #4A4235 96.7%);
  --background-image-button--active: linear-gradient(257.22deg, #2E2A22 1.76%, #4A4235 96.7%);
}

/* Área de clic más grande + recentrar el separador */
.wpml-ls-statics-shortcode_actions .wpml-ls-link { padding: 6px .35em 6px 0 }
.wpml-ls-statics-shortcode_actions li + li .wpml-ls-link::before { margin: 0 .35em; }


@media (min-width: 1024px) {

  .modal__dialog:has(.booking-layout) {
    height: min(837px, 92vh);
  }

  .modal .modal__body:has(.booking-layout) {
    display: flex;
    flex-direction: column;   /* el pie va debajo, no al lado */
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    padding: 0 var(--s-4) var(--s-4) var(--s-4);
  }

  .modal .booking-layout {
    flex: 1 1 auto;
    min-height: 0;
    align-items: stretch;
  }

  .modal .booking-layout__info,
  .modal .booking-layout__widget {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    padding: 30px 0;
  }

  .modal .booking-layout__widget {
    position: static;
    top: auto;
  }

  .modal .modal__body:has(.booking-layout) .modal__foot {
    margin-top: 0;
    padding-top: 16px;
  }
}

/* =========================================================================
   CONTACTO — shortcode [mt_contacto] (inc/contact.php)
   Canales a la izquierda, formulario en tarjeta a la derecha.
   ========================================================================= */
.page-contact .about__text { max-width: none; }
.page-contact .about__text article > p { max-width: 62ch; font-size: 17px; color: var(--text-soft); }

.about__text--page { max-width: 72ch; }
.page-about .about__text { width: 100%; max-width: none; }
.page-about .about__text article { width: 100%; }
.page-about .about__text article > h1 { max-width: 18ch; margin-bottom: var(--s-6); font-size: clamp(34px, 4.6vw, 50px); }
.mt-about { display: grid; gap: clamp(24px, 4vw, 40px); width: 100%; }
.mt-about__hero { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(260px, .75fr); gap: clamp(32px, 6vw, 80px); align-items: start; }
.mt-about__intro { max-width: 70ch; }
.mt-about__intro .eyebrow,
.mt-about__section-heading .eyebrow,
.mt-about__mission .eyebrow { color: var(--monument); }
.mt-about__lead { max-width: 62ch; margin-bottom: var(--s-4); font-family: var(--font-head); font-size: clamp(22px, 2.7vw, 32px); font-weight: 500; line-height: 1.38; letter-spacing: -.02em; }
.mt-about__intro-text { max-width: 64ch; margin: 0; color: var(--text-soft); font-size: 16px; line-height: 1.8; }
.mt-about__visual {
  position: relative;
  display: flex;
  min-height: 280px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: var(--s-6);
  border: 1px solid rgba(74, 68, 55, .14);
  border-radius: var(--radius);
  background: radial-gradient(circle at 50% 40%, #fff 0, #f7f5ef 58%, #efede5 100%);
  text-align: center;
}
.mt-about__visual::before { position: absolute; width: 190px; height: 190px; border: 1px solid rgba(74, 68, 55, .12); border-radius: 50%; content: ""; }
.mt-about__visual-label { z-index: 1; color: var(--monument); font-size: 11px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; }
.mt-about__logo { z-index: 1; width: min(112px, 48%); height: auto; margin: var(--s-3) 0; filter: drop-shadow(0 8px 16px rgba(22, 22, 22, .08)); }
.mt-about__visual > p { z-index: 1; margin: 0; color: var(--text-soft); font-family: var(--font-head); font-size: 14px; font-weight: 500; }
.mt-about__work { display: grid; gap: var(--s-5); }
.mt-about__section-heading { max-width: 65ch; }
.mt-about__section-heading .eyebrow { margin-bottom: var(--s-2); }
.mt-about__section-heading h2 { margin: 0; }
.mt-about__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); }
.mt-about__card { min-height: 220px; padding: var(--s-5); border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.mt-about__icon { display: grid; width: 44px; height: 44px; place-items: center; margin-bottom: var(--s-4); border-radius: 50%; background: var(--bg-alt); color: var(--monument); }
.mt-about__icon svg { width: 21px; height: 21px; }
.mt-about__card h3 { margin-bottom: var(--s-2); }
.mt-about__card p { margin: 0; color: var(--text-soft); font-size: 14px; line-height: 1.7; }
.mt-about__mission { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: var(--s-4); align-items: start; padding: var(--s-6); border: 1px solid var(--border); border-left: 4px solid var(--monument); border-radius: var(--radius); background: var(--bg-alt); }
.mt-about__mission-mark { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 50%; background: var(--bg); color: var(--monument); }
.mt-about__mission-mark svg { width: 23px; height: 23px; }
.mt-about__mission .eyebrow { margin-bottom: var(--s-2); }
.mt-about__mission h2 { margin-bottom: var(--s-3); }
.mt-about__mission p:last-child { max-width: 80ch; margin: 0; color: var(--text-soft); line-height: 1.8; }

.contact {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: var(--s-6);
  align-items: start;
  margin-top: var(--s-6);
}

.contact__channels { display: grid; gap: var(--s-3); }
.contact__channel {
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  padding: var(--s-4) var(--s-5);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  transition: border-color .16s ease, background-color .16s ease;
}
a.contact__channel:hover { text-decoration: none; border-color: var(--text); background: var(--bg-alt); }
.contact__icon { width: 20px; height: 20px; flex: none; margin-top: 2px; color: var(--monument); }
.contact__label { display: block; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-soft); }
.contact__value { display: block; font-family: var(--font-head); font-weight: 500; font-size: 15.5px; overflow-wrap: anywhere; }

.contact__card {
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: var(--s-6);
  scroll-margin-top: calc(var(--header-h) + 16px);
}
.contact__card h2 { font-size: clamp(20px, 2vw, 24px); margin-bottom: var(--s-5); }

.contact__form { display: grid; gap: var(--s-4); }
.contact__trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4); }
.field { display: grid; gap: 6px; }
.field label { font-size: 14px; font-weight: 500; }
.field__optional { font-weight: 400; color: var(--text-soft); }
.field input,
.field select,
.field textarea {
  width: 100%;
  min-height: 48px;
  padding: 11px 14px;
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  font: inherit;
  font-size: 15px;
  color: var(--text);
  transition: border-color .16s ease;
}
.field textarea { min-height: 150px; resize: vertical; line-height: 1.55; }
.field select {
  appearance: none;
  padding-right: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23161616' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 18px;
}
.field input:hover,
.field select:hover,
.field textarea:hover { border-color: var(--text-soft); }
.field input:focus-visible,
.field select:focus-visible,
.field textarea:focus-visible { outline: 2px solid var(--focus); outline-offset: 0; border-color: var(--text); }

.field-check { display: flex; align-items: flex-start; gap: var(--s-3); font-size: 14px; cursor: pointer; }
.field-check input { width: 18px; height: 18px; margin: 2px 0 0; flex: none; accent-color: var(--cta); }
.field-check a { text-decoration: underline; text-underline-offset: 3px; }

.contact__legal { font-size: 12.5px; color: var(--text-soft); margin: 0; }

.contact__notice { display: flex; align-items: flex-start; gap: var(--s-3); border-radius: var(--radius-sm); }
.contact__notice h2 { margin-bottom: var(--s-2); }
.contact__notice-icon { width: 22px; height: 22px; flex: none; margin-top: 3px; }
.contact__notice--ok .contact__notice-icon { color: var(--monument); }
.contact__notice--error {
  margin-bottom: var(--s-5);
  padding: var(--s-3) var(--s-4);
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-left: 3px solid var(--text);
  font-size: 14px;
}
.contact__notice--error .contact__notice-icon { width: 18px; height: 18px; margin-top: 2px; }

@media (max-width: 1023px) {
  .mt-about__hero { grid-template-columns: minmax(0, 1.2fr) minmax(220px, .8fr); gap: var(--s-6); }
  .mt-about__visual { min-height: 260px; }
  .mt-about__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contact { grid-template-columns: 1fr; }
  /* En móvil y tablet el formulario va primero: es la acción principal. */
  .contact__card { order: -1; }
  .contact__channels { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 559px) {
  .contact__card { padding: var(--s-5) var(--s-4); }
  .field-row,
  .contact__channels { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .page-about .about__text article > h1 { margin-bottom: var(--s-5); }
  .mt-about { gap: var(--s-6); }
  .mt-about__hero { grid-template-columns: 1fr; gap: var(--s-5); }
  .mt-about__visual { min-height: 250px; }
  .mt-about__logo { width: 105px; }
  .mt-about__card { min-height: 0; }
}
@media (max-width: 559px) {
  .mt-about__cards { grid-template-columns: 1fr; }
  .mt-about__mission { grid-template-columns: 1fr; padding: var(--s-5) var(--s-4); }
}