/*!
 * pts-mapa.css — Interfaz del mapa interactivo del Parque Tecnológico de la Salud.
 * Todo el componente vive bajo .pts-mapa para no interferir con el tema de WordPress.
 */

@font-face{font-family:'PTS Inter';font-style:normal;font-weight:400;font-display:swap;
  src:url('../fonts/inter-400.woff2') format('woff2')}
@font-face{font-family:'PTS Inter';font-style:normal;font-weight:500;font-display:swap;
  src:url('../fonts/inter-500.woff2') format('woff2')}
@font-face{font-family:'PTS Inter';font-style:normal;font-weight:700;font-display:swap;
  src:url('../fonts/inter-700.woff2') format('woff2')}

.pts-mapa{
  --pts-navy:#2a3076;
  --pts-navy-900:#15183b;
  --pts-azul:#8ba5d6;      /* Asistencia sanitaria */
  --pts-verde:#2bab66;     /* Docencia */
  --pts-ambar:#fab900;     /* Investigación */
  --pts-coral:#e95152;     /* Desarrollo empresarial */

  --pts-superficie:rgba(255,255,255,.88);
  --pts-superficie-solida:#ffffff;
  --pts-superficie-2:#f2f6f8;
  --pts-borde:rgba(42,48,118,.13);
  --pts-texto:#1c2044;
  --pts-texto-2:#5f668f;
  --pts-sombra:0 6px 28px -8px rgba(21,24,59,.32), 0 2px 8px -4px rgba(21,24,59,.18);
  --pts-radio:14px;
  --pts-foco:0 0 0 3px rgba(42,48,118,.28);

  position:relative;
  display:block;
  width:100%;
  min-height:420px;
  overflow:hidden;
  border-radius:var(--pts-radio);
  background:var(--pts-superficie-2);
  font-family:'PTS Inter',Inter,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  color:var(--pts-texto);
  font-size:14px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  contain:layout paint;
}
.pts-mapa[data-tema="oscuro"]{
  --pts-superficie:rgba(19,22,46,.9);
  --pts-superficie-solida:#131630;
  --pts-superficie-2:#0d0f22;
  --pts-borde:rgba(139,165,214,.18);
  --pts-texto:#e6eaf9;
  --pts-texto-2:#98a1cb;
  --pts-sombra:0 8px 30px -8px rgba(0,0,0,.7), 0 2px 8px -4px rgba(0,0,0,.5);
  --pts-foco:0 0 0 3px rgba(139,165,214,.4);
}
.pts-mapa *,.pts-mapa *::before,.pts-mapa *::after{box-sizing:border-box}
.pts-mapa button{font:inherit;color:inherit;cursor:pointer}
.pts-mapa :focus-visible{outline:none;box-shadow:var(--pts-foco)}

.pts-mapa__lienzo{position:absolute;inset:0}
.pts-mapa__lienzo .maplibregl-canvas{outline:none}
.pts-mapa .maplibregl-ctrl-attrib{
  font-family:inherit;font-size:11px;border-radius:8px 0 0 0;
  background:var(--pts-superficie);color:var(--pts-texto-2);backdrop-filter:blur(8px)}
.pts-mapa .maplibregl-ctrl-attrib a{color:var(--pts-texto-2)}

/* ───────────────────────────────── cabecera / búsqueda */
.pts-mapa__barra{
  position:absolute;top:14px;left:14px;z-index:6;
  display:flex;gap:10px;align-items:center;max-width:calc(100% - 28px)}
/* El isotipo va suelto sobre el mapa, sin pastilla. La sombra no es decoración:
   es lo que lo despega de las calles y los edificios que tiene detrás. */
.pts-mapa__marca{display:flex;align-items:center;height:44px;flex:none}
.pts-mapa__logo{
  display:block;height:40px;width:auto;flex:none;
  filter:drop-shadow(0 0 2px rgba(255,255,255,.95)) drop-shadow(0 1px 3px rgba(255,255,255,.9))
         drop-shadow(0 2px 7px rgba(21,24,59,.2))}
.pts-mapa__logo--negativo{display:none}
/* Sobre ortofoto o tema oscuro manda la versión blanca, con sombra oscura:
   el texto negro del logotipo a color ahí no se leería. */
.pts-mapa[data-tema="oscuro"] .pts-mapa__logo--color,
.pts-mapa.is-aerea .pts-mapa__logo--color{display:none}
.pts-mapa[data-tema="oscuro"] .pts-mapa__logo--negativo,
.pts-mapa.is-aerea .pts-mapa__logo--negativo{
  display:block;
  filter:drop-shadow(0 0 3px rgba(13,15,34,.8)) drop-shadow(0 2px 10px rgba(13,15,34,.55))}
.pts-mapa__marca-texto{color:var(--pts-navy);font-weight:700;font-size:13px;letter-spacing:.02em;white-space:nowrap}

.pts-mapa__buscador{position:relative;flex:1 1 320px;min-width:0;max-width:380px}
.pts-mapa__buscador-caja{
  display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;
  background:var(--pts-superficie);backdrop-filter:blur(14px);
  border:1px solid var(--pts-borde);border-radius:12px;box-shadow:var(--pts-sombra)}
.pts-mapa__buscador-caja svg{flex:none;color:var(--pts-texto-2)}
.pts-mapa__buscador input{
  flex:1;min-width:0;border:0;background:none;color:var(--pts-texto);
  font:inherit;font-size:13.5px;padding:0}
.pts-mapa__buscador input::placeholder{color:var(--pts-texto-2)}
.pts-mapa__buscador input:focus{outline:none}
.pts-mapa__limpiar{
  display:none;border:0;background:none;padding:2px;border-radius:6px;color:var(--pts-texto-2);line-height:0}
.pts-mapa__buscador.is-lleno .pts-mapa__limpiar{display:block}

.pts-mapa__sugerencias{
  position:absolute;top:calc(100% + 6px);left:0;right:0;max-height:min(52vh,360px);overflow-y:auto;
  overscroll-behavior:contain;touch-action:pan-y;
  background:var(--pts-superficie-solida);border:1px solid var(--pts-borde);
  border-radius:12px;box-shadow:var(--pts-sombra);padding:6px;display:none}
.pts-mapa__sugerencias.is-abierto{display:block}
.pts-mapa__sugerencia{
  display:flex;gap:10px;align-items:center;width:100%;text-align:left;
  padding:8px 9px;border:0;background:none;border-radius:9px}
.pts-mapa__sugerencia:hover,.pts-mapa__sugerencia[aria-selected="true"]{background:var(--pts-superficie-2)}
.pts-mapa__sugerencia b{display:block;font-weight:500;font-size:13.5px}
.pts-mapa__sugerencia small{display:block;color:var(--pts-texto-2);font-size:11.5px}
.pts-mapa__vacio{padding:14px;color:var(--pts-texto-2);font-size:13px;text-align:center}

/* ───────────────────────────────── entidades
   Empresas y profesionales alojados en un edificio. No son puntos del mapa:
   llevan al edificio que los alberga, por eso se listan aparte. */
.pts-mapa__sug-titulo{
  display:flex;align-items:center;gap:8px;margin:6px 3px 2px;padding-top:7px;
  border-top:1px solid var(--pts-borde);
  font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;
  color:var(--pts-texto-2)}
.pts-mapa__sug-titulo b{margin-left:auto;font-weight:500;font-variant-numeric:tabular-nums;opacity:.75}
.pts-mapa__sug-pie{padding:4px 9px 6px;font-size:11.5px;color:var(--pts-texto-2)}
.pts-mapa .pts-mapa__entidad{
  display:flex;gap:10px;align-items:center;width:100%;text-align:left;
  padding:8px 9px;border:0;background:none;border-radius:9px;color:inherit}
.pts-mapa .pts-mapa__entidad:hover{background:var(--pts-superficie-2)}
.pts-mapa__entidad>svg{flex:none;color:var(--pts-texto-2)}
.pts-mapa__entidad b{display:block;font-weight:500;font-size:13.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-mapa__entidad small{display:block;color:var(--pts-texto-2);font-size:11.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-mapa__aviso{
  display:flex;gap:9px;align-items:flex-start;margin:0 0 12px;padding:10px 11px;
  border-radius:10px;background:var(--pts-superficie-2);
  border:1px solid var(--pts-borde);font-size:12.5px;line-height:1.45}
.pts-mapa__aviso>svg{flex:none;margin-top:1px;color:var(--pts-navy)}
.pts-mapa__aviso b{font-weight:600}
.pts-mapa__aviso a{color:var(--pts-navy);text-underline-offset:2px}

/* ───────────────────────────────── filtros */
.pts-mapa__filtros{
  position:absolute;top:70px;left:14px;z-index:5;
  display:flex;flex-wrap:wrap;gap:6px;max-width:min(420px,calc(100% - 28px))}
.pts-mapa__chip{
  display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;
  border:1px solid var(--pts-borde);border-radius:999px;
  background:var(--pts-superficie);backdrop-filter:blur(12px);
  box-shadow:0 2px 10px -6px rgba(21,24,59,.4);
  font-size:12.5px;font-weight:500;white-space:nowrap;transition:transform .12s ease}
.pts-mapa__chip:hover{transform:translateY(-1px)}
.pts-mapa__chip i{width:9px;height:9px;border-radius:3px;background:currentColor;flex:none}
.pts-mapa__chip[aria-pressed="false"]{opacity:.45}
.pts-mapa__chip[aria-pressed="false"] i{background:var(--pts-texto-2)}

/* ───────────────────────────────── controles derechos */
.pts-mapa__controles{
  position:absolute;top:14px;right:14px;z-index:6;display:flex;flex-direction:column;gap:8px}
.pts-mapa__grupo{
  display:flex;flex-direction:column;background:var(--pts-superficie);backdrop-filter:blur(14px);
  border:1px solid var(--pts-borde);border-radius:12px;box-shadow:var(--pts-sombra);overflow:hidden}
.pts-mapa__btn{
  width:40px;height:40px;display:grid;place-items:center;border:0;background:none;
  color:var(--pts-texto);position:relative}
.pts-mapa__btn+.pts-mapa__btn{border-top:1px solid var(--pts-borde)}
.pts-mapa__btn:hover{background:var(--pts-superficie-2)}
.pts-mapa__btn[aria-pressed="true"]{background:var(--pts-navy);color:#fff}
.pts-mapa__btn svg{pointer-events:none}
.pts-mapa__btn[data-pista]::after{
  content:attr(data-pista);position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);
  background:var(--pts-navy-900);color:#fff;font-size:11.5px;padding:4px 8px;border-radius:7px;
  white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .14s ease}
.pts-mapa__btn:hover::after,.pts-mapa__btn:focus-visible::after{opacity:1}

/* ───────────────────────────────── panel lateral */
.pts-mapa__panel{
  position:absolute;z-index:7;top:14px;right:62px;width:340px;max-height:calc(100% - 28px);
  display:flex;flex-direction:column;
  background:var(--pts-superficie-solida);border:1px solid var(--pts-borde);
  border-radius:var(--pts-radio);box-shadow:var(--pts-sombra);
  transform:translateX(12px);opacity:0;pointer-events:none;
  transition:transform .22s cubic-bezier(.22,1,.36,1),opacity .18s ease}
.pts-mapa__panel.is-abierto{transform:none;opacity:1;pointer-events:auto}
.pts-mapa__panel-cab{
  display:flex;align-items:flex-start;gap:10px;padding:16px 16px 12px}
.pts-mapa__panel-cab h2{margin:0;font-size:16.5px;font-weight:700;line-height:1.25;letter-spacing:-.01em}
.pts-mapa__etiqueta{
  display:inline-flex;align-items:center;gap:6px;margin-bottom:6px;
  font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.pts-mapa__etiqueta i{width:8px;height:8px;border-radius:3px;background:currentColor}
.pts-mapa__cerrar{
  margin-left:auto;flex:none;width:30px;height:30px;display:grid;place-items:center;
  border:0;border-radius:8px;background:var(--pts-superficie-2);color:var(--pts-texto-2)}
.pts-mapa__cerrar:hover{color:var(--pts-texto)}
.pts-mapa__panel-cuerpo{
  padding:0 16px 16px;overflow-y:auto;overscroll-behavior:contain;min-width:0;
  -webkit-overflow-scrolling:touch;touch-action:pan-y;scrollbar-width:thin}
.pts-mapa__panel-cuerpo::-webkit-scrollbar{width:8px}
.pts-mapa__panel-cuerpo::-webkit-scrollbar-thumb{
  background:var(--pts-borde);border-radius:99px;border:2px solid var(--pts-superficie-solida)}
.pts-mapa__panel-cuerpo p{margin:0 0 12px;color:var(--pts-texto-2);font-size:13.5px}
.pts-mapa__datos{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.pts-mapa__datos li{display:flex;gap:9px;align-items:flex-start;font-size:13px}
.pts-mapa__datos svg{flex:none;margin-top:2px;color:var(--pts-texto-2)}
.pts-mapa__lineas{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.pts-mapa__linea{
  display:inline-block;padding:1px 7px;border-radius:6px;background:var(--pts-navy);color:#fff;
  font-size:11px;font-weight:600;letter-spacing:.02em}
.pts-mapa__acciones{display:grid;gap:8px}
.pts-mapa__accion{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:42px;
  border:1px solid var(--pts-borde);border-radius:11px;background:var(--pts-superficie-2);
  font-size:13.5px;font-weight:500;text-decoration:none;color:inherit;transition:transform .12s ease}
.pts-mapa__accion:hover{transform:translateY(-1px)}
.pts-mapa .pts-mapa__accion--principal{
  background:var(--pts-azul);border-color:var(--pts-azul);color:var(--pts-navy-900);font-weight:500}
.pts-mapa .pts-mapa__accion--principal:hover{filter:brightness(1.04)}
.pts-mapa .pts-mapa__accion--principal svg{opacity:.9}

/* listado */
.pts-mapa__lista{list-style:none;margin:0;padding:0}
.pts-mapa__lista li+li{border-top:1px solid var(--pts-borde)}
.pts-mapa__item{
  display:flex;gap:11px;align-items:center;width:100%;padding:11px 6px;border:0;background:none;text-align:left}
.pts-mapa__item:hover{background:var(--pts-superficie-2)}
.pts-mapa__item i{width:10px;height:10px;border-radius:3px;flex:none}
.pts-mapa__item b{display:block;font-weight:500;font-size:13.5px;line-height:1.3}
.pts-mapa__item small{display:block;color:var(--pts-texto-2);font-size:11.5px}

/* ───────────────────────────────── itinerarios */
.pts-mapa__ruta{display:grid;gap:10px}
.pts-mapa__campo{display:grid;gap:4px;min-width:0}
.pts-mapa__ruta{min-width:0}
.pts-mapa__campo label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--pts-texto-2)}
.pts-mapa__campo select,.pts-mapa__campo .pts-mapa__falso{
  width:100%;max-width:100%;min-width:0;text-overflow:ellipsis;
  height:40px;padding:0 10px;border:1px solid var(--pts-borde);border-radius:10px;
  background:var(--pts-superficie-2);color:var(--pts-texto);font:inherit;font-size:13px;
  appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 16px) 17px,calc(100% - 11px) 17px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.pts-mapa__modos{display:flex;gap:6px}
.pts-mapa__modo{
  flex:1;height:36px;display:flex;align-items:center;justify-content:center;gap:6px;
  border:1px solid var(--pts-borde);border-radius:10px;background:var(--pts-superficie-2);font-size:12.5px;font-weight:500}
.pts-mapa__modo[aria-pressed="true"]{background:var(--pts-navy);border-color:var(--pts-navy);color:#fff}
.pts-mapa__resumen{
  display:flex;gap:14px;align-items:baseline;padding:12px;border-radius:11px;
  background:var(--pts-superficie-2);border:1px solid var(--pts-borde)}
.pts-mapa__resumen strong{font-size:20px;font-weight:700;letter-spacing:-.02em}
.pts-mapa__resumen span{color:var(--pts-texto-2);font-size:12.5px}
.pts-mapa__nota{margin:8px 2px 0;font-size:12px;line-height:1.5;color:var(--pts-texto-2)}

/* ───────────────────────────────── cómo llegar
   Un bloque por modo de transporte. La fila es pulsable: lleva a la parada;
   el icono de la derecha resalta el recorrido de esa línea en el mapa. */
.pts-mapa__llegar{display:grid;gap:16px;min-width:0}
/* Los hijos de un grid no encogen por debajo de su contenido salvo que se
   les diga: sin esto, una parada de nombre largo ensancha todo el panel. */
.pts-mapa__bloque{display:grid;gap:2px;min-width:0}
.pts-mapa__llegar>*,.pts-mapa__bloque>*{min-width:0}
.pts-mapa__bloque h3{
  display:flex;align-items:center;gap:7px;margin:0 0 5px;
  font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--pts-texto-2)}
.pts-mapa__bloque h3>svg{flex:none}
.pts-mapa .pts-mapa__transporte{
  display:flex;gap:10px;align-items:center;width:100%;text-align:left;color:inherit;
  padding:7px 8px;border:0;background:none;border-radius:10px}
.pts-mapa .pts-mapa__transporte:hover{background:var(--pts-superficie-2)}
.pts-mapa__insignias{flex:none;display:flex;flex-wrap:wrap;gap:3px;max-width:104px}
.pts-mapa__marca-linea{
  flex:none;min-width:30px;height:22px;padding:0 6px;border-radius:6px;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:11.5px;font-weight:700;letter-spacing:.01em;
  text-shadow:0 1px 1px rgba(21,24,59,.35)}
.pts-mapa__marca-linea[data-linea]{cursor:pointer}
.pts-mapa__marca-linea[data-linea]:hover{outline:2px solid currentColor;outline-offset:1px}
.pts-mapa__marca-linea--vacia{min-width:6px;width:6px;padding:0;border-radius:3px;height:22px}
.pts-mapa__transporte-txt{min-width:0;flex:1}
.pts-mapa__transporte strong{
  display:block;font-weight:500;font-size:13.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-mapa__transporte small{
  display:block;color:var(--pts-texto-2);font-size:11.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-mapa__ver-linea{
  flex:none;display:flex;align-items:center;justify-content:center;
  width:28px;height:28px;border-radius:8px;color:var(--pts-texto-2)}
.pts-mapa__ver-linea:hover{background:var(--pts-superficie);color:var(--pts-navy)}
.pts-mapa__calculo{margin-top:10px}

/* ───────────────────────────────── punto de partida */
.pts-mapa__origen{display:grid;gap:8px;position:relative}
.pts-mapa__origen-caja{
  display:flex;align-items:center;gap:8px;height:40px;padding:0 11px;
  border:1px solid var(--pts-borde);border-radius:10px;background:var(--pts-superficie-2)}
.pts-mapa__origen-caja>svg{flex:none;color:var(--pts-texto-2)}
.pts-mapa__origen-input{
  flex:1;min-width:0;border:0;background:none;font:inherit;font-size:13px;color:var(--pts-texto)}
.pts-mapa__origen-input::-webkit-search-cancel-button{display:none}
.pts-mapa__origen-sug{
  position:absolute;top:46px;left:0;right:0;z-index:5;display:none;
  max-height:230px;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;
  background:var(--pts-superficie-solida);border:1px solid var(--pts-borde);
  border-radius:12px;box-shadow:var(--pts-sombra);padding:6px}
.pts-mapa__origen-sug.is-abierto{display:block}
.pts-mapa__origen-fijo{
  display:flex;gap:9px;align-items:center;padding:10px 11px;border-radius:10px;
  background:var(--pts-superficie-2);border:1px solid var(--pts-borde);margin-bottom:10px}
.pts-mapa__origen-fijo>svg{flex:none;color:var(--pts-navy)}
.pts-mapa__origen-fijo>span{min-width:0;flex:1}
.pts-mapa__origen-fijo strong{display:block;font-weight:600;font-size:13.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-mapa__origen-fijo small{display:block;color:var(--pts-texto-2);font-size:11.5px}
.pts-mapa .pts-mapa__cambiar{
  flex:none;padding:5px 10px;border:1px solid var(--pts-borde);border-radius:8px;
  background:var(--pts-superficie-solida);font-size:11.5px;font-weight:500;color:var(--pts-navy)}
.pts-mapa .pts-mapa__cambiar:hover{border-color:var(--pts-navy)}

/* ───────────────────────────────── leyenda */
.pts-mapa__leyenda{
  position:absolute;left:14px;bottom:14px;z-index:5;
  display:flex;flex-wrap:wrap;gap:5px 12px;max-width:min(460px,calc(100% - 28px));
  padding:9px 12px;border-radius:11px;background:var(--pts-superficie);backdrop-filter:blur(12px);
  border:1px solid var(--pts-borde);box-shadow:0 2px 12px -8px rgba(21,24,59,.5);font-size:11.5px}
.pts-mapa__leyenda span{display:inline-flex;align-items:center;gap:6px;color:var(--pts-texto-2)}
.pts-mapa__leyenda i{width:16px;height:3px;border-radius:2px}
.pts-mapa__leyenda.is-oculto{display:none}

/* ───────────────────────────────── carga */
.pts-mapa__cargando{
  position:absolute;inset:0;z-index:9;display:grid;place-items:center;
  background:var(--pts-superficie-2);transition:opacity .35s ease}
.pts-mapa__cargando.is-oculto{opacity:0;pointer-events:none}
.pts-mapa__spinner{width:34px;height:34px;border-radius:50%;
  border:3px solid var(--pts-borde);border-top-color:var(--pts-navy);animation:pts-giro .7s linear infinite}
@keyframes pts-giro{to{transform:rotate(360deg)}}

.pts-mapa__error{
  position:absolute;left:14px;bottom:14px;max-width:min(420px,calc(100% - 28px));z-index:9;
  padding:12px 14px;border-radius:11px;
  background:var(--pts-coral);color:#fff;font-size:13px;box-shadow:var(--pts-sombra);display:none}
.pts-mapa__error.is-visible{display:block}

/* ───────────────────────────────── responsive */
@media (max-width:820px){
  .pts-mapa__barra{right:62px;max-width:none}
  .pts-mapa__buscador{flex:1 1 auto}
  .pts-mapa__panel{
    top:auto;right:0;left:0;bottom:0;width:auto;max-height:62%;
    border-radius:18px 18px 0 0;transform:translateY(18px)}
  .pts-mapa__panel.is-abierto{transform:none}
  .pts-mapa__filtros{top:auto;bottom:40px;left:12px;right:12px;max-width:none;
    flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .pts-mapa__filtros::-webkit-scrollbar{display:none}
  .pts-mapa__leyenda{display:none}
  .pts-mapa__error{bottom:84px}
  .pts-mapa .maplibregl-ctrl-bottom-right{z-index:4}
  .pts-mapa__marca{height:38px}
  .pts-mapa__logo{height:33px}
  .pts-mapa__buscador{max-width:none}
}
@media (prefers-reduced-motion:reduce){
  .pts-mapa *{animation-duration:.01ms !important;transition-duration:.01ms !important}
}

/* ───────────────────────────────── imágenes de ficha */
.pts-mapa__figura{
  position:relative;display:block;width:100%;aspect-ratio:16/9;margin:0 0 14px;
  border:0;padding:0;border-radius:11px;overflow:hidden;background:var(--pts-superficie-2);cursor:zoom-in}
.pts-mapa__figura img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s cubic-bezier(.22,1,.36,1)}
.pts-mapa__figura:hover img{transform:scale(1.04)}
.pts-mapa__figura span{
  position:absolute;right:8px;bottom:8px;padding:3px 8px;border-radius:7px;
  background:rgba(21,24,59,.72);color:#fff;font-size:11px;font-weight:500;backdrop-filter:blur(6px)}
.pts-mapa__miniaturas{display:flex;gap:6px;margin:-6px 0 14px}
.pts-mapa__miniaturas button{
  flex:1;aspect-ratio:1;border:0;padding:0;border-radius:8px;overflow:hidden;background:var(--pts-superficie-2);cursor:zoom-in}
.pts-mapa__miniaturas img{width:100%;height:100%;object-fit:cover;display:block}

.pts-mapa__item figure{
  flex:none;order:9;margin:0 0 0 auto;width:46px;height:46px;
  border-radius:9px;overflow:hidden;background:var(--pts-superficie-2)}
.pts-mapa__item figure img{width:100%;height:100%;object-fit:cover;display:block}

.pts-mapa__visor{
  position:absolute;inset:0;z-index:12;display:none;place-items:center;
  background:rgba(13,15,34,.88);backdrop-filter:blur(6px);padding:40px}
.pts-mapa__visor.is-abierto{display:grid}
.pts-mapa__visor img{max-width:100%;max-height:100%;border-radius:12px;box-shadow:0 20px 60px -20px #000}
.pts-mapa__visor button{
  position:absolute;top:16px;right:16px;width:38px;height:38px;display:grid;place-items:center;
  border:0;border-radius:10px;background:rgba(255,255,255,.14);color:#fff}
.pts-mapa__visor button:hover{background:rgba(255,255,255,.24)}
.pts-mapa__visor nav{position:absolute;bottom:18px;display:flex;gap:6px}
.pts-mapa__visor nav i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.35)}
.pts-mapa__visor nav i.is-activo{background:#fff}

/* ───────────────────────────────── directorio agrupado */
.pts-mapa__seccion{margin:0 0 4px}
.pts-mapa__seccion h3{
  position:sticky;top:0;z-index:1;margin:0;padding:9px 6px 7px;
  display:flex;align-items:center;gap:8px;
  background:var(--pts-superficie-solida);
  font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--pts-texto-2)}
.pts-mapa__seccion h3 i{width:8px;height:8px;border-radius:3px;flex:none}
.pts-mapa__seccion h3 b{margin-left:auto;font-weight:500;font-variant-numeric:tabular-nums;opacity:.75}
.pts-mapa__mas{
  width:100%;margin:2px 0 8px;padding:8px;border:1px dashed var(--pts-borde);border-radius:9px;
  background:none;color:var(--pts-texto-2);font-size:12.5px}
.pts-mapa__mas:hover{color:var(--pts-texto);border-style:solid}

/* aviso en «Vista inicial» cuando el usuario se ha desviado del estado de partida */
.pts-mapa__btn.is-avisando::before{
  content:'';position:absolute;top:7px;right:7px;width:6px;height:6px;border-radius:50%;
  background:var(--pts-ambar);box-shadow:0 0 0 2px var(--pts-superficie-solida)}
.pts-mapa__btn.is-avisando[aria-pressed="true"]::before{box-shadow:0 0 0 2px var(--pts-navy)}

/* acciones de la ficha en dos columnas + variante discreta */
.pts-mapa__acciones-par{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pts-mapa__acciones-par .pts-mapa__accion{padding:0 6px;font-size:12.5px}
.pts-mapa .pts-mapa__accion--sutil{
  background:none;border-style:dashed;color:var(--pts-texto-2);height:38px;font-size:12.5px}
.pts-mapa .pts-mapa__accion--sutil:hover{color:var(--pts-texto);border-style:solid}
.pts-mapa__accion[disabled]{opacity:.65;cursor:default;transform:none}

/* ───────────────────────────────── carrusel de la ficha */
.pts-mapa__carrusel{
  position:relative;margin:0 0 14px;border-radius:11px;overflow:hidden;
  background:var(--pts-superficie-2);aspect-ratio:16/9;touch-action:pan-y}
.pts-mapa__pistas{
  display:flex;height:100%;transition:transform .42s cubic-bezier(.22,1,.36,1);will-change:transform}
.pts-mapa__carrusel.is-arrastrando .pts-mapa__pistas{transition:none}
.pts-mapa__diapo{
  flex:0 0 100%;height:100%;border:0;padding:0;margin:0;background:none;cursor:zoom-in;display:block}
.pts-mapa__diapo img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.pts-mapa__flecha{
  position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:50%;
  background:rgba(21,24,59,.55);color:#fff;backdrop-filter:blur(6px);
  opacity:0;transition:opacity .18s ease,background .18s ease}
.pts-mapa__carrusel:hover .pts-mapa__flecha,
.pts-mapa__flecha:focus-visible{opacity:1}
.pts-mapa__flecha:hover{background:rgba(21,24,59,.78)}
.pts-mapa__flecha[disabled]{opacity:0!important;pointer-events:none}
.pts-mapa__flecha--prev{left:8px}
.pts-mapa__flecha--sig{right:8px}
.pts-mapa__puntos{
  position:absolute;left:0;right:0;bottom:9px;z-index:2;
  display:flex;justify-content:center;gap:5px;pointer-events:none}
.pts-mapa__puntos button{
  pointer-events:auto;width:6px;height:6px;padding:0;border:0;border-radius:50%;
  background:rgba(255,255,255,.5);box-shadow:0 0 3px rgba(21,24,59,.5);transition:width .2s ease,background .2s ease}
.pts-mapa__puntos button[aria-current="true"]{width:16px;border-radius:99px;background:#fff}
.pts-mapa__credito{
  position:absolute;right:8px;bottom:8px;z-index:2;padding:3px 8px;border-radius:7px;
  background:rgba(21,24,59,.72);color:#fff;font-size:11px;font-weight:500;backdrop-filter:blur(6px)}
.pts-mapa__carrusel[data-n="1"] .pts-mapa__credito{bottom:8px}
@media (max-width:820px){.pts-mapa__flecha{display:none}}
@media (prefers-reduced-motion:reduce){.pts-mapa__pistas{transition:none}}
