/* ===========================================================
   EcoCieneguilla — hoja de estilos compartida
   Tema claro "confianza" (estilo Booking) · acento verde
   =========================================================== */
:root {
  /* superficies */
  --bg: #ffffff;
  --bg-soft: #f3f7f3;        /* secciones alternas, verde muy suave */
  --card: #ffffff;
  --line: #e4eae4;           /* bordes finos */
  --line-fuerte: #d3dcd3;

  /* texto */
  --ink: #16241c;            /* titulares, casi negro verdoso */
  --ink-2: #ffffff;
  --muted: #58685e;          /* texto secundario (contraste AA) */

  /* marca */
  --verde: #1c7a44;          /* primario */
  --verde-osc: #155e34;      /* hover / activo */
  --verde-claro: #2f9d5b;
  --verde-tint: #e7f4ec;     /* fondos de pastilla */
  --verde-tint-2: #d6ecdf;
  --estrella: #f2a92b;       /* estrellas de reseñas */
  --wsp: #1fa855;

  /* sombras estilo tarjeta */
  --sombra-sm: 0 1px 2px rgba(20,40,28,.06), 0 1px 3px rgba(20,40,28,.05);
  --sombra-md: 0 6px 16px rgba(20,40,28,.10);
  --sombra-lg: 0 14px 34px rgba(20,40,28,.16);

  --display: "Poppins", system-ui, sans-serif;
  --serif: "Poppins", system-ui, sans-serif;
  --sans: "Nunito Sans", system-ui, sans-serif;
  --acento-serif: "Instrument Serif", Georgia, serif; /* itálica editorial para palabras de énfasis en titulares */

  --radio: 16px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 120px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { animation: none !important; transition: none !important; }
}
body {
  font-family: var(--sans);
  background: var(--bg);
  color: var(--ink);
  line-height: 1.7;
  font-weight: 400;
  font-size: 16px;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
.wrap { max-width: 1200px; margin: 0 auto; padding: 0 28px; }
::selection { background: var(--verde-tint-2); color: var(--verde-osc); }

/* ---------- utilidades ---------- */
.eyebrow {
  font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--verde); font-weight: 700;
  display: flex; align-items: center; gap: 12px;
}
.eyebrow::before { content: ""; width: 26px; height: 2px; border-radius: 2px; background: var(--verde); flex-shrink: 0; }
.eyebrow.centrado { justify-content: center; }
.eyebrow.centrado::after { content: ""; width: 26px; height: 2px; border-radius: 2px; background: var(--verde); flex-shrink: 0; }
.eyebrow-claro { color: #eafff1; }
.eyebrow-claro::before, .eyebrow-claro::after { background: #eafff1; }

h1, h2, h3 { font-family: var(--serif); font-weight: 700; line-height: 1.18; color: var(--ink); letter-spacing: -.01em; }
.titulo-sec {
  font-family: var(--display); font-weight: 700;
  font-size: clamp(28px, 4vw, 44px); line-height: 1.12;
  letter-spacing: -.02em; margin: 12px 0 14px;
}
.titulo-sec em { font-style: italic; font-family: var(--acento-serif); font-weight: 400; font-size: 0.82em; line-height: 1; vertical-align: -0.03em; letter-spacing: 0; color: var(--verde); }
.intro-sec { color: var(--muted); max-width: 60ch; font-size: 16.5px; }
.sec-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 40px; margin-bottom: 44px; flex-wrap: wrap; }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  font-family: var(--sans); font-weight: 700; font-size: 15px;
  letter-spacing: .01em; text-transform: none;
  padding: 14px 26px; text-decoration: none; border-radius: 12px;
  border: 1.5px solid transparent;
  transition: background .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease, transform .2s ease;
  cursor: pointer;
}
.btn-oro { background: var(--verde); color: #fff; box-shadow: 0 2px 10px rgba(28,122,68,.28); }
.btn-oro:hover { background: var(--verde-osc); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(28,122,68,.32); }
.btn-linea { border-color: var(--line-fuerte); color: var(--ink); background: #fff; }
.btn-linea:hover { border-color: var(--verde); color: var(--verde); }
.btn-wsp { background: var(--wsp); color: #fff; }
.btn-wsp:hover { filter: brightness(1.06); transform: translateY(-2px); }
/* WhatsApp todavía no cargado por el negocio: gris, no clickeable, sin pretender que funciona */
.btn-wsp-pendiente { background: #9aa39c; cursor: not-allowed; }
.btn-wsp-pendiente:hover { filter: none; transform: none; }
.btn:focus-visible { outline: 3px solid rgba(28,122,68,.4); outline-offset: 2px; }

/* botones sobre imagen oscura (hero, owners, banda) */
.hero .btn-linea, .owners .btn-linea, .banda .btn-linea {
  background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.7); color: #fff;
}
.hero .btn-linea:hover, .owners .btn-linea:hover, .banda .btn-linea:hover {
  background: #fff; border-color: #fff; color: var(--verde-osc);
}

/* ---------- barra superior (estilo Airbnb) ---------- */
.topbar {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: rgba(255,255,255,.98);
  border-bottom: 1px solid var(--line);
  transition: box-shadow .3s ease;
}
.topbar.compacta, .topbar.solida { box-shadow: var(--sombra-sm); }
.topbar-in {
  max-width: 1240px; margin: 0 auto; padding: 9px 28px;
  display: flex; align-items: center; gap: 18px;
}
.marca { display: flex; align-items: center; gap: 12px; text-decoration: none; flex-shrink: 0; }
.marca svg, .marca img { width: 44px; height: 44px; flex-shrink: 0; object-fit: contain; }
.marca-nombre { font-family: var(--serif); font-weight: 700; font-size: 20px; letter-spacing: -.01em; color: var(--ink); white-space: nowrap; }
.marca-nombre b { font-weight: 800; font-size: 1.16em; color: var(--verde); }
.marca-sub {
  display: block; font-family: var(--sans); font-size: 10px; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase; color: var(--muted); margin-top: 1px;
}

/* pestañas de categorías en el header */
.topcats { display: flex; gap: 2px; margin: 0 auto; }
.topcats .cat-tab {
  flex: 0 0 auto;
  display: flex; flex-direction: column; align-items: center; gap: 3px; text-align: center;
  padding: 6px 13px 7px; border-radius: 12px; border: 1.5px solid transparent;
  text-decoration: none; color: var(--muted); font-weight: 700; font-size: 12.5px;
  white-space: nowrap; position: relative;
  transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.topcats .cat-ico { width: 46px; height: 46px; }
.topcats .cat-ico svg { width: 100%; height: 100%; display: block; }
.cat-ico img { width: 100%; height: 100%; object-fit: contain; display: block; }
.topcats .cat-tab:hover { border-color: var(--line-fuerte); background: #fff; color: var(--ink); }
.topcats .cat-tab.activo { color: var(--ink); border-color: var(--line-fuerte); }
.topcats .cat-tab.activo::after {
  content: ""; position: absolute; left: 24%; right: 24%; bottom: 3px;
  height: 2.5px; border-radius: 3px; background: var(--ink);
}
.topbar-reservar { flex-shrink: 0; padding: 11px 20px; font-size: 14.5px; }
.menu-btn { display: none; }

/* ---------- hero (inicio) ---------- */
.hero { position: relative; min-height: 92vh; display: flex; align-items: center; overflow: hidden; }
.hero-bg { position: absolute; inset: 0; overflow: hidden; }
.hero-bg img { width: 100%; height: 100%; object-fit: cover; }
/* slideshow del hero (difuminado / crossfade) */
.hero-slide { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1s ease; user-select: none; -webkit-user-drag: none; }
.hero-slide.is-active { opacity: 1; }
.hero-bg { touch-action: pan-y; }
@media (prefers-reduced-motion: reduce) { .hero-slide { transition: none; } }
/* flechas del hero (PC) */
.hero-arrow { position: absolute; z-index: 4; top: 50%; transform: translateY(-50%); width: 46px; height: 46px; padding: 0; border: none; border-radius: 50%; background: rgba(255,255,255,.88); color: var(--verde); font-size: 30px; line-height: 1; font-weight: 700; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 3px 12px rgba(0,0,0,.28); transition: background .2s, transform .2s; }
.hero-arrow:hover { background: #fff; transform: translateY(-50%) scale(1.08); }
.hero-arrow span, .hero-arrow { padding-bottom: 4px; } /* centrar el chevron ópticamente */
.hero-prev { left: 20px; }
.hero-next { right: 20px; }
@media (max-width: 768px) { .hero-arrow { display: none; } } /* en celular se usa el arrastre */
.hero-bg::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(11,28,18,.45) 0%, rgba(11,28,18,.32) 40%, rgba(11,28,18,.62) 100%);
}
.hero-cont { position: relative; z-index: 2; max-width: 1200px; margin: 0 auto; padding: 130px 28px 40px 92px; width: 100%; }
.hero h1 {
  font-family: var(--display); font-weight: 800; color: #fff;
  font-size: clamp(34px, 5.4vw, 60px); line-height: 1.08; letter-spacing: -.02em;
  max-width: 18ch; margin: 16px 0 18px;
  text-shadow: 0 1px 3px rgba(0,0,0,.35);
}
.hero h1 em { font-style: italic; font-family: var(--acento-serif); font-weight: 400; font-size: 0.82em; line-height: 1; vertical-align: -0.03em; letter-spacing: 0; color: #8ff0b3; }
.hero-sub { max-width: 52ch; color: rgba(255,255,255,.94); font-size: 18px; margin-bottom: 28px; text-shadow: 0 1px 3px rgba(0,0,0,.4); }
.hero-cta { display: flex; gap: 14px; flex-wrap: wrap; }

/* buscador con pestañas estilo Airbnb */
.buscador {
  background: #fff; border-radius: 18px; box-shadow: var(--sombra-lg);
  padding: 10px; max-width: 820px; margin-top: 6px;
}
.cats { display: flex; gap: 4px; }
.cat-tab {
  flex: 1 1 0; min-width: 0;
  display: flex; flex-direction: column; align-items: center; gap: 7px; text-align: center;
  padding: 12px 6px 13px; border-radius: 14px; border: 1.5px solid transparent;
  text-decoration: none; color: var(--muted); font-weight: 700; font-size: 14px;
  position: relative; transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.cat-ico { width: 42px; height: 42px; flex-shrink: 0; }
.cat-ico svg { width: 100%; height: 100%; display: block; }
.cat-tab:hover { border-color: var(--line-fuerte); background: #fff; color: var(--ink); }
.cat-tab.activo { color: var(--ink); border-color: var(--line-fuerte); }
.cat-tab.activo::after {
  content: ""; position: absolute; left: 26%; right: 26%; bottom: 5px;
  height: 3px; border-radius: 3px; background: var(--ink);
}

/* franja de confianza */
.hero-datos {
  position: relative; z-index: 5; background: var(--verde-tint); border-bottom: 1px solid var(--line);
}
.hero-datos-in {
  max-width: 1200px; margin: 0 auto; padding: 22px 28px;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;
}
.dato { display: flex; flex-direction: column; gap: 2px; }
.dato b { font-family: var(--serif); font-weight: 800; font-size: 26px; color: var(--verde-osc); line-height: 1.1; }
.dato span { font-size: 13px; color: var(--verde); font-weight: 700; }

/* ---------- qué es EcoCieneguilla ---------- */
.quees { padding: 84px 0; background: var(--bg); }
.quees-head { text-align: center; max-width: 720px; margin: 0 auto 48px; }
.quees-head .intro-sec { margin: 14px auto 0; }
.quees-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.quees-item { text-align: center; padding: 8px; }
.quees-ico { width: 62px; height: 62px; border-radius: 18px; background: var(--verde-tint); display: grid; place-items: center; margin: 0 auto 16px; }
.quees-ico svg { width: 30px; height: 30px; color: var(--verde); }
.quees-item h3 { font-size: 19px; margin-bottom: 8px; }
.quees-item p { color: var(--muted); font-size: 15px; max-width: 34ch; margin: 0 auto; }

/* ---------- portada de paginas internas ---------- */
.page-hero { position: relative; min-height: 46vh; display: flex; align-items: flex-end; overflow: hidden; }
.page-hero > img, .page-hero picture img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.page-hero::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(11,28,18,.4) 0%, rgba(11,28,18,.35) 45%, rgba(11,28,18,.72) 100%);
}
.page-hero .wrap { position: relative; z-index: 2; padding-top: 150px; padding-bottom: 46px; }
.page-hero .eyebrow { color: #eafff1; }
.page-hero .eyebrow::before { background: #eafff1; }
.page-hero h1 {
  font-family: var(--display); font-weight: 800; color: #fff;
  font-size: clamp(30px, 5vw, 52px); line-height: 1.1; letter-spacing: -.02em;
  margin: 12px 0 14px; text-shadow: 0 1px 3px rgba(0,0,0,.4);
}
.page-hero h1 em { font-style: italic; font-family: var(--acento-serif); font-weight: 400; font-size: 0.82em; line-height: 1; vertical-align: -0.03em; letter-spacing: 0; color: #8ff0b3; }
.page-hero p { max-width: 58ch; color: rgba(255,255,255,.92); text-shadow: 0 1px 2px rgba(0,0,0,.35); }

/* ---------- lo mejor (accesos) ---------- */
.mejor { padding: 84px 0; background: var(--bg); }
.mejor-head { text-align: center; max-width: 640px; margin: 0 auto 44px; }
.mejor-head .intro-sec { margin: 0 auto; }
.mejor-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.mejor-card {
  display: block; text-decoration: none; overflow: hidden; border-radius: var(--radio);
  border: 1px solid var(--line); background: var(--card); box-shadow: var(--sombra-sm);
  transition: transform .2s ease, box-shadow .2s ease;
}
.mejor-card:hover { transform: translateY(-5px); box-shadow: var(--sombra-lg); }
.mejor-foto { position: relative; aspect-ratio: 16/11; overflow: hidden; }
.mejor-foto img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.mejor-card:hover .mejor-foto img { transform: scale(1.05); }
/* enfoque en la parte baja de una foto panorámica (menos cielo) */
.mejor-foto img.foco-bajo { transform: scale(1.4); transform-origin: 50% 72%; }
.mejor-card:hover .mejor-foto img.foco-bajo { transform: scale(1.47); }
.mejor-pill {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  background: #fff; color: var(--verde-osc);
  font-size: 12.5px; font-weight: 800; letter-spacing: .01em;
  padding: 6px 13px; border-radius: 999px; box-shadow: var(--sombra-sm);
}
.mejor-body { padding: 20px 22px 24px; }
.mejor-body h3 { font-size: 20px; margin-bottom: 6px; color: var(--ink); }
.mejor-body p { font-size: 15px; color: var(--muted); }
.mejor-link { margin-top: 14px; display: inline-block; font-size: 14.5px; color: var(--verde); font-weight: 800; }
.mejor-card:hover .mejor-link { color: var(--verde-osc); }

/* ---------- complemento (casas como extra) ---------- */
.complemento { padding: 0 0 84px; background: var(--bg); }
.complemento-caja {
  display: grid; grid-template-columns: .95fr 1.05fr; gap: 0; overflow: hidden;
  border-radius: 20px; border: 1px solid var(--line); background: var(--verde-tint);
}
.complemento-foto { position: relative; min-height: 260px; overflow: hidden; }
.complemento-foto img { width: 100%; height: 100%; object-fit: cover; }
.complemento-txt { padding: 44px 44px; }
.complemento-txt .tag { display: inline-block; background: #fff; color: var(--verde-osc); font-weight: 800; font-size: 12.5px; padding: 6px 13px; border-radius: 999px; margin-bottom: 14px; box-shadow: var(--sombra-sm); }
.complemento-txt h2 { font-size: clamp(24px, 3vw, 34px); margin-bottom: 12px; }
.complemento-txt h2 em { font-style: italic; font-family: var(--acento-serif); font-weight: 400; font-size: 0.82em; line-height: 1; vertical-align: -0.03em; letter-spacing: 0; color: var(--verde); }
.complemento-txt p { color: var(--muted); margin-bottom: 24px; max-width: 46ch; }

/* ---------- destino ---------- */
.destino { padding: 90px 0; background: var(--bg-soft); }
.destino-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 60px; align-items: center; }
.destino-foto { aspect-ratio: 4/5; overflow: hidden; border-radius: 20px; box-shadow: var(--sombra-md); }
.destino-foto img { width: 100%; height: 100%; object-fit: cover; }
.destino-features { list-style: none; margin-top: 30px; display: grid; grid-template-columns: 1fr 1fr; gap: 22px 28px; }
.destino-features li { border-top: 2px solid var(--verde-tint-2); padding-top: 12px; }
.destino-features b { font-family: var(--serif); font-weight: 700; font-size: 17px; color: var(--ink); display: block; margin-bottom: 3px; }
.destino-features span { font-size: 14px; color: var(--muted); }

/* ---------- promesa / cómo funciona (misma grilla numerada, reutilizada) ---------- */
.promesa, .como-funciona { padding: 90px 0; background: var(--bg); }

/* ---------- preguntas frecuentes (acordeón nativo, sin JS ni librerías) ---------- */
.faq { padding: 90px 0; background: var(--bg-soft); }
.faq-lista { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.faq-item { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 4px 22px; box-shadow: var(--sombra-sm); }
.faq-item summary {
  font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 16.5px; color: var(--ink);
  padding: 18px 28px 18px 0; cursor: pointer; list-style: none; position: relative;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: '+'; position: absolute; right: 0; top: 50%; transform: translateY(-50%);
  font-size: 22px; font-weight: 400; color: var(--verde); line-height: 1;
}
.faq-item[open] summary::after { content: '−'; }
.faq-item p { color: var(--muted); font-size: 15.5px; padding: 0 0 20px; margin: 0; max-width: 62ch; }
.faq-item summary:focus-visible { outline: 3px solid rgba(28,122,68,.4); outline-offset: 2px; border-radius: 6px; }
.promesa-head { text-align: center; max-width: 640px; margin: 0 auto 48px; }
.promesa-head .intro-sec { margin: 0 auto; }
.promesa-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.promesa-item { background: var(--card); padding: 34px 30px; position: relative; border: 1px solid var(--line); border-radius: var(--radio); box-shadow: var(--sombra-sm); }
.promesa-item .num {
  display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 12px;
  background: var(--verde-tint); color: var(--verde-osc);
  font-family: var(--serif); font-style: normal; font-weight: 800; font-size: 16px; margin-bottom: 16px;
}
.promesa-item h3 { font-size: 20px; margin-bottom: 10px; }
.promesa-item p { color: var(--muted); font-size: 15px; }

/* ---------- casas ---------- */
.casas { padding: 90px 0; background: var(--bg); }
.casas-carrusel { position: relative; }
.grid-casas {
  display: flex; gap: 26px;
  overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  scrollbar-width: none; padding-bottom: 6px;
}
.grid-casas::-webkit-scrollbar { display: none; }
.grid-casas > .casa { flex: 0 0 calc((100% - 52px) / 3); scroll-snap-align: start; }
.carrusel-nav { display: flex; justify-content: flex-end; gap: 12px; margin-top: 24px; }
.carrusel-btn {
  width: 46px; height: 46px; border-radius: 50%;
  border: 1px solid var(--line-fuerte); background: #fff;
  color: var(--verde); font-size: 22px; line-height: 1; cursor: pointer;
  display: grid; place-items: center; transition: all .2s ease; box-shadow: var(--sombra-sm);
}
.carrusel-btn:hover:not(:disabled) { background: var(--verde); border-color: var(--verde); color: #fff; transform: translateY(-2px); }
.carrusel-btn:disabled { opacity: .4; cursor: default; }
.carrusel-btn:focus-visible { outline: 3px solid rgba(28,122,68,.4); outline-offset: 2px; }
.casa { text-decoration: none; display: block; }
.casa-foto { position: relative; overflow: hidden; aspect-ratio: 4 / 3.4; border-radius: var(--radio); box-shadow: var(--sombra-sm); }
.casa-foto img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s cubic-bezier(.2,.6,.2,1); }
.casa:hover .casa-foto img { transform: scale(1.05); }
.sello-v {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  font-size: 12px; font-weight: 800;
  color: var(--verde-osc); background: #fff; padding: 6px 12px; border-radius: 999px;
  display: inline-flex; align-items: center; gap: 5px; box-shadow: var(--sombra-sm);
}
.sello-v::before { content: "✓"; font-weight: 900; }
.casa-info { padding: 14px 4px 0; }
.casa-info h3 { font-size: 19px; margin-bottom: 3px; color: var(--ink); }
.casa-info .detalle { font-size: 14px; color: var(--muted); }
.casa-pie { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 10px 4px 0; flex-wrap: wrap; }
.casa-pie .precio { font-family: var(--serif); font-weight: 800; font-size: 19px; color: var(--ink); }
.casa-pie .precio span { font-family: var(--sans); font-size: 13px; font-weight: 600; color: var(--muted); margin-left: 4px; }
.casa-pie .link-oro { font-size: 14.5px; color: var(--verde); text-decoration: none; font-weight: 800; }
.casa-pie .link-oro:hover { color: var(--verde-osc); }
.nota-fotos { margin-top: 40px; text-align: center; color: var(--muted); font-size: 14.5px; }
.nota-fotos a { color: var(--verde); font-weight: 800; text-decoration: none; }
.nota-fotos a:hover { text-decoration: underline; }

/* ---------- banda ---------- */
.banda { position: relative; padding: 110px 0; text-align: center; overflow: hidden; }
.banda img.fondo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.banda::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,28,18,.62), rgba(11,28,18,.72)); }
.banda .wrap { position: relative; z-index: 2; max-width: 760px; }
.banda h2 { font-family: var(--display); font-weight: 800; color: #fff; line-height: 1.12; letter-spacing: -.02em; font-size: clamp(28px, 4vw, 44px); margin-bottom: 14px; }
.banda h2 em { font-style: italic; font-family: var(--acento-serif); font-weight: 400; font-size: 0.82em; line-height: 1; vertical-align: -0.03em; letter-spacing: 0; color: #8ff0b3; }
.banda p { color: rgba(255,255,255,.9); margin-bottom: 30px; }

/* ---------- experiencias ---------- */
.exps { padding: 90px 0; background: var(--bg); }
.grid-exp { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.exp { position: relative; overflow: hidden; aspect-ratio: 3 / 4; text-decoration: none; display: block; border-radius: var(--radio); box-shadow: var(--sombra-sm); }
.exp picture { display: block; width: 100%; height: 100%; }
.exp img, .exp picture img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s cubic-bezier(.2,.6,.2,1); }
.exp:hover img, .exp:hover picture img { transform: scale(1.06); }
.exp::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(11,28,18,.82) 100%); }
.exp-info { position: absolute; left: 18px; right: 18px; bottom: 18px; z-index: 2; }
.exp-info h3 { font-size: 19px; margin-bottom: 3px; color: #fff; }
.exp-info p { font-size: 13.5px; color: rgba(255,255,255,.85); }

/* ---------- rutas ---------- */
.rutas { padding: 90px 0; background: var(--bg-soft); }
.rutas-flex { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
.rutas-foto { aspect-ratio: 4/5; overflow: hidden; border-radius: 20px; box-shadow: var(--sombra-md); }
.rutas-foto img { width: 100%; height: 100%; object-fit: cover; }
.lista-rutas { list-style: none; margin: 30px 0 36px; }
.lista-rutas li { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; padding: 18px 2px; border-bottom: 1px solid var(--line); }
.lista-rutas li:first-child { border-top: 1px solid var(--line); }
.lista-rutas b { font-family: var(--serif); font-weight: 700; font-size: 17px; color: var(--ink); }
.lista-rutas span { font-size: 13.5px; color: var(--muted); text-align: right; font-weight: 600; }

/* ---------- tarjetas de restaurantes / negocios ---------- */
.listado { padding: 84px 0; background: var(--bg); }
.grid-resto { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 36px; }
.resto {
  display: flex; flex-direction: column; overflow: hidden; border-radius: var(--radio);
  border: 1px solid var(--line); background: var(--card); box-shadow: var(--sombra-sm);
  transition: transform .2s ease, box-shadow .2s ease;
}
.resto:hover { transform: translateY(-5px); box-shadow: var(--sombra-lg); }
.resto-foto { position: relative; aspect-ratio: 4/3; overflow: hidden; }
.resto-foto-link { display: block; width: 100%; height: 100%; }
/* botón redondo de WhatsApp sobre la foto (tarjetas compactas de listado) */
.resto-wsp-mini {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--wsp); color: #fff; display: grid; place-items: center;
  box-shadow: 0 2px 8px rgba(0,0,0,.28); transition: transform .15s ease;
}
.resto-wsp-mini:hover { transform: scale(1.1); }
.resto-wsp-mini svg { width: 17px; height: 17px; }
/* WhatsApp todavía no cargado por el negocio: se ve apagado, sin pretender que funciona */
.resto-wsp-mini-pendiente { background: #9aa39c; cursor: not-allowed; }
.resto-wsp-mini-pendiente:hover { transform: none; }
.resto-foto img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.resto:hover .resto-foto img { transform: scale(1.05); }
/* portada con logo (ej. Grido) sobre fondo de marca */
.resto-foto.grido-logo { background: #1B3E93; }
.resto-foto.grido-logo img { object-fit: contain; padding: 20px; }
.resto:hover .resto-foto.grido-logo img { transform: none; }
/* mismo logo dentro de la ficha (modal) */
.modal-foto img[src*="grido-logo"] { object-fit: contain; background: #1B3E93; padding: 26px; }

/* logo de Mozs Express (line art sobre fondo blanco) */
.resto-foto.mozs-logo { background: #ffffff; }
.resto-foto.mozs-logo img { object-fit: contain; padding: 22px; }
.resto:hover .resto-foto.mozs-logo img { transform: none; }
.modal-foto img[src*="mozs-logo"] { object-fit: contain; background: #ffffff; padding: 30px; }

/* logo de Mendieta Barber Studio (sobre fondo blanco) */
.resto-foto.mendieta-logo { background: #ffffff; }
.resto-foto.mendieta-logo img { object-fit: contain; padding: 14px; }
.resto:hover .resto-foto.mendieta-logo img { transform: none; }
.modal-foto img[src*="mendieta-logo"] { object-fit: contain; background: #ffffff; padding: 20px; }

/* ============ Buscador turístico ============ */
.buscador-sec { position: relative; z-index: 6; margin-top: -54px; margin-bottom: 6px; }
.buscador { background: #fff; border: 1px solid var(--line); border-radius: 20px; box-shadow: var(--sombra-lg); display: flex; align-items: stretch; gap: 2px; padding: 10px; }
.bus-campo { position: relative; display: flex; flex-direction: column; justify-content: center; padding: 8px 16px; flex: 1 1 auto; min-width: 0; }
.bus-campo + .bus-campo { border-left: 1px solid var(--line); }
.bus-campo > label { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 12px; color: var(--ink); margin-bottom: 3px; }
.bus-que { flex: 2 1 34%; }
.bus-input { display: flex; align-items: center; gap: 8px; }
.bus-lupa { width: 18px; height: 18px; color: var(--verde); flex-shrink: 0; }
.bus-input input { border: none; outline: none; background: transparent; font-family: 'Nunito Sans', sans-serif; font-size: 15px; color: var(--ink); width: 100%; padding: 2px 0; }
.bus-input input::placeholder { color: #97a69c; }
.bus-fecha input[type="date"] { border: none; outline: none; background: transparent; font-family: 'Nunito Sans', sans-serif; font-size: 15px; color: var(--ink); width: 100%; min-width: 0; }
.bus-fechas { display: flex; gap: 8px; align-items: center; }
.oculto { display: none !important; }

.bus-stepper { display: inline-flex; align-items: center; gap: 12px; }
.step-btn { width: 30px; height: 30px; border-radius: 50%; border: 1.5px solid var(--line-fuerte); background: #fff; color: var(--verde); font-size: 18px; font-weight: 700; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: border-color .18s, background .18s; }
.step-btn:hover:not(:disabled) { border-color: var(--verde); background: var(--verde-tint); }
.step-btn:disabled { opacity: .4; cursor: not-allowed; }
.step-num { min-width: 22px; text-align: center; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 15px; color: var(--ink); }

.bus-cat-btn { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; border: none; background: transparent; cursor: pointer; font-family: 'Nunito Sans', sans-serif; font-size: 15px; color: var(--ink); padding: 2px 0; }
.bus-chevron { width: 18px; height: 18px; color: #7a8a80; transition: transform .2s; flex-shrink: 0; }
.bus-cat-btn[aria-expanded="true"] .bus-chevron { transform: rotate(180deg); }
.bus-cat-menu, .bus-sug { position: absolute; top: calc(100% + 8px); left: 8px; right: 8px; background: #fff; border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--sombra-lg); list-style: none; margin: 0; padding: 6px; z-index: 30; display: none; max-height: 320px; overflow: auto; }
.bus-cat-menu.abierto, .bus-sug.abierto { display: block; }
.bus-cat-menu li, .bus-sug li { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; cursor: pointer; font-size: 14.5px; color: var(--ink); }
.bus-cat-menu li:hover, .bus-cat-menu li.activo, .bus-sug li:hover, .bus-sug li.marcada { background: var(--verde-tint); }
.bus-cat-menu li svg { width: 20px; height: 20px; color: var(--verde); flex-shrink: 0; }
.bus-sug li svg { width: 16px; height: 16px; color: #97a69c; flex-shrink: 0; }

.bus-btn { flex: 0 0 auto; align-self: center; gap: 8px; padding: 14px 26px; margin-left: 4px; border-radius: 14px; }
.bus-btn svg { width: 18px; height: 18px; }
.bus-btn.cargando { opacity: .75; pointer-events: none; }
.buscador input:focus-visible, .bus-cat-btn:focus-visible, .step-btn:focus-visible, .bus-btn:focus-visible { outline: 2px solid var(--verde); outline-offset: 2px; border-radius: 8px; }

.bus-resultados { padding: 22px 0 8px; scroll-margin-top: 90px; }
.bus-res-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 20px; }
.bus-res-head h2 { margin: 0; font-size: clamp(22px, 3vw, 30px); }
.bus-res-limpiar { border: 1px solid var(--line-fuerte); background: #fff; color: var(--ink); border-radius: 999px; padding: 8px 16px; font-weight: 600; font-size: 13.5px; cursor: pointer; white-space: nowrap; }
.bus-res-limpiar:hover { border-color: var(--verde); color: var(--verde); }
.bus-res-grid, .bus-skeleton { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }

.bus-card { background: #fff; border: 1px solid var(--line); border-radius: 18px; overflow: hidden; box-shadow: var(--sombra-sm); display: flex; flex-direction: column; transition: transform .18s, box-shadow .18s; }
.bus-card:hover { transform: translateY(-3px); box-shadow: var(--sombra-md); }
.bus-card-foto { display: block; position: relative; aspect-ratio: 16/10; background: #eef2ee; cursor: pointer; }
.bus-card-nombre { color: inherit; text-decoration: none; }
.bus-card-nombre:hover { color: var(--verde); }
.bus-card-foto img { width: 100%; height: 100%; object-fit: cover; }
.bus-card-foto.logo img { object-fit: contain; padding: 14px; background: #fff; }
.bus-card-foto.logo-azul img { background: #1B3E93; }
.bus-card-pill { position: absolute; top: 12px; left: 12px; background: rgba(255,255,255,.94); color: var(--verde-osc); font-weight: 700; font-size: 12px; padding: 4px 11px; border-radius: 999px; }
.bus-card-body { padding: 16px 18px 18px; display: flex; flex-direction: column; flex: 1; }
.bus-card-body h3 { font-family: 'Poppins', sans-serif; font-size: 18px; margin: 0 0 4px; color: var(--ink); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.bus-card-meta { color: var(--verde-osc); font-weight: 700; font-size: 13px; margin: 0 0 8px; }
.bus-card-body > p { color: #5b6b60; font-size: 14px; margin: 0 0 16px; flex: 1; line-height: 1.45; }
.bus-card-acciones { display: flex; gap: 8px; }
.bus-card-acciones .btn { flex: 1; justify-content: center; padding: 10px 12px; font-size: 13.5px; }

.bus-estado { text-align: center; background: #f6faf7; border: 1px dashed var(--line-fuerte); border-radius: 16px; padding: 40px 24px; }
.bus-estado h3 { font-family: 'Poppins', sans-serif; margin: 0 0 8px; color: var(--ink); font-size: 20px; }
.bus-estado p { color: #5b6b60; margin: 0 auto 18px; max-width: 46ch; }
.bus-estado-acciones { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.bus-sk-card { border-radius: 18px; overflow: hidden; border: 1px solid var(--line); background: #fff; }
.bus-sk-foto { aspect-ratio: 16/10; background: linear-gradient(90deg, #eef2ee 25%, #f6faf7 37%, #eef2ee 63%); background-size: 400% 100%; animation: busSk 1.2s ease infinite; }
.bus-sk-linea { height: 12px; margin: 14px 16px; border-radius: 6px; background: linear-gradient(90deg, #eef2ee 25%, #f6faf7 37%, #eef2ee 63%); background-size: 400% 100%; animation: busSk 1.2s ease infinite; }
.bus-sk-linea.corta { width: 55%; }
@keyframes busSk { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }

@media (max-width: 920px) { .bus-res-grid, .bus-skeleton { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 860px) {
  .buscador-sec { margin-top: -22px; }
  .buscador { flex-direction: column; gap: 0; padding: 8px; border-radius: 18px; }
  .bus-campo { padding: 13px 14px; }
  .bus-campo + .bus-campo { border-left: none; border-top: 1px solid var(--line); }
  .bus-personas { flex-direction: row; align-items: center; justify-content: space-between; }
  .bus-personas > label { margin-bottom: 0; }
  .bus-btn { width: 100%; margin: 8px 0 4px; }
}
@media (max-width: 560px) { .bus-res-grid, .bus-skeleton { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .bus-sk-foto, .bus-sk-linea { animation: none; } }

/* accesos rápidos + campos dinámicos */
.bus-rapidos { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 14px 2px 0; }
.bus-rapidos-tit { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 12.5px; color: #5b6b60; margin-right: 2px; }
.bus-chip { background: #fff; border: 1px solid var(--line); color: var(--ink); font-family: 'Nunito Sans', sans-serif; font-weight: 700; font-size: 13px; padding: 7px 14px; border-radius: 999px; cursor: pointer; transition: background .18s, color .18s, border-color .18s, transform .18s; box-shadow: var(--sombra-sm); }
.bus-chip:hover { border-color: var(--verde); color: var(--verde); background: var(--verde-tint); transform: translateY(-1px); }
.bus-campo.bus-aparece { animation: busAparece .2s ease; }
@keyframes busAparece { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .bus-campo.bus-aparece { animation: none; } }
@media (max-width: 860px) {
  .bus-rapidos { margin: 12px 0 0; }
  .bus-rapidos-tit { width: 100%; margin-bottom: 2px; }
}

/* carrusel "Te recomendamos" (alternativas) */
.reco-intro { text-align: center; margin-bottom: 20px; }
.reco-intro h3 { font-family: 'Poppins', sans-serif; font-size: 21px; margin: 0 0 6px; color: var(--ink); }
.reco-intro p { color: #5b6b60; margin: 0; }
.reco { margin-top: 6px; }
.reco-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.reco-head h3 { font-family: 'Poppins', sans-serif; font-size: 19px; margin: 0; color: var(--ink); }
.reco-nav { display: flex; gap: 8px; }
.reco-arrow { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line-fuerte); background: #fff; color: var(--verde); font-size: 20px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s, border-color .2s; }
.reco-arrow:hover { border-color: var(--verde); background: var(--verde-tint); }
.reco-track { display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding-bottom: 6px; }
.reco-track::-webkit-scrollbar { display: none; }
.reco-card { flex: 0 0 clamp(240px, 42%, 300px); scroll-snap-align: start; background: #fff; border: 1px solid var(--line); border-radius: 16px; overflow: hidden; box-shadow: var(--sombra-sm); text-decoration: none; color: inherit; transition: transform .18s, box-shadow .18s; }
.reco-card:hover { transform: translateY(-3px); box-shadow: var(--sombra-md); }
.reco-card-foto { aspect-ratio: 16/10; background: #eef2ee; }
.reco-card-foto img { width: 100%; height: 100%; object-fit: cover; }
.reco-card-body { padding: 12px 14px 14px; }
.reco-card-body h4 { font-family: 'Poppins', sans-serif; font-size: 16px; margin: 0 0 3px; color: var(--ink); }
.reco-card-body p { margin: 0; font-size: 13px; color: var(--verde-osc); font-weight: 700; }
@media (max-width: 560px) { .reco-card { flex-basis: 78%; } }

/* galería: clic en una foto para verla completa */
.modal-galeria img { cursor: zoom-in; }
.lightbox {
  position: fixed; inset: 0; z-index: 300; display: none;
  align-items: center; justify-content: center; padding: 24px;
  background: rgba(0,0,0,.9); cursor: zoom-out;
}
.lightbox.abierto { display: flex; }
.lightbox img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 8px; }
.lightbox-cerrar {
  position: fixed; top: 16px; right: 18px; width: 46px; height: 46px; border-radius: 50%;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.45); color: #fff;
  font-size: 22px; line-height: 1; cursor: pointer; display: grid; place-items: center;
}
.lightbox-flecha {
  position: fixed; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border-radius: 50%;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.45); color: #fff;
  font-size: 30px; line-height: 1; cursor: pointer; display: grid; place-items: center; padding-bottom: 4px;
  transition: background .2s;
}
.lightbox-flecha:hover { background: rgba(255,255,255,.32); }
.lb-prev { left: 16px; }
.lb-next { right: 16px; }
.lightbox-contador {
  position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); color: #fff;
  font-family: 'Nunito Sans', sans-serif; font-weight: 700; font-size: 14px;
  background: rgba(0,0,0,.45); padding: 5px 14px; border-radius: 999px;
}
@media (max-width: 560px) { .lightbox-flecha { width: 44px; height: 44px; font-size: 26px; } .lb-prev { left: 8px; } .lb-next { right: 8px; } }
.resto-tipo {
  position: absolute; top: 12px; left: 12px;
  background: #fff; color: var(--verde-osc);
  font-size: 12.5px; font-weight: 800;
  padding: 6px 12px; border-radius: 999px; box-shadow: var(--sombra-sm);
}
.resto-body { padding: 14px 14px 16px; display: flex; flex-direction: column; flex: 1; }
.resto-fecha { font-size: 13px; color: var(--verde); font-weight: 800; margin-bottom: 6px; }
.resto-body h3 { font-size: 16px; color: var(--ink); margin-bottom: 3px; }
.resto-estrellas { color: var(--estrella); font-size: 14px; letter-spacing: 1px; margin-bottom: 8px; }
.resto-body p { font-size: 13.5px; color: var(--muted); margin-bottom: 10px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* tarjeta compacta de listado: sin fila de redes ni botón grande (el WhatsApp queda como ícono sobre la foto);
   la ubicación solo se muestra en la versión móvil rediseñada (ver @media 767px más abajo) */
.grid-resto .resto-redes { display: none; }
.grid-resto .resto-vermas { margin-bottom: 0; }
.grid-resto .resto-ubi { display: none; }
/* elementos nuevos de la vista móvil de Restaurantes/Negocios: no existen en desktop
   (ni el buscador propio del listado, ni el título/contador/orden, ni la categoría
   chica dentro de la tarjeta — ahí ya está el pill sobre la foto) */
.bus-listado-movil, .listado-titulo-movil { display: none; }
/* elementos nuevos del rediseño móvil de la ficha individual: header compacto tipo app,
   contador/puntos de la galería y el botón "Mostrar más" de la descripción larga — ninguno
   existe en escritorio, se reactivan dentro de @media(max-width:767px)/(860px) más abajo. */
.ficha-topbar-app, .ficha-galeria-contador, .ficha-galeria-puntos, .ficha-desc-toggle { display: none; }
/* especificidad reforzada (.resto-body p) a propósito: la regla genérica ".resto-body p"
   (line-clamp de la descripción) también matchea este <p> por ser descendiente, y con
   menos especificidad este "display:none" perdía — por eso NO era ".resto-cat-chico" solo */
.resto-body .resto-cat-chico { display: none; }
.resto-body .btn { margin-top: auto; align-self: flex-start; padding: 12px 20px; font-size: 14px; }
.resto-ubi { display: flex; align-items: center; gap: 7px; font-size: 14px; color: var(--muted); margin-bottom: 12px; flex-wrap: wrap; }
.resto-ubi svg { width: 16px; height: 16px; flex-shrink: 0; color: var(--verde); }
.resto-ubi a { color: var(--verde); text-decoration: none; font-weight: 800; }
.resto-ubi a:hover { text-decoration: underline; }
.resto-redes { display: flex; gap: 9px; margin-bottom: 18px; }
.resto-redes a, .resto-redes span {
  width: 34px; height: 34px; border-radius: 50%;
  border: 1px solid var(--line-fuerte); color: var(--verde);
  display: grid; place-items: center; text-decoration: none;
  transition: border-color .2s, background .2s, color .2s;
}
.resto-redes a:hover { border-color: var(--verde); background: var(--verde-tint); }
.resto-redes svg { width: 16px; height: 16px; }

/* puntaje y "ver ficha" en la tarjeta */
.resto-puntaje { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
.estrellas { color: var(--estrella); font-size: 14px; letter-spacing: 1px; }
.resto-puntaje b { font-size: 14.5px; color: var(--ink); font-weight: 800; }
.resto-puntaje span { font-size: 13px; color: var(--muted); }
.resto.clicable, .casa.clicable { cursor: pointer; }
.resto-vermas {
  display: inline-flex; align-items: center; gap: 6px; margin-bottom: 14px;
  font-size: 14.5px; color: var(--verde); font-weight: 800; text-decoration: none;
}
.resto.clicable:hover .resto-vermas, .resto-vermas:hover { color: var(--verde-osc); }
.resto-detalle { display: none; }

/* variantes genéricas de logo para tarjetas de listado (mismo criterio que .bus-card-foto/.ficha-foto) */
.resto-foto.logo-azul { background: #1B3E93; }
.resto-foto.logo-blanco { background: #ffffff; }
.resto-foto.logo-azul img, .resto-foto.logo-blanco img { object-fit: contain; padding: 20px; }
.resto:hover .resto-foto.logo-azul img, .resto:hover .resto-foto.logo-blanco img { transform: none; }

/* ventana de ficha */
.modal { position: fixed; inset: 0; z-index: 200; display: none; }
.modal.abierto { display: block; }
.modal-fondo { position: absolute; inset: 0; background: rgba(11,28,18,.55); }
.modal-caja {
  position: relative; z-index: 2; width: min(880px, calc(100% - 40px));
  margin: 40px auto; background: var(--card);
  border: 1px solid var(--line); border-radius: 20px; box-shadow: var(--sombra-lg);
  max-height: calc(100vh - 80px); overflow-y: auto;
}
.modal-cerrar {
  position: absolute; top: 16px; right: 16px; z-index: 5;
  width: 42px; height: 42px; border-radius: 50%;
  background: #fff; border: 1px solid var(--line-fuerte);
  color: var(--ink); font-size: 22px; line-height: 1; cursor: pointer;
  display: grid; place-items: center; transition: background .2s, border-color .2s, color .2s; box-shadow: var(--sombra-sm);
}
.modal-cerrar:hover { background: var(--verde); border-color: var(--verde); color: #fff; }
.modal-foto { aspect-ratio: 16/8; overflow: hidden; border-radius: 20px 20px 0 0; }
.modal-foto img { width: 100%; height: 100%; object-fit: cover; }
.modal-cuerpo { padding: 30px 32px 36px; }
.modal-cuerpo h2 { font-size: 28px; margin-bottom: 8px; }
.modal-desc { color: var(--muted); margin: 14px 0 20px; }
.modal-datos { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; margin-bottom: 24px; }
.modal-datos li { border-top: 1px solid var(--line); padding-top: 12px; }
.modal-datos b { display: block; font-size: 12px; letter-spacing: .04em; text-transform: uppercase; color: var(--verde); margin-bottom: 3px; font-weight: 800; }
.modal-datos span { font-size: 15px; color: var(--ink); }
.modal-galeria { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 28px; }
.modal-galeria img { aspect-ratio: 4/3; object-fit: cover; width: 100%; border-radius: 10px; }
.modal-titulin { font-size: 13px; letter-spacing: .04em; text-transform: uppercase; color: var(--verde); font-weight: 800; margin-bottom: 14px; }

/* aviso de precio en fechas festivas/feriados (casas de campo) */
.casa-nota-feriados {
  display: flex; align-items: center; gap: 10px;
  background: var(--verde-tint); border: 1px solid var(--verde-tint-2); color: var(--verde-osc);
  font-size: 14px; font-weight: 600; line-height: 1.4;
  padding: 12px 16px; border-radius: 12px; margin: 0 0 24px;
}
.casa-nota-feriados svg { flex-shrink: 0; }

/* reseñas */
.resumen-resenas { display: flex; align-items: center; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.resumen-nota { font-family: var(--serif); font-size: 40px; font-weight: 800; color: var(--verde); line-height: 1; }
.resenas { display: grid; gap: 14px; margin-bottom: 24px; }
.resena { border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; background: var(--bg-soft); }
.resena-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; flex-wrap: wrap; }
.resena-autor { font-weight: 800; font-size: 14.5px; color: var(--ink); }
.resena-fecha { font-size: 13px; color: var(--muted); }
.resena p { font-size: 14.5px; color: var(--muted); }
.nota-ejemplo { font-size: 13px; color: var(--muted); font-style: italic; margin-bottom: 16px; }
body.modal-abierto { overflow: hidden; }

/* filtros */
.filtros { display: flex; flex-wrap: wrap; gap: 10px; }
.filtro {
  background: #fff; border: 1.5px solid var(--line-fuerte);
  color: var(--ink); font-family: var(--sans);
  font-size: 14px; font-weight: 700; letter-spacing: 0;
  padding: 9px 18px; border-radius: 999px; cursor: pointer; transition: all .2s ease;
}
.filtro:hover { border-color: var(--verde); color: var(--verde); }
.filtro.is-active { background: var(--verde); border-color: var(--verde); color: #fff; }
.filtro:focus-visible { outline: 3px solid rgba(28,122,68,.4); outline-offset: 2px; }
.sin-resultados { text-align: center; color: var(--muted); padding: 40px 0; display: none; }

/* tarjeta "slot" (rubro por llenar) */
.resto.slot {
  align-items: center; justify-content: center; text-align: center;
  border: 2px dashed var(--line-fuerte); background: var(--bg-soft); box-shadow: none;
  padding: 32px 22px;
}
.resto.slot:hover { transform: none; box-shadow: none; border-color: var(--verde); background: var(--verde-tint); }
.slot-ico {
  width: 52px; height: 52px; border-radius: 50%; background: #fff;
  border: 1.5px solid var(--line-fuerte); color: var(--verde);
  display: grid; place-items: center; margin-bottom: 14px;
}
.slot-ico svg { width: 22px; height: 22px; }
.resto.slot:hover .slot-ico { border-color: var(--verde); }
.slot-rubro { font-family: var(--serif); font-weight: 800; font-size: 18px; color: var(--ink); margin-bottom: 6px; }
.resto.slot p { color: var(--muted); font-size: 14px; margin-bottom: 18px; max-width: 30ch; }
.resto.slot .btn { align-self: center; width: auto; }

/* banner "publica tu negocio" */
.cta-negocios {
  margin-top: 40px; padding: 34px 36px; border-radius: 20px;
  background: var(--verde-tint); border: 1px solid var(--verde-tint-2);
  display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap;
}
.cta-negocios h3 { font-size: 22px; margin-bottom: 6px; }
.cta-negocios p { color: var(--muted); max-width: 52ch; }
.cta-negocios .btn { flex-shrink: 0; }

/* ---------- agenda ---------- */
.agenda { padding: 90px 0; background: var(--bg-soft); }
.agenda-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.evento { border: 1px solid var(--line); border-radius: var(--radio); padding: 26px 24px; display: flex; gap: 18px; align-items: flex-start; background: var(--card); box-shadow: var(--sombra-sm); transition: box-shadow .2s, transform .2s; }
.evento:hover { box-shadow: var(--sombra-lg); transform: translateY(-4px); }
.evento-fecha { text-align: center; flex-shrink: 0; background: var(--verde-tint); border-radius: 12px; padding: 10px 14px; }
.evento-fecha b { font-family: var(--serif); font-weight: 800; font-size: 30px; color: var(--verde-osc); display: block; line-height: 1; }
.evento-fecha span { font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--verde); font-weight: 700; }
.evento-cat { font-size: 12.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--verde); font-weight: 800; margin-bottom: 6px; }
.evento h3 { font-size: 18px; margin-bottom: 6px; }
.evento p { font-size: 14px; color: var(--muted); }
.agenda-nota { margin-top: 34px; text-align: center; color: var(--muted); font-size: 14.5px; }
.agenda-nota a { color: var(--verde); font-weight: 800; text-decoration: none; }
.agenda-nota a:hover { text-decoration: underline; }

/* ---------- propietarios ---------- */
.owners { position: relative; padding: 110px 0; overflow: hidden; }
.owners img.fondo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.owners::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(11,28,18,.9) 0%, rgba(11,28,18,.55) 100%); }
.owners .wrap { position: relative; z-index: 2; }
.owners-cont { max-width: 560px; }
.owners .eyebrow { color: #eafff1; }
.owners .eyebrow::before { background: #eafff1; }
.owners h2 { font-family: var(--display); font-weight: 800; color: #fff; line-height: 1.12; letter-spacing: -.02em; font-size: clamp(28px, 3.6vw, 44px); margin: 14px 0 16px; }
.owners h2 em { font-style: italic; font-family: var(--acento-serif); font-weight: 400; font-size: 0.82em; line-height: 1; vertical-align: -0.03em; letter-spacing: 0; color: #8ff0b3; }
.owners p { color: rgba(255,255,255,.9); margin-bottom: 30px; }
.owners p b { color: #fff; }
.owners .hero-cta { gap: 14px; }

/* ---------- pie ---------- */
.pie { background: #0f1c14; color: rgba(255,255,255,.75); padding: 66px 0 40px; }
.pie-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 44px; margin-bottom: 44px; }
.pie h4 { font-size: 13px; letter-spacing: .06em; text-transform: uppercase; color: #fff; margin-bottom: 16px; font-weight: 800; }
.pie p, .pie a { font-size: 14.5px; color: rgba(255,255,255,.75); text-decoration: none; }
.pie a:hover { color: #8ff0b3; }
.pie-links { list-style: none; display: grid; gap: 9px; }
.pie .marca-nombre { font-size: 22px; color: #fff; }
.pie .marca-nombre b { color: #8ff0b3; }
.pie-linea {
  border-top: 1px solid rgba(255,255,255,.14); padding-top: 24px;
  display: flex; justify-content: space-between; gap: 18px; flex-wrap: wrap;
  font-size: 13px; color: rgba(255,255,255,.55);
}

/* ---------- novedades: intro con galería ---------- */
.novedades-intro { padding: 84px 0; background: var(--bg); }
.intro-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
.intro-texto .titulo-sec { margin-top: 14px; }
.intro-texto .btn { margin-top: 26px; }

.galeria {
  display: grid; grid-template-columns: 1fr 1fr;
  grid-template-rows: 50px 150px 50px 150px 50px; gap: 16px;
}
.galeria-celda {
  position: relative; overflow: hidden; border-radius: 14px;
  box-shadow: var(--sombra-md);
}
.galeria-celda img { width: 100%; height: 100%; object-fit: cover; }
.galeria-celda:nth-child(1) { grid-column: 2 / 3; grid-row: 1 / 3; }
.galeria-celda:nth-child(2) { grid-column: 1 / 2; grid-row: 2 / 4; }
.galeria-celda:nth-child(3) { grid-column: 1 / 2; grid-row: 4 / 6; }
.galeria-celda:nth-child(4) { grid-column: 2 / 3; grid-row: 3 / 5; }

/* aparición escalonada */
.stagger > * { opacity: 0; transform: translateY(12px); transition: opacity .6s ease, transform .6s ease; }
.stagger.visible > * { opacity: 1; transform: none; }
.stagger.visible > *:nth-child(1) { transition-delay: .05s; }
.stagger.visible > *:nth-child(2) { transition-delay: .18s; }
.stagger.visible > *:nth-child(3) { transition-delay: .3s; }
.stagger.visible > *:nth-child(4) { transition-delay: .42s; }
.stagger.visible > *:nth-child(5) { transition-delay: .54s; }

/* ---------- novedades: carrusel ---------- */
.nov-slide { display: none; }
.nov-slide.is-active { display: block; }
.nov-cat {
  display: inline-block; margin-bottom: 14px;
  background: var(--verde-tint); color: var(--verde-osc);
  font-size: 12.5px; font-weight: 800;
  letter-spacing: .02em;
  padding: 6px 14px; border-radius: 999px;
}
.novedad-fechas { list-style: none; margin: 22px 0 26px; display: grid; gap: 10px; }
.novedad-fechas li {
  display: flex; gap: 16px; align-items: baseline;
  border-left: 3px solid var(--verde-tint-2); padding-left: 14px;
}
.novedad-fechas b {
  font-family: var(--serif); font-weight: 700; font-size: 14.5px;
  color: var(--verde); min-width: 106px; flex-shrink: 0;
}
.novedad-fechas span { font-size: 14.5px; color: var(--muted); }

.nov-controles { display: flex; align-items: center; gap: 14px; margin-top: 28px; }
.nov-arrow {
  width: 46px; height: 46px; border-radius: 50%;
  background: #fff; border: 1px solid var(--line-fuerte);
  color: var(--verde); font-size: 22px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s, border-color .2s, color .2s, transform .2s; box-shadow: var(--sombra-sm);
}
.nov-arrow:hover { background: var(--verde); border-color: var(--verde); color: #fff; transform: translateY(-2px); }
.nov-arrow:focus-visible { outline: 3px solid rgba(28,122,68,.4); outline-offset: 2px; }
.nov-contador { font-size: 13.5px; color: var(--muted); font-weight: 700; }

/* ---------- novedades: lista ---------- */
.novedades-lista { padding: 20px 0 90px; background: var(--bg); }
.novedad-fila {
  display: grid; grid-template-columns: 130px 1fr auto; gap: 28px; align-items: center;
  padding: 28px 4px; border-top: 1px solid var(--line);
  transition: background .2s ease;
}
.novedad-fila:last-of-type { border-bottom: 1px solid var(--line); }
.novedad-fila:hover { background: var(--bg-soft); }
.novedad-cuando b { font-family: var(--serif); font-weight: 800; font-size: 22px; color: var(--verde); display: block; line-height: 1.1; }
.novedad-cuando span { font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.novedad-cat {
  display: inline-block; margin-bottom: 8px;
  background: var(--verde-tint); color: var(--verde-osc);
  font-size: 12px; font-weight: 800; letter-spacing: .02em;
  padding: 4px 12px; border-radius: 999px;
}
.novedad-txt h3 { font-size: 20px; margin-bottom: 6px; }
.novedad-txt p { font-size: 14.5px; color: var(--muted); max-width: 68ch; }
.novedad-fila .btn { padding: 11px 20px; font-size: 14px; white-space: nowrap; }

/* ---------- reveal ---------- */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity: 1; transform: none; }

/* ---------- botón flotante de WhatsApp ---------- */
.wa-flotante {
  position: fixed; right: 16px; bottom: 16px; z-index: 120;
  width: 58px; height: 58px; border-radius: 50%;
  background: var(--wsp); color: #fff;
  display: grid; place-items: center; text-decoration: none;
  box-shadow: 0 8px 22px rgba(31,168,85,.45);
  transition: transform .2s ease, box-shadow .2s ease;
}
.wa-flotante svg { width: 30px; height: 30px; }
.wa-flotante:hover { transform: scale(1.06); box-shadow: 0 10px 26px rgba(31,168,85,.5); }
.wa-flotante:active { transform: scale(.95); }
.wa-flotante:focus-visible { outline: 3px solid rgba(31,168,85,.45); outline-offset: 3px; }
/* en escritorio el header ya tiene "Reservar", el flotante es sobre todo para móvil */
@media (min-width: 961px) { .wa-flotante { display: none; } }

/* ---------- dock de navegación inferior (solo celular) ---------- */
.dock-movil { display: none; }
@media (max-width: 767px) {
  /* la fila de categorías del header pasa a vivir abajo, en el dock */
  .topcats { display: none; }
  body { padding-bottom: 111px; }
  /* el botón redondo de WhatsApp sube para no chocar con el dock */
  .wa-flotante { bottom: calc(84px + env(safe-area-inset-bottom)); }

  .dock-movil {
    display: flex; position: fixed; left: 12px; right: 12px;
    bottom: calc(6px + env(safe-area-inset-bottom)); z-index: 140;
    height: 63px; padding: 0 2px;
    background: rgba(255,255,255,.94);
    border: 1px solid rgba(21,94,52,.09);
    border-radius: 26px;
    box-shadow: 0 14px 32px -10px rgba(20,30,22,.24), 0 2px 10px rgba(20,30,22,.06);
    align-items: stretch; justify-content: space-between;
  }
  @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .dock-movil { background: rgba(255,255,255,.8); backdrop-filter: blur(18px) saturate(170%); -webkit-backdrop-filter: blur(18px) saturate(170%); }
  }
  .dock-item {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 4px; text-decoration: none; color: var(--muted);
    font-family: var(--sans); font-size: 10.5px; font-weight: 800; letter-spacing: -.01em;
    border-radius: 18px; transition: color .15s ease;
  }
  .dock-item svg { width: 20px; height: 20px; flex-shrink: 0; }
  .dock-item .punto { width: 4px; height: 4px; border-radius: 50%; background: var(--verde); opacity: 0; margin-top: -1px; }
  .dock-item.activo { color: var(--verde); }
  .dock-item.activo .punto { opacity: 1; }
  .dock-item:active { transform: scale(.94); }
}
@media (min-width: 768px) { .dock-movil { display: none !important; } }

/* feedback al tocar (móvil se siente como app) */
.btn:active { transform: scale(.98); }
.mejor-card:active, .resto:active, .casa:active, .evento:active, .cat-tab:active { transform: scale(.99); }

/* ---------- botón "conviértete en anfitrión" ---------- */
.btn-anfitrion {
  background: none; border: none; cursor: pointer; flex-shrink: 0;
  font-family: var(--sans); font-weight: 700; font-size: 14.5px; color: var(--ink);
  padding: 10px 14px; border-radius: 999px; white-space: nowrap;
  transition: background .2s ease, color .2s ease;
}
.btn-anfitrion:hover { background: var(--verde-tint); color: var(--verde-osc); }
.btn-anfitrion .anf-corto { display: none; }

/* ventana "¿qué te gustaría publicar?" */
.anfitrion-caja { width: min(760px, calc(100% - 40px)); }
.anfitrion-titulo { text-align: center; font-size: 26px; }
.anfitrion-sub { text-align: center; color: var(--muted); margin: 10px auto 26px; max-width: 46ch; }
.anfitrion-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.anfitrion-op {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px;
  padding: 28px 18px; border: 1.5px solid var(--line); border-radius: 16px;
  text-decoration: none; color: var(--ink);
  transition: border-color .2s ease, background .2s ease, transform .2s ease;
}
.anfitrion-op:hover { border-color: var(--verde); background: var(--verde-tint); transform: translateY(-3px); }
.anfitrion-op-ico { width: 54px; height: 54px; }
.anfitrion-op-ico svg, .anfitrion-op-ico img { width: 100%; height: 100%; object-fit: contain; display: block; }
.anfitrion-op b { font-size: 17px; }
.anfitrion-op small { color: var(--muted); font-size: 13px; font-weight: 500; }

/* ===========================================================
   RESPONSIVE
   =========================================================== */

/* header responsive: las pestañas pasan a una 2da fila deslizable */
@media (max-width: 1000px) {
  .topbar-in { flex-wrap: wrap; padding: 10px 20px; gap: 10px 8px; }
  .marca { order: 1; }
  .btn-anfitrion { order: 2; margin-left: auto; }
  .topbar-reservar { order: 3; margin-left: 0; }
  .topcats {
    order: 4; flex-basis: 100%; margin: 0 -20px; padding: 2px 20px;
    justify-content: flex-start; overflow-x: auto; scrollbar-width: none;
  }
  .topcats::-webkit-scrollbar { display: none; }
  .topcats .cat-tab { padding: 5px 12px 6px; font-size: 12px; }
  .topcats .cat-tab.activo::after { bottom: 2px; }
}

/* tablet */
@media (max-width: 960px) {
  .promesa-grid, .mejor-grid, .agenda-grid { grid-template-columns: 1fr 1fr; }
  .grid-resto { grid-template-columns: repeat(3, 1fr); gap: 14px; }
  .grid-casas > .casa { flex-basis: calc((100% - 26px) / 2); }
  .grid-exp { grid-template-columns: repeat(2, 1fr); }
  .rutas-flex, .destino-grid, .intro-grid, .complemento-caja { grid-template-columns: 1fr; gap: 40px; }
  .complemento-caja { gap: 0; }
  .complemento-foto { min-height: 220px; }
  .complemento-txt { padding: 34px 30px; }
  .destino-foto, .rutas-foto { aspect-ratio: 16/10; }
  .pie-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  .hero { min-height: auto; }
  .hero-cont { padding: 138px 24px 44px 84px; }
}

/* celular */
@media (max-width: 640px) {
  .wrap { padding: 0 20px; }
  .marca-sub { display: none; }
  html { scroll-padding-top: 170px; }
  .marca { gap: 8px; }
  .marca svg, .marca img { width: 30px; height: 30px; }
  .marca-nombre { font-size: 15px; }
  .topbar-in { padding: 10px 12px; gap: 8px 6px; }
  .topbar .btn { padding: 10px 15px; font-size: 13.5px; }

  .mejor, .destino, .promesa, .casas, .exps, .rutas, .agenda, .listado, .novedades-intro, .quees { padding: 56px 0; }
  .quees-grid { grid-template-columns: 1fr; gap: 26px; }
  .quees-head { margin-bottom: 34px; }
  .complemento { padding: 0 0 60px; }
  .banda, .owners { padding: 76px 0; }
  .pie { padding: 50px 0 34px; }

  .sec-head { margin-bottom: 30px; gap: 14px; }
  .mejor-head, .promesa-head { margin-bottom: 32px; }
  .intro-sec { font-size: 16px; }

  .btn { width: 100%; }
  .hero-cta { gap: 12px; width: 100%; }
  .hero-cta .btn { width: 100%; }
  .topbar-reservar { width: auto; padding: 8px 12px; font-size: 12.5px; }
  .btn-anfitrion { font-size: 12px; padding: 6px 8px; }
  .btn-anfitrion .anf-full { display: none; }
  .btn-anfitrion .anf-corto { display: inline; }
  .anfitrion-titulo { font-size: 22px; }
  .anfitrion-grid { grid-template-columns: 1fr; gap: 12px; }
  .anfitrion-op { flex-direction: row; text-align: left; gap: 14px; padding: 18px 18px; }
  .anfitrion-op-ico { width: 44px; height: 44px; flex-shrink: 0; }
  .anfitrion-op b { display: block; }

  /* hero móvil — compacto para que el buscador entre completo antes del dock inferior */
  .hero-cont { padding: 116px 20px 14px; }
  .hero h1 { font-size: clamp(25px, 7.2vw, 32px); margin: 8px 0 10px; line-height: 1.12; }
  .hero-sub { font-size: 14px; line-height: 1.4; margin-bottom: 12px; }
  .buscador-sec { margin-top: -34px; }
  .hero-datos-in { grid-template-columns: 1fr 1fr; gap: 18px 16px; padding: 20px; }
  .dato b { font-size: 24px; }

  .page-hero { min-height: 44vh; }
  .page-hero .wrap { padding-top: 172px; padding-bottom: 34px; }

  .agenda-grid, .promesa-grid { grid-template-columns: 1fr; gap: 18px; }
  /* explora Cieneguilla: carrusel horizontal (deslizar) en celular */
  .mejor-grid {
    display: flex; grid-template-columns: none;
    overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch; scrollbar-width: none;
    gap: 14px; padding-bottom: 10px;
  }
  .mejor-grid::-webkit-scrollbar { display: none; }
  .mejor-grid > .mejor-card { flex: 0 0 82%; scroll-snap-align: start; }
  /* experiencias: carrusel horizontal (deslizar) en celular */
  .grid-exp {
    display: flex; grid-template-columns: none;
    overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch; scrollbar-width: none;
    gap: 14px; padding-bottom: 10px;
  }
  .grid-exp::-webkit-scrollbar { display: none; }
  .grid-exp > .exp { flex: 0 0 60%; scroll-snap-align: start; }
  .grid-casas { gap: 14px; }
  .grid-casas > .casa { flex-basis: 84%; }
  /* las tarjetas de restaurantes/negocios en celular se rediseñaron aparte,
     ver "tarjetas de restaurantes/negocios en celular" más abajo */
  .exp { aspect-ratio: 3/4; }
  .casa-foto { aspect-ratio: 4/3.2; }

  /* los filtros se deslizan de lado */
  .filtros { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 8px; scrollbar-width: none; margin: 0 -20px; padding-left: 20px; padding-right: 20px; }
  .filtros::-webkit-scrollbar { display: none; }
  .filtro { flex: 0 0 auto; }

  .evento { padding: 20px 18px; gap: 14px; }
  .evento-fecha b { font-size: 26px; }
  .novedades-lista { padding: 0 0 60px; }
  .novedad-fila { grid-template-columns: 1fr; gap: 12px; padding: 22px 2px; }
  .novedad-fila .btn { width: auto; align-self: flex-start; }
  .modal-caja { width: calc(100% - 24px); margin: 20px auto; max-height: calc(100vh - 40px); border-radius: 16px; }
  .modal-foto { aspect-ratio: 16/10; border-radius: 16px 16px 0 0; }
  .modal-cuerpo { padding: 24px 22px 30px; }
  .modal-cuerpo h2 { font-size: 23px; }
  .modal-datos { grid-template-columns: 1fr; gap: 12px; }
  .modal-galeria { grid-template-columns: 1fr 1fr; }
  .resumen-nota { font-size: 34px; }
  .galeria { grid-template-rows: 40px 120px 40px 120px 40px; gap: 12px; }
  .destino-features { grid-template-columns: 1fr; gap: 16px; }
  .lista-rutas li { flex-direction: column; align-items: flex-start; gap: 4px; padding: 16px 2px; }
  .lista-rutas span { text-align: left; }
  .pie-grid { grid-template-columns: 1fr; gap: 30px; }
  .pie-linea { justify-content: center; text-align: center; }
}

/* ---------- hero de páginas internas (page-hero) en celular: compacto ----------
   Misma imagen y overlay de siempre, solo se reduce el espacio que ocupa el texto —
   afecta a cualquier página que use .page-hero (Experiencias, Casas, Novedades). En
   Restaurantes/Negocios el hero se oculta del todo en celular (ver bloque siguiente),
   así que ahí esta regla queda sin efecto visible. */
@media (max-width: 767px) {
  .page-hero { min-height: 0; }
  .page-hero .wrap { padding-top: 188px; padding-bottom: 53px; }
  .page-hero .eyebrow { font-size: 10.5px; gap: 7px; }
  .page-hero .eyebrow::before { width: 16px; }
  .page-hero h1 { font-size: clamp(32px, 10.2vw, 42px); margin: 6px 0 10px; line-height: 1.08; }
  .page-hero p {
    font-size: 14.5px; line-height: 1.42; max-width: 46ch;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
}

/* ---------- Restaurantes / Negocios en celular: sin hero, directo a buscar ----------
   :has(+ .listado) detecta el page-hero que viene justo antes de la sección .listado —
   .listado solo existe en restaurantes.html y negocios.html, así que esto no toca el
   hero de Experiencias/Casas/Novedades (que solo se compacta, ver bloque anterior). */
@media (max-width: 767px) {
  .page-hero:has(+ .listado) { display: none; }
  /* el header sigue fixed y ya no hay hero debajo empujando el contenido —
     hay que dejarle su propio espacio (~65px de alto) más un respiro */
  .listado { padding-top: 88px; }

  /* buscador de texto propio del listado (oculto en desktop) */
  .bus-listado-movil { display: block; margin-bottom: 10px; }
  .bus-listado-campo {
    display: flex; align-items: center; gap: 8px;
    background: #fff; border: 1px solid var(--line-fuerte); border-radius: 14px;
    padding: 12px 14px; box-shadow: var(--sombra-sm);
  }
  .bus-listado-campo svg { width: 18px; height: 18px; color: var(--muted); flex-shrink: 0; }
  .bus-listado-campo input {
    border: none; outline: none; flex: 1; min-width: 0;
    font-family: var(--sans); font-size: 13.5px; color: var(--ink); background: none;
  }
  .bus-listado-campo input::placeholder { color: #9aa39c; }

  /* título + contador + orden, entre los filtros y las tarjetas (oculto en desktop).
     align-items:flex-start (no flex-end): con el título más grande y el selector chico,
     alinearlos arriba se ve más ordenado que pegarlos por abajo. */
  .listado-titulo-movil { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin: 14px 0 10px; }
  .listado-titulo-movil > div { min-width: 0; }
  .listado-titulo-movil h2 { font-family: var(--display); font-weight: 800; font-size: 23px; line-height: 1.15; color: var(--ink); margin: 0; }
  .listado-titulo-movil p { font-family: var(--sans); font-size: 12.5px; color: var(--muted); margin: 3px 0 0; }
  .listado-orden { flex-shrink: 0; margin-top: 2px; }
  .listado-orden select {
    -webkit-appearance: none; appearance: none;
    border: 1px solid var(--line-fuerte); border-radius: 999px; background: #fff;
    font-family: var(--sans); font-size: 10.5px; font-weight: 700; color: var(--ink);
    padding: 5px 20px 5px 10px; max-width: 96px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2358685e' stroke-width='2'><path d='m6 9 6 6 6-6'/></svg>");
    background-repeat: no-repeat; background-position: right 6px center; background-size: 11px;
  }
}

/* ---------- tarjetas de restaurantes/negocios en celular: HORIZONTALES (foto izq. + info der.) ----------
   (también alcanza a las tarjetas de "también te puede interesar" de una ficha, porque
   reutilizan el mismo componente .grid-resto/.resto — no hay lógica duplicada)
   Objetivo: 3-4 establecimientos visibles a la vez, tarjeta baja tipo directorio, no un
   catálogo de tarjetas grandes con foto arriba. */
@media (max-width: 767px) {
  .grid-resto { grid-template-columns: 1fr; gap: 12px; margin-top: 4px; }
  .grid-resto > .resto {
    display: grid; grid-template-columns: 35% 65%; align-items: stretch;
    height: 164px; /* misma altura para todas — el contenido se acomoda adentro, no al revés */
    border-radius: 15px; border: 1px solid #edf1ee; box-shadow: 0 1px 3px rgba(20,30,22,.035);
  }
  .grid-resto .resto-foto { aspect-ratio: auto; width: 100%; height: 100%; }
  .grid-resto .resto-foto img { object-position: center 35%; } /* que no corte logos/fachadas por arriba */
  /* Dmario: la tarjeta usa fotoTarjeta (fotos/dmario-1-tarjeta.jpg), un recorte compuesto
     armado a mano (follaje real arriba + letrero + follaje y farol reales abajo) para que el
     letrero "Dmario" quede centrado y legible en esta columna angosta — no la foto panorámica
     de la ficha. "cover" a pantalla completa, sin bordes ni fondo de color: se ve igual de
     pulida que el resto de tarjetas. */
  /* la categoría se muestra como texto dentro de la info (ver .resto-cat-chico), no
     como pill flotante sobre la foto — evita duplicar el mismo dato dos veces */
  .grid-resto .resto-tipo { display: none; }
  .grid-resto .resto-wsp-mini { display: none; } /* el contacto por WhatsApp queda para la ficha */
  .grid-resto .resto-body { padding: 0 10px; justify-content: center; overflow: hidden; }
  /* align-self: sin esto el <p> hereda el "stretch" de .resto-body (columna) y el pill
     termina ocupando todo el ancho como una barra, en vez de solo el ancho del texto */
  .grid-resto .resto-cat-chico {
    display: inline-block; align-self: flex-start; font-size: 11px; font-weight: 700; letter-spacing: .01em;
    color: var(--verde-osc); background: var(--verde-tint); border-radius: 999px;
    padding: 2px 9px; margin: 0 0 5px;
  }
  /* nombre a una sola línea — con puntos suspensivos si no entra — para que todas
     las tarjetas midan lo mismo sin importar qué tan largo sea cada nombre */
  .grid-resto .resto-body h3 {
    font-size: 16px; font-weight: 700; line-height: 1.2; margin-bottom: 4px;
    display: flex; align-items: center; gap: 5px; flex-wrap: nowrap;
  }
  .grid-resto .resto-body h3 a {
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
  }
  /* badges (Eco / sedes) chicos y discretos — no deben competir con el nombre */
  .grid-resto .eco-badge { font-size: 9px; padding: 1px 6px; flex-shrink: 0; }
  .grid-resto .resto-sedes { font-size: 9px; padding: 1px 6px; flex-shrink: 0; margin-left: 0; }
  .grid-resto .resto-body p { font-size: 13.5px; line-height: 1.32; margin-bottom: 7px; -webkit-line-clamp: 2; }
  /* ubicación y "Ver detalles" en la misma línea. max-width + elipsis como tope duro en
     ambas: así, sin importar la fuente/dispositivo, la fila nunca puede crecer más allá
     de lo medido con getBoundingClientRect() y chocar con el botón flotante de WhatsApp —
     en el peor caso (texto muy largo) se recorta con "…" en vez de encimarse. */
  .grid-resto .resto-pie { display: flex; align-items: center; gap: 4px; }
  .grid-resto .resto-ubi { display: flex; flex-wrap: nowrap; font-size: 13px; gap: 3px; margin: 0; white-space: nowrap; flex-shrink: 0; max-width: 94px; overflow: hidden; text-overflow: ellipsis; }
  .grid-resto .resto-ubi svg { width: 12px; height: 12px; flex-shrink: 0; }
  /* max-width + elipsis como tope duro: garantiza que nunca invada la zona del botón de
     WhatsApp sin importar variaciones de fuente/dispositivo, en vez de depender de que
     el texto mida "por suerte" lo mismo en todos lados */
  .grid-resto .resto-vermas {
    font-size: 13px; font-weight: 700; margin-bottom: 0; flex-shrink: 0;
    white-space: nowrap; max-width: 88px; overflow: hidden; text-overflow: ellipsis;
  }

  /* el flotante de WhatsApp: más chico y más pegado al borde, para invadir lo menos
     posible el espacio de las tarjetas más densas */
  .wa-flotante { width: 48px; height: 48px; right: 10px; }
  .wa-flotante svg { width: 25px; height: 25px; }
}

/* ============ Página "Para tu negocio" (unete) ============ */
.bloque { padding: 72px 0; }
.bloque.suave { background: #f6faf7; }
.bloque-head { text-align: center; max-width: 660px; margin: 0 auto; }
.bloque-head .intro-sec { margin: 12px auto 0; }

/* 3 pasos */
.pasos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 34px; }
.paso { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 30px 26px; box-shadow: var(--sombra-sm); }
.paso-num { width: 46px; height: 46px; border-radius: 50%; background: var(--verde); color: #fff; font-weight: 800; font-family: 'Poppins', sans-serif; display: flex; align-items: center; justify-content: center; font-size: 20px; margin-bottom: 16px; }
.paso h3 { font-family: 'Poppins', sans-serif; font-size: 19px; margin: 0 0 8px; color: var(--ink); }
.paso p { margin: 0; color: #5b6b60; }

/* planes */
.planes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 36px; align-items: stretch; }
.plan { background: #fff; border: 1px solid var(--line); border-radius: 20px; padding: 30px 26px; box-shadow: var(--sombra-sm); display: flex; flex-direction: column; }
.plan.destacado { border: 2px solid var(--verde); box-shadow: var(--sombra-lg); transform: translateY(-8px); }
.plan-badge { align-self: flex-start; background: var(--verde); color: #fff; font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; padding: 5px 12px; border-radius: 999px; margin-bottom: 14px; }
.plan-nombre { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 22px; margin: 0; color: var(--ink); }
.plan-precio { font-family: 'Poppins', sans-serif; font-weight: 800; font-size: 42px; color: var(--verde); line-height: 1; margin: 12px 0 0; }
.plan-precio small { font-size: 16px; font-weight: 600; color: #7a8a80; }
.plan-lanza { font-size: 13.5px; color: #d9822b; font-weight: 700; margin: 8px 0 0; }
.plan-lista { list-style: none; padding: 0; margin: 22px 0; display: grid; gap: 12px; flex: 1; }
.plan-lista li { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; color: #3f4b44; line-height: 1.45; }
.plan-lista li svg { flex-shrink: 0; width: 20px; height: 20px; color: var(--verde); margin-top: 1px; }
.plan .btn { width: 100%; justify-content: center; }
.plan-nota { text-align: center; color: #5b6b60; margin: 26px auto 0; max-width: 60ch; font-size: 14.5px; }

/* CTA final: reutiliza .anfitrion-grid / .anfitrion-op del modal */
.unete-cta .anfitrion-grid { max-width: 720px; margin: 30px auto 0; }

@media (max-width: 860px) {
  .pasos, .planes { grid-template-columns: 1fr; }
  .plan.destacado { transform: none; }
}

/* --- interruptor Mensual/Anual + tarjetas de plan estilo pro --- */
.plan-switch { display: flex; justify-content: center; margin-top: 28px; }
.plan-switch-in { display: inline-flex; background: #eaf3ec; border: 1px solid var(--line); border-radius: 999px; padding: 5px; gap: 4px; }
.ps-opt { border: none; background: transparent; cursor: pointer; font-family: 'Poppins', sans-serif; font-weight: 600; font-size: 15px; color: #5b6b60; padding: 10px 22px; border-radius: 999px; display: inline-flex; align-items: center; gap: 8px; transition: background .25s, color .25s; }
.ps-opt.is-active { background: var(--verde); color: #fff; box-shadow: 0 2px 8px rgba(28,122,68,.3); }
.ps-save { font-size: 11px; font-weight: 700; background: #fff; color: var(--verde); padding: 2px 8px; border-radius: 999px; }
.ps-opt.is-active .ps-save { background: #fff; color: var(--verde-osc); }

.plan.destacado { background: #f4fbf6; }
.plan-desc { color: #5b6b60; font-size: 14.5px; margin: 8px 0 0; min-height: 42px; line-height: 1.45; }
.plan-precio-wrap { display: flex; align-items: baseline; gap: 3px; margin: 16px 0 0; font-family: 'Poppins', sans-serif; }
.plan-moneda { font-size: 26px; font-weight: 800; color: var(--verde); }
.plan-precio { font-size: 46px; font-weight: 800; color: var(--verde); line-height: 1; margin: 0; }
.plan-periodo { font-size: 16px; font-weight: 600; color: #7a8a80; }
.plan-incluye-tit { font-family: 'Poppins', sans-serif; font-weight: 600; font-size: 14.5px; color: var(--ink); margin: 20px 0 0; padding-top: 18px; border-top: 1px solid var(--line); }
.plan-lista { margin: 14px 0 22px; }
.plan-lista li svg { width: 22px; height: 22px; padding: 3px; border-radius: 50%; background: var(--verde-tint); color: var(--verde); }

/* palabra del título dentro de un recuadro punteado (estilo referencia) */
.em-caja { font-style: normal; color: var(--verde); border: 2px dashed var(--verde); background: var(--verde-tint); padding: 0.02em 0.34em 0.08em; border-radius: 16px; display: inline-block; line-height: 1.1; }

/* precio "antes" tachado (prueba gratis) */
.plan-antes { font-family: 'Poppins', sans-serif; font-size: 18px; font-weight: 600; color: #9aa8a0; margin: 14px 0 0; }
.plan-antes s { color: #9aa8a0; }
.plan-antes + .plan-precio-wrap { margin-top: 2px; }

/* resaltado dinámico: el plan bajo el cursor toma el estilo verde */
.plan { transition: border-color .25s ease, background .25s ease, box-shadow .25s ease, transform .25s ease; }
@media (hover: hover) {
  .planes:hover .plan { border: 1px solid var(--line); background: #fff; box-shadow: var(--sombra-sm); transform: none; }
  .planes:hover .plan:hover { border: 2px solid var(--verde); background: #f4fbf6; box-shadow: var(--sombra-lg); transform: translateY(-8px); }
}

/* insignias Eco (plata) y Eco+ (dorado) */
.eco-badge { display: inline-flex; align-items: center; vertical-align: middle; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 12px; padding: 2px 9px; border-radius: 999px; line-height: 1.5; white-space: nowrap; }
.eco-badge.plata { background: linear-gradient(180deg, #eef1f4, #c4ced6); color: #48545f; border: 1px solid #b9c4cd; }
.eco-badge.oro { background: linear-gradient(180deg, #f7d98d, #e0a83a); color: #5b3d06; border: 1px solid #d79f34; }

/* sedes de un negocio (pestañas dentro de la ficha) */
.sedes { margin-top: 4px; }
.sedes-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.sede-tab { border: 1px solid var(--line); background: #fff; color: var(--ink); font-family: 'Poppins', sans-serif; font-weight: 600; font-size: 14px; padding: 8px 16px; border-radius: 999px; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.sede-tab:hover { border-color: var(--verde); color: var(--verde); }
.sede-tab.is-active { background: var(--verde); color: #fff; border-color: var(--verde); }
.sede-panel { display: none; }
.sede-panel.is-active { display: block; }
.sede-info { color: #5b6b60; font-size: 14.5px; margin: 0 0 12px; }
.sede-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.sede-tag { font-family: 'Nunito Sans', sans-serif; font-size: 13px; font-weight: 600; background: #eef4ef; color: #3f4b44; border: 1px solid var(--line); padding: 5px 11px; border-radius: 999px; white-space: nowrap; }
.sede-tag.destacado { background: var(--verde-tint); color: var(--verde-osc); border-color: var(--verde-tint-2); }
.sede-ubi { display: flex; align-items: center; gap: 7px; margin: 0 0 16px; font-size: 14px; }
.sede-ubi svg { width: 18px; height: 18px; color: var(--verde); flex-shrink: 0; }
.sede-ubi a { color: var(--verde); font-weight: 700; }

/* estado "aún sin reseñas" (honesto, sin reseñas falsas) */
.sin-resenas { color: #6b7a70; font-size: 14.5px; background: #f6faf7; border: 1px dashed var(--line-fuerte); border-radius: 12px 12px 0 0; padding: 16px 18px; margin: 18px 0 0; text-align: center; }
.btn-resena { display: flex; width: 100%; justify-content: center; border-radius: 0 0 12px 12px; }

/* estado "sé el primero" (categoría aún sin negocios reales) */
.empty-invite { text-align: center; max-width: 580px; margin: 44px auto; background: #fff; border: 1px solid var(--line); border-radius: 20px; box-shadow: var(--sombra-sm); padding: 50px 30px; }
.empty-invite-ico { font-size: 52px; line-height: 1; margin-bottom: 12px; }
.empty-invite h2 { margin: 0 0 12px; }
.empty-invite p { color: #5b6b60; margin: 0 auto 26px; max-width: 46ch; }

/* etiqueta "3 sedes" en la tarjeta */
.resto-sedes { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 700; background: var(--verde-tint); color: var(--verde-osc); padding: 2px 9px; border-radius: 999px; margin-left: 6px; vertical-align: middle; white-space: nowrap; }
.sede-proximamente { background: #f6faf7; border: 1px dashed var(--line-fuerte); border-radius: 14px; padding: 34px 20px; text-align: center; color: #5b6b60; font-size: 15px; }
.sede-proximamente span { font-size: 34px; display: block; margin-bottom: 8px; }

/* beneficios en 4 columnas (solo página de negocio) */
.quees-4 { grid-template-columns: repeat(4, 1fr); gap: 22px; }
@media (max-width: 980px) { .quees-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .quees-4 { grid-template-columns: 1fr; } }

/* ============ Ficha individual de restaurante / negocio (página propia) ============ */
.migas { padding: 18px 0 0; font-size: 13.5px; color: var(--muted); }
.migas a { color: var(--muted); text-decoration: none; }
.migas a:hover { color: var(--verde); text-decoration: underline; }
.migas span[aria-hidden] { margin: 0 6px; color: var(--line-fuerte); }
.migas .actual { color: var(--ink); font-weight: 700; }

.ficha { padding: 108px 0 84px; background: var(--bg); }
@media (max-width: 700px) { .ficha { padding-top: 92px; } }
.ficha-cabeza { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; flex-wrap: wrap; margin: 18px 0 22px; }
.ficha-cabeza h1 { font-size: clamp(26px, 4vw, 36px); margin: 0; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ficha-tipo { color: var(--muted); font-size: 15px; margin-top: 6px; }
.ficha-verificado { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 700; color: var(--verde-osc); background: var(--verde-tint); border: 1px solid var(--verde-tint-2); padding: 5px 12px; border-radius: 999px; margin-top: 10px; }
.ficha-verificado-info { border: none; background: none; color: var(--verde-osc); font-size: 15px; line-height: 1; cursor: pointer; padding: 0 0 0 2px; }
.ficha-verificado-explicacion { display: none; font-size: 13.5px; color: var(--muted); margin: 8px 0 0; max-width: 52ch; }
.ficha-verificado-explicacion.abierta { display: block; }

/* fila de acciones Guardar/Compartir junto al título */
.ficha-header-acciones { display: flex; gap: 10px; flex-shrink: 0; }
.ficha-guardar, .ficha-compartir {
  display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--line-fuerte); background: #fff; color: var(--ink);
  font-family: 'Nunito Sans', sans-serif; font-weight: 700; font-size: 13.5px;
  padding: 9px 15px; border-radius: 999px; cursor: pointer; transition: border-color .18s, color .18s, background .18s;
}
.ficha-guardar:hover, .ficha-compartir:hover { border-color: var(--verde); color: var(--verde); }
/* foco visible para quien navega con teclado — mismo estilo que ya usa .wa-flotante.
   Solo aparece con :focus-visible (teclado), no al tocar/clickear, así no cambia el aspecto. */
.ficha-guardar:focus-visible, .ficha-compartir:focus-visible,
.ficha-topbar-atras:focus-visible, .ficha-verificado-info:focus-visible,
.ficha-desc-toggle:focus-visible, .ficha-vertodas:focus-visible,
.resto-redes a:focus-visible, .wa-flotante-movil a:focus-visible {
  outline: 3px solid rgba(31,168,85,.45); outline-offset: 3px;
}
/* aviso "Enlace copiado" como tooltip flotante — funciona igual para el botón de texto
   (cabecera) y el botón de solo ícono (header móvil), sin tocar el innerHTML de ninguno */
.ficha-compartir { position: relative; }
.ficha-compartir.copiado::after {
  content: "✓ Enlace copiado"; position: absolute; bottom: calc(100% + 8px); left: 50%;
  transform: translateX(-50%); background: var(--ink); color: #fff;
  font-family: var(--sans); font-size: 12px; font-weight: 700; white-space: nowrap;
  padding: 6px 11px; border-radius: 8px; box-shadow: 0 4px 14px rgba(0,0,0,.2); pointer-events: none;
}
/* el botón de Compartir del header móvil está pegado arriba del todo (fixed, top:0) — un
   tooltip hacia arriba quedaría cortado por el borde de la pantalla, así que ahí va hacia abajo */
.ficha-topbar-acciones .ficha-compartir.copiado::after { bottom: auto; top: calc(100% + 8px); }
.ficha-guardar .ico { font-size: 16px; line-height: 1; }
.ficha-guardar[aria-pressed="true"] { color: #d1364a; border-color: #f1c3cb; background: #fff5f6; }
.ficha-guardar[aria-pressed="true"] .ico { color: #d1364a; }

/* galería protagonista estilo Airbnb: 1 foto grande + hasta 4 miniaturas */
.ficha-galeria { position: relative; margin-bottom: 8px; }
.ficha-galeria-hero {
  display: grid; grid-template-columns: 1.6fr 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 8px;
  height: 440px; border-radius: var(--radio); overflow: hidden; box-shadow: var(--sombra-md);
}
.ficha-galeria-hero img { width: 100%; height: 100%; object-fit: cover; display: block; cursor: zoom-in; transition: transform .35s ease; }
.ficha-galeria-hero img:hover { transform: scale(1.03); }
.ficha-galeria-hero img:first-child { grid-row: 1 / 3; }
.ficha-galeria-hero[data-fotos="1"] { grid-template-columns: 1fr; }
.ficha-galeria-hero[data-fotos="2"] img:first-child { grid-row: 1 / 3; }
.ficha-galeria-hero[data-fotos="2"] { grid-template-columns: 1.6fr 1fr; }
.ficha-galeria-hero[data-fotos="3"] { grid-template-columns: 1.6fr 1fr; }
.ficha-vertodas {
  position: absolute; right: 14px; bottom: 14px; z-index: 2;
  background: #fff; border: 1.5px solid var(--ink); color: var(--ink);
  font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 13.5px;
  padding: 9px 16px; border-radius: 10px; cursor: pointer; box-shadow: var(--sombra-sm);
}
.ficha-vertodas:hover { background: var(--verde-tint); }
@media (max-width: 860px) {
  .ficha-galeria-hero { grid-template-columns: 1fr; grid-template-rows: none; height: auto; display: flex; overflow-x: auto; scroll-snap-type: x mandatory; border-radius: 16px; }
  .ficha-galeria-hero img { flex: 0 0 100%; scroll-snap-align: start; aspect-ratio: 4/3; height: auto; }
  .ficha-galeria-hero img:first-child { grid-row: auto; }
  .ficha-vertodas { right: 12px; bottom: 12px; }
}

/* bloques genéricos de contenido (Sobre, Aspectos destacados, Servicios, Horarios, Ubicación, Contacto, Reseñas) */
.ficha-bloque { padding: 26px 0; border-top: 1px solid var(--line); }
.ficha-bloque:first-of-type { border-top: none; padding-top: 6px; }
.ficha-subtitulo { font-family: 'Poppins', sans-serif; font-weight: 800; font-size: 19px; color: var(--ink); margin: 0 0 16px; }
/* tamaño base del icono de Horarios/Redes SIN media query — un <svg> sin width/height propio
   puede estirarse a ocupar todo el ancho disponible si nada lo acota (bug real, visto en
   escritorio antes de esta regla). El resto de estilos mobile-only de esto vive más abajo. */
.ficha-subtitulo-ico { display: flex; align-items: center; gap: 7px; }
.ficha-subtitulo-ico .ico { display: flex; color: var(--verde); flex-shrink: 0; }
.ficha-subtitulo-ico .ico svg { width: 17px; height: 17px; }

/* aspectos destacados */
.ficha-destacados { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px 28px; }
.ficha-destacado { display: flex; align-items: flex-start; gap: 12px; }
.ficha-destacado .ficha-destacado-ico { font-size: 22px; line-height: 1.3; flex-shrink: 0; }
.ficha-destacado b { display: block; font-size: 12px; letter-spacing: .04em; text-transform: uppercase; color: var(--verde); margin-bottom: 3px; font-weight: 800; }
.ficha-destacado span:not(.ficha-destacado-ico) { font-size: 15px; color: var(--ink); }
@media (max-width: 700px) { .ficha-destacados { grid-template-columns: 1fr; } }

/* chips de servicios / qué encontrarás */
.ficha-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.ficha-chip { background: var(--verde-tint); color: var(--verde-osc); border: 1px solid var(--verde-tint-2); font-weight: 700; font-size: 13.5px; padding: 8px 16px; border-radius: 999px; }

.ficha-horario { font-size: 15.5px; color: var(--ink); }
/* en escritorio el horario se sigue leyendo en UNA línea con "·" entre partes, igual que
   antes de partirlo en <span>; el corte en varias líneas es solo de la vista móvil */
.ficha-horario-linea, .ficha-horario-nota { display: inline; }
.ficha-horario-linea:not(:first-child)::before { content: "· "; }
.ficha-horario-nota::before { content: " "; }
.ficha-zona { display: flex; align-items: center; gap: 8px; font-size: 15.5px; color: var(--ink); }
.ficha-zona svg { width: 20px; height: 20px; color: var(--verde); flex-shrink: 0; }

/* mapa grande, integrado, tipo Airbnb */
.ficha-mapa-bloque { margin-top: 4px; }
.ficha-mapa { border-radius: var(--radio); overflow: hidden; box-shadow: var(--sombra-md); border: 1px solid var(--line); }
.ficha-mapa iframe { display: block; }
.ficha-mapa-btn { margin-top: 14px; }

/* reseñas: discreto, sin protagonismo */
.ficha-resenas { padding-bottom: 8px; }
.ficha-resenas-vacio { font-size: 14px; color: var(--muted); }
.ficha-resenas-vacio a { color: var(--verde); font-weight: 700; text-decoration: none; }
.ficha-resenas-vacio a:hover { text-decoration: underline; }

.ficha-acciones { display: flex; flex-wrap: wrap; gap: 12px; }

.ficha-relacionados { padding: 60px 0 0; }
.ficha-volver { margin: 40px 0 0; }

/* botón redondo de WhatsApp fijo, solo en móvil, dentro de fichas individuales — mismo
   patrón visual que el .wa-flotante genérico del resto del sitio (no una barra ancha que
   tape contenido). Va un poco más arriba que ese para no chocar con el dock de navegación. */
.wa-flotante-movil { display: none; }
@media (max-width: 700px) {
  .wa-flotante-movil {
    display: flex; position: fixed; right: 16px; bottom: calc(84px + env(safe-area-inset-bottom));
    z-index: 40; width: 56px; height: 56px; border-radius: 50%;
    box-shadow: 0 8px 22px rgba(31,168,85,.45);
  }
  .wa-flotante-movil a, .wa-flotante-movil span {
    display: grid; place-items: center; width: 100%; height: 100%; border-radius: 50%;
    background: var(--wsp); color: #fff; text-decoration: none;
  }
  .wa-flotante-movil span[aria-disabled] { background: #9aa39c; }
  .wa-flotante-movil svg { width: 27px; height: 27px; }
  body.tiene-wa-flotante { padding-bottom: 111px; }
  body.tiene-wa-flotante .wa-flotante { display: none; }
}

/* ============ Rediseño móvil de la ficha individual (header app, galería con
   contador, "Mostrar más", relacionados en carrusel) — SOLO body.pagina-ficha,
   SOLO móvil. Escritorio sigue exactamente igual (topbar normal, cabeza antes
   de galería, sin CTA fijo de 2 botones). ============ */

/* header tipo app: atrás / compartir / guardar, flotando SOBRE la foto (como Airbnb) —
   círculos translúcidos, sin barra ni texto de marca. Reutiliza .ficha-guardar y
   .ficha-compartir (mismas clases y data-attributes que los de .ficha-cabeza) para
   que el JS delegado ya existente funcione sin cambios en ambos botones a la vez. */
body.pagina-ficha .ficha-topbar-app { align-items: center; }
/* 44x44 es el mínimo táctil recomendado (antes estaban en 40x40) */
body.pagina-ficha .ficha-topbar-atras,
body.pagina-ficha .ficha-topbar-acciones .ficha-guardar,
body.pagina-ficha .ficha-topbar-acciones .ficha-compartir {
  display: flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%; flex-shrink: 0;
  border: none; background: rgba(255,255,255,.92); color: var(--ink);
  box-shadow: 0 2px 8px rgba(0,0,0,.18); padding: 0; transition: transform .15s;
}
body.pagina-ficha .ficha-topbar-atras svg,
body.pagina-ficha .ficha-topbar-acciones .ico svg { width: 19px; height: 19px; }
body.pagina-ficha .ficha-topbar-atras:active,
body.pagina-ficha .ficha-topbar-acciones .ficha-guardar:active,
body.pagina-ficha .ficha-topbar-acciones .ficha-compartir:active { transform: scale(.92); }
body.pagina-ficha .ficha-topbar-acciones .ficha-guardar[aria-pressed="true"] svg { fill: #d1364a; color: #d1364a; }
body.pagina-ficha .ficha-topbar-acciones { display: flex; gap: 10px; margin-left: auto; }

/* .ficha-intro: flex-column en TODOS los anchos (igual que el stacking normal por default,
   cero cambio visual) — sirve solo para poder reordenar galería antes que cabeza en móvil
   con "order", sin tocar el orden real del HTML (que sigue siendo cabeza→galería siempre). */
.ficha-intro { display: flex; flex-direction: column; }
@media (max-width: 767px) {
  .ficha-intro .ficha-galeria { order: -1; }
}

@media (max-width: 767px) {
  body.pagina-ficha #topbar, body.pagina-ficha .migas { display: none; }
  /* Guardar/Compartir ya viven en el header compacto de arriba — no duplicar en el cuerpo */
  body.pagina-ficha .ficha-cabeza .ficha-header-acciones { display: none; }
  /* la galería va de borde a borde (sin el margen lateral de .wrap ni radio de borde) y
     los botones de atrás/compartir/guardar flotan encima, absolutos — se van con la foto
     al hacer scroll (no quedan fijos), igual que en la ficha de Airbnb */
  body.pagina-ficha .ficha { padding-top: 0; }
  body.pagina-ficha .ficha-galeria { position: relative; margin: 0 -20px 8px; }
  body.pagina-ficha .ficha-galeria-hero, body.pagina-ficha .ficha-galeria-hero img { border-radius: 0; }
  body.pagina-ficha .ficha-topbar-app {
    display: flex; position: absolute; top: 0; left: 0; right: 0; z-index: 3;
    padding: 14px; padding-top: calc(14px + env(safe-area-inset-top));
  }
  /* Aspectos destacados: lista simple (ícono + texto), sin tarjetas ni fondo de color —
     como en Airbnb. El verde corporativo queda solo para acciones/estados activos. */
  body.pagina-ficha .ficha-destacados { gap: 20px; }
  body.pagina-ficha .ficha-destacado { gap: 14px; align-items: flex-start; }
  /* chips de "Qué encontrarás": una fila deslizable si no caben, en vez de saltar de línea */
  body.pagina-ficha .ficha-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 -20px; padding: 2px 20px; }
  body.pagina-ficha .ficha-chips::-webkit-scrollbar { display: none; }
  body.pagina-ficha .ficha-chip { flex-shrink: 0; }
  body.pagina-ficha .ficha-mapa { border-radius: 16px; }
  /* dock inferior con menos protagonismo que el CTA fijo, solo en la ficha */
  body.pagina-ficha .dock-movil { transform: scale(.94); opacity: .88; }

  /* tipografía más chica y compacta en general — se sentía "grande y suelto" comparado con
     el tamaño de letra de apps tipo Airbnb, que es chico pero prolijo. Solo tamaño/espaciado,
     nunca legibilidad: nada baja de 13px. */
  body.pagina-ficha .ficha-cabeza h1 { font-size: 22px; }
  body.pagina-ficha .ficha-tipo { font-size: 13.5px; margin-top: 4px; }
  body.pagina-ficha .ficha-verificado { font-size: 12px; padding: 4px 10px; margin-top: 8px; }
  body.pagina-ficha .ficha-bloque { padding: 18px 0; }
  body.pagina-ficha .ficha-subtitulo { font-size: 16px; font-weight: 700; margin-bottom: 10px; }
  body.pagina-ficha .modal-desc, body.pagina-ficha .ficha-desc-texto { font-size: 14px; line-height: 1.5; margin: 0; }
  /* ".ficha-destacado .ficha-destacado-ico" (no solo ".ficha-destacado-ico") a propósito:
     el ícono también es un <span>, y la regla genérica "span" de abajo (2 clases + 2
     elementos) pesa más que ".ficha-destacado-ico" sola (2 clases + 1 elemento) — sin este
     extra nivel, el tamaño del ícono quedaba pisado por el de la descripción (bug real). */
  body.pagina-ficha .ficha-destacado .ficha-destacado-ico { font-size: 24px; width: 30px; text-align: center; line-height: 1; }
  body.pagina-ficha .ficha-destacado b { font-size: 13px; text-transform: none; letter-spacing: 0; color: var(--ink); }
  body.pagina-ficha .ficha-destacado span:not(.ficha-destacado-ico) { font-size: 12.5px; color: var(--muted); }
  body.pagina-ficha .ficha-chip { font-size: 12.5px; padding: 7px 13px; }

  /* Horarios + Redes sociales como 2 tarjetas con borde, lado a lado (si solo existe una
     de las dos, ocupa el ancho completo — .ficha-info-grid-1 la agrega automáticamente) */
  body.pagina-ficha .ficha-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 26px 0; }
  body.pagina-ficha .ficha-info-grid-1 { grid-template-columns: 1fr; }
  /* tarjetas con fondo gris suave en vez de borde blanco: se ven más limpias y parejas */
  body.pagina-ficha .ficha-info-card {
    background: #f6f7f5; border: none; border-top: none;
    border-radius: 14px; padding: 14px 16px; margin: 0;
  }
  /* cada parte del horario en su propia línea, sin el "·" de escritorio, y la aclaración
     entre paréntesis en texto más chico y gris */
  body.pagina-ficha .ficha-info-card .ficha-horario-linea { display: block; }
  body.pagina-ficha .ficha-info-card .ficha-horario-linea:not(:first-child)::before { content: none; }
  body.pagina-ficha .ficha-info-card .ficha-horario-nota {
    display: block; font-size: 11.5px; color: var(--muted); margin-top: 2px;
  }
  body.pagina-ficha .ficha-info-card .ficha-horario-nota::before { content: none; }
  /* redes en su color de marca (como en la referencia), no en verde corporativo */
  body.pagina-ficha .ficha-info-card .resto-redes a { background: #fff; border-color: var(--line); }
  body.pagina-ficha .ficha-info-card .red-instagram { color: #E1306C; }
  body.pagina-ficha .ficha-info-card .red-facebook { color: #1877F2; }
  body.pagina-ficha .ficha-info-card .red-tiktok { color: #111; }

  /* ===== Área táctil mínima de 44x44 sin agrandar el ícono =====
     El círculo visible sigue midiendo lo mismo; lo que crece es la zona que responde al
     dedo, vía un ::after invisible. Antes: redes 34x34, ⓘ 17x15, "Mostrar más" 27px de alto. */
  body.pagina-ficha .resto-redes a,
  body.pagina-ficha .ficha-verificado-info { position: relative; }
  body.pagina-ficha .resto-redes a::after,
  body.pagina-ficha .ficha-verificado-info::after {
    content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
    width: 44px; height: 44px;
  }
  body.pagina-ficha .ficha-desc-toggle { padding: 13px 0; }
  /* 13px + gap chico + nowrap: con 14px "Redes sociales" no entraba a lo ancho de media
     tarjeta y se partía en dos líneas, desparejando las dos tarjetas */
  body.pagina-ficha .ficha-subtitulo-ico { font-size: 13px; gap: 6px; margin-bottom: 10px; white-space: nowrap; }
  body.pagina-ficha .ficha-subtitulo-ico .ico svg { width: 15px; height: 15px; }
  body.pagina-ficha .ficha-info-card .ficha-horario { font-size: 13.5px; line-height: 1.4; }
  body.pagina-ficha .ficha-info-card .resto-redes { margin-bottom: 0; }
}

/* galería: contador "1 / N" y puntos — mismo breakpoint que ya usa el swipe de la galería */
@media (max-width: 860px) {
  /* abajo a la derecha, no arriba: ahí ya están los círculos de atrás/compartir/guardar
     flotando sobre la foto (bug real que se veían encimados antes de este cambio) */
  .ficha-galeria-contador {
    display: block; position: absolute; right: 14px; bottom: 14px; z-index: 2;
    background: rgba(10,20,14,.55); color: #fff; font-size: 12.5px; font-weight: 700;
    padding: 4px 10px; border-radius: 999px;
  }
  .ficha-galeria-puntos {
    display: flex; justify-content: center; gap: 6px; margin-top: 10px;
  }
  .ficha-galeria-puntos span { width: 6px; height: 6px; border-radius: 50%; background: var(--line-fuerte); transition: background .2s, transform .2s; }
  .ficha-galeria-puntos span.activo { background: var(--verde); transform: scale(1.25); }
  /* el swipe + contador + puntos ya comunican que hay más fotos — el botón queda redundante
     y ocupando espacio sobre la foto, como en Airbnb (ahí tampoco hay un botón "ver todas") */
  .ficha-vertodas { display: none; }
}

/* "Mostrar más" de la descripción larga — solo si de verdad no entra en 3-4 líneas */
@media (max-width: 767px) {
  .ficha-desc-wrap { position: relative; }
  .ficha-desc-texto { max-height: 4.6em; overflow: hidden; }
  .ficha-desc-wrap.abierto .ficha-desc-texto { max-height: none; }
  .ficha-desc-wrap:not(.abierto)::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 26px; height: 1.6em;
    background: linear-gradient(180deg, rgba(255,255,255,0), #fff 80%); pointer-events: none;
  }
  .ficha-desc-toggle {
    display: block; margin-top: 6px; background: none; border: none; padding: 4px 0;
    color: var(--verde); font-family: var(--sans); font-weight: 700; font-size: 14px; cursor: pointer;
  }
}

/* "También te puede interesar" en celular: carrusel horizontal, igual que .mejor-grid,
   en vez de la lista vertical que usa el resto de .grid-resto (el listado completo) */
@media (max-width: 767px) {
  .ficha-relacionados .grid-resto {
    display: flex; grid-template-columns: none; height: auto;
    overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch; scrollbar-width: none;
    gap: 12px; margin: 0 -20px; padding: 4px 20px 4px;
  }
  .ficha-relacionados .grid-resto::-webkit-scrollbar { display: none; }
  .ficha-relacionados .grid-resto > .resto { flex: 0 0 82%; scroll-snap-align: start; }
}

/* ============================================================================
   PASE DE PULIDO MÓVIL — solo celular, escritorio intacto
   Cada regla corrige un defecto medido a 390px/430px, no una impresión visual.
   ========================================================================== */

/* --- 1. Zoom automático de Safari iOS ---------------------------------------
   Safari hace zoom al enfocar un campo con fuente < 16px. Medido: el buscador
   del inicio estaba en 15px, el de los listados en 13.5px y el selector de
   orden en 10.5px — los tres disparaban el zoom. 16px es el umbral exacto. */
@media (max-width: 767px) {
  .bus-input input,
  .bus-cat-btn,
  .bus-listado-campo input {
    font-size: 16px;
  }
  .listado-orden select {
    font-size: 16px;
    /* el tope de 96px era para 10.5px; con 16px el texto se cortaba a media palabra */
    max-width: none;
    padding: 7px 24px 7px 12px;
  }
  /* el selector ya no cabe junto al título en pantallas angostas: baja a su
     propia línea en vez de comprimir el título (no se reduce ninguna fuente) */
  .listado-titulo-movil { flex-wrap: wrap; }
  .listado-titulo-movil > div { flex: 1 1 100%; }
  .listado-orden { margin-top: 10px; }
}

/* --- 2. Áreas táctiles de 44px ----------------------------------------------
   Medidas reales antes del cambio: chips 33.2px, filtros 38.8px, campo de
   búsqueda 24.8px, botón de categoría 24.8px, "Publica tu EcoNegocio" 32.4px.
   Donde agrandar el elemento rompería la composición se agranda solo el área
   tocable con un ::after invisible, patrón que este proyecto ya usa. */
@media (max-width: 767px) {
  .bus-input input,
  .bus-cat-btn { min-height: 44px; }

  .bus-chip { padding: 11px 16px; font-size: 13.5px; }

  .filtro { padding: 11px 18px; }

  .btn-anfitrion { padding: 11px 12px; }

  /* el logo cambia de caja si se le da padding y descoloca el header:
     se expande solo la zona tocable */
  .marca { position: relative; }
  .marca::after {
    content: ""; position: absolute; top: 50%; left: 0;
    width: 100%; height: 44px; transform: translateY(-50%);
  }
}

/* --- 3. Enlaces del pie -----------------------------------------------------
   Medido: 19.2px de alto y 9px de separación. Demasiado juntos para el dedo:
   el riesgo real es pulsar el enlace equivocado. Se les da altura de 44px, que
   además resuelve la separación sin tocar el diseño del pie. */
@media (max-width: 767px) {
  .pie-links { gap: 0; }
  .pie-links a {
    display: flex; align-items: center; min-height: 44px;
  }
  .pie-linea a { display: inline-flex; align-items: center; min-height: 44px; }
}

/* --- 4. Ritmo vertical entre secciones --------------------------------------
   Medido en el inicio: 56px, 56px, 90px, 60px, 56px, 56px, 76px, 90px. Tres
   valores distintos para la misma jerarquía. 56px es el que ya domina el sitio;
   los 90px y 76px eran heredados del escritorio y en 390px dejan un hueco muerto. */
@media (max-width: 767px) {
  .como-funciona,
  .faq,
  .owners { padding-top: 56px; padding-bottom: 56px; }
  .complemento { padding-bottom: 56px; }
}

/* --- 5. Padding interno de tarjetas -----------------------------------------
   Medido: .mejor-body 22px, .faq-item 22px, .complemento-txt 30px. El bloque de
   texto de "casas de campo" era el único fuera de la escala; con 30px a cada
   lado sobre 350px de ancho el párrafo quedaba innecesariamente angosto. */
@media (max-width: 767px) {
  .complemento-txt { padding: 26px 22px; }
}

/* --- 6. Ajuste fino de las tres áreas que quedaron entre 42 y 43px ---------- */
@media (max-width: 767px) {
  .bus-chip { padding: 12px 16px; }
  .btn-anfitrion { padding: 12px 12px; }
  /* enlace de contacto dentro de un párrafo del pie: se queda inline para no
     romper el flujo del texto; el padding vertical agranda la zona tocable
     sin desplazar nada (no tiene fondo ni borde que delaten el cambio) */
  .pie-grid p a { padding-block: 12px; }
}

/* --- 7. Campo de búsqueda y selector de los listados ------------------------
   El campo medía 46px de alto pero el <input> solo 22px: los 12px de relleno
   de arriba y abajo eran zona muerta que no enfocaba nada al tocarla. Se pasa
   la altura al input para que el área tocable coincida con lo que se ve. */
@media (max-width: 767px) {
  .bus-listado-campo { padding: 0 14px; }
  .bus-listado-campo input { min-height: 44px; }
  .listado-orden select { padding: 11px 26px 11px 14px; }
}

/* --- 8. Altura explícita en vez de depender del relleno ---------------------
   Los filtros daban 43px a 390px y 42.8px a 430px: calcular la altura desde el
   padding la deja a merced del ancho y del renderizado de la fuente. */
@media (max-width: 767px) {
  .filtro {
    min-height: 44px; padding: 0 18px;
    display: inline-flex; align-items: center;
  }
}

/* --- 9. Enlaces internos de las tarjetas del listado ------------------------
   El título y "Ver detalles" medían 19.2px y 22.1px. Se quedan en display
   inline y solo se les agranda la zona tocable con relleno vertical: así la
   tarjeta de 164px no cambia de alto ni una décima. Ambos llevan a la misma
   ficha que la foto, de modo que si un toque cae en la zona ampliada acaba
   igual en el destino correcto. */
@media (max-width: 767px) {
  .grid-resto .resto-body h3 a { padding-block: 13px; }
  .grid-resto .resto-vermas { padding-block: 11px; }
}

/* --- 10. Pestañas de sede (El Tambo II) ------------------------------------
   Medido: 38.4px. Es un control real de navegación entre sedes, no un enlace
   dentro de un texto, así que sí le corresponde el mínimo de 44px. */
@media (max-width: 767px) {
  .sede-tab {
    min-height: 44px; padding: 0 16px;
    display: inline-flex; align-items: center;
  }
}

/* --- 11. Desplegables del buscador por encima de los flotantes --------------
   Medido a 390px: el menú de categorías (z-index 30) quedaba por debajo del
   botón flotante de WhatsApp (120) y del dock (140). La última opción se
   solapaba 4.9px con el dock y al tocar esa franja respondía el dock, no la
   opción. Mientras el desplegable está abierto es la interfaz activa y debe
   ir encima; en escritorio no aplica porque ahí ambos flotantes no existen. */
@media (max-width: 767px) {
  /* el z-index del menú no bastaba: .buscador-sec tiene position:relative +
     z-index:6, lo que crea un contexto de apilamiento propio y encierra al
     menú dentro de ese 6. Hay que levantar la sección, y solo mientras el
     desplegable está abierto, para no dejarla siempre sobre el dock. */
  .buscador-sec:has(.bus-cat-menu.abierto),
  .buscador-sec:has(.bus-sug.abierto) { z-index: 150; }
  .bus-cat-menu.abierto,
  .bus-sug.abierto { z-index: 150; }
}

/* --- 12. Botón de cerrar del modal -----------------------------------------
   Medido: 42×42. Es el único modo de salir del modal, así que el mínimo de
   44px aquí importa más que en cualquier otro control. El lightbox ya cumple
   (46px de cerrar y 44px de flechas bajo 560px). */
@media (max-width: 767px) {
  .modal-cerrar { width: 44px; height: 44px; }
}

/* ============================================================================
   FICHA ESTILO AIRBNB — SOLO CELULAR (escritorio se adapta en otra tanda)
   Referencia: captura real de Airbnb enviada por Alvaro.
   Sin estrellas, sin puntajes, sin reseñas: EcoCieneguilla no tiene ese sistema.
   ========================================================================== */

/* Los iconos SVG de Aspectos destacados solo existen en móvil por ahora; escritorio
   sigue con los emojis hasta que adaptemos PC. */
.ficha-destacado-ico .ico-svg { display: none; }

@media (max-width: 767px) {
  body.pagina-ficha .ficha-destacado-ico .ico-emoji { display: none; }
  body.pagina-ficha .ficha-destacado-ico .ico-svg { display: inline-flex; }
  body.pagina-ficha .ficha-destacado-ico .ico-svg svg { width: 24px; height: 24px; display: block; }

  /* --- Hoja blanca montada sobre la foto ---------------------------------
     Es el gesto que más identifica a la ficha de Airbnb: el contenido no
     empieza debajo de la foto, la tapa por abajo con esquinas redondeadas. */
  body.pagina-ficha .ficha-galeria { margin-bottom: 0; }
  body.pagina-ficha .ficha-cabeza {
    position: relative; z-index: 2;
    background: #fff;
    margin: -26px -20px 0;
    padding: 26px 20px 2px;
    border-radius: 26px 26px 0 0;
  }

  /* --- Jerarquía: título grande, cuerpo tranquilo -------------------------
     En la captura de Airbnb el cuerpo NO es chico (ronda 15-16px). Lo que da
     la sensación premium es el salto entre el título y el resto, más el aire.
     El pase anterior había encogido todo por igual y aplanó esa diferencia. */
  body.pagina-ficha .ficha-cabeza h1 {
    font-size: 27px; font-weight: 700; line-height: 1.15;
    letter-spacing: -.02em; margin: 0;
  }
  body.pagina-ficha .ficha-tipo { font-size: 15px; margin-top: 7px; color: var(--muted); }
  body.pagina-ficha .ficha-verificado { font-size: 13px; padding: 6px 12px; margin-top: 12px; }
  body.pagina-ficha .ficha-subtitulo { font-size: 19px; font-weight: 700; letter-spacing: -.01em; margin-bottom: 12px; }
  body.pagina-ficha .modal-desc,
  body.pagina-ficha .ficha-desc-texto { font-size: 15px; line-height: 1.6; }
  body.pagina-ficha .ficha-desc-toggle { font-size: 15px; }
  body.pagina-ficha .ficha-bloque { padding: 22px 0; }

  /* --- Aspectos destacados: la lista de Airbnb ---------------------------
     Ícono de 24px a la izquierda, título en negrita y descripción en gris
     debajo. Una sola columna, sin tarjetas ni fondos de color. */
  body.pagina-ficha .ficha-destacados { display: grid; grid-template-columns: 1fr; gap: 0; }
  body.pagina-ficha .ficha-destacado {
    display: grid; grid-template-columns: 24px 1fr; gap: 16px;
    align-items: start; padding: 13px 0;
  }
  body.pagina-ficha .ficha-destacado .ficha-destacado-ico {
    width: 24px; height: 24px; color: var(--ink); margin-top: 1px;
  }
  body.pagina-ficha .ficha-destacado b {
    font-size: 16px; font-weight: 600; color: var(--ink); margin-bottom: 2px;
  }
  body.pagina-ficha .ficha-destacado span:not(.ficha-destacado-ico) {
    font-size: 14.5px; line-height: 1.5; color: var(--muted);
  }
}

/* El contador "1 / N" vive a 14px del borde inferior de la galería, pero la hoja blanca
   ahora monta 26px sobre la foto y le tapaba 12px (medido). Sube exactamente lo que
   monta la hoja. Solo aquí: entre 768 y 860px la hoja no existe y el contador ya está bien. */
@media (max-width: 767px) {
  body.pagina-ficha .ficha-galeria-contador { bottom: 40px; }
}

/* --- Segunda vuelta Airbnb: los tres gestos que la hacen reconocible ------ */
.ficha-barra-cta { display: none; }

@media (max-width: 767px) {
  /* 1. Cabecera centrada: título, tipo y píldora verde, como en la referencia.
     La píldora "Verificado" ocupa el lugar de la de "Descuento por estadía". */
  body.pagina-ficha .ficha-cabeza { justify-content: center; text-align: center; padding-bottom: 22px; margin-bottom: 0; }
  body.pagina-ficha .ficha-cabeza > div { width: 100%; }
  body.pagina-ficha .ficha-cabeza h1 { justify-content: center; }
  body.pagina-ficha .ficha-verificado-explicacion { margin-left: auto; margin-right: auto; }

  /* 2. Barra de acción: reemplaza al dock y a la burbuja verde SOLO en la ficha.
     El dock sale porque Airbnb hace lo mismo en su ficha: para volver está la
     flecha de arriba. La burbuja sale porque tapaba el texto al hacer scroll. */
  body.pagina-ficha .dock-movil,
  body.pagina-ficha .wa-flotante-movil { display: none !important; }
  body.pagina-ficha.tiene-wa-flotante,
  body.pagina-ficha { padding-bottom: calc(82px + env(safe-area-inset-bottom)); }

  body.pagina-ficha .ficha-barra-cta {
    display: flex; align-items: center; justify-content: space-between; gap: 14px;
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 130;
    background: #fff; border-top: 1px solid var(--line);
    padding: 12px 20px calc(12px + env(safe-area-inset-bottom));
  }
  body.pagina-ficha .ficha-barra-info { display: flex; flex-direction: column; min-width: 0; text-align: left; }
  body.pagina-ficha .ficha-barra-info b {
    font-family: var(--display); font-size: 15.5px; font-weight: 700; color: var(--ink);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  body.pagina-ficha .ficha-barra-info span {
    font-size: 13px; color: var(--muted);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  body.pagina-ficha .ficha-barra-btn {
    flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 50px; padding: 0 22px; border-radius: 12px;
    background: var(--verde); color: #fff; text-decoration: none;
    font-family: var(--sans); font-size: 16px; font-weight: 700;
    transition: background .2s, transform .15s;
  }
  body.pagina-ficha .ficha-barra-btn:active { transform: scale(.97); }
  body.pagina-ficha .ficha-barra-btn svg { width: 20px; height: 20px; }
  body.pagina-ficha .ficha-barra-btn-pendiente { background: #9aa39c; }

  /* 3. Más aire entre secciones: Airbnb respira mucho más que una ficha de directorio. */
  body.pagina-ficha .ficha-bloque { padding: 28px 0; }
}
