﻿/*
Theme Name: Lagunas Travel
Theme URI:
Author: Lagunas Travel
Author URI:
Description: Block theme (FSE) a medida para agencia de turismo en Puno, Perú. Diseño angular sin border-radius, paleta en tonos morado y orquídea, multiidioma (es/en/fr) y totalmente editable desde el Editor del sitio.
Version: 0.3.39
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 7.4
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: lagunastravel
Tags: full-site-editing, block-themes, one-column, translation-ready, custom-colors, custom-menu, custom-logo, featured-images
*/

/* ⚠ ARCHIVO GENERADO — NO EDITAR style.css directamente.
   El CSS vive partido por secciones en assets/css/partials/.
   Edita el parcial que toque y ejecuta:  php build-css.php
   (cualquier cambio hecho a mano en style.css se pierde al reconstruir). */

/* ════════════════════════════════════════════════════════════════════════
   PALETA GLOBAL — Lagunas Travel
   Toda variable de color del tema vive aquí. Para cambiar un tono,
   actualiza el valor en :root y se propaga a todo el sitio.

   Las claves --wp--preset--color--* las gestiona theme.json (no tocar aquí).
   ════════════════════════════════════════════════════════════════════════ */
:root {
  /* ── Brand morado / orquídea (heredado, eco de theme.json) ─────────── */
  --lt-purple-deep: #1C1030;
  /* fondo-oscuro / texto principal */
  --lt-purple-dark: #2A1350;
  --lt-purple-mid: #4A2478;
  --lt-purple-base: #6B3A96;
  /* primario */
  --lt-orchid: #C060BC;
  /* secundario */
  --lt-orchid-light: #E8C7EB;

  /* ── Paleta pastel (paleta.png — diente de león) ───────────────────── */
  --lt-mauve: #9183B5;
  /* swatch 1 — mauve / morado polvoriento */
  --lt-mauve-dark: #7569A0;
  /* derivado, para texto sobre fondo claro */
  --lt-mauve-deep: #5B4F88;
  /* derivado, hover */
  --lt-lilac: #CCA0DD;
  /* swatch 2 — lila */
  --lt-periwinkle: #A8B3DC;
  /* swatch 3 — periwinkle */
  --lt-blue-light: #A8C2E5;
  /* swatch 4 — azul lavanda */
  --lt-blue-mid: #87A6D8;
  /* swatch 5 — azul medio */

  /* ── Fondos / superficies ──────────────────────────────────────────── */
  --lt-bg-page: #FAF8FC;
  /* lavanda muy suave — body de TODAS las páginas */
  --lt-bg-soft: #EFE9FA;
  /* superficie alternativa, ligeramente más saturada */
  --lt-surface: #FFFFFF;
  --lt-surface-glass: rgba(255, 255, 255, 0.92);

  /* ── Textos ────────────────────────────────────────────────────────── */
  --lt-text: #1C1030;
  --lt-text-soft: #7A6A90;
  --lt-text-light: #F7F4FF;
  --lt-border: #D4CCE8;

  /* ── Gradientes derivados (reutilizables) ──────────────────────────── */
  --lt-grad-pastel: linear-gradient(135deg, #CCA0DD 0%, #A8B3DC 40%, #A8C2E5 65%, #87A6D8 100%);
  --lt-grad-pastel-soft: linear-gradient(90deg, #CCA0DD, #A8C2E5, #87A6D8);
  --lt-grad-brand: linear-gradient(120deg, #1C1030 0%, #3D1F66 45%, #6B3A96 100%);

  /* ── Chrome (navbar + footer) — controlado por el Customizer ──────── */
  --lt-chrome-bg: linear-gradient(180deg, #C9BDE3 0%, #B7CFEF 100%);
  --lt-chrome-text: #2D1F4A;
  --lt-chrome-text-muted: rgba(45, 31, 74, 0.78);
  --lt-chrome-text-soft: rgba(45, 31, 74, 0.6);
  --lt-chrome-accent: #8E72A6;
  --lt-chrome-accent-2: #80A8DC;
  --lt-chrome-on-accent: #ffffff;
  --lt-chrome-border: rgba(45, 31, 74, 0.12);
  --lt-chrome-surface: rgba(45, 31, 74, 0.08);
  --lt-chrome-shadow: 0 4px 32px rgba(80, 60, 130, 0.18);
}

/* ── Estabilidad del scrollbar:
   - Desktop con punteros precisos: reservamos gutter para evitar CLS.
   - Mobile/touch: NO reservamos (el scrollbar es overlay invisible y
     el gutter quedaba como franja vacía a la derecha). ── */
html {
  overflow-x: clip;
}

@media (pointer: fine) {
  html {
    scrollbar-gutter: stable;
  }
}

/* ── Scrollbar nativa estilizada con la paleta del chrome ──
   Usa las mismas vars que el navbar/footer para que cambie con
   el customizer. WebKit acepta gradientes en el thumb; Firefox
   solo acepta colores sólidos vía scrollbar-color, así que ahí
   caemos al accent. */
@media (pointer: fine) {

  /* Firefox */
  html {
    scrollbar-width: thin;
    scrollbar-color: var(--lt-chrome-accent, #8E72A6) transparent;
  }

  /* WebKit / Chromium */
  ::-webkit-scrollbar {
    width: 12px;
    height: 12px;
  }

  ::-webkit-scrollbar-track {
    background: transparent;
  }

  ::-webkit-scrollbar-thumb {
    background: var(--lt-chrome-bg, #8E72A6);
    border: 3px solid transparent;
    background-clip: padding-box;
    border-radius: 999px;
    transition: background-color 0.2s ease;
  }

  ::-webkit-scrollbar-thumb:hover {
    background: var(--lt-chrome-accent, #6B3A96);
    background-clip: padding-box;
  }

  ::-webkit-scrollbar-corner {
    background: transparent;
  }
}

body {
  overflow-x: clip;
  max-width: 100%;
}

/* ── Fondo lavanda consistente en todas las páginas ────────────────── */
html,
body,
body.wp-singular,
body.wp-admin-bar {
  background-color: var(--lt-bg-page);
}

.wp-site-blocks {
  background-color: var(--lt-bg-page);
  overflow-x: clip;
  max-width: 100%;
}

/* ── Gradiente iridiscente animado — texto em en títulos ── */
@keyframes lt-iridescent {
  0% {
    background-position: 0% center;
  }

  100% {
    background-position: 300% center;
  }
}

/* ── Footer links ── */
footer.wp-block-group .footer-nav-list a {
  color: var(--wp--preset--color--texto-claro);
  text-decoration: none;
}

footer.wp-block-group .footer-nav-list a:hover {
  color: var(--wp--preset--color--secundario);
}

/* ── Tarjetas del query loop (destinos, tours) ── */
.lt-card {
  background: #ffffff;
  border: 1px solid var(--wp--preset--color--borde);
  padding: 0 0 var(--wp--preset--spacing--30) 0;
  display: flex;
  flex-direction: column;
  gap: var(--wp--preset--spacing--20);
  height: 100%;
}

.lt-card .wp-block-post-featured-image {
  margin: 0 0 var(--wp--preset--spacing--20) 0;
}

.lt-card .wp-block-post-featured-image img {
  display: block;
  width: 100%;
  height: auto;
}

.lt-card .lt-card__title,
.lt-card .lt-card__excerpt,
.lt-card .lt-card__terms,
.lt-card .wp-block-read-more {
  padding-left: var(--wp--preset--spacing--30);
  padding-right: var(--wp--preset--spacing--30);
  margin-top: 0;
}

.lt-card .lt-card__terms {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 700;
  color: var(--wp--preset--color--secundario);
}

.lt-card .lt-card__title a,
.lt-card .lt-card__title {
  color: var(--wp--preset--color--texto);
  text-decoration: none;
  line-height: 1.2;
}

.lt-card .lt-card__title a:hover {
  color: var(--wp--preset--color--primario);
}

.lt-card .lt-card__excerpt {
  color: var(--wp--preset--color--texto-suave);
  line-height: 1.6;
}

.lt-card .wp-block-read-more {
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  text-decoration: none;
}

/* ═══════════════════════════════════════════════════════
   TOURS ARCHIVE  /tours/  — PHP template
═══════════════════════════════════════════════════════ */

@keyframes lt-fadein {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ── Wrapper general ── */
.lt-tp {
  background: #F7F4FF;
  /* fondo-claro de paleta */
  min-height: 100vh;
  overflow-x: hidden;
}

/* ── Hero ── */
.lt-tp__hero {
  background: #1C1030;
  /* fondo-oscuro de paleta */
  padding: 5rem 1.5rem 3.5rem;
  text-align: center;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  overflow: hidden;
  box-sizing: border-box;
}

.lt-tp__hero-inner {
  max-width: 760px;
  margin: 0 auto;
}

.lt-tp__eyebrow {
  display: block;
  font-size: 0.8rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.5);
  letter-spacing: 0.06em;
  margin-bottom: 1rem;
}

.lt-tp__title {
  font-size: clamp(2.25rem, 5vw, 3.25rem);
  font-weight: 800;
  color: #ffffff;
  line-height: 1.12;
  letter-spacing: -0.03em;
  margin: 0 0 1.1rem;
}

.lt-tp__sub {
  font-size: 1rem;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.55);
  margin: 0 0 2.25rem;
}

/* ── Filtros ── */
.lt-tp__filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}

.lt-tp__pill {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: rgba(255, 255, 255, 0.65);
  font-size: 0.8125rem;
  font-weight: 500;
  padding: 0.45em 1.15em;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.18s, color 0.18s, border-color 0.18s;
}

.lt-tp__pill:hover {
  background: rgba(255, 255, 255, 0.13);
  color: #fff;
}

.lt-tp__pill--active {
  background: #C060BC;
  /* secundario */
  border-color: #C060BC;
  color: #fff;
  font-weight: 700;
}

/* ── Sección grid ── */
.lt-tp__section {
  background: #f7f4ff;
  padding: 3.5rem 1.5rem 5rem;
}

.lt-tp__wrap {
  max-width: 1380px;
  margin: 0 auto;
}

/* Grid */
.lt-tp__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px;
}

/* ── Tarjeta ── */
.lt-card {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: #ffffff;
  /* fondo-oscuro de paleta */
  border: 1px solid #4A2478;
  /* primario-oscuro sutil */
  box-shadow: 0 4px 24px rgba(28, 16, 48, 0.35);
  transition: transform 0.22s ease, box-shadow 0.22s ease;
  animation: lt-fadein 0.35s ease both;
}

.lt-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.65);
}

/* Imagen */
.lt-card__img-wrap {
  position: relative;
  flex-shrink: 0;
}

.lt-card__img-wrap>a {
  display: block;
  line-height: 0;
}

.lt-card__img {
  display: block;
  width: 100%;
  height: 210px;
  object-fit: cover;
}

.lt-card__img-ph {
  display: block;
  height: 210px;
  background: linear-gradient(145deg, #2d1260 0%, #0f0a1e 100%);
}

/* Badges */
.lt-card__badge {
  position: absolute;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.6875rem;
  font-weight: 700;
  line-height: 1;
  padding: 0.35em 0.75em;
  border-radius: 999px;
}

.lt-card__badge--cat {
  top: 12px;
  left: 12px;
  background: #C060BC;
  /* secundario — orquídea */
  color: #fff;
}

.lt-card__badge--dur {
  top: 12px;
  right: 12px;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.15);
}

/* Cuerpo */
.lt-card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 1.1rem 1.15rem 1.15rem;
  gap: 8px;
}

.lt-card__title {
  margin: 0;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.35;
}

.lt-card__title a {
  color: #f1eeff;
  text-decoration: none;
}

.lt-card__title a:hover {
  color: #c084fc;
}

.lt-card__desc {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  color: rgba(0, 0, 0, 0.75);
  flex: 1;
}

/* Footer tarjeta: precio + botón */
.lt-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 4px;
  padding-top: 10px;
  border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.lt-card__price {
  font-size: 1rem;
  font-weight: 800;
  color: #ffffff;
  letter-spacing: -0.02em;
  white-space: nowrap;
}

.lt-card__btn {
  display: inline-block;
  background: #6B3A96;
  /* primario — morado profundo */
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  text-decoration: none;
  padding: 0.5em 1.1em;
  border-radius: 7px;
  white-space: nowrap;
  transition: background 0.18s ease;
  flex-shrink: 0;
}

.lt-card__btn:hover {
  background: #C060BC;
  color: #fff;
}

/* Paginación */
.lt-tp__pag {
  margin-top: 3rem;
}

.lt-tp__pag .nav-links {
  display: flex;
  justify-content: center;
  gap: 6px;
  flex-wrap: wrap;
}

.lt-tp__pag .page-numbers {
  color: #6B3A96;
  text-decoration: none;
  padding: 0.4em 0.9em;
  border-radius: 8px;
  border: 1px solid #D4CCE8;
  transition: all 0.18s;
  font-size: 0.875rem;
}

.lt-tp__pag .page-numbers.current,
.lt-tp__pag .page-numbers:hover {
  background: #6B3A96;
  border-color: #6B3A96;
  color: #fff;
}

.lt-tp__empty {
  color: #6B3A96;
  text-align: center;
  padding: 4rem 0;
  font-size: 1rem;
}

/* ── Responsive ── */
@media (max-width: 599px) {
  .lt-tp__grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .lt-tp__hero {
    padding: 3.5rem 1.25rem 2.5rem;
  }
}

@media (min-width: 600px) and (max-width: 899px) {
  .lt-tp__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 900px) and (max-width: 1199px) {
  .lt-tp__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ═══════════════════════════════════════════════════════
   BLOQUE DINÁMICO: lagunastravel/tours-grid  (ltg-*)
═══════════════════════════════════════════════════════ */

/* Wrapper general — fondo claro */
.ltg-wrap {
  background: #f4f3f8;
  min-height: 100vh;
  overflow-x: clip;
  max-width: 100%;
}

.ltg-banner-wrap {
  max-width: 100%;
  overflow-x: clip;
}

/* ── Banner / Hero ── */
.ltg-banner {
  position: relative;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  min-height: clamp(220px, 32vw, 360px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  padding: clamp(2.75rem, 5vw, 4.5rem) clamp(1.25rem, 4vw, 3rem) clamp(4.5rem, 7vw, 6.5rem);
  overflow: hidden;
  isolation: isolate;
  background-color: #1C1030;
}

.ltg-banner>* {
  max-width: 100%;
  box-sizing: border-box;
}

.ltg-head {
  min-width: 0;
}

.ltg-head__title,
.ltg-head__eyebrow,
.ltg-head__sub {
  max-width: 100%;
  word-wrap: break-word;
  overflow-wrap: break-word;
}

.ltg-banner-bg {
  position: absolute;
  inset: -60% 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  will-change: transform;
  transform: translate3d(0, 0, 0);
  pointer-events: none;
}

.ltg-banner-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.55) 0%,
      rgba(36, 0, 96, 0.70) 50%,
      rgba(28, 16, 48, 0.85) 100%);
  pointer-events: none;
}

.ltg-banner--has-img .ltg-banner-overlay {
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.45) 0%,
      rgba(36, 0, 96, 0.55) 40%,
      rgba(28, 16, 48, 0.80) 100%);
}

.ltg-banner-aurora {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    radial-gradient(55% 50% at 20% 25%, rgba(192, 96, 188, 0.25) 0%, transparent 70%),
    radial-gradient(50% 50% at 80% 10%, rgba(133, 133, 204, 0.30) 0%, transparent 70%),
    radial-gradient(40% 40% at 50% 80%, rgba(107, 58, 150, 0.20) 0%, transparent 70%);
  filter: blur(40px);
  pointer-events: none;
  mix-blend-mode: screen;
}

.ltg-banner--has-img .ltg-banner-aurora {
  opacity: 0.4;
}

/* ── Cabecera dentro del banner ── */
.ltg-head {
  position: relative;
  z-index: 3;
  text-align: center;
  max-width: 720px;
  margin: 0 auto;
  width: 100%;
}

.ltg-head__eyebrow {
  display: inline-block;
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.75);
  font-weight: 600;
  margin-bottom: 1rem;
}

.ltg-head__title {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.25rem, 5.5vw, 4rem);
  font-weight: 700;
  color: #fff;
  letter-spacing: -0.028em;
  line-height: 1.05;
  margin: 0 0 1rem;
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.25);
}

.ltg-head__title em {
  font-style: italic;
  font-weight: 500;
  background: linear-gradient(90deg,
      #E8C7EB 0%, #C060BC 18%, #8585CC 36%,
      #B8AAEE 50%, #E8C7EB 64%, #C060BC 82%, #8585CC 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: lt-iridescent 4s linear infinite;
}

.ltg-head__sub {
  font-size: clamp(0.95rem, 1.3vw, 1.05rem);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.82);
  max-width: 580px;
  margin: 0 auto;
}

/* ── Banner wrap (necesario para el toolbar flotante) ── */
.ltg-banner-wrap {
  position: relative;
}

/* ── Filtros — dentro del banner ── */
.ltg-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  position: relative;
  z-index: 3;
}

.ltg-pill {
  background: rgba(255, 255, 255, 0.12);
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  color: rgba(255, 255, 255, 0.88);
  font-size: 0.88rem;
  font-weight: 500;
  padding: 0.45em 1.35em;
  border-radius: 999px;
  cursor: pointer;
  transition: all 0.2s;
  backdrop-filter: blur(6px);
}

.ltg-pill:hover {
  background: rgba(255, 255, 255, 0.22);
  border-color: rgba(255, 255, 255, 0.65);
  color: #fff;
}

.ltg-pill--active {
  background: #fff;
  border-color: transparent;
  color: #6B3A96;
  font-weight: 700;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
}

/* ── Toolbar flotante — solo búsqueda ── */
.ltg-toolbar {
  position: absolute;
  bottom: 0;
  left: 50%;
  right: auto;
  width: min(720px, 90%);
  transform: translateX(-50%) translateY(50%);
  z-index: 10;
  background: #fff;
  border-radius: 999px;
  box-shadow:
    0 8px 48px rgba(28, 16, 48, 0.16),
    0 2px 8px rgba(28, 16, 48, 0.08);
  padding: 0.5rem 0.5rem 0.5rem 1.5rem;
  display: flex;
  align-items: center;
}

/* ── Búsqueda ── */
.ltg-search {
  display: flex;
  align-items: center;
  width: 100%;
  background: transparent;
  border: none;
  padding: 0;
}

.ltg-search__icon {
  color: #a090bc;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  margin-right: 0.75rem;
}

.ltg-search__input {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font-size: 1rem;
  color: #1a1028;
  min-width: 0;
}

.ltg-search__input::placeholder {
  color: #b8aed0;
}

.ltg-search__btn {
  background: #6B3A96;
  color: #fff;
  border: none;
  border-radius: 999px;
  padding: 0.7em 1.75em;
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.18s, transform 0.15s;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4em;
}

.ltg-search__btn-icon {
  display: none;
}

.ltg-search__btn:hover {
  background: #5a2f80;
  transform: scale(1.03);
}

/* ── Sección grid ── */
.ltg-section {
  padding: clamp(5rem, 8vw, 6.5rem) 1.5rem 5rem;
}

.ltg-inner {
  max-width: 1380px;
  margin: 0 auto;
}

/* ── Grid ── */
.ltg-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px;
}

/* ── Tarjeta ── */
.ltg-card {
  position: relative;
  border-radius: 26px;
  overflow: hidden;
  height: 560px;
  background-color: #7c6d98;
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  box-shadow: 0 8px 32px rgba(28, 16, 48, 0.22);
}

.ltg-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 22px 60px rgba(28, 16, 48, 0.38);
}

/* Badge duración — top left */
.ltg-card__dur {
  position: absolute;
  top: 16px;
  left: 16px;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(6px);
  color: #1a1028;
  font-size: 0.78rem;
  font-weight: 700;
  padding: 0.4em 1em;
  border-radius: 999px;
  letter-spacing: 0.02em;
  z-index: 2;
}

/* Overlay degradado */
.ltg-card__overlay {
  background: linear-gradient(to top, rgba(10, 4, 24, 0.92) 0%, rgba(10, 4, 24, 0.55) 50%, transparent 100%);
  padding: 1.5rem 1.25rem 1.4rem;
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
}

/* Título + precio */
.ltg-card__top {
  margin-bottom: 0.2rem;
}

.ltg-card__title {
  margin: 0 0 0.35rem;
  font-size: 1.5rem;
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.01em;
}

.ltg-card__title a {
  color: #fff;
  text-decoration: none;
}

.ltg-card__title a:hover {
  color: #e0b8ff;
}

.ltg-card__price {
  margin: 0;
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.78);
  font-weight: 600;
}

/* Glass pill — contiene itinerario */
.ltg-card__glass {
  background: rgba(20, 12, 38, 0.45);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 18px;
  padding: 0.85rem 0.95rem;
}

/* Itinerario numerado */
.ltg-card__itinerary {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ltg-card__itinerary li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 0.82rem;
  color: rgba(255, 255, 255, 0.92);
  line-height: 1.35;
}

.ltg-card__itxt {
  flex: 1;
  padding-top: 0.15rem;
}

.ltg-card__num {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #C060BC;
  color: #fff;
  font-size: 0.72rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 8px rgba(192, 96, 188, 0.45);
}

/* Botón "Ver Detalles" */
.ltg-card__btn {
  display: block;
  text-align: center;
  background: #fff;
  color: #6B3A96;
  font-size: 0.95rem;
  font-weight: 700;
  padding: 0.85em 1em;
  border-radius: 999px;
  text-decoration: none;
  transition: background 0.18s, color 0.18s, transform 0.18s;
  margin-top: 0.25rem;
}

.ltg-card__btn:hover {
  background: #6B3A96;
  color: #fff;
  transform: translateY(-1px);
}

/* ── Paginación ── */
.ltg-pag {
  margin-top: 3rem;
  display: flex;
  justify-content: center;
}

.ltg-pag .nav-links {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.ltg-pag .page-numbers {
  color: #6B3A96;
  text-decoration: none;
  padding: 0.4em 0.9em;
  border-radius: 8px;
  border: 1px solid #d4cce8;
  transition: all 0.18s;
  font-size: 0.875rem;
}

.ltg-pag .page-numbers.current,
.ltg-pag .page-numbers:hover {
  background: #6B3A96;
  border-color: #6B3A96;
  color: #fff;
}

/* ── Vacío ── */
.ltg-empty {
  text-align: center;
  padding: 4rem 0;
  color: #6b6382;
  font-size: 1rem;
}

/* ── Responsive ── */
@media (max-width: 599px) {
  .ltg-grid {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .ltg-card {
    height: 480px;
  }

  .ltg-head {
    padding: 3rem 1.25rem 2rem;
  }

  .ltg-head__title {
    font-size: 2.25rem;
  }
}

@media (min-width: 600px) and (max-width: 899px) {
  .ltg-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .ltg-card {
    height: 460px;
  }
}

@media (min-width: 900px) and (max-width: 1199px) {
  .ltg-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .ltg-card {
    height: 490px;
  }
}

/* ── Tarjetas de testimonios ── */
.lt-testimonio {
  background: #ffffff;
  border: 2px solid var(--wp--preset--color--borde);
  padding: var(--wp--preset--spacing--40);
  display: flex;
  flex-direction: column;
  gap: var(--wp--preset--spacing--20);
  height: 100%;
}

.lt-testimonio .lt-testimonio__quote {
  font-size: 1rem;
  line-height: 1.75;
  margin: 0;
  color: var(--wp--preset--color--texto);
}

.lt-testimonio .lt-testimonio__quote::before {
  content: "\201C";
  display: block;
  font-size: 2.25rem;
  line-height: 1;
  color: var(--wp--preset--color--secundario);
  margin-bottom: var(--wp--preset--spacing--10);
}

.lt-testimonio .lt-testimonio__author {
  font-size: 0.9375rem;
  font-weight: 700;
  margin: 0;
  padding-top: var(--wp--preset--spacing--20);
  border-top: 1px solid var(--wp--preset--color--borde);
}

/* ═══════════════════════════════════════════════════════
   HEADER  lagunastravel/header  (lth-header__*)
═══════════════════════════════════════════════════════ */
/* El <header> exterior (de la template-part) es el que hace sticky.
   Si el sticky lo pusiéramos en .lth-header, su padre tendría la misma altura
   y el sticky no tendría rango para "pegarse". Además anulamos el padding
   heredado por `useRootPaddingAwareAlignments` y el blockGap que metía un
   hueco entre el navbar y el hero. */
.wp-site-blocks>header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent;
}

.wp-site-blocks>header+* {
  margin-top: 0 !important;
}

/* Igual que con el header: anula el blockGap entre el último bloque de la
   página y el footer, para que la sección final pegue directo al footer. */
.wp-site-blocks>footer {
  margin-top: 0 !important;
}

.wp-site-blocks>*:has(+ footer) {
  margin-bottom: 0 !important;
}

.wp-block-post-content {
  margin-bottom: 0 !important;
}

.wp-block-post-content> :last-child,
.wp-block-post-content> :last-child>.wp-block-group:last-child {
  margin-bottom: 0 !important;
}

/* El editor de WP suele dejar un <p></p> vacío al final del contenido.
   En layout constrained recibe el blockGap como margen superior y, con el
   fondo blanco del body, crea una franja blanca entre la última sección y
   el footer. Lo colapsamos por completo. */
.wp-block-post-content>p:last-child:empty {
  display: none !important;
}

.lth-header {
  background: transparent;
  transition: box-shadow 0.35s ease, background 0.35s ease;
  width: 100%;
}

@media (max-width: 1023px) {
  .lth-header.is-nav-open {
    background: var(--lt-chrome-bg);
    box-shadow: var(--lt-chrome-shadow);
  }

  .lth-header.is-nav-open .lth-header__logo-text {
    color: var(--lt-chrome-text);
  }

  .lth-header.is-nav-open .lth-header__logo-text em {
    color: var(--lt-chrome-text-muted);
  }

  .lth-header.is-nav-open .lth-lang__btn {
    color: var(--lt-chrome-text-muted);
  }

  .lth-header.is-nav-open .lth-lang {
    background: var(--lt-chrome-surface);
  }
}

.lth-header.is-scrolled {
  background: var(--lt-chrome-bg);
  box-shadow: var(--lt-chrome-shadow);
}

.lth-header__inner {
  padding: 0.55rem 2.5rem;
  display: flex;
  align-items: center;
  gap: 2.25rem;
}

.lth-header__logo {
  text-decoration: none;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
}

.lth-header__logo--img img {
  display: block;
  height: 64px;
  width: auto;
  max-width: 260px;
  object-fit: contain;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.25));
  transition: height 0.35s ease, filter 0.35s ease;
}

.lth-header.is-scrolled .lth-header__logo--img img {
  height: 52px;
  filter: none;
}

.lth-header__logo-text {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.3rem;
  font-weight: 700;
  color: #fff;
  letter-spacing: -0.01em;
  transition: color 0.35s ease;
}

.lth-header.is-scrolled .lth-header__logo-text {
  color: var(--lt-chrome-text);
}

.lth-header__logo-text em {
  font-style: italic;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.8);
  margin-left: 4px;
  transition: color 0.35s ease;
}

.lth-header.is-scrolled .lth-header__logo-text em {
  color: var(--lt-chrome-text-muted);
}

.lth-header__nav {
  display: flex;
  align-items: center;
  gap: 2.75rem;
  margin-left: auto;
  position: relative;
}

.lth-header__nav a {
  color: rgba(255, 255, 255, 0.9);
  font-size: 1rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  text-decoration: none;
  transition: color 0.35s ease, transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
  display: inline-block;
}

.lth-header__nav a:hover {
  color: #fff;
  transform: translateY(-3px);
}

.lth-header.is-scrolled .lth-header__nav a {
  color: var(--lt-chrome-text-muted);
}

.lth-header.is-scrolled .lth-header__nav a:hover {
  color: var(--lt-chrome-text);
}

/* Magic line — efecto gusano, JS controla las transiciones */
.lth-nav-line {
  position: absolute;
  bottom: -7px;
  height: 2.5px;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.5) 100%);
  border-radius: 2px;
  opacity: 0;
  pointer-events: none;
  left: 0;
  right: 100%;
  transition: background 0.35s ease;
}

.lth-header.is-scrolled .lth-nav-line {
  background: linear-gradient(90deg, var(--lt-chrome-accent) 0%, var(--lt-chrome-accent-2) 100%);
}

.lth-header__right {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  flex-shrink: 0;
}

/* Switcher idioma */
.lth-lang {
  display: flex;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 999px;
  padding: 3px;
  gap: 1px;
  transition: background 0.35s ease;
}

.lth-header.is-scrolled .lth-lang {
  background: var(--lt-chrome-surface);
}

.lth-lang__btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  padding: 0.4em 0.75em;
  border-radius: 999px;
  text-decoration: none;
  color: rgba(255, 255, 255, 0.85);
  transition: all 0.35s ease;
}

.lth-header.is-scrolled .lth-lang__btn {
  color: var(--lt-chrome-text-muted);
}

.lth-lang__icon {
  display: inline-flex;
  align-items: center;
}

.lth-lang__btn:hover {
  color: var(--lt-chrome-accent);
}

.lth-lang__btn--active {
  background: var(--lt-chrome-accent);
  color: var(--lt-chrome-on-accent) !important;
}

/* Botón WhatsApp del header */
.lth-header__wa {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  background: #25D366;
  color: #fff;
  font-size: 0.875rem;
  font-weight: 700;
  padding: 0.6em 1.15em 0.6em 0.85em;
  border-radius: 999px;
  text-decoration: none;
  letter-spacing: 0.01em;
  box-shadow: 0 4px 14px rgba(37, 211, 102, 0.35);
  transition: background 0.2s, box-shadow 0.2s, transform 0.2s;
}

.lth-header__wa:hover {
  background: #1ebe5a;
  box-shadow: 0 6px 20px rgba(37, 211, 102, 0.5);
  transform: translateY(-1px);
  color: #fff;
}

.lth-header__wa-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
}

/* ── Hamburger button ── */
.lth-menu-btn {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.18);
  cursor: pointer;
  padding: 10px;
  margin-left: auto;
  flex-shrink: 0;
  border-radius: 10px;
  transition: background 0.18s, border-color 0.18s;
  backdrop-filter: blur(6px);
}

.lth-header.is-scrolled .lth-menu-btn {
  background: rgba(0, 0, 0, 0.06);
  border-color: rgba(0, 0, 0, 0.1);
}

.lth-menu-btn:hover {
  background: rgba(255, 255, 255, 0.22);
}

.lth-header.is-scrolled .lth-menu-btn:hover {
  background: rgba(0, 0, 0, 0.1);
}

.lth-menu-btn__bar {
  display: block;
  width: 22px;
  height: 2px;
  background: #fff;
  border-radius: 2px;
  transition: transform 0.28s ease, opacity 0.28s ease, background 0.35s ease;
}

.lth-header.is-scrolled .lth-menu-btn__bar {
  background: var(--lt-chrome-text);
}

.lth-header.is-nav-open .lth-menu-btn__bar {
  background: var(--lt-chrome-text);
}

.lth-header.is-nav-open .lth-menu-btn__bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.lth-header.is-nav-open .lth-menu-btn__bar:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}

.lth-header.is-nav-open .lth-menu-btn__bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* ── Backdrop ── */
.lth-nav-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(28, 16, 48, 0.45);
  backdrop-filter: blur(3px);
  z-index: 997;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
}

.lth-header.is-nav-open~.lth-nav-backdrop {
  opacity: 1;
  pointer-events: auto;
}

/* ── Nav-top: logo + idiomas dentro del menú lateral (solo mobile) ── */
.lth-nav-top {
  display: none;
}

.lth-nav-links {
  display: flex;
  align-items: center;
  gap: 2.75rem;
}

/* ── Responsive ── */
@media (max-width: 1023px) {
  .lth-menu-btn {
    display: flex;
  }

  .lth-header__right {
    display: none;
  }

  .lth-header__nav {
    position: fixed;
    top: 0;
    left: 0;
    width: min(300px, 82vw);
    height: 100dvh;
    background: linear-gradient(165deg, #2d1b4e 0%, #1a0f30 100%);
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    margin-left: 0;
    padding: 2rem 1.5rem 2.5rem;
    transform: translateX(-100%);
    transition: transform 0.38s cubic-bezier(0.22, 0.61, 0.36, 1);
    z-index: 998;
    box-shadow: 6px 0 40px rgba(0, 0, 0, 0.4);
    overflow-y: auto;
  }

  .lth-header.is-nav-open .lth-header__nav {
    transform: translateX(0);
  }

  .lth-nav-top {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
    width: 100%;
    padding-bottom: 1.5rem;
    margin-bottom: 0.25rem;
  }

  .lth-nav-top__logo {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    text-decoration: none;
  }

  .lth-nav-top__logo img {
    height: 40px;
    width: auto;
    object-fit: contain;
  }

  .lth-nav-top__name {
    font-family: var(--wp--preset--font-family--cormorant, 'Cormorant Garamond', serif);
    font-size: 1.25rem;
    font-weight: 600;
    color: #fff;
    letter-spacing: 0.02em;
  }

  .lth-nav-top__lang {
    display: flex;
    gap: 0.5rem;
  }

  .lth-nav-top__lang .lth-lang__btn {
    padding: 0.5em 0.9em;
    font-size: 0.8rem;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.15);
    color: rgba(255, 255, 255, 0.7);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background 0.18s, color 0.18s, border-color 0.18s;
    font-weight: 500;
  }

  .lth-nav-top__lang .lth-lang__btn:hover {
    background: rgba(255, 255, 255, 0.18);
    color: #fff;
  }

  .lth-nav-top__lang .lth-lang__btn--active {
    background: rgba(255, 255, 255, 0.2);
    border-color: rgba(255, 255, 255, 0.35);
    color: #fff;
  }

  .lth-nav-links {
    display: flex;
    flex-direction: column;
    width: 100%;
    gap: 0;
  }

  .lth-nav-links a {
    width: 100%;
    padding: 0.95rem 0.5rem;
    border: none;
    border-radius: 8px;
    font-size: 1rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.75);
    transform: none !important;
    text-decoration: none;
    transition: background 0.18s, color 0.18s;
  }

  .lth-nav-links a:hover,
  .lth-nav-links a.is-active {
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
  }

  .lth-nav-links a:first-child {
    border-top: none;
  }

  .lth-header__nav a::after {
    display: none;
  }

  .lth-header.is-nav-open .lth-menu-btn__bar {
    background: var(--lt-chrome-text);
  }
}

@media (max-width: 767px) {
  .lth-header__inner {
    padding: 0.45rem 1rem;
    gap: 0.6rem;
  }

  .lth-header__logo-text {
    display: none;
  }

  .lth-header.is-scrolled .lth-header__logo-text {
    display: inline;
    font-size: 1rem;
  }

  .lth-header__logo--img img {
    height: 32px;
  }
}

@media (min-width: 600px) and (max-width: 1023px) {
  .wd-section {
    padding: 4rem 2rem;
  }

  .lth-section {
    padding: 4rem 2rem;
  }

  .lt-tp__hero {
    padding: 4rem 2rem 2.75rem;
  }
}

/* ═══════════════════════════════════════════════════════
   WANDERLUST HOME  (wd-*)
═══════════════════════════════════════════════════════ */

/* Tipografía base — fuente serif para títulos */
.wd-hero,
.wd-section,
.wd-cta-final {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

.wd-title,
.wd-hero__title,
.wd-dcard__title {
  font-family: Georgia, "Times New Roman", serif;
}

.wd-title em,
.wd-hero__title em {
  font-style: italic;
  font-weight: 400;
}

/* Helpers */
.wd-section {
  padding: 5rem 1.5rem;
}

.wd-section--mint {
  background: transparent;
}

.wd-section--soft {
  background: #FAF8FC;
}

.wd-section--purple {
  background: linear-gradient(135deg, #8b6cb6 0%, #6B3A96 100%);
}

.wd-section--white {
  background: #fff;
}

.wd-container {
  max-width: 1280px;
  margin: 0 auto;
  padding-inline: clamp(1rem, 4vw, 2rem);
}

.wd-eyebrow {
  display: block;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: #6B3A96;
  margin: 0 0 0.5rem;
}

.wd-eyebrow--light {
  color: rgba(255, 255, 255, 0.7);
}

.wd-title {
  font-size: clamp(2rem, 4.5vw, 3.25rem);
  font-weight: 700;
  color: #1a1028;
  letter-spacing: -0.02em;
  line-height: 1.05;
  margin: 0;
}

.wd-title--light {
  color: #fff;
}

.wd-sub {
  color: #6b6382;
  font-size: 1rem;
  line-height: 1.6;
  margin: 0.85rem 0 0;
}

.wd-head {
  margin-bottom: 2.5rem;
}

.wd-head--row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1.5rem;
}

.wd-head--center {
  text-align: center;
  max-width: 640px;
  margin: 0 auto 2.5rem;
}

/* Botones */
.wd-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.9rem;
  font-weight: 600;
  padding: 0.85em 1.85em;

  text-decoration: none;
  transition: all 0.2s;
  cursor: pointer;
  border: none;
}

.wd-btn--white {
  background: #fff;
  color: #1a1028;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
}

.wd-btn--white:hover {
  background: #f4f3f8;
  transform: translateY(-1px);
}

.wd-btn--ghost {
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.3);
}

.wd-btn--ghost:hover {
  background: rgba(255, 255, 255, 0.25);
}

/* ══ HERO ══ */
.wd-hero {
  position: relative;
  min-height: 100vh;
  max-height: 880px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* Stage del slider: imagen base + capa de strips */
.wd-hero__stage {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.wd-hero__image {
  position: absolute;
  inset: 0;
  background-color: #1C1030;
  background-size: cover;
  background-position: center;
  z-index: 1;
  will-change: transform;
}


/* Capa de strips: solo activa durante la transición */
.wd-hero__strips {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}

.wd-hero__strip {
  position: absolute;
  inset: 0;
  /* cubre TODO el stage, igual que la imagen base */
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  /* Recorta verticalmente solo la columna 1/8 que le toca al strip */
  clip-path: inset(0 calc((7 - var(--i)) * 12.5%) 0 calc(var(--i) * 12.5%));
  -webkit-clip-path: inset(0 calc((7 - var(--i)) * 12.5%) 0 calc(var(--i) * 12.5%));
  transform: translateY(0);
  transition: transform 1.1s cubic-bezier(.7, 0, .25, 1);
  transition-delay: calc(var(--i) * 0.06s);
  will-change: transform;
}

/* Salida alternada: impares hacia arriba, pares hacia abajo */
.wd-hero__strips.is-leaving .wd-hero__strip:nth-child(odd) {
  transform: translateY(-110%);
}

.wd-hero__strips.is-leaving .wd-hero__strip:nth-child(even) {
  transform: translateY(110%);
}

.wd-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0.15) 40%, rgba(0, 0, 0, 0.55) 100%);
  pointer-events: none;
  z-index: 3;
}

/* Flechas de navegación — refinadas, círculo glassmórfico fino */
.wd-hero__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  width: 54px;
  height: 54px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(20, 9, 42, 0.28);
  backdrop-filter: blur(14px) saturate(1.2);
  -webkit-backdrop-filter: blur(14px) saturate(1.2);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition:
    background 0.35s ease,
    border-color 0.35s ease,
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease;
}

.wd-hero__nav::before {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: 50%;
  padding: 1px;
  background: linear-gradient(135deg, rgba(232, 199, 235, 0.6), transparent 50%, rgba(192, 96, 188, 0.5));
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.4s ease;
}

.wd-hero__nav:hover {
  background: rgba(20, 9, 42, 0.45);
  border-color: transparent;
  box-shadow: 0 12px 32px rgba(192, 96, 188, 0.35);
}

.wd-hero__nav:hover::before {
  opacity: 1;
}

.wd-hero__nav--prev {
  left: 1.75rem;
}

.wd-hero__nav--next {
  right: 1.75rem;
}

.wd-hero__nav--prev:hover {
  transform: translateY(-50%) translateX(-3px);
}

.wd-hero__nav--next:hover {
  transform: translateY(-50%) translateX(3px);
}

.wd-hero__nav:focus-visible {
  outline: 2px solid #C060BC;
  outline-offset: 4px;
}

/* ── Dots — barras horizontales con fill JS-driven ── */
.wd-hero__dots {
  position: absolute;
  bottom: 2.25rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.35));
}

.wd-hero__dot {
  position: relative;
  width: 36px;
  height: 3px;
  border-radius: 999px;
  border: 0;
  background: rgba(255, 255, 255, 0.30);
  padding: 0;
  margin: 0;
  cursor: pointer;
  overflow: hidden;
  transition:
    width 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    background 0.3s ease;
}

.wd-hero__dot:hover {
  background: rgba(255, 255, 255, 0.55);
}

.wd-hero__dot:focus-visible {
  outline: 2px solid #C060BC;
  outline-offset: 4px;
}

.wd-hero__dot.is-active {
  width: 72px;
  background: rgba(255, 255, 255, 0.22);
}

/* Fill: scaleX driven por requestAnimationFrame en view.js */
.wd-hero__dot-fill {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #E8C7EB, #C060BC 50%, #6B3A96);
  transform: scaleX(0);
  transform-origin: left center;
  border-radius: 999px;
  will-change: transform;
}

/* ── Edge decorativo: línea vertical fina derecha + brand mark sutil ── */
.wd-hero__edge {
  position: absolute;
  top: 50%;
  right: 1.25rem;
  transform: translateY(-50%);
  width: 1px;
  height: 28%;
  background: linear-gradient(180deg, transparent, rgba(255, 255, 255, 0.22), transparent);
  z-index: 4;
  pointer-events: none;
}

.wd-hero__edge::before,
.wd-hero__edge::after {
  content: "";
  position: absolute;
  left: 50%;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(232, 199, 235, 0.6);
  transform: translateX(-50%);
  box-shadow: 0 0 12px rgba(192, 96, 188, 0.6);
}

.wd-hero__edge::before {
  top: -8px;
}

.wd-hero__edge::after {
  bottom: -8px;
  opacity: 0.4;
}

/* ── Indicador "Scroll" abajo-izquierda ── */
.wd-hero__scroll {
  position: absolute;
  bottom: 2.4rem;
  left: 2.2rem;
  z-index: 5;
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  color: rgba(255, 255, 255, 0.7);
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  pointer-events: none;
}

.wd-hero__scroll-line {
  position: relative;
  display: inline-block;
  width: 56px;
  height: 1px;
  background: rgba(255, 255, 255, 0.22);
  overflow: hidden;
}

.wd-hero__scroll-line::after {
  content: "";
  position: absolute;
  top: 0;
  left: -40%;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(232, 199, 235, 0.95), transparent);
  animation: lt-hero-scroll-pulse 2.6s cubic-bezier(0.6, 0.05, 0.4, 0.95) infinite;
}

@keyframes lt-hero-scroll-pulse {
  0% {
    left: -40%;
  }

  60% {
    left: 100%;
  }

  100% {
    left: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .wd-hero__dot.is-active .wd-hero__dot-fill {
    animation: none;
    transform: scaleX(1);
  }

  .wd-hero__scroll-line::after {
    animation: none;
  }
}

.wd-hero__inner {
  position: relative;
  z-index: 4;
  text-align: center;
  max-width: 820px;
  padding: 4rem 2rem;
}

/* ──────────────────────────────────────────────
   Animaciones premium del texto del hero
   Cada elemento tiene su propio keyframe + easing.
   Disparadas al cargar y en cada cambio de slide.
─────────────────────────────────────────────── */

/* Eyebrow: cae corto con blur sutil */
@keyframes wdEyebrowIn {
  0% {
    opacity: 0;
    transform: translateY(-22px);
    filter: blur(6px);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
  }
}

/* Título: cae con peso, micro-scale + blur fuerte que se aclara */
@keyframes wdTitleIn {
  0% {
    opacity: 0;
    transform: translateY(-48px) scale(1.04);
    filter: blur(12px);
    letter-spacing: 0.04em;
  }

  60% {
    opacity: 1;
    filter: blur(0);
  }

  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
    letter-spacing: -0.025em;
  }
}

/* Subtítulo: descenso ligero con blur */
@keyframes wdSubIn {
  0% {
    opacity: 0;
    transform: translateY(-18px);
    filter: blur(4px);
  }

  100% {
    opacity: 0.85;
    transform: translateY(0);
    filter: blur(0);
  }
}

/* Frase italic: aparece grácil */
@keyframes wdPhraseIn {
  0% {
    opacity: 0;
    transform: translateY(-26px) scale(0.98);
    filter: blur(6px);
  }

  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
  }
}

/* CTA: cae con peso y rebote sutil */
@keyframes wdCtaIn {
  0% {
    opacity: 0;
    transform: translateY(-44px) scale(0.85);
  }

  55% {
    opacity: 1;
    transform: translateY(6px) scale(1.03);
  }

  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* Subline: el último, casi se desliza en el aire */
@keyframes wdSublineIn {
  0% {
    opacity: 0;
    transform: translateY(-12px);
    letter-spacing: 0.06em;
  }

  100% {
    opacity: 0.7;
    transform: translateY(0);
    letter-spacing: 0.02em;
  }
}

/* Brillo barrido sobre el título (capa decorativa) */
@keyframes wdTitleShine {
  0% {
    background-position: -200% 0;
  }

  100% {
    background-position: 200% 0;
  }
}





.wd-hero__eyebrow {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: rgba(255, 255, 255, 0.85);
  border: none;
  background: transparent;
  padding: 0;
  margin-bottom: 1.5rem;
}

.wd-hero__title {
  font-size: clamp(2.5rem, 6vw, 4.75rem);
  font-weight: 700;
  color: #fff;
  line-height: 1.05;
  letter-spacing: -0.025em;
  margin: 0 0 1rem;
}

.wd-hero__sub {
  font-size: clamp(0.95rem, 1.4vw, 1.1rem);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.85);
  margin: 0 0 1.75rem;
}

.wd-hero__phrase {
  font-family: Georgia, serif;
  font-style: italic;
  font-size: clamp(1.1rem, 1.8vw, 1.4rem);
  color: #fff;
  line-height: 1.4;
  margin: 1.5rem auto 1.5rem;
  max-width: 620px;
  font-weight: 400;
  letter-spacing: -0.005em;
}

.wd-hero__ctas {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
}

/* ── Hero CTA: editorial underline-grow (igual a wd-dcard__cta) ── */
.wd-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  padding: 0.55em 0;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.78rem;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  font-weight: 700;
  color: #fff;
  text-decoration: none;
  background: transparent;
  border: 0;
  box-shadow: none;
  border-radius: 0;
  position: relative;
  cursor: pointer;
  transition: gap 0.35s cubic-bezier(0.22, 1, 0.36, 1), color 0.3s ease;
}

.wd-hero__cta::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 28px;
  height: 1.5px;
  background: linear-gradient(90deg, #E8C7EB, #C060BC);
  transform: translateX(-50%);
  transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.wd-hero__cta svg {
  width: 14px;
  height: 14px;
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
  opacity: 0.85;
}

.wd-hero__cta:hover {
  gap: 0.85em;
  color: #fff;
  background: transparent;
  transform: none;
}

.wd-hero__cta:hover::after {
  width: 100%;
}

.wd-hero__cta:hover svg {
  transform: translateX(4px);
  opacity: 1;
}

.wd-hero__subline {
  font-size: 0.78rem;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.7);
  letter-spacing: 0.04em;
  margin: 0.65rem 0 0;
}

/* ══ DESTINOS asimétrico — premium ══ */
.wd-destinos {
  position: relative;
  overflow: hidden;
}

/* Aurora sutil de fondo */
.wd-destinos::before {
  content: "";
  position: absolute;
  inset: -20% -10% auto -10%;
  height: 70%;
  background:
    radial-gradient(45% 55% at 80% 25%, rgba(192, 96, 188, 0.10) 0%, transparent 70%),
    radial-gradient(40% 50% at 15% 60%, rgba(107, 58, 150, 0.10) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
  filter: blur(30px);
}

.wd-destinos>.wd-container {
  position: relative;
  z-index: 1;
}

/* ── Head con entrada animada ── */
.wd-destinos .wd-head,
.wd-destinos .wd-filters {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.wd-destinos .wd-head.is-visible,
.wd-destinos .wd-filters.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-destinos .wd-filters {
  transition-delay: 0.12s;
}

/* ── Filtros — pills premium con indicador deslizante ── */
.wd-filters {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 5px;
  background: rgba(255, 255, 255, 0.78);
  border: 1px solid rgba(107, 58, 150, 0.12);
  border-radius: 999px;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow:
    0 2px 6px rgba(36, 0, 96, 0.04),
    0 12px 28px rgba(36, 0, 96, 0.07);
}

.wd-filters--center {
  display: flex;
  width: fit-content;
  justify-content: center;
  margin: 0 auto 2.4rem;
}

.wd-pill {
  background: transparent;
  border: 0;
  color: #5a4f72;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.78rem;
  font-weight: 600;
  padding: 0.55em 1.3em;
  border-radius: 999px;
  cursor: pointer;
  position: relative;
  transition: color 0.28s ease;
  letter-spacing: 0.025em;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
}

.wd-pill>span {
  position: relative;
  z-index: 2;
}

/* Punto indicador (oculto por default, visible en --active) */
.wd-pill::after {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: currentColor;
  opacity: 0;
  transform: translateX(-3px);
  transition: opacity 0.28s ease, transform 0.28s ease;
  order: -1;
  position: relative;
  z-index: 2;
}

.wd-pill::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  opacity: 0;
  transform: scale(0.85);
  transition: opacity 0.32s ease, transform 0.32s ease;
  z-index: 1;
}

.wd-pill:hover {
  color: #6B3A96;
}

.wd-pill:hover::before {
  opacity: 0.10;
  transform: scale(1);
}

.wd-pill--active {
  color: #fff;
}

.wd-pill--active::before {
  opacity: 1;
  transform: scale(1);
  box-shadow: 0 6px 18px rgba(107, 58, 150, 0.32);
}

.wd-pill--active::after {
  opacity: 1;
  transform: translateX(0);
}

/* ── Grid asimétrico cíclico ── */
.wd-dgrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: clamp(220px, 26vw, 280px);
  grid-auto-flow: dense;
  gap: 18px;
  position: relative;
}

.wd-dgrid__empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 3rem 1rem;
  color: rgba(36, 0, 96, 0.55);
  font-style: italic;
  font-size: 0.95rem;
}

/* ── Card premium (editorial) ── */
.wd-dcard {
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  background-color: #1C1030;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 0;
  isolation: isolate;
  box-shadow:
    0 1px 2px rgba(28, 16, 48, 0.12),
    0 12px 30px rgba(28, 16, 48, 0.14),
    0 28px 56px rgba(28, 16, 48, 0.10);
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.55s ease;
}

/* Sin gradiente: el notch glass se encarga del contraste del texto */

.wd-dcard.is-visible {
  opacity: 1;
  transition-delay: var(--wd-delay, 0ms);
}

/* Filtrado: cards fuera */
.wd-dcard.is-out {
  opacity: 0;
  transform: scale(0.92);
  pointer-events: none;
  display: none;
}

.wd-dcard:hover {
  transform: translateY(-12px);
  box-shadow:
    0 2px 4px rgba(28, 16, 48, 0.14),
    0 18px 36px rgba(36, 0, 96, 0.22),
    0 38px 70px rgba(36, 0, 96, 0.30);
}

.wd-dcard--big {
  grid-row: span 2;
}

.wd-dcard--small,
.wd-dcard--wide {
  /* spans inline desde render.php */
}



/* ── Imagen como capa propia (Ken Burns idle + zoom intensificado en hover) ── */
.wd-dcard__media {
  position: absolute;
  inset: -4%;
  background-size: cover;
  background-position: center;
  background-color: #1C1030;
  z-index: 0;
  transform: scale(1);
  transition: transform 0.9s cubic-bezier(0.22, 0.61, 0.36, 1), filter 0.6s ease;
  will-change: transform;
  filter: saturate(1.05);
  animation: wd-kenburns 22s ease-in-out infinite alternate;
}

.wd-dcard:hover .wd-dcard__media {
  transform: scale(1.10);
  filter: saturate(1.22) brightness(1.05);
  animation-play-state: paused;
}

@keyframes wd-kenburns {
  0% {
    transform: scale(1) translate(0, 0);
  }

  100% {
    transform: scale(1.06) translate(-1.5%, -1%);
  }
}

/* Overlay desactivado — el gradiente cinematográfico está en .wd-dcard::before */
.wd-dcard__overlay {
  display: none;
}

/* Línea de acento removida — el notch ya separa visualmente */

.wd-dcard__top,
.wd-dcard__bottom {
  position: relative;
  z-index: 3;
}

.wd-dcard__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 1.4rem 1.4rem 0;
}

/* Bottom como notch tipo iPhone — anclado al borde inferior */
.wd-dcard__bottom {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  grid-auto-rows: auto;
  justify-items: center;
  text-align: center;
  align-self: flex-end;
  width: fit-content;
  max-width: calc(100% - 1.5rem);
  margin: auto auto 0;
  padding: 0.95rem 1.4rem 0.95rem;
  row-gap: 0.55rem;
  /* Sin background propio — lo maneja el ::before */
  border-bottom: 0;
}

/* Fondo glass como pseudo-elemento independiente (se puede animar sin mover el CTA) */
.wd-dcard__bottom::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: rgb(120 81 237 / 42%);
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-bottom: 0;
  border-radius: 20px 20px 0 0;
  box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.25);
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.35s ease;
}

/* Kicker en fila 1 */
.wd-dcard__bottom .wd-dcard__kicker {
  grid-row: 1;
  margin-bottom: 0;
  transition: opacity 0.35s ease, transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Título en fila 2 */
.wd-dcard__bottom .wd-dcard__title {
  grid-row: 2;
  grid-column: 1;
  margin: 0;
  max-width: 22ch;
  transition: opacity 0.35s ease, transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

/* CTA en fila 3 — siempre visible */
.wd-dcard__bottom .wd-dcard__cta {
  grid-row: 3;
  grid-column: 1;
  margin: 0;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
    font-size 0.35s ease;
}

/* ── Hover: glass se desliza abajo, texto baja, CTA sube y crece ── */
.wd-dcard:hover .wd-dcard__bottom::before {
  transform: translateY(100%);
  opacity: 0;
}

.wd-dcard:hover .wd-dcard__bottom .wd-dcard__kicker {
  opacity: 0;
  transform: translateY(50px);
}

.wd-dcard:hover .wd-dcard__bottom .wd-dcard__title {
  opacity: 0;
  transform: translateY(50px);
}

/* CTA sube y crece — no afectado por el ::before */
.wd-dcard:hover .wd-dcard__bottom .wd-dcard__cta {
  transform: translateY(-1.6rem);
  font-size: 0.85rem;
}

/* ── Tarjetas no-big: notch compacto para no tapar la imagen ── */
.wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom {
  padding: 0.6rem 1rem 0.55rem;
  row-gap: 0.25rem;
  border-radius: 14px 14px 0 0;
}

.wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom .wd-dcard__kicker {
  font-size: 0.52rem;
  letter-spacing: 0.28em;
}

.wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom .wd-dcard__title {
  font-size: clamp(1rem, 1.6vw, 1.28rem);
  line-height: 1.15;
  max-width: 18ch;
}

.wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom .wd-dcard__cta {
  font-size: 0.58rem;
  padding: 0.3em 0;
}

/* Small cards: el CTA crece un poco más al hover */
.wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide):hover .wd-dcard__bottom .wd-dcard__cta {
  font-size: 0.72rem;
}

/* ── Duración: chip glassmórfico fino ── */
.wd-dcard__loc {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.10);
  backdrop-filter: blur(16px) saturate(1.2);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  color: rgba(255, 255, 255, 0.95);
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.66rem;
  font-weight: 600;
  padding: 0.45em 0.85em;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.wd-dcard__loc svg {
  opacity: 0.8;
}

/* ── Número editorial: tipo magazine, grande y outline ── */
.wd-dcard__num {
  color: rgba(255, 255, 255, 0.85);
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.65rem;
  font-weight: 500;
  font-style: italic;
  line-height: 1;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  position: relative;
  padding-left: 0.55rem;
}

.wd-dcard__num::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 1px;
  height: 60%;
  background: rgba(255, 255, 255, 0.4);
  transform: translateY(-50%);
}

/* ── Kicker minimalista: solo texto, sin líneas ── */
.wd-dcard__kicker {
  display: inline-block;
  color: #FFD66B;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.36em;
  text-transform: uppercase;
  margin-bottom: 0.7rem;
}

/* ── Título Cormorant Garamond — protagonista ── */
.wd-dcard__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.7rem, 2.6vw, 2.4rem);
  font-weight: 600;
  color: #fff;
  line-height: 1.04;
  margin: 0 0 0.8rem;
  letter-spacing: -0.015em;
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.45);
  max-width: 22ch;
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.wd-dcard:hover .wd-dcard__title {
  transform: translateY(-2px);
}



.wd-dcard--big .wd-dcard__title {
  font-size: clamp(2rem, 3.2vw, 3rem);
  font-weight: 500;
}

/* ── CTA underline-grow editorial — siempre visible ── */
.wd-dcard__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  margin-top: 0.5rem;
  padding: 0.45em 0;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.7rem;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  font-weight: 700;
  color: #fff;
  background: transparent;
  border: 0;
  box-shadow: none;
  border-radius: 0;
  position: relative;
  isolation: isolate;
  opacity: 1;
  transition: gap 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    color 0.3s ease;
}

/* Línea inferior que crece en hover */
.wd-dcard__cta::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 22px;
  height: 1.5px;
  background: linear-gradient(90deg, #C060BC, #6B3A96);
  transform: translateX(-50%);
  transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.3s ease;
}

/* Pill glass del CTA — invisible en idle, aparece al hacer hover */
.wd-dcard__cta::before {
  content: "";
  display: block;
  position: absolute;
  inset: -0.35em -1em;
  border-radius: 999px;
  background: rgb(0 19 171 / 42%);
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
  border: 1px solid rgba(255, 255, 255, 0.10);
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.28);
  opacity: 0;
  transform: scale(0.85);
  transition: opacity 0.4s ease,
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
  z-index: -1;
  pointer-events: none;
}

.wd-dcard__cta svg {
  width: 14px;
  height: 14px;
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
  opacity: 0.85;
}

.wd-dcard:hover .wd-dcard__cta {
  gap: 0.85em;
}

.wd-dcard:hover .wd-dcard__cta::after {
  width: 100%;
}

.wd-dcard:hover .wd-dcard__cta::before {
  opacity: 1;
  transform: scale(1);
}

.wd-dcard:hover .wd-dcard__cta svg {
  transform: translateX(4px);
  opacity: 1;
}

/* Focus ring para accesibilidad */
.wd-dcard:focus-visible {
  outline: 2px solid #C060BC;
  outline-offset: 4px;
}

@media (prefers-reduced-motion: reduce) {

  .wd-dcard,
  .wd-dcard__media,
  .wd-dcard__shine,
  .wd-dcard__overlay,
  .wd-dcard__cta,
  .wd-dcard__cta-arrow {
    transition: none !important;
    animation: none !important;
  }

  .wd-dcard {
    opacity: 1;
    transform: none;
  }

  .wd-dcard__cta {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ══ FILOSOFÍA ══ */

/* Parallax background (cuando se configura una imagen) */
.wd-section--has-bg {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.wd-phi__bg {
  position: absolute;
  inset: -60% 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  will-change: transform;
  transform: translate3d(0, 0, 0);
  pointer-events: none;
}

.wd-phi__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(60% 40% at 75% 20%, rgba(192, 96, 188, 0.18), transparent 60%),
    radial-gradient(50% 40% at 20% 80%, rgba(133, 133, 204, 0.14), transparent 60%),
    linear-gradient(180deg,
      rgba(10, 4, 22, 0.55) 0%,
      rgba(12, 4, 28, 0.50) 50%,
      rgba(8, 2, 18, 0.58) 100%);
  pointer-events: none;
}

.wd-section--has-bg .wd-container,
.wd-section--has-bg .wd-phi-belt {
  position: relative;
  z-index: 2;
}

/* Orbes decorativos cuando NO hay imagen de fondo */
.wd-section--purple:not(.wd-section--has-bg) {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.wd-section--purple:not(.wd-section--has-bg)::before,
.wd-section--purple:not(.wd-section--has-bg)::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
  filter: blur(40px);
}

.wd-section--purple:not(.wd-section--has-bg)::before {
  width: 520px;
  height: 520px;
  top: -180px;
  right: -140px;
  background: radial-gradient(circle, rgba(192, 96, 188, 0.20), transparent 65%);
  animation: lt-phi-float 16s ease-in-out infinite;
}

.wd-section--purple:not(.wd-section--has-bg)::after {
  width: 460px;
  height: 460px;
  bottom: -160px;
  left: -120px;
  background: radial-gradient(circle, rgba(133, 133, 204, 0.18), transparent 65%);
  animation: lt-phi-float 20s ease-in-out infinite reverse;
}

.wd-section--purple:not(.wd-section--has-bg)>.wd-container {
  position: relative;
  z-index: 2;
}

@keyframes lt-phi-float {

  0%,
  100% {
    transform: translate(0, 0) scale(1);
  }

  50% {
    transform: translate(20px, -22px) scale(1.06);
  }
}

.wd-phi {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4rem;
}

.wd-phi__left {
  text-align: center;
  max-width: 720px;
  position: relative;
}

/* Línea vertical decorativa arriba del copy */
.wd-phi__left::before {
  content: "";
  display: block;
  width: 1px;
  height: 32px;
  margin: 0 auto 1.5rem;
  background: linear-gradient(180deg, transparent, rgba(192, 96, 188, 0.7));
}

/* Eyebrow — lavender/orchid sobre fondo morado */
.wd-section--purple .wd-eyebrow--light {
  color: #C8B8E8;
  letter-spacing: 0.32em;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
}

/* Title — Cormorant Garamond editorial */
.wd-section--purple .wd-title--light {
  color: #fff;
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-weight: 500;
  letter-spacing: -0.018em;
  line-height: 1.05;
}

.wd-section--purple .wd-title--light em {
  font-style: italic;
  font-weight: 500;
  background: linear-gradient(90deg,
      #E8C7EB 0%, #C060BC 18%, #8585CC 36%,
      #B8AAEE 50%, #E8C7EB 64%, #C060BC 82%, #8585CC 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: lt-iridescent 4s linear infinite;
}

/* Sub-texto e pills sobre fondo morado */
.wd-section--purple .wd-sub {
  color: rgba(255, 255, 255, 0.65);
}

.wd-section--purple .wd-pill:not(.wd-pill--active) {
  color: rgba(255, 255, 255, 0.78);
}

.wd-section--purple .wd-pill:not(.wd-pill--active):hover {
  color: #fff;
}

/* Paragraphs — bright, legible on dark photo bg */
.wd-phi__p {
  color: rgba(238, 230, 252, 0.92);
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 1.06rem;
  line-height: 1.88;
  margin: 0 0 1.35rem;
  font-weight: 400;
}

/* Drop-cap-style: primer párrafo con primera letra más grande en serif */
.wd-phi__p:first-of-type::first-letter {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 2.6em;
  font-weight: 500;
  font-style: italic;
  float: left;
  line-height: 0.85;
  margin: 0.18em 0.18em 0 0;
  color: #E8C7EB;
  text-shadow: 0 2px 14px rgba(192, 96, 188, 0.4);
}

/* Justifica left para que el drop-cap se vea bien */
.wd-phi__p:first-of-type {
  text-align: left;
}

/* Read-more — underline-grow editorial (mismo lenguaje que destinos) */
.wd-phi__link {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  color: #fff;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.28em;
  border: 0;
  border-radius: 0;
  padding: 0.5em 0;
  margin-top: 1.25rem;
  background: transparent;
  position: relative;
  transition: gap 0.35s cubic-bezier(0.22, 1, 0.36, 1), color 0.3s ease;
}

.wd-phi__link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 28px;
  height: 1.5px;
  background: linear-gradient(90deg, #E8C7EB, #C060BC);
  transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.wd-phi__link:hover {
  background: transparent;
  color: #fff;
  gap: 0.95em;
}

.wd-phi__link:hover::after {
  width: 100%;
}

.wd-phi__link svg {
  width: 14px;
  height: 14px;
  opacity: 0.85;
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.3s ease;
}

.wd-phi__link:hover svg {
  transform: translateX(5px);
  opacity: 1;
}

/* ══ Philosophy — sección compacta ══ */

.wp-block-lagunastravel-philosophy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: 4.5rem;
  padding-bottom: 4rem;
  overflow: hidden;
}

/* ══ Philosophy — cabecera ══ */

.wd-phi__hd {
  text-align: center;
  max-width: 820px;
  margin: 0 auto 2.5rem;
}

/* Eyebrow override dentro de esta sección */
.wd-phi__hd .wd-eyebrow--light {
  color: #E8C7EB;
  letter-spacing: 0.42em;
  font-size: 0.95rem;
  font-weight: 700;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
}

.wd-phi__subtitle {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.8rem, 3.4vw, 2.85rem);
  font-weight: 500;
  color: #fff;
  line-height: 1.15;
  letter-spacing: -0.012em;
  margin: 1rem 0 0;
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.55);
}

/* ══ Philosophy — cinta/marquee ══ */

.wd-phi-belt {
  position: relative;
  width: auto;
  margin-left: -1.5rem;
  margin-right: -1.5rem;
  overflow-x: clip;
  overflow-y: visible;
  padding: 3.5rem 0 4rem;
}

/* Degradados de borde */
.wd-phi-belt__fade {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 200px;
  z-index: 2;
  pointer-events: none;
}

.wd-phi-belt__fade--l {
  left: 0;
  background: linear-gradient(90deg, #160B2C 20%, transparent 100%);
}

.wd-phi-belt__fade--r {
  right: 0;
  background: linear-gradient(-90deg, #160B2C 20%, transparent 100%);
}

/* Cuando hay imagen de fondo, ocultamos los fades laterales (el overlay general ya tiñe la sección) */
.wd-section--has-bg .wd-phi-belt__fade--l,
.wd-section--has-bg .wd-phi-belt__fade--r {
  display: none;
}

/* Pista animada */
.wd-phi-belt__track {
  display: flex;
  gap: 1.5rem;
  width: max-content;
  animation: phi-belt 35s linear infinite;
  will-change: transform;
  padding: 0.75rem 0;
}

.wd-phi-belt:hover .wd-phi-belt__track {
  animation-play-state: paused;
}

@keyframes phi-belt {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-50%);
  }
}

/* Card: giro de espejo (180°) + escala */
@keyframes phi-flip {
  0% {
    transform: scale(1) rotateY(0deg);
  }

  100% {
    transform: scale(1.45) rotateY(180deg);
  }
}

/* Texto: contra-rota -180° para quedar legible + fade en el punto ciego */
@keyframes phi-text-counter {
  0% {
    transform: rotateY(0deg);
    opacity: 1;
  }

  35% {
    transform: rotateY(-90deg);
    opacity: 0;
  }

  65% {
    transform: rotateY(-90deg);
    opacity: 0;
  }

  100% {
    transform: rotateY(-180deg);
    opacity: 1;
  }
}


@media (prefers-reduced-motion: reduce) {
  .wd-phi-belt__track {
    animation: none;
  }
}

/* Wrapper — se queda plano, mantiene el hover zone */
.wd-phi-belt__card-wrap {
  flex-shrink: 0;
  width: 300px;
  perspective: 1200px;
  position: relative;
  z-index: 1;
}

/* Efecto ola: pares arriba, impares abajo */
.wd-phi-belt__card-wrap:nth-child(even) {
  transform: translateY(-22px);
}

.wd-phi-belt__card-wrap:nth-child(odd) {
  transform: translateY(22px);
}

/* Tarjeta */
.wd-phi-belt__card {
  width: 100%;
  background: #180C35;
  border-radius: 16px;
  padding: 1.75rem 1.4rem 1.5rem;
  text-align: center;
  cursor: default;
  position: relative;
  overflow: hidden;
  transform-style: preserve-3d;
  transform: scale(1) rotateY(0deg);
  transition: transform 0.45s ease-out,
    border-color 0.45s ease,
    box-shadow 0.45s ease;
}

/* Tarjeta con imagen: fondo neutro */
.wd-phi-belt__card.has-card-img {
  background-color: #000;
}

/* Imagen de fondo via CSS custom property */
.wd-phi-belt__card.has-card-img {
  background-image: var(--card-bg);
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 340px;
  padding: 0;
}

/* Sin overlay oscuro: dejamos la imagen brillante */
.wd-phi-belt__card.has-card-img::before {
  display: none !important;
}

/* Notch tipo cristal — strip inferior, flush al borde de la tarjeta */
.wd-phi-belt__notch {
  position: relative;
  z-index: 2;
  padding: 0.95rem 1.1rem 1rem;
  background: rgba(10, 6, 22, 0.42);
  backdrop-filter: blur(18px) saturate(1.1);
  -webkit-backdrop-filter: blur(18px) saturate(1.1);
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  transition: background 0.4s ease;
}

.wd-phi-belt:hover .wd-phi-belt__card-wrap:hover .wd-phi-belt__notch,
.wd-phi-belt__card-wrap.is-active .wd-phi-belt__notch {
  background: rgba(10, 6, 22, 0.58);
}

/* Tipografía minimalista dentro del notch */
.wd-phi-belt__notch .wd-phi-belt__title {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #fff;
  margin: 0 0 0.35rem;
  line-height: 1.25;
}

.wd-phi-belt__notch .wd-phi-belt__desc {
  font-size: 0.82rem;
  color: rgba(255, 255, 255, 0.78);
  line-height: 1.5;
  -webkit-line-clamp: 3;
}

/* ::before — overlay oscuro siempre (cubre la imagen para que el texto se lea) */
.wd-phi-belt__card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(8, 2, 20, 0.72);
  transition: background 0.5s ease;
  z-index: 0;
}

/* Sin imagen: ::before es la línea accent superior */
.wd-phi-belt__card:not(.has-card-img)::before {
  inset: auto;
  top: 0;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, transparent, #C060BC 40%, #8585CC 60%, transparent);
  opacity: 0.7;
}

/* ::after deshabilitado: ya no oscurecemos la tarjeta en hover */
.wd-phi-belt__card.has-card-img::after {
  display: none !important;
}

/* Hover tarjeta — sin imagen */
.wd-phi-belt:hover .wd-phi-belt__card-wrap:hover .wd-phi-belt__card:not(.has-card-img),
.wd-phi-belt__card-wrap.is-active .wd-phi-belt__card:not(.has-card-img) {
  border-color: rgba(192, 96, 188, 0.65);
  transform: scale(1.45) rotateY(180deg);
  box-shadow: 0 28px 72px rgba(192, 96, 188, 0.32),
    0 0 0 1px rgba(192, 96, 188, 0.4);
}

/* Hover tarjeta — CON imagen */
.wd-phi-belt:hover .wd-phi-belt__card-wrap:hover .wd-phi-belt__card.has-card-img,
.wd-phi-belt__card-wrap.is-active .wd-phi-belt__card.has-card-img {
  border-color: rgba(255, 255, 255, 0.22);
  transform: scale(1.45) rotateY(180deg);
  box-shadow: 0 28px 72px rgba(0, 0, 0, 0.5);
}

/* Texto: contra-rotación para que termine legible al final del flip */
.wd-phi-belt__title,
.wd-phi-belt__desc {
  transform: rotateY(0deg);
  transition: transform 0.45s ease-out;
}

.wd-phi-belt:hover .wd-phi-belt__card-wrap:hover .wd-phi-belt__title,
.wd-phi-belt:hover .wd-phi-belt__card-wrap:hover .wd-phi-belt__desc,
.wd-phi-belt__card-wrap.is-active .wd-phi-belt__title,
.wd-phi-belt__card-wrap.is-active .wd-phi-belt__desc {
  transform: rotateY(-180deg);
}

/* Z-index del wrapper en hover/activo */
.wd-phi-belt:hover .wd-phi-belt__card-wrap:hover,
.wd-phi-belt__card-wrap.is-active {
  z-index: 20;
}

/* Mobile: reducir el scale del estado activo para que la tarjeta
   quepa en el viewport una vez centrada por el JS (touch).
   También estrechamos el wrap para dejar margen en pantallas chicas. */
@media (pointer: coarse),
(max-width: 768px) {
  .wd-phi-belt__card-wrap {
    width: min(260px, 72vw);
  }

  .wd-phi-belt__card.has-card-img {
    min-height: 300px;
  }

  .wd-phi-belt__card-wrap.is-active .wd-phi-belt__card:not(.has-card-img),
  .wd-phi-belt__card-wrap.is-active .wd-phi-belt__card.has-card-img {
    transform: scale(1.15) rotateY(180deg);
  }
}

/* Hover: ya no aplicamos overlay oscuro (la imagen siempre se ve nítida) */

/* Contenido sobre los pseudoelementos */
.wd-phi-belt__title,
.wd-phi-belt__desc {
  position: relative;
  z-index: 1;
}

/* Título */
.wd-phi-belt__title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.35rem;
  font-weight: 600;
  color: #FFFFFF;
  margin: 0 0 0.6rem;
  line-height: 1.2;
  letter-spacing: -0.01em;
}

/* Descripción */
.wd-phi-belt__desc {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 0.875rem;
  color: rgba(200, 184, 232, 0.85);
  line-height: 1.6;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ══ Philosophy — editor overrides ══ */

.lt-philosophy-edit.wp-block-lagunastravel-philosophy {
  padding-bottom: 2rem;
}

.lt-philosophy-edit .wd-phi-belt__card .wd-phi-belt__title,
.lt-philosophy-edit .wd-phi-belt__card .wd-phi-belt__desc {
  color: rgba(255, 255, 255, 0.95);
  position: relative;
  z-index: 2;
}

/* ══ Destinos-grid — editor overlays ══ */

.lt-destinos-grid-edit .wd-dcard {
  position: relative;
  overflow: hidden;
  cursor: default;
}

/* Capas decorativas: NO interceptan eventos del mouse */
.lt-destinos-grid-edit .wd-dcard__media,
.lt-destinos-grid-edit .wd-dcard__overlay,
.lt-destinos-grid-edit .wd-dcard__top,
.lt-destinos-grid-edit .wd-dcard__bottom {
  pointer-events: none;
}

/* Size + reorder toolbar — siempre visible */
.lt-destinos-grid-edit .wd-edit-tools {
  position: absolute;
  bottom: 0.5rem;
  right: 0.5rem;
  z-index: 30;
  display: flex;
  gap: 0.2rem;
  align-items: center;
  padding: 0.25rem;
  background: rgba(28, 16, 48, 0.92);
  border-radius: 4px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0.9;
  transition: opacity 0.18s ease;
  pointer-events: auto;
}

.lt-destinos-grid-edit .wd-dcard:hover .wd-edit-tools,
.lt-destinos-grid-edit .wd-dcard:focus-within .wd-edit-tools {
  opacity: 1;
}

.lt-destinos-grid-edit .wd-edit-tools .components-button {
  color: #fff;
  min-width: 26px;
  height: 26px;
  padding: 0;
}

.lt-destinos-grid-edit .wd-edit-tools .components-button:hover:not(:disabled) {
  color: #fff;
  background: rgba(255, 255, 255, 0.18);
}

.lt-destinos-grid-edit .wd-edit-tools .components-button:disabled {
  opacity: 0.35;
}

.lt-destinos-grid-edit .wd-edit-tools__sep {
  width: 1px;
  height: 18px;
  background: rgba(255, 255, 255, 0.2);
  margin: 0 0.1rem;
}

.lt-destinos-grid-edit .wd-edit-tools__lbl {
  display: inline-flex;
  align-items: center;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.65);
  padding: 0 0.2rem;
}


/* ══ CTA FINAL del Home (editorial dark · aurora · botones rectangulares) ══ */
.wd-cta-final {
  position: relative;
  padding: clamp(4.5rem, 10vw, 8rem) 1.5rem;
  overflow: hidden;
  isolation: isolate;
  background-color: var(--wp--preset--color--fondo-oscuro);
  color: var(--wp--preset--color--texto-claro);
  text-align: center;
}

.wd-cta-final__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: -3;
  opacity: 0.45;
  filter: saturate(0.85);
}

.wd-cta-final__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(28, 16, 48, 0.96) 0%, rgba(74, 36, 120, 0.78) 50%, rgba(28, 16, 48, 0.96) 100%);
  z-index: -2;
  pointer-events: none;
}

.wd-cta-final--has-img .wd-cta-final__overlay {
  background: linear-gradient(180deg, rgba(28, 16, 48, 0.88) 0%, rgba(74, 36, 120, 0.6) 50%, rgba(28, 16, 48, 0.92) 100%);
}

.wd-cta-final__aurora {
  position: absolute;
  top: -30%;
  left: 50%;
  width: 80%;
  height: 120%;
  transform: translateX(-50%);
  background:
    radial-gradient(closest-side, rgba(192, 96, 188, 0.3) 0%, transparent 70%),
    radial-gradient(closest-side, rgba(133, 133, 204, 0.2) 0%, transparent 70%) 30% 70% / 60% 60% no-repeat;
  filter: blur(50px);
  z-index: -1;
  pointer-events: none;
}

.wd-cta-final__inner {
  position: relative;
  max-width: 760px;
  margin: 0 auto;
}

.wd-cta-final__eyebrow {
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--wp--preset--color--secundario);
  margin: 0 0 1.5rem;
}

.wd-cta-final__title {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.5rem, 5.5vw, 4rem);
  font-weight: 400;
  color: var(--wp--preset--color--texto-claro);
  letter-spacing: -0.015em;
  line-height: 1.05;
  margin: 0 0 1.5rem;
}

.wd-cta-final__title em {
  font-style: italic;
  font-weight: 400;
  background: linear-gradient(135deg, var(--wp--preset--color--secundario) 0%, var(--wp--preset--color--acento-azul-claro) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

.wd-cta-final__sub {
  font-size: 1.05rem;
  line-height: 1.7;
  color: rgba(247, 244, 255, 0.8);
  margin: 0 auto 2.5rem;
  max-width: 52ch;
}

.wd-cta-final__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.85rem 1rem;
  margin-bottom: 2rem;
}

.wd-cta-final__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 1rem 2rem;
  border: 1px solid transparent;
  font-family: inherit;
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}

.wd-cta-final__btn svg {
  transition: transform 0.25s ease;
}

.wd-cta-final__btn--wa {
  border-radius: 33px;
  background: #25D366;
  color: #fff;
  border-color: #25D366;
}

.wd-cta-final__btn--wa:hover,
.wd-cta-final__btn--wa:focus {
  background: #1FBF5C;
  border-color: #1FBF5C;
  transform: translateY(-1px);
}

.wd-cta-final__btn--ghost {
  border-radius: 33px;
  background: transparent;
  color: var(--wp--preset--color--texto-claro);
  border-color: rgba(247, 244, 255, 0.4);
}

.wd-cta-final__btn--ghost:hover,
.wd-cta-final__btn--ghost:focus {
  background: var(--wp--preset--color--texto-claro);
  color: var(--wp--preset--color--fondo-oscuro);
  border-color: var(--wp--preset--color--texto-claro);
}

.wd-cta-final__btn--ghost:hover svg,
.wd-cta-final__btn--ghost:focus svg {
  transform: translateX(3px);
}

.wd-cta-final__foot {
  font-size: 0.72rem;
  color: rgba(247, 244, 255, 0.45);
  margin: 0;
  letter-spacing: 0.06em;
}

@media (max-width: 599px) {
  .wd-cta-final__btn {
    width: 100%;
    justify-content: center;
  }
}

/* ══ Scroll-reveal: tarjetas entran alternadamente izq/der ══ */
.wd-dcard {
  opacity: 0;
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.7s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.55s ease;
  transition-delay: var(--wd-delay, 0ms);
}

/* Pares entran desde la izquierda */
.wd-dcard:nth-child(even) {
  transform: translateX(-60px);
}

/* Impares entran desde la derecha */
.wd-dcard:nth-child(odd) {
  transform: translateX(60px);
}

/* Estado visible — IntersectionObserver agrega esta clase */
.wd-dcard.is-visible {
  opacity: 1;
  transform: translateX(0);
}

/* Hover recupera el lift una vez que la card ya entró */
.wd-dcard.is-visible:hover {
  transform: translateY(-8px);
  box-shadow:
    0 2px 4px rgba(28, 16, 48, 0.14),
    0 28px 50px rgba(36, 0, 96, 0.28);
  transition-delay: 0ms;
}

@media (prefers-reduced-motion: reduce) {
  .wd-dcard {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ══ Responsive ══ */
@media (max-width: 1023px) {
  .wd-dgrid {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: clamp(200px, 28vw, 260px);
  }

  .wd-dcard--big,
  .wd-dcard--small,
  .wd-dcard--wide {
    grid-row: auto !important;
    grid-column: auto !important;
    min-height: 240px;
  }

  .wd-dcard--big {
    min-height: 300px;
    grid-column: 1 / -1 !important;
  }

  .wd-destinos .wd-filters--center {
    justify-content: flex-start;
    overflow-x: auto;
    flex-wrap: nowrap;
    margin-left: 0;
    margin-right: 0;
  }

  .wd-phi__right {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .wd-head--row {
    flex-direction: column;
    align-items: flex-start;
  }
}

@media (max-width: 599px) {

  /* Destinos: menos padding lateral en mobile para aprovechar el ancho */
  .wd-destinos.wd-section {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }

  .wd-destinos .wd-container {
    padding-inline: 0;
  }

  .wd-dgrid {
    grid-template-columns: 1fr;
    grid-auto-rows: auto;
    gap: 14px;
  }

  /* Todas las cards en mobile usan la misma altura y el mismo tratamiento
     que la variante "big": no hay diferencia visual entre big/small/wide. */
  .wd-dcard,
  .wd-dcard--big,
  .wd-dcard--small,
  .wd-dcard--wide {
    min-height: 320px;
    grid-column: auto !important;
    grid-row: auto !important;
  }

  /* Forzar el bottom-notch de cualquier card a verse como el big:
     mismos paddings, kicker y CTA grandes (no la versión compacta). */
  .wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom {
    padding: 1.1rem 1.25rem 1.15rem;
    row-gap: 0.5rem;
    border-radius: 18px 18px 0 0;
  }

  .wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom .wd-dcard__kicker {
    font-size: 0.62rem;
    letter-spacing: 0.22em;
  }

  .wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom .wd-dcard__title {
    font-size: 1.5rem;
    line-height: 1.1;
    max-width: 22ch;
  }

  .wd-dcard:not(.wd-dcard--big):not(.wd-dcard--wide) .wd-dcard__bottom .wd-dcard__cta {
    font-size: 0.7rem;
    padding: 0.45em 0;
  }

  /* Título uniforme: todas las cards usan el mismo tamaño que el big */
  .wd-dcard .wd-dcard__title,
  .wd-dcard--big .wd-dcard__title {
    font-size: 1.5rem;
    font-weight: 500;
  }

  .wd-section {
    padding: 3.5rem 1.25rem;
  }

  .wd-hero__inner {
    padding: 3rem 1.5rem;
  }

  .wd-hero__nav {
    width: 42px;
    height: 42px;
  }

  .wd-hero__nav--prev {
    left: 0.75rem;
  }

  .wd-hero__nav--next {
    right: 0.75rem;
  }

  .wd-hero__dots {
    bottom: 1.25rem;
    gap: 0.45rem;
  }

  .wd-hero__dot {
    width: 26px;
  }

  .wd-hero__dot.is-active {
    width: 54px;
  }

  .wd-hero__scroll {
    display: none;
  }

  .wd-hero__edge {
    display: none;
  }
}

@media (max-width: 480px) {
  .wd-hero__title {
    font-size: clamp(1.9rem, 8vw, 2.5rem);
    line-height: 1.1;
  }

  .wd-hero__phrase {
    font-size: 1rem;
  }

  .wd-title {
    font-size: clamp(1.65rem, 7vw, 2rem);
  }

  .wd-cta-final__title {
    font-size: clamp(2rem, 8vw, 2.5rem);
  }
}

/* ═══════════════════════════════════════════════════════
   HOME PAGE legacy lth-* (todavía usado por single-tour)
═══════════════════════════════════════════════════════ */

/* Utilidades compartidas */
.lth-section {
  padding: 5rem 1.5rem;
}

.lth-section--dark {
  background: #1C1030;
}

.lth-section--light {
  background: #f4f3f8;
}

.lth-container {
  max-width: 1380px;
  margin: 0 auto;
}

.lth-section__head {
  text-align: center;
  max-width: 640px;
  margin: 0 auto 3.5rem;
}

.lth-section__footer {
  text-align: center;
  margin-top: 2.5rem;
}

.lth-eyebrow {
  display: block;
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: #C060BC;
  margin-bottom: 0.6rem;
}

.lth-title {
  font-size: clamp(1.8rem, 3.5vw, 2.75rem);
  font-weight: 800;
  color: #fff;
  letter-spacing: -0.025em;
  line-height: 1.12;
  margin: 0 0 0.85rem;
}

.lth-title--dark {
  color: #1a1028;
}

.lth-sub {
  font-size: 1rem;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.6);
  margin: 0;
}

.lth-sub--dark {
  color: #6b6382;
}

.lth-link-btn {
  display: inline-block;
  color: #6B3A96;
  font-weight: 700;
  font-size: 0.9375rem;
  text-decoration: none;
  border-bottom: 2px solid #C060BC;
  padding-bottom: 2px;
  transition: color 0.18s;
}

.lth-link-btn:hover {
  color: #C060BC;
}

/* ── Hero ── */
.lth-hero {
  position: relative;
  min-height: 95vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
}

.lth-hero__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  background-color: #1C1030;
  transform: scale(1.04);
  transition: transform 8s ease;
}

.lth-hero:hover .lth-hero__bg {
  transform: scale(1);
}

.lth-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(28, 16, 48, 0.88) 0%, rgba(107, 58, 150, 0.55) 60%, rgba(192, 96, 188, 0.25) 100%);
}

.lth-hero__inner {
  position: relative;
  z-index: 1;
  max-width: 860px;
  padding: 8rem 2.5rem 12rem;
  margin: 0 auto;
  text-align: center;
}

.lth-hero__eyebrow {
  display: block;
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: #C060BC;
  margin-bottom: 1.2rem;
}

.lth-hero__title {
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  font-weight: 900;
  color: #fff;
  line-height: 1.08;
  letter-spacing: -0.03em;
  margin: 0 0 1.25rem;
}

.lth-hero__sub {
  font-size: clamp(1rem, 1.5vw, 1.2rem);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.7);
  margin: 0 0 2.5rem;
}

.lth-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  justify-content: center;
}

.lth-hero__btn {
  display: inline-block;
  font-size: 0.9375rem;
  font-weight: 700;
  padding: 0.85em 2em;
  border-radius: 999px;
  text-decoration: none;
  transition: all 0.2s;
}

.lth-hero__btn--primary {
  background: #C060BC;
  color: #fff;
}

.lth-hero__btn--primary:hover {
  background: #a84da4;
}

.lth-hero__btn--outline {
  background: transparent;
  color: #fff;
  border: 2px solid rgba(255, 255, 255, 0.5);
}

.lth-hero__btn--outline:hover {
  border-color: #fff;
  background: rgba(255, 255, 255, 0.08);
}

/* Stats flotantes */
.lth-hero__stats {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 0;
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-bottom: none;
  border-radius: 20px 20px 0 0;
  padding: 1.25rem 2.5rem;
}

.lth-hero__stat {
  text-align: center;
  padding: 0 2rem;
}

.lth-hero__stat-num {
  display: block;
  font-size: 1.75rem;
  font-weight: 900;
  color: #fff;
  line-height: 1;
  margin-bottom: 0.25rem;
}

.lth-hero__stat-label {
  display: block;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.6);
  font-weight: 500;
}

.lth-hero__stat-divider {
  width: 1px;
  height: 36px;
  background: rgba(255, 255, 255, 0.2);
  flex-shrink: 0;
}

/* ── Por qué elegirnos ── */
.lth-features {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
}

.lth-feature {
  padding: 2rem 1.5rem;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-top: 3px solid #C060BC;
  transition: background 0.2s;
}

.lth-feature:hover {
  background: rgba(255, 255, 255, 0.08);
}

.lth-feature__icon {
  display: block;
  font-size: 2rem;
  margin-bottom: 1rem;
}

.lth-feature__title {
  font-size: 1.0625rem;
  font-weight: 700;
  color: #fff;
  margin: 0 0 0.65rem;
}

.lth-feature__desc {
  font-size: 0.875rem;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.6);
  margin: 0;
}

/* ── Testimonios ── */
.lth-testimonios {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.75rem;
}

.lth-testimonio {
  background: #fff;
  border-radius: 18px;
  padding: 2rem;
  box-shadow: 0 4px 20px rgba(107, 58, 150, 0.08);
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.lth-testimonio__stars {
  display: flex;
  gap: 3px;
}

.lth-testimonio__star {
  font-size: 1rem;
  color: #ddd5f0;
}

.lth-testimonio__star--on {
  color: #C060BC;
}

.lth-testimonio__quote {
  font-size: 0.9375rem;
  line-height: 1.7;
  color: #3d2860;
  margin: 0;
  flex: 1;
}

.lth-testimonio__quote::before {
  content: '\201C';
  font-size: 2rem;
  color: #C060BC;
  line-height: 0.5;
  display: block;
  margin-bottom: 0.5rem;
}

.lth-testimonio__author {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding-top: 1rem;
  border-top: 1px solid #ede9f8;
}

.lth-testimonio__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}

.lth-testimonio__avatar--ph {
  background: #6B3A96;
  color: #fff;
  font-size: 1.1rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

.lth-testimonio__name {
  display: block;
  font-size: 0.9rem;
  font-weight: 700;
  color: #1a1028;
}

.lth-testimonio__pais {
  display: block;
  font-size: 0.775rem;
  color: #9b8fb0;
}

/* ── CTA contacto ── */
.lth-cta {
  background: linear-gradient(135deg, #3d1f6e 0%, #1C1030 60%);
  padding: 5rem 1.5rem;
  text-align: center;
}

.lth-cta__inner {
  max-width: 640px;
  margin: 0 auto;
}

.lth-cta__title {
  font-size: clamp(2rem, 4vw, 3rem);
  font-weight: 900;
  color: #fff;
  letter-spacing: -0.025em;
  line-height: 1.1;
  margin: 0.5rem 0 1rem;
}

.lth-cta__sub {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.65);
  line-height: 1.65;
  margin-bottom: 2.5rem;
}

.lth-cta__btns {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}

.lth-cta__wa {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #25D366;
  color: #fff;
  font-size: 0.9375rem;
  font-weight: 700;
  padding: 0.85em 2em;
  border-radius: 999px;
  text-decoration: none;
  transition: background 0.2s;
}

.lth-cta__wa:hover {
  background: #1ebe5d;
}

/* ── Responsive home ── */
@media (max-width: 767px) {
  .lth-features {
    grid-template-columns: 1fr;
    gap: 1rem;
  }

  .lth-testimonios {
    grid-template-columns: 1fr;
  }

  .lth-hero__stats {
    display: none;
  }

  .lth-hero__inner {
    padding: 5rem 1.5rem 4rem;
  }
}

@media (min-width: 768px) and (max-width: 1023px) {
  .lth-features {
    grid-template-columns: repeat(2, 1fr);
  }

  .lth-testimonios {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ═══════════════════════════════════════════════════════
   SINGLE TOUR  lagunastravel/single-tour  (lst-*)
═══════════════════════════════════════════════════════ */

/* Hero */
/* ── Ken Burns keyframes ── */
@keyframes lst-ken-burns {
  0% {
    transform: scale(1.08) translate(0%, 0%);
  }

  40% {
    transform: scale(1.14) translate(-1.2%, 0.6%);
  }

  100% {
    transform: scale(1.08) translate(0%, 0%);
  }
}

.lst-hero {
  position: relative;
  min-height: clamp(580px, calc(86vh - var(--lth-h, 64px)), 900px);
  display: flex;
  align-items: stretch;
  background-color: #1C1030;
  overflow: hidden;
  isolation: isolate;
}

/* Capa de imagen — Ken Burns + parallax */
.lst-hero__bg {
  position: absolute;
  inset: -10% 0;
  z-index: 0;
  background-size: cover;
  background-position: center 35%;
  background-repeat: no-repeat;
  will-change: transform;
  transform: scale(1.08) translate(0%, 0%);
  animation: lst-ken-burns 24s ease-in-out infinite;
  pointer-events: none;
  filter: brightness(1.05) saturate(1.2);
}

/* Overlay cinematográfico: oscuridad concentrada abajo-izquierda, foto respira en el centro/derecha */
.lst-hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(180deg,
      rgba(10, 4, 24, 0.35) 0%,
      transparent 28%,
      transparent 50%,
      rgba(10, 4, 24, 0.55) 88%,
      rgba(10, 4, 24, 0.78) 100%),
    radial-gradient(80% 60% at 18% 95%, rgba(28, 16, 48, 0.72) 0%, transparent 65%);
  pointer-events: none;
}

/* Aurora decorativa — orquídea soft a la izquierda */
.lst-hero__aurora {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    radial-gradient(45% 55% at 12% 75%, rgba(192, 96, 188, 0.28) 0%, transparent 70%),
    radial-gradient(40% 40% at 95% 15%, rgba(107, 58, 150, 0.20) 0%, transparent 70%);
  filter: blur(42px);
  pointer-events: none;
  mix-blend-mode: screen;
}

.lst-hero--has-img .lst-hero__overlay {
  opacity: 1;
}

/* Línea decorativa inferior — orquídea sweep */
.lst-hero::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  z-index: 4;
  background: linear-gradient(90deg,
      transparent 0%,
      rgba(192, 96, 188, 0.0) 5%,
      rgba(192, 96, 188, 0.85) 35%,
      rgba(133, 133, 204, 0.9) 65%,
      rgba(192, 96, 188, 0.0) 95%,
      transparent 100%);
  filter: blur(0.5px);
  pointer-events: none;
}

.lst-hero--has-img .lst-hero__aurora {
  opacity: 0.5;
}

/* Inner — columna izquierda, full height, flex vertical */
.lst-hero__inner {
  position: relative;
  z-index: 3;
  width: 100%;
  max-width: 720px;
  margin-right: auto;
  padding: clamp(5rem, 9vw, 8rem) clamp(1.5rem, 5vw, 4rem) clamp(2rem, 3.5vw, 3rem);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: inherit;
  gap: 1rem;
}

/* Breadcrumb */
.lst-hero__breadcrumb {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-wrap: wrap;
}

.lst-hero__bc-link {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: rgba(255, 255, 255, 0.55);
  text-decoration: none;
  transition: color 0.2s ease;
}

.lst-hero__bc-link:hover {
  color: rgba(255, 255, 255, 0.90);
}

.lst-hero__bc-sep {
  color: rgba(255, 255, 255, 0.30);
  flex-shrink: 0;
}

.lst-hero__bc-current {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: rgba(255, 255, 255, 0.70);
}

/* Bloque central de contenido */
.lst-hero__content {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding-bottom: 2rem;
  position: relative;
}

/* Ribbon / categoría */
.lst-hero__ribbon {
  display: inline-flex;
  align-items: center;
  position: relative;
  background: linear-gradient(135deg, rgba(107, 58, 150, 0.92) 0%, rgba(192, 96, 188, 0.92) 100%);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  color: #fff;
  padding: 0.5em 1.25em;
  margin-bottom: 1.3rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.30);
  box-shadow: 0 6px 18px rgba(107, 58, 150, 0.45);
  width: fit-content;
}

.lst-hero__ribbon-text {
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.26em;
}

.lst-hero__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(3rem, 6.2vw, 5.4rem);
  font-weight: 500;
  font-style: italic;
  color: #fff;
  line-height: 1.0;
  letter-spacing: -0.022em;
  margin: 0 0 1.1rem;
  text-shadow: 0 4px 36px rgba(0, 0, 0, 0.55);
}

/* Extracto en el hero */
.lst-hero__excerpt {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.05rem, 1.35vw, 1.2rem);
  font-weight: 400;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.85);
  margin: 0 0 1.6rem;
  max-width: 560px;
  letter-spacing: 0.005em;
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.40);
}

.lst-hero__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  margin-bottom: 1.9rem;
}

.lst-hero__meta-item {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #fff;
  font-size: 0.88rem;
  font-weight: 700;
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(10px) saturate(1.1);
  -webkit-backdrop-filter: blur(10px) saturate(1.1);
  padding: 0.55em 1.2em;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.22);
  letter-spacing: 0.02em;
}

.lst-hero__meta-item--price {
  background: linear-gradient(135deg, rgba(107, 58, 150, 0.85) 0%, rgba(192, 96, 188, 0.85) 100%);
  border-color: rgba(255, 255, 255, 0.32);
  box-shadow: 0 6px 18px rgba(107, 58, 150, 0.40);
}

/* CTAs inline en el hero */
.lst-hero__actions {
  display: flex;
  gap: 0.85rem;
  flex-wrap: wrap;
  align-items: center;
}

.lst-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.7em;
  padding: 1.05rem 2.3rem;
  background: linear-gradient(120deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  background-size: 200% 100%;
  background-position: 0% 50%;
  color: #fff;
  border: none;
  border-radius: 999px;
  font-size: 0.88rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 700;
  text-decoration: none;
  transition: background-position 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease;
  box-shadow:
    0 4px 12px rgba(28, 16, 48, 0.30),
    0 14px 36px rgba(192, 96, 188, 0.50);
}

.lst-hero__cta svg {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
  width: 16px;
  height: 16px;
}

.lst-hero__cta:hover {
  background-position: 100% 50%;
  transform: translateY(-3px);
  box-shadow:
    0 6px 14px rgba(28, 16, 48, 0.35),
    0 22px 48px rgba(192, 96, 188, 0.60);
}

.lst-hero__cta:hover svg {
  transform: translateX(5px);
}

.lst-hero__wa {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  padding: 1.05rem 1.85rem;
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 999px;
  font-size: 0.88rem;
  letter-spacing: 0.12em;
  font-weight: 700;
  text-decoration: none;
  text-transform: uppercase;
  transition: background 0.25s ease, border-color 0.25s ease, transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.25s ease;
}

.lst-hero__wa:hover {
  background: #25D366;
  border-color: #25D366;
  transform: translateY(-3px);
  box-shadow: 0 14px 34px rgba(37, 211, 102, 0.45);
}

/* Scroll indicator — línea animada en el fondo del inner */
.lst-hero__scroll {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4rem;
  width: fit-content;
}

.lst-hero__scroll-line {
  display: block;
  width: 1px;
  height: 52px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.55) 0%, rgba(255, 255, 255, 0) 100%);
  position: relative;
  overflow: hidden;
}

.lst-hero__scroll-line::after {
  content: "";
  position: absolute;
  top: -100%;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(180deg, transparent 0%, rgba(192, 96, 188, 0.9) 50%, transparent 100%);
  animation: lst-scroll-drop 2.2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes lst-scroll-drop {
  0% {
    top: -100%;
  }

  100% {
    top: 200%;
  }
}

.lst-hero__scroll-label {
  font-size: 0.6rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.40);
  font-weight: 600;
}

/* Cuerpo */
.lst-body {
  background: #fbfaff;
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1.25rem, 4vw, 3rem) clamp(4rem, 8vw, 6rem);
}

.lst-body__inner {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: start;
}

/* Contenido principal */
.lst-content {
  background: #fff;
  border-radius: 28px;
  padding: clamp(1.8rem, 3vw, 2.75rem);
  box-shadow: 0 20px 50px rgba(28, 16, 48, 0.08);
  border: 1px solid #ECE5F5;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.lst-content::before {
  content: "";
  position: absolute;
  top: -30%;
  right: -15%;
  width: 45%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, rgba(192, 96, 188, 0.06), transparent 70%);
  filter: blur(30px);
  z-index: -1;
}

.lst-content h2 {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.5rem, 2.2vw, 2rem);
  font-weight: 600;
  letter-spacing: -0.012em;
  line-height: 1.1;
  color: #1C1030;
  margin: 2.5rem 0 0.75rem;
}

.lst-content h2:first-child {
  margin-top: 0;
}

.lst-content h3 {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 1rem;
  font-weight: 700;
  color: #6B3A96;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  font-size: 0.82rem;
  letter-spacing: 0.16em;
  margin: 1.8rem 0 0.55rem;
}

.lst-content p {
  font-size: 1.0625rem;
  line-height: 1.8;
  color: #6B6280;
  margin: 0 0 1.1rem;
}

.lst-content ul,
.lst-content ol {
  padding-left: 1.5rem;
  margin: 0 0 1rem;
}

.lst-content li {
  font-size: 1.0625rem;
  line-height: 1.75;
  color: #6B6280;
  margin-bottom: 0.45rem;
}

.lst-content li::marker {
  color: #C060BC;
}

/* ═══════════════════════════════════════════════════════════════════
   TABS NAVBAR (sticky bajo el hero) — estilo editorial morado/orchid
═══════════════════════════════════════════════════════════════════ */
/* Neutraliza el blockGap que WP inyecta vía
   `:where(.wp-site-blocks) > * { margin-block-start: var(--wp--preset--spacing--40) }`
   para que hero + tabs + body queden pegados sin espacio en blanco. */
.lst-hero,
.lst-tabs,
.lst-body,
.lst-related {
  margin-block-start: 0;
}

.lst-tabs {
  position: sticky;
  top: 64px;
  z-index: 40;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(16px) saturate(1.15);
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
  border-bottom: 1px solid #ECE5F5;
  box-shadow: 0 4px 22px rgba(28, 16, 48, 0.05);
  transition: top 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

@media (max-width: 599px) {
  .lst-tabs {
    top: 52px;
  }
}

/* ── Auto-hide del header principal en single-tour ─────────────────────
   Cuando el body lleva .lt-header-hide el header se sube fuera del viewport
   y las tabs suben a top:0 ocupando su lugar. */
body.single-tour .wp-site-blocks>header {
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: transform;
}

body.single-tour.lt-header-hide .wp-site-blocks>header {
  transform: translateY(-110%);
}

body.single-tour.lt-header-hide .lst-tabs {
  top: 0;
}

.lst-tabs__inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
  display: flex;
  align-items: center;
  gap: 0;
  overflow-x: auto;
  scrollbar-width: none;
}

.lst-tabs__inner::-webkit-scrollbar {
  display: none;
}

.lst-tabs__link {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 1.5rem 1.6rem;
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 1rem;
  font-weight: 500;
  color: #8A7FA4;
  text-decoration: none;
  letter-spacing: 0.005em;
  white-space: nowrap;
  transition: color 0.3s ease;
}

.lst-tabs__link:not(:last-child)::after {
  content: "";
  position: absolute;
  right: -0.5px;
  top: 50%;
  transform: translateY(-50%);
  width: 1px;
  height: 18px;
  background: rgba(107, 58, 150, 0.18);
}

.lst-tabs__link::before {
  content: "";
  position: absolute;
  left: 1.6rem;
  right: 1.6rem;
  bottom: 0.75rem;
  height: 3px;
  border-radius: 2px;
  background: linear-gradient(90deg, #6B3A96 0%, #C060BC 100%);
  opacity: 0;
  transform: scaleX(0);
  transform-origin: center;
  transition: opacity 0.3s ease, transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.lst-tabs__link:hover {
  color: #6B3A96;
}

.lst-tabs__link.is-active {
  color: #1C1030;
  font-weight: 700;
}

.lst-tabs__link.is-active::before {
  opacity: 1;
  transform: scaleX(1);
}

/* ═══════════════════════════════════════════════════════════════════
   SECCIONES (Descripción / Itinerario / Incluye / Detalles)
═══════════════════════════════════════════════════════════════════ */
.lst-sec {
  scroll-margin-top: 160px;
  padding: 2rem 0;
}

.lst-sec+.lst-sec {
  border-top: 1px solid #ECE5F5;
}

.lst-content .lst-sec__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.75rem, 2.6vw, 2.25rem);
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.1;
  color: #1C1030;
  margin: 0 0 1.25rem;
  position: relative;
  padding-left: 1.1rem;
}

.lst-content .lst-sec__title::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.35em;
  bottom: 0.35em;
  width: 3px;
  border-radius: 2px;
  background: linear-gradient(180deg, #6B3A96 0%, #C060BC 100%);
}

/* Descripción: el cuerpo .lst-sec__body hereda los estilos de .lst-content existentes */
.lst-content .lst-sec__body strong {
  color: #1C1030;
  font-weight: 600;
}

/* ─── Itinerario ─── */
.lst-itinerary {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.lst-itinerary__day {
  background: #faf8fd;
  border-radius: 12px;
  padding: 1.25rem 1.5rem;
  border-left: 3px solid #6B3A96;
}

.lst-itinerary__label {
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #6B3A96;
  margin: 0 0 0.3rem;
}

.lst-itinerary__name {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.25rem;
  font-weight: 600;
  color: #1C1030;
  margin: 0 0 0.75rem;
}

.lst-itinerary__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.lst-itinerary__list li {
  position: relative;
  padding-left: 1.4rem;
  font-size: 1rem;
  line-height: 1.65;
  color: #5C5277;
}

.lst-itinerary__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #C060BC;
  box-shadow: 0 0 0 3px rgba(192, 96, 188, 0.12);
}

.lst-itinerary__desc {
  font-size: 1rem;
  line-height: 1.65;
  color: #5C5277;
  margin: 0;
}

/* ─── Incluye ─── */
.lst-includes {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 0.85rem 1.5rem;
}

.lst-content .lst-includes__item {
  display: flex;
  align-items: flex-start;
  gap: 0.85rem;
  font-size: 1.0125rem;
  line-height: 1.55;
  color: #2D1F4A;
  margin-bottom: 0;
}

.lst-includes__check {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 10px rgba(107, 58, 150, 0.25);
  margin-top: 0.05em;
}

/* ─── Detalles (filas con icono · label · valor estilo Civitatis) ─── */
.lst-details {
  display: flex;
  flex-direction: column;
}

.lst-details__row {
  display: grid;
  grid-template-columns: 32px 180px 1fr;
  gap: 1.1rem;
  align-items: center;
  padding: 1.05rem 0.25rem;
  border-bottom: 1px dashed rgba(107, 58, 150, 0.22);
}

.lst-details__row:last-child {
  border-bottom: 0;
}

.lst-details__icon {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #6B3A96;
  background: rgba(192, 96, 188, 0.08);
  border-radius: 50%;
  transition: background 0.3s ease, color 0.3s ease;
}

.lst-details__row:hover .lst-details__icon {
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  color: #fff;
}

.lst-details__label {
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 0.95rem;
  font-weight: 600;
  color: #1C1030;
}

.lst-details__value {
  font-size: 1rem;
  color: #5C5277;
  line-height: 1.5;
}

.lst-details__value--price {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.35rem;
  font-weight: 600;
  background: linear-gradient(90deg, #6B3A96, #C060BC);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

@media (max-width: 599px) {
  .lst-details__row {
    grid-template-columns: 32px 1fr;
    grid-template-rows: auto auto;
    gap: 0.35rem 0.85rem;
  }

  .lst-details__label {
    grid-column: 2;
    grid-row: 1;
  }

  .lst-details__value {
    grid-column: 2;
    grid-row: 2;
  }

  .lst-details__icon {
    grid-row: 1 / span 2;
  }
}

/* ── Tour Gallery ── */
.lst-tour-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 12px;
  margin-top: 1.25rem;
}

.lst-tour-gallery__item {
  position: relative;
  overflow: hidden;
  border-radius: 10px;
  cursor: pointer;
  aspect-ratio: 4 / 3;
  background: #1a1030;
  margin: 0;
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease;
}

.lst-tour-gallery__item:hover,
.lst-tour-gallery__item:focus-visible {
  transform: scale(1.03);
  box-shadow: 0 12px 32px rgba(107, 58, 150, 0.25);
  z-index: 1;
}

.lst-tour-gallery__item:focus-visible {
  outline: 2px solid #C060BC;
  outline-offset: 3px;
}

.lst-tour-gallery__media {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.lst-tour-gallery__item:hover .lst-tour-gallery__media {
  transform: scale(1.08);
}

.lst-tour-gallery__badge {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(28, 16, 48, 0.7);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 50%;
  color: #fff;
  font-size: 0.75rem;
  z-index: 2;
  pointer-events: none;
  transition: background 0.25s ease, transform 0.25s ease;
}

.lst-tour-gallery__item:hover .lst-tour-gallery__badge {
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  transform: scale(1.1);
}

.lst-tour-gallery__cap {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 10px 14px;
  background: linear-gradient(to top, rgba(28, 16, 48, 0.85), transparent);
  color: #fff;
  font-size: 0.82rem;
  letter-spacing: 0.02em;
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  transition: opacity 0.3s ease;
}

/* ── Tour Gallery Lightbox ── */
.lst-tour-gallery-lb {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(12, 6, 28, 0.92);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.35s ease, visibility 0.35s ease;
}

.lst-tour-gallery-lb.is-open {
  opacity: 1;
  visibility: visible;
}

.lst-tour-gallery-lb__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 90vw;
  max-height: 85vh;
  margin: 0;
}

.lst-tour-gallery-lb__img {
  max-width: 90vw;
  max-height: 80vh;
  object-fit: contain;
  border-radius: 12px;
}

.lst-tour-gallery-lb__video {
  max-width: 90vw;
  max-height: 80vh;
  border-radius: 12px;
  background: #000;
  outline: none;
}

.lst-tour-gallery-lb__cap {
  margin-top: 0.75rem;
  color: rgba(255, 255, 255, 0.75);
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: 0.9rem;
  text-align: center;
}

.lst-tour-gallery-lb__close,
.lst-tour-gallery-lb__nav {
  position: absolute;
  z-index: 2;
  background: rgba(28, 16, 48, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.16);
  color: #fff;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.25s ease, border-color 0.25s ease, transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.lst-tour-gallery-lb__close:hover,
.lst-tour-gallery-lb__nav:hover {
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  border-color: transparent;
  transform: scale(1.06);
}

.lst-tour-gallery-lb__close {
  top: 1.2rem;
  right: 1.2rem;
}

.lst-tour-gallery-lb__nav--prev {
  left: 1.2rem;
  top: 50%;
  transform: translateY(-50%);
}

.lst-tour-gallery-lb__nav--next {
  right: 1.2rem;
  top: 50%;
  transform: translateY(-50%);
}

.lst-tour-gallery-lb__nav--prev:hover,
.lst-tour-gallery-lb__nav--next:hover {
  transform: translateY(-50%) scale(1.06);
}

@media (max-width: 599px) {
  .lst-tour-gallery {
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
  }

  .lst-tour-gallery-lb__nav {
    width: 38px;
    height: 38px;
  }

  .lst-tour-gallery-lb__nav--prev {
    left: 0.5rem;
  }

  .lst-tour-gallery-lb__nav--next {
    right: 0.5rem;
  }

  .lst-tour-gallery-lb__close {
    top: 0.5rem;
    right: 0.5rem;
  }
}

/* ── Route Map (MapLibre GL) ── */
.lst-map-wrap {
  margin-top: 1.25rem;
}

.lst-map-embed {
  width: 100%;
  height: 420px;
  border-radius: 16px;
  overflow: hidden;
  box-shadow:
    0 8px 32px rgba(28, 16, 48, 0.10),
    0 2px 6px rgba(107, 58, 150, 0.06);
  border: 1px solid #ECE5F5;
}

/* Custom numbered markers */
.lst-map-marker {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 13px;
  font-weight: 700;
  border: 2.5px solid #fff;
  box-shadow:
    0 4px 12px rgba(107, 58, 150, 0.40),
    0 1px 3px rgba(0, 0, 0, 0.12);
  cursor: pointer;
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.25s ease;
}

.lst-map-marker:hover {
  transform: scale(1.15);
  box-shadow:
    0 6px 20px rgba(107, 58, 150, 0.5),
    0 2px 6px rgba(0, 0, 0, 0.15);
}

/* MapLibre popup overrides */
.lst-sec--map .maplibregl-popup-content {
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 0.85rem;
  font-weight: 600;
  color: #1C1030;
  padding: 8px 14px;
  border-radius: 10px;
  box-shadow: 0 6px 20px rgba(28, 16, 48, 0.15);
  border: 1px solid #ECE5F5;
}

.lst-sec--map .maplibregl-popup-tip {
  border-top-color: #fff;
}

/* MapLibre controls */
.lst-sec--map .maplibregl-ctrl-group {
  border-radius: 10px !important;
  border: 1px solid #ECE5F5 !important;
  box-shadow: 0 4px 12px rgba(28, 16, 48, 0.08) !important;
  overflow: hidden;
}

.lst-sec--map .maplibregl-ctrl-group button {
  width: 34px !important;
  height: 34px !important;
}

/* Route legend */
.lst-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1.25rem;
  margin-top: 1rem;
  padding: 1rem 1.25rem;
  background: rgba(107, 58, 150, 0.04);
  border-radius: 12px;
  border: 1px solid rgba(107, 58, 150, 0.10);
}

.lst-map-legend__item {
  display: flex;
  align-items: center;
  gap: 0.55rem;
}

.lst-map-legend__num {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  color: #fff;
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(107, 58, 150, 0.25);
}

.lst-map-legend__name {
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 0.88rem;
  font-weight: 500;
  color: #2D1F4A;
}

@media (max-width: 599px) {
  .lst-map-embed {
    height: 300px;
    border-radius: 12px;
  }

  .lst-map-legend {
    gap: 0.5rem 1rem;
    padding: 0.75rem 1rem;
  }
}

/* Sidebar */
.lst-sidebar {
  position: sticky;
  top: 100px;
}

.lst-sidebar__card {
  position: relative;
  background: #fff;
  border-radius: 24px;
  overflow: hidden;
  box-shadow: 0 20px 50px rgba(28, 16, 48, 0.08);
  display: flex;
  flex-direction: column;
  border: 1px solid #ECE5F5;
  isolation: isolate;
}

.lst-sidebar__card::before {
  content: "";
  position: absolute;
  top: -25%;
  right: -20%;
  width: 55%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, rgba(192, 96, 188, 0.09), transparent 70%);
  filter: blur(28px);
  z-index: -1;
}

/* Header band */
.lst-sidebar__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 1.25rem 1.6rem;
  background: linear-gradient(135deg, #58A6C2 0%, #7753B6 100%);
  color: #fff;
  position: relative;
  overflow: hidden;
}

.lst-sidebar__head::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(60% 80% at 80% 20%, rgba(204, 160, 221, 0.30) 0%, transparent 70%);
  pointer-events: none;
}

.lst-sidebar__head svg {
  flex-shrink: 0;
  opacity: 0.75;
  position: relative;
  z-index: 1;
}

.lst-sidebar__heading {
  font-size: 0.74rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  margin: 0;
  color: rgba(255, 255, 255, 0.92);
  position: relative;
  z-index: 1;
}

/* Detail rows */
.lst-sidebar__details {
  padding: 0.4rem 1.6rem;
}

.lst-sidebar__row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 1rem 0;
  border-top: 1px solid #EFEAF7;
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.lst-sidebar__row:first-child {
  border-top: none;
}

.lst-sidebar__row:hover {
  transform: translateX(3px);
}

.lst-sidebar__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  min-width: 40px;
  background: radial-gradient(circle at 30% 30%, rgba(232, 199, 235, 0.55), transparent 60%),
    linear-gradient(135deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  border-radius: 50%;
  color: #fff;
  box-shadow: 0 6px 16px rgba(107, 58, 150, 0.28);
}

.lst-sidebar__info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}

.lst-sidebar__label {
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: #8A7FA4;
}

.lst-sidebar__val {
  font-size: 0.95rem;
  font-weight: 600;
  color: #1C1030;
}

.lst-sidebar__price {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.5rem;
  font-weight: 600;
  font-style: italic;
  letter-spacing: -0.01em;
  line-height: 1;
  background: linear-gradient(120deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* CTA zone */
.lst-sidebar__cta {
  padding: 1.25rem 1.6rem;
  border-top: 1px solid #EFEAF7;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.lst-sidebar__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: linear-gradient(120deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  background-size: 200% 100%;
  background-position: 0% 50%;
  color: #fff;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 1rem 1.5em;
  border-radius: 999px;
  text-decoration: none;
  transition: background-position 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease;
  box-shadow: 0 12px 30px rgba(192, 96, 188, 0.32);
}

.lst-sidebar__btn svg {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.lst-sidebar__btn:hover {
  background-position: 100% 50%;
  transform: translateY(-2px);
  box-shadow: 0 18px 40px rgba(192, 96, 188, 0.42);
}

.lst-sidebar__btn:hover svg {
  transform: translateX(4px);
}

.lst-sidebar__contact {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: transparent;
  color: #1C1030;
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 0.85em 1.5em;
  border-radius: 999px;
  border: 1.5px solid #1C1030;
  text-decoration: none;
  transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease,
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

.lst-sidebar__contact svg {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.lst-sidebar__contact:hover {
  background: #1C1030;
  color: #fff;
  border-color: #1C1030;
  transform: translateY(-1px);
}

.lst-sidebar__contact:hover svg {
  transform: translateX(3px);
}

.lst-sidebar__back {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
  color: #6B3A96;
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 0.82rem;
  font-weight: 600;
  text-decoration: none;
  padding: 0.85rem 1.6rem 1.25rem;
  transition: color 0.25s ease, gap 0.3s cubic-bezier(0.22, 1, 0.36, 1);
  letter-spacing: 0.03em;
}

.lst-sidebar__back svg {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.lst-sidebar__back:hover {
  color: #1C1030;
}

.lst-sidebar__back:hover svg {
  transform: translateX(-3px);
}

/* Tours relacionados */
.lst-related--clean {
  background: #fbfaff;
  padding: clamp(4rem, 7vw, 6rem) clamp(1.25rem, 4vw, 3rem) clamp(4rem, 8vw, 6rem);
  border-top: 1px solid #ECE5F5;
}

.lst-related__inner {
  max-width: 1180px;
  margin: 0 auto;
}

.lst-related__header {
  text-align: center;
  margin-bottom: clamp(2rem, 3.5vw, 3rem);
}

.lst-related__eyebrow {
  display: inline-block;
  font-size: 0.74rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #240060;
  font-weight: 600;
  margin-bottom: 0.7rem;
}

.lst-related--clean .lst-related__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.85rem, 2.8vw, 2.5rem);
  font-weight: 600;
  letter-spacing: -0.012em;
  line-height: 1.1;
  color: #1C1030;
  margin: 0 0 0.55rem;
}

.lst-related__sub {
  font-size: 0.96rem;
  color: #6B6280;
  margin: 0;
  line-height: 1.6;
}

.lst-related__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1rem, 1.8vw, 1.5rem);
}

/* Related card */
.lst-rcard {
  position: relative;
  background: #fff;
  border-radius: 24px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  border: 1px solid #ECE5F5;
  box-shadow: 0 16px 40px rgba(28, 16, 48, 0.06);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.4s ease;
  display: flex;
  flex-direction: column;
}

.lst-rcard:hover {
  transform: translateY(-4px);
  box-shadow: 0 28px 56px rgba(28, 16, 48, 0.12);
}

.lst-rcard__img {
  position: relative;
  width: 100%;
  height: 210px;
  overflow: hidden;
}

.lst-rcard__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.9s cubic-bezier(0.2, 0.7, 0.2, 1);
}

.lst-rcard:hover .lst-rcard__img img {
  transform: scale(1.07);
}

.lst-rcard__badge {
  position: absolute;
  top: 12px;
  left: 12px;
  background: rgba(28, 16, 48, 0.5);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 600;
  padding: 0.38em 0.85em;
  border-radius: 999px;
  letter-spacing: 0.06em;
  border: 1px solid rgba(255, 255, 255, 0.15);
}

.lst-rcard__body {
  padding: clamp(1.2rem, 1.8vw, 1.6rem);
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  flex: 1;
}

.lst-rcard__cat {
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: #240060;
}

.lst-rcard__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.2rem, 1.6vw, 1.45rem);
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.15;
  color: #1C1030;
  margin: 0;
}

.lst-rcard__excerpt {
  font-size: 0.87rem;
  line-height: 1.6;
  color: #6B6280;
  margin: 0;
  flex: 1;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.lst-rcard__link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #6B3A96;
  margin-top: 0.4rem;
  transition: gap 0.25s ease, color 0.2s ease;
}

.lst-rcard:hover .lst-rcard__link {
  gap: 10px;
  color: #C060BC;
}

/* Responsive single tour */
@media (max-width: 1080px) {
  .lst-body__inner {
    grid-template-columns: 1fr 300px;
  }
}

@media (max-width: 991px) {
  .lst-related__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 860px) {
  .lst-body__inner {
    grid-template-columns: 1fr;
  }

  .lst-sidebar {
    position: static;
  }
}

@media (max-width: 767px) {
  .lst-hero {
    min-height: clamp(380px, calc(65vh - var(--lth-h, 56px)), 600px);
  }

  .lst-hero__bg {
    background-position: center center;
  }

  .lst-hero__inner {
    max-width: 100%;
    padding: 4rem 1.2rem 2rem;
  }

  .lst-hero__title {
    font-size: clamp(1.8rem, 8vw, 2.5rem);
  }

  .lst-hero__excerpt {
    font-size: 0.95rem;
    -webkit-line-clamp: 3;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  .lst-hero__breadcrumb {
    font-size: 0.75rem;
  }

  .lst-hero__meta {
    flex-wrap: wrap;
    gap: 0.5rem;
  }

  .lst-hero__actions {
    flex-direction: column;
    align-items: stretch;
    gap: 0.6rem;
    width: 100%;
    text-align: center;
  }

  .lst-hero__cta,
  .lst-hero__wa {
    width: 100%;
    justify-content: center;
    text-align: center;
    font-size: 0.9rem;
    padding: 0.85em 1.2em;
    box-sizing: border-box;
  }

  .lst-hero__content {
    align-items: center;
    text-align: center;
  }

  .lst-hero__meta {
    justify-content: center;
  }

  .lst-hero__ribbon {
    align-self: center;
  }

  .lst-content {
    border-radius: 20px;
    padding: 1.6rem;
  }

  .lst-sidebar__card {
    border-radius: 20px;
  }

  .lst-related__grid {
    grid-template-columns: 1fr;
  }

  .lst-rcard {
    border-radius: 18px;
  }

  .lst-hero__ribbon {
    margin-left: 0;
    padding-left: 1.15em;
  }
}

/* ═══════════════════════════════════════════════════════
   FOOTER lagunastravel/footer  (ltf-*)
═══════════════════════════════════════════════════════ */

.ltf {
  background: var(--lt-chrome-bg);
  color: var(--lt-chrome-text);
  padding: 5rem 1.5rem 1.5rem;
  margin-top: auto;
  position: relative;
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
}

.ltf::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--lt-chrome-accent), transparent);
  opacity: 0.5;
}

.ltf__inner {
  max-width: 1320px;
  margin: 0 auto;
}

/* Grid principal de columnas */
.ltf__grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1.2fr;
  gap: 3rem;
  padding-bottom: 3rem;
  border-bottom: 1px solid var(--lt-chrome-border);
}

.ltf__col {}

/* Columna marca */
.ltf__col--brand {}

.ltf__logo {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  margin-bottom: 1.25rem;
}

.ltf__logo .custom-logo {
  max-height: 48px;
  width: auto;
}

.ltf__logo-text {
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--lt-chrome-text);
  letter-spacing: -0.01em;
}

.ltf__about {
  font-size: 0.9375rem;
  line-height: 1.75;
  color: var(--lt-chrome-text-muted);
  margin: 0 0 1.75rem;
  max-width: 360px;
}

/* Iconos sociales */
.ltf__socials {
  display: flex;
  gap: 0.6rem;
}

.ltf__social {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--lt-chrome-surface);
  border: 1px solid var(--lt-chrome-border);
  border-radius: 50%;
  color: var(--lt-chrome-text-muted);
  transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.2s;
}

.ltf__social:hover {
  background: var(--lt-chrome-accent);
  border-color: var(--lt-chrome-accent);
  color: var(--lt-chrome-on-accent);
  transform: translateY(-2px);
}

/* Títulos de columna */
.ltf__title {
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--lt-chrome-accent);
  margin: 0 0 1.4rem;
}

/* Listas de enlaces */
.ltf__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
}

.ltf__list a {
  color: var(--lt-chrome-text-muted);
  text-decoration: none;
  font-size: 0.9375rem;
  transition: color 0.18s, padding-left 0.18s;
  display: inline-block;
}

.ltf__list a:hover {
  color: var(--lt-chrome-text);
  padding-left: 6px;
}

.ltf__muted {
  color: var(--lt-chrome-text-soft);
  font-size: 0.9375rem;
  font-style: italic;
}

/* Contacto con iconos */
.ltf__contact {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.95rem;
}

.ltf__contact li {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--lt-chrome-text-muted);
}

.ltf__contact svg {
  color: var(--lt-chrome-accent);
  flex-shrink: 0;
  margin-top: 0.18rem;
}

.ltf__contact a {
  color: var(--lt-chrome-text-muted);
  text-decoration: none;
  transition: color 0.18s;
}

.ltf__contact a:hover {
  color: var(--lt-chrome-text);
}

/* Barra inferior */
.ltf__bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1.75rem 0 0.5rem;
  flex-wrap: wrap;
  gap: 1rem;
}

.ltf__copy {
  margin: 0;
  font-size: 0.8125rem;
  color: var(--lt-chrome-text-soft);
}

.ltf__legal {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.ltf__legal a {
  color: var(--lt-chrome-text-soft);
  text-decoration: none;
  font-size: 0.8125rem;
  transition: color 0.18s;
}

.ltf__legal a:hover {
  color: var(--lt-chrome-accent);
}

/* Responsive footer */
@media (max-width: 991px) {
  .ltf__grid {
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
  }

  .ltf__col--brand {
    grid-column: 1 / -1;
  }
}

@media (max-width: 599px) {
  .ltf {
    padding: 3.5rem 1.25rem 1.25rem;
  }

  .ltf__grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .ltf__bottom {
    flex-direction: column;
    text-align: center;
  }

  .ltf__legal {
    justify-content: center;
  }
}

/* Libro de Reclamaciones link en footer */
.ltf__reclamo {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--lt-chrome-text-muted);
  text-decoration: none;
  font-size: 0.8125rem;
  font-weight: 500;
  padding: 0.45em 0.9em;
  border: 1px solid var(--lt-chrome-border);
  border-radius: 8px;
  transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.2s;
}

.ltf__reclamo:hover {
  background: var(--lt-chrome-accent);
  border-color: var(--lt-chrome-accent);
  color: var(--lt-chrome-on-accent);
  transform: translateY(-1px);
}

.ltf__reclamo svg {
  flex-shrink: 0;
  transition: transform 0.25s ease;
}

.ltf__reclamo:hover svg {
  transform: scale(1.1);
}

/* ═══════════════════════════════════════════════════════
   LIBRO DE RECLAMACIONES  (ltcb-*)
   Polish pass: OKLCH tinted neutrals, 4px spacing scale,
   full interaction states, reduced-motion, touch targets.
═══════════════════════════════════════════════════════ */

/* --- Tokens (scoped) --- */
.ltcb {
  --ltcb-bg: oklch(0.985 0.006 285);
  /* faint violet tint */
  --ltcb-surface: oklch(0.995 0.004 285);
  /* near-white, brand-tinted */
  --ltcb-text: oklch(0.18 0.02 285);
  /* deep plum, never #000 */
  --ltcb-text-mid: oklch(0.45 0.03 285);
  /* secondary copy */
  --ltcb-text-soft: oklch(0.60 0.025 285);
  /* tertiary / help text */
  --ltcb-border: oklch(0.90 0.02 285);
  /* subtle violet edge */
  --ltcb-border-strong: oklch(0.78 0.04 285);
  /* hover borders */
  --ltcb-accent: oklch(0.46 0.18 300);
  /* brand purple */
  --ltcb-accent-soft: oklch(0.46 0.18 300 / 0.12);
  /* focus ring */
  --ltcb-accent-hover: oklch(0.40 0.19 300);
  /* darker purple on hover */
  --ltcb-ok-bg: oklch(0.96 0.04 155);
  --ltcb-ok-border: oklch(0.82 0.10 155);
  --ltcb-ok-text: oklch(0.30 0.08 160);
  --ltcb-err-bg: oklch(0.96 0.03 20);
  --ltcb-err-border: oklch(0.82 0.08 20);
  --ltcb-err-text: oklch(0.38 0.14 20);
  --ltcb-radius-sm: 8px;
  --ltcb-radius-md: 12px;
  --ltcb-radius-lg: 16px;
  --ltcb-ease: cubic-bezier(0.16, 1, 0.3, 1);
  /* ease-out-expo */
  --ltcb-dur: 200ms;
}

/* --- Section container --- */
.ltcb {
  padding: 3rem clamp(1.25rem, 4vw, 3rem) 4rem;
  background: var(--ltcb-bg);
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  color: var(--ltcb-text);
}

.ltcb__inner {
  max-width: 820px;
  margin: 0 auto;
}

/* --- Company info bar --- */
.ltcb__company {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 2rem;
  justify-content: center;
  background: var(--ltcb-surface);
  border: 1px solid var(--ltcb-border);
  border-radius: var(--ltcb-radius-md);
  padding: 0.875rem 1.5rem;
  margin-bottom: 1.5rem;
  font-size: 0.875rem;
  color: var(--ltcb-text-mid);
  line-height: 1.5;
}

.ltcb__company-item strong {
  color: var(--ltcb-text);
  font-weight: 600;
}

/* --- Flash messages --- */
.ltcb__flash {
  padding: 1rem 1.25rem;
  border-radius: var(--ltcb-radius-md);
  font-size: 0.875rem;
  line-height: 1.6;
  margin-bottom: 1.5rem;
}

.ltcb__flash--ok {
  background: var(--ltcb-ok-bg);
  border: 1px solid var(--ltcb-ok-border);
  color: var(--ltcb-ok-text);
}

.ltcb__flash--err {
  background: var(--ltcb-err-bg);
  border: 1px solid var(--ltcb-err-border);
  color: var(--ltcb-err-text);
}

/* --- Form card --- */
.ltcb__form {
  background: var(--ltcb-surface);
  border: 1px solid var(--ltcb-border);
  border-radius: var(--ltcb-radius-lg);
  padding: clamp(1.5rem, 3vw, 2.5rem);
  box-shadow: 0 1px 3px oklch(0.18 0.02 285 / 0.04),
    0 6px 24px oklch(0.18 0.02 285 / 0.03);
}

/* --- Fieldsets --- */
.ltcb__fieldset {
  border: none;
  padding: 0;
  margin: 0 0 2rem;
}

.ltcb__fieldset:last-of-type {
  margin-bottom: 0;
}

.ltcb__legend {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 1rem;
  font-weight: 700;
  color: var(--ltcb-text);
  margin-bottom: 1rem;
  padding-bottom: 0.625rem;
  border-bottom: 1.5px solid var(--ltcb-border);
  width: 100%;
  letter-spacing: -0.005em;
}

/* --- Radio buttons (Reclamo / Queja) --- */
.ltcb__radio-group {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}

.ltcb__radio {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  cursor: pointer;
  padding: 1rem 1.25rem;
  min-height: 44px;
  /* touch target */
  border: 1.5px solid var(--ltcb-border);
  border-radius: var(--ltcb-radius-md);
  background: var(--ltcb-surface);
  transition: border-color var(--ltcb-dur) var(--ltcb-ease),
    background var(--ltcb-dur) var(--ltcb-ease),
    box-shadow var(--ltcb-dur) var(--ltcb-ease);
}

.ltcb__radio:hover {
  border-color: var(--ltcb-border-strong);
  background: var(--ltcb-bg);
}

.ltcb__radio:has(input:focus-visible) {
  outline: 2px solid var(--ltcb-accent);
  outline-offset: 2px;
}

.ltcb__radio input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  width: 0;
  height: 0;
  position: absolute;
  opacity: 0;
}

.ltcb__radio-box {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border: 2px solid var(--ltcb-border-strong);
  border-radius: 50%;
  margin-top: 2px;
  position: relative;
  transition: border-color var(--ltcb-dur) var(--ltcb-ease);
}

.ltcb__radio-box::after {
  content: '';
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: var(--ltcb-accent);
  transform: scale(0);
  transition: transform var(--ltcb-dur) var(--ltcb-ease);
}

.ltcb__radio input:checked~.ltcb__radio-box {
  border-color: var(--ltcb-accent);
}

.ltcb__radio input:checked~.ltcb__radio-box::after {
  transform: scale(1);
}

.ltcb__radio input:checked~.ltcb__radio-content strong {
  color: var(--ltcb-accent);
}

.ltcb__radio-content {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.ltcb__radio-content strong {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--ltcb-text);
  transition: color var(--ltcb-dur) var(--ltcb-ease);
}

.ltcb__radio-content small {
  font-size: 0.8125rem;
  color: var(--ltcb-text-soft);
  line-height: 1.45;
}

/* --- Form rows & fields --- */
.ltcb__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}

.ltcb__field {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  margin-bottom: 0.875rem;
}

.ltcb__label {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--ltcb-text);
  letter-spacing: 0.01em;
}

.ltcb__req {
  color: oklch(0.55 0.2 15);
  margin-left: 1px;
}

/* --- Input controls (shared) --- */
.ltcb__form input[type="text"],
.ltcb__form input[type="email"],
.ltcb__form input[type="tel"],
.ltcb__form input[type="date"],
.ltcb__form select,
.ltcb__form textarea {
  width: 100%;
  min-height: 44px;
  /* touch target */
  padding: 0.625rem 0.875rem;
  border: 1.5px solid var(--ltcb-border);
  border-radius: var(--ltcb-radius-sm);
  font-size: 0.9375rem;
  font-family: inherit;
  color: var(--ltcb-text);
  background: var(--ltcb-surface);
  box-sizing: border-box;
  transition: border-color var(--ltcb-dur) var(--ltcb-ease),
    box-shadow var(--ltcb-dur) var(--ltcb-ease);
}

.ltcb__form input::placeholder,
.ltcb__form textarea::placeholder {
  color: var(--ltcb-text-soft);
}

/* Hover */
.ltcb__form input:hover:not(:focus),
.ltcb__form select:hover:not(:focus),
.ltcb__form textarea:hover:not(:focus) {
  border-color: var(--ltcb-border-strong);
}

/* Focus */
.ltcb__form input:focus,
.ltcb__form select:focus,
.ltcb__form textarea:focus {
  outline: none;
  border-color: var(--ltcb-accent);
  box-shadow: 0 0 0 3px var(--ltcb-accent-soft);
}

/* Disabled */
.ltcb__form input:disabled,
.ltcb__form select:disabled,
.ltcb__form textarea:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  background: var(--ltcb-bg);
}

.ltcb__form textarea {
  resize: vertical;
  min-height: 88px;
}

.ltcb__form select {
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%236B6280' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.875rem center;
  padding-right: 2.5rem;
}

/* --- Captcha & actions --- */
.ltcb__captcha {
  margin: 1.5rem 0;
}

.ltcb__actions {
  margin-top: 1.75rem;
  padding-top: 1.5rem;
  border-top: 1.5px solid var(--ltcb-border);
}

/* --- Submit button --- */
.ltcb__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 48px;
  /* touch target, prominent */
  padding: 0 2rem;
  background: var(--ltcb-accent);
  color: oklch(0.98 0.005 285);
  border: none;
  border-radius: var(--ltcb-radius-sm);
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.005em;
  cursor: pointer;
  transition: background var(--ltcb-dur) var(--ltcb-ease),
    transform var(--ltcb-dur) var(--ltcb-ease),
    box-shadow var(--ltcb-dur) var(--ltcb-ease);
}

.ltcb__btn:hover {
  background: var(--ltcb-accent-hover);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px oklch(0.46 0.18 300 / 0.25),
    0 1px 3px oklch(0.46 0.18 300 / 0.12);
}

.ltcb__btn:active {
  transform: translateY(0);
  box-shadow: none;
}

.ltcb__btn:focus-visible {
  outline: 2px solid var(--ltcb-accent);
  outline-offset: 2px;
}

.ltcb__btn svg {
  transition: transform var(--ltcb-dur) var(--ltcb-ease);
}

.ltcb__btn:hover svg {
  transform: translateX(3px);
}

/* --- Legal disclaimer --- */
.ltcb__legal {
  font-size: 0.75rem;
  line-height: 1.65;
  color: var(--ltcb-text-soft);
  margin: 1.25rem 0 0;
  max-width: 65ch;
}

/* --- Editor preview (admin only) --- */
.lt-complaints-edit .ltcb__form-preview {
  background: var(--ltcb-bg);
  border: 1.5px dashed var(--ltcb-border-strong);
  border-radius: var(--ltcb-radius-lg);
  padding: 1.5rem;
  margin-top: 1.5rem;
}

.lt-complaints-edit .ltcb__form-note {
  font-size: 0.8125rem;
  color: var(--ltcb-text-soft);
  margin: 0 0 1rem;
  text-align: center;
}

.lt-complaints-edit .ltcb__form-mock {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.lt-complaints-edit .ltcb__row {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 0;
}

.lt-complaints-edit .ltcb__field {
  flex: 1;
  padding: 0.625rem 0.875rem;
  background: var(--ltcb-surface);
  border: 1px solid var(--ltcb-border);
  border-radius: var(--ltcb-radius-sm);
  font-size: 0.8125rem;
  color: var(--ltcb-text-soft);
  margin-bottom: 0;
}

.lt-complaints-edit .ltcb__mock-btn {
  display: inline-block;
  padding: 0.625rem 1.5rem;
  background: var(--ltcb-accent);
  color: oklch(0.98 0.005 285);
  border-radius: var(--ltcb-radius-sm);
  font-size: 0.8125rem;
  font-weight: 600;
  text-align: center;
  margin-top: 0.25rem;
}

/* --- Reduced motion --- */
@media (prefers-reduced-motion: reduce) {

  .ltcb,
  .ltcb * {
    transition-duration: 0.01ms !important;
  }
}

/* --- Responsive (≤ 599px) --- */
@media (max-width: 599px) {
  .ltcb {
    padding: 2rem 1rem 3rem;
  }

  .ltcb__radio-group {
    grid-template-columns: 1fr;
  }

  .ltcb__row {
    grid-template-columns: 1fr;
  }

  .ltcb__form {
    padding: 1.25rem;
    border-radius: var(--ltcb-radius-md);
  }

  .ltcb__company {
    flex-direction: column;
    gap: 0.375rem;
    text-align: center;
  }

  .ltcb__btn {
    width: 100%;
    justify-content: center;
  }
}

/* ═══════════════════════════════════════════════════════
   SERVICES PAGE  (lts-*)
   5 tarjetas: 2 hero en fila superior + 3 split en inferior.
═══════════════════════════════════════════════════════ */
.lts-services {
  position: relative;
  padding: 0 0 clamp(5rem, 10vw, 8rem);
  overflow: hidden;
  isolation: isolate;
}

/* ═══ Banner / Hero ═══ */
.lts-services__banner {
  position: relative;
  width: 100%;
  min-height: clamp(200px, 30vw, 320px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1.25rem, 4vw, 3rem);
  overflow: hidden;
  isolation: isolate;
  background-color: #1C1030;
  margin-bottom: clamp(3rem, 6vw, 5rem);
}

/* Capa de imagen para parallax */
.lts-services__banner-bg {
  position: absolute;
  inset: -60% 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  will-change: transform;
  transform: translate3d(0, 0, 0);
  pointer-events: none;
}

/* Overlay oscuro con gradiente */
.lts-services__banner-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.55) 0%,
      rgba(36, 0, 96, 0.70) 50%,
      rgba(28, 16, 48, 0.85) 100%);
  pointer-events: none;
}

.lts-services__banner--has-img .lts-services__banner-overlay {
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.45) 0%,
      rgba(36, 0, 96, 0.55) 40%,
      rgba(28, 16, 48, 0.80) 100%);
}

/* Aurora decorativa */
.lts-services__banner-aurora {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    radial-gradient(55% 50% at 20% 25%, rgba(192, 96, 188, 0.25) 0%, transparent 70%),
    radial-gradient(50% 50% at 80% 10%, rgba(133, 133, 204, 0.30) 0%, transparent 70%),
    radial-gradient(40% 40% at 50% 80%, rgba(107, 58, 150, 0.20) 0%, transparent 70%);
  filter: blur(40px);
  pointer-events: none;
  mix-blend-mode: screen;
}

.lts-services__banner--has-img .lts-services__banner-aurora {
  opacity: 0.4;
}

/* Header centrado sobre el banner */
.lts-services__head {
  position: relative;
  z-index: 3;
  max-width: 960px;
  margin: 0 auto;
  text-align: center;
}

.lts-services__eyebrow {
  display: inline-block;
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.75);
  font-weight: 600;
  margin-bottom: 1.1rem;
}

.lts-services__title {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.25rem, 5.5vw, 4.5rem);
  line-height: 1.02;
  letter-spacing: -0.028em;
  font-weight: 700;
  color: #fff;
  margin: 0 0 1.2rem;
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.25);
}

.lts-services__title em {
  font-style: italic;
  font-weight: 500;
  background: linear-gradient(90deg,
      #E8C7EB 0%, #C060BC 18%, #8585CC 36%,
      #B8AAEE 50%, #E8C7EB 64%, #C060BC 82%, #8585CC 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: lt-iridescent 4s linear infinite;
}

.lts-services__sub {
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.80);
  max-width: 640px;
  margin: 0 auto;
}

/* Grid 6 cols: row1 = 3+3, row2 = 2+2+2 */
.lts-services__grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: clamp(1rem, 1.8vw, 1.5rem);
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}

.lts-services__grid>.lts-card--hero {
  grid-column: span 3;
}

.lts-services__grid>.lts-card--split {
  grid-column: span 2;
}

/* Card base */
.lts-card {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  position: relative;
  overflow: hidden;
  border-radius: 28px;
  display: flex;
  flex-direction: column;
  min-height: 510px;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(28, 16, 48, 0.06);
  will-change: transform;
  /* Sólo box-shadow se transiciona globalmente: el transform lo controla GSAP
     durante la entrada (poner transition transform aquí pelea con GSAP y
     produce "doble animación"). La transición de transform se habilita
     vía la clase .is-ready una vez GSAP termina la entrada. */
  transition: box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Toda la card clicable — gestionado por JS (event delegation en tours-grid
   render.php). El cursor pointer ya viene de .lts-card. No usamos stretched
   link CSS porque la variante hero tiene .lts-card__body { position: relative;
   z-index: 2 } que atrapa cualquier ::after dentro del body. */

.lts-card.is-ready {
  transition:
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Entrada — GSAP (animations.js) controla la animación; .is-visible es fallback sin GSAP */
.lts-services .lts-card {
  opacity: 0;
}

.lts-services .lts-card.is-visible {
  opacity: 1;
  transform: translateY(0);
  transition-delay: var(--lts-delay, 0ms);
  transition:
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

.lts-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 28px 60px rgba(28, 16, 48, 0.18);
}

/* Visual (área superior con gradiente + icono) */
.lts-card__visual {
  position: relative;
  flex: 1 1 auto;
  min-height: 220px;
  overflow: hidden;
}

.lts-card__orb {
  position: absolute;
  width: 60%;
  aspect-ratio: 1;
  border-radius: 50%;
  right: -15%;
  top: -15%;
  background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.18) 0%, transparent 60%);
  filter: blur(20px);
  transition: transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}

.lts-card:hover .lts-card__orb {
  transform: scale(1.25) translate(-8%, 8%);
}

.lts-card__grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
  background-size: 40px 40px;
  opacity: 0.5;
  mix-blend-mode: overlay;
}

.lts-card__icon {
  position: absolute;
  color: rgba(255, 255, 255, 0.92);
  transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1),
    color 0.3s ease;
}

.lts-card:hover .lts-card__icon {
  transform: scale(1.08) rotate(-4deg);
}

.lts-card__icon svg {
  display: block;
  width: 100%;
  height: 100%;
}

/* Número */
.lts-card__num {
  position: absolute;
  top: 1.5rem;
  left: 1.75rem;
  z-index: 3;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 0.88rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.85);
  padding: 0.45em 0.85em;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  background: rgba(255, 255, 255, 0.08);
}

/* ═════ Variante hero (top row) — imagen/gradiente a fullcard + overlay ═════ */
.lts-card--hero {
  color: #fff;
}

.lts-card--hero .lts-card__visual {
  position: absolute;
  inset: 0;
  min-height: 0;
}

.lts-card--hero .lts-card__icon {
  right: -6%;
  top: 18%;
  width: 62%;
  height: 62%;
  opacity: 0.18;
}

.lts-card--hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 50%, rgba(12, 6, 24, 0.45) 80%, rgba(12, 6, 24, 0.85) 100%);
  z-index: 1;
  pointer-events: none;
}

.lts-card--hero .lts-card__body {
  position: relative;
  z-index: 2;
  margin-top: auto;
  padding: 2.25rem 2.25rem 2.4rem;
  color: #fff;
  gap: 0.8rem;
}

.lts-card--hero .lts-card__title {
  color: #fff;
}

.lts-card--hero .lts-card__desc {
  color: rgba(255, 255, 255, 0.82);
}

.lts-card--hero .lts-card__kicker {
  color: rgba(255, 255, 255, 0.7);
}

/* CTA hero — outline blanco, se rellena con gradiente pastel saturado en hover */
.lts-card--hero .lts-card__more {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.65);
  background: transparent;
  text-shadow: 0 1px 2px rgba(28, 16, 48, 0.35);
}

.lts-card--hero .lts-card__more::before {
  background: linear-gradient(135deg, var(--lt-mauve) 0%, var(--lt-periwinkle) 50%, var(--lt-blue-mid) 100%);
}

.lts-card--hero:hover .lts-card__more {
  color: #fff;
  border-color: transparent;
  transform: translateY(-1px);
  box-shadow: 0 10px 26px rgba(135, 166, 216, 0.5),
    inset 0 1px 0 rgba(255, 255, 255, 0.35);
}

.lts-card--hero:hover .lts-card__more::before {
  transform: translateX(0);
}

.lts-card--hero:hover .lts-card__more svg {
  transform: translateX(3px);
}

/* ═════ Variante split (bottom row) — panel color top + body transparente ═════ */
.lts-card--split {
  background: transparent;
  box-shadow: none;
}

.lts-card--split .lts-card__visual {
  flex: 0 0 56%;
}

.lts-card--split .lts-card__icon {
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 52%;
  height: 52%;
}

.lts-card--split:hover .lts-card__icon {
  transform: translate(-50%, -54%) scale(1.06) rotate(-3deg);
}

.lts-card--split .lts-card__body {
  flex: 1 1 auto;
  padding: 1.6rem 1.6rem 2.25rem;
  gap: 0.7rem;
}

/* Body común */
.lts-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.lts-card__kicker {
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 600;
  color: #7a6a90;
  margin-bottom: 0.15rem;
}

.lts-card__title {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: clamp(1.45rem, 2vw, 1.85rem);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.08;
  color: #1C1030;
  margin: 0;
  position: relative;
}

.lts-card__title a {
  color: inherit;
  text-decoration: none;
  -webkit-text-fill-color: inherit;
}

.lts-card__more[href] {
  text-decoration: none;
}

/* Variante split: gradiente brand sutil en el título + filete pastel decorativo */
.lts-card--split .lts-card__title {
  background: var(--lt-grad-brand);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  padding-bottom: 0.45rem;
}

.lts-card--split .lts-card__title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 28px;
  height: 2px;
  background: var(--lt-grad-pastel-soft);
  border-radius: 2px;
  transition: width 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.lts-card--split:hover .lts-card__title::after {
  width: 64px;
}

.lts-card__desc {
  font-size: 0.92rem;
  line-height: 1.55;
  color: #4a3f5c;
  margin: 0;
}

/* Default = variante split (minimalista): pill con borde mauve-deep y leve
   fill pastel — antes era outline sobre transparente sobre la página pastel
   y el contraste resultaba casi imperceptible. */
.lts-card__more {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  margin-top: 1.2rem;
  margin-bottom: 0.3rem;
  padding: 0.75em 1.4em;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--lt-mauve-deep);
  border: 1.5px solid var(--lt-mauve-deep);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.85);
  box-shadow: 0 2px 6px rgba(91, 79, 136, 0.08);
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition:
    color 0.3s ease,
    border-color 0.35s ease,
    background 0.3s ease,
    transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.3s ease;
}

.lts-card__more::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--lt-grad-pastel);
  transform: translateX(-101%);
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
  z-index: -1;
}

.lts-card__more svg {
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
}

.lts-card--split:hover .lts-card__more {
  color: #fff;
  border-color: transparent;
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(135, 166, 216, 0.35);
}

.lts-card--split:hover .lts-card__more::before {
  transform: translateX(0);
}

.lts-card--split:hover .lts-card__more svg {
  transform: translateX(3px);
}

.lts-card__more svg {
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.lts-card:hover .lts-card__more svg {
  transform: translateX(4px);
}

/* ═════ Paletas por tarjeta ═════ */
/* Cuando la tarjeta tiene imagen cargada desde el customizer, atenuamos el icono
   decorativo para que la imagen sea la protagonista y añadimos un overlay. */
.lts-card--has-img .lts-card__icon {
  opacity: 0.0;
}

.lts-card--has-img .lts-card__grid {
  display: none;
}

/* Sin overlay full-image: la foto se ve nítida.
   La legibilidad del texto la asegura el ::after (gradiente sólo abajo). */

.lts-card--split.lts-card--has-img .lts-card__visual::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(28, 16, 48, 0.08) 0%, rgba(28, 16, 48, 0.22) 100%);
}

.lts-card--pa .lts-card__visual {
  background: linear-gradient(135deg, #6B3A96 0%, #4A2478 55%, #2A1350 100%);
}

.lts-card--pb .lts-card__visual {
  background: linear-gradient(135deg, #1C1030 0%, #3D1F66 55%, #6B3A96 100%);
}

.lts-card--pc .lts-card__visual {
  background: linear-gradient(135deg, #68A8D8 0%, #8585CC 100%);
}

.lts-card--pd .lts-card__visual {
  background: linear-gradient(135deg, #C060BC 0%, #963A94 55%, #4A2478 100%);
}

.lts-card--pe .lts-card__visual {
  background: linear-gradient(135deg, #8585CC 0%, #C060BC 100%);
}

/* ─── Chip ring accent colors (paleta.png) ─────────────────────── */
.lts-card--pa {
  --lts-chip: #9183B5;
}

.lts-card--pb {
  --lts-chip: #8585CC;
}

.lts-card--pc {
  --lts-chip: #68A8D8;
}

.lts-card--pd {
  --lts-chip: #C060BC;
}

.lts-card--pe {
  --lts-chip: #CCA0DD;
}

/* ─── Chips ─────────────────────────────────────────────────────── */
.lts-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1rem;
  margin: 0.35rem 0 0.1rem;
}

/* Chips arriba del título (categoría) — más compacta para no separar
   demasiado del título que viene a continuación */
.lts-chips--top {
  margin: 0 0 0.15rem;
}

/* Chips abajo del título (precio) — un poco de aire arriba */
.lts-chips--bottom {
  margin: 0.55rem 0 0.1rem;
}

.lts-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.lts-chip__ring {
  position: relative;
  width: 44px;
  height: 44px;
  flex-shrink: 0;
}

.lts-chip__ring svg {
  position: absolute;
  inset: 0;
  transform: rotate(-90deg);
  overflow: visible;
}

.lts-chip__track {
  fill: none;
  stroke: rgba(145, 131, 181, 0.22);
  stroke-width: 2.5;
}

.lts-card--hero .lts-chip__track {
  stroke: rgba(255, 255, 255, 0.2);
}

/* r=17 → circumference = 2π×17 ≈ 107 */
.lts-chip__arc {
  fill: none;
  stroke: var(--lts-chip, #9183B5);
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-dasharray: 107;
  stroke-dashoffset: 107;
  transition: stroke-dashoffset 1.4s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--lts-delay, 120ms);
}

.lts-card--hero .lts-chip__arc {
  stroke: rgba(255, 255, 255, 0.9);
}

.lts-card.is-visible .lts-chip__arc {
  stroke-dashoffset: 0;
}

.lts-chip__n {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--lts-chip, #9183B5);
  line-height: 1;
  pointer-events: none;
}

.lts-card--hero .lts-chip__n {
  color: #fff;
}

.lts-chip__lbl {
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1.35;
  max-width: 56px;
  color: var(--lt-text-soft);
}

.lts-card--hero .lts-chip__lbl {
  color: rgba(255, 255, 255, 0.82);
}

/* ═════ Editor (services-grid) ═════ */
.lt-services-grid-edit .lts-card {
  cursor: default;
}

.lt-services-grid-edit .lts-card:hover {
  transform: none;
  box-shadow: 0 4px 16px rgba(28, 16, 48, 0.06);
}

/* Quita los overlays oscuros que tapan el área editable
   (en frontend sí se necesitan para legibilidad sobre imágenes) */
.lt-services-grid-edit .lts-card--hero::after,
.lt-services-grid-edit .lts-card--has-img .lts-card__visual::before {
  display: none;
}

.lt-services-grid-edit .lts-edit-toolbar {
  position: absolute;
  top: 0.6rem;
  right: 0.6rem;
  z-index: 10;
  display: flex;
  gap: 0.25rem;
  padding: 0.2rem;
  background: rgba(28, 16, 48, 0.85);
  border-radius: 4px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  opacity: 0;
  transition: opacity 0.2s ease;
}

.lt-services-grid-edit .lts-card:hover .lts-edit-toolbar,
.lt-services-grid-edit .lts-card:focus-within .lts-edit-toolbar {
  opacity: 1;
}

.lt-services-grid-edit .lts-edit-toolbar__btn.components-button {
  color: #fff;
  min-width: 26px;
  height: 26px;
  padding: 0;
}

.lt-services-grid-edit .lts-edit-toolbar__btn.components-button:hover:not(:disabled) {
  color: #fff;
  background: rgba(255, 255, 255, 0.15);
}

.lt-services-grid-edit .lts-edit-img {
  position: absolute;
  bottom: 0.6rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  gap: 0.4rem;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.lt-services-grid-edit .lts-card:hover .lts-edit-img,
.lt-services-grid-edit .lts-card:focus-within .lts-edit-img {
  opacity: 1;
}

.lt-services-grid-edit .lts-edit-img__btn.components-button {
  background: rgba(28, 16, 48, 0.85);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.2);
}

.lt-services-grid-edit .lts-edit-img__btn.components-button:hover {
  background: rgba(28, 16, 48, 0.95);
  color: #fff;
}

.lt-services-grid-edit .lts-card__body [contenteditable]:empty::before {
  color: rgba(122, 106, 144, 0.55);
}

.lt-services-grid-edit .lts-card--hero .lts-card__body [contenteditable]:empty::before {
  color: rgba(255, 255, 255, 0.55);
}

/* Botón "+" para añadir card */
.lt-services-grid-edit .lts-edit-add {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 0.6rem;
  min-height: 440px;
  border-radius: 28px;
  border: 2px dashed rgba(107, 58, 150, 0.35);
  background: rgba(247, 244, 255, 0.5);
  color: var(--wp--preset--color--primario);
  cursor: pointer;
  font-family: inherit;
  transition: background 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}

.lt-services-grid-edit .lts-edit-add:hover {
  background: rgba(192, 96, 188, 0.08);
  border-color: var(--wp--preset--color--secundario);
  color: var(--wp--preset--color--secundario);
  transform: translateY(-2px);
}

.lt-services-grid-edit .lts-edit-add__icon {
  font-size: 3rem;
  font-weight: 300;
  line-height: 1;
}

.lt-services-grid-edit .lts-edit-add__label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.lt-services-grid-edit .lts-edit-add.lts-card--hero {
  grid-column: span 3;
}

.lt-services-grid-edit .lts-edit-add.lts-card--split {
  grid-column: span 2;
}

/* ═════ Responsive ═════ */
@media (max-width: 1000px) {
  .lts-services__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .lts-services__grid> :nth-child(1),
  .lts-services__grid> :nth-child(2) {
    grid-column: span 1;
  }

  .lts-services__grid> :nth-child(3),
  .lts-services__grid> :nth-child(4) {
    grid-column: span 1;
  }

  .lts-services__grid> :nth-child(5) {
    grid-column: 1 / -1;
  }

  .lts-card {
    min-height: 400px;
  }
}

@media (max-width: 620px) {
  .lts-services__grid {
    grid-template-columns: 1fr;
  }

  .lts-services__grid>* {
    grid-column: span 1 !important;
  }

  .lts-card {
    min-height: 380px;
    border-radius: 22px;
  }

  .lts-card__num {
    top: 1rem;
    left: 1.1rem;
    font-size: 0.78rem;
  }

  .lts-card--hero .lts-card__body {
    padding: 1.5rem 1.4rem 1.5rem;
  }

  .lts-card--split .lts-card__body {
    padding: 1.25rem 1.25rem 1.4rem;
  }
}

/* ═══════════════════════════════════════════════════════
   CONTACT PAGE  (ltc-*)
═══════════════════════════════════════════════════════ */
.ltc-contact {
  position: relative;
  padding: 0 0 clamp(5rem, 10vw, 8rem);
  overflow: hidden;
  isolation: isolate;
}

/* ═══ Banner / Hero ═══ */
.ltc-contact__banner {
  position: relative;
  width: 100%;
  min-height: clamp(200px, 30vw, 320px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1.25rem, 4vw, 3rem);
  overflow: hidden;
  isolation: isolate;
  background-color: #1C1030;
  margin-bottom: clamp(3rem, 6vw, 5rem);
}

/* Capa de imagen para parallax */
.ltc-contact__banner-bg {
  position: absolute;
  inset: -60% 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  will-change: transform;
  transform: translate3d(0, 0, 0);
  pointer-events: none;
}

/* Overlay oscuro con gradiente */
.ltc-contact__banner-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.55) 0%,
      rgba(36, 0, 96, 0.70) 50%,
      rgba(28, 16, 48, 0.85) 100%);
  pointer-events: none;
}

/* Cuando tiene imagen de fondo, el overlay se oscurece más */
.ltc-contact__banner--has-img .ltc-contact__banner-overlay {
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.45) 0%,
      rgba(36, 0, 96, 0.55) 40%,
      rgba(28, 16, 48, 0.80) 100%);
}

/* Aurora decorativa sutil dentro del banner */
.ltc-contact__banner-aurora {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    radial-gradient(55% 50% at 20% 25%, rgba(192, 96, 188, 0.25) 0%, transparent 70%),
    radial-gradient(50% 50% at 80% 10%, rgba(133, 133, 204, 0.30) 0%, transparent 70%),
    radial-gradient(40% 40% at 50% 80%, rgba(107, 58, 150, 0.20) 0%, transparent 70%);
  filter: blur(40px);
  pointer-events: none;
  mix-blend-mode: screen;
}

/* Con imagen real reducimos la aurora */
.ltc-contact__banner--has-img .ltc-contact__banner-aurora {
  opacity: 0.4;
}

/* Header centrado sobre el banner */
.ltc-contact__head {
  position: relative;
  z-index: 3;
  max-width: 980px;
  margin: 0 auto;
  text-align: center;
}

.ltc-contact__eyebrow {
  display: inline-block;
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.75);
  font-weight: 600;
  margin-bottom: 1.1rem;
}

.ltc-contact__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(2.5rem, 6vw, 4.75rem);
  line-height: 1.0;
  letter-spacing: -0.018em;
  font-weight: 500;
  color: #fff;
  margin: 0 0 1.2rem;
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.25);
}

.ltc-contact__title em {
  font-style: italic;
  font-weight: 500;
  background: linear-gradient(90deg,
      #E8C7EB 0%, #C060BC 18%, #8585CC 36%,
      #B8AAEE 50%, #E8C7EB 64%, #C060BC 82%, #8585CC 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: lt-iridescent 4s linear infinite;
}

.ltc-contact__sub {
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.80);
  max-width: 640px;
  margin: 0 auto;
}

/* Grid 2 columnas */
.ltc-contact__grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: clamp(1.25rem, 2.2vw, 2rem);
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
  align-items: stretch;
}

/* ══════ Columna info — estilo editorial claro ══════ */
.ltc-info {
  display: flex;
}

.ltc-info__card {
  position: relative;
  width: 100%;
  padding: clamp(1.8rem, 3vw, 2.75rem);
  border-radius: 28px;
  background: #fff;
  border: 1px solid #ECE5F5;
  color: #1C1030;
  box-shadow: 0 20px 50px rgba(28, 16, 48, 0.08);
  overflow: hidden;
  isolation: isolate;
}

.ltc-info__card::before {
  content: "";
  position: absolute;
  top: -30%;
  right: -20%;
  width: 60%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, rgba(192, 96, 188, 0.10), transparent 70%);
  filter: blur(30px);
  z-index: -1;
}

.ltc-info__card::after {
  content: "";
  position: absolute;
  bottom: -40%;
  left: -15%;
  width: 55%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 70% 70%, rgba(133, 133, 204, 0.10), transparent 65%);
  filter: blur(30px);
  z-index: -1;
}

.ltc-info__kicker {
  display: inline-block;
  font-size: 0.74rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #240060;
  font-weight: 600;
  margin-bottom: 0.85rem;
}

.ltc-info__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.85rem, 2.4vw, 2.35rem);
  font-weight: 600;
  letter-spacing: -0.012em;
  line-height: 1.05;
  margin: 0 0 0.7rem;
  color: #1C1030;
}

.ltc-info__title em {
  font-style: italic;
  font-weight: 500;
  background: linear-gradient(120deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.ltc-info__lead {
  font-size: 0.96rem;
  line-height: 1.6;
  color: #6B6280;
  margin: 0 0 2rem;
}

.ltc-info__list {
  list-style: none;
  padding: 0;
  margin: 0 0 1.5rem;
  display: flex;
  flex-direction: column;
}

.ltc-info__item {
  position: relative;
  display: grid;
  grid-template-columns: auto 44px 1fr;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.15rem 0;
  border-top: 1px solid #EFEAF7;
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.ltc-info__item:last-child {
  border-bottom: 1px solid #EFEAF7;
}

.ltc-info__item:hover {
  transform: translateX(4px);
}

.ltc-info__num {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.45rem;
  font-weight: 500;
  font-style: italic;
  letter-spacing: -0.02em;
  color: #C060BC;
  padding-top: 0.35rem;
  min-width: 1.6rem;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.ltc-info__icon {
  position: relative;
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background:
    radial-gradient(circle at 30% 30%, rgba(232, 199, 235, 0.55), transparent 60%),
    linear-gradient(135deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  color: #fff;
  box-shadow: 0 6px 18px rgba(107, 58, 150, 0.28);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.4s ease;
}

.ltc-info__icon::before {
  content: "";
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(192, 96, 188, 0.35), transparent 70%);
  opacity: 0;
  transition: opacity 0.4s ease;
  z-index: -1;
}

.ltc-info__item:hover .ltc-info__icon {
  transform: scale(1.08);
  box-shadow: 0 10px 24px rgba(107, 58, 150, 0.40);
}

.ltc-info__item:hover .ltc-info__icon::before {
  opacity: 1;
}

.ltc-info__icon svg {
  width: 20px;
  height: 20px;
}

.ltc-info__txt {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.ltc-info__label {
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
  color: #8A7FA4;
}

.ltc-info__value {
  color: #1C1030;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  word-break: break-word;
  transition: color 0.2s ease;
}

a.ltc-info__value:hover {
  color: #6B3A96;
}

.ltc-info__value--soft {
  color: #6B6280;
  font-size: 0.9rem;
  font-weight: 400;
}

.ltc-info__footer {
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid #EFEAF7;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}

.ltc-info__footer-label {
  font-size: 0.74rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  color: #6B3A96;
}

.ltc-info__socials {
  display: flex;
  gap: 0.55rem;
}

.ltc-info__social {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: #F7F2FB;
  border: 1px solid #ECE5F5;
  color: #6B3A96;
  transition: background 0.25s ease, color 0.25s ease, transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

.ltc-info__social:hover {
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  color: #fff;
  transform: translateY(-2px);
  border-color: transparent;
}

.ltc-info__social svg {
  width: 17px;
  height: 17px;
}

/* ══════ Columna formulario ══════ */
.ltc-form-wrap {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.ltc-form {
  position: relative;
  background: #fff;
  padding: clamp(1.8rem, 3vw, 2.75rem);
  border-radius: 28px;
  border: 1px solid #ECE5F5;
  box-shadow: 0 20px 50px rgba(28, 16, 48, 0.08);
}

.ltc-form__title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: clamp(1.7rem, 2.2vw, 2.1rem);
  font-weight: 600;
  letter-spacing: -0.012em;
  color: #1C1030;
  margin: 0 0 0.55rem;
  line-height: 1.1;
}

.ltc-form__lead {
  font-size: 0.95rem;
  line-height: 1.55;
  color: #6B6280;
  margin: 0 0 1.8rem;
}

.ltc-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1rem;
}

.ltc-form__field {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  margin-bottom: 1rem;
  min-width: 0;
}

.ltc-form__row .ltc-form__field {
  margin-bottom: 0;
}

.ltc-form__label {
  font-size: 0.76rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 600;
  color: #6B3A96;
}

.ltc-form__field input,
.ltc-form__field textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 0.85rem 1rem;
  border: 1px solid #E0D6EE;
  border-radius: 12px;
  background: #FBF9FE;
  font-size: 0.95rem;
  font-family: inherit;
  color: #1C1030;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.ltc-form__field input:focus,
.ltc-form__field textarea:focus {
  outline: none;
  border-color: var(--lt-blue-light);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(168, 194, 229, 0.28);
}

.ltc-form__field textarea {
  resize: vertical;
  min-height: 120px;
}

.ltc-form__field input::placeholder,
.ltc-form__field textarea::placeholder {
  color: #A69BB9;
}

/* Captcha Turnstile centrado */
.ltc-form__captcha {
  margin-top: 1.2rem;
  display: flex;
  justify-content: center;
}

/* Wrapper centra el botón */
.ltc-form__actions {
  margin-top: 1.4rem;
  display: flex;
  justify-content: center;
}

.ltc-form__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  padding: 1rem 2.4rem;
  background: linear-gradient(120deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  background-size: 200% 100%;
  background-position: 0% 50%;
  color: #fff;
  border: none;
  border-radius: 999px;
  font-size: 0.82rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  cursor: pointer;
  transition: background-position 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease;
  box-shadow: 0 12px 30px rgba(192, 96, 188, 0.32);
}

.ltc-form__btn:hover {
  background-position: 100% 50%;
  transform: translateY(-2px);
  box-shadow: 0 18px 40px rgba(192, 96, 188, 0.42);
}

.ltc-form__legal {
  text-align: center;
}

.ltc-form__btn svg {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.ltc-form__btn:hover svg {
  transform: translateX(4px);
}

.ltc-form__legal {
  margin-top: 1.1rem;
  font-size: 0.78rem;
  color: #8A7FA4;
  line-height: 1.55;
}

/* Flash messages */
.ltc-flash {
  padding: 0.9rem 1.1rem;
  border-radius: 14px;
  font-size: 0.9rem;
  margin-bottom: 0.6rem;
}

.ltc-flash--ok {
  background: #E8F7EE;
  color: #1F6B3A;
  border: 1px solid #B9E5C9;
}

.ltc-flash--err {
  background: #FBE9E9;
  color: #8B1A1A;
  border: 1px solid #F1BCBC;
}

/* ═════ Editor (contact-info-form) ═════ */
.lt-contact-edit {
  position: relative;
}

.lt-contact-edit .ltc-info__value [contenteditable]:empty::before,
.lt-contact-edit .ltc-info__kicker [contenteditable]:empty::before,
.lt-contact-edit .ltc-info__lead [contenteditable]:empty::before,
.lt-contact-edit .ltc-form__title [contenteditable]:empty::before,
.lt-contact-edit .ltc-form__lead [contenteditable]:empty::before {
  color: rgba(122, 106, 144, 0.55);
  font-style: italic;
}

/* Indicador de idioma activo (top-right del bloque, solo en editor) */
.lt-lang-pill {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  z-index: 50;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #fff;
  background: rgba(107, 58, 150, 0.92);
  padding: 0.4rem 0.7rem;
  border-radius: 4px;
  pointer-events: none;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

/* Anclaje para que el .lt-lang-pill quede dentro de cada bloque editable */
.lt-payments-edit,
.lt-services-grid-edit,
.lt-gallery-mosaic-edit,
.ltg-banner-edit {
  position: relative;
}

.lt-contact-edit .ltc-info__title [contenteditable]:empty::before {
  color: rgba(122, 106, 144, 0.45);
  font-style: italic;
}

/* Form en editor: campos disabled visualmente claros */
.lt-contact-edit .ltc-form__field input,
.lt-contact-edit .ltc-form__field textarea {
  cursor: not-allowed;
  background: rgba(247, 244, 255, 0.5);
}

.lt-contact-edit .ltc-form__btn {
  cursor: default;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  pointer-events: none;
}

/* ══════ Métodos de pago — editorial, alineado con contacto ══════ */
.wp-block-lagunastravel-payment-methods {
  display: block;
  width: 100%;
  overflow: hidden;
  box-sizing: border-box;
}

.ltc-payments {
  position: relative;
  max-width: 1240px;
  margin: clamp(2.5rem, 5vw, 4rem) auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
  isolation: isolate;
  box-sizing: border-box;
  overflow: hidden;
}

.ltc-payments__head {
  text-align: center;
  margin-bottom: clamp(1.5rem, 2.4vw, 2rem);
}

.ltc-payments__kicker {
  display: inline-block;
  font-size: 0.74rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #240060;
  font-weight: 600;
  margin-bottom: 0.7rem;
}

.ltc-payments__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.85rem, 2.6vw, 2.4rem);
  font-weight: 600;
  letter-spacing: -0.012em;
  line-height: 1.1;
  color: #1C1030;
  margin: 0;
}

.ltc-payments__title em {
  font-style: italic;
  font-weight: 500;
  background: linear-gradient(120deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* Cards de pago — separadas, redondeadas, con halo decorativo */
.ltc-pay-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1rem, 1.8vw, 1.5rem);
}

.ltc-pay-cards--three {
  grid-template-columns: repeat(3, 1fr);
}

.ltc-pay-card {
  --pay-accent: #6B3A96;
  --pay-accent-2: #C060BC;
  --pay-tint: rgba(192, 96, 188, 0.08);
  --pay-tint-2: rgba(133, 133, 204, 0.08);
  position: relative;
  background:
    linear-gradient(90deg, var(--pay-accent), var(--pay-accent-2)) top/100% 4px no-repeat,
    #fff;
  border: 1px solid #ECE5F5;
  border-radius: 28px;
  padding: clamp(1.5rem, 2.4vw, 2rem);
  box-shadow: 0 16px 40px rgba(28, 16, 48, 0.07);
  overflow: hidden;
  isolation: isolate;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.4s ease, border-color 0.4s ease;
}

/* ── Variantes de marca ── */
.ltc-pay-card--yape {
  --pay-accent: #7C2D8C;
  --pay-accent-2: #C060BC;
  --pay-tint: rgba(124, 45, 140, 0.10);
  --pay-tint-2: rgba(192, 96, 188, 0.10);
  background:
    linear-gradient(90deg, var(--pay-accent), var(--pay-accent-2)) top/100% 4px no-repeat,
    linear-gradient(180deg, #FCF7FE 0%, #ffffff 60%);
}

.ltc-pay-card--interbank {
  --pay-accent: #00A551;
  --pay-accent-2: #2BCC7C;
  --pay-tint: rgba(0, 165, 81, 0.10);
  --pay-tint-2: rgba(43, 204, 124, 0.08);
  background:
    linear-gradient(90deg, var(--pay-accent), var(--pay-accent-2)) top/100% 4px no-repeat,
    linear-gradient(180deg, #F4FBF7 0%, #ffffff 60%);
}

.ltc-pay-card--usd {
  --pay-accent: #BC8B2C;
  --pay-accent-2: #E6C36A;
  --pay-tint: rgba(188, 139, 44, 0.10);
  --pay-tint-2: rgba(230, 195, 106, 0.10);
  background:
    linear-gradient(90deg, var(--pay-accent), var(--pay-accent-2)) top/100% 4px no-repeat,
    linear-gradient(180deg, #FDF9EF 0%, #ffffff 60%);
}

/* Currency badge (PEN/USD) — pill arriba a la derecha del header */
.ltc-pay-card__currency {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  padding: 0.35em 0.7em;
  border-radius: 999px;
  background: var(--pay-accent);
  color: #fff;
  text-transform: uppercase;
  flex-shrink: 0;
}

.ltc-pay-card__currency--pen {
  background: linear-gradient(135deg, #00A551 0%, #2BCC7C 100%);
}

.ltc-pay-card__currency--usd {
  background: linear-gradient(135deg, #BC8B2C 0%, #E6C36A 100%);
  color: #1C1030;
}

.ltc-pay-card::before {
  content: "";
  position: absolute;
  top: -30%;
  right: -15%;
  width: 50%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, var(--pay-tint), transparent 70%);
  filter: blur(30px);
  z-index: -1;
}

.ltc-pay-card::after {
  content: "";
  position: absolute;
  bottom: -35%;
  left: -10%;
  width: 45%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 70% 70%, var(--pay-tint-2), transparent 65%);
  filter: blur(28px);
  z-index: -1;
}

.ltc-pay-card:hover {
  transform: translateY(-4px);
  border-color: color-mix(in srgb, var(--pay-accent) 30%, #ECE5F5);
  box-shadow: 0 28px 56px color-mix(in srgb, var(--pay-accent) 15%, rgba(28, 16, 48, 0.10));
}

/* Header con dot decorativo + marca + línea sutil */
.ltc-pay-card__head {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  flex-wrap: wrap;
  row-gap: 0.5rem;
  margin-bottom: 1.2rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid #EFEAF7;
}

.ltc-pay-card__head::before {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--pay-accent), var(--pay-accent-2));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--pay-accent) 18%, transparent);
  flex-shrink: 0;
}

/* Si la card tiene logo, ocultamos el dot decorativo */
.ltc-pay-card.has-logo .ltc-pay-card__head::before {
  display: none;
}

.ltc-pay-card__brand {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: -0.005em;
  color: var(--pay-accent);
}

/* Logo del banco/marca — sustituye al brand text. Fluido por viewport. */
.ltc-pay-card__logo {
  display: block;
  height: clamp(24px, 3.4vw, 32px);
  width: auto;
  max-width: clamp(90px, 22vw, 140px);
  object-fit: contain;
  object-position: left center;
  flex-shrink: 1;
  min-width: 0;
}

/* Cuerpo */
.ltc-pay-card__body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.ltc-pay-card__qr {
  display: flex;
  justify-content: center;
  padding: 0.4rem 0;
}

.ltc-pay-card__qr img {
  width: 160px;
  height: 160px;
  padding: 8px;
  background: #fff;
  border: 1px solid #ECE5F5;
  border-radius: 14px;
  box-shadow: 0 8px 22px rgba(28, 16, 48, 0.06);
  display: block;
}

/* Lista clave/valor — editorial */
.ltc-pay-card__info {
  margin: 0;
  display: flex;
  flex-direction: column;
}

.ltc-pay-card__row {
  display: grid;
  grid-template-columns: 80px 1fr;
  align-items: center;
  gap: 0.85rem;
  padding: 0.7rem 0;
  border-top: 1px solid #EFEAF7;
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.ltc-pay-card__row:first-child {
  border-top: none;
  padding-top: 0;
}

.ltc-pay-card__row:hover {
  transform: translateX(3px);
}

.ltc-pay-card__row dt {
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
  color: #8A7FA4;
  margin: 0;
}

.ltc-pay-card__row dd {
  margin: 0;
  font-size: 0.95rem;
  color: #1C1030;
  font-weight: 500;
  min-width: 0;
}

.ltc-pay-card__value--mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 0.88rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: #1C1030;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-all;
  flex: 1 1 0;
}

/* Bloque copy-to-clipboard — pill suave que se llena con gradiente al hover */
.ltc-pay-card__copy {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  flex-wrap: wrap;
  min-width: 0;
}

.ltc-pay-card__copy-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  background: color-mix(in srgb, var(--pay-accent) 6%, #fff);
  border: 1px solid color-mix(in srgb, var(--pay-accent) 20%, #ECE5F5);
  color: var(--pay-accent);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 0.5em 0.9em;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease,
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.25s ease;
  flex-shrink: 0;
}

.ltc-pay-card__copy-btn:hover {
  background: linear-gradient(135deg, var(--pay-accent) 0%, var(--pay-accent-2) 100%);
  color: #fff;
  border-color: transparent;
  transform: translateY(-1px);
  box-shadow: 0 8px 18px color-mix(in srgb, var(--pay-accent) 35%, transparent);
}

.ltc-pay-card--usd .ltc-pay-card__copy-btn:hover {
  color: #1C1030;
}

.ltc-pay-card__copy-btn svg {
  flex-shrink: 0;
}

.ltc-pay-card__copy.is-copied .ltc-pay-card__copy-btn {
  background: linear-gradient(135deg, #2E7D4F 0%, #4FAA76 100%);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 6px 16px rgba(46, 125, 79, 0.28);
}

.ltc-pay-card__copy.is-copied .ltc-pay-card__copy-btn::before {
  content: "✓";
  margin-right: 2px;
  font-weight: 700;
}

/* Nota al pie — caja editorial con barra gradiente */
.ltc-payments__note {
  position: relative;
  margin-top: clamp(1.5rem, 2.4vw, 2rem);
  padding: 1rem 1.25rem 1rem 1.5rem;
  font-size: 0.86rem;
  line-height: 1.6;
  color: #6B6280;
  background: linear-gradient(135deg, #FBF9FE 0%, #F7F2FB 100%);
  border: 1px solid #ECE5F5;
  border-radius: 14px;
  overflow: hidden;
}

.ltc-payments__note::before {
  content: "";
  position: absolute;
  left: 0;
  top: 14%;
  bottom: 14%;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: linear-gradient(180deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
}

/* Responsive */
@media (max-width: 960px) {
  .ltc-contact__grid {
    grid-template-columns: 1fr;
  }

  .ltc-info__card {
    min-height: auto;
  }
}

@media (max-width: 1023px) {
  .ltc-pay-cards--three {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 760px) {

  .ltc-pay-cards,
  .ltc-pay-cards--three {
    grid-template-columns: 1fr;
  }

  .ltc-pay-card__row {
    grid-template-columns: 72px 1fr;
  }
}

@media (max-width: 620px) {
  .ltc-form__row {
    grid-template-columns: 1fr;
  }

  .ltc-info__item {
    grid-template-columns: auto 40px 1fr;
    gap: 0.75rem;
    padding: 1rem 0;
  }

  .ltc-info__icon {
    width: 40px;
    height: 40px;
  }

  .ltc-pay-card {
    padding: 1.4rem;
    border-radius: 20px;
  }

  .ltc-pay-card__qr img {
    width: 180px;
    height: 180px;
  }

  .ltc-pay-card__copy-btn {
    padding: 0.45em 0.75em;
    font-size: 0.66rem;
  }

  /* Logo y currency pill — más compactos en mobile */
  .ltc-pay-card__logo {
    height: 26px;
    max-width: 110px;
  }

  .ltc-pay-card__currency {
    font-size: 0.58rem;
    padding: 0.3em 0.6em;
    letter-spacing: 0.1em;
  }

  .ltc-pay-card__brand {
    font-size: 1rem;
  }
}

/* ── Tablet: pagos + banners ── */
@media (min-width: 600px) and (max-width: 1023px) {
  .ltc-payments {
    padding: 0 2rem;
  }

  .ltc-pay-cards {
    gap: 1rem;
  }

  .ltc-pay-card {
    padding: 1.5rem;
    border-radius: 20px;
  }

  .ltc-pay-card__qr img {
    width: 140px;
    height: 140px;
  }

  .ltc-pay-card__logo {
    height: 28px;
    max-width: 120px;
  }

  .ltc-pay-card__currency {
    font-size: 0.6rem;
    padding: 0.32em 0.65em;
  }

  .ltc-payments__note {
    font-size: 0.82rem;
    padding: 0.85rem 1rem 0.85rem 1.3rem;
  }

  /* Banners — tours, servicios, galería, contacto */
  .lt-tp__hero {
    padding: 4rem 2rem 2.75rem;
  }

  .ltg-banner {
    min-height: clamp(180px, 28vw, 300px);
    padding: clamp(2.25rem, 4vw, 3.5rem) 2rem clamp(3.5rem, 6vw, 5rem);
  }

  .ltc-contact__banner {
    min-height: clamp(180px, 26vw, 280px);
    padding: clamp(2rem, 4vw, 3rem) 2rem;
  }

  .ltgal-banner {
    min-height: clamp(200px, 28vw, 320px);
  }
}

/* ── Mobile: pagos + banners ── */
@media (max-width: 599px) {
  .ltc-payments {
    padding: 0 1.25rem;
    margin: 2.5rem auto;
  }

  .ltc-payments__title {
    font-size: clamp(1.5rem, 6vw, 1.85rem);
  }

  .ltc-pay-cards {
    grid-template-columns: 1fr;
    gap: 1rem;
  }

  .ltc-pay-card {
    padding: 1.25rem;
    border-radius: 18px;
  }

  .ltc-pay-card__qr img {
    width: 150px;
    height: 150px;
  }

  .ltc-pay-card__row {
    grid-template-columns: 68px 1fr;
    gap: 0.6rem;
    padding: 0.6rem 0;
  }

  .ltc-pay-card__copy {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
  }

  .ltc-payments__note {
    font-size: 0.8rem;
    padding: 0.75rem 0.9rem 0.75rem 1.2rem;
    border-radius: 12px;
  }

  /* Banners — tours, servicios, galería, contacto */
  .lt-tp__hero {
    padding: 3.5rem 1.25rem 2.5rem;
  }

  .lt-tp__title {
    font-size: clamp(1.85rem, 7vw, 2.5rem);
  }

  .lt-tp__sub {
    font-size: 0.92rem;
  }

  .ltg-banner {
    min-height: clamp(160px, 40vw, 240px);
    padding: clamp(2rem, 4vw, 3rem) 1rem clamp(4.5rem, 8vw, 5.5rem);
    gap: 1.25rem;
  }

  .ltg-head__title {
    font-size: clamp(1.75rem, 7vw, 2.5rem);
  }

  .ltg-head__eyebrow {
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    margin-bottom: 0.6rem;
  }

  .ltg-head__sub {
    font-size: 0.88rem;
    line-height: 1.55;
  }

  /* Filtros: pills compactas y centradas */
  .ltg-filters {
    gap: 6px;
    padding: 0 0.5rem;
  }

  .ltg-pill {
    font-size: 0.74rem;
    padding: 0.38em 0.95em;
    border-width: 1px;
  }

  /* Toolbar: padding interno menor y botón sin texto */
  .ltg-toolbar {
    width: calc(100% - 1.5rem);
    padding: 0.4rem 0.4rem 0.4rem 1rem;
    border-radius: 999px;
  }

  .ltg-search__icon {
    margin-right: 0.5rem;
  }

  .ltg-search__icon svg {
    width: 16px;
    height: 16px;
  }

  .ltg-search__input {
    font-size: 0.92rem;
    min-width: 0;
  }

  .ltg-search__btn {
    padding: 0.55em 0.75em;
    font-size: 0.85rem;
    width: 36px;
    height: 36px;
    border-radius: 50%;
  }

  .ltg-search__btn-text {
    display: none;
  }

  .ltg-search__btn-icon {
    display: inline-block;
  }

  /* Sección de grid: top padding compensa el toolbar más bajo */
  .ltg-section {
    padding: clamp(4rem, 9vw, 5.5rem) 1rem 4rem;
  }

  .ltg-grid,
  .lts-services__grid.ltg-grid {
    grid-template-columns: 1fr !important;
    gap: 18px;
    padding: 0;
  }

  .lts-services__grid.ltg-grid>.lts-card--hero,
  .lts-services__grid.ltg-grid>.lts-card--split {
    grid-column: auto !important;
  }

  .ltc-contact__banner {
    min-height: clamp(160px, 35vw, 220px);
    padding: clamp(2rem, 4vw, 3rem) 1.25rem;
  }

  .ltc-contact__title {
    font-size: clamp(2rem, 8vw, 3rem);
  }

  .ltc-contact__sub {
    font-size: 0.9rem;
  }

  .ltgal-banner {
    min-height: clamp(160px, 35vw, 240px);
  }
}

@media (min-width: 600px) and (max-width: 1023px) {

  .ltg-grid,
  .lts-services__grid.ltg-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }

  .lts-services__grid.ltg-grid>.lts-card--hero,
  .lts-services__grid.ltg-grid>.lts-card--split {
    grid-column: auto !important;
  }
}

/* ═══════════════════════════════════════════════════════
   GALLERY PAGE  (ltgal-*)
   Banner editorial + mosaico curado + lightbox.
═══════════════════════════════════════════════════════ */
.ltgal {
  position: relative;
  padding: 0 0 clamp(5rem, 9vw, 7rem);
  background: #fbfaff;
  isolation: isolate;
}

/* ── Banner ── */
.ltgal-banner {
  position: relative;
  width: 100%;
  min-height: clamp(260px, 36vw, 420px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(3rem, 6vw, 5rem) clamp(1.25rem, 4vw, 3rem);
  overflow: hidden;
  isolation: isolate;
  background-color: #1C1030;
  margin-bottom: clamp(3rem, 6vw, 5rem);
}

.ltgal-banner-bg {
  position: absolute;
  inset: -60% 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  will-change: transform;
  transform: translate3d(0, 0, 0);
  pointer-events: none;
}

.ltgal-banner-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.55) 0%,
      rgba(36, 0, 96, 0.70) 50%,
      rgba(28, 16, 48, 0.85) 100%);
  pointer-events: none;
}

.ltgal-banner--has-img .ltgal-banner-overlay {
  background: linear-gradient(180deg,
      rgba(28, 16, 48, 0.40) 0%,
      rgba(36, 0, 96, 0.55) 45%,
      rgba(28, 16, 48, 0.82) 100%);
}

.ltgal-banner-aurora {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    radial-gradient(55% 50% at 18% 28%, rgba(192, 96, 188, 0.28) 0%, transparent 70%),
    radial-gradient(50% 50% at 82% 12%, rgba(133, 133, 204, 0.32) 0%, transparent 70%),
    radial-gradient(40% 40% at 50% 80%, rgba(107, 58, 150, 0.22) 0%, transparent 70%);
  filter: blur(40px);
  pointer-events: none;
  mix-blend-mode: screen;
}

.ltgal-banner--has-img .ltgal-banner-aurora {
  opacity: 0.42;
}

.ltgal-banner__head {
  position: relative;
  z-index: 3;
  max-width: 880px;
  text-align: center;
  margin: 0 auto;
}

.ltgal-banner__eyebrow {
  display: inline-block;
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.78);
  font-weight: 600;
  margin-bottom: 1.1rem;
}

.ltgal-banner__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(2.5rem, 6vw, 4.75rem);
  line-height: 1.0;
  letter-spacing: -0.018em;
  font-weight: 500;
  color: #fff;
  margin: 0 0 1.2rem;
  text-shadow: 0 2px 22px rgba(0, 0, 0, 0.28);
}

.ltgal-banner__title em {
  font-style: italic;
  font-weight: 500;
  background: linear-gradient(90deg,
      #E8C7EB 0%, #C060BC 18%, #8585CC 36%,
      #B8AAEE 50%, #E8C7EB 64%, #C060BC 82%, #8585CC 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: lt-iridescent 4s linear infinite;
}

.ltgal-banner__sub {
  font-size: clamp(1rem, 1.4vw, 1.12rem);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.82);
  max-width: 640px;
  margin: 0 auto;
}

/* ── Métrica editorial ── */
.ltgal-stats {
  position: relative;
  max-width: 1180px;
  margin: 0 auto clamp(3rem, 5vw, 4rem);
  padding: 0 clamp(1.25rem, 4vw, 3rem);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1rem, 2vw, 2rem);
  align-items: end;
}

.ltgal-stats__line {
  position: absolute;
  left: 50%;
  top: -2.5rem;
  width: 1px;
  height: 2rem;
  background: linear-gradient(180deg, transparent 0%, #C060BC 100%);
  transform: translateX(-50%);
}

.ltgal-stat {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  text-align: center;
  padding: 0.5rem 0;
  border-top: 1px solid rgba(36, 0, 96, 0.12);
  position: relative;
}

.ltgal-stat::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 50%;
  width: 44px;
  height: 2px;
  background: linear-gradient(90deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  border-radius: 2px;
  transform: translateX(-50%);
}

.ltgal-stat__num {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.85rem, 3.4vw, 2.6rem);
  font-weight: 600;
  letter-spacing: -0.018em;
  color: #240060;
  margin-top: 0.6rem;
  line-height: 1;
}

.ltgal-stat__lbl {
  font-size: 0.78rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #6b6382;
  font-weight: 600;
}

/* ── Pestañas de filtro: Todos / Fotos / Videos ── */
.ltgal-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
  max-width: 1320px;
  margin: 0 auto clamp(1.5rem, 3vw, 2.5rem);
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}

.ltgal-filter {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: 'Plus Jakarta Sans', system-ui, sans-serif;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #6b6382;
  cursor: pointer;
  padding: 0.5rem 1.1rem;
  border-radius: 999px;
  background: #fff;
  border: 1px solid rgba(28, 16, 48, 0.12);
  transition: color 0.25s ease, background 0.25s ease, border-color 0.25s ease,
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.25s ease;
}

.ltgal-filter:hover {
  transform: translateY(-2px);
  color: #1c1030;
  box-shadow: 0 8px 20px rgba(28, 16, 48, 0.1);
}

.ltgal-filter.is-active {
  color: #fff;
  background: #C060BC;
  border-color: transparent;
  box-shadow: 0 10px 26px rgba(192, 96, 188, 0.28);
}

.ltgal-filter:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px #C060BC, 0 0 0 6px rgba(192, 96, 188, 0.25);
}

.ltgal-filter__n {
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.05rem 0.45rem;
  border-radius: 999px;
  background: rgba(28, 16, 48, 0.08);
  color: inherit;
}

.ltgal-filter.is-active .ltgal-filter__n {
  background: rgba(255, 255, 255, 0.25);
}

/* ── Mosaico ── */
.ltgal-mosaic {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: clamp(140px, 14vw, 200px);
  gap: clamp(0.6rem, 1vw, 1rem);
  grid-auto-flow: dense;
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}

/* Tiles ocultos: no ocupan espacio y, al estar display:none, el navegador
   no descarga sus imágenes lazy hasta que "Ver más" los revela. */
.ltgal-tile--hidden {
  display: none !important;
}

/* ── Botón "Ver más fotos" — flotante mientras la galería está en pantalla ── */
.ltgal-more {
  position: fixed;
  left: 50%;
  bottom: clamp(1rem, 3vw, 2rem);
  z-index: 60;
  display: flex;
  justify-content: center;
  margin: 0;
  padding: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateX(-50%) translateY(14px);
  transition: opacity 0.35s ease, transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0.35s ease;
}

.ltgal-more.is-shown {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}

/* Mientras el lightbox está abierto, ocultamos el flotante para que no se
   superponga al visor. */
html.ltgal-lb-open .ltgal-more {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateX(-50%) translateY(14px) !important;
}

@media (prefers-reduced-motion: reduce) {
  .ltgal-more {
    transition: opacity 0.2s ease, visibility 0.2s ease;
    transform: translateX(-50%);
  }
}

.ltgal-more__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: #1c1030;
  cursor: pointer;
  padding: 0.7rem 1.6rem;
  border-radius: 999px;
  background: #fff;
  border: 1px solid rgba(28, 16, 48, 0.12);
  box-shadow: 0 14px 38px rgba(28, 16, 48, 0.22), 0 4px 12px rgba(28, 16, 48, 0.12);
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.3s ease, background 0.25s ease, color 0.25s ease;
}

.ltgal-more__btn:hover {
  transform: translateY(-2px);
  background: #C060BC;
  color: #fff;
  border-color: transparent;
  box-shadow: 0 18px 40px rgba(192, 96, 188, 0.28);
}

.ltgal-more__btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px #C060BC, 0 0 0 6px rgba(192, 96, 188, 0.25);
}

.ltgal-more__count {
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  font-style: normal;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  padding: 0.12rem 0.5rem;
  border-radius: 999px;
  background: rgba(28, 16, 48, 0.08);
  color: inherit;
}

.ltgal-more__btn:hover .ltgal-more__count {
  background: rgba(255, 255, 255, 0.22);
}

/* ── Tarjeta del mosaico ── */
.ltgal-tile {
  position: relative;
  overflow: hidden;
  margin: 0;
  border-radius: 16px;
  background: #ece6f5;
  cursor: pointer;
  isolation: isolate;
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.7s ease, transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.45s ease;
  transition-delay: var(--ltgal-delay, 0ms);
  outline: none;
  box-shadow: 0 8px 22px rgba(28, 16, 48, 0.06);
}

.ltgal-tile.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.ltgal-tile.is-visible:hover {
  transform: translateY(-3px);
  box-shadow: 0 22px 48px rgba(28, 16, 48, 0.18);
  transition-delay: 0ms;
}

.ltgal-tile:focus-visible {
  box-shadow: 0 0 0 3px #C060BC, 0 0 0 6px rgba(192, 96, 188, 0.25);
}

.ltgal-tile--c1 {
  grid-column: span 1;
}

.ltgal-tile--c2 {
  grid-column: span 2;
}

.ltgal-tile--c3 {
  grid-column: span 3;
}

.ltgal-tile--c4 {
  grid-column: span 4;
}

.ltgal-tile--r1 {
  grid-row: span 1;
}

.ltgal-tile--r2 {
  grid-row: span 2;
}

.ltgal-tile--r3 {
  grid-row: span 3;
}

.ltgal-tile--r4 {
  grid-row: span 4;
}

/* Imagen */
.ltgal-tile__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.9s cubic-bezier(0.2, 0.7, 0.2, 1), filter 0.4s ease;
  filter: saturate(1.02);
}

.ltgal-tile:hover .ltgal-tile__img,
.ltgal-tile:focus-visible .ltgal-tile__img {
  transform: scale(1.07);
  filter: saturate(1.08);
}

/* Número de fotograma — chip discreto siempre visible */
.ltgal-tile__num {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  z-index: 3;
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-style: italic;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #fff;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: rgba(28, 16, 48, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.18);
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 0.35s ease, transform 0.35s ease, background 0.25s ease;
}

.ltgal-tile.is-visible .ltgal-tile__num {
  opacity: 0.9;
  transform: translateX(0);
}

.ltgal-tile:hover .ltgal-tile__num,
.ltgal-tile:focus-visible .ltgal-tile__num {
  opacity: 1;
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  border-color: transparent;
}

/* Caption */
.ltgal-tile__cap {
  position: absolute;
  inset: auto 0 0 0;
  z-index: 3;
  padding: 1.8rem 1.2rem 1.1rem;
  background: linear-gradient(180deg,
      transparent 0%,
      rgba(28, 16, 48, 0.55) 45%,
      rgba(28, 16, 48, 0.92) 100%);
  display: flex;
  flex-direction: column;
  gap: 0.22rem;
  transform: translateY(28%);
  opacity: 0;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.4s ease;
  pointer-events: none;
}

.ltgal-tile:hover .ltgal-tile__cap,
.ltgal-tile:focus-visible .ltgal-tile__cap {
  transform: translateY(0);
  opacity: 1;
}

.ltgal-tile__place {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: 1.2rem;
  font-weight: 600;
  color: #fff;
  letter-spacing: -0.01em;
  line-height: 1.15;
}

.ltgal-tile__note {
  font-size: 0.78rem;
  color: rgba(255, 255, 255, 0.82);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-weight: 500;
}

/* Icono de zoom — círculo blanco con + centrado en la imagen */
.ltgal-tile__zoom {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.4s ease;
}

.ltgal-tile__zoom::before {
  content: '';
  position: absolute;
  width: 48px;
  height: 48px;
  border: 1.5px solid rgba(255, 255, 255, 0.9);
  border-radius: 50%;
  background: rgba(192, 96, 188, 0.18);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  box-shadow: 0 8px 24px rgba(28, 16, 48, 0.35);
  transform: scale(0.72);
  transition: transform 0.4s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.ltgal-tile__zoom::after {
  content: '+';
  position: relative;
  z-index: 1;
  color: #fff;
  font-size: 1.7rem;
  font-weight: 300;
  line-height: 1;
  transform: scale(0.72);
  transition: transform 0.4s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.ltgal-tile:hover .ltgal-tile__zoom,
.ltgal-tile:focus-visible .ltgal-tile__zoom {
  opacity: 1;
}

.ltgal-tile:hover .ltgal-tile__zoom::before,
.ltgal-tile:focus-visible .ltgal-tile__zoom::before,
.ltgal-tile:hover .ltgal-tile__zoom::after,
.ltgal-tile:focus-visible .ltgal-tile__zoom::after {
  transform: scale(1);
}

/* Placeholder cuando no hay imagen aún */
.ltgal-tile--empty {
  background:
    radial-gradient(circle at 30% 20%, rgba(192, 96, 188, 0.10), transparent 60%),
    linear-gradient(135deg, #F7F2FB 0%, #ECE5F5 100%);
  border: 1px dashed rgba(107, 58, 150, 0.30);
  box-shadow: none;
  cursor: default;
}

.ltgal-tile__placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  color: #8b7eaf;
  font-size: 0.74rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
}

.ltgal-tile--empty .ltgal-tile__cap,
.ltgal-tile--empty .ltgal-tile__num,
.ltgal-tile--empty .ltgal-tile__zoom {
  display: none;
}

/* ── Cierre editorial ── */
.ltgal-credits {
  position: relative;
  max-width: 680px;
  margin: clamp(3.5rem, 6vw, 5rem) auto 0;
  padding: 1.5rem 2rem 1.5rem 2.2rem;
  text-align: left;
  font-size: 0.88rem;
  line-height: 1.7;
  color: #6B6280;
  background: linear-gradient(135deg, #FBF9FE 0%, #F7F2FB 100%);
  border: 1px solid #ECE5F5;
  border-radius: 16px;
  overflow: hidden;
}

.ltgal-credits::before {
  content: "";
  position: absolute;
  left: 0;
  top: 14%;
  bottom: 14%;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: linear-gradient(180deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
}

.ltgal-credits__line {
  display: none;
}

.ltgal-credits a {
  color: #6B3A96;
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(107, 58, 150, 0.35);
  transition: color 0.2s ease, border-color 0.2s ease;
}

.ltgal-credits a:hover {
  color: #C060BC;
  border-color: rgba(192, 96, 188, 0.55);
}

/* ═════ Editor (gallery-mosaic) ═════ */
.lt-gallery-mosaic-edit .ltgal-tile {
  cursor: default;
}

/* Captions siempre visibles en el editor (en frontend salen on hover) */
.lt-gallery-mosaic-edit .ltgal-tile__cap {
  transform: translateY(0);
  opacity: 1;
  pointer-events: auto;
}

/* También en tiles vacíos para poder editar place/note antes de subir imagen */
.lt-gallery-mosaic-edit .ltgal-tile--empty .ltgal-tile__cap,
.lt-gallery-mosaic-edit .ltgal-tile--empty .ltgal-tile__num {
  display: flex;
}

.lt-gallery-mosaic-edit .ltgal-tile--empty .ltgal-tile__num {
  display: inline-block;
}

.lt-gallery-mosaic-edit .ltgal-tile .ltgal-tile__num {
  opacity: 0.9;
  transform: translateX(0);
}

.lt-gallery-mosaic-edit .ltgal-tile--empty .ltgal-tile__cap {
  background: linear-gradient(180deg, transparent 0%, rgba(28, 16, 48, 0.78) 100%);
}

.lt-gallery-mosaic-edit .ltgal-tile--empty .ltgal-tile__placeholder {
  color: #8b7eaf;
}

/* Botón imagen sobre cada tile */
.lt-gallery-mosaic-edit .ltgal-edit-img {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 10;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  align-items: center;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.lt-gallery-mosaic-edit .ltgal-tile:hover .ltgal-edit-img,
.lt-gallery-mosaic-edit .ltgal-tile:focus-within .ltgal-edit-img,
.lt-gallery-mosaic-edit .ltgal-tile--empty .ltgal-edit-img {
  opacity: 1;
}

.lt-gallery-mosaic-edit .ltgal-edit-img__btn.components-button {
  background: rgba(28, 16, 48, 0.9);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.25);
}

.lt-gallery-mosaic-edit .ltgal-edit-img__btn.components-button:hover {
  background: rgba(28, 16, 48, 1);
  color: #fff;
}

/* RichText vacío con placeholder visible sobre fondo oscuro */
.lt-gallery-mosaic-edit .ltgal-tile__cap [contenteditable]:empty::before,
.lt-gallery-mosaic-edit .ltgal-stat [contenteditable]:empty::before {
  color: rgba(255, 255, 255, 0.45);
}

.lt-gallery-mosaic-edit .ltgal-credits [contenteditable]:empty::before {
  color: rgba(122, 106, 144, 0.55);
}

/* Quitar hover lift y zoom en editor */
.lt-gallery-mosaic-edit .ltgal-tile:hover,
.lt-gallery-mosaic-edit .ltgal-tile.is-visible:hover {
  transform: none;
  box-shadow: 0 8px 22px rgba(28, 16, 48, 0.06);
}

/* Drag-and-drop feedback */
.lt-gallery-mosaic-edit .ltgal-tile.is-dragging {
  opacity: 0.35;
}

.lt-gallery-mosaic-edit .ltgal-tile.is-drag-over {
  outline: 3px dashed var(--wp--preset--color--secundario);
  outline-offset: -3px;
}

/* Drag handle */
.lt-gallery-mosaic-edit .ltgal-edit-handle {
  position: absolute;
  top: 0.5rem;
  left: 0.5rem;
  z-index: 12;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: rgba(28, 16, 48, 0.85);
  color: #fff;
  border: 0;
  border-radius: 4px;
  cursor: grab;
  opacity: 0;
  transition: opacity 0.2s ease;
  font-size: 16px;
  line-height: 1;
}

.lt-gallery-mosaic-edit .ltgal-edit-handle:active {
  cursor: grabbing;
}

.lt-gallery-mosaic-edit .ltgal-tile:hover .ltgal-edit-handle,
.lt-gallery-mosaic-edit .ltgal-tile:focus-within .ltgal-edit-handle {
  opacity: 1;
}

/* Toolbar de tamaño + eliminar (esquina inferior derecha) */
.lt-gallery-mosaic-edit .ltgal-edit-tools {
  position: absolute;
  bottom: 0.5rem;
  right: 0.5rem;
  z-index: 12;
  display: flex;
  gap: 0.25rem;
  padding: 0.25rem;
  background: rgba(28, 16, 48, 0.85);
  border-radius: 4px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity 0.2s ease;
}

.lt-gallery-mosaic-edit .ltgal-tile:hover .ltgal-edit-tools,
.lt-gallery-mosaic-edit .ltgal-tile:focus-within .ltgal-edit-tools {
  opacity: 1;
}

.lt-gallery-mosaic-edit .ltgal-edit-tools .components-button {
  color: #fff;
  min-width: 26px;
  height: 26px;
  padding: 0;
}

.lt-gallery-mosaic-edit .ltgal-edit-tools .components-button:hover:not(:disabled) {
  color: #fff;
  background: rgba(255, 255, 255, 0.18);
}

.lt-gallery-mosaic-edit .ltgal-edit-tools__sep {
  width: 1px;
  background: rgba(255, 255, 255, 0.2);
  margin: 0 0.15rem;
}

.lt-gallery-mosaic-edit .ltgal-edit-tools__lbl {
  display: inline-flex;
  align-items: center;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.6);
  padding: 0 0.25rem;
}

/* Botón "+" para añadir tile */
.lt-gallery-mosaic-edit .ltgal-edit-add {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 0.4rem;
  border-radius: 6px;
  border: 2px dashed rgba(107, 58, 150, 0.35);
  background: rgba(247, 244, 255, 0.5);
  color: var(--wp--preset--color--primario);
  cursor: pointer;
  font-family: inherit;
  min-height: clamp(140px, 14vw, 200px);
  transition: background 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}

.lt-gallery-mosaic-edit .ltgal-edit-add:hover {
  background: rgba(192, 96, 188, 0.08);
  border-color: var(--wp--preset--color--secundario);
  color: var(--wp--preset--color--secundario);
}

.lt-gallery-mosaic-edit .ltgal-edit-add__icon {
  font-size: 2.4rem;
  font-weight: 300;
  line-height: 1;
}

.lt-gallery-mosaic-edit .ltgal-edit-add__label {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* ── Lightbox ── */
.ltgal-lb {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(1rem, 4vw, 3rem);
  background: rgba(10, 5, 24, 0.92);
  backdrop-filter: blur(8px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.ltgal-lb.is-open {
  opacity: 1;
  pointer-events: auto;
}

.ltgal-lb__inner {
  position: relative;
  margin: 0;
  max-width: min(92vw, 1280px);
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  transform: scale(0.96);
  transition: transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.ltgal-lb.is-open .ltgal-lb__inner {
  transform: scale(1);
}

.ltgal-lb__img {
  max-width: 100%;
  max-height: 76vh;
  object-fit: contain;
  display: block;
  border-radius: 16px;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55);
}

.ltgal-lb__cap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.2rem;
  padding-top: 0.5rem;
  text-align: center;
}

.ltgal-lb__place {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: 1.3rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: #fff;
}

.ltgal-lb__note {
  font-size: 0.78rem;
  color: rgba(255, 255, 255, 0.68);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 500;
}

/* Contador  01 / 12 */
.ltgal-lb__counter {
  font-size: 0.74rem;
  letter-spacing: 0.16em;
  color: rgba(255, 255, 255, 0.45);
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  margin-top: 0.2rem;
}

/* ── Video tiles ── */
.ltgal-tile__video {
  object-fit: cover;
  width: 100%;
  height: 100%;
}

.ltgal-tile__play-badge {
  position: absolute;
  bottom: 56px;
  right: 12px;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(28, 16, 48, 0.65);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 50%;
  color: #fff;
  font-size: 0.8rem;
  z-index: 3;
  pointer-events: none;
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
    background 0.25s ease;
}

.ltgal-tile:hover .ltgal-tile__play-badge,
.ltgal-tile:focus-visible .ltgal-tile__play-badge {
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  transform: scale(1.1);
}

/* ── Lightbox video ── */
.ltgal-lb__video {
  max-width: 90vw;
  max-height: 80vh;
  border-radius: 12px;
  background: #000;
  outline: none;
}

.ltgal-lb__close,
.ltgal-lb__nav {
  position: absolute;
  z-index: 2;
  background: rgba(28, 16, 48, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.16);
  color: #fff;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.25s ease, border-color 0.25s ease, transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.25s ease;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.ltgal-lb__close:hover,
.ltgal-lb__nav:hover {
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 100%);
  border-color: transparent;
  box-shadow: 0 8px 20px rgba(107, 58, 150, 0.45);
  transform: scale(1.06);
}

.ltgal-lb__close {
  top: 1.25rem;
  right: 1.25rem;
}

.ltgal-lb__nav {
  top: 50%;
  transform: translateY(-50%);
}

.ltgal-lb__nav:hover {
  transform: translateY(-50%) scale(1.06);
}

.ltgal-lb__nav--prev {
  left: 1.25rem;
}

.ltgal-lb__nav--next {
  right: 1.25rem;
}

/* ── Responsive ── */
@media (max-width: 980px) {
  .ltgal-mosaic {
    grid-template-columns: repeat(3, 1fr);
    grid-auto-rows: clamp(130px, 18vw, 180px);
  }

  .ltgal-tile--c2 {
    grid-column: span 2;
  }

  .ltgal-tile--r2 {
    grid-row: span 2;
  }
}

@media (max-width: 680px) {
  .ltgal-stats {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }

  .ltgal-mosaic {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: clamp(140px, 36vw, 200px);
    gap: 0.5rem;
  }

  .ltgal-tile--c2,
  .ltgal-tile--r2 {
    grid-column: span 2;
    grid-row: span 1;
  }

  .ltgal-tile--c2.ltgal-tile--r2 {
    grid-row: span 2;
  }

  /* Caption visible permanente en móvil para descubribilidad */
  .ltgal-tile__cap {
    transform: translateY(0);
    opacity: 0.96;
  }

  .ltgal-tile__num {
    opacity: 1;
    transform: none;
  }

  .ltgal-tile__zoom {
    opacity: 1;
  }

  .ltgal-tile__zoom::before,
  .ltgal-tile__zoom::after {
    transform: scale(1);
  }

  .ltgal-tile {
    border-radius: 10px;
  }

  .ltgal-lb__nav {
    width: 40px;
    height: 40px;
  }

  .ltgal-lb__nav--prev {
    left: 0.5rem;
  }

  .ltgal-lb__nav--next {
    right: 0.5rem;
  }
}

/* ════════════════════════════════════════════════════════════════════════
   LANG-SWITCH AJAX
   - Pequeño fade del <main> mientras se hace fetch del nuevo idioma.
   - El scroll NO se mueve (no recargamos), así que no hace falta restorar.
   ════════════════════════════════════════════════════════════════════════ */
html.lt-lang-switching main {
  opacity: 0.4;
  transition: opacity 0.25s ease;
  pointer-events: none;
}

html main {
  transition: opacity 0.3s ease;
}

/* ════════════════════════════════════════════════════════════════════════
   SKELETON LOADER v2 — shimmer en cada card / sub-bloque
   - html.lt-loading se añade vía wp_head antes del primer paint.
   - El overlay vive como ::before (gris pastel) y ::after (shimmer blanco)
     en cada CAJA pequeña: cards, tiles, heads, formularios.
   - Cuando una sección entra al viewport, JS añade `.is-skel-done` y todos
     los overlays internos hacen fade-out simultáneo.
   ════════════════════════════════════════════════════════════════════════ */

/* Mientras carga, las cards/heads que tienen opacity:0 inicial deben
   ser visibles para que el skeleton se vea encima. La animación de
   entrada original sigue intacta una vez retiramos lt-loading.
   Tours y servicios usan GSAP — no necesitan este override. */
html.lt-loading .wd-dcard,
html.lt-loading .wd-destinos .wd-head {
  opacity: 1 !important;
  transform: none !important;
}

/* Anclaje: cada caja necesita position:relative + overflow:hidden para
   contener su shimmer. Excluimos elementos sobre fondo oscuro (banners
   y CTA final) — la imagen oscura sirve de "loading visual" propio. */
html.lt-loading .wd-dcard,
html.lt-loading .lts-services .lts-card,
html.lt-loading .ltg-card,
html.lt-loading .ltgal-tile,
html.lt-loading .ltgal-stat,
html.lt-loading .ltc-pay-card,
html.lt-loading .wd-test,
html.lt-loading .wd-phi__feature,
html.lt-loading .wd-phi__left,
html.lt-loading .wd-head,
html.lt-loading .ltc-info__card,
html.lt-loading .ltc-form,
html.lt-loading .ltgal-credits {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

/* Capa gris pastel (fondo) — con border-radius mínimo para que nunca
   se vean rectángulos crudos, incluso en bloques sin radius propio. */
html.lt-loading .wd-dcard::before,
html.lt-loading .lts-services .lts-card::before,
html.lt-loading .ltg-card::before,
html.lt-loading .ltgal-tile::before,
html.lt-loading .ltgal-stat::before,
html.lt-loading .ltc-pay-card::before,
html.lt-loading .wd-test::before,
html.lt-loading .wd-phi__feature::before,
html.lt-loading .wd-phi__left::before,
html.lt-loading .wd-head::before,
html.lt-loading .ltc-info__card::before,
html.lt-loading .ltc-form::before,
html.lt-loading .ltgal-credits::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 80;
  background: linear-gradient(135deg,
      var(--lt-bg-soft, #EFE9FA) 0%,
      #E4DCF0 50%,
      var(--lt-bg-soft, #EFE9FA) 100%);
  border-radius: 16px;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Capa shimmer (banda blanca recorriendo) */
html.lt-loading .wd-dcard::after,
html.lt-loading .lts-services .lts-card::after,
html.lt-loading .ltg-card::after,
html.lt-loading .ltgal-tile::after,
html.lt-loading .ltgal-stat::after,
html.lt-loading .ltc-pay-card::after,
html.lt-loading .wd-test::after,
html.lt-loading .wd-phi__feature::after,
html.lt-loading .wd-phi__left::after,
html.lt-loading .wd-head::after,
html.lt-loading .ltc-info__card::after,
html.lt-loading .ltc-form::after,
html.lt-loading .ltgal-credits::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 81;
  background: linear-gradient(110deg,
      transparent 35%,
      rgba(255, 255, 255, 0.75) 50%,
      transparent 65%);
  background-size: 220% 100%;
  animation: lt-shimmer 1.4s linear infinite;
  border-radius: 16px;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Para cards que ya tienen radius grande (28px en .lts-card, 22px en
   destinos/galería), heredamos su radius en lugar del default 16px. */
html.lt-loading .lts-services .lts-card::before,
html.lt-loading .lts-services .lts-card::after {
  border-radius: 28px;
}

html.lt-loading .wd-dcard::before,
html.lt-loading .wd-dcard::after,
html.lt-loading .ltgal-tile::before,
html.lt-loading .ltgal-tile::after,
html.lt-loading .ltg-card::before,
html.lt-loading .ltg-card::after,
html.lt-loading .ltc-pay-card::before,
html.lt-loading .ltc-pay-card::after {
  border-radius: 22px;
}

/* ─── Skeleton específico para .ltg-card (tours): bars internos ─── */
/* Subimos el overlay del card por encima del shimmer base para que sus
   hijos (título, descripción, botón) se vean como bars sobre el gris. */
html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__overlay {
  z-index: 82 !important;
  background: linear-gradient(180deg, transparent 0%, transparent 100%) !important;
}

/* Cada elemento de texto/botón se convierte en una barra blanca */
html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__title,
html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__title a {
  color: transparent !important;
  text-decoration: none !important;
  background: rgba(255, 255, 255, 0.7) !important;
  border-radius: 5px;
  display: inline-block;
  width: 78%;
  line-height: 1.05;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__price {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.55) !important;
  border-radius: 4px;
  display: inline-block;
  width: 38%;
  height: 0.9em;
}

/* Itinerario: cada <li> es una línea de texto distinta */
html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__glass {
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__itinerary {
  list-style: none;
  padding: 0;
  margin: 0.5rem 0;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__itinerary li {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.5) !important;
  border-radius: 3px;
  height: 0.85em;
  margin-bottom: 7px;
  list-style: none;
  display: block;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__itinerary li:nth-child(1) {
  width: 95%;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__itinerary li:nth-child(2) {
  width: 88%;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__itinerary li:nth-child(3) {
  width: 76%;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__num {
  visibility: hidden;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__btn {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.7) !important;
  border-radius: 999px !important;
  pointer-events: none;
  border: none !important;
}

html.lt-loading .ltg-wrap:not(.is-skel-done) .ltg-card__dur {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.65) !important;
  border-radius: 999px;
}

/* Transiciones suaves al revertir */
html.lt-loading .ltg-card__title,
html.lt-loading .ltg-card__title a,
html.lt-loading .ltg-card__price,
html.lt-loading .ltg-card__itinerary li,
html.lt-loading .ltg-card__btn,
html.lt-loading .ltg-card__dur,
html.lt-loading .ltg-card__overlay,
html.lt-loading .ltg-card__glass {
  transition: background 0.45s ease, color 0.45s ease, backdrop-filter 0.45s ease;
}

/* ─── Skeleton específico para .lst-hero (banner del single tour) ───
   Al venir desde una card vía View Transitions, la imagen morphea
   inmediatamente pero los textos del banner pueden lucir vacíos hasta
   que se completa el render. Mientras está html.lt-loading + la sección
   sin .is-skel-done, cada elemento se convierte en una barra shimmer.
   IMPORTANTE: NO cubrimos .lst-hero__bg para no romper el morph de VT. */

/* Cada elemento → barra blanca translúcida con shimmer animado */
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__breadcrumb,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__ribbon,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__title,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__excerpt,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__meta-item,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__cta,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__wa {
  color: transparent !important;
  background: linear-gradient(110deg,
      rgba(255, 255, 255, 0.18) 35%,
      rgba(255, 255, 255, 0.55) 50%,
      rgba(255, 255, 255, 0.18) 65%) !important;
  background-size: 220% 100% !important;
  animation: lt-shimmer 1.4s linear infinite;
  border-radius: 8px;
  pointer-events: none;
}

/* Esconde íconos SVG y contenido interno durante el skeleton */
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__breadcrumb svg,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__cta svg,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__wa svg,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__meta-item svg,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__ribbon-text {
  visibility: hidden;
}

/* Los anchors/spans hijos del breadcrumb desaparecen visualmente para que
   el contenedor sea un único bar limpio */
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__breadcrumb a,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__breadcrumb span {
  color: transparent !important;
  background: transparent !important;
}

/* Dimensiones por elemento — manteniendo la jerarquía visual del banner */
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__breadcrumb {
  display: block;
  width: 200px;
  height: 14px;
  overflow: hidden;
  margin-bottom: 1.25rem;
}

html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__ribbon {
  width: 130px;
  height: 28px;
  display: inline-block;
  border: none !important;
  padding: 0 !important;
}

html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__title {
  display: block;
  width: min(540px, 78%);
  height: clamp(48px, 7vw, 80px);
  margin: 1.1rem 0 1.2rem;
}

html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__excerpt {
  display: block;
  width: min(420px, 62%);
  height: 14px;
  margin-bottom: 1.6rem;
}

html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__meta-item {
  width: 110px;
  height: 24px;
  display: inline-flex;
  vertical-align: middle;
}

html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__cta,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__wa {
  width: 170px;
  height: 46px;
  display: inline-block;
  border: none !important;
  background-image: linear-gradient(110deg,
      rgba(255, 255, 255, 0.18) 35%,
      rgba(255, 255, 255, 0.55) 50%,
      rgba(255, 255, 255, 0.18) 65%) !important;
}

html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__cta span,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__wa-text,
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__wa-icon {
  visibility: hidden;
}

/* Indicador de scroll oculto durante carga */
html.lt-loading .lst-hero:not(.is-skel-done) .lst-hero__scroll {
  visibility: hidden;
}

/* Transición suave al revertir (cuando .is-skel-done se aplica) */
html.lt-loading .lst-hero__breadcrumb,
html.lt-loading .lst-hero__ribbon,
html.lt-loading .lst-hero__title,
html.lt-loading .lst-hero__excerpt,
html.lt-loading .lst-hero__meta-item,
html.lt-loading .lst-hero__cta,
html.lt-loading .lst-hero__wa {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Skeleton específico para .wd-dcard (destinos): bars en la bottom ─── */
/* La capa ::before (gris) cubre la imagen; subimos top y bottom por encima
   del shimmer (z-index 82) y estilizamos cada elemento como barra blanca. */
html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__overlay {
  opacity: 0 !important;
}

html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__top,
html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__bottom {
  position: relative;
  z-index: 82;
}

html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__num {
  visibility: hidden;
}

html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__loc {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.5) !important;
  border-radius: 99px;
  display: inline-block;
  width: 64px;
  height: 0.75em;
}

html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__kicker {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.48) !important;
  border-radius: 3px;
  display: inline-block;
  width: 44%;
  height: 0.68em;
}

html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__title {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.78) !important;
  border-radius: 5px;
  display: block;
  width: 82%;
  height: 1.3em;
  margin-bottom: 0.5rem;
}

html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__cta {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.55) !important;
  border-radius: 999px !important;
  pointer-events: none;
  border: none !important;
  display: inline-flex;
  width: 110px;
}

html.lt-loading .wd-destinos:not(.is-skel-done) .wd-dcard__cta svg {
  visibility: hidden;
}

/* Transiciones suaves al revertir */
html.lt-loading .wd-dcard__overlay,
html.lt-loading .wd-dcard__loc,
html.lt-loading .wd-dcard__kicker,
html.lt-loading .wd-dcard__title,
html.lt-loading .wd-dcard__cta {
  transition: background 0.45s ease, color 0.45s ease, opacity 0.45s ease;
}

/* ─── Skeleton específico para .lts-card (servicios): bars en el body ─── */
/* Visual (área icono/imagen) se atenúa; el body sube sobre el shimmer
   con kicker + título + párrafo de 3 líneas + botón como barras. */
html.lt-loading .lts-services:not(.is-skel-done) .lts-card__num {
  visibility: hidden;
}

html.lt-loading .lts-services:not(.is-skel-done) .lts-card__visual {
  opacity: 0.25 !important;
}

html.lt-loading .lts-services:not(.is-skel-done) .lts-card__body {
  position: relative;
  z-index: 82;
}

html.lt-loading .lts-services:not(.is-skel-done) .lts-card__kicker {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.58) !important;
  border-radius: 99px;
  display: inline-block;
  width: 36%;
  height: 0.72em;
}

html.lt-loading .lts-services:not(.is-skel-done) .lts-card__title {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.72) !important;
  border-radius: 5px;
  display: block;
  width: 68%;
  height: 1.45em;
}

html.lt-loading .lts-services:not(.is-skel-done) .lts-card__desc {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.38) !important;
  border-radius: 4px;
  display: block;
  width: 93%;
  height: 4em;
}

html.lt-loading .lts-services:not(.is-skel-done) .lts-card__more {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.55) !important;
  border-radius: 999px !important;
  border: none !important;
  pointer-events: none;
  display: inline-flex;
  width: 108px;
}

html.lt-loading .lts-services:not(.is-skel-done) .lts-card__more svg {
  visibility: hidden;
}

/* Transiciones suaves al revertir */
html.lt-loading .lts-card__visual,
html.lt-loading .lts-card__kicker,
html.lt-loading .lts-card__title,
html.lt-loading .lts-card__desc,
html.lt-loading .lts-card__more {
  transition: background 0.45s ease, color 0.45s ease, opacity 0.45s ease;
}

/* ─── Skeleton específico para .ltc-pay-card (pagos): brand + filas ─── */
/* Subimos head y body sobre el shimmer para mostrar el brand y cada fila
   como barras de distintas anchuras. El QR se difumina levemente. */
html.lt-loading .ltc-payments:not(.is-skel-done) .ltc-pay-card__head,
html.lt-loading .ltc-payments:not(.is-skel-done) .ltc-pay-card__body {
  position: relative;
  z-index: 82;
}

html.lt-loading .ltc-payments:not(.is-skel-done) .ltc-pay-card__brand {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.68) !important;
  border-radius: 4px;
  display: inline-block;
  width: 68px;
  height: 1em;
}

html.lt-loading .ltc-payments:not(.is-skel-done) .ltc-pay-card__qr img {
  opacity: 0.12 !important;
  filter: blur(4px);
}

html.lt-loading .ltc-payments:not(.is-skel-done) .ltc-pay-card__row dt {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.45) !important;
  border-radius: 3px;
  display: inline-block;
  width: 52px;
  height: 0.78em;
}

html.lt-loading .ltc-payments:not(.is-skel-done) .ltc-pay-card__row dd {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.62) !important;
  border-radius: 3px;
  display: block;
  width: 100%;
  height: 0.85em;
}

html.lt-loading .ltc-payments:not(.is-skel-done) .ltc-pay-card__copy-btn {
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Transiciones suaves al revertir */
html.lt-loading .ltc-pay-card__brand,
html.lt-loading .ltc-pay-card__row dt,
html.lt-loading .ltc-pay-card__row dd {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Fix: .wd-phi__card (clase real en render.php; el skeleton usaba .wd-phi__feature) ─── */
html.lt-loading .wd-phi__card {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

html.lt-loading .wd-phi__card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 80;
  background: linear-gradient(135deg, var(--lt-bg-soft, #EFE9FA) 0%, #E4DCF0 50%, var(--lt-bg-soft, #EFE9FA) 100%);
  border-radius: 16px;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

html.lt-loading .wd-phi__card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 81;
  background: linear-gradient(110deg, transparent 35%, rgba(255, 255, 255, 0.75) 50%, transparent 65%);
  background-size: 220% 100%;
  animation: lt-shimmer 1.4s linear infinite;
  border-radius: 16px;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* ─── Skeleton: .wd-phi__left — 2 párrafos + enlace ─── */
/* El eyebrow+título ahora están en wd-head (sobre el grid); su skeleton
   lo maneja el bloque genérico de .wd-head arriba. */
html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__left>* {
  position: relative;
  z-index: 82;
}

html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__left .wd-phi__p {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.3) !important;
  border-radius: 4px;
  display: block;
  width: 94%;
  height: 3.6em;
}

html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__left .wd-phi__link {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.42) !important;
  border-radius: 99px;
  display: inline-flex;
  width: 140px;
  height: 0.82em;
  pointer-events: none;
}

html.lt-loading .wd-phi__left .wd-phi__p,
html.lt-loading .wd-phi__left .wd-phi__link {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Skeleton: .wd-phi__card — header-bar + título + descripción ─── */
html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__card>* {
  position: relative;
  z-index: 82;
}

html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__card-hd {
  background: rgba(145, 131, 181, 0.4) !important;
  border-radius: 4px;
  width: 22%;
  height: 1em;
  overflow: hidden;
}

html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__card-hd>* {
  visibility: hidden;
}

html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__card-title {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.68) !important;
  border-radius: 5px;
  display: block;
  width: 74%;
  height: 1.2em;
}

html.lt-loading .wd-phi:not(.is-skel-done) .wd-phi__card-desc {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.4) !important;
  border-radius: 4px;
  display: block;
  width: 96%;
  height: 3.2em;
}

html.lt-loading .wd-phi__card-hd,
html.lt-loading .wd-phi__card-title,
html.lt-loading .wd-phi__card-desc {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Skeleton: .wd-head — eyebrow + título + sub (cabeceras de sección) ─── */
/* Scope: :not(.is-visible) — reveal() añade is-visible al mismo tiempo que
   is-skel-done al padre, haciendo que las barras desaparezcan en sincronía. */
html.lt-loading .wd-head:not(.is-visible) .wd-eyebrow,
html.lt-loading .wd-head:not(.is-visible) .wd-title,
html.lt-loading .wd-head:not(.is-visible) .wd-sub {
  position: relative;
  z-index: 82;
}

html.lt-loading .wd-head:not(.is-visible) .wd-eyebrow {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.52) !important;
  border-radius: 99px;
  display: inline-block;
  width: 40%;
  height: 0.72em;
}

html.lt-loading .wd-head:not(.is-visible) .wd-title {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.65) !important;
  border-radius: 6px;
  display: block;
  width: 58%;
  height: 1.7em;
}

html.lt-loading .wd-head:not(.is-visible) .wd-sub {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.38) !important;
  border-radius: 4px;
  display: block;
  width: 78%;
  height: 2.6em;
}

/* El overlay de ::before/::after también desaparece al añadir is-visible */
html.lt-loading .wd-head.is-visible::before,
html.lt-loading .wd-head.is-visible::after {
  opacity: 0;
}

/* Centrar las barras en cabeceras centradas */
html.lt-loading .wd-head--center:not(.is-visible) .wd-title,
html.lt-loading .wd-head--center:not(.is-visible) .wd-sub {
  margin-left: auto;
  margin-right: auto;
}

html.lt-loading .wd-head__eyebrow,
html.lt-loading .wd-head .wd-eyebrow,
html.lt-loading .wd-head .wd-title,
html.lt-loading .wd-head .wd-sub {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Skeleton: .ltgal-tile — número + caption (place + note) ─── */
/* El ::before cubre la imagen; subimos número y caption (z-82) como barras. */
html.lt-loading .ltgal:not(.is-skel-done) .ltgal-tile__num {
  position: relative;
  z-index: 82;
  color: transparent !important;
  background: rgba(255, 255, 255, 0.45) !important;
  border-radius: 3px;
  display: inline-block;
  width: 26px;
  height: 0.8em;
}

html.lt-loading .ltgal:not(.is-skel-done) .ltgal-tile__cap {
  position: relative;
  z-index: 82;
}

html.lt-loading .ltgal:not(.is-skel-done) .ltgal-tile__place {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.75) !important;
  border-radius: 4px;
  display: block;
  width: 72%;
  height: 0.85em;
}

html.lt-loading .ltgal:not(.is-skel-done) .ltgal-tile__note {
  color: transparent !important;
  background: rgba(255, 255, 255, 0.48) !important;
  border-radius: 3px;
  display: block;
  width: 52%;
  height: 0.7em;
  margin-top: 5px;
}

html.lt-loading .ltgal:not(.is-skel-done) .ltgal-tile__zoom {
  visibility: hidden;
}

html.lt-loading .ltgal-tile__num,
html.lt-loading .ltgal-tile__place,
html.lt-loading .ltgal-tile__note {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Skeleton: .ltgal-stat — número grande + etiqueta ─── */
html.lt-loading .ltgal:not(.is-skel-done) .ltgal-stat__num,
html.lt-loading .ltgal:not(.is-skel-done) .ltgal-stat__lbl {
  position: relative;
  z-index: 82;
}

html.lt-loading .ltgal:not(.is-skel-done) .ltgal-stat__num {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.7) !important;
  border-radius: 5px;
  display: inline-block;
  width: 68%;
  height: 1.4em;
}

html.lt-loading .ltgal:not(.is-skel-done) .ltgal-stat__lbl {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.42) !important;
  border-radius: 3px;
  display: block;
  width: 82%;
  height: 0.72em;
  margin-top: 5px;
}

html.lt-loading .ltgal-stat__num,
html.lt-loading .ltgal-stat__lbl {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Skeleton: .ltgal-credits — texto de créditos ─── */
html.lt-loading .ltgal:not(.is-skel-done) .ltgal-credits>p {
  position: relative;
  z-index: 82;
  color: transparent !important;
  background: rgba(145, 131, 181, 0.32) !important;
  border-radius: 4px;
  display: block;
  width: 82%;
  height: 2.6em;
}

html.lt-loading .ltgal-credits>p {
  transition: background 0.45s ease, color 0.45s ease;
}

/* ─── Skeleton: .ltc-info__card — kicker + título + lead + 4 items ─── */
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__kicker,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__title,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__lead,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__list,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__footer {
  position: relative;
  z-index: 82;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__kicker {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.55) !important;
  border-radius: 99px;
  display: inline-block;
  width: 44%;
  height: 0.7em;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__title {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.7) !important;
  border-radius: 5px;
  display: block;
  width: 82%;
  height: 1.6em;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__lead {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.38) !important;
  border-radius: 4px;
  display: block;
  width: 90%;
  height: 2.8em;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__num {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.48) !important;
  border-radius: 3px;
  display: inline-block;
  width: 22px;
  height: 0.8em;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__icon {
  background: rgba(145, 131, 181, 0.42) !important;
  color: transparent !important;
  border-radius: 50%;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__icon svg {
  visibility: hidden;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__label {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.38) !important;
  border-radius: 3px;
  display: block;
  width: 50%;
  height: 0.65em;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__value {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.55) !important;
  border-radius: 3px;
  display: block;
  width: 72%;
  height: 0.78em;
  margin-top: 4px;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-info__footer {
  opacity: 0.18 !important;
  pointer-events: none !important;
}

html.lt-loading .ltc-info__kicker,
html.lt-loading .ltc-info__title,
html.lt-loading .ltc-info__lead,
html.lt-loading .ltc-info__num,
html.lt-loading .ltc-info__icon,
html.lt-loading .ltc-info__label,
html.lt-loading .ltc-info__value,
html.lt-loading .ltc-info__footer {
  transition: background 0.45s ease, color 0.45s ease, opacity 0.45s ease;
}

/* ─── Skeleton: .ltc-form — título + campos + botón ─── */
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__title,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__lead,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__row,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__field,
html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__actions {
  position: relative;
  z-index: 82;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__title {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.68) !important;
  border-radius: 5px;
  display: block;
  width: 60%;
  height: 1.4em;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__lead {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.38) !important;
  border-radius: 4px;
  display: block;
  width: 86%;
  height: 2.4em;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__label {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.42) !important;
  border-radius: 3px;
  display: block;
  width: 34%;
  height: 0.68em;
  margin-bottom: 7px;
}

html.lt-loading .ltc-contact:not(.is-skel-done) input[type="text"],
html.lt-loading .ltc-contact:not(.is-skel-done) input[type="email"],
html.lt-loading .ltc-contact:not(.is-skel-done) input[type="tel"],
html.lt-loading .ltc-contact:not(.is-skel-done) textarea {
  background: rgba(145, 131, 181, 0.2) !important;
  border-color: rgba(145, 131, 181, 0.28) !important;
  color: transparent !important;
  pointer-events: none !important;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__btn {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.62) !important;
  border: none !important;
  border-radius: 999px !important;
  pointer-events: none !important;
  display: inline-flex;
  width: 152px;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__btn svg {
  visibility: hidden;
}

html.lt-loading .ltc-contact:not(.is-skel-done) .ltc-form__legal {
  color: transparent !important;
  background: rgba(145, 131, 181, 0.28) !important;
  border-radius: 3px;
  display: block;
  width: 74%;
  height: 0.68em;
}

html.lt-loading .ltc-form__title,
html.lt-loading .ltc-form__lead,
html.lt-loading .ltc-form__label,
html.lt-loading .ltc-form__btn,
html.lt-loading .ltc-form__legal {
  transition: background 0.45s ease, color 0.45s ease;
}

html.lt-loading .ltc-contact input,
html.lt-loading .ltc-contact textarea {
  transition: background 0.45s ease, border-color 0.45s ease, color 0.45s ease;
}

/* Distintos delays de shimmer para no sentir uniformidad mecánica */
html.lt-loading .wd-dcard:nth-child(2n)::after,
html.lt-loading .lts-card:nth-child(2n)::after,
html.lt-loading .ltg-card:nth-child(2n)::after,
html.lt-loading .ltgal-tile:nth-child(2n)::after {
  animation-delay: 0.25s;
}

html.lt-loading .wd-dcard:nth-child(3n)::after,
html.lt-loading .lts-card:nth-child(3n)::after,
html.lt-loading .ltg-card:nth-child(3n)::after,
html.lt-loading .ltgal-tile:nth-child(3n)::after {
  animation-delay: 0.5s;
}

/* Cuando la sección está marcada como cargada, los overlays internos fade-out */
html.lt-loading .is-skel-done .wd-dcard::before,
html.lt-loading .is-skel-done .wd-dcard::after,
html.lt-loading .is-skel-done .lts-card::before,
html.lt-loading .is-skel-done .lts-card::after,
html.lt-loading .is-skel-done .ltg-card::before,
html.lt-loading .is-skel-done .ltg-card::after,
html.lt-loading .is-skel-done .ltgal-tile::before,
html.lt-loading .is-skel-done .ltgal-tile::after,
html.lt-loading .is-skel-done .ltgal-stat::before,
html.lt-loading .is-skel-done .ltgal-stat::after,
html.lt-loading .is-skel-done .ltc-pay-card::before,
html.lt-loading .is-skel-done .ltc-pay-card::after,
html.lt-loading .is-skel-done .wd-test::before,
html.lt-loading .is-skel-done .wd-test::after,
html.lt-loading .is-skel-done .wd-phi__feature::before,
html.lt-loading .is-skel-done .wd-phi__feature::after,
html.lt-loading .is-skel-done .wd-phi__card::before,
html.lt-loading .is-skel-done .wd-phi__card::after,
html.lt-loading .is-skel-done .wd-phi__left::before,
html.lt-loading .is-skel-done .wd-phi__left::after,
html.lt-loading .is-skel-done .wd-head::before,
html.lt-loading .is-skel-done .wd-head::after,
html.lt-loading .is-skel-done .ltc-info__card::before,
html.lt-loading .is-skel-done .ltc-info__card::after,
html.lt-loading .is-skel-done .ltc-form::before,
html.lt-loading .is-skel-done .ltc-form::after,
html.lt-loading .is-skel-done .ltgal-credits::before,
html.lt-loading .is-skel-done .ltgal-credits::after {
  opacity: 0;
}

/* Cuando is-skel-done se aplica, devolvemos opacity al estado original
   para que las animaciones de entrada de cards/heads (.is-visible)
   sigan funcionando bien después de la limpieza global.
   .lts-card excluido: usa GSAP (sección 19) que setea inline opacity:1
   y este !important lo sobrescribía haciendo que la sección se "apagase"
   tras la animación. */
html.lt-loading .is-skel-done .wd-dcard:not(.is-visible),
html.lt-loading .is-skel-done .wd-head:not(.is-visible) {
  opacity: 0 !important;
}

@keyframes lt-shimmer {
  0% {
    background-position: 220% 0;
  }

  100% {
    background-position: -220% 0;
  }
}

@media (prefers-reduced-motion: reduce) {

  html.lt-loading [class]::before,
  html.lt-loading [class]::after {
    animation: none !important;
  }
}

/* ----------------------------------------------------
   Ribbon Reveal Animation — Global Base
   (banner-hero has its own copy; these are for wd-hero
    and ltg-banner which lack a block-scoped stylesheet)
---------------------------------------------------- */
.wd-hero .lt-ribbon,
.ltg-banner .lt-ribbon {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #fff;
  transform: scaleX(0);
  transform-origin: left;
  z-index: 2;
  pointer-events: none;
}

.wd-hero .lt-banner-inner,
.ltg-banner .lt-banner-inner {
  display: inline-block;
  opacity: 0;
}

@keyframes ribbonSweepGlobal {
  0% {
    transform-origin: left;
    transform: scaleX(0);
  }

  50% {
    transform-origin: left;
    transform: scaleX(1);
  }

  51% {
    transform-origin: right;
    transform: scaleX(1);
  }

  100% {
    transform-origin: right;
    transform: scaleX(0);
  }
}

@keyframes revealTextOpacityGlobal {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

/* ----------------------------------------------------
   Ribbon Reveal Animation Extensions
---------------------------------------------------- */
.wd-hero__eyebrow,
.wd-hero__title,
.wd-hero__sub,
.ltg-head__eyebrow,
.ltg-head__title,
.ltg-head__sub {
  display: block;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
  position: relative;
}

.wd-hero__inner.is-anim .lt-ribbon,
.ltg-banner.is-animating .lt-ribbon {
  animation: ribbonSweepGlobal 1.1s cubic-bezier(0.77, 0, 0.175, 1) forwards;
}

.wd-hero__inner.is-anim .lt-banner-inner,
.ltg-banner.is-animating .lt-banner-inner {
  animation: revealTextOpacityGlobal 0.1s forwards;
}

.wd-hero__inner.is-anim .wd-hero__eyebrow .lt-ribbon,
.ltg-banner.is-animating .ltg-head__eyebrow .lt-ribbon {
  animation-delay: 0.1s;
}

.wd-hero__inner.is-anim .wd-hero__eyebrow .lt-banner-inner,
.ltg-banner.is-animating .ltg-head__eyebrow .lt-banner-inner {
  animation-delay: 0.7s;
}

.wd-hero__inner.is-anim .wd-hero__title .lt-ribbon,
.ltg-banner.is-animating .ltg-head__title .lt-ribbon {
  animation-delay: 0.25s;
}

.wd-hero__inner.is-anim .wd-hero__title .lt-banner-inner,
.ltg-banner.is-animating .ltg-head__title .lt-banner-inner {
  animation-delay: 0.85s;
}

.wd-hero__inner.is-anim .wd-hero__sub .lt-ribbon,
.ltg-banner.is-animating .ltg-head__sub .lt-ribbon {
  animation-delay: 0.4s;
}

.wd-hero__inner.is-anim .wd-hero__sub .lt-banner-inner,
.ltg-banner.is-animating .ltg-head__sub .lt-banner-inner {
  animation-delay: 1.0s;
}

.wd-hero__phrase,
.wd-hero__ctas,
.wd-hero__subline {
  display: block;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
  position: relative;
}

.wd-hero__inner.is-anim .wd-hero__phrase .lt-ribbon {
  animation-delay: 0.55s;
}

.wd-hero__inner.is-anim .wd-hero__phrase .lt-banner-inner {
  animation-delay: 1.15s;
}

.wd-hero__inner.is-anim .wd-hero__ctas .lt-ribbon {
  animation-delay: 0.70s;
}

.wd-hero__inner.is-anim .wd-hero__ctas .lt-banner-inner {
  animation-delay: 1.30s;
}

.wd-hero__inner.is-anim .wd-hero__subline .lt-ribbon {
  animation-delay: 0.85s;
}

.wd-hero__inner.is-anim .wd-hero__subline .lt-banner-inner {
  animation-delay: 1.45s;
}

.wd-hero.is-animating .wd-hero__subline .lt-banner-inner {
  animation-delay: 1.45s;
}

/* ══════════════════════════════════════════════════════════════════════════
   ABOUT US — Nuestra Historia & Nuestra Visión
   ══════════════════════════════════════════════════════════════════════════ */

.wd-about {
  background: #FAF8FC;
  padding: 5rem 0 4.5rem;
  overflow: hidden;
}

/* ── Row grid ── */
.wd-about__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3.5rem;
  align-items: center;
  margin-bottom: 5rem;
}

.wd-about__row:last-child {
  margin-bottom: 0;
}

.wd-about .wd-container:not(:last-child) {
  margin-bottom: 8rem;
}

/* Reverse: imagen a la izquierda, texto a la derecha */
.wd-about__row--reverse {
  direction: rtl;
}

.wd-about__row--reverse>* {
  direction: ltr;
}

/* Sin imagen: texto a ancho completo y centrado */
.wd-about__row--no-img {
  grid-template-columns: 1fr !important;
}

.wd-about__row--no-img .wd-about__col--text {
  text-align: center;
}

.wd-about__row--no-img .wd-about__eyebrow,
.wd-about__row--no-img .wd-about__cta {
  justify-content: center;
}

/* ── Eyebrow ── */
.wd-about__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: #6B3A96;
  margin: 0 0 1rem;
}

/* ── Title ── */
.wd-about__title {
  font-family: 'Cormorant Garamond', Georgia, "Times New Roman", serif;
  font-size: clamp(1.6rem, 2.8vw, 2.4rem);
  font-weight: 600;
  color: #1C1030;
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0 0 1.4rem;
}

/* ── Paragraphs ── */
.wd-about__p {
  font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 0.98rem;
  line-height: 1.82;
  color: #3D2E5A;
  margin: 0 0 1rem;
}

/* ── CTA editorial ── */
.wd-about__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  margin-top: 0.8rem;
  padding: 0.5em 0;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #1C1030;
  text-decoration: none;
  position: relative;
  transition: gap 0.35s cubic-bezier(0.22, 1, 0.36, 1), color 0.3s ease;
}

.wd-about__cta::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 32px;
  height: 1.5px;
  background: linear-gradient(90deg, #6B3A96, #C060BC);
  transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.wd-about__cta:hover {
  color: #6B3A96;
  gap: 0.9em;
}

.wd-about__cta:hover::after {
  width: 100%;
}

.wd-about__cta svg {
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
}

.wd-about__cta:hover svg {
  transform: translateX(4px);
}

/* ── Image wrapper ── */
.wd-about__col--media {
  position: relative;
}

.wd-about__img-wrap {
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  box-shadow:
    0 4px 16px rgba(28, 16, 48, 0.08),
    0 20px 60px rgba(107, 58, 150, 0.12);
}

.wd-about__img-wrap--vision {
  border-radius: 16px;
}

.wd-about__img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
  aspect-ratio: 4 / 3;
}

.wd-about__img-wrap--vision .wd-about__img {
  aspect-ratio: 4 / 3;
}

.wd-about__img-placeholder {
  width: 100%;
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, #E8D5F0 0%, #C8B8E8 50%, #A8C4E8 100%);
}

.wd-about__img-wrap--vision .wd-about__img-placeholder {
  aspect-ratio: 4 / 3;
}

/* ── Badge flotante ── */
.wd-about__badge {
  position: absolute;
  bottom: -1.2rem;
  left: 50%;
  transform: translateX(-50%);
  width: 110px;
  height: 110px;
  border-radius: 50%;
  background: linear-gradient(135deg, #6B3A96 0%, #C060BC 60%, #8585CC 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  box-shadow:
    0 8px 28px rgba(107, 58, 150, 0.35),
    0 0 0 4px #FAF8FC;
  z-index: 3;
}

.wd-about__badge-num {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.8rem;
  font-weight: 700;
  color: #fff;
  line-height: 1;
  margin-bottom: 2px;
}

.wd-about__badge-label {
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.52rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.9);
  line-height: 1.2;
  max-width: 80px;
}

/* ── Value cards ── */
.wd-about__values {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-top: 1.4rem;
}

.wd-about__vcard {
  background: #fff;
  border: 1px solid rgba(107, 58, 150, 0.08);
  border-radius: 14px;
  padding: 1.3rem 1.1rem;
  transition: box-shadow 0.4s ease, transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.wd-about__vcard:hover {
  box-shadow: 0 8px 28px rgba(107, 58, 150, 0.12);
  transform: translateY(-3px);
}

.wd-about__vcard-icon {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(107, 58, 150, 0.1), rgba(192, 96, 188, 0.12));
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 0.7rem;
  color: #6B3A96;
}

.wd-about__vcard-title {
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.9rem;
  font-weight: 700;
  color: #1C1030;
  margin: 0 0 0.3rem;
}

.wd-about__vcard-desc {
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 0.82rem;
  line-height: 1.55;
  color: #6B5D80;
  margin: 0;
}

/* ── Responsive ── */
@media (max-width: 960px) {
  .wd-about__row {
    grid-template-columns: 1fr;
    gap: 2rem;
  }


  .wd-about__col--media {
    order: -1;
    max-width: 500px;
    margin: 0 auto;
  }

  .wd-about__img {
    aspect-ratio: 16 / 10;
  }

  .wd-about__img-wrap--vision .wd-about__img {
    aspect-ratio: 16 / 10;
  }

  .wd-about__img-placeholder,
  .wd-about__img-wrap--vision .wd-about__img-placeholder {
    aspect-ratio: 16 / 10;
  }
}

@media (max-width: 600px) {
  .wd-about {
    padding: 3rem 0 2.5rem;
  }

  .wd-about__row {
    margin-bottom: 3rem;
  }

  .wd-about__title {
    font-size: 1.5rem;
  }

  .wd-about__values {
    grid-template-columns: 1fr;
  }

  .wd-about__badge {
    width: 90px;
    height: 90px;
  }

  .wd-about__badge-num {
    font-size: 1.5rem;
  }

  .wd-about__badge-label {
    font-size: 0.48rem;
  }
}

/* ── Editor overrides ── */
.lt-about-edit {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * VIEW TRANSITIONS API — Cross-document morphing (archive → single tour)
 * Chrome ≥ 126 reproduce el morph; Safari/Firefox usan navegación normal.
 *
 * Las imágenes compartidas (card del grid y banner del single-tour) llevan
 * `view-transition-name: tour-img-{ID}` único por tour + la clase
 * `view-transition-class: tour-img` que las identifica como grupo para
 * recibir el morph largo con via-blur (esconde el ghost del cross-fade).
 * El cross-fade del documento (root) se mantiene corto para no competir
 * con el morph del elemento compartido.
 * ═══════════════════════════════════════════════════════════════════════════ */

:root {
  --lt-vt-exit: 150ms;
  --lt-vt-enter: 210ms;
  --lt-vt-move: 420ms;
}

@view-transition {
  navigation: auto;
}

/* Marca las imágenes compartidas con una clase de VT para targetearlas en
   conjunto sin tener que enumerar cada tour-img-{ID} en el CSS */
.lts-card__visual,
.lst-hero__bg,
.lst-rcard__img {
  view-transition-class: tour-img;
}

/* Cross-fade del documento — snappy, salida ease-in, entrada ease-out
   con delay para que no se solapen en el momento más cargado */
::view-transition-old(root) {
  animation-duration: var(--lt-vt-exit);
  animation-timing-function: ease-in;
}

::view-transition-new(root) {
  animation-duration: var(--lt-vt-enter);
  animation-delay: var(--lt-vt-exit);
  animation-timing-function: ease-out;
  animation-fill-mode: both;
}

/* Morph del elemento compartido — easing suave y duración mayor que el root
   para que la imagen "vuele" tranquila mientras la página ya hizo cross-fade */
::view-transition-group(.tour-img) {
  animation-duration: var(--lt-vt-move);
  animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
}

/* via-blur: pico de blur a mitad del morph para enmascarar el ghost del
   raster snapshot cuando la imagen origen y destino tienen tamaños muy
   distintos (card pequeña → banner full-width). Esta es la clave que
   elimina la sensación tosca. */
::view-transition-image-pair(.tour-img) {
  animation: var(--lt-vt-move) ease-in-out lt-vt-via-blur both;
}

@keyframes lt-vt-via-blur {

  0%,
  100% {
    filter: blur(0);
  }

  35%,
  65% {
    filter: blur(4px);
  }
}

/* Accesibilidad: usuarios con prefers-reduced-motion ven la navegación
   instantánea (no la bloqueamos — solo colapsamos las animaciones a 0s
   para preservar el feedback visual sin el motion). */
@media (prefers-reduced-motion: reduce) {

  ::view-transition-old(*),
  ::view-transition-new(*),
  ::view-transition-group(*),
  ::view-transition-image-pair(*) {
    animation-duration: 0s !important;
    animation-delay: 0s !important;
  }
}