/* Mapas de AIRE (1/10): includes/mapa.php + mapa.js. Archivo propio: se carga con el mapa, en cualquier página. */
.aire-mapa { width: 100%; height: 100%; min-height: 380px; background: #FAF7F1; z-index: 0; }
/* pines (1/10): círculo del color de su tipo (Ajustes → Mapa de AIRE) con el ícono en blanco */
.aire-pin { --c: #1E1B16; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; box-sizing: border-box; border-radius: 50%;
  background: var(--c); color: #fff; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(30, 27, 22, .35); transition: transform .15s; }
.aire-pin svg { width: 55%; height: 55%; fill: currentColor; }
.aire-pin:hover { transform: scale(1.12); }
.aire-pin--aqui { position: relative; border-width: 3px; box-shadow: 0 2px 8px rgba(30, 27, 22, .35); }
/* el latido del lugar de la ficha (2/10): un aro que se expande y se apaga */
.aire-pin--aqui::after { content: ''; position: absolute; inset: -3px; border-radius: 50%; border: 2px solid var(--c); animation: aire-latido 2.2s cubic-bezier(.2, .7, .2, 1) infinite; pointer-events: none; }
@keyframes aire-latido { 0% { transform: scale(1); opacity: .7; } 70%, 100% { transform: scale(2.1); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .aire-pin--aqui::after { animation: none; opacity: .35; transform: scale(1.35); } }
.aire-pin--aqui:hover { transform: scale(1.06); }
.aire-pin-num { font: 600 13px/1 'Jost', sans-serif; }
.leaflet-tooltip.aire-pin-nombre { font: 500 12px/16px 'Jost', sans-serif; color: #1E1B16; background: #fff; border: 0; border-radius: 4px; padding: 4px 8px; box-shadow: 0 1px 4px rgba(30, 27, 22, .2); }
.leaflet-tooltip.aire-pin-nombre::before { display: none; }
.leaflet-tooltip.aire-pin-nombre--aqui { font-weight: 600; }
/* recorridos (Journeys) */
.aire-recorrido { margin: 0 0 56px; }
.aire-mapa--recorrido { width: 100%; min-height: 460px; background: #FAF7F1; z-index: 0; }
.aire-recorrido-lista { margin: 16px 0 0; padding-left: 24px; font: 400 15px/24px 'Jost', sans-serif; color: #1E1B16; }
.aire-recorrido-lista span { color: #3E3A32; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; margin-left: 6px; }
.aire-mapa-aviso { font: 400 14px/20px 'Jost', sans-serif; color: #8A5A33; }
.aire-mapa .leaflet-control-attribution { font-size: 10px; }
@media (max-width: 640px) { .aire-mapa { min-height: 300px; } }

/* El rótulo de un pin (2/10): la línea crece desde el pin y aparece el nombre
   con el botón redondo de las cards (misma microanimación de la flecha). */
.leaflet-marker-icon.aire-callout-ancla { width: 0 !important; height: 0 !important; background: none; border: 0; }
.aire-callout { position: absolute; left: 0; top: 0; display: flex; align-items: center; width: max-content; transform: translateY(-50%); pointer-events: none; }
.aire-callout--izq { left: auto; right: 0; flex-direction: row-reverse; }
.aire-callout-linea { flex: 0 0 auto; width: 0; height: 1px; background: #1E1B16; margin-left: var(--r, 15px); transition: width .45s cubic-bezier(.2, .7, .2, 1); }
.aire-callout--izq .aire-callout-linea { margin-left: 0; margin-right: var(--r, 15px); }
.aire-callout.is-abierto .aire-callout-linea { width: 56px; }
.aire-callout-txt { pointer-events: auto; display: flex; align-items: center; gap: 14px; padding: 8px 8px 8px 14px; background: #fff; color: #1E1B16 !important; text-decoration: none !important;
  box-shadow: 0 1px 2px rgba(30, 27, 22, .08), 0 8px 24px -6px rgba(30, 27, 22, .22); opacity: 0; transform: translateX(-8px); transition: opacity .25s ease .32s, transform .35s cubic-bezier(.2, .7, .2, 1) .32s; }
.aire-callout--izq .aire-callout-txt { transform: translateX(8px); }
.aire-callout.is-abierto .aire-callout-txt { opacity: 1; transform: none; }
.aire-callout-k { display: flex; flex-direction: column; gap: 2px; max-width: 320px; }
/* horizontal (2/10): el ancla del rótulo mide 0 px y el texto se partía en muchos renglones; ahora ocupa
   el ancho que necesita, en una línea, hasta 320 px */
.aire-callout-n { text-wrap: balance; }
.aire-callout-meta { font: 500 11px/16px 'Jost', sans-serif; letter-spacing: .06em; text-transform: uppercase; color: #3E3A32; white-space: nowrap; }
.aire-callout-n { font: 400 18px/22px 'ivymode', 'Fraunces', serif; }
.aire-callout-btn { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; overflow: hidden;
  background: #fff; color: #1E1B16; box-shadow: inset 0 0 0 1px #1E1B16; transition: background-color .3s, color .3s, box-shadow .3s; }
a.aire-callout-txt:hover .aire-callout-btn, a.aire-callout-txt:focus-visible .aire-callout-btn { background: #8A5A33; color: #fff; box-shadow: inset 0 0 0 1px #8A5A33; }
a.aire-callout-txt:hover .aire-callout-btn svg, a.aire-callout-txt:focus-visible .aire-callout-btn svg { animation: aire-mapa-flecha .55s cubic-bezier(.2, .7, .2, 1); }
a.aire-callout-txt:focus-visible { outline: 2px solid #A9754A; outline-offset: 2px; }
@keyframes aire-mapa-flecha { 0% { transform: translateX(0); } 45% { transform: translateX(140%); } 46% { transform: translateX(-140%); } 100% { transform: translateX(0); } }
.aire-pin.is-activo, .is-activo > .aire-pin { transform: scale(1.12); }
@media (prefers-reduced-motion: reduce) {
  .aire-callout-linea, .aire-callout-txt { transition: none; }
  a.aire-callout-txt:hover .aire-callout-btn svg { animation: none; }
}
.aire-pin--grupo { background: #1E1B16; color: #fff; font: 600 13px/1 'Jost', sans-serif; cursor: zoom-in; }
.aire-pin--grupo:hover { background: #8A5A33; transform: none; }

/* Ubicación y contacto con mapa (2/10): el mapa ancho y, al lado, las referencias de íconos
   (que son también el filtro) y el contacto. Menos margen que la versión con filtro arriba. */
#aire-maqueta .aire-ubicacion-card--mapa { grid-template-columns: minmax(0, 1fr) 300px; }
#aire-maqueta .aire-ubicacion-card--mapa .aire-mapa { min-height: 460px; }
.aire-ubicacion-lado { display: flex; flex-direction: column; gap: 20px; padding: 24px; border-left: 1px solid #F0ECE3; }
#aire-maqueta .aire-ubicacion-lado .aire-contacto { padding: 20px 0 0; gap: 14px; justify-content: flex-start; border-top: 1px solid #F0ECE3; }
.aire-mapa-leyenda p { margin: 0; }
.aire-mapa-leyenda-sub { margin-top: 4px !important; font: 400 13px/18px 'Jost', sans-serif; color: #3E3A32; }
.aire-mapa-leyenda ul { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.aire-mapa-leyenda li { margin: 0; }
.aire-mapa-leyenda button, .aire-mapa-fila, .aire-mapa-leyenda-aqui { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 36px; padding: 4px 8px; margin: 0 -8px;
  box-sizing: content-box; font: 500 14px/20px 'Jost', sans-serif; color: #1E1B16; background: none; border: 0; border-radius: 6px; text-align: left; }
.aire-mapa-leyenda button { cursor: pointer; }
.aire-mapa-leyenda button:hover { background: #F7F4EE; }
.aire-mapa-leyenda button[aria-pressed="true"] { background: #F1EDE5; }
.aire-mapa-leyenda button:focus-visible { outline: 2px solid #A9754A; outline-offset: 1px; }
.aire-mapa-leyenda-aqui { font-weight: 600; padding-bottom: 8px; }
.aire-mapa-n { margin-left: auto; font-weight: 400; color: #3E3A32; font-variant-numeric: tabular-nums; }
.aire-pin--leyenda { flex: 0 0 auto; width: 24px; height: 24px; border-width: 1.5px; box-shadow: none; }
.aire-pin--leyenda:hover { transform: none; }
.aire-pin--todo { background: #FAF7F1; box-shadow: inset 0 0 0 1.5px #1E1B16; }
.aire-mapa-leyenda-aqui .aire-pin--leyenda { box-shadow: 0 0 0 3px color-mix(in srgb, var(--c) 22%, transparent); }
/* el grupo de pines: animación de markercluster con la curva del sitio */
.leaflet-cluster-anim .leaflet-marker-icon { transition: transform .35s cubic-bezier(.2, .7, .2, 1), opacity .3s ease-in; }
@media (max-width: 900px) {
  #aire-maqueta .aire-ubicacion-card--mapa { grid-template-columns: 1fr; }
  #aire-maqueta .aire-ubicacion-card--mapa .aire-mapa { min-height: 340px; }
  .aire-ubicacion-lado { border-left: 0; border-top: 1px solid #F0ECE3; padding: 20px; }
  .aire-mapa-leyenda ul { flex-direction: row; flex-wrap: wrap; gap: 4px 12px; }
  .aire-mapa-leyenda li { flex: 0 0 auto; }
  .aire-mapa-leyenda-aqui { flex-basis: 100%; }
  .aire-mapa-leyenda button, .aire-mapa-fila, .aire-mapa-leyenda-aqui { width: auto; }
}
