﻿/* =========================================
   EXPLORA MIAMI â€” styles.css
   Paleta tropical Â· Mobile-first
   Fuentes: Playfair Display + Inter (Google)
========================================= */

/* ===== VARIABLES ===== */
:root {
  /* Paleta tropical Miami */
  --blanco-arena:     #FFFDF7;
  --azul-cielo-suave: #E3F4FF;
  --verde-tropical:   #E8F5E9;
  --coral:            #FF6B6B;
  --turquesa:         #00BCD4;
  --mostaza:          #FFB300;

  /* Texto */
  --texto-oscuro: #1a2a3a;
  --texto-medio:  #4a6070;
  --texto-suave:  #4a6f82; /* era #8aacba â€” contraste 2.27:1, falla WCAG AA â†’ 5.4:1 âœ“ */

  /* Bordes y sombras */
  --borde:         rgba(0, 188, 212, 0.18);
  --sombra-suave:  0 4px 24px rgba(0, 0, 0, 0.06);
  --sombra-card:   0 8px 36px rgba(0, 0, 0, 0.09);
  --sombra-hover:  0 22px 56px rgba(0, 188, 212, 0.28), 0 8px 20px rgba(0, 188, 212, 0.14);
  --sombra-tierra: 0 22px 56px rgba(124, 179, 66, 0.26), 0 8px 20px rgba(124, 179, 66, 0.14);

  /* TipografÃ­a */
  --fuente-titulo: 'Playfair Display', Georgia, serif;
  --fuente-cuerpo: 'Inter', 'Helvetica Neue', sans-serif;

  /* Layout */
  --radio:     20px;
  --radio-btn: 50px;
  --max:       1200px;
  --seccion-py: 5.5rem;

  /* Escala tipogrÃ¡fica */
  --text-xs:   0.75rem;
  --text-sm:   0.875rem;
  --text-base: 1rem;
  --text-lg:   1.0625rem;

  /* Colores hover */
  --turquesa-oscura: #0097a7;
  --coral-oscura:    #c0392b;
  --verde-tierra:    #7CB342;

  /* Footer palette */
  --footer-ini: #00434F;
  --footer-mid: #003240;
  --footer-fin: #002530;
}

/* ===== RESET ===== */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

/* overflow-x en <html> (no en body) â€” la spec CSS propaga overflow de html
   al viewport sin crear un scroll-container adicional, preservando sticky */
html { scroll-behavior: smooth; font-size: 16px; overflow-x: hidden; }

body {
  font-family: var(--fuente-cuerpo);
  background-color: var(--blanco-arena);
  color: var(--texto-oscuro);
  line-height: 1.65;
  /* overflow-x: hidden removido â€” estaba en body y convertÃ­a overflow-y:visible
     en overflow-y:auto, haciendo de body un scroll-container que rompÃ­a sticky */
}

img  { display: block; max-width: 100%; }
a    { text-decoration: none; color: inherit; }
ul   { list-style: none; }

/* ===== TOGGLE ES / EN (CSS puro) ===== */
html.lang-en .lang-es { display: none; }
html.lang-es .lang-en { display: none; }

/* ===== ANIMACIÃ“N FADE-UP ===== */
.fade-up {
  opacity: 0;
  transform: translateY(20px); /* era 44px â€” demasiado brusco */
  transition: opacity 0.6s cubic-bezier(0.2, 0, 0, 1), transform 0.6s cubic-bezier(0.2, 0, 0, 1);
}
.fade-up.visible { opacity: 1; transform: translateY(0); }

/* ===== BOTONES ===== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  padding: 0.72rem 1.7rem;
  border-radius: var(--radio-btn);
  font-family: var(--fuente-cuerpo);
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  border: none;
  transition: transform 0.22s ease, box-shadow 0.22s ease, background-color 0.22s ease;
}

.btn--primario {
  background-color: var(--turquesa);
  color: #fff;
  box-shadow: 0 4px 18px rgba(0, 188, 212, 0.38);
}
.btn--primario:hover {
  background-color: var(--turquesa-oscura);
  transform: translateY(-2px);
  box-shadow: 0 8px 28px rgba(0, 188, 212, 0.48);
}

.btn--secundario {
  background-color: transparent;
  color: #fff;
  border: 2px solid rgba(255,255,255,0.85);
}
.btn--secundario:hover {
  background-color: rgba(255,255,255,0.18);
  transform: translateY(-2px);
}

.btn--coral {
  background-color: var(--coral);
  color: #fff;
  box-shadow: 0 4px 18px rgba(255,107,107,0.35);
}
.btn--coral:hover {
  background-color: #d63031;
  transform: translateY(-2px);
}

/* TÃ­tulos de secciÃ³n */
.seccion-titulo {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.9rem, 4vw, 3rem);
  color: var(--texto-oscuro);
  text-align: center;
  margin-bottom: 1rem;
  line-height: 1.15;
}
/* LÃ­nea decorativa tropical bajo cada tÃ­tulo de secciÃ³n */
.seccion-titulo::after {
  content: '';
  display: block;
  width: 56px; height: 3px;
  margin: 0.55rem auto 0;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--turquesa), var(--coral));
}

.seccion-subtitulo {
  font-size: 1.05rem;
  color: var(--texto-medio);
  text-align: center;
  max-width: 560px;
  margin: 0 auto 2.5rem;
}

/* ===== HEADER / NAVBAR ===== */
.header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  background-color: rgba(255, 253, 247, 0.94);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid transparent;
  transition: box-shadow 0.35s ease, border-color 0.35s ease;
}

.header--scrolled {
  box-shadow: 0 2px 22px rgba(0, 188, 212, 0.14);
  border-bottom-color: var(--borde);
}

.header__contenedor {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0.85rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

/* Logo */
.header__logo {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 400;
  font-size: 1.45rem;
  line-height: 1;
  display: flex;
  align-items: center;
  gap: 0.1em;
}
.header__logo-explora { color: var(--turquesa); }
.header__logo-miami   { color: var(--coral); }

/* Hamburguesa */
.header__menu-btn {
  display: flex;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  flex-shrink: 0;
}
.header__menu-btn span {
  display: block;
  width: 24px; height: 2px;
  background-color: var(--texto-oscuro);
  border-radius: 2px;
  transition: transform 0.3s ease, opacity 0.3s ease;
}
.header__menu-btn.abierto span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.header__menu-btn.abierto span:nth-child(2) { opacity: 0; }
.header__menu-btn.abierto span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Nav mÃ³vil */
.header__nav {
  position: absolute;
  top: 100%; left: 0; right: 0;
  background-color: rgba(255, 253, 247, 0.98);
  backdrop-filter: blur(12px);
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease, padding 0.4s ease;
  border-bottom: 1px solid var(--borde);
}
.header__nav.abierto { max-height: 420px; padding: 0.75rem 0 1.25rem; }

.header__lista { display: flex; flex-direction: column; align-items: center; gap: 0.1rem; }

.header__enlace {
  display: block;
  padding: 0.6rem 1.5rem;
  font-size: 1rem;
  font-weight: 600;
  color: var(--texto-oscuro);
  transition: color 0.2s ease;
}
.header__enlace:hover { color: var(--turquesa); }

/* Link CTA "Para empresas" en el navbar â€” ANUNCIANTES */
.header__enlace--cta {
  background: linear-gradient(135deg, var(--coral), var(--turquesa));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  font-weight: 700;
  padding: 0.4rem 0.9rem;
  border-radius: 8px;
}
.header__enlace--cta:hover {
  opacity: 0.8;
  color: inherit; /* sin sobrescribir el gradient text */
}

/* BotÃ³n de idioma */
.header__lang-btn {
  background: var(--turquesa);
  color: #fff;
  border: none;
  border-radius: 50px;
  padding: 0.3rem 0.9rem;
  font-family: var(--fuente-cuerpo);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: 0.05em;
  transition: background-color 0.2s ease, transform 0.2s ease;
  flex-shrink: 0;
}
.header__lang-btn:hover { background-color: var(--turquesa-oscura); transform: scale(1.06); }

/* Nav desktop */
@media (min-width: 768px) {
  .header__menu-btn { display: none; }

  .header__nav {
    position: static;
    max-height: none;
    overflow: visible;
    padding: 0;
    border-bottom: none;
    background: transparent;
    backdrop-filter: none;
  }

  .header__lista   { flex-direction: row; gap: 0.1rem; }
  .header__enlace  { font-size: 0.9rem; padding: 0.35rem 0.8rem; }
}

/* ===== HERO TRAIL â€” ImageTrail ===== */
/* Hero blanco arena con trail de fotos siguiendo el cursor. */

.hero-arc {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 8rem 1.5rem 4rem;
  text-align: center;
  overflow: hidden;
  background: var(--blanco-arena);
  color: var(--texto-oscuro);
}

/* Contenedor del trail de imÃ¡genes */
.hero-trail {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

/* Cada imagen del trail */
.hero-trail-img {
  position: absolute;
  width: 110px;
  height: 150px;
  object-fit: cover;
  border-radius: 12px;
  pointer-events: none;
  will-change: transform, opacity;
  box-shadow:
    0 12px 40px rgba(0, 0, 0, 0.18),
    0 4px  12px rgba(0, 0, 0, 0.10);
  border: 1.5px solid rgba(255, 255, 255, 0.6);
}

/* Contenido central */
.hero-arc__contenido {
  position: relative;
  z-index: 10;
  max-width: 900px;
  background: transparent;
  padding: 2rem 1.5rem;
}

/* Etiqueta superior â€” tema claro */
.hero-arc__etiqueta {
  display: inline-block;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  padding: 0.45rem 1.1rem;
  border-radius: 999px;
  background: rgba(26, 42, 58, 0.06);
  border: 1px solid rgba(26, 42, 58, 0.14);
  color: var(--texto-medio);
  margin-bottom: 1.8rem;
  opacity: 0;
  animation: hero-fade-in 700ms var(--ease) forwards 0.3s;
}

/* TÃ­tulo shutter */
.hero-arc__titulo {
  font-family: var(--fuente-titulo);
  font-size: clamp(2.2rem, 6vw, 4.8rem);
  font-weight: 400;
  font-style: italic;
  letter-spacing: -0.02em;
  line-height: 1.0;
  margin-bottom: 1.4rem;
  color: var(--texto-oscuro);
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.04em;
}

.shutter-letra {
  position: relative;
  display: inline-block;
  overflow: hidden;
}
.shutter-capa {
  display: block;
  transform: translateY(110%);
  animation: shutter-up 0.65s cubic-bezier(0.2, 0, 0, 1) forwards;
  color: var(--texto-oscuro);
}
@keyframes shutter-up { to { transform: translateY(0); } }

/* Tagline â€” Miami style: fino, naranja/mostaza, cursiva */
.hero-arc__tagline {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-size: clamp(1.05rem, 1.8vw, 1.35rem);
  font-weight: 300;
  max-width: 560px;
  margin: 0 auto 2.4rem;
  color: var(--texto-medio);
  line-height: 1.6;
  opacity: 0;
  animation: hero-fade-in 700ms var(--ease) forwards 1.4s;
}

/* Botones */
.hero-arc__botones {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
  opacity: 0;
  animation: hero-fade-in 700ms var(--ease) forwards 1.6s;
}

/* Scroll indicator */
.hero-arc__scroll {
  position: absolute;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.6rem;
  font-size: 0.72rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--texto-suave);
  opacity: 0;
  animation: hero-fade-in 700ms var(--ease) forwards 2s;
}
.hero-arc__scroll-linea {
  width: 1px;
  height: 38px;
  background: linear-gradient(to bottom, transparent, var(--texto-suave));
  animation: scroll-pulso 1.8s var(--ease) infinite;
}
@keyframes scroll-pulso {
  0%, 100% { transform: scaleY(0.4); transform-origin: top; opacity: 0.3; }
  50%       { transform: scaleY(1);   opacity: 1; }
}
@keyframes hero-fade-in { to { opacity: 1; } }

/* Responsive */
@media (max-width: 768px) {
  .hero-trail-img { width: 80px; height: 110px; border-radius: 8px; }
  .hero-arc__contenido { padding: 2rem 1rem; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .hero-arc__scroll-linea,
  .shutter-capa {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
  .hero-arc__etiqueta,
  .hero-arc__tagline,
  .hero-arc__botones,
  .hero-arc__scroll {
    animation: none !important;
    opacity: 1 !important;
  }
  .hfa-item { animation: none !important; opacity: 0.65 !important; }
}

/* ===== HERO â€” Foto icÃ³nica Miami (local, uso libre) ===== */
.hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image: url('../images/photo-1595323397978-65433d24fc23.avif');
  background-size: cover;
  background-position: center 45%;
  background-repeat: no-repeat;
  opacity: 0.90;
  pointer-events: none;
}

/* ===== HERO â€” Frases emotivas flotantes ===== */
.hero-frases-ambient {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  overflow: hidden;
}

.hfa-item {
  position: absolute;
  left: var(--x);
  top:  var(--y);
  transform: translateX(-50%);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--texto-suave);
  white-space: nowrap;
  opacity: 0;
  animation: hfa-aparece 1s ease forwards var(--d);
}

.hfa-item--wide {
  font-size: 0.74rem;
  transform: translateX(-50%);
}

@keyframes hfa-aparece {
  0%   { opacity: 0; transform: translateX(-50%) translateY(10px); }
  100% { opacity: 0.68; transform: translateX(-50%) translateY(0); }
}

/* ===== SECCIÃ“N INTRO ===== */
.seccion-intro {
  background: var(--blanco-arena);
  padding: var(--seccion-py) 1.5rem;
}

/* ---- AnimaciÃ³n: tÃ­tulo "Â¿Por quÃ© Explora Miami?" ---- */
@keyframes tituloSlideIn {
  from {
    opacity: 0;
    transform: translateX(-22px);
    letter-spacing: 0.04em;
  }
  to {
    opacity: 1;
    transform: translateX(0);
    letter-spacing: normal;
  }
}

/* LÃ­nea gradiente que crece bajo el tÃ­tulo */
@keyframes tituloLineaReveal {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

.si-col-texto.visible .seccion-intro__titulo {
  animation: tituloSlideIn 0.75s cubic-bezier(0.2, 0, 0, 1) 0.12s both;
}

/* LÃ­nea decorativa bajo el tÃ­tulo */
.si-layout .seccion-intro__titulo {
  position: relative;
  padding-bottom: 0.55rem;
}
.si-layout .seccion-intro__titulo::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 64px;
  height: 3px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--coral), var(--turquesa));
  transform: scaleX(0);
  transform-origin: left center;
  transition: none;
}
.si-col-texto.visible .seccion-intro__titulo::after {
  animation: tituloLineaReveal 0.6s cubic-bezier(0.2, 0, 0, 1) 0.6s both;
}

/* Reduced motion â€” sin animaciÃ³n */
@media (prefers-reduced-motion: reduce) {
  .si-col-texto.visible .seccion-intro__titulo,
  .si-col-texto.visible .seccion-intro__titulo::after {
    animation: none;
    transform: none;
    opacity: 1;
  }
}

.seccion-intro__contenedor { max-width: var(--max); margin: 0 auto; text-align: center; }

.seccion-intro__titulo {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.7rem, 3.5vw, 2.6rem);
  color: var(--texto-oscuro);
  margin-bottom: 0.5rem;
}

.seccion-intro__subtitulo { font-size: 1.05rem; color: var(--texto-medio); margin-bottom: 3rem; }

.seccion-intro__grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px) { .seccion-intro__grid { grid-template-columns: repeat(3, 1fr); } }

.intro-card {
  padding: 2.25rem 1.5rem;
  background: linear-gradient(145deg, #ffffff 0%, var(--blanco-arena) 100%);
  border-radius: var(--radio);
  border: 1px solid rgba(0, 188, 212, 0.14);
  transition: transform 0.32s cubic-bezier(0.2, 0, 0, 1), box-shadow 0.32s cubic-bezier(0.2, 0, 0, 1); /* era ease â€” asimÃ©trico */
}
.intro-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 16px 44px rgba(255, 107, 107, 0.16), 0 4px 12px rgba(0, 188, 212, 0.10);
  border-color: rgba(0, 188, 212, 0.32);
}
.intro-card__icono  { font-size: 2.5rem; margin-bottom: 1rem; }
.intro-card__titulo { font-family: var(--fuente-titulo); font-style: italic; font-weight: 600; font-size: 1.25rem; margin-bottom: 0.5rem; } /* era 400 â€” trazo muy fino a este tamaÃ±o */
.intro-card__texto  { font-size: 0.95rem; color: var(--texto-medio); line-height: 1.65; }

/* ===== SECCIÃ“N DESTINOS ===== */
.seccion-destinos {
  background: var(--blanco-arena);
  padding: var(--seccion-py) 1.5rem;
}

.seccion-destinos__contenedor { max-width: var(--max); margin: 0 auto; }
.seccion-destinos__encabezado { margin-bottom: 2rem; }

/* Filtros */
.filtros { display: flex; flex-wrap: wrap; gap: 0.6rem; justify-content: center; margin-bottom: 2.75rem; }

.filtros__btn {
  padding: 0.5rem 1.4rem;
  border: 2px solid var(--borde);
  border-radius: 999px;
  background-color: #fff;
  color: var(--texto-medio);
  font-family: var(--fuente-cuerpo);
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  transition: background-color 0.22s, color 0.22s, border-color 0.22s, transform 0.2s;
}
.filtros__btn:hover          { border-color: var(--turquesa); color: var(--turquesa); transform: translateY(-2px); }
.filtros__btn--activo        { background-color: var(--turquesa); border-color: var(--turquesa); color: #fff; }

/* â”€â”€ Carrusel de destinos â”€â”€ */
.destinos-carousel-wrap {
  position: relative;
}

/* Contenedor de tarjetas â€” scroll horizontal con snap */
.destinos-grid {
  display: flex;
  flex-wrap: nowrap;
  overflow-x: auto;
  gap: 1.25rem;
  padding: 0.25rem 1.5rem 1rem; /* padding mÃ­nimo â€” sin espacio vertical extra */
  scroll-snap-type: x mandatory;
  scroll-padding-left: 1.5rem;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x;
  scroll-behavior: smooth;
  /* Ocultar scrollbar completamente â€” la navegaciÃ³n la hacen los dots */
  scrollbar-width: none;
  overflow-y: visible;
}
.destinos-grid::-webkit-scrollbar { display: none; }

/* Espacio al final del carrusel (cross-browser trailing padding) */
.destinos-grid::after {
  content: '';
  flex: 0 0 0.5rem;
}

/* Indicadores de posiciÃ³n (dots) */
.destinos-dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.42rem;
  padding: 1.1rem 0 0.25rem;
}

.destinos-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255, 253, 247, 0.28);
  border: none;
  cursor: pointer;
  padding: 0;
  flex-shrink: 0;
  transition: background 0.28s ease,
              width 0.28s cubic-bezier(0.2, 0, 0, 1),
              border-radius 0.28s ease;
}

.destinos-dot--activo {
  background: var(--turquesa, #00BCD4);
  width: 22px;
  border-radius: 4px;
}

.destinos-dot:hover:not(.destinos-dot--activo) {
  background: rgba(255, 253, 247, 0.58);
}

@media (prefers-reduced-motion: reduce) {
  .destinos-dot { transition: none; }
}

/* Wrapper de borde gradiente */
.destino-card-wrap {
  flex: 0 0 clamp(280px, 78vw, 320px);
  scroll-snap-align: start;
  background: linear-gradient(163deg, var(--coral, #FF6B6B) 0%, var(--turquesa, #00BCD4) 100%);
  border-radius: 26px;
  padding: 2px;
  /* Sin overflow:hidden â€” permite que sombras sean visibles */
  transition: box-shadow 0.35s cubic-bezier(0.2, 0, 0, 1);
}
@media (prefers-reduced-motion: no-preference) {
  .destino-card-wrap:hover {
    box-shadow: 0 0 38px 6px rgba(0, 188, 212, 0.35);
  }
}

/* Cada tarjeta dentro del wrapper â€” ocupa todo el ancho */
.destinos-grid .destino-card {
  width: 100%;
}

/* Tarjetas de destino */
.destino-card {
  background-color: #ffffff;
  border-radius: 24px; /* rounded-3xl equivalente */
  overflow: hidden;
  border: none; /* borde reemplazado por el wrapper con gradiente */
  height: 420px;       /* altura fija como en el diseÃ±o de referencia */
  display: flex;
  flex-direction: column;
  transition: box-shadow 0.38s cubic-bezier(0.2, 0, 0, 1);
}
.destino-card[data-tipo="mar"]:hover    { box-shadow: var(--sombra-hover); }
.destino-card[data-tipo="tierra"]:hover { box-shadow: var(--sombra-tierra); }

/* Imagen */
.destino-card__img-cont {
  position: relative;
  height: 192px; /* h-48 del diseÃ±o de referencia */
  overflow: hidden;
  flex-shrink: 0;
}
.destino-card__img      { width: 100%; height: 100%; object-fit: cover; transition: transform 0.7s ease; }
.destino-card:hover .destino-card__img { transform: scale(1.10); }

/* Gradiente oscuro desde abajo (como el diseÃ±o de referencia) */
.destino-card__img-cont::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(7, 30, 43, 0.85) 0%,
    rgba(7, 30, 43, 0.12) 45%,
    transparent 70%
  );
  opacity: 0.65;
  transition: opacity 0.35s ease;
  z-index: 1;
  pointer-events: none;
}
.destino-card:hover .destino-card__img-cont::after { opacity: 0.40; }

/* Overlay de hover â€” aparece centrado sobre la imagen al pasar el ratÃ³n */
.destino-card__img-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.18);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 3;
}
.destino-card:hover .destino-card__img-overlay { opacity: 1; }

/* En tÃ¡ctil no hay hover â€” el card entero es clickeable */
@media (hover: none) { .destino-card__img-overlay { display: none; } }

/* BotÃ³n de acciÃ³n dentro del overlay */
.destino-card__overlay-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  background: rgba(255, 255, 255, 0.92);
  color: var(--tinta, #1a2a35);
  font-family: var(--fuente-cuerpo);
  font-size: 0.875rem;
  font-weight: 600;
  padding: 0.55rem 1.35rem;
  border-radius: 999px;
  text-decoration: none;
  border: none;
  cursor: pointer;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.22);
  transition: transform 0.2s ease, background 0.2s ease;
}
@media (prefers-reduced-motion: no-preference) {
  .destino-card__overlay-btn:hover { transform: scale(1.05); background: #fff; }
  .destino-card__overlay-btn:active { transform: scale(0.96); }
}

/* Badges */
.destino-card__badge {
  position: absolute;
  top: 0.85rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 0.28rem 0.78rem;
  border-radius: 50px;
  z-index: 2; /* sobre el gradiente, bajo el overlay de hover */
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.destino-card__badge--tipo { left: 0.85rem; }
.destino-card__badge--dif  { display: none; } /* eliminado â€” reemplazado por calificaciÃ³n estrellas */

.destino-card__badge--mar    { background-color: var(--turquesa); color: #fff; }
.destino-card__badge--tierra { background-color: var(--verde-tierra); color: #fff; }
/* Badges de categoria (sistema nuevo) — colores de la paleta del sitio */
.destino-card__badge--playa       { background-color: var(--turquesa); color: #fff; }
.destino-card__badge--buceo       { background-color: var(--turquesa-oscura); color: #fff; }
.destino-card__badge--pesca       { background-color: var(--mostaza); color: #3a2c00; }   /* texto oscuro — contraste AA sobre mostaza */
.destino-card__badge--exploracion { background-color: var(--verde-tierra); color: #fff; }
.destino-card__badge--bares       { background-color: var(--coral); color: #fff; }
.destino-card__badge--facil    { color: #388E3C; }                 /* contraste 4.54:1 âœ“ */
.destino-card__badge--moderado { color: #A04800; }                 /* era #F57C00 â€” 2.57:1 âœ— â†’ 5.8:1 âœ“ */
.destino-card__badge--dificil  { color: var(--coral-oscura); }    /* era #FF6B6B â€” 2.64:1 âœ— â†’ 5.15:1 âœ“ */

/* CalificaciÃ³n Google â€” esquina inferior derecha de la imagen
   (abajo para no chocar con el badge de tipo que estÃ¡ arriba a la izquierda) */
.destino-card__rating {
  position: absolute;
  bottom: 0.75rem;
  right: 0.85rem;
  background: rgba(7, 30, 43, 0.72);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  color: #fff;
  font-family: var(--fuente-cuerpo);
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.25rem 0.6rem;
  border-radius: 50px;
  display: flex;
  align-items: center;
  gap: 0.25rem;
  z-index: 2; /* sobre el gradiente, bajo el overlay de hover */
}
.destino-card__stars { font-size: 0.65rem; letter-spacing: -0.5px; }

/* Info â€” flex-col con espacio distribuido como en el diseÃ±o de referencia */
.destino-card__info {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  flex: 1;
  gap: 0;
  min-height: 0;   /* permite que los hijos flex se encojan */
  overflow: hidden; /* captura cualquier desbordamiento residual */
}

/* SecciÃ³n superior: tÃ­tulo + descripciÃ³n */
.destino-card__info-top {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  min-height: 0;
  overflow: hidden;
}

.destino-card__nombre {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 600;
  font-size: 1.2rem;
  color: var(--texto-oscuro);
  line-height: 1.25;
  transition: color 0.2s ease;
}
.destino-card:hover .destino-card__nombre { color: var(--turquesa, #00BCD4); }

/* DescripciÃ³n con recorte de 2 lÃ­neas â€” 3 lÃ­neas desbordaba con tÃ­tulos de 2 lÃ­neas */
.destino-card__desc {
  font-size: 0.875rem;
  color: var(--texto-medio);
  line-height: 1.65;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Barra inferior â€” separador + precio + horarios */
/* margin-top eliminado: justify-content:space-between ya distribuye el espacio */
.destino-card__meta-bar {
  border-top: 1px solid rgba(0, 188, 212, 0.14);
  padding-top: 0.75rem;
  flex-shrink: 0; /* la barra siempre visible, nunca se encoge */
}

.destino-card__meta { display: flex; flex-wrap: wrap; gap: 0.75rem 1.2rem; }

.destino-card__meta-item { display: flex; align-items: center; gap: 0.3rem; font-size: 0.86rem; color: var(--texto-medio); }
.destino-card__meta-item a { color: var(--turquesa); font-weight: 700; }

.meta-icono { font-size: 0.9rem; }

.destino-card__btn { align-self: flex-start; font-size: 0.87rem; padding: 0.55rem 1.3rem; }

/* ===== SECCIÃ“N MAPA ===== */
/* ============================================
   SECCIÃ“N MAPA REDISEÃ‘ADA â€” Globo Canvas + Leaflet
   ============================================ */
.seccion-mapa {
  position: relative;
  padding: 6rem 1.5rem 7rem;
  background: var(--azul-cielo-suave);
  overflow: hidden;
}

.seccion-mapa__contenedor {
  max-width: 1300px;
  margin: 0 auto;
}

.seccion-mapa__encabezado {
  text-align: center;
  margin-bottom: 3.5rem;
}

/* Grid principal */
.mapa-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  align-items: start;
}

@media (max-width: 900px) {
  .mapa-grid { grid-template-columns: 1fr; }
}

/* ---- COLUMNA GLOBO ---- */
/* Fondo claro â€” el globo cobe.js es blanco */
.mapa-globo-wrap {
  background: linear-gradient(135deg, #f8f9ff 0%, #eef2ff 100%) !important;
  border-radius: 24px;
  padding: 1.8rem;
  position: relative;
  overflow: hidden;
  box-shadow:
    0 20px 60px rgba(0, 0, 0, 0.10),
    inset 0 1px 0 rgba(255,255,255,0.8);
  border: 1px solid rgba(100, 150, 255, 0.15);
}

.mapa-globo-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.2rem;
}

/* Label oscuro sobre fondo claro */
.mapa-globo-label {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(30, 50, 100, 0.55);
}

/* Canvas con fade-in â€” cobe lo pinta en su propio loop */
.mapa-globo-canvas {
  width: 100%;
  aspect-ratio: 1 / 1;
  display: block;
  border-radius: 50%;
  cursor: grab;
  opacity: 0;
  transition: opacity 1.2s ease;
  background: transparent;
}

.mapa-globo-canvas:active { cursor: grabbing; }

/* Referencias de lugares */
.mapa-referencias {
  margin-top: 1.4rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}

/* Chips â€” tema claro sobre fondo claro */
.mapa-ref-chip {
  font-size: 0.68rem;
  font-weight: 500;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
  border: 1px solid rgba(0, 0, 0, 0.10);
  color: rgba(30, 50, 80, 0.75);
  background: rgba(255, 255, 255, 0.7);
  white-space: nowrap;
  transition: background 0.2s ease, color 0.2s ease;
  cursor: default;
}
.mapa-ref-chip:hover { background: rgba(255, 255, 255, 0.95); color: rgba(30, 50, 80, 1); }

.mapa-ref-chip--playa    { border-color: rgba(0, 150, 200, 0.30);   color: rgba(0, 120, 180, 0.90); }
.mapa-ref-chip--parque   { border-color: rgba(80, 160, 50, 0.30);   color: rgba(60, 140, 40, 0.90); }
.mapa-ref-chip--cultura  { border-color: rgba(200, 140, 0, 0.30);   color: rgba(170, 110, 0, 0.90); }
.mapa-ref-chip--aventura { border-color: rgba(200, 60, 60, 0.30);   color: rgba(180, 50, 50, 0.90); }
.mapa-ref-chip--agua     { border-color: rgba(50, 140, 220, 0.30);  color: rgba(40, 120, 200, 0.90); }

/* ---- COLUMNA MAPA LEAFLET ---- */
.mapa-leaflet-wrap {
  border-radius: 24px;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.18);
  border: 1px solid rgba(0,188,212,0.15);
}

.mapa-leaflet {
  width: 100%;
  height: 480px;
  z-index: 1;
}

/* Leyenda */
.mapa-leyenda {
  display: flex;
  gap: 1.4rem;
  padding: 0.9rem 1.2rem;
  background: white;
  border-top: 1px solid rgba(0,0,0,0.06);
  flex-wrap: wrap;
}

.mapa-leyenda-item {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--texto-medio);
}

.mapa-leyenda-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}
.mapa-leyenda-dot--tierra { background: var(--coral); }
.mapa-leyenda-dot--mar    { background: var(--turquesa); }
.mapa-leyenda-dot--ref    { background: var(--mostaza); opacity: 0.7; }

/* Overrides Leaflet generales */
.leaflet-container { font-family: var(--sans) !important; }
.leaflet-popup-content-wrapper {
  border-radius: 12px !important;
  box-shadow: 0 8px 24px rgba(0,0,0,0.15) !important;
  font-family: var(--sans) !important;
}
.leaflet-popup-content {
  margin: 12px 16px !important;
  font-size: 0.88rem !important;
  line-height: 1.5 !important;
}

/* Popup personalizado para destinos principales */
.explora-popup .leaflet-popup-content-wrapper {
  border-radius: 14px !important;
  box-shadow:
    0 8px 32px rgba(0,0,0,0.14),
    0 2px 8px  rgba(0,0,0,0.08) !important;
  border: 1px solid rgba(0,0,0,0.06) !important;
  padding: 0 !important;
}
.explora-popup .leaflet-popup-content {
  margin: 14px 18px !important;
}
.explora-popup .leaflet-popup-tip {
  box-shadow: none !important;
}

/* Responsive */
@media (max-width: 768px) {
  .mapa-leaflet { height: 360px; }
  .mapa-globo-wrap { padding: 1.2rem; }
}

@media (prefers-reduced-motion: reduce) {
  .mapa-globo-canvas { animation: none !important; }
}

/* ===== SECCIÃ“N TRABAJA CON NOSOTROS ===== */
.seccion-trabaja {
  background: var(--blanco-arena);
  padding: var(--seccion-py) 1.5rem;
}

.seccion-trabaja__contenedor { max-width: var(--max); margin: 0 auto; }

/* ===== TEASER B2B (reemplaza formulario inline) ===== */
.trabaja-teaser {
  max-width: 760px; margin: 0 auto;
  text-align: center; padding: 1rem 0;
}
.trabaja-teaser__badge {
  display: inline-block;
  font-size: 0.78rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--turquesa);
  background: rgba(0,188,212,0.08); border: 1px solid rgba(0,188,212,0.2);
  border-radius: 50px; padding: 0.35rem 1rem; margin-bottom: 1.5rem;
}
.trabaja-teaser__titulo {
  margin-top: 0 !important; /* sobrescribe el margin-top del .seccion-titulo base si existe */
}
.trabaja-teaser__sub {
  font-size: 1.1rem; color: var(--texto-medio);
  line-height: 1.7; max-width: 540px; margin: 0 auto 2rem;
}
.trabaja-teaser__sub strong { color: var(--tinta); font-weight: 700; }
.trabaja-teaser__pills {
  display: flex; gap: 0.75rem; justify-content: center; flex-wrap: wrap; margin-bottom: 2.5rem;
}
.trabaja-teaser__pill {
  font-size: 0.82rem; font-weight: 600; color: var(--turquesa-oscuro, #00434F);
  background: rgba(0,188,212,0.07); border: 1px solid rgba(0,188,212,0.15);
  border-radius: 50px; padding: 0.3rem 0.85rem;
  cursor: default;
  transition: background 0.2s, border-color 0.2s, transform 0.15s;
  display: inline-flex; align-items: center; gap: 0.28rem;
}

/* Efecto vibraciÃ³n al hover */
@keyframes pillWiggle {
  0%   { transform: rotate(0deg) scale(1); }
  12%  { transform: rotate(-4deg) scale(1.06) translateY(-2px); }
  28%  { transform: rotate(3deg) scale(1.08) translateY(-3px); }
  44%  { transform: rotate(-2.5deg) scale(1.05) translateY(-1px); }
  60%  { transform: rotate(1.5deg) scale(1.03); }
  76%  { transform: rotate(-1deg) scale(1.01); }
  100% { transform: rotate(0deg) scale(1); }
}

.trabaja-teaser__pill:hover {
  background: rgba(0,188,212,0.14);
  border-color: rgba(0,188,212,0.35);
  animation: pillWiggle 0.52s cubic-bezier(0.36, 0.07, 0.19, 0.97);
}

@media (prefers-reduced-motion: reduce) {
  .trabaja-teaser__pill:hover { animation: none; transform: none; }
}

.trabaja-teaser__cta { display: flex; justify-content: center; }
/* Hace que el <a> funcione igual que <button> dentro del metal-btn-wrap */
.trabaja-teaser__cta .metal-btn {
  text-decoration: none;
}
/* ===== FIN TEASER B2B ===== */

.trabaja-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 3rem;
  margin-top: 3rem;
}
@media (min-width: 768px) { .trabaja-grid { grid-template-columns: 1fr 1.4fr; gap: 4rem; align-items: start; } }

/* Columna info */
.trabaja-info__sub  { font-size: 1rem; color: var(--texto-medio); margin-bottom: 2rem; line-height: 1.7; }

.trabaja-beneficios { display: flex; flex-direction: column; gap: 0.85rem; }

.trabaja-beneficio {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--texto-oscuro);
}
.trabaja-beneficio__icono {
  display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  background-color: var(--turquesa); color: #fff;
  font-size: 1.1rem; flex-shrink: 0;
}

/* Formulario */
.trabaja-form-cont { position: relative; }

.form-card {
  background-color: #fff;
  border-radius: var(--radio);
  padding: 2.25rem;
  box-shadow: var(--sombra-card);
}

.form-grupo { display: flex; flex-direction: column; gap: 0.4rem; margin-bottom: 1.125rem; } /* era 1.1rem â€” nÃºmero sucio */

.form-grupo label {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--texto-oscuro);
  letter-spacing: 0.02em;
}

.form-grupo input,
.form-grupo select,
.form-grupo textarea {
  padding: 0.72rem 1rem;
  border: 1.5px solid #dde8ee;
  border-radius: 10px;
  font-family: var(--fuente-cuerpo);
  font-size: 0.95rem;
  color: var(--texto-oscuro);
  background-color: var(--blanco-arena);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  width: 100%;
}
.form-grupo input:focus,
.form-grupo select:focus,
.form-grupo textarea:focus {
  outline: none;
  border-color: var(--turquesa);
  box-shadow: 0 0 0 3px rgba(0,188,212,0.15);
}

.form-grupo textarea { resize: vertical; min-height: 110px; }

.form-fila { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 500px) { .form-fila { grid-template-columns: 1fr; } }

.form-enviar {
  width: 100%;
  padding: 0.85rem;
  font-size: 1rem;
  margin-top: 0.5rem;
}

/* Mensaje de Ã©xito */
.form-exito {
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 3rem 2rem;
  gap: 1rem;
}
.form-exito__check {
  width: 64px; height: 64px;
  background-color: var(--turquesa);
  color: #fff;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 2rem;
}
.form-exito__titulo { font-family: var(--fuente-titulo); font-style: italic; font-weight: 400; font-size: 1.8rem; }
.form-exito__texto  { font-size: 1rem; color: var(--texto-medio); }

/* ===== FOOTER ===== */
.footer {
  background: linear-gradient(160deg, var(--footer-ini) 0%, var(--footer-mid) 45%, var(--footer-fin) 100%); /* hex â†’ variables */
  color: rgba(255,253,247,0.82);
  padding: 4.5rem 1.5rem 0;
}

.footer__contenedor {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1fr;
  gap: 2.5rem; padding-bottom: 3.5rem;
  border-bottom: 1px solid rgba(0, 188, 212, 0.20);
}
@media (min-width: 640px) { .footer__contenedor { grid-template-columns: 1.6fr 1fr 1.8fr; } }

.footer__logo {
  font-family: var(--fuente-titulo);
  font-size: 1.65rem; color: #fff; display: flex; align-items: center; gap: 0.1em;
}
.footer__logo-explora { color: var(--turquesa); }
.footer__logo-miami   { color: var(--mostaza); }

.footer__tagline { font-size: 0.9rem; font-style: italic; opacity: 0.65; margin-top: 0.5rem; }

.footer__subtitulo {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 400;
  font-size: 1.05rem; color: rgba(0, 188, 212, 0.90); margin-bottom: 1rem;
}

.footer__lista { display: flex; flex-direction: column; gap: 0.5rem; }

.footer__enlace {
  font-size: 0.9rem; opacity: 0.68; cursor: pointer;
  transition: opacity 0.2s, color 0.2s;
}
.footer__enlace:hover { opacity: 1; color: var(--turquesa); }

.footer__sociales { display: flex; gap: 0.75rem; margin-top: 1rem; flex-wrap: wrap; }

.footer__social {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
  background-color: rgba(0, 188, 212, 0.18);
  border: 1px solid rgba(0, 188, 212, 0.25);
  font-size: 1.05rem;
  transition: background-color 0.2s, transform 0.2s, border-color 0.2s;
}
.footer__social:hover { background-color: var(--turquesa); border-color: var(--turquesa); transform: scale(1.1); }

.footer__inferior {
  padding: 1.5rem 0; text-align: center;
  font-size: 0.84rem; opacity: 0.5;
  display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem;
}
.footer__inferior a { opacity: 0.6; transition: opacity 0.2s; }
.footer__inferior a:hover { opacity: 1; }

/* ===================================================
   MODAL DE DESTINO â€” pantalla completa
   Se abre al hacer clic en una tarjeta de destino
=================================================== */

/* Contenedor principal: overlay fijo sobre toda la pantalla */
.modal-destino {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: flex-end;      /* Entra desde abajo en mÃ³vil */
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.32s ease;
}
@media (min-width: 640px) {
  .modal-destino { align-items: center; } /* Centrado vertical en desktop */
}

/* Clase .abierto activa el modal */
.modal-destino.abierto {
  opacity: 1;
  pointer-events: auto;
}

/* Fondo oscuro semitransparente */
.modal-fondo {
  position: absolute;
  inset: 0;
  background: rgba(0, 30, 40, 0.72);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  cursor: pointer;
}

/* Panel blanco del modal */
.modal-panel {
  position: relative;
  z-index: 1;
  background-color: #fff;
  border-radius: 24px 24px 0 0;
  width: 100%;
  max-width: 900px;
  max-height: 92vh;
  overflow-y: auto;
  overflow-x: hidden;
  transform: translateY(40px); /* era 60px â€” offset inicial excesivo */
  transition: transform 0.35s cubic-bezier(0.34, 1.26, 0.64, 1);
  /* Scrollbar discreta */
  scrollbar-width: thin;
  scrollbar-color: rgba(0,188,212,0.3) transparent;
}
@media (min-width: 640px) {
  .modal-panel {
    border-radius: 24px;
    max-height: 88vh;
    margin: 1rem;
  }
}
.modal-destino.abierto .modal-panel { transform: translateY(0); }

/* BotÃ³n cerrar (X) fijo en la esquina superior derecha del panel */
.modal-cerrar {
  position: sticky;
  top: 0.75rem;
  float: right;
  margin: 0.75rem 0.75rem 0 0;
  z-index: 10;
  width: 36px; height: 36px;
  border-radius: 50%;
  border: none;
  background: rgba(255,255,255,0.9);
  backdrop-filter: blur(6px);
  box-shadow: 0 2px 12px rgba(0,0,0,0.15);
  font-size: 1rem;
  color: var(--texto-oscuro);
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background-color 0.2s, transform 0.2s;
  flex-shrink: 0;
}
.modal-cerrar:hover { background: var(--coral); color: #fff; transform: rotate(90deg); }

/* ---- GalerÃ­a de fotos ---- */
.modal-galeria { width: 100%; overflow: hidden; }

/* Grid: foto grande izquierda + dos pequeÃ±as derecha */
.modal-galeria-grid {
  display: grid;
  grid-template-columns: 3fr 2fr;
  grid-template-rows: 1fr 1fr;
  height: 320px;
  gap: 3px;
}
@media (max-width: 540px) { .modal-galeria-grid { height: 220px; } }

.modal-galeria-main {
  grid-row: 1 / 3;    /* ocupa las dos filas */
  width: 100%; height: 100%;
  object-fit: cover;
}

.modal-galeria-lateral {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.modal-galeria-lateral img {
  width: 100%; flex: 1;
  object-fit: cover;
}

/* Esquinas redondeadas solo en la parte superior del modal */
.modal-galeria-grid img:first-child    { border-radius: 24px 0 0 0; }
.modal-galeria-lateral img:last-child  { border-radius: 0 0 0 0; }
@media (min-width: 640px) {
  .modal-galeria-grid img:first-child   { border-radius: 24px 0 0 0; }
  .modal-galeria-lateral img:first-child{ border-radius: 0 24px 0 0; }
}

.modal-galeria-simple img { width: 100%; height: 280px; object-fit: cover; }

/* ---- Cuerpo del modal ---- */
.modal-cuerpo {
  padding: 2rem 2rem 3rem;
  display: flex;
  flex-direction: column;
  gap: 2.5rem; /* era 2rem â€” igual al padding lateral, genera compresiÃ³n visual */
}
@media (max-width: 540px) { .modal-cuerpo { padding: 1.5rem 1.25rem 2.5rem; } }

/* ---- Encabezado: badges + tÃ­tulo + texto ---- */
.modal-encabezado { display: flex; flex-direction: column; gap: 0.85rem; }

.modal-badges { display: flex; flex-wrap: wrap; gap: 0.5rem; }

.modal-badge {
  display: inline-block;
  font-size: 0.78rem; font-weight: 700;
  letter-spacing: 0.04em;
  padding: 0.3rem 0.85rem;
  border-radius: 50px;
}
.modal-badge--mar      { background: rgba(0,188,212,0.12); color: #00838f; }
.modal-badge--tierra   { background: rgba(124,179,66,0.12); color: #558B2F; }
.modal-badge--dif      { background: rgba(255,255,255,0.8); border: 1px solid #e0e8ee; color: var(--texto-medio); }
.modal-badge--facil    { color: #388E3C; border-color: rgba(56,142,60,0.25); background: rgba(56,142,60,0.08); }
.modal-badge--moderado { color: #F57C00; border-color: rgba(245,124,0,0.25); background: rgba(245,124,0,0.08); }
.modal-badge--dificil  { color: var(--coral); border-color: rgba(255,107,107,0.25); background: rgba(255,107,107,0.08); }

/* TÃ­tulo del modal en Playfair italic */
.modal-nombre {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  color: var(--texto-oscuro);
  line-height: 1.15;
}

/* DescripciÃ³n corta: texto mÃ¡s prominente */
.modal-desc-corta {
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--texto-medio);
  line-height: 1.6;
}

/* DescripciÃ³n larga: texto narrativo completo */
.modal-desc-larga {
  font-size: 0.95rem;
  color: var(--texto-medio);
  line-height: 1.75;
}

/* ---- Datos prÃ¡cticos ---- */
.modal-datos-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
}
@media (min-width: 640px) { .modal-datos-grid { grid-template-columns: repeat(4, 1fr); } }

.modal-dato {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  background: var(--blanco-arena);
  border-radius: 14px;
  padding: 0.9rem 1rem;
  border: 1px solid rgba(0,188,212,0.10);
}

.modal-dato__icono { font-size: 1.25rem; line-height: 1; flex-shrink: 0; }

.modal-dato strong {
  display: block;
  font-size: 0.72rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--texto-suave);
  margin-bottom: 0.2rem;
}
.modal-dato span, .modal-dato a {
  font-size: 0.88rem; color: var(--texto-oscuro); font-weight: 600;
}
.modal-dato a { color: var(--turquesa); }
.modal-dato a:hover { text-decoration: underline; }

/* ---- CÃ³mo llegar ---- */
.modal-llegar { display: flex; flex-direction: column; gap: 0.6rem; }

.modal-llegar-texto {
  font-size: 0.93rem;
  color: var(--texto-medio);
  line-height: 1.75;
  background: linear-gradient(135deg, rgba(0,188,212,0.06), rgba(0,188,212,0.02));
  border-left: 3px solid var(--turquesa);
  border-radius: 0 12px 12px 0;
  padding: 1rem 1.25rem;
}

/* ---- SubtÃ­tulos de secciÃ³n dentro del modal ---- */
.modal-subtitulo {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 400;
  font-size: 1.25rem;
  color: var(--texto-oscuro);
  margin-bottom: 0.75rem;
}

/* ---- Mapa embed ---- */
.modal-mapa-wrap { display: flex; flex-direction: column; }

.modal-mapa-iframe {
  width: 100%;
  height: 300px;
  border: none;
  border-radius: 16px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.08);
}
@media (min-width: 640px) { .modal-mapa-iframe { height: 360px; } }

/* ---- ReseÃ±as de visitantes ---- */
.modal-resenas-grid {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.modal-resena {
  /* Borde gradiente coralâ†’turquesa via padding-box/border-box */
  background:
    linear-gradient(145deg, #fff, var(--blanco-arena)) padding-box,
    linear-gradient(163deg, var(--coral, #FF6B6B) 0%, var(--turquesa, #00BCD4) 100%) border-box;
  border: 2px solid transparent;
  border-radius: 16px;
  padding: 1.25rem 1.5rem;
  box-shadow: 0 2px 12px rgba(0,0,0,0.04);
}

.modal-resena__header {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin-bottom: 0.85rem;
  flex-wrap: wrap;
}

.modal-resena__avatar {
  width: 44px; height: 44px;
  border-radius: 50%;
  flex-shrink: 0;
  /* Sobreescrito mÃ¡s abajo para avatares con inicial */
}

.modal-resena__nombre {
  font-size: 0.9rem; font-weight: 700;
  color: var(--texto-oscuro);
  display: block;
}
.modal-resena__fecha {
  font-size: 0.78rem; color: var(--texto-suave);
  display: block;
}

.modal-resena__estrellas {
  margin-left: auto;
  display: flex; gap: 2px;
}
.modal-estrella       { font-size: 1rem; color: #e0e0e0; }
.modal-estrella--llena{ color: var(--mostaza); }

.modal-resena__texto {
  font-size: 0.9rem;
  color: var(--texto-medio);
  line-height: 1.7;
  font-style: italic;
}

/* Cursor pointer en tarjetas clickeables */
.destino-card { cursor: pointer; }

/* ===== GALERÃA CON NAVEGACIÃ“N PREV/NEXT ===== */
.modal-galeria-principal {
  position: relative;
  width: 100%;
  height: 340px;
  overflow: hidden;
  background: #000;
}
@media (min-width: 640px) { .modal-galeria-principal { height: 420px; } }

.modal-galeria-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: opacity 0.25s ease;
}

.modal-galeria-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0,0,0,0.48);
  color: #fff;
  border: none;
  border-radius: 50%;
  width: 42px; height: 42px;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  z-index: 2;
  transition: background 0.2s;
}
.modal-galeria-nav:hover { background: rgba(0,0,0,0.72); }
.modal-galeria-nav--prev { left: 10px; }
.modal-galeria-nav--next { right: 10px; }

.modal-galeria-contador {
  position: absolute;
  bottom: 10px; right: 14px;
  background: rgba(0,0,0,0.52);
  color: #fff;
  font-size: 0.78rem; font-weight: 600;
  padding: 0.2rem 0.55rem;
  border-radius: 50px;
  font-family: 'Inter', sans-serif;
}

/* Tira de miniaturas */
.modal-thumbnails {
  display: flex;
  gap: 6px;
  padding: 8px 0 4px;
  overflow-x: auto;
  scrollbar-width: none;
}
.modal-thumbnails::-webkit-scrollbar { display: none; }

.modal-thumb {
  flex-shrink: 0;
  width: 72px; height: 52px;
  border-radius: 8px;
  overflow: hidden;
  border: 2.5px solid transparent;
  cursor: pointer;
  padding: 0;
  background: none;
  transition: border-color 0.2s, opacity 0.2s;
  opacity: 0.65;
}
.modal-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.modal-thumb--activa { border-color: var(--turquesa); opacity: 1; }
.modal-thumb:hover { opacity: 0.9; }

/* ===== BOTONES DE ACCIÃ“N DEL MODAL ===== */
.modal-acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin: 1.25rem 0 0.5rem;
}

.modal-accion-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.6rem 1.2rem;
  border-radius: 50px;
  font-family: 'Inter', sans-serif;
  font-size: 0.87rem;
  font-weight: 700;
  text-decoration: none;
  transition: opacity 0.18s, transform 0.18s;
  white-space: nowrap;
}
.modal-accion-btn:hover { opacity: 0.88; transform: translateY(-1px); }

.modal-accion-btn--google {
  background: #4CAF50;
  color: #fff;
  box-shadow: 0 4px 14px rgba(76,175,80,0.30);
}
.modal-accion-btn--apple {
  background: linear-gradient(135deg, #1a2a3a, #0d1f30); /* era #1C1C1E â€” negro puro fuera de paleta */
  color: #fff;
  box-shadow: 0 4px 14px rgba(0,0,0,0.20);
}
.modal-accion-btn--resenas {
  background: var(--coral);
  color: #fff;
  box-shadow: 0 4px 14px rgba(255,107,107,0.30);
}
.modal-accion-btn--web {
  background: transparent;
  color: var(--turquesa);
  border: 2px solid var(--turquesa);
}

/* ===== BADGE MEJOR Ã‰POCA ===== */
.modal-badge--epoca {
  background: rgba(255,179,0,0.12);
  color: #9a6700;
  border: 1px solid rgba(255,179,0,0.35);
  font-size: 0.72rem;
}

/* ===== DISCLAIMER DEL MODAL ===== */
.modal-disclaimer {
  font-size: 0.78rem;
  color: var(--texto-suave);
  background: rgba(255,107,107,0.06);
  border: 1px solid rgba(255,107,107,0.18);
  border-radius: 10px;
  padding: 0.65rem 1rem;
  margin-top: 1.25rem;
  line-height: 1.5;
}

/* Avatar de reseÃ±a con inicial (cÃ­rculo de color en lugar de foto) */
.modal-resena__avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center; justify-content: center;
  font-weight: 700; font-size: 1rem;
  color: #fff;
  flex-shrink: 0;
  font-family: 'Playfair Display', Georgia, serif;
}

/* ===== MODAL REVIEW TEXT â€” sin italic en cuerpo pequeÃ±o ===== */
.modal-resena__texto {
  font-style: normal; /* era italic â€” reduce legibilidad en Inter pequeÃ±o */
}

/* ================================================================
   PREFERS-REDUCED-MOTION â€” accesibilidad (BLOCKER)
   Desactiva todas las animaciones y transiciones para usuarios
   que han indicado preferencia de movimiento reducido.
================================================================ */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .fade-up {
    opacity: 1;
    transform: none;
  }

}


/* ================================================================
   TASTE-SKILL SOFT PASS
   Variante: tropical moderno Â· sin plantilla genÃ©rica
   Toca solo tipografÃ­a, espaciado, composiciÃ³n y jerarquÃ­a visual.
   No se modifica HTML ni JS.
================================================================ */

/* ---- TIPOGRAFÃA: jerarquÃ­a mÃ¡s intencional ---- */

/* TÃ­tulos de secciÃ³n: tracking negativo + subrayado mÃ¡s vibrante */
.seccion-titulo {
  font-size: clamp(2rem, 4.5vw, 3.2rem);
  letter-spacing: -0.025em;
}
.seccion-titulo::after {
  width: 72px;    /* era 56px */
  height: 4px;    /* era 3px  */
  margin-top: 0.7rem;
  background: linear-gradient(90deg, var(--turquesa) 0%, var(--mostaza) 55%, var(--coral) 100%);
}

/* SubtÃ­tulo: Inter 500 â€” sale del look de plantilla */
.seccion-subtitulo {
  font-size: 1.075rem;
  font-weight: 500;
  letter-spacing: 0.004em;
  margin-bottom: 3.25rem;
  color: var(--texto-medio);
}

/* Nombre de tarjeta: mÃ¡s presencia */
.destino-card__nombre {
  font-size: 1.22rem;
  letter-spacing: -0.015em;
}

/* Intro titles: tracking igual */
.seccion-intro__titulo {
  letter-spacing: -0.025em;
}

/* ---- INTRO CARDS: identidad de color por posiciÃ³n ---- */

/* Turquesa, Mostaza, Coral â€” cada card tiene su personalidad */
.seccion-intro__grid .intro-card:nth-child(1) {
  background: linear-gradient(150deg, rgba(0,188,212,0.08) 0%, #ffffff 52%);
  border: 1px solid rgba(0,188,212,0.18);
  border-top: 3px solid var(--turquesa);
}
.seccion-intro__grid .intro-card:nth-child(2) {
  background: linear-gradient(150deg, rgba(255,179,0,0.09) 0%, #ffffff 52%);
  border: 1px solid rgba(255,179,0,0.20);
  border-top: 3px solid var(--mostaza);
}
.seccion-intro__grid .intro-card:nth-child(3) {
  background: linear-gradient(150deg, rgba(255,107,107,0.08) 0%, #ffffff 52%);
  border: 1px solid rgba(255,107,107,0.18);
  border-top: 3px solid var(--coral);
}

/* Icono mÃ¡s grande y con margen propio */
.intro-card__icono {
  font-size: 2.75rem;
  margin-bottom: 1.25rem;
  line-height: 1;
}

/* ---- DESTINO CARDS: acento de color por tipo que se revela ---- */

/* Estado base: lÃ­nea de color sutil como huella de identidad */
.destino-card[data-tipo="mar"] {
  border-top: 3px solid rgba(0,188,212,0.18);
}
.destino-card[data-tipo="tierra"] {
  border-top: 3px solid rgba(124,179,66,0.22);
}
/* En hover se intensifica â€” ya sabÃ­as que era especial */
.destino-card[data-tipo="mar"]:hover {
  border-top-color: var(--turquesa);
}
.destino-card[data-tipo="tierra"]:hover {
  border-top-color: var(--verde-tierra);
}

/* MÃ¡s breathing room en el cuerpo de la tarjeta */
.destino-card__info {
  padding: 1.75rem;   /* era 1.5rem */
}

/* Overlay sutil en imagen en hover â€” da profundidad sin oscurecer */
.destino-card__img-cont::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 45%, rgba(0,0,0,0.20) 100%);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.4s cubic-bezier(0.2, 0, 0, 1);
}
.destino-card:hover .destino-card__img-cont::after {
  opacity: 1;
}

/* ---- FILTROS: botÃ³n activo mÃ¡s prominente ---- */
.filtros__btn--activo {
  box-shadow: 0 4px 18px rgba(0,188,212,0.30);
  letter-spacing: 0.01em;
}
.filtros__btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 14px rgba(0,188,212,0.15);
}

/* ---- BENEFITS: iconos con color de marca rotado ---- */
.trabaja-beneficio:nth-child(1) .trabaja-beneficio__icono {
  background: linear-gradient(135deg, var(--turquesa), #0097a7);
}
.trabaja-beneficio:nth-child(2) .trabaja-beneficio__icono {
  background: linear-gradient(135deg, var(--mostaza), #e6a000);
}
.trabaja-beneficio:nth-child(3) .trabaja-beneficio__icono {
  background: linear-gradient(135deg, var(--coral), #d63031);
}
.trabaja-beneficio:nth-child(4) .trabaja-beneficio__icono {
  background: linear-gradient(135deg, #7CB342, #558B2F);
}

/* ---- MAPA CHIPS: interactividad sutil ---- */
.mapa-marcador {
  box-shadow: 0 2px 8px rgba(0,0,0,0.06);
  transition: transform 0.22s cubic-bezier(0.2,0,0,1), box-shadow 0.22s ease;
}
.mapa-marcador:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(0,0,0,0.10);
}

/* ---- FORM: labels con acento de identidad ---- */
.form-grupo label {
  display: flex;
  align-items: center;
  gap: 0.45rem;
}
.form-grupo label::before {
  content: '';
  display: inline-block;
  width: 3px;
  height: 0.85em;
  background: linear-gradient(180deg, var(--turquesa), var(--mostaza));
  border-radius: 2px;
  flex-shrink: 0;
}

/* Form card: sombra mÃ¡s dramÃ¡tica para separar del fondo */
.form-card {
  box-shadow: 0 16px 56px rgba(0,188,212,0.12), 0 4px 16px rgba(0,0,0,0.06);
}

/* ---- NAVBAR: subrayado en hover en lugar de solo color ---- */
.header__enlace {
  position: relative;
}
.header__enlace::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0.8rem; right: 0.8rem;
  height: 2px;
  background: linear-gradient(90deg, var(--turquesa), var(--coral));
  border-radius: 2px;
  transform: scaleX(0);
  transition: transform 0.25s cubic-bezier(0.2, 0, 0, 1);
}
.header__enlace:hover::after { transform: scaleX(1); }
.header__enlace:hover { color: var(--texto-oscuro); } /* override turquesa, el subrayado ya habla */

/* ---- FOOTER: mejor jerarquÃ­a de marca ---- */
.footer__tagline {
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.55;
  opacity: 0.72;
  max-width: 22ch;   /* evita lÃ­neas largas sueltas */
}

/* Enlace de footer: underline en hover mÃ¡s limpio */
.footer__enlace:hover {
  text-decoration: underline;
  text-decoration-color: rgba(0,188,212,0.5);
  text-underline-offset: 3px;
}

/* ---- MODAL: badge dif mÃ¡s refinado ---- */
.modal-badge--dif {
  background: rgba(242,246,250,0.98);
  border: 1px solid #dde8f0;
  color: var(--texto-medio);
}

/* ---- STAT DECORATIVE: secciÃ³n intro mÃ¡s generosa ---- */
.seccion-intro__contenedor {
  padding-top: 0.5rem;  /* respira un poco mÃ¡s del fade-in */
}

/* ---- RESPONSIVE: ajustes mÃ³vil ---- */
@media (max-width: 640px) {
  .seccion-titulo { letter-spacing: -0.015em; }
  .destino-card__info { padding: 1.5rem; }
  .form-card { padding: 1.75rem 1.25rem; }
}

/* ================================================================
   PREMIUM 3D REDESIGN â€” Nivel Agencia $20K
   glassmorphism Â· dark ocean Â· cinematic scroll Â· 3D mouse tilt
   No modifica HTML ni lÃ³gica JS existente.
================================================================ */

/* --- Tokens premium --- */
:root {
  --glass-bg:      rgba(255, 255, 255, 0.065);
  --glass-border:  rgba(255, 255, 255, 0.11);
  --glass-blur:    blur(22px) saturate(180%);
  --glass-shadow:  0 8px 40px rgba(0, 0, 0, 0.40),
                   inset 0 1px 0 rgba(255, 255, 255, 0.10),
                   inset 0 -1px 0 rgba(0, 0, 0, 0.08);
  --ocean-ini:     #071e2b;
  --ocean-mid:     #0a2d3f;
  --ocean-fin:     #051822;
}

/* --- SECCIÃ“N DESTINOS: dark ocean --- */
.seccion-destinos {
  background: linear-gradient(160deg, var(--ocean-ini) 0%, var(--ocean-mid) 48%, var(--ocean-fin) 100%);
  position: relative;
  overflow: hidden;
}

/* Luces de ambiente â€” coral y turquesa difuminadas en el fondo */
.seccion-destinos::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 65% 45% at 10% 15%, rgba(0, 188, 212, 0.13) 0%, transparent 55%),
    radial-gradient(ellipse 55% 40% at 90% 80%, rgba(255, 107, 107, 0.09) 0%, transparent 52%),
    radial-gradient(ellipse 50% 55% at 50% 105%, rgba(0, 60, 90, 0.30) 0%, transparent 60%);
  pointer-events: none;
  z-index: 0;
}

/* Todo el contenido flota sobre la capa de fondo */
.seccion-destinos > * { position: relative; z-index: 1; }

/* TÃ­tulo y subtÃ­tulo adaptados al fondo oscuro */
.seccion-destinos .seccion-titulo        { color: #fff; }
.seccion-destinos .seccion-subtitulo     { color: rgba(255, 255, 255, 0.72); }
.seccion-destinos .seccion-titulo::after {
  background: linear-gradient(90deg, var(--turquesa) 0%, var(--mostaza) 55%, var(--coral) 100%);
}

/* --- FILTROS sobre fondo oscuro --- */
.seccion-destinos .filtros__btn {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.78);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.seccion-destinos .filtros__btn:hover {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.28);
  color: #fff;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.20);
}
.seccion-destinos .filtros__btn--activo {
  background: linear-gradient(135deg, rgba(0, 188, 212, 0.78) 0%, rgba(0, 140, 170, 0.68) 100%);
  border-color: rgba(0, 188, 212, 0.50);
  color: #fff;
  box-shadow: 0 4px 20px rgba(0, 188, 212, 0.38);
}

/* --- GLASSMORPHISM CARDS --- */
.destino-card {
  background: var(--glass-bg) !important;
  backdrop-filter: var(--glass-blur) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  border: 1px solid var(--glass-border) !important;
  box-shadow: var(--glass-shadow) !important;
  transform-style: preserve-3d;
  will-change: transform;
  overflow: visible; /* permite el sheen */
  position: relative;
}

/* Sheen diagonal â€” brillo interno de glass */
.destino-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.10) 0%,
    rgba(255, 255, 255, 0.02) 40%,
    transparent 60%
  );
  border-radius: inherit;
  opacity: 0;
  transition: opacity 0.45s cubic-bezier(0.2, 0, 0, 1);
  pointer-events: none;
  z-index: 1;
}
.destino-card:hover::before { opacity: 1; }

/* LÃ­neas de color por tipo â€” mÃ¡s visibles en fondo oscuro */
.destino-card[data-tipo="mar"]    { border-top: 3px solid rgba(0, 188, 212, 0.60) !important; }
.destino-card[data-tipo="tierra"] { border-top: 3px solid rgba(124, 179, 66, 0.55) !important; }
.destino-card[data-tipo="mar"]:hover    { border-top-color: var(--turquesa)    !important; }
.destino-card[data-tipo="tierra"]:hover { border-top-color: var(--verde-tierra) !important; }

/* Texto claro dentro de cards glass sobre fondo oscuro */
.destino-card__nombre      { color: #ffffff; }
.destino-card__desc        { color: rgba(255, 255, 255, 0.76); }
.destino-card__meta-item   { color: rgba(255, 255, 255, 0.62); }

/* Imagen: clip correcto para overflow:visible del card */
.destino-card__img-cont {
  border-radius: var(--radio) var(--radio) 0 0;
  overflow: hidden;
}

/* Overlay imagen mÃ¡s oscuro para contraste con texto */
.destino-card__img-cont::after {
  background: linear-gradient(180deg, transparent 25%, rgba(0, 10, 20, 0.55) 100%) !important;
  opacity: 1 !important;
}

/* Badges tipo en fondo oscuro */
.destino-card__badge--mar    { background: rgba(0, 188, 212, 0.88); }
.destino-card__badge--tierra { background: rgba(99, 162, 40, 0.88); }
/* Badges de categoria sobre imagen (sistema nuevo) */
.destino-card__badge--playa       { background: rgba(0, 188, 212, 0.90); }
.destino-card__badge--buceo       { background: rgba(0, 122, 138, 0.92); }
.destino-card__badge--pesca       { background: rgba(255, 179, 0, 0.92); color: #3a2c00; }
.destino-card__badge--exploracion { background: rgba(99, 162, 40, 0.90); }
.destino-card__badge--bares       { background: rgba(255, 107, 107, 0.92); }

/* BotÃ³n CTA glass dentro de la card */
.destino-card .btn--primario,
.destino-card__btn {
  background: linear-gradient(135deg, rgba(0, 188, 212, 0.80) 0%, rgba(0, 140, 170, 0.72) 100%) !important;
  border: 1px solid rgba(0, 188, 212, 0.40) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  color: #fff !important;
  box-shadow: 0 4px 16px rgba(0, 188, 212, 0.28) !important;
}
.destino-card .btn--primario:hover,
.destino-card__btn:hover {
  background: linear-gradient(135deg, rgba(0, 188, 212, 0.96) 0%, rgba(0, 150, 180, 0.88) 100%) !important;
  box-shadow: 0 6px 24px rgba(0, 188, 212, 0.44) !important;
  transform: translateY(-2px) !important;
}

/* --- GRID CON PERSPECTIVA Y ESCALONADO --- */
#destinosGrid {
  perspective: 1400px;
  perspective-origin: center 40%;
}

@media (min-width: 768px) {
  #destinosGrid .destino-card:nth-child(3n+2) {
    margin-top: 3rem;
  }
}

/* --- ANIMACIÃ“N CINEMATIC DE ENTRADA --- */
/* Override del fade-up genÃ©rico para cards de destino */
/* Entrada simple: solo opacidad — evita clipping vertical del carrusel */
#destinosGrid .destino-card-wrap.fade-up {
  opacity: 0;
  transition: opacity 0.65s cubic-bezier(0.2, 0, 0, 1);
}

#destinosGrid .destino-card-wrap.fade-up.visible {
  opacity: 1;
}

/* --- 3D MOUSE TILT: clase aÃ±adida por JS en mousemove --- */
/* El JS setea style.transform directamente; esta clase solo mejora la sombra */
.destino-card.tilt-active {
  box-shadow:
    0 24px 64px rgba(0, 0, 0, 0.55),
    0 8px 24px rgba(0, 188, 212, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.16) !important;
  transition: box-shadow 0.15s ease !important;
}

/* TransiciÃ³n suave al abandonar la card (reset del tilt) */
.destino-card:not(.tilt-active) {
  transition:
    opacity   0.80s cubic-bezier(0.2, 0, 0, 1),
    transform 0.55s cubic-bezier(0.2, 0, 0, 1),
    box-shadow 0.45s cubic-bezier(0.2, 0, 0, 1) !important;
}

/* --- REDUCED MOTION: desactiva animaciones 3D --- */
@media (prefers-reduced-motion: reduce) {
  #destinosGrid .destino-card-wrap.fade-up {
    opacity: 0;
  }

  #destinosGrid .destino-card-wrap.fade-up.visible {
    opacity: 1;
  }

  .destino-card.tilt-active {
    transform: none !important;
    box-shadow: var(--glass-shadow) !important;
  }
}

/* Sin escalonado cuando el usuario prefiere movimiento reducido */
@media (prefers-reduced-motion: reduce) and (min-width: 768px) {
  #destinosGrid .destino-card-wrap:nth-child(3n+2) { margin-top: 0 !important; }
}

/* ================================================================
   REDESIGN PREMIUM FASE 2
   taste-skill soft Â· efectos 21st.dev Â· motion profesional
   fusion visual Â· ui-ux-pro-max
   Sin frameworks â€” CSS/JS puro â€” Comentarios en espanol
================================================================ */

/* ================================================================
   PASO 1 â€” TASTE-SKILL SOFT: estilo visual base
================================================================ */

/* Intro cards: border-top con color por posicion */
.intro-card {
  border-top: 3px solid var(--turquesa);
  border-radius: var(--radio);
  box-shadow: 0 8px 36px rgba(0,188,212,0.10);
  will-change: transform;
}
.intro-card:nth-child(2) {
  border-top-color: var(--mostaza);
  box-shadow: 0 8px 36px rgba(255,179,0,0.10);
}
.intro-card:nth-child(3) {
  border-top-color: var(--coral);
  box-shadow: 0 8px 36px rgba(255,107,107,0.10);
}

/* Boton principal: gradiente coral a turquesa */
.btn--primario {
  background: linear-gradient(135deg, var(--coral) 0%, var(--turquesa) 100%) !important;
  border: none !important;
  box-shadow: 0 4px 20px rgba(255,107,107,0.30) !important;
  transition: transform 0.10s cubic-bezier(0.2,0,0,1),
              box-shadow 0.22s cubic-bezier(0.2,0,0,1),
              filter 0.22s cubic-bezier(0.2,0,0,1) !important;
}
.btn--primario:hover {
  transform: translateY(-2px) scale(1.02) !important;
  box-shadow: 0 8px 32px rgba(255,107,107,0.42) !important;
  filter: brightness(1.08);
}
.btn--primario:active { transform: scale(0.98) !important; }

/* Micro-interaccion universal en botones */
button { transition: transform 0.10s cubic-bezier(0.2,0,0,1); }
button:active { transform: scale(0.98); }

/* ================================================================
   PASO 2 â€” EFECTOS 21st.dev convertidos a Vanilla CSS/JS
================================================================ */

/* H2 BLUR REVEAL: todos los titulos entran desde blur */
.h2-reveal {
  filter: blur(10px);
  transition: filter 0.80s cubic-bezier(0.2,0,0,1) 0.05s;
}
.h2-reveal.visible { filter: blur(0px); }

/* Subrayado que crece â€” solo h2 sin clase seccion-titulo */
h2.h2-reveal:not(.seccion-titulo)::after {
  content: '';
  display: block;
  width: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--coral), var(--turquesa), var(--mostaza));
  border-radius: 2px;
  margin-top: 0.55rem;
  transition: width 0.65s cubic-bezier(0.2,0,0,1) 0.55s;
}
h2.h2-reveal:not(.seccion-titulo).visible::after { width: 56px; }

/* RADAR MAPA: barrido giratorio sobre el iframe */
.mapa-radar-wrap { position: relative; }
.mapa-radar-wrap::before {
  content: '';
  position: absolute;
  inset: -14px;
  border-radius: calc(var(--radio) + 14px);
  background: conic-gradient(
    rgba(0,188,212,0.22) 0deg,
    rgba(0,188,212,0.05) 50deg,
    transparent 75deg,
    transparent 360deg
  );
  animation: radar-spin 10s linear infinite;
  pointer-events: none;
  z-index: 0;
}
.mapa-radar-wrap > * { position: relative; z-index: 1; }

@keyframes radar-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Chips del mapa: fade-in escalonado â€” JS anade .visible */
.mapa-marcador {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.45s cubic-bezier(0.2,0,0,1),
              transform 0.45s cubic-bezier(0.2,0,0,1);
}
.mapa-marcador.visible { opacity: 1; transform: translateY(0); }

/* TRABAJA: fondo plano blanco arena (sin puntos) */
.seccion-trabaja { position: relative; overflow: hidden; background: var(--blanco-arena); }
.seccion-trabaja::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--blanco-arena);
  pointer-events: none;
  z-index: 0;
}
.seccion-trabaja > * { position: relative; z-index: 1; }

@keyframes dots-pulse {
  0%   { opacity: 0.45; transform: scale(1); }
  100% { opacity: 0.85; transform: scale(1.02); }
}

/* Beneficios: fade-up escalonado â€” JS anade .visible */
.trabaja-beneficio {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.40s cubic-bezier(0.2,0,0,1),
              transform 0.40s cubic-bezier(0.2,0,0,1);
}
.trabaja-beneficio.visible { opacity: 1; transform: translateY(0); }

/* ================================================================
   PASO 3 â€” MOTION PROFESIONAL (emil-design-eng)
================================================================ */

/* Hover states inmediatos (<100ms) */
.header__enlace,
.footer__enlace,
.filtros__btn {
  transition: color 0.09s cubic-bezier(0.2,0,0,1),
              background-color 0.09s cubic-bezier(0.2,0,0,1),
              border-color 0.09s cubic-bezier(0.2,0,0,1);
}

/* Micro-interacciones en botones del modal */
.modal-accion-btn {
  transition: transform 0.10s cubic-bezier(0.2,0,0,1),
              box-shadow 0.22s cubic-bezier(0.2,0,0,1) !important;
}
.modal-accion-btn:hover  { transform: translateY(-2px) scale(1.02); }
.modal-accion-btn:active { transform: scale(0.97); }

/* Boton cerrar: respuesta inmediata */
.modal-cerrar {
  transition: transform 0.09s cubic-bezier(0.2,0,0,1),
              background-color 0.09s cubic-bezier(0.2,0,0,1) !important;
}
.modal-cerrar:hover  { transform: rotate(90deg) scale(1.1) !important; }
.modal-cerrar:active { transform: rotate(90deg) scale(0.95) !important; }

/* ================================================================
   PASO 4 â€” FUSION VISUAL ENTRE SECCIONES
================================================================ */

/* Divs de transicion: 120px de degradado suave */
.section-fade {
  height: 120px;
  position: relative;
  z-index: 2;
  pointer-events: none;
  margin: -1px 0;
}
.section-fade--hero-intro {
  background: linear-gradient(to bottom, rgba(7,30,43,0.92) 0%, #FFFDF7 100%);
}
.section-fade--intro-destinos {
  background: linear-gradient(to bottom, #FFFDF7 0%, #071e2b 100%);
}
.section-fade--destinos-mapa {
  background: linear-gradient(to bottom, #071e2b 0%, #E3F4FF 100%);
}
.section-fade--mapa-trabaja {
  background: linear-gradient(to bottom, #E3F4FF 0%, #E8F5E9 100%);
}
.section-fade--trabaja-footer {
  background: linear-gradient(to bottom, #E8F5E9 0%, #00434F 100%);
}

/* ================================================================
   PASO 5 â€” UI-UX-PRO-MAX: experiencia final
================================================================ */

/* IMAGE SKELETON: shimmer turquesa mientras carga */
.destino-card__img {
  background: linear-gradient(
    90deg,
    rgba(0,188,212,0.06) 25%,
    rgba(0,188,212,0.16) 50%,
    rgba(0,188,212,0.06) 75%
  );
  background-size: 200% 100%;
  animation: skeleton-shimmer 1.6s ease-in-out infinite;
}
.destino-card__img.img-cargada { animation: none; background: none; }

@keyframes skeleton-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* FOCUS STATES accesibles */
:focus-visible {
  outline: 3px solid var(--turquesa);
  outline-offset: 3px;
  border-radius: 4px;
}
a:focus-visible, button:focus-visible { border-radius: var(--radio-btn); }

/* TOUCH TARGETS: minimo 44px en movil */
@media (max-width: 767px) {
  .btn, button, .filtros__btn,
  .header__lang-btn, .header__menu-btn,
  .footer__social { min-height: 44px; min-width: 44px; }
}

/* FORM VALIDATION: estados visuales en tiempo real */
.form-grupo input.input-valido,
.form-grupo select.input-valido,
.form-grupo textarea.input-valido {
  border-color: var(--turquesa) !important;
  box-shadow: 0 0 0 3px rgba(0,188,212,0.15) !important;
}
.form-grupo input.input-error,
.form-grupo select.input-error,
.form-grupo textarea.input-error {
  border-color: var(--coral) !important;
  box-shadow: 0 0 0 3px rgba(255,107,107,0.15) !important;
}
.form-error-msg {
  font-size: 0.75rem;
  color: var(--coral);
  margin-top: 0.25rem;
  display: none;
}
.input-error ~ .form-error-msg { display: block; }

/* REDUCED MOTION: desactiva todas las animaciones nuevas */
@media (prefers-reduced-motion: reduce) {
  /* H2 reveal sin blur */
  .h2-reveal             { filter: none !important; transition: none !important; }
  h2.h2-reveal::after    { transition: none !important; }

  /* Radar y puntos estÃ¡ticos */
  .mapa-radar-wrap::before  { animation: none !important; }
  .seccion-trabaja::before  { animation: none !important; }

  /* Chips y beneficios visibles de inmediato */
  .mapa-marcador     { opacity: 1 !important; transform: none !important; transition: none !important; }
  .trabaja-beneficio { opacity: 1 !important; transform: none !important; transition: none !important; }

  /* Skeleton desactivado */
  .destino-card__img { animation: none !important; }
}

/* ================================================================
   FADE-BANDS â€” Transiciones suaves entre secciones
   Divs independientes con gradiente exacto entre colores adyacentes.
================================================================ */

.fade-band {
  position: relative;
  z-index: 5;
  height: 80px;
  width: 100%;
  pointer-events: none;
  margin: 0;
  padding: 0;
  display: block;
  border: none;
  outline: none;
}

/* Hero â†’ Intro */
.fade-hero-intro {
  background: linear-gradient(
    to bottom,
    transparent 0%,
    var(--blanco-arena) 100%
  );
  margin-top: -80px;
}

/* Intro â†’ Destinos */
.fade-intro-dest {
  background: linear-gradient(
    to bottom,
    var(--blanco-arena) 0%,
    var(--ocean-ini) 100%
  );
}

/* Destinos → Globo */
.fade-dest-mapa {
  background: linear-gradient(
    to bottom,
    var(--ocean-fin) 0%,
    var(--blanco-arena) 100%
  );
}

/* Mapa â†’ Trabaja */
.fade-mapa-trabaja {
  background: linear-gradient(
    to bottom,
    var(--azul-cielo-suave) 0%,
    var(--verde-tropical) 100%
  );
}

/* Trabaja â†’ Footer */
.fade-trabaja-foot {
  background: linear-gradient(
    to bottom,
    var(--verde-tropical) 0%,
    var(--footer-ini) 100%
  );
}


/* =================================================================
   LANDING BLANCO ARENA â€” Toda la pÃ¡gina al mismo color base
   Override definitivo sobre Premium 3D y otros passes anteriores.
================================================================= */

/* --- Todas las secciones: fondo blanco arena --- */
.seccion-intro,
.seccion-destinos,
.seccion-mapa,
.seccion-trabaja {
  background: var(--blanco-arena) !important;
}

/* --- Apagar luces de ambiente del dark ocean --- */
.seccion-destinos::before,
.seccion-destinos::after {
  display: none !important;
}

/* --- TÃ­tulos y subtÃ­tulos: color oscuro en todas las secciones --- */
.seccion-destinos .seccion-titulo,
.seccion-destinos .seccion-subtitulo {
  color: var(--texto-oscuro) !important;
  text-shadow: none !important;
}

/* --- Filtros de destinos: tema claro --- */
.filtro-btn {
  background: rgba(26,42,58,0.06) !important;
  color: var(--texto-oscuro) !important;
  border-color: rgba(26,42,58,0.14) !important;
}
.filtro-btn.activo,
.filtro-btn:hover {
  background: var(--turquesa) !important;
  color: #fff !important;
  border-color: var(--turquesa) !important;
}

/* --- Tarjetas de destino: fondo blanco limpio sobre blanco arena --- */
.destino-card {
  background: #ffffff !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border: 1px solid rgba(0,0,0,0.07) !important;
  box-shadow:
    0 4px 24px rgba(0,0,0,0.07),
    0 1px 4px  rgba(0,0,0,0.04) !important;
}
.destino-card:hover {
  box-shadow:
    0 12px 40px rgba(0,0,0,0.12),
    0 4px 12px  rgba(0,0,0,0.07) !important;
  transform: translateY(-4px) !important;
}

/* Texto de las cards: color oscuro (corregido: __desc y __meta-item) */
.destino-card__nombre    { color: var(--texto-oscuro) !important; }
.destino-card__desc      { color: var(--texto-medio)  !important; }
.destino-card__meta-item { color: var(--texto-medio)  !important; }

/* Imagen de las cards: altura reducida para tarjetas mÃ¡s compactas */
.destino-card__img-cont  { height: 190px !important; }

/* Grid: mÃ¡s separaciÃ³n entre tarjetas */
#destinosGrid            { gap: 3.2rem 2rem !important; }

/* --- Fade bands: no necesarias con un solo color de fondo --- */
.fade-band { height: 0 !important; overflow: hidden !important; }

/* ============================================================
   DISEÃ‘O MIAMI â€” SubtÃ­tulos finos, naranja/mostaza + Mapa v3
   ============================================================ */

/* --- Hero: tagline Miami â€” gradiente naranjaâ†’mostaza --- */
.hero-arc__tagline {
  background: linear-gradient(100deg, var(--coral) 0%, var(--mostaza) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  max-width: 460px !important;
  margin-bottom: 2rem !important;
}

/* --- Hero: etiqueta "Miami Â· South Florida" â€” acento mostaza --- */
.hero-arc__etiqueta {
  color: var(--mostaza) !important;
  border-color: rgba(255, 179, 0, 0.30) !important;
  background: rgba(255, 179, 0, 0.06) !important;
  font-weight: 500 !important;
}

/* --- Frases ambient: naranja cÃ¡lido en vez de texto-suave --- */
.hfa-item { color: var(--coral) !important; }
@keyframes hfa-aparece {
  0%   { opacity: 0; transform: translateX(-50%) translateY(10px); }
  100% { opacity: 0.60; transform: translateX(-50%) translateY(0); }
}

/* --- TÃ­tulo hero: un pelo mÃ¡s cercano al tagline --- */
.hero-arc__titulo { margin-bottom: 0.9rem !important; }

/* --- SecciÃ³n Mapa: grid â€” Leaflet mÃ¡s ancho que el globo --- */
.mapa-grid {
  grid-template-columns: 1fr 1.55fr !important;  /* globo pequeÃ±o | leaflet grande */
  gap: 2.5rem !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .mapa-grid { grid-template-columns: 1fr !important; }
}

/* --- Globo: fondo azul cielo para contrastar el globo blanco, sin sombras --- */
.mapa-globo-wrap {
  background: linear-gradient(145deg, #b8d8ee 0%, #cce0f4 40%, #dde9f8 100%) !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 24px !important;
  padding: 1.4rem !important;
}

/* --- Globo: canvas circular, sin sombra --- */
.mapa-globo-canvas {
  border-radius: 50% !important;
  box-shadow: none !important;
}

/* --- Globo label: fino, naranja/mostaza --- */
.mapa-globo-label {
  font-family: var(--fuente-titulo) !important;
  font-style: italic !important;
  font-weight: 300 !important;
  font-size: 0.82rem !important;
  letter-spacing: 0.18em !important;
  background: linear-gradient(90deg, var(--coral), var(--mostaza));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* --- Chips de referencia: limpios, sin exceso --- */
.mapa-referencias { margin-top: 1rem !important; }

/* --- SecciÃ³n mapa: tÃ­tulo y subtÃ­tulo legibles --- */
.seccion-mapa .seccion-titulo {
  color: var(--texto-oscuro) !important;
  text-shadow: none !important;
}
.seccion-mapa .seccion-subtitulo {
  font-family: var(--fuente-titulo) !important;
  font-style: italic !important;
  font-weight: 300 !important;
  font-size: clamp(1rem, 1.6vw, 1.2rem) !important;
  background: linear-gradient(100deg, var(--coral), var(--mostaza));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* --- Trabaja con nosotros: texto visible en claro --- */
.seccion-trabaja .seccion-titulo,
.seccion-trabaja .seccion-subtitulo {
  color: var(--texto-oscuro) !important;
}

/* ===================================================
   ANIMATED ROADMAP â€” AnimatedRoadmap port vanilla JS
   Paleta oficial Explora Miami
   =================================================== */

.seccion-roadmap {
  padding: var(--seccion-py) 1.5rem calc(var(--seccion-py) + 1rem);
  background: var(--blanco-arena) !important;
  position: relative;
  overflow: hidden;
}

.rdm-contenedor {
  max-width: 1060px;
  margin: 0 auto;
}

/* â”€â”€ Encabezado â”€â”€ */
.rdm-encabezado {
  text-align: center;
  margin-bottom: 3rem;
}

.rdm-subtitulo {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(1rem, 1.6vw, 1.2rem);
  margin: 0 auto;
  max-width: 480px;
  line-height: 1.5;
  background: linear-gradient(100deg, var(--coral), var(--mostaza));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* â”€â”€ Canvas principal â€” proporciÃ³n 8:5 â”€â”€ */
.rdm-canvas {
  position: relative;
  width: 100%;
  aspect-ratio: 8 / 5;
  border-radius: 28px;
  overflow: visible;     /* labels pueden sobresalir */
  /* Fondo: costa de South Florida sugerida con gradientes */
  background:
    radial-gradient(ellipse 55% 40% at 80% 96%, rgba(0,188,212,0.13) 0%, transparent 100%),
    radial-gradient(ellipse 28% 60% at 104% 50%, rgba(0,188,212,0.11) 0%, transparent 100%),
    radial-gradient(ellipse 42% 44% at 3%  92%, rgba(76,175,80,0.10) 0%, transparent 100%),
    linear-gradient(130deg, #f0ead8 0%, var(--blanco-arena) 50%, #e3eef7 100%);
  /* Borde sutil del canvas */
  box-shadow:
    inset 0 0 0 1px rgba(0,0,0,0.06),
    0 8px 40px rgba(0,0,0,0.05);
}

/* â”€â”€ SVG overlay â”€â”€ */
.rdm-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

/* â”€â”€ Milestone (contenedor del punto) â”€â”€ */
.rdm-milestone {
  position: absolute;
  width: 14px;
  height: 14px;
  translate: -50% -50%;
  opacity: 0;
  scale: 0.3;
  transition:
    opacity 0.4s cubic-bezier(0.2, 0, 0.4, 1),
    scale   0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
  z-index: 4;
  cursor: default;
}
.rdm-milestone.visible {
  opacity: 1;
  scale: 1;
}

/* â”€â”€ Ring pulsante detrÃ¡s del dot â”€â”€ */
.rdm-ring {
  position: absolute;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  top: 50%; left: 50%;
  translate: -50% -50%;
  opacity: 0;
  pointer-events: none;
  animation: rdm-ring-pulse 2.6s ease-out infinite;
}
.rdm-milestone.visible .rdm-ring { opacity: 1; }
.rdm-milestone--tierra .rdm-ring { background: var(--coral); }
.rdm-milestone--mar    .rdm-ring { background: var(--turquesa); }

@keyframes rdm-ring-pulse {
  0%   { transform: translate(-50%,-50%) scale(1);   opacity: 0.28; }
  100% { transform: translate(-50%,-50%) scale(2.8); opacity: 0; }
}

/* â”€â”€ Dot central â”€â”€ */
.rdm-dot {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2.5px solid rgba(255,255,255,0.95);
  z-index: 1;
  pointer-events: none;
}
.rdm-milestone--tierra .rdm-dot {
  background: var(--coral);
  box-shadow: 0 0 0 2px var(--coral), 0 4px 12px rgba(255,107,107,0.50);
}
.rdm-milestone--mar .rdm-dot {
  background: var(--turquesa);
  box-shadow: 0 0 0 2px var(--turquesa), 0 4px 12px rgba(0,188,212,0.50);
}

/* â”€â”€ Bubble (etiqueta del destino) â”€â”€ */
.rdm-bubble {
  position: absolute;
  top: 50%;
  translate: 0 -50%;
  white-space: nowrap;
  background: rgba(255,255,255,0.96);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(0,0,0,0.07);
  border-radius: 999px;
  padding: 0.26rem 0.7rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--texto-oscuro);
  box-shadow: 0 2px 10px rgba(0,0,0,0.09), 0 1px 3px rgba(0,0,0,0.05);
  pointer-events: none;
  z-index: 5;
}
.rdm-bubble--left  { right: calc(100% + 10px); }
.rdm-bubble--right { left:  calc(100% + 10px); }

/* â”€â”€ Leyenda â”€â”€ */
.rdm-leyenda {
  display: flex;
  gap: 1.8rem;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 2.4rem;
  padding: 0.85rem 1.6rem;
  background: rgba(255,255,255,0.75);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: 999px;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
  border: 1px solid rgba(0,0,0,0.06);
}
.rdm-leyenda-item {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--texto-medio);
}
.rdm-leyenda-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}
.rdm-leyenda-dot--tierra { background: var(--coral); }
.rdm-leyenda-dot--mar    { background: var(--turquesa); }
.rdm-ruta-linea {
  display: inline-block;
  width: 24px; height: 3px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--mostaza), var(--coral));
  flex-shrink: 0;
}

/* â”€â”€ Responsive â”€â”€ */
@media (max-width: 560px) {
  .rdm-bubble { font-size: 0.60rem; padding: 0.2rem 0.5rem; }
  .rdm-bubble--left  { right: calc(100% + 7px); }
  .rdm-bubble--right { left:  calc(100% + 7px); }
  .rdm-dot   { border-width: 2px; }
  .rdm-milestone { width: 10px; height: 10px; }
  .rdm-ring  { width: 22px; height: 22px; }
}

/* Ocultar labels en pantallas muy pequeÃ±as */
@media (max-width: 380px) {
  .rdm-bubble { display: none; }
}

/* â”€â”€ Reduced motion â”€â”€ */
@media (prefers-reduced-motion: reduce) {
  .rdm-ring      { animation: none !important; opacity: 0 !important; }
  .rdm-milestone { transition: none !important; }
}

/* ============================================================
   HERO FOTO DOMINANTE v3 â€” foto directamente en .hero-arc
   Sin div intermedio, sin problemas de stacking/opacity
   ============================================================ */

/* Foto + overlay de gradiente en una sola declaraciÃ³n sobre .hero-arc */
.hero-arc {
  background-image:
    linear-gradient(
      165deg,
      rgba(5,19,30,0.22) 0%,
      rgba(5,19,30,0.04) 30%,
      rgba(5,19,30,0.55) 68%,
      rgba(5,19,30,0.90) 100%
    ),
    url('../images/photo-1595323397978-65433d24fc23.avif') !important;
  background-size: cover, cover !important;
  background-position: center 40%, center 40% !important;
  background-repeat: no-repeat, no-repeat !important;
  background-color: #05131e !important;
}

/* El div .hero-bg ya no es necesario â€” lo ocultamos */
.hero-bg { display: none !important; }

/* Contenido: sobre la foto */
.hero-arc__contenido {
  position: relative;
  z-index: 2;
}

/* Scroll indicator: legible sobre foto oscurecida */
.hero-arc__scroll {
  position: relative;
  z-index: 2;
}
.hero-arc__scroll-texto {
  color: rgba(255,255,255,0.50) !important;
}
.hero-arc__scroll-linea {
  background: linear-gradient(to bottom, rgba(255,255,255,0.40), transparent) !important;
}

/* ============================================================
   TÃTULO HERO â€” SpinningText (port React â†’ vanilla SVG)
   Texto "Explora Miami â€¢ South Florida" girando en cÃ­rculo
   ============================================================ */

/* RotaciÃ³n continua â€” equivale al animate-spin de Tailwind */
@keyframes hero-spin-anim {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Contenedor del SVG: centrado, tamaÃ±o fijo */
.hero-spin-wrapper {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 210px !important;
  height: 210px !important;
  margin: 0 auto 0.5rem !important;
  position: relative !important;
  z-index: 2 !important;
}

/* El SVG ocupa todo el wrapper */
.hero-spin-svg {
  width: 100% !important;
  height: 100% !important;
  overflow: visible !important;
}

/* El <g> que gira â€” transform-origin al centro del viewBox 100Ã—100 */
.hero-spin-group {
  transform-origin: 50px 50px !important;
  animation: hero-spin-anim 12s linear infinite !important;
}

/* Texto sobre el path circular */
.hero-spin-text {
  font-size: 4.2px !important;
  font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif !important;
  font-weight: 400 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.04em !important;
  fill: rgba(255, 255, 255, 0.88) !important;
}

/* Punto decorativo en el centro */
.hero-spin-center {
  fill: rgba(255, 255, 255, 0.70) !important;
}

/* Reducir velocidad si prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .hero-spin-group {
    animation-duration: 60s !important;
  }
}

/* Mobile: ligeramente mÃ¡s pequeÃ±o */
@media (max-width: 480px) {
  .hero-spin-wrapper {
    width: 168px !important;
    height: 168px !important;
  }
}

/* â”€â”€ Tagline: trazo fino blanco â”€â”€ */
.hero-arc__tagline {
  background: none !important;
  -webkit-background-clip: initial !important;
  background-clip: initial !important;
  -webkit-text-fill-color: rgba(255,255,255,0.85) !important;
  color: rgba(255,255,255,0.85) !important;
  font-weight: 300 !important;
  letter-spacing: 0.06em !important;
  font-size: clamp(0.92rem, 1.4vw, 1.12rem) !important;
}

/* â”€â”€ Etiqueta "Miami Â· South Florida": glassmorphism â”€â”€ */
.hero-arc__etiqueta {
  color: rgba(255,255,255,0.78) !important;
  border-color: rgba(255,255,255,0.24) !important;
  background: rgba(255,255,255,0.08) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  font-weight: 400 !important;
  letter-spacing: 0.18em !important;
  display: none; /* eyebrow replaces this label */
}

/* â”€â”€ Eyebrow: â€” South Florida â€” â”€â”€ */
.hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.2rem;
}
.hero-eyebrow__linea {
  display: block;
  flex: 0 0 44px;
  height: 1px;
  background: rgba(255,255,255,0.36);
}
.hero-eyebrow__text {
  font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
  font-style: italic;
  font-weight: 300;
  font-size: 0.80rem;
  letter-spacing: 0.28em;
  color: rgba(255,255,255,0.60);
  text-transform: uppercase;
  white-space: nowrap;
}

/* â”€â”€ Tags organizados en fila â”€â”€ */
.hero-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin: 1.4rem 0 2.2rem;
}
.hero-tag {
  display: inline-flex;
  align-items: center;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.03em;
  padding: 0.30rem 0.82rem;
  border-radius: 999px;
  background: rgba(255,255,255,0.10);
  border: 1px solid rgba(255,255,255,0.22);
  color: rgba(255,255,255,0.86);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: background 0.20s ease, border-color 0.20s ease;
  cursor: default;
}
.hero-tag:hover {
  background: rgba(255,255,255,0.18);
  border-color: rgba(255,255,255,0.40);
}

@media (max-width: 480px) {
  .hero-eyebrow { margin-bottom: 0.9rem; }
  .hero-eyebrow__linea { flex: 0 0 28px; }
  .hero-tags { gap: 0.38rem; margin: 1rem 0 1.6rem; }
  .hero-tag { font-size: 0.65rem; padding: 0.24rem 0.62rem; }
}

/* ============================================================
   ROADMAP â€” Ref landmarks (lugares icÃ³nicos secundarios)
   Dot mostaza pequeÃ±o, sin anillo pulsante
   ============================================================ */

.rdm-milestone--ref {
  width: 8px !important;
  height: 8px !important;
  z-index: 3;
}
.rdm-milestone--ref .rdm-ring {
  display: none !important;
}
.rdm-milestone--ref .rdm-dot {
  background: var(--mostaza) !important;
  box-shadow: 0 0 0 1.5px rgba(255,179,0,0.55), 0 2px 7px rgba(255,179,0,0.30) !important;
  border-width: 1.5px !important;
  border-color: rgba(255,255,255,0.90) !important;
}
.rdm-milestone--ref .rdm-bubble {
  font-size: 0.60rem !important;
  padding: 0.15rem 0.48rem !important;
  font-weight: 500 !important;
  opacity: 0.92;
  box-shadow: 0 1px 6px rgba(0,0,0,0.07) !important;
}

/* Leyenda: punto mostaza para lugares icÃ³nicos */
.rdm-leyenda-dot--ref {
  background: var(--mostaza) !important;
  width: 8px !important;
  height: 8px !important;
}

@media (max-width: 560px) {
  .rdm-milestone--ref {
    width: 6px !important;
    height: 6px !important;
  }
  .rdm-milestone--ref .rdm-bubble {
    font-size: 0.55rem !important;
    padding: 0.12rem 0.38rem !important;
  }
}

@media (max-width: 380px) {
  .rdm-milestone--ref .rdm-bubble { display: none !important; }
}

/* ============================================================
   ROADMAP TOOLTIP â€” Tarjeta flotante al pasar el cursor
   Glassmorphism Â· coral/mostaza accent Â· 16s cubic-bezier
   ============================================================ */

/* Los milestones son interactivos â€” sin Ã­cono ? del navegador */
.rdm-milestone { cursor: pointer !important; }

/* Tarjeta tooltip (fixed, creada por JS) */
.rdm-tooltip {
  position: fixed;
  z-index: 9999;
  max-width: 236px;
  min-width: 168px;
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(0,0,0,0.07);
  border-radius: 16px;
  padding: 0.78rem 0.95rem 0.82rem;
  box-shadow:
    0 16px 48px rgba(0,0,0,0.12),
    0 4px 12px rgba(0,0,0,0.07),
    inset 0 0 0 0.5px rgba(255,255,255,0.65);
  pointer-events: none;
  user-select: none;
  opacity: 0;
  transform: translateY(8px) scale(0.96);
  transition:
    opacity 0.16s cubic-bezier(0.2,0,0.4,1),
    transform 0.16s cubic-bezier(0.2,0,0.4,1);
  will-change: opacity, transform;
}
.rdm-tooltip--visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* Barra de color coralâ†’mostaza */
.rdm-tooltip__barra {
  width: 24px;
  height: 2.5px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--coral), var(--mostaza));
  margin-bottom: 0.48rem;
}

/* Nombre del lugar */
.rdm-tooltip__nombre {
  font-size: 0.74rem;
  font-weight: 700;
  color: var(--texto-oscuro);
  line-height: 1.3;
  margin-bottom: 0.38rem;
  letter-spacing: 0.01em;
}

/* DescripciÃ³n de ~30 palabras */
.rdm-tooltip__desc {
  font-size: 0.645rem;
  color: var(--texto-medio);
  line-height: 1.62;
  margin: 0;
}

/* Ocultar en pantallas tÃ¡ctiles â€” tooltip no aplica */
@media (hover: none) {
  .rdm-tooltip { display: none !important; }
}

/* ============================================================
   ROADMAP â€” Contraste de puntos y etiquetas sobre fondo arena
   ============================================================ */

/* Dots primarios (tierra + mar): anillo blanco + sombra oscura */
.rdm-milestone--tierra .rdm-dot,
.rdm-milestone--mar    .rdm-dot {
  box-shadow:
    0 0 0 3px rgba(255,255,255,0.95),
    0 0 0 5.5px rgba(0,0,0,0.22),
    0 4px 16px rgba(0,0,0,0.28) !important;
}

/* Dots de referencia: mostaza con doble anillo */
.rdm-milestone--ref .rdm-dot {
  background: var(--coral) !important;
  box-shadow:
    0 0 0 2.5px rgba(255,255,255,0.97),
    0 0 0 4.5px rgba(0,0,0,0.20),
    0 3px 10px rgba(255,100,80,0.35) !important;
  border-color: transparent !important;
}

/* Etiquetas (bubble) con fondo sÃ³lido y contraste mejorado */
.rdm-bubble {
  background: rgba(255,255,255,0.96) !important;
  color: var(--texto-oscuro) !important;
  border: 1px solid rgba(0,0,0,0.10) !important;
  box-shadow: 0 2px 10px rgba(0,0,0,0.14) !important;
  font-weight: 600 !important;
}

/* ============================================================
   METAL BUTTONS â€” Port del componente MetalButton (React)
   Gradientes metÃ¡licos + estados press/hover + variantes Miami
   ============================================================ */

/* â”€â”€ WRAPPER â€” padding 1.25px actÃºa como border gradiente â”€â”€ */
.metal-btn-wrap {
  position: relative;
  display: inline-flex;
  border-radius: 8px;
  padding: 1.25px;
  vertical-align: middle;
  will-change: transform;
  transform-origin: center center;
  transition: all 250ms cubic-bezier(0.1, 0.4, 0.2, 1);
  background: linear-gradient(to bottom, #111111, #A0A0A0);
  box-shadow: 0 3px 8px rgba(0,0,0,0.10);
}

/* â”€â”€ INNER RING â€” anillo interior a 1px del borde â”€â”€ */
.metal-btn-inner {
  position: absolute;
  inset: 1px;
  border-radius: 7px;
  pointer-events: none;
  will-change: filter;
  transition: filter 250ms cubic-bezier(0.1, 0.4, 0.2, 1);
  background: linear-gradient(to bottom, #FAFAFA, #3E3E3E, #E5E5E5);
}

/* â”€â”€ SUPERFICIE del botÃ³n / enlace â”€â”€ */
.metal-btn {
  position: relative;
  z-index: 10;
  margin: 1px;
  border-radius: 6px;
  display: inline-flex;
  height: 44px;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: 0.5rem 1.5rem;
  font-size: 0.875rem;
  line-height: 1;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;
  gap: 0.5rem;
  border: none;
  outline: none;
  font-family: inherit;
  will-change: transform, filter;
  transform-origin: center center;
  transition: all 250ms cubic-bezier(0.1, 0.4, 0.2, 1);
  -webkit-font-smoothing: antialiased;
  background: linear-gradient(to bottom, #B9B9B9, #969696);
  color: #fff;
  text-shadow: 0 -1px 0 rgb(80 80 80);
}
.metal-btn:focus-visible { outline: 2px solid var(--turquesa); outline-offset: 3px; }

/* â”€â”€ SHINE â€” destelllo blanco al presionar â”€â”€ */
.metal-btn-shine {
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 20;
  overflow: hidden;
  border-radius: inherit;
  opacity: 0;
  transition: opacity 300ms;
  background: linear-gradient(to right, transparent, rgba(245,245,245,0.55), transparent);
}

/* â”€â”€ HOVER GLOW â€” gradiente suave al hovear â”€â”€ */
.metal-btn-hover-glow {
  pointer-events: none;
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(to top, transparent, rgba(255,255,255,0.08));
  opacity: 0;
  transition: opacity 300ms;
  z-index: 15;
}

/* â”€â”€ ESTADOS â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.metal-btn-wrap.is-pressed {
  transform: translateY(2.5px) scale(0.99) !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.15) !important;
}
.metal-btn-wrap.is-pressed .metal-btn         { transform: scale(0.97); }
.metal-btn-wrap.is-pressed .metal-btn-shine   { opacity: 0.22; }

.metal-btn-wrap.is-hovered                    { box-shadow: 0 4px 12px rgba(0,0,0,0.14) !important; }
.metal-btn-wrap.is-hovered .metal-btn-inner   { filter: brightness(1.05); }
.metal-btn-wrap.is-hovered .metal-btn         { filter: brightness(1.03); }
.metal-btn-wrap.is-hovered .metal-btn-hover-glow { opacity: 1; }

/* â”€â”€ VARIANTE CORAL (Ver destinos, Enviar mensaje) â”€â”€ */
.metal-btn-wrap[data-variant="coral"] {
  background: linear-gradient(to bottom, #5A0000, #FF9090);
  box-shadow: 0 3px 10px rgba(192,57,43,0.22);
}
.metal-btn-wrap[data-variant="coral"].is-hovered {
  box-shadow: 0 5px 16px rgba(192,57,43,0.36) !important;
}
.metal-btn-wrap[data-variant="coral"] .metal-btn-inner {
  background: linear-gradient(to bottom, #FFD0D0, #8B1A1A, #FFE5E5);
}
.metal-btn-wrap[data-variant="coral"] .metal-btn {
  background: linear-gradient(to bottom, #FF7A7A, #C0392B);
  text-shadow: 0 -1px 0 rgb(100 0 0);
  color: #fff;
}

/* â”€â”€ VARIANTE TURQUESA (Ver mapa, Filtro Mar) â”€â”€ */
.metal-btn-wrap[data-variant="turquesa"] {
  background: linear-gradient(to bottom, #003840, #70D8E0);
  box-shadow: 0 3px 10px rgba(0,150,180,0.22);
}
.metal-btn-wrap[data-variant="turquesa"].is-hovered {
  box-shadow: 0 5px 16px rgba(0,150,180,0.36) !important;
}
.metal-btn-wrap[data-variant="turquesa"] .metal-btn-inner {
  background: linear-gradient(to bottom, #C0F4F8, #005F6B, #B0EEF5);
}
.metal-btn-wrap[data-variant="turquesa"] .metal-btn {
  background: linear-gradient(to bottom, #30CCE0, #0097A7);
  text-shadow: 0 -1px 0 rgb(0 60 80);
  color: #fff;
}

/* â”€â”€ VARIANTE TIERRA (Filtro Tierra) â”€â”€ */
.metal-btn-wrap[data-variant="tierra"] {
  background: linear-gradient(to bottom, #1A3A00, #88C066);
  box-shadow: 0 3px 10px rgba(70,120,30,0.20);
}
.metal-btn-wrap[data-variant="tierra"].is-hovered {
  box-shadow: 0 5px 16px rgba(70,120,30,0.34) !important;
}
.metal-btn-wrap[data-variant="tierra"] .metal-btn-inner {
  background: linear-gradient(to bottom, #D8F0C0, #2D5A00, #D0EAB8);
}
.metal-btn-wrap[data-variant="tierra"] .metal-btn {
  background: linear-gradient(to bottom, #78B844, #4A7A22);
  text-shadow: 0 -1px 0 rgb(20 50 0);
  color: #fff;
}

/* â”€â”€ VARIANTE GOLD (ReseÃ±as) â”€â”€ */
.metal-btn-wrap[data-variant="gold"] {
  background: linear-gradient(to bottom, #917100, #EAD98F);
  box-shadow: 0 3px 10px rgba(145,113,0,0.22);
}
.metal-btn-wrap[data-variant="gold"].is-hovered {
  box-shadow: 0 5px 16px rgba(145,113,0,0.36) !important;
}
.metal-btn-wrap[data-variant="gold"] .metal-btn-inner {
  background: linear-gradient(to bottom, #FFFDDD, #856807, #FFF1B3);
}
.metal-btn-wrap[data-variant="gold"] .metal-btn {
  background: linear-gradient(to bottom, #FFEBA1, #9B873F);
  text-shadow: 0 -1px 0 rgb(120 90 0);
  color: #1a0f00;
}

/* â”€â”€ VARIANTE ICON (Cerrar modal âœ•, Idioma) â”€â”€ */
.metal-btn-wrap[data-variant="icon"] {
  background: linear-gradient(to bottom, #222, #888);
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.18);
}
.metal-btn-wrap[data-variant="icon"] .metal-btn-inner {
  border-radius: 50%;
  background: linear-gradient(to bottom, #F0F0F0, #404040, #E0E0E0);
}
.metal-btn-wrap[data-variant="icon"] .metal-btn {
  border-radius: 50% !important;
  width: 36px;
  height: 36px;
  padding: 0;
  background: linear-gradient(to bottom, #B0B0B0, #808080);
  color: #fff;
  font-size: 0.95rem;
  text-shadow: 0 -1px 0 rgb(60 60 60);
}

/* â”€â”€ ESTADO ACTIVO (filtro seleccionado) â”€â”€ */
.metal-btn-wrap.is-active {
  box-shadow: 0 0 0 2px rgba(255,255,255,0.85), 0 4px 14px rgba(0,0,0,0.22) !important;
}
.metal-btn-wrap.is-active .metal-btn { filter: brightness(1.08); }

/* â”€â”€ TAMAÃ‘OS â”€â”€ */
.metal-btn-wrap[data-size="sm"] .metal-btn {
  height: 36px;
  padding: 0.3rem 1rem;
  font-size: 0.80rem;
}
.metal-btn-wrap[data-size="lg"] .metal-btn {
  height: 52px;
  padding: 0.65rem 2rem;
  font-size: 1rem;
  letter-spacing: 0.02em;
}
.metal-btn-wrap[data-size="full"] {
  width: 100%;
}
.metal-btn-wrap[data-size="full"] .metal-btn {
  width: 100%;
}

/* â”€â”€ IDIOMA HEADER â€” compact pill â”€â”€ */
.metal-btn-wrap.header-lang-wrap {
  border-radius: 999px;
}
.metal-btn-wrap.header-lang-wrap .metal-btn-inner {
  border-radius: 999px;
}
.metal-btn-wrap.header-lang-wrap .metal-btn {
  border-radius: 999px;
  height: 30px;
  padding: 0 0.75rem;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}

/* â”€â”€ BOTONES DEL MODAL (acciones) â”€â”€ */
.modal-acciones { display: flex; flex-wrap: wrap; gap: 0.55rem; margin: 1.2rem 0; }
.modal-acciones .metal-btn-wrap { flex: 1 1 auto; min-width: 120px; }
.modal-acciones .metal-btn { width: 100%; font-size: 0.78rem; height: 38px; }

/* â”€â”€ MÃ“VIL â”€â”€ */
@media (max-width: 480px) {
  .metal-btn { height: 40px; padding: 0.42rem 1.1rem; font-size: 0.82rem; }
  .metal-btn-wrap[data-size="lg"] .metal-btn { height: 46px; padding: 0.5rem 1.4rem; font-size: 0.92rem; }
}

/* â”€â”€ REDUCCIÃ“N DE MOVIMIENTO â”€â”€ */
@media (prefers-reduced-motion: reduce) {
  .metal-btn-wrap,
  .metal-btn,
  .metal-btn-inner,
  .metal-btn-shine,
  .metal-btn-hover-glow { transition: none !important; }
}

/* Posicionar el wrapper del botÃ³n cerrar en el modal */
.modal-cerrar-wrap {
  position: absolute !important;
  top: 1rem !important;
  right: 1rem !important;
  z-index: 10 !important;
}

/* Filtros: alinear metal wrappers en flex */
.filtros { display: flex; gap: 0.55rem; flex-wrap: wrap; align-items: center; justify-content: center; }

/* BotÃ³n "Ver destino" en cards de destinos */
.destino-card__btn-wrap {
  margin-top: auto;
  align-self: flex-start;
}
.destino-card__btn-wrap .metal-btn {
  font-size: 0.80rem;
  height: 36px;
  padding: 0 1.1rem;
}

/* ============================================================
   SHINE BORDER â€” Port de ShineBorder (React / MagicUI)
   Borde de luz giratoria animada â€” animated radial-gradient mask
   Aplica a: tarjetas de destino + panel del modal
   ============================================================ */

/* Keyframe principal: mueve el radial-gradient en 300%Ã—300% */
@keyframes shine-pulse {
  0%   { background-position: 0%   0%;   }
  50%  { background-position: 100% 100%; }
  100% { background-position: 0%   0%;   }
}

/* â”€â”€ TARJETAS DE DESTINO â€” usa ::after (::before ocupado por sheen) â”€â”€ */
.destino-card::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;

  /* Ancho del borde = padding del pseudo-elemento */
  padding: 1px;

  /* Gradiente radial que barre el borde â€” colores Miami */
  background-image: radial-gradient(
    transparent, transparent,
    #FF6B6B, #00BCD4, #FFB300,
    transparent, transparent
  );
  background-size: 300% 300%;

  /* MÃ¡scara: solo muestra la zona del padding (el "borde") */
  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;

  will-change: background-position;
  animation: shine-pulse 10s linear infinite;
  pointer-events: none;
  z-index: 2;
}

/* â”€â”€ PANEL DEL MODAL â€” restructurar para overflow correcto â”€â”€ */
/* El panel pasa a flex-column; solo .modal-cuerpo hace scroll */
.modal-panel {
  overflow: hidden !important;   /* ::before necesita clip limpio */
  display: flex !important;
  flex-direction: column !important;
}
.modal-cuerpo {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  min-height: 0 !important;     /* crÃ­tico para flex + overflow */
}
.modal-galeria {
  flex-shrink: 0 !important;
}

/* ShineBorder en el modal: ::before libre tras quitar overflow-y del panel */
.modal-panel::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 2px;

  /* Coral + turquesa + mostaza â€” mÃ¡s intensos para el modal */
  background-image: radial-gradient(
    transparent, transparent,
    rgba(255,107,107,0.95),
    rgba(0,188,212,0.95),
    rgba(255,179,0,0.90),
    transparent, transparent
  );
  background-size: 300% 300%;

  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;

  will-change: background-position;
  animation: shine-pulse 8s linear infinite;
  pointer-events: none;
  z-index: 0;
}

/* Tooltip del roadmap â€” borde shine sutil (::before libre) */
.rdm-tooltip {
  position: fixed !important;  /* ya lo tiene */
}
.rdm-tooltip::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;

  background-image: radial-gradient(
    transparent, transparent,
    rgba(255,107,107,0.70),
    rgba(0,188,212,0.70),
    transparent, transparent
  );
  background-size: 300% 300%;

  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;

  will-change: background-position;
  animation: shine-pulse 12s linear infinite;
  pointer-events: none;
  z-index: 0;
}

/* ReducciÃ³n de movimiento: congelar en posiciÃ³n inicial */
@media (prefers-reduced-motion: reduce) {
  .destino-card::after,
  .modal-panel::before,
  .rdm-tooltip::before {
    animation: none !important;
    background-position: 50% 50% !important;
  }
}

/* ============================================================
   INTRO SECTION â€” ShuffleHero 2-col layout
   Texto izquierda Â· Grid 4Ã—3 de tarjetas mini barajables (derecha)
   ============================================================ */

/* Contenedor: 2 columnas con alineaciÃ³n centrada */
.seccion-intro__contenedor.si-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3.5rem;
  align-items: center;
  max-width: var(--max);
  margin: 0 auto;
  text-align: left;
}

/* â”€â”€ Columna izquierda â”€â”€ */
.si-col-texto {
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
}

/* Eyebrow pill "South Florida" */
.si-eyebrow {
  display: inline-block;
  align-self: flex-start;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--turquesa);
  padding: 0.28rem 0.82rem;
  border: 1px solid rgba(0,188,212,0.32);
  border-radius: 999px;
  background: rgba(0,188,212,0.08);
}

/* Override centrado del tÃ­tulo en este contexto */
.si-layout .seccion-intro__titulo {
  text-align: left;
  margin-bottom: 0;
}

.si-desc {
  font-size: 0.97rem;
  color: var(--texto-medio);
  line-height: 1.68;
  margin: 0;
  text-shadow: 0 1px 10px rgba(255,253,247,0.8);
}

/* Lista de features */
.si-features {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin-top: 0.4rem;
}

.si-feature {
  display: flex;
  align-items: flex-start;
  gap: 0.78rem;
}

.si-feature__ico {
  font-size: 1.35rem;
  flex-shrink: 0;
  line-height: 1;
  margin-top: 0.08rem;
}

.si-feature__titulo {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--texto-oscuro);
  display: block;
  margin-bottom: 0.14rem;
}

.si-feature__texto {
  font-size: 0.82rem;
  color: var(--texto-medio);
  line-height: 1.55;
  margin: 0;
  text-shadow: 0 1px 8px rgba(255,253,247,0.7);
}

/* Stats embebidos en columna izquierda */
.si-stats-divider {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--coral);
  margin-top: 0.6rem;
}
.si-stats-divider::before {
  content: '';
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,107,107,0.28));
}
.si-stats-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, rgba(255,107,107,0.28), transparent);
}

.si-stats-mini {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.6rem;
}

.si-stat {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.12rem;
  padding: 0.75rem 0.7rem 0.65rem;
  background: #ffffff;
  border: 1px solid rgba(26,42,53,0.07);
  border-radius: 12px;
  box-shadow: 0 2px 12px rgba(26,42,53,0.04);
  overflow: hidden;
  transition: transform 0.25s cubic-bezier(0.2,0,0,1), box-shadow 0.25s;
}
.si-stat:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 28px rgba(26,42,53,0.08);
}
@media (prefers-reduced-motion: reduce) {
  .si-stat { transition: none; }
  .si-stat:hover { transform: none; }
}

.si-stat__num {
  font-family: var(--fuente-titulo);
  font-style: italic;
  font-size: clamp(1.3rem, 2.5vw, 1.7rem);
  font-weight: 400;
  color: var(--turquesa);
  line-height: 1;
}
.si-stat__label {
  font-size: 0.72rem;
  color: var(--texto-medio);
  line-height: 1.35;
}
.si-stat__ico {
  position: absolute;
  bottom: 0.45rem;
  right: 0.6rem;
  font-size: 1.2rem;
  opacity: 0.12;
  pointer-events: none;
}

/* Columna derecha: grid de tarjetas */
.si-col-grid {
  position: relative;
}

/* Grid 4 columnas Ã— 3 filas */
.shuffle-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(3, 1fr);
  gap: 7px;
  height: 520px;
}

/* Tarjeta mini */
.shuffle-card {
  position: relative;
  border-radius: 10px;
  overflow: hidden;
  background: rgba(0,188,212,0.10);
  box-shadow:
    0 2px 8px rgba(0,0,0,0.14),
    0 0 0 1px rgba(255,255,255,0.18);
  cursor: pointer;
  will-change: transform;
}

.shuffle-card:hover {
  box-shadow:
    0 8px 28px rgba(0,0,0,0.22),
    0 0 0 1.5px rgba(0,188,212,0.45);
  z-index: 2;
}

/* Foto a pantalla completa */
.shuffle-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
  user-select: none;
  -webkit-user-drag: none;
  transition: transform 0.4s ease;
}

.shuffle-card:hover .shuffle-card__img {
  transform: scale(1.06);
}

/* Footer con gradiente + nombre + badge tipo */
.shuffle-card__foot {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(to top, rgba(5,19,30,0.82) 0%, transparent 100%);
  padding: 1.4rem 0.4rem 0.35rem;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.18rem;
}

.shuffle-card__name {
  font-size: 0.56rem;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.2;
  letter-spacing: 0.01em;
  flex: 1;
}

.shuffle-card__badge {
  font-size: 0.55rem;
  flex-shrink: 0;
  line-height: 1;
  opacity: 0.9;
}

/* â”€â”€ Responsive â”€â”€ */
@media (max-width: 900px) {
  .seccion-intro__contenedor.si-layout {
    grid-template-columns: 1fr;
    gap: 2.2rem;
    text-align: center;
  }
  .si-eyebrow { align-self: center; }
  .si-layout .seccion-intro__titulo { text-align: center; }
  .si-feature { text-align: left; }
  .shuffle-grid { height: 300px; gap: 5px; }
  .si-stats-divider { justify-content: center; }
  .si-stats-mini { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 480px) {
  .shuffle-grid {
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(4, 1fr);
    height: 320px;
    gap: 4px;
  }
  .si-stats-mini { grid-template-columns: repeat(2, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .shuffle-card, .shuffle-card__img { will-change: auto; transition: none !important; }
}

/* ============================================================
   SCROLL EXPAND MEDIA â€” port vanilla del componente React
   El hero se convierte en una tarjeta que se expande con el scroll
   ============================================================ */

/* Wrapper: reserva 200vh de espacio de scroll para el efecto sticky */
.sem-wrapper {
  height: 200vh;
  position: relative;
}

/* SecciÃ³n: sticky â€” se queda pegada al top mientras el wrapper pasa */
.sem-section {
  position: sticky;
  top: 0;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #05131e;
}

/* Fondo foto Miami con overlay â€” JS anima opacity de 1 â†’ 0 */
.sem-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image:
    linear-gradient(
      165deg,
      rgba(5,19,30,0.22) 0%,
      rgba(5,19,30,0.04) 30%,
      rgba(5,19,30,0.55) 68%,
      rgba(5,19,30,0.90) 100%
    ),
    url('../images/photo-1595323397978-65433d24fc23.avif');
  background-size: cover, cover;
  background-position: center 40%, center 40%;
  background-repeat: no-repeat, no-repeat;
  pointer-events: none;
  will-change: opacity;
}

/* TÃ­tulo partido â€” centrado, z-index sobre la tarjeta */
.sem-title-wrap {
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  transform: translateY(-50%);
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.22em;
  pointer-events: none;
  overflow: hidden;
}

/* Cada palabra del tÃ­tulo â€” JS aplica translateX inline */
.sem-title-word {
  font-family: var(--fuente-titulo);
  font-size: clamp(3.2rem, 9vw, 7.5rem);
  font-style: italic;
  font-weight: 400;
  color: #fff;
  text-shadow:
    0 2px 40px rgba(0,0,0,0.50),
    0 0  80px rgba(0,0,0,0.28);
  white-space: nowrap;
  display: inline-block;
  will-change: transform;
}

/* Tarjeta de medios â€” JS controla width / height / border-radius inline */
.sem-media-wrap {
  position: relative;
  z-index: 10;
  width: 300px;
  height: 400px;
  border-radius: 16px;
  overflow: hidden;
  box-shadow:
    0 32px 80px rgba(0,0,0,0.55),
    0  8px 24px rgba(0,0,0,0.30);
  will-change: width, height, border-radius;
}

/* Imagen de la tarjeta */
.sem-media {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
  user-select: none;
  -webkit-user-drag: none;
}

/* Contenido (tags) â€” aparece tras expansiÃ³n completa */
.sem-content {
  position: absolute;
  bottom: 2.5rem;
  left: 0;
  right: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0 1.5rem;
  opacity: 0;
  transition: opacity 0.7s ease 0.1s;
  pointer-events: none;
  z-index: 30;
}

.sem-content.sem-content--visible {
  opacity: 1;
  pointer-events: auto;
}

/* Asegura que el trail quede sobre el fondo pero debajo de la tarjeta */
.sem-section .hero-trail {
  z-index: 5;
}

/* Mobile: tarjeta mÃ¡s pequeÃ±a por defecto (JS tambiÃ©n lo ajusta) */
@media (max-width: 640px) {
  .sem-title-word {
    font-size: clamp(2.4rem, 11vw, 3.6rem);
  }
  .sem-content {
    bottom: 1.5rem;
  }
}

/* Reduced motion: desactivar will-change */
@media (prefers-reduced-motion: reduce) {
  .sem-title-word  { will-change: auto; }
  .sem-media-wrap  { will-change: auto; }
  .sem-bg          { will-change: auto; }
}

/* =====================================================
   FLOATING PILL NAV â€” fn-* classes
   Porta React AnimatedNavFramer â†’ vanilla ES5 / CSS puro
   Funciona en index.html â€” usa las vars de styles.css
===================================================== */
.fn-wrap {
  position: fixed; top: 1.25rem; left: 50%; transform: translateX(-50%);
  z-index: 200;
}
.fn {
  position: relative; display: inline-flex; align-items: center;
  height: 48px; border-radius: 50px;
  background: rgba(255, 253, 247, 0.92);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(0, 188, 212, 0.18);
  box-shadow: 0 4px 28px rgba(0, 0, 0, 0.10), 0 1px 4px rgba(0, 0, 0, 0.06);
  overflow: hidden; white-space: nowrap; cursor: default;
  transition: width 0.45s cubic-bezier(0.2, 0, 0, 1), box-shadow 0.3s ease;
  will-change: width;
}
.fn.is-collapsed {
  cursor: pointer;
  box-shadow: 0 2px 18px rgba(0, 0, 0, 0.14);
}
.fn.is-collapsed:hover { box-shadow: 0 6px 28px rgba(0, 188, 212, 0.22); }

/* Logo */
.fn__logo {
  flex-shrink: 0; display: inline-flex; align-items: center; gap: 0.06em;
  padding: 0 0.65rem 0 1.25rem;
  font-family: var(--fuente-titulo); font-style: italic; font-size: 1.1rem;
  text-decoration: none;
  opacity: 1; transform: translateX(0) rotate(0deg);
  transition: opacity 0.22s ease, transform 0.3s cubic-bezier(0.2, 0, 0, 1);
  will-change: opacity, transform;
}
.fn__logo-explora { color: var(--turquesa); font-weight: 600; font-style: normal; }
.fn__logo-miami   { color: var(--coral);    font-weight: 400; font-style: italic; }
.fn.is-collapsed .fn__logo {
  opacity: 0; transform: translateX(-18px) rotate(-12deg); pointer-events: none;
}

/* Divider */
.fn__divider {
  flex-shrink: 0; width: 1px; height: 22px;
  background: rgba(26, 42, 53, 0.13); margin: 0 0.2rem;
  opacity: 1; transition: opacity 0.22s ease;
}
.fn.is-collapsed .fn__divider { opacity: 0; }

/* Nav links */
.fn__links {
  display: flex; align-items: center; gap: 0; list-style: none;
  padding: 0 0.35rem 0 0.15rem;
  opacity: 1; transition: opacity 0.22s ease;
}
.fn.is-collapsed .fn__links { opacity: 0; pointer-events: none; }
.fn__link {
  display: inline-block; padding: 0.38rem 0.68rem;
  font-size: 0.84rem; font-weight: 500; color: #1a2a3a;
  text-decoration: none; border-radius: 50px; white-space: nowrap;
  transition: color 0.18s ease, background 0.18s ease;
}
.fn__link:hover { color: var(--turquesa); background: rgba(0, 188, 212, 0.09); }
.fn__link--active { color: var(--turquesa); font-weight: 600; }
.fn__link--cta {
  background: linear-gradient(135deg, var(--coral), var(--turquesa));
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; font-weight: 700;
}
.fn__link--back { color: rgba(26, 42, 53, 0.52); font-size: 0.8rem; }
.fn__link--back::before { content: 'â† '; }

/* Language button */
.fn__lang {
  flex-shrink: 0; margin: 0 0.75rem 0 0.1rem;
  background: var(--turquesa); color: #fff;
  border: none; border-radius: 50px;
  padding: 0.24rem 0.82rem;
  font-family: var(--fuente-cuerpo); font-size: 0.76rem; font-weight: 700;
  cursor: pointer; letter-spacing: 0.04em;
  opacity: 1;
  transition: opacity 0.22s ease, background 0.2s ease, transform 0.2s ease;
}
.fn__lang:hover { background: var(--turquesa-oscura); transform: scale(1.06); }
.fn.is-collapsed .fn__lang { opacity: 0; pointer-events: none; }

/* Collapsed hamburger (fills the 48px circle) */
.fn__collapse-icon {
  position: absolute; inset: 0; background: none; border: none; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
  padding: 0; opacity: 0; pointer-events: none;
  transition: opacity 0.22s ease;
}
.fn.is-collapsed .fn__collapse-icon { opacity: 1; pointer-events: auto; }
.fn__collapse-icon span {
  display: block; width: 20px; height: 2px;
  background: #1a2a3a; border-radius: 2px;
}

/* Dropdown (mobile only, appears below pill) */
.fn__dropdown {
  position: absolute; top: calc(100% + 0.6rem);
  left: 50%;
  transform: translateX(-50%) translateY(-6px) scale(0.97);
  min-width: 220px; border-radius: 18px;
  background: rgba(255, 253, 247, 0.98);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(0, 188, 212, 0.14);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.05);
  padding: 0.5rem; list-style: none;
  opacity: 0; pointer-events: none;
  transition: opacity 0.22s cubic-bezier(0.2, 0, 0, 1),
              transform 0.22s cubic-bezier(0.2, 0, 0, 1);
}
.fn__dropdown.is-open {
  opacity: 1; pointer-events: auto;
  transform: translateX(-50%) translateY(0) scale(1);
}
.fn__dd-link {
  display: block; padding: 0.68rem 1rem;
  font-size: 0.9rem; font-weight: 500; color: #1a2a3a;
  text-decoration: none; border-radius: 12px;
  transition: background 0.15s ease, color 0.15s ease;
}
.fn__dd-link:hover { background: rgba(0, 188, 212, 0.09); color: var(--turquesa); }
.fn__dd-link--active { color: var(--turquesa); font-weight: 600; }
.fn__dd-link--cta { color: var(--coral); font-weight: 700; }
.fn__dd-link--back { color: rgba(26, 42, 53, 0.50); font-size: 0.84rem; }
.fn__dd-link--back::before { content: 'â† '; }
.fn__dd-sep { height: 1px; background: rgba(0, 188, 212, 0.10); margin: 0.35rem 0.5rem; }

/* Mobile: always collapsed â†’ dropdown */
@media (max-width: 768px) {
  .fn { width: 48px !important; cursor: pointer; }
  .fn__logo,
  .fn__divider,
  .fn__links,
  .fn__lang { display: none !important; }
  .fn__collapse-icon { opacity: 1 !important; pointer-events: auto !important; }
}

@media (prefers-reduced-motion: reduce) {
  .fn { transition: none !important; }
  .fn__logo, .fn__dropdown { transition: none !important; }
}

/* ===================================================================
   LANG TOGGLE â€” botÃ³n de idioma en el dropdown mÃ³vil
================================================================= */
.fn__dd-lang-btn {
  display: flex; align-items: center; gap: 0.6rem;
  width: 100%; padding: 0.68rem 1rem;
  background: rgba(0,188,212,0.07);
  border: 1px solid rgba(0,188,212,0.18);
  border-radius: 12px; cursor: pointer;
  font-family: var(--fuente-cuerpo, 'Inter', system-ui, sans-serif);
  font-size: 0.9rem; font-weight: 600;
  color: var(--turquesa-oscura, #00434F);
  transition: background 0.15s ease, color 0.15s ease;
}
.fn__dd-lang-btn:hover { background: rgba(0,188,212,0.14); }
.fn__dd-lang-icon { font-size: 1rem; line-height: 1; }
.fn__dd-lang-label { line-height: 1; }

/* ===================================================================
   FADE BANDS â€” Ajustar a blanco-arena para consistencia visual
================================================================= */
.fade-mapa-trabaja {
  background: linear-gradient(to bottom, var(--azul-cielo), var(--blanco-arena)) !important;
}
.fade-trabaja-foot {
  background: linear-gradient(to bottom, var(--blanco-arena), var(--footer-ini)) !important;
}

/* ===================================================================
   MAPA DE DESTINOS â€” reducir solapamiento de bubbles
================================================================= */
/* Desktop: mostrar bubble solo en hover del milestone */
.rdm-bubble {
  transition: opacity 0.18s ease, transform 0.18s ease;
}
/* MÃ³vil: ocultar bubbles por defecto, mostrar solo al tocar */
@media (max-width: 768px) {
  .rdm-bubble {
    opacity: 0;
    transform: translateX(0) scale(0.85);
    pointer-events: none;
  }
  .rdm-milestone.is-active .rdm-bubble {
    opacity: 1;
    transform: translateX(0) scale(1);
    pointer-events: auto;
    z-index: 20;
  }
  /* Solo mostrar dots en mÃ³vil por defecto (mÃ¡s limpio) */
  .rdm-dot { width: 9px; height: 9px; }
}

/* ===================================================================
   BUG FIX â€” fn-wrap: hamburguesa flotante no debe aparecer en desktop
   Confirmado en auditorÃ­a: posiciÃ³n fixed 48Ã—56px en viewport â‰¥768px
=================================================================== */
@media (min-width: 768px) {
  /* En desktop la pill nav se muestra completa â€” el icono â˜° es mÃ³vil-only */
  .fn-wrap {
    display: none !important;
  }
}
@media (max-width: 767px) {
  /* En mÃ³vil: visible como hamburguesa */
  .fn-wrap {
    display: block;
  }
}

/* ===================================================================
   BUG FIX â€” ShuffleGrid: imÃ¡genes cortadas en mÃ³vil (Bug 4)
=================================================================== */
@media (max-width: 640px) {
  .shuffle-grid {
    height: 280px !important;
    grid-template-columns: repeat(2, 1fr) !important;
    grid-template-rows: repeat(3, 1fr) !important;
    gap: 5px !important;
  }
  .shuffle-card {
    border-radius: 10px;
  }
}

/* Cards de destino â€” imagen no se corta en ningÃºn tamaÃ±o */
.destino-card__foto,
.destino-card__imagen,
.destino-media img,
.destino-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Contenedor de imagen: aspect-ratio fijo para evitar recorte */
.destino-media,
.destino-card__foto-wrap {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  position: relative;
}

@media (max-width: 640px) {
  .destino-media,
  .destino-card__foto-wrap {
    aspect-ratio: 16 / 9;
  }
}

/* ===== Utilidad: contenido visualmente oculto pero accesible para lectores de pantalla ===== */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ============================================================
   HERO SOCIAL PROOF â€” contador de visitantes activos
   ============================================================ */
.hero-social-proof {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin-top: 1.2rem;
  padding: 0.4rem 1rem;
  background: rgba(255, 253, 247, 0.12);
  border: 1px solid rgba(255, 253, 247, 0.2);
  border-radius: 999px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  font-family: var(--sans);
  font-size: 0.82rem;
  color: rgba(255, 253, 247, 0.9);
  white-space: nowrap;
}

/* Punto pulsante verde */
.hero-sp-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #4caf50;
  flex-shrink: 0;
  animation: heroDotPulse 2s ease-in-out infinite;
}

@keyframes heroDotPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.6; transform: scale(1.35); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-sp-dot { animation: none; }
}

.hero-sp-count {
  font-weight: 700;
  color: #ffffff;
}

/* ============================================================
   QUIZ AVENTURERO â€” #quiz-aventurero
   ============================================================ */
.seccion-quiz {
  background: var(--blanco-arena, #FFFDF7);
  padding: 5rem 1.5rem 4rem;
  margin-top: 4rem;
}

.quiz-contenedor {
  max-width: 760px;
  margin: 0 auto;
}

.quiz-encabezado {
  text-align: center;
  margin-bottom: 2rem;
}

.quiz-eyebrow {
  display: inline-block;
  font-family: var(--sans);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--turquesa, #00BCD4);
  margin-bottom: 0.75rem;
}

.quiz-titulo {
  font-family: var(--serif);
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 400;
  color: var(--tinta, #1a2a35);
  margin: 0 0 0.5rem;
  line-height: 1.2;
}

.quiz-subtitulo {
  font-family: var(--sans);
  font-size: 0.95rem;
  color: var(--texto-medio, #4a6070);
  margin: 0;
}

/* Barra de progreso */
.quiz-progreso {
  height: 4px;
  background: rgba(26, 42, 53, 0.1);
  border-radius: 999px;
  overflow: hidden;
  margin-bottom: 0.5rem;
}

.quiz-progreso-barra {
  height: 100%;
  background: linear-gradient(90deg, var(--coral, #FF6B6B), var(--turquesa, #00BCD4));
  border-radius: 999px;
  transition: width 0.4s cubic-bezier(0.2, 0, 0, 1);
}

@media (prefers-reduced-motion: reduce) {
  .quiz-progreso-barra { transition: none; }
}

.quiz-paso-label {
  font-family: var(--sans);
  font-size: 0.78rem;
  color: var(--texto-suave, #4a6f82);
  text-align: right;
  margin: 0 0 1.5rem;
}

/* Panel con pasos */
.quiz-panel {
  position: relative;
}

.quiz-paso {
  animation: quizFadeIn 0.35s ease forwards;
}

.quiz-paso--oculto {
  display: none;
}

@keyframes quizFadeIn {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .quiz-paso { animation: none; }
}

.quiz-pregunta {
  font-family: var(--sans);
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--tinta, #1a2a35);
  text-align: center;
  margin: 0 0 1.5rem;
}

/* Grid de opciones */
.quiz-opciones {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.75rem;
}

@media (max-width: 480px) {
  .quiz-opciones {
    grid-template-columns: 1fr;
  }
}

.quiz-opcion {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem 1.25rem;
  background: #ffffff;
  border: 2px solid rgba(26, 42, 53, 0.1);
  border-radius: 14px;
  cursor: pointer;
  font-family: var(--sans);
  font-size: 0.9rem;
  color: var(--tinta, #1a2a35);
  text-align: left;
  transition: border-color 0.2s, background 0.2s, transform 0.15s;
  box-shadow: 0 2px 8px rgba(26, 42, 53, 0.04);
}

.quiz-opcion:hover {
  border-color: var(--turquesa, #00BCD4);
  background: rgba(0, 188, 212, 0.04);
  transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
  .quiz-opcion { transition: border-color 0.2s, background 0.2s; }
  .quiz-opcion:hover { transform: none; }
}

.quiz-opcion__ico {
  font-size: 1.5rem;
  flex-shrink: 0;
  line-height: 1;
}

.quiz-opcion__texto {
  font-weight: 500;
  line-height: 1.3;
}

/* Resultado */
.quiz-resultado {
  text-align: center;
  padding: 1rem 0;
}

.quiz-resultado__icono {
  font-size: 3.5rem;
  margin-bottom: 0.75rem;
  animation: quizIcoIn 0.5s cubic-bezier(0.2, 0, 0, 1) forwards;
}

@keyframes quizIcoIn {
  from { opacity: 0; transform: scale(0.5); }
  to   { opacity: 1; transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .quiz-resultado__icono { animation: none; }
}

.quiz-resultado__tipo {
  font-family: var(--serif);
  font-size: clamp(1.4rem, 3.5vw, 2rem);
  font-weight: 600;
  color: var(--tinta, #1a2a35);
  margin: 0 0 0.5rem;
}

.quiz-resultado__desc {
  font-family: var(--sans);
  font-size: 0.95rem;
  color: var(--texto-medio, #4a6070);
  max-width: 480px;
  margin: 0 auto 1.5rem;
  line-height: 1.6;
}

/* Destinos recomendados (chips) */
.quiz-resultado__destinos {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.6rem;
  margin-bottom: 1.75rem;
}

.quiz-dest-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.45rem 1rem;
  background: linear-gradient(135deg,
    rgba(255, 107, 107, 0.1), rgba(0, 188, 212, 0.1));
  border: 1px solid rgba(0, 188, 212, 0.25);
  border-radius: 999px;
  font-family: var(--sans);
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--tinta, #1a2a35);
  text-decoration: none;
  transition: background 0.2s, border-color 0.2s, transform 0.15s;
}

.quiz-dest-chip:hover {
  background: linear-gradient(135deg,
    rgba(255, 107, 107, 0.18), rgba(0, 188, 212, 0.18));
  border-color: rgba(0, 188, 212, 0.45);
  transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
  .quiz-dest-chip { transition: background 0.2s, border-color 0.2s; }
  .quiz-dest-chip:hover { transform: none; }
}

/* BotÃ³n resetear */
.quiz-reset {
  display: inline-block;
  font-family: var(--sans);
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--texto-suave, #4a6f82);
  background: none;
  border: none;
  cursor: pointer;
  padding: 0.4rem 0.8rem;
  border-radius: 8px;
  transition: color 0.2s, background 0.2s;
}

.quiz-reset:hover {
  color: var(--tinta, #1a2a35);
  background: rgba(26, 42, 53, 0.06);
}

/* ============================================================
   POR QUÃ‰ MIAMI â€” #por-que-miami â€” 6 stats
   ============================================================ */
.seccion-stats {
  background: var(--blanco-arena, #FFFDF7);
  padding: 5rem 1.5rem 5rem;
  border-top: 1px solid rgba(26, 42, 53, 0.06);
}

.stats-contenedor {
  max-width: 1100px;
  margin: 0 auto;
}

.stats-encabezado {
  text-align: center;
  margin-bottom: 3rem;
}

.stats-eyebrow {
  display: inline-block;
  font-family: var(--sans);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--coral, #FF6B6B);
  margin-bottom: 0.6rem;
}

.stats-titulo {
  font-family: var(--serif);
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 400;
  color: var(--tinta, #1a2a35);
  margin: 0;
  line-height: 1.2;
}

/* Grid de stats */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}

@media (max-width: 768px) {
  .stats-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .stats-grid {
    grid-template-columns: 1fr;
    max-width: 320px;
    margin: 0 auto;
  }
}

.stat-card {
  position: relative;
  text-align: center;
  padding: 2rem 1.5rem;
  background: #ffffff;
  border: 1px solid rgba(26, 42, 53, 0.08);
  border-radius: 18px;
  box-shadow: 0 4px 24px rgba(26, 42, 53, 0.05);
  overflow: hidden;
  transition: transform 0.25s cubic-bezier(0.2, 0, 0, 1),
              box-shadow 0.25s;
}

.stat-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(26, 42, 53, 0.10);
}

@media (prefers-reduced-motion: reduce) {
  .stat-card { transition: none; }
  .stat-card:hover { transform: none; }
}

.stat-card__num {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(2.4rem, 5vw, 3.5rem);
  font-weight: 400;
  color: var(--turquesa, #00BCD4);
  line-height: 1;
  margin-bottom: 0.5rem;
}

.stat-card__label {
  font-family: var(--sans);
  font-size: 0.88rem;
  color: var(--texto-medio, #4a6070);
  line-height: 1.4;
}

.stat-card__icon {
  position: absolute;
  bottom: 0.75rem;
  right: 1rem;
  font-size: 1.6rem;
  opacity: 0.15;
  pointer-events: none;
  user-select: none;
}

/* ============================================================
   NEWSLETTER â€” #newsletter
   ============================================================ */
.seccion-newsletter {
  background: linear-gradient(135deg,
    var(--ocean-ini, #071e2b) 0%,
    var(--ocean-mid, #0a2d3f) 60%,
    #0d3548 100%);
  padding: 5rem 1.5rem;
}

.newsletter-contenedor {
  max-width: 640px;
  margin: 0 auto;
  text-align: center;
}

.newsletter-eyebrow {
  display: block;
  font-size: 2.5rem;
  margin-bottom: 0.75rem;
}

.newsletter-titulo {
  font-family: var(--serif);
  font-size: clamp(1.75rem, 4vw, 2.4rem);
  font-weight: 400;
  color: var(--blanco-arena, #FFFDF7);
  margin: 0 0 0.75rem;
  line-height: 1.2;
}

.newsletter-sub {
  font-family: var(--sans);
  font-size: 0.95rem;
  color: rgba(255, 253, 247, 0.65);
  margin: 0 0 2rem;
  line-height: 1.6;
}

/* Formulario */
.newsletter-form {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
}

.newsletter-input-wrap {
  display: flex;
  width: 100%;
  max-width: 520px;
  gap: 0;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
}

.newsletter-input {
  flex: 1;
  padding: 0.85rem 1.25rem;
  font-family: var(--sans);
  font-size: 0.95rem;
  color: var(--tinta, #1a2a35);
  background: rgba(255, 253, 247, 0.96);
  border: none;
  outline: none;
  min-width: 0;
  border-radius: 12px 0 0 12px;
}

.newsletter-input::placeholder {
  color: rgba(26, 42, 53, 0.4);
}

.newsletter-input:focus {
  background: #ffffff;
  box-shadow: inset 0 0 0 2px rgba(0, 188, 212, 0.4);
}

.newsletter-btn-wrap {
  border-radius: 0 12px 12px 0 !important;
  overflow: hidden;
}

.newsletter-submit {
  border-radius: 0 12px 12px 0 !important;
  white-space: nowrap;
  min-width: 140px;
}

.newsletter-disclaimer {
  font-family: var(--sans);
  font-size: 0.75rem;
  color: rgba(255, 253, 247, 0.4);
  margin: 0.75rem 0 0;
}

/* Estado de Ã©xito */
.newsletter-exito {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  padding: 2rem;
  background: rgba(76, 175, 80, 0.1);
  border: 1px solid rgba(76, 175, 80, 0.3);
  border-radius: 16px;
}

.newsletter-exito__ico {
  font-size: 2.5rem;
}

.newsletter-exito__titulo {
  font-family: var(--serif);
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--blanco-arena, #FFFDF7);
}

.newsletter-exito__sub {
  font-family: var(--sans);
  font-size: 0.9rem;
  color: rgba(255, 253, 247, 0.65);
  margin: 0;
}

@media (max-width: 480px) {
  .newsletter-input-wrap {
    flex-direction: column;
    border-radius: 12px;
    overflow: visible;
    gap: 0.5rem;
  }

  .newsletter-input {
    border-radius: 12px !important;
  }

  .newsletter-btn-wrap,
  .newsletter-submit {
    border-radius: 12px !important;
    width: 100%;
  }
}

/* ============================================================
   HERO PARALLAX — multicapa con profundidad 3D
   Diseño: múltiples capas posicionadas como el ref. component
   Mouse parallax: perspective(2300px) + rotateY + translate
   ============================================================ */

/* Contenedor principal */
.hero-parallax {
  position: relative;
  height: 100vh;
  min-height: 580px;
  overflow: hidden;
  background: var(--ocean-ini, #071e2b);
}

/* Cada capa parallax: posición absoluta, JS sobreescribe el transform */
.hero-px__layer {
  position: absolute;
  pointer-events: none;
  transition: transform 450ms cubic-bezier(0.2,0,0,1);
}

@media (prefers-reduced-motion: reduce) {
  .hero-px__layer { transition: none; }
}

/* Imagen de fondo — más ancha que el viewport para poder panear */
#hpxBg {
  top: 50%;
  left: 50%;
  z-index: 1;
  width: 160vw;
  height: 100vh;
  transform: translate(-50%, -50%);
}

.hero-px__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* Degradado mínimo solo en la franja inferior — mejora legibilidad del texto
   sin oscurecer ni la foto ni los laterales */
.hero-px__text-fade {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 55%;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(
    to top,
    rgba(7, 30, 43, 0.65) 0%,
    transparent           100%
  );
}

/* Tags flotantes en la parte superior — fade-in CSS, posición fija */
.hero-px__tags {
  position: absolute;
  top: calc(var(--nav-h, 68px) + 40px); /* navbar real + 40px holgura */
  left: 50%;
  transform: translateX(-50%);
  z-index: 110;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.45rem;
  padding: 0 1.5rem;
  pointer-events: none;
  opacity: 0;
  animation: pxTagsFade 0.9s ease 2.8s forwards;
}

@keyframes pxTagsFade { to { opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
  .hero-px__tags { animation: none; opacity: 1; }
}

/* Texto central: parallax propio — diferente al fondo */
.hero-px__text {
  position: absolute;
  /* Centrado en el área visible (viewport - navbar):
     desplazamos el centro down por la mitad de la altura del navbar */
  top: calc(50% + var(--nav-h, 68px) / 2);
  left: 50%;
  z-index: 9;
  text-align: center;
  pointer-events: auto;
  transform: translate(-50%, -50%);
  transition: transform 450ms cubic-bezier(0.2,0,0,1);
  width: min(720px, 92vw);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.4rem;
}

@media (prefers-reduced-motion: reduce) {
  .hero-px__text { transition: none; }
}

/* H1: centrado, line-height holgado para que las líneas no se pisen */
.hero-px__title {
  font-family: var(--serif, 'Playfair Display', Georgia, serif);
  font-size: clamp(2rem, 5.5vw, 4.2rem);
  font-weight: 900;
  color: #ffffff;
  line-height: 1.18;
  text-shadow: 0 2px 32px rgba(7,30,43,0.7);
  margin: 0;
}

/* Cada palabra del título — animada individualmente por JS */
.hero-px__word {
  display: inline-block;
  opacity: 0;
  transform: translateY(22px);
  will-change: opacity, transform;
}

@media (prefers-reduced-motion: reduce) {
  .hero-px__word {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* Subtítulo */
.hero-px__sub {
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: clamp(0.92rem, 2vw, 1.15rem);
  font-weight: 400;
  color: rgba(255, 253, 247, 0.82);
  text-shadow: 0 1px 14px rgba(7,30,43,0.5);
  margin: 0;
  max-width: 520px;
  opacity: 0;
  transform: translateY(14px);
  will-change: opacity, transform;
}

@media (prefers-reduced-motion: reduce) {
  .hero-px__sub { opacity: 1 !important; transform: none !important; }
}

/* Social proof dentro del hero parallax */
.hero-parallax .hero-social-proof {
  margin-top: 0.15rem;
  opacity: 0;
  animation: pxTagsFade 0.8s ease 3.6s forwards;
}

@media (prefers-reduced-motion: reduce) {
  .hero-parallax .hero-social-proof { animation: none; opacity: 1; }
}

/* Botón scroll hacia el siguiente bloque */
.hero-px__scroll-btn {
  position: absolute;
  bottom: 2.25rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 110;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.45rem;
  background: none;
  border: none;
  cursor: pointer;
  color: rgba(255, 253, 247, 0.78);
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  opacity: 0;
  animation: pxTagsFade 0.8s ease 3.8s forwards;
  transition: color 0.2s;
  white-space: nowrap;
}

.hero-px__scroll-btn:hover { color: rgba(255,253,247,1); }

@media (prefers-reduced-motion: reduce) {
  .hero-px__scroll-btn { animation: none; opacity: 1; }
}

/* Flecha del botón scroll */
.hero-px__scroll-arrow {
  display: flex;
  align-items: center;
  animation: pxArrowBounce 1.8s ease-in-out 4s infinite;
}

@keyframes pxArrowBounce {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(6px); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-px__scroll-arrow { animation: none; }
}

/* Responsive móvil */
@media (max-width: 640px) {
  .hero-px__scroll-btn { bottom: 1.5rem; }
  /* En móvil el título ocupa más líneas */
  .hero-px__text { gap: 1rem; }
}


/* ============================================================
   SECCIÓN GLOBO COBE 3D
   ============================================================ */

.seccion-globo {
  background: var(--blanco-arena, #FFFDF7);
  padding: 7rem 1.5rem 6rem;
  overflow: hidden;
  position: relative;
}

/* Resplandor ambiental (turquesa muy suave sobre fondo claro) */
.seccion-globo::before {
  content: '';
  position: absolute;
  top: 5%;
  right: -8%;
  width: 60%;
  max-width: 680px;
  aspect-ratio: 1;
  background: radial-gradient(circle,
    rgba(0, 188, 212, 0.05) 0%,
    transparent 68%);
  pointer-events: none;
}

/* Contenedor interno: dos columnas */
.globo-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

/* ── Columna de texto ── */
.globo-eyebrow {
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--turquesa, #00BCD4);
  margin: 0 0 1rem;
  display: block;
}

.globo-texto .seccion-titulo {
  color: var(--tinta, #1a2a35);
  margin-bottom: 1.5rem;
  line-height: 1.18;
}

.globo-desc {
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 1.05rem;
  line-height: 1.72;
  color: var(--texto-medio, #4a6070);
  margin: 0 0 2.8rem;
}

/* Estadísticas */
.globo-stats {
  display: flex;
  gap: 2.4rem;
  flex-wrap: wrap;
}

.globo-stat {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.globo-stat__num {
  font-family: var(--serif, 'Playfair Display', Georgia, serif);
  font-size: 2.6rem;
  font-weight: 700;
  line-height: 1;
  background: linear-gradient(135deg,
    var(--coral, #FF6B6B) 0%,
    var(--turquesa, #00BCD4) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.globo-stat__label {
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--texto-suave, #4a6f82);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* ── Columna del globo ── */
.globo-canvas-wrap {
  position: relative;       /* contexto para emojis absolutos */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.2rem;
  width: 100%;              /* garantiza ancho completo en columna única  */
}

/* Emojis flotantes — posicionados por JS (proyección 3D→2D).
   JS escribe transform (compositado, sin reflow) cada frame; la centratura
   -50%/-50% va incluida en ese transform. */
.globo-emoji {
  position: absolute;
  top: 0; left: 0;           /* ancla; JS posiciona con transform    */
  font-size: 1.4rem;         /* tamaño legible, queda dentro del globo */
  line-height: 1;
  /* Halo blanco tipo sticker — text-shadow (barato) reemplaza el filtro
     SVG feMorphology, que repintaba carísimo en cada frame */
  text-shadow: 0 0 2px #fff, 0 0 2px #fff, 0 1px 3px rgba(26, 42, 53, 0.4);
  pointer-events: none;
  opacity: 0;                /* JS controla visibilidad              */
  transition: opacity 0.25s ease;
  will-change: transform;
}

#globoCanvas {
  width: 100%;
  max-width: 520px;
  /* aspect-ratio garantiza que height = width aunque el atributo difiera */
  aspect-ratio: 1 / 1;
  height: auto;
  display: block;
  /* margin: auto centra horizontalmente en cualquier contexto flex/grid */
  margin: 0 auto;
  cursor: grab;
  border-radius: 50%;
  /* Previene que el browser capture el scroll vertical en lugar del
     arrastre horizontal del globo; pointercancel maneja el resto */
  touch-action: pan-y;
  /* Glow turquesa visible sobre fondo claro */
  filter: drop-shadow(0 0 40px rgba(0, 188, 212, 0.22))
          drop-shadow(0 8px 24px rgba(26, 42, 53, 0.12));
  transition: filter 0.3s ease;
}

#globoCanvas:active {
  cursor: grabbing;
  filter: drop-shadow(0 0 56px rgba(0, 188, 212, 0.32))
          drop-shadow(0 8px 32px rgba(26, 42, 53, 0.16));
}

.globo-hint {
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.76rem;
  color: rgba(26, 42, 53, 0.35);
  letter-spacing: 0.05em;
  margin: 0;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.globo-hint::before {
  content: '↔';
  font-size: 0.9rem;
  opacity: 0.6;
}

/* ── Responsive: tablet ── */
@media (max-width: 920px) {
  .globo-inner {
    grid-template-columns: 1fr;
    gap: 3rem;
    text-align: center;
  }

  .globo-stats {
    justify-content: center;
  }

  .globo-canvas-wrap {
    order: -1;
  }

  #globoCanvas {
    max-width: 380px;
  }
}

/* ── Responsive: móvil ── */
@media (max-width: 480px) {
  .seccion-globo {
    padding: 5rem 1rem 4rem;
  }

  .globo-stat__num {
    font-size: 2.1rem;
  }

  /* Canvas más grande en móvil — deja 2rem de margen a cada lado */
  #globoCanvas {
    max-width: min(320px, calc(100vw - 4rem));
  }

  /* Emojis proporcionales al globo más pequeño */
  .globo-emoji {
    font-size: 1.1rem;
  }

  .globo-stats {
    gap: 1.6rem;
  }
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  #globoCanvas {
    filter: none;
    transition: none;
  }
}

/* ============================================================
   MARQUESINA DE DESTINOS — Globo section
   ============================================================ */

/* Contenedor con máscara de desvanecimiento lateral */
.gm-wrap {
  width: 100%;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    black 8%,
    black 92%,
    transparent 100%
  );
  mask-image: linear-gradient(
    to right,
    transparent 0%,
    black 8%,
    black 92%,
    transparent 100%
  );
  margin-top: 3rem;
  padding: 0.6rem 0 0.2rem;
  /* Evita selección de texto al arrastrar con el dedo */
  -webkit-user-select: none;
  user-select: none;
  /* Captura arrastre horizontal; scroll vertical queda libre */
  touch-action: pan-y;
  cursor: grab;
}
.gm-wrap:active {
  cursor: grabbing;
}

/* Banda interior con animación infinita */
.gm-inner {
  display: inline-flex;
  gap: 0.75rem;
  white-space: nowrap;
  animation: gm-scroll 40s linear infinite;
  will-change: transform;
}

/* Pausa al abrir tarjeta */
.gm-wrap--paused .gm-inner {
  animation-play-state: paused;
}

@keyframes gm-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .gm-inner {
    animation: none;
    flex-wrap: wrap;
    justify-content: center;
  }
}

/* Pildora individual */
.gm-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.55rem 1.15rem 0.55rem 0.95rem;
  border-radius: 999px;
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  border: none;
  white-space: nowrap;
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
  letter-spacing: 0.01em;
  transition: transform 0.18s var(--ease, cubic-bezier(0.2,0,0,1)),
              box-shadow 0.18s;
}

/* Brillo al hover */
.gm-pill::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.2);
  opacity: 0;
  transition: opacity 0.18s;
}
.gm-pill:hover::before { opacity: 1; }

.gm-pill:hover {
  transform: translateY(-2px) scale(1.04);
  box-shadow: 0 6px 20px rgba(0,0,0,0.16);
}
.gm-pill:active {
  transform: translateY(0) scale(0.97);
}

/* Variantes de color */
.gm-pill--mostaza {
  background: linear-gradient(135deg, #FFB300 0%, #E6A000 100%);
  color: #3d2800;
  box-shadow: 0 3px 12px rgba(255,179,0,0.30);
}
.gm-pill--turquesa {
  background: linear-gradient(135deg, #00BCD4 0%, #0097A7 100%);
  color: #001e24;
  box-shadow: 0 3px 12px rgba(0,188,212,0.30);
}
.gm-pill--verde {
  background: linear-gradient(135deg, #2E9E6B 0%, #1e7a52 100%);
  color: #001209;
  box-shadow: 0 3px 12px rgba(46,158,107,0.30);
}

.gm-pill__emoji {
  font-size: 1rem;
  line-height: 1;
}

/* ============================================================
   TARJETA METAL LÍQUIDO — Overlay landmark
   ============================================================ */

/* Fondo oscuro con blur */
.lm-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: rgba(7, 30, 43, 0.52);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  opacity: 0;
  transition: opacity 0.28s ease;
}

/* Visible cuando no tiene hidden */
.lm-overlay:not([hidden]) {
  opacity: 1;
}

/* Oculto con display:none via atributo */
.lm-overlay[hidden] {
  display: none !important;
}

/* Tarjeta glassmorphism */
.lm-card {
  position: relative;
  width: 100%;
  max-width: 440px;
  background: rgba(255, 253, 247, 0.84);
  backdrop-filter: blur(32px) saturate(1.9);
  -webkit-backdrop-filter: blur(32px) saturate(1.9);
  border: 1px solid rgba(255,255,255,0.6);
  border-radius: 24px;
  padding: 2.2rem 2rem 1.8rem;
  box-shadow:
    0 0 0 1px rgba(0,188,212,0.10),
    0 8px 40px rgba(7,30,43,0.20),
    0 2px 8px  rgba(7,30,43,0.10),
    inset 0 1px 0 rgba(255,255,255,0.92);
  overflow: hidden;
  transform: scale(0.90) translateY(20px);
  transition: transform 0.34s cubic-bezier(0.2,0,0,1);
}

/* Animación de entrada */
.lm-overlay:not([hidden]) .lm-card {
  transform: scale(1) translateY(0);
}

/* Capa de brillo metal líquido */
.lm-card__shine {
  position: absolute;
  inset: 0;
  border-radius: 24px;
  background: linear-gradient(
    125deg,
    rgba(255,255,255,0.00) 0%,
    rgba(255,255,255,0.42) 28%,
    rgba(0,188,212,0.07) 50%,
    rgba(255,107,107,0.05) 68%,
    rgba(255,255,255,0.00) 100%
  );
  background-size: 280% 280%;
  animation: lm-metal-flow 4.5s ease-in-out infinite;
  pointer-events: none;
  z-index: 0;
}

@keyframes lm-metal-flow {
  0%   { background-position: 0%   50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0%   50%; }
}

@media (prefers-reduced-motion: reduce) {
  .lm-card__shine { animation: none; }
  .lm-card {
    transform: none;
    transition: none;
  }
}

/* Botón cerrar X */
.lm-card__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid rgba(26,42,53,0.12);
  background: rgba(255,255,255,0.72);
  color: var(--texto-medio, #4a6070);
  font-size: 0.85rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  transition: background 0.2s, color 0.2s, transform 0.15s;
}
.lm-card__close:hover {
  background: rgba(255,107,107,0.12);
  color: #B83E3E;
  transform: scale(1.10);
}

/* Emoji grande */
.lm-card__emoji {
  font-size: 2.6rem;
  line-height: 1;
  margin-bottom: 0.65rem;
  position: relative;
  z-index: 1;
  filter: drop-shadow(0 2px 8px rgba(26,42,53,0.14));
}

/* Nombre del lugar */
.lm-card__nombre {
  font-family: var(--serif, 'Playfair Display', Georgia, serif);
  font-size: 1.45rem;
  font-weight: 700;
  color: var(--tinta, #1a2a35);
  margin: 0 0 0.22rem;
  line-height: 1.2;
  position: relative;
  z-index: 1;
}

/* Dirección */
.lm-card__addr {
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--texto-suave, #4a6f82);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin: 0 0 1rem;
  position: relative;
  z-index: 1;
}

/* Descripción */
.lm-card__desc {
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.92rem;
  line-height: 1.68;
  color: var(--texto-medio, #4a6070);
  margin: 0 0 1.4rem;
  position: relative;
  z-index: 1;
}

/* Botones de mapas */
.lm-card__btns {
  display: flex;
  gap: 0.65rem;
  position: relative;
  z-index: 1;
}

.lm-card__btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.68rem 0.8rem;
  border-radius: 12px;
  font-family: var(--sans, 'Inter', system-ui, sans-serif);
  font-size: 0.82rem;
  font-weight: 600;
  text-decoration: none;
  letter-spacing: 0.01em;
  transition: transform 0.15s, box-shadow 0.15s;
}
.lm-card__btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(0,0,0,0.16);
}
.lm-card__btn:active {
  transform: translateY(0);
}

.lm-card__btn--gmaps {
  background: linear-gradient(135deg, #4285F4 0%, #1a73e8 100%);
  color: #fff;
  box-shadow: 0 3px 10px rgba(66,133,244,0.30);
}
.lm-card__btn--apple {
  background: linear-gradient(135deg, #555 0%, #1a1a1a 100%);
  color: #fff;
  box-shadow: 0 3px 10px rgba(0,0,0,0.22);
}

/* ── Responsive móvil ── */
@media (max-width: 480px) {
  .lm-card {
    padding: 1.8rem 1.4rem 1.4rem;
    border-radius: 20px;
    max-width: 100%;
  }
  .lm-card__btns { flex-direction: column; }
  .gm-wrap { margin-top: 2rem; }
}
