:root {
  --route-bg: #000096;
  --route-bg-2: #001a8f;
  --route-green: #15c147;
  --route-green-dark: #0da93a;
  --route-text: #e9f1ff;
  /* ==========================================================
   PALETA (puedes ajustar aquí tus colores corporativos)
   ========================================================== */
  /* CAMBIA AQUÍ: color principal de acciones y acentos */
  --ct-primary: #22c55e; /* CAMBIA AQUÍ: verde principal (botones/tabs activos) */
  --ct-primary-700: #16a34a; /* CAMBIA AQUÍ: hover del verde */
  --ct-primary-100: #e8fbefff; /* fondo suave verde */

  --ct-blue-700: #0b2780; /* CAMBIA AQUÍ: azul del chip del icono */
  --ct-blue-100: #e6efff;

  --ct-gray-900: #0f172a;
  --ct-gray-800: #1f2937;
  --ct-text-blue: #334155;
  --ct-gray-600: #475569;
  --ct-gray-500: #64748b;
  --ct-gray-300: #cbd5e1;
  --ct-gray-200: #e2e8f0;
  --ct-gray-100: #f1f5f9;
  --ct-white: #ffffff;
  --ct-light-green: #c3ffb9;
  --ct-text-blue: #364c67;
  --ct-radius-lg: 14px;
  --ct-shadow: 0 16px 30px rgba(2, 8, 23, 0.12);
}
body {
  margin: 0;
  font-family: "acumin-pro", Inter, system-ui, -apple-system, Segoe UI, Roboto,
    Arial, sans-serif;
}

#map {
  width: 100%;
  height: 100vh;
}

/* Header */
.header {
  position: absolute;
  top: 2%;
  left: 1.5%;
  width: 96%;
  background: white;
  color: #364c67;
  border-radius: 15px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1.5rem 1rem;
  z-index: 20;
  flex-wrap: wrap;
}

.header-left,
.header-right {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.header-center {
  display: flex;
  align-items: center;
  gap: 20px;
}
.header-center a,
.header-center a:visited,
.header-center a:link {
  color: #364c67;
  text-decoration: none;
}

.header-logo img {
  height: 30px;
}
.mapboxgl-ctrl-top-left {
  left: 7.2% !important;
  top: 47px !important;
}
/* Side panel */
#side-panel {
  position: absolute;
  top: 37%;
  left: 7.8%;
  transform: translateY(-37%);
  background: white;
  border-radius: 15px;
  backdrop-filter: blur(5px);
  color: #fff;
  height: 65%;
  display: flex;
  overflow-y: auto;
  z-index: 11;
}

.side-nav {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0.5rem;
  gap: 10px;
}

.side-btn {
  background: transparent;
  border: none;
  color: #fff;
  font-size: 1.5rem;
  cursor: pointer;
  opacity: 0.6;
}

.side-btn.active {
  opacity: 1;
  border-radius: 8px;
  padding: 6px;
}

.panel-content {
  background: var(--route-bg);
  width: 367px;
  padding: 1rem;
  color: #fff;
  overflow-y: auto;
}

.hidden {
  display: none;
}

/* Geocoder tweaks */
.mapboxgl-ctrl-top-left .mapboxgl-ctrl {
  float: left;
  margin: 85px 0 0 8%;
  width: 432px !important;
}

.mapboxgl-ctrl-geocoder {
  width: 350px !important;
  max-width: none !important;
  border-radius: 25px !important;
  background: #19004d;
  color: #fff;
  border: 1px solid #662ed1;
  box-shadow: none;
  z-index: 100000;
}

.mapboxgl-ctrl-geocoder input {
  color: #fff;
  background: white;
  border-radius: 25px;
  height: 36px;
}
.mapboxgl-ctrl-geocoder--icon-search {
  top: 0px !important;
  height: 36px !important;
}
.mapboxgl-ctrl-geocoder input::placeholder {
  color: var(--Dark-Slate, #364c67);
  font-family: "acumin-pro";
  font-size: 18px;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
}
.mapboxgl-ctrl-geocoder .suggestions {
  color: #fff;
  background: #240061;
}

.mapboxgl-ctrl-geocoder .suggestions > li > a {
  color: #fff;
  border-bottom: 1px solid #381b9c;
}

.mapboxgl-ctrl-geocoder .suggestions > .active > a,
.mapboxgl-ctrl-geocoder .suggestions > li > a:hover {
  color: #cfcfcf;
  background: transparent;
  text-decoration: none;
  cursor: pointer;
}

.mapboxgl-ctrl-geocoder--button {
  filter: invert(1);
}

/* Ruta card */
#ruta-panel.panel-content {
  background: var(--route-bg);
  color: var(--route-text);
  width: 360px;
  border-radius: 18px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
  padding: 18px 16px 20px;
}

#ruta-panel .ruta-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

#ruta-panel .ruta-header h3 {
  font-weight: 700;
  margin: 0;
  letter-spacing: 0.2px;
}

#ruta-panel .ruta-header button {
  background: transparent;
  border: none;
  color: var(--route-text);
  font-size: 22px;
  cursor: pointer;
}

.ruta-sep {
  border: 0;
  border-top: 2px solid var(--ct-light-green);
  margin: 6px 0 10px;
}

/* Timeline */
.ruta-timeline {
  --tl-col: 28px;
  display: grid;
  gap: 14px;
}
.sugerencias div {
  cursor: pointer;
}
.tl-row {
  display: grid;
  grid-template-columns: var(--tl-col) 1fr;
  align-items: stretch;
}

.tl-col-left {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.tl-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--route-green);
  box-shadow: 0 0 0 3px rgba(21, 193, 71, 0.25);
  margin-top: 6px;
}

.tl-line {
  flex: 1;
  width: 2px;
  background: var(--ct-light-green);
  margin-top: 6px;
}

.tl-line.dotted {
  background: repeating-linear-gradient(
    to bottom,
    var(--ct-light-green) 0 6px,
    transparent 6px 12px
  );
}

.tl-dot-mid {
  width: 18px;
  height: 18px;
  background: transparent;
  border: none;
  position: relative;
}

.tl-dot-mid::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("./img/ring-green.svg") center/contain no-repeat;
}

/* Inputs dentro de ruta panel */
#ruta-panel .input-ruta {
  background: #fff;
  color: var(--ct-text-blue);
  border: 2px solid rgba(21, 193, 71, 0.4);
  border-radius: 10px;
  padding: 10px 12px;
  outline: none;
  transition: box-shadow 0.2s, border-color 0.2s;
  width: 90%;
}

#ruta-panel .input-ruta:focus {
  border-color: var(--route-green);
  box-shadow: 0 0 0 3px rgba(21, 193, 71, 0.25);
}

/* Botón add stop */
#ruta-panel .btn-add-stop.btn-referencia {
  background: #e9f8ee;
  color: #0b7e2a;
  border: 2px solid rgba(21, 193, 71, 0.35);
  border-radius: 999px;
  padding: 6px 12px;
  font-weight: 700;
  cursor: pointer;
}

#ruta-panel .btn-add-stop.btn-referencia:hover {
  background: #d9f3e3;
  border-color: var(--route-green);
}

/* Parada fila */
#ruta-panel .tl-row-via .via-input {
  background: #fff;
  color: #0c1b4d;
  border: 2px solid rgba(21, 193, 71, 0.35);
  border-radius: 10px;
  padding: 10px 12px;
  width: calc(100% - 88px);
}

#ruta-panel .tl-row-via .btn-del-via {
  min-width: 42px;
  height: 42px;
  border-radius: 10px;
  background: #16381f;
  color: #fff;
  font-size: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Switch peajes */
#ruta-panel .switch-label {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.switch {
  position: relative;
  display: inline-block;
  width: 46px;
  height: 24px;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  cursor: pointer;
  background: #ccc;
  border-radius: 24px;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  transition: 0.3s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 18px;
  width: 18px;
  left: 3px;
  bottom: 3px;
  background: #fff;
  border-radius: 50%;
  transition: 0.3s;
}

.switch input:checked + .slider {
  background: var(--route-green);
}

.switch input:checked + .slider:before {
  transform: translateX(22px);
}

/* Botones */
#ruta-panel .btn-calcular {
  background: linear-gradient(
    180deg,
    var(--route-green),
    var(--route-green-dark)
  );
  border-radius: 14px;
  padding: 14px 16px;
  width: 100%;
  color: #fff;
  font-weight: 800;
  font-size: 16px;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-shadow: 0 8px 20px rgba(21, 193, 71, 0.25);
}

#btn-open-gmaps,
#btn-mostrar-todo {
  width: 100%;
  margin-top: 10px;
  background: linear-gradient(
    180deg,
    var(--route-green),
    var(--route-green-dark)
  );
  color: #fff;
  border: none;
  border-radius: 14px;
  padding: 12px 14px;
  font-weight: 800;
  cursor: pointer;
  box-shadow: 0 8px 20px rgba(21, 193, 71, 0.25);
}

#btn-open-gmaps:hover,
#btn-mostrar-todo:hover {
  filter: brightness(1.05);
}

/* ==========================================================
   ESTRUCTURA DE LA FICHA
   ========================================================== */
.info-panel {
  position: absolute;
  top: 39%;
  right: 2%;
  transform: translateY(-40%);
  width: 420px;
  max-height: 80vh;
  background: var(--ct-white);
  color: var(--ct-gray-900);
  border-radius: var(--ct-radius-lg);
  box-shadow: var(--ct-shadow);
  z-index: 12;
  overflow-y: scroll;
}

.cerrar-btn {
  position: absolute;
  top: -2px;
  right: 4px;
  background: transparent;
  border: 0;
  color: var(--ct-text-blue);
  font-size: 20px;
  cursor: pointer;
  z-index: 2;
}

.ip-cover {
  width: 325px;
  margin: 24px auto;
  height: 92px;
  background: var(--ct-gray-100);
  overflow: hidden;
}
.ip-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ip-body {
  padding: 0px 18px 0px;
}

.ip-title {
  margin: 0;
  color: var(--Dark-Slate, #364c67);
  font-family: "acumin-pro";
  font-size: 16px !important;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
}
.ip-address {
  margin: 0.25rem 0 0.35rem;
  color: var(--ct-text-blue);
  font-size: 14px;
}
.ip-rating {
  color: #f59e0b;
  font-size: 14px;
  margin-bottom: 0.35rem;
} /* estrellas */

/* Meta en dos filas (como el mockup) */
.ip-meta2 {
  margin: 8px 0 12px;
  display: grid;
  gap: 8px;
}
.ip-meta-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
}
.ip-meta-label {
  color: var(--Dark-Slate, #364c67);
  font-family: "acumin-pro";
  font-size: 16px;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
}
.ip-meta-value {
  color: var(--Dark-Slate, #364c67);
  text-align: right;
  font-family: "acumin-pro";
  font-size: 16px;
  font-style: normal;
  font-weight: 300;
  line-height: normal;
}

/* Tabs tipo “pill” con activo vs inactivo */
.ip-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 6px 0 12px;
}
.ip-tab {
  border: 0;
  border-radius: 999px;
  padding: 10px 12px;
  background: var(--ct-light-green);
  color: var(--bp-pulse-blue, #000096);
  font-family: "acumin-pro";
  font-size: 18px;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
  cursor: pointer;
}
.ip-tabpanes {
  overflow-y: scroll;
  height: 250px;
}
.ip-tabpanes::-webkit-scrollbar {
  width: 6px;
}
#info-panel::-webkit-scrollbar {
  width: 6px;
}
.ip-tabpanes::-webkit-scrollbar-track {
  background: white;
  border-radius: 5px;
}
.ip-tabpanes::-webkit-scrollbar-thumb {
  background: var(--ct-light-green);
  border-radius: 5px;
}

#info-panel::-webkit-scrollbar-track {
  background: white;
  border-radius: 5px;
}
#info-panel::-webkit-scrollbar-thumb {
  background: var(--ct-light-green);
  border-radius: 5px;
}
.ip-tab.active {
  background: var(--ct-primary); /* CAMBIA AQUÍ: verde de pestaña activa */
  color: #fff;
}

/* Contenedores de pestañas */
.ip-tabpanes .tab {
  display: none;
}
.ip-tabpanes .tab.active {
  display: block;
}

/* ==========================================================
   TARJETAS DE CONECTORES (se generan por tu JS)
   Queremos una composición visual similar al mockup:
   - chip a la izquierda
   - columna central: arriba estado, abajo kW
   - columna derecha: precio
   Nota: tu HTML actual es:
     <div class="connector-card">
       <strong>ID</strong> <span class="status">Disponible</span>
       <div class="connector-details">
         <div><img> <br><strong>TYPE</strong><br>POWER</div>
         <div><strong>€PRICE/kWh</strong></div>
       </div>
     </div>
   Lo estilizamos con grid sin tocar el JS.
   ========================================================== */

#tab-connectors .connector-card {
  border: 2px solid var(--ct-blue-100);
  border-radius: 12px;
  background: #fff;
  padding: 12px 14px;
  margin-bottom: 10px;

  /* Grid global: chip | centro | precio  (dos filas: estado/kw) */
  display: grid;
  grid-template-columns: 58px 1fr auto;
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 6px;
  align-items: center;
  position: relative;
}

/* Ocultamos el <strong>ID> porque en el mockup no se ve */
#tab-connectors .connector-card > strong {
  display: none;
}

/* El span .status va arriba en la columna central */
#tab-connectors .connector-card .status {
  grid-column: 2 / 3;
  grid-row: 1 / 2;
  justify-self: start;
  font-weight: 800;
  font-size: 14px;
  color: #16a34a; /* CAMBIA AQUÍ color “Disponible” */
}
#tab-connectors .connector-card .status.busy {
  color: #e11d48;
} /* si más adelante marcas ‘Ocupado’ con .busy */

/* Aplanamos el interior para poder repartir chip + precio */
#tab-connectors .connector-card .connector-details {
  display: contents; /* << clave para usar sus hijos como items del grid del padre */
}

/* PRIMER HIJO: contenedor del chip + textos TYPE/POWER */
#tab-connectors .connector-card .connector-details > div:first-child {
  grid-column: 1 / 3; /* ocupar chip-col + centro para que quepa el texto */
  grid-row: 1 / 3;
  display: grid;
  grid-template-columns: 58px 1fr;
  grid-template-rows: auto auto;
  column-gap: 12px;
  align-items: center;
}

/* El icono de conector (chip a la izquierda) */
#tab-connectors .connector-card .connector-details > div:first-child img {
  grid-column: 1 / 2;
  grid-row: 1 / 3;
  width: 26px;
  height: 26px;
  padding: 10px;
  border-radius: 12px;
  display: block;
}

/* Tipo (arriba, columna central) */
#tab-connectors .connector-card .connector-details > div:first-child strong {
  grid-column: 2 / 3;
  grid-row: 1 / 2;
  font-size: 14px;
  color: var(--ct-gray-900);
}

/* POWER (kW) abajo, centrado verticalmente respecto al bloque central) */
#tab-connectors .connector-card .connector-details > div:first-child {
  /* el texto tras el <br> se mantiene, lo estilizamos así: */
  color: var(--ct-text-blue);
  font-size: 14px;
  line-height: 1.2;
}
#tab-connectors
  .connector-card
  .connector-details
  > div:first-child
  br
  + strong {
  /* por si en algún dataset meten otro strong tras el <br> */
  margin-top: -4px;
}

/* SEGUNDO HIJO: precio a la derecha ocupando ambas filas */
#tab-connectors .connector-card .connector-details > div:last-child {
  grid-column: 3 / 4;
  grid-row: 1 / 3;
  justify-self: end;
  align-self: center;
}
#tab-connectors .connector-card .connector-details > div:last-child strong {
  font-size: 16px;
  color: var(--ct-gray-900);
}

/* ==========================================================
   PESTAÑA INFORMACIÓN (orden visual: Horario / Métodos / Soporte)
   Tu JS puede inyectar <h4> y <p> en #tab-info; aquí lo dejamos bonito.
   ========================================================== */
#tab-info {
  padding: 2px 0;
}
#tab-info h4 {
  margin: 14px 0 6px;
  color: var(--ct-gray-900);
  font-size: 16px;
}
#tab-info p {
  margin: 6px 0;
  color: var(--ct-text-blue);
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ==========================================================
   BOTÓN “Añadir como parada” (lo inyecta tu JS)
   ========================================================== */
#btn-add-stop-from-panel {
  width: 100%;
  margin-top: 12px;
  padding: 12px 14px;
  background: var(--ct-primary);
  color: #fff;
  border: none;
  border-radius: 12px;
  font-weight: 800;
  cursor: pointer;
  box-shadow: 0 10px 20px rgba(34, 197, 94, 0.25);
}
#btn-add-stop-from-panel:hover {
  background: var(--ct-primary-700);
}
/* ===== Métodos de pago: sin bullets + iconos verdes ===== */
.pay-list {
  list-style: none; /* sin • */
  padding-left: 0;
  margin: 6px 0;
}
.pay-item {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--Dark-Slate, #364c67);
  font-family: "acumin-pro";
  font-size: 16px;
  font-style: normal;
  font-weight: 300;
  line-height: normal;
}
.pay-ico {
  width: 22px;
  height: 22px;
  display: inline-block;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* CAMBIA AQUÍ las rutas de los iconos por los tuyos (SVG/PNG ya en verde) */
.pay-ico--app {
  background-image: url("../iconos/Vector.svg");
}
.pay-ico--contactless {
  background-image: url("../iconos/contacless.svg");
}
.pay-ico--card {
  background-image: url("../iconos/tarjeta.svg");
}
.pay-ico--default {
  background-image: url("../iconos/pay-generic.svg");
}
/* ===== Filas de información (icono + texto) ===== */
.info-row {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ct-text-blue);
  font-size: 14px;
  margin: 6px 0;
}

/* CAMBIA AQUÍ: pon la ruta de TU SVG del teléfono */
.info-ico--phone {
  background-image: url("../iconos/ico-telefono.svg");
}

/* (Opcional) si quieres también un icono para horario */
.info-ico--clock {
  background-image: url("../iconos/ico-horario.svg");
}

/* Ya tenías esto para métodos de pago */
.pay-list {
  list-style: none;
  padding-left: 0;
  margin: 10px 0;
}
.pay-item {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--Dark-Slate, #364c67);
  font-family: "acumin-pro";
  align-items: flex-start;
  font-size: 16px;
  font-style: normal;
  font-weight: 300;
  line-height: normal;
  margin-bottom: 15px;
}
.info-ico {
  width: 22px;
  height: 22px;
  display: inline-block;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}
.info-ico--phone {
  width: 18px;
  height: 18px;
}
.info-ico--clock {
  width: 14px;
  height: 14px;
}
.conn-status.available {
  color: #199e4b;
  font-weight: 600;
} /* verde */
.conn-status.busy {
  color: #d02828;
  font-weight: 600;
} /* rojo  */

/* ─────────────────────────────
   FILTROS (panel izquierdo)
   ───────────────────────────── */
/*
ocultacion de los filtros de metodos de pago
*/
.is-disabled {
  background-color: var(--ct-gray-600) !important;
  pointer-events: none;
}
#filtro-acceso {
  display: none;
}
/*
 fin ocultacion de los filtros de metodos de pago
*/
#panel-contenido h3 {
  margin: 0 0 8px;
  font-weight: 800;
  font-size: 20px;
}
#panel-contenido .filters-sep {
  height: 2px;
  background: var(--ct-light-green);
  border: 0;
  border-radius: 2px;
  margin: 10px 0 16px;
}

/* Secciones y subtítulos */
#panel-contenido h4 {
  margin: 8px 0 10px;
  font-weight: 800;
  font-size: 14px;
}

/* ── Tipos de conector ───────────────── */
.conector-options {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}
.btn-conector {
  appearance: none;
  border: 2px solid rgba(255, 255, 255, 0.25);
  background: white;
  color: #364c67;
  border-radius: 10px;
  padding: 10px 8px;
  cursor: pointer;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  transition: transform 0.1s, border-color 0.15s, background 0.15s;
}
.btn-conector[data-type="Type1"] {
  display: none;
}
.btn-conector:hover {
  transform: translateY(-1px);
}
.btn-conector.active {
  /* si tu JS marca “activa” */
  border-radius: 10px;
  background: var(--Light-Green, #c3ffb9);
}
.btn-conector::before {
  content: "";
  width: 38px;
  height: 38px;
  border-radius: 12px;
  background-position: center;
  background-size: 22px 22px;
  background-repeat: no-repeat;
  color: var(--ct-text-blue);
}
/* CAMBIA AQUÍ los iconos de cada conector (rutas relativas a css/) */
.btn-conector[data-type="CCS"]::before {
  background-image: url("../iconos/CCS.svg");
}
.btn-conector[data-type="CHAdeMO"]::before {
  background-image: url("../iconos/CHAdeMO.svg");
}
.btn-conector[data-type="Type1"]::before {
  background-image: url("../iconos/Type1.svg");
}
.btn-conector[data-type="Type2"]::before {
  background-image: url("../iconos/Type2.svg");
}

/* ── Sliders (potencia / puntos) ───────────────── */
.slider-potencia-container {
  position: relative;
}
#slider-potencia,
#slider-puntos {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  background: transparent;
}
#slider-potencia::-webkit-slider-runnable-track,
#slider-puntos::-webkit-slider-runnable-track {
  height: 8px;
  border-radius: 999px;
  background: linear-gradient(
    90deg,
    var(--ct-light-green),
    var(--ct-light-green)
  );
  opacity: 0.9;
}
#slider-potencia::-moz-range-track,
#slider-puntos::-moz-range-track {
  height: 8px;
  border-radius: 999px;
  background: var(--ct-light-green);
}
#slider-potencia::-webkit-slider-thumb,
#slider-puntos::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 18px;
  height: 18px;
  margin-top: -5px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid var(--ct-light-green);
  box-shadow: 0 0 0 3px rgba(21, 193, 71, 0.22);
}
#slider-potencia::-moz-range-thumb,
#slider-puntos::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid var(--ct-light-green);
}

/* Marcas bajo el slider de potencia */
.slider-labels {
  position: relative;
  height: 18px;
  margin-top: 8px;
  font-size: 12px;
  color: #cfe3ff;
}
.slider-labels span {
  position: absolute;
  transform: translateX(-50%);
}

/* Badge del valor de puntos */
.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 32px;
  padding: 0 6px;
  background: white;
  color: #364c67;
  border: 2px solid rgba(21, 193, 71, 0.45);
  border-radius: 8px;
  font-weight: 800;
}

/* ── Métodos de pago (lista) ───────────────── */
.pay-filter {
  list-style: none;
  padding: 0;
  margin: 6px 0 0;
  display: grid;
  gap: 14px;
}
.pay-filter-item {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #e6f0ff;
  font-size: 14px;
}
.pay-filter-item .pay-ico {
  width: 22px;
  height: 22px;
  display: inline-block;
  background: no-repeat center/contain;
}
/* CAMBIA AQUÍ las rutas a tus SVG */
.pay-filter-item .pay-ico.app {
  background-image: url("../iconos/Vector.svg");
}
.pay-filter-item .pay-ico.contactless {
  background-image: url("../iconos/contacless.svg");
}
.pay-filter-item .pay-ico.card {
  background-image: url("../iconos/tarjeta.svg");
}

/* Separadores visuales entre secciones */
.filters-block {
  margin-top: 14px;
}
.filters-block + .filters-sep {
  margin-top: 18px;
}

/* Botones de método de pago */
.pay-buttons {
  display: grid;
  gap: 12px;
}
.pay-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  cursor: pointer;
  background: #071a6f;
  color: #e6f0ff;
  border: 2px solid rgba(255, 255, 255, 0.25);
  transition: transform 0.1s, border-color 0.15s, background 0.15s;
}
.pay-btn:hover {
  transform: translateY(-1px);
}
.pay-btn.active {
  border-color: var(--route-green);
  background: #0b1f85;
  box-shadow: 0 0 0 3px rgba(21, 193, 71, 0.18) inset;
}

.pay-btn .pay-ico {
  width: 22px;
  height: 22px;
  display: inline-block;
  background: no-repeat center/contain;
}
/* CAMBIA AQUÍ las rutas a tus iconos */
.pay-btn .pay-ico.app {
  background-image: url("../iconos/ico-telefono-blanco.svg");
}
.pay-btn .pay-ico.contactless {
  background-image: url("../iconos/contacless-blanco.svg");
}
.pay-btn .pay-ico.card {
  background-image: url("../iconos/tarjeta-blanco.svg");
}

/* ===== Tarjeta de conector (ficha derecha) ===== */
.connector-card {
  background: #fff;
  border: 1px solid rgba(12, 95, 255, 0.12);
  border-radius: 12px;
  padding: 12px 14px;
  display: grid;
  grid-template-columns: 40px 1fr auto; /* icono | info | precio */
  column-gap: 12px;
  align-items: center;
  margin-bottom: 12px;
}

.connector-ico {
  width: 36px;
  height: 36px;
}

.conn-type {
  font-weight: 800;
  color: #0b1f85;
  line-height: 1.1;
}
.conn-id {
  font-size: 12px;
  color: #6b7a99;
  margin-top: 2px;
}

.conn-price {
  color: var(--Dark-Slate, #364c67);
  text-align: right;
  font-family: "acumin-pro";
  font-size: 16px;
  font-style: normal;
  font-weight: 300;
  line-height: normal;
}

/* --- Chapita azul del tipo de conector (icono + texto) --- */
.connector-badge {
  width: 64px;
  height: 64px;
  background: #071a6f; /* << azul de tu UI */
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  color: #fff;
  font-family: "acumin-pro";
  font-size: 12px;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
}

/* Tamaño del icono dentro de la chapita */
.connector-badge__icon {
  width: 24px;
  height: 24px;
  /* Si tus SVG no son blancos, descomenta la línea de abajo:
     filter: invert(1) brightness(100);
  */
}
.connector-badge__label {
  color: #fff;
  font-family: "acumin-pro";
  font-size: 10px;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
}
/* Ajuste de la tarjeta para la chapita (columna un poco más ancha) */
.connector-card {
  grid-template-columns: 72px 1fr auto; /* chapita | info | precio */
}

.conn-col--1 {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Tipos y métricas */
.conn-power {
  font-size: 13px;
  margin-top: 0;
  color: var(--Dark-Slate, #364c67);
  font-family: "acumin-pro";
  font-size: 16px;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
}
.conn-status {
  font-size: 13px;
  font-weight: 700;
  margin-top: 4px;
}
.conn-status.available {
  color: #17b15a;
}
.conn-status.busy {
  color: #ff3b30;
}
#app-loading {
  position: absolute;
  inset: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: saturate(1.2) blur(2px);
}
#app-loading.is-visible {
  display: flex;
}
.loading-box {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
  color: #364c67;
  font: 600 14px/1.2 system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue,
    Arial, Noto Sans, sans-serif;
}
.loading-spinner {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 3px solid #e0e0e0;
  border-top-color: #2e7d32; /* verde */
  animation: spin 1s linear infinite;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
.loading-msg {
  white-space: pre-line;
}
body.is-busy {
  cursor: progress;
}
@media (min-width: 0px) and (max-width: 767px) {
  #side-panel {
    width: 95%;
    max-width: 354px;
    position: absolute;
    top: 43%;
    left: 1.8%;
    transform: translateY(-37%);
    background: white;
    border-radius: 15px;
    backdrop-filter: blur(5px);
    color: #fff;
    height: 80%;
    display: flex;
    overflow-y: auto;
    z-index: 11;
  }
  .conector-options {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  .header {
    width: unset;
    left: 0%;
  }
  .info-panel {
    width: 96%;
    max-height: 85dvh;
    top: 42%;
    transform: translateY(-37%);
    overflow-y: scroll;
  }
  .ip-tabpanes {
    height: 280px;
  }
  .mapboxgl-ctrl-geocoder {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 25px !important;
  }
  .mapboxgl-ctrl-geocoder--input {
    height: 25px !important;
  }
  .mapboxgl-ctrl-top-left {
    top: 6px !important;
    width: 90%;
    margin-left: -8%;
  }
  .mapboxgl-ctrl-top-left .mapboxgl-ctrl {
    float: left;
    margin: 85px 0 0 4px;
    border-radius: 25px !important;
    height: 29px !important;
  }
  .mapboxgl-ctrl-geocoder--icon-search {
    top: 0px !important;
    height: 25px !important;
  }
}
@media (min-height: 0px) and (max-height: 669px) {
  .info-panel {
    width: 93%;
    max-height: 85dvh;
    top: 44%;
    right: 5.8%;
    transform: translateY(-39%);
    overflow: scroll;
  }
  .mapboxgl-ctrl-top-left {
    left: 0% !important;
    top: 30px !important;
    margin-left: 5px !important;
  }
  #side-panel {
    width: 95%;
    max-width: 354px;
    position: absolute;
    top: 45%;
    left: 1%;
    transform: translateY(-37%);
    background: white;
    border-radius: 15px;
    backdrop-filter: blur(5px);
    color: #fff;
    height: 75%;
    display: flex;
    overflow-y: auto;
    z-index: 11;
  }

  h3 {
    font-size: 18px !important;
  }
  .panel-content {
    background: rgba(0, 0, 150, 0.3) !important;
  }
  #side-panel {
    background: transparent !important;
  }
  .side-nav {
    background: #fff !important;
  }
}

/*NUEVO*/
@media (min-width: 1200px) {
  .h3,
  h3 {
    font-size: 22px !important;
  }
}

button,
input,
optgroup,
select,
textarea {
  font-size: 13px !important;
}
#ruta-panel .btn-calcular {
  font-size: 14px;
}

.accordion-button {
  font-size: 21px !important;
}
