/* =========================================================
   COMPONENTES — mobile first (390 px). Breakpoints en responsive.css
   ========================================================= */

/* ---------- Cabecera ---------- */
.cabecera {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  height: calc(var(--header-h) + env(safe-area-inset-top));
  padding: env(safe-area-inset-top) var(--gutter) 0;
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm);
  color: var(--color-ink);           /* el hero es un cielo claro: tinta, no crema */
  transition: background var(--transition-normal), color var(--transition-normal), box-shadow var(--transition-normal);
}
.cabecera.solida {
  background: var(--color-header-solid);
  color: var(--color-ink);
  box-shadow: 0 1px 0 var(--color-line-soft);
}

.marca { display: flex; align-items: center; gap: .65rem; min-height: 44px; text-decoration: none; min-width: 0; }
/* El logo oscuro se apoya sobre una etiqueta de papel: no se altera su color */
.marca-etiqueta {
  flex: none;
  padding: .3rem .6rem .35rem;
  background: var(--white-soft);
  border-radius: var(--radius-hand-sm);
  transform: rotate(-1.5deg);
  box-shadow: var(--sombra-papel);
}
.marca-etiqueta img { height: 22px; width: auto; }
.cabecera.solida .marca-etiqueta { box-shadow: none; outline: 1px solid var(--color-line); }
.marca-producto {
  font-size: .6rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; line-height: 1.3;
  max-width: 14ch;
}

.nav { display: none; }

.menu-boton {
  width: 44px; height: 44px; margin-right: -10px;
  display: grid; place-content: center; gap: 6px;
  background: none; border: 0; cursor: pointer;
}
.menu-boton span { display: block; width: 24px; height: 2px; border-radius: 2px; background: currentColor; }
.menu-boton span:last-child { width: 16px; justify-self: end; }

.menu-movil {
  width: 100%; max-width: none; height: 100%; max-height: none; margin: 0;
  padding: calc(var(--header-h) + var(--space-md)) var(--gutter) var(--space-lg);
  border: 0; background: var(--color-cream); color: var(--color-ink);
}
.menu-movil::backdrop { background: rgba(37, 35, 30, .4); }
.menu-movil nav { display: flex; flex-direction: column; }
.menu-movil nav a {
  font-size: 1.5rem; font-weight: 500; line-height: 1.2; letter-spacing: -.01em;
  text-decoration: none; padding: 1rem 0;
  border-bottom: 1px solid var(--color-line-soft);
}
.menu-cerrar {
  position: absolute; top: calc(10px + env(safe-area-inset-top)); right: 10px;
  width: 44px; height: 44px; display: grid; place-items: center;
  background: var(--color-cream); border: var(--border-ink); border-radius: 50%; cursor: pointer;
}
.menu-cerrar svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }

/* ---------- Firma editorial "Recomendado por …" ---------- */
.firma {
  display: inline-flex; flex-direction: column; align-items: flex-start; gap: .05rem;
  color: var(--color-ink); line-height: 1;
}
.firma-pre {
  font-family: var(--font-ui); font-weight: 600;
  font-size: .6rem; letter-spacing: .22em; text-transform: uppercase;
  color: var(--color-ink-soft);
}
.firma-marca {
  position: relative; display: inline-block;
  font-family: var(--font-hand); font-weight: 700;
  font-size: 1.45rem; line-height: 1; letter-spacing: .01em;
  padding-bottom: .2rem;
}
.firma-trazo {
  position: absolute; left: -2%; bottom: 0; width: 104%; height: 7px;
  fill: none; stroke: var(--color-yellow); stroke-width: 3.2; stroke-linecap: round;
}
/* una línea: discreta, para acompañar sin interrumpir */
.firma--linea { flex-direction: row; align-items: baseline; gap: .4rem; }
.firma--linea .firma-marca { font-size: 1.15rem; padding-bottom: .12rem; }
.firma--linea .firma-trazo { height: 5px; stroke-width: 2.6; }
/* sobre fotografía: tinta clara y una sombra apenas perceptible */
.firma--foto, .firma--foto .firma-pre { color: var(--color-cream); }
.firma--foto { text-shadow: 0 1px 8px rgba(37, 35, 30, .5); }
/* aparición única y suave */
@keyframes firma-aparece { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* =========================================================
   HERO
   ========================================================= */
.hero {
  position: relative; isolation: isolate;
  min-height: 88svh;                       /* asoma la sección siguiente: invita a bajar */
  display: flex; flex-direction: column;
  color: var(--color-ink);
  /* cielo prolongado: el borde superior de la ilustración continúa hacia arriba */
  background: var(--color-sky-photo);
  overflow: hidden;
}
@supports not (height: 1svh) { .hero { min-height: 88vh; } }

/* Móvil: la cordillera se ancla abajo; arriba queda cielo limpio para el texto */
.hero-foto {
  position: absolute; z-index: -2;
  left: 0; right: 0; bottom: 0; height: 64%;
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 12%);
          mask-image: linear-gradient(180deg, transparent 0, #000 12%);
}
.hero-foto img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: 55% 100%;
  transform: translate3d(0, var(--parallax, 0px), 0);
}

.hero-velo { position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(0deg, rgba(250, 250, 247, .22) 0%, rgba(250, 250, 247, 0) 22%);
}

.hero-copy {
  position: relative;
  padding: calc(var(--header-h) + env(safe-area-inset-top) + var(--space-md)) var(--gutter) 0;
}
.hero-copy h1 {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(2.35rem, 10.4vw, 5.6rem);
  line-height: .98; text-transform: uppercase; letter-spacing: .01em;
  max-width: 14ch;
}
.hero-bajada {
  margin-top: .9rem;
  font-size: 1.06rem; line-height: 1.45; font-weight: 500;
  max-width: 32ch;
}
/* firma discreta sobre el titular (la marca ya está en la cabecera) */
.hero-copy .firma { margin-bottom: .7rem; }

/* CTA: el único botón amarillo de la vista. Sans (es información), borde de tinta artesanal, sin sombra */
.cta {
  display: inline-flex; align-items: center; gap: .7rem;
  margin-top: var(--space-md);
  min-height: 52px; padding: .75rem 1.5rem;
  font-family: var(--font-ui); font-size: .82rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
  color: var(--color-ink); background: var(--color-yellow);
  border: 1.8px solid var(--color-ink); border-radius: var(--radius-hand);
  text-decoration: none;
  transition: transform var(--transition-fast);
}
.cta span { transition: transform var(--transition-fast); }
@media (hover: hover) {
  .cta:hover { transform: translateY(-1px); }
  .cta:hover span { transform: translateX(3px); }
}

/* ---------- Transición foto → ilustración ---------- */
.transicion {
  position: relative; margin-top: auto;
  height: clamp(130px, 26vw, 240px);
  pointer-events: none;
}
.transicion svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.transicion-suelo .suelo { fill: var(--color-cream); }
.transicion-suelo .borde { fill: none; stroke: var(--color-ink); stroke-width: 2; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.transicion-suelo .borde { stroke-width: 1.6; }
.transicion-dibujos .trazo { fill: none; stroke: var(--color-ink); stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; opacity: .8; }
.transicion-dibujos .relleno path { fill: var(--color-cream); }
.transicion-dibujos .camino { fill: none; stroke: var(--color-violet); stroke-width: 2; stroke-dasharray: 2 9; stroke-linecap: round; }

/* =========================================================
   PUCÓN ILUSTRADO
   ========================================================= */
.descubre {
  position: relative;
  margin-top: -2px;                        /* cubre la línea subpíxel del borde inferior del hero */
  padding: var(--space-sm) 0 var(--space-2xl);
  /* Sin bloque propio: la misma superficie que el body (papel en base.css) */
  background: var(--color-cream);
}
.descubre-camino {
  position: absolute; left: 50%; top: -6px; width: 40px; height: 90px;
  transform: translateX(-50%);
  fill: none; stroke: var(--color-violet); stroke-width: 2; stroke-dasharray: 2 9; stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}

/* ---------- Títulos ----------
   .titulo-editorial: la pregunta de Pergamino (manuscrita, protagonista)
   .titulo-seccion: rótulos de sección (sans, discretos, con un trazo amarillo corto) */
.titulo-editorial {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(2rem, 8.6vw, 3.4rem); line-height: 1.02;
  text-align: center;
}
.titulo-seccion {
  position: relative; display: block; width: max-content; max-width: 100%; margin: 0 auto;
  padding-bottom: .55rem;
  font-family: var(--font-ui); font-weight: 600; font-size: .78rem; letter-spacing: .24em; text-transform: uppercase;
  text-align: center;
}
.titulo-seccion::after {
  content: ""; position: absolute; left: 50%; bottom: 0; width: 46px; height: 6px; margin-left: -23px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 6' preserveAspectRatio='none'%3E%3Cpath d='M2 4 C 12 1.5, 22 5, 32 3 S 42 2.5, 44 3' fill='none' stroke='%23E9C95A' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
}

/* ---------- 1 · ¿Qué te tienta? — puertas editoriales ---------- */
.puertas-bloque { position: relative; padding: var(--space-xl) var(--gutter) 0; }
.puertas {
  display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem .6rem;
  width: min(100%, 560px); margin: var(--space-lg) auto 0;
}
.puerta {
  position: relative;
  display: inline-flex; flex-direction: column; align-items: center; gap: .55rem;
  width: 96px; min-height: 44px; padding: .5rem .25rem .6rem;
  background: none; border: 0; border-radius: var(--radius-hand-sm);
  color: var(--color-ink-soft);
  cursor: pointer;
  transition: color var(--transition-fast);
}
.puerta-icono {
  position: relative; isolation: isolate;
  display: grid; place-items: center; width: 56px; height: 56px;
}
/* mancha de marcador detrás del ícono: aparece solo en la puerta elegida */
.puerta-icono::before {
  content: ""; position: absolute; z-index: -1; inset: 6px;
  background: var(--color-yellow);
  border-radius: 58% 42% 55% 45% / 46% 58% 42% 54%;
  transform: scale(.4) rotate(-8deg); opacity: 0;
  transition: transform var(--transition-fast), opacity var(--transition-fast);
}
.puerta-icono svg {
  width: 34px; height: 34px;
  fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round;
}
.puerta-texto { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; line-height: 1.2; }
@media (hover: hover) {
  .puerta:hover { color: var(--color-ink); }
  .puerta:hover .puerta-icono::before { opacity: .35; transform: scale(.85) rotate(-8deg); }
}
.puerta[aria-pressed="true"] { color: var(--color-ink); }
.puerta[aria-pressed="true"] .puerta-icono::before { opacity: 1; transform: scale(1) rotate(-8deg); }

/* ---------- 2 · Explorar por categoría: índice en sans, sin cajas ----------
   La elegida recibe un trazo de marcador amarillo detrás de la palabra. */
.categorias-bloque { margin-top: var(--space-lg); }
/* rótulo subordinado a "¿Qué te tienta?": sin trazo amarillo, en tinta suave */
.titulo-sub {
  margin: 0; text-align: center;
  font-family: var(--font-ui); font-weight: 600; font-size: .7rem; letter-spacing: .22em; text-transform: uppercase;
  color: var(--color-ink-soft);
}

/* Resultado de la selección: anotación de Pergamino + enlace al mapa */
.filtro-resultado {
  margin-top: var(--space-sm); text-align: center;
  font-family: var(--font-hand); font-weight: 700; font-size: 1.3rem; line-height: 1.2;
}
.filtro-resultado a {
  display: inline-flex; align-items: center; gap: .3rem; min-height: 44px; padding: 0 .3rem;
  font-family: var(--font-ui); font-weight: 600; font-size: .7rem; letter-spacing: .16em; text-transform: uppercase;
  text-decoration: underline var(--color-yellow); text-decoration-thickness: 3px; text-underline-offset: 5px;
}

/* Pista del mapa (solo donde se desliza: móvil y tablet) */
.mapa-pista {
  margin-top: .35rem; text-align: center;
  font-family: var(--font-hand); font-weight: 700; font-size: 1.15rem; color: var(--color-ink-soft);
}
.mapa-pista::after { content: "↔"; margin-left: .4rem; font-family: var(--font-ui); font-size: .9rem; opacity: .6; }
.categorias {
  display: flex; gap: .1rem;
  margin: var(--space-sm) calc(var(--gutter) * -1) 0;
  padding: .2rem var(--gutter) .4rem;
  overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
}
.categorias::-webkit-scrollbar { display: none; }
.categoria {
  position: relative; isolation: isolate; flex: none; scroll-snap-align: center;
  min-height: 44px; padding: .4rem .7rem;
  display: inline-flex; align-items: center; justify-content: center;
  background: none; border: 0;
  font-family: var(--font-ui); font-weight: 500; font-size: .95rem; line-height: 1.2; letter-spacing: .01em;
  color: var(--color-ink-soft);
  cursor: pointer;
  transition: color var(--transition-fast);
}
.categoria-trazo {
  position: absolute; z-index: -1; left: .35rem; right: .35rem; bottom: .55rem; width: calc(100% - .7rem); height: 9px;
  fill: none; stroke: var(--color-yellow); stroke-width: 7; stroke-linecap: round;
  stroke-dasharray: 130; stroke-dashoffset: 130;
  transition: stroke-dashoffset 400ms var(--ease);
}
@media (hover: hover) { .categoria:hover { color: var(--color-ink); } }
.categoria[aria-pressed="true"] { color: var(--color-ink); font-weight: 600; }
.categoria[aria-pressed="true"] .categoria-trazo { stroke-dashoffset: 0; }

/* ---------- 3 · Explora Pucón ---------- */
.explora {
  margin-top: var(--space-lg);
  /* mancha salvia muy suave donde vive el mapa */
  background: radial-gradient(ellipse 90% 46% at 50% 56%, rgba(221, 226, 209, .85), rgba(221, 226, 209, 0) 72%);
}

/* ---------- Mapa: un mundo, no una imagen en tarjeta ---------- */
.mapa { position: relative; margin-top: var(--space-md); --alto-mapa: 60svh; }
@supports not (height: 1svh) { .mapa { --alto-mapa: 60vh; } }

.mapa-viewport {
  position: relative;
  height: var(--alto-mapa);
  overflow-x: auto; overflow-y: hidden;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  /* bordes que se funden con el papel; el fundido termina justo donde corta el clip-path
     de .mapa-imagen (2.2%), así no queda un borde recto a media opacidad */
  -webkit-mask-image: linear-gradient(180deg, transparent 2.2%, #000 9%, #000 94%, transparent 97.8%);
          mask-image: linear-gradient(180deg, transparent 2.2%, #000 9%, #000 94%, transparent 97.8%);
}
.mapa-viewport::-webkit-scrollbar { display: none; }

.mapa-arte {
  position: relative;
  height: 100%;
  aspect-ratio: 1556 / 1011;
}
.mapa-imagen {
  width: 100%; height: 100%; max-width: none;
  /* oculta el marco negro del archivo (recorte visual, el asset no se toca) */
  clip-path: inset(2.2% 1.4%);
  user-select: none; -webkit-user-drag: none;
}
.mapa-capa { position: absolute; inset: 0; }

.mapa-nota {
  position: absolute; left: 50%; top: 12%; transform: translateX(-50%) rotate(-1.5deg);
  max-width: 80%; padding: .5rem 1rem;
  background: var(--color-cream); border: 1.8px solid var(--color-ink); border-radius: var(--radius-hand-sm);
  font-family: var(--font-hand); font-weight: 700; font-size: 1.35rem; line-height: 1.15; text-align: center;
}
/* ---------- Hotspots: mini ficha Pergamino — "aquí hay algo" ----------
   Botón de 44×44 (área táctil) con un marcador visual de ~15px:
   papel crema, borde de tinta y un centro amarillo, como una pequeña
   ficha/coin dibujada sobre el mapa. Sin colores por categoría.
   Estados: normal · hover/focus/.resaltado · .coincide (filtro) · .activo */
.map-hotspot {
  --giro: 0deg;                              /* rotación determinista por índice (map.js) */
  position: absolute; z-index: 1;
  width: 44px; height: 44px;
  transform: translate(-50%, -50%);
  display: grid; place-items: center;
  padding: 0; background: none; border: 0; border-radius: 50%; cursor: pointer;
  transition: opacity var(--transition-normal);
}
/* aureola: mancha de marcador amarillo, no un glow */
.map-hotspot::before {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 30px; height: 27px;
  background: rgba(233, 201, 90, .6);
  border-radius: 58% 42% 55% 45% / 46% 58% 42% 54%;
  transform: translate(-50%, -50%) rotate(calc(var(--giro) * -3)) scale(.5);
  opacity: 0;
  transition: opacity var(--transition-fast), transform var(--transition-fast);
}
.map-hotspot-punto {
  position: relative; z-index: 1;
  width: 15px; height: 15px;
  background: var(--color-cream);
  border: 1.6px solid var(--color-ink);
  border-radius: 55% 45% 52% 48% / 47% 54% 46% 53%;
  box-shadow: 0 1px 0 rgba(51, 41, 31, .2);     /* leve relieve de papel */
  transform: rotate(var(--giro));
  transition: transform var(--transition-fast), background var(--transition-fast);
}
/* centro: pequeña gota amarilla (o destello cuando está seleccionado) */
.map-hotspot-punto::after {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 5px; height: 5px;
  background: var(--color-yellow);
  box-shadow: 0 0 0 .8px rgba(37, 35, 30, .45);
  border-radius: 50% 45% 55% 48%;
  transform: translate(-50%, -50%);
}

/* B · hover / foco de teclado / resaltado desde el menú */
.map-hotspot:hover, .map-hotspot:focus-visible, .map-hotspot.resaltado { z-index: 3; }
.map-hotspot:focus-visible { outline: 2px dashed var(--color-ink); outline-offset: -5px; }
.map-hotspot:hover::before, .map-hotspot:focus-visible::before, .map-hotspot.resaltado::before,
.map-hotspot.activo::before {
  opacity: 1; transform: translate(-50%, -50%) rotate(calc(var(--giro) * -3)) scale(1);
}
@media (hover: hover) {
  .map-hotspot:hover .map-hotspot-punto { transform: rotate(var(--giro)) scale(1.25); }
}
.map-hotspot:focus-visible .map-hotspot-punto,
.map-hotspot.resaltado .map-hotspot-punto { transform: rotate(var(--giro)) scale(1.25); }

/* C · coincide con la categoría/búsqueda: más presencia; el resto se atenúa sin desaparecer */
.filtrando .map-hotspot { opacity: .22; pointer-events: none; }   /* fuera del filtro: contexto, no interactivo */
.filtrando .map-hotspot.coincide,
.filtrando .map-hotspot.activo { opacity: 1; pointer-events: auto; }
.filtrando .map-hotspot.coincide .map-hotspot-punto { background: var(--color-yellow); }
.filtrando .map-hotspot.coincide .map-hotspot-punto::after { background: var(--color-ink); width: 4px; height: 4px; box-shadow: none; }

/* D · seleccionado: ficha amarilla + destello de tinta; una sola microanimación */
.map-hotspot.activo { z-index: 5; }
.map-hotspot.activo .map-hotspot-punto {
  width: 17px; height: 17px;
  background: var(--color-yellow);
  border-width: 2px;
  animation: marcar 400ms var(--ease) 1;
}
.map-hotspot.activo .map-hotspot-punto::after {
  width: 9px; height: 9px;
  background: var(--color-ink); box-shadow: none; border-radius: 0;
  clip-path: polygon(50% 0, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0 50%, 38% 38%);
}
@keyframes marcar {
  0%   { transform: rotate(var(--giro)) scale(1); }
  50%  { transform: rotate(var(--giro)) scale(1.15); }
  100% { transform: rotate(var(--giro)) scale(1); }
}

/* Preparado para agrupar lugares muy cercanos ("2 lugares") en una etapa futura:
   <button class="map-hotspot map-hotspot--grupo"><span class="map-hotspot-punto" data-cantidad="2"> */
.map-hotspot--grupo .map-hotspot-punto { width: 20px; height: 20px; display: grid; place-items: center; }
.map-hotspot--grupo .map-hotspot-punto::after {
  content: attr(data-cantidad); position: static; transform: none;
  width: auto; height: auto; background: none; box-shadow: none;
  font-family: var(--font-hand); font-weight: 700; font-size: .85rem; line-height: 1; color: var(--color-ink);
}

@media (max-width: 767px) {
  .map-hotspot-punto { width: 14px; height: 14px; }
  .map-hotspot.activo .map-hotspot-punto { width: 16px; height: 16px; }
}

/* ---------- Preview: el sticker emerge del lugar ---------- */
.map-preview {
  --dx: 0px;
  position: absolute;
  left: var(--x); top: var(--y);
  width: max-content; max-width: 260px;
  transform: translate(calc(-50% + var(--dx)), calc(-100% - 26px));
  pointer-events: none;
  z-index: 6;
}
.map-preview[data-lado="abajo"] { transform: translate(calc(-50% + var(--dx)), 26px); }
/* trazo de lápiz que une el sticker con su lugar (no una flecha) */
.map-preview::after {
  content: ""; position: absolute;
  left: calc(50% - var(--dx)); top: 100%;
  width: 12px; height: 20px; margin-left: -6px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'%3E%3Cpath d='M6 1 C 2 6, 10 11, 6 19' fill='none' stroke='%2325231E' stroke-width='1.6' stroke-linecap='round' stroke-dasharray='2 3.2'/%3E%3C/svg%3E") no-repeat center / contain;
  opacity: 0; transition: opacity 300ms var(--ease);
}
.map-preview[data-lado="abajo"]::after { top: auto; bottom: 100%; transform: scaleY(-1); }
.map-preview.abierto::after { opacity: .85; }
.map-preview-cuerpo {
  display: flex; flex-direction: column; align-items: center;
  pointer-events: auto;
  opacity: 0;
  transform: translateY(8px) scale(.96);
  transform-origin: 50% 100%;
  transition: opacity 300ms var(--ease), transform 300ms var(--ease);
}
.map-preview[data-lado="abajo"] .map-preview-cuerpo { transform-origin: 50% 0; transform: translateY(-8px) scale(.96); }
.map-preview.abierto .map-preview-cuerpo { opacity: 1; transform: none; }

.map-preview-ilus { position: relative; width: var(--ancho-sticker, 160px); }
.map-preview-ilus img {
  width: 100%; height: auto;
  filter: var(--sombra-objeto);
}

.map-preview-texto {
  display: flex; flex-direction: column; align-items: center; gap: .15rem;
  margin-top: .35rem; padding: .55rem .9rem .7rem;
  background: var(--white-soft);
  border: 1px solid var(--color-line); border-radius: var(--radius-hand-sm);
  box-shadow: var(--sombra-papel);
  text-align: center;
}
.map-preview-nombre { font-size: .82rem; font-weight: 600; letter-spacing: .12em; line-height: 1.25; text-transform: uppercase; max-width: 18ch; }
.map-preview-cat { font-size: .78rem; line-height: 1.2; color: var(--color-ink-soft); }
.map-preview-cta {
  margin-top: .45rem; min-height: 44px; padding: .5rem 1.1rem;
  font-family: var(--font-ui); font-weight: 600; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase;
  background: var(--color-yellow); border: 1.5px solid var(--color-ink); border-radius: var(--radius-hand);
  cursor: pointer;
  transition: transform var(--transition-fast);
}
@media (hover: hover) { .map-preview-cta:hover { transform: translateY(-2px); } }

/* =========================================================
   CIERRE (provisorio)
   ========================================================= */
.cierre {
  position: relative;
  display: flex; flex-direction: column; align-items: center; gap: .9rem;
  margin-top: 46px;                          /* espacio para el borde ondulado */
  padding: var(--space-lg) var(--gutter) calc(var(--space-lg) + env(safe-area-inset-bottom));
  background: var(--color-sage); text-align: center;
}
/* Borde superior irregular: la salvia entra como una loma, no como un corte recto */
.cierre::before {
  content: ""; position: absolute; left: 0; right: 0; bottom: calc(100% - 1px); height: 46px;
  background: inherit;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 46' preserveAspectRatio='none'%3E%3Cpath d='M0 30 C 160 14 300 8 470 20 C 640 32 760 40 930 28 C 1100 16 1260 6 1440 18 V46 H0 Z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 46' preserveAspectRatio='none'%3E%3Cpath d='M0 30 C 160 14 300 8 470 20 C 640 32 760 40 930 28 C 1100 16 1260 6 1440 18 V46 H0 Z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
}
.cierre .firma { align-items: center; }
.cierre-marca { font-size: .74rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.cierre-coin { font-family: var(--font-hand); font-weight: 700; font-size: 1.3rem; color: var(--color-ink-soft); }
