/* Ocultar por defecto */
#print-map-snapshot {
    display: none !important;
}

@media print {
    @page {
        size: landscape;
        margin: 0.3cm;
    }
    
    * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    
    html, body {
        margin: 0 !important;
        padding: 0 !important;
        width: 100% !important;
        height: 100vh !important;
        overflow: hidden !important;
        background: white !important;
    }
    
    /* ⭐ OCULTAR TODO EL CONTENIDO NORMAL ⭐ */
    body > *:not(#print-layout-container) {
        display: none !important;
    }
    
    /* ⭐ CONTENEDOR DE IMPRESIÓN ⭐ */
    #print-layout-container {
        display: flex !important;
        flex-direction: row !important;
        width: 100% !important;
        height: 100vh !important;
        max-height: 100vh !important;
        margin: 0 !important;
        padding: 0 !important;
        background: white !important;
        overflow: hidden !important;
    }
    
    /* ⭐ MAPA - IZQUIERDA 65% ⭐ */
    #print-map-clone {
        flex: 0 0 65% !important;
        width: 65% !important;
        height: 100vh !important;
        max-height: 100vh !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        background: white !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: hidden !important;
    }
    
    #print-map-clone img {
        width: 100% !important;
        height: 100% !important;
        max-height: 100vh !important;
        object-fit: contain !important;
    }

    #div_spinner {
        display: none !important;
    }
    
    /* ⭐ PANEL - DERECHA 35% ⭐ */
    #print-panel-clone {
        flex: 0 0 35% !important;
        width: 35% !important;
        height: 100vh !important;
        max-height: 100vh !important;
        display: block !important;
        visibility: visible !important;
        overflow: hidden !important;
        padding: 5px !important;
        margin: 0 !important;
        background: white !important;
        border-left: 1px solid #333 !important;
    }
    
    /* ⭐ HACER TODO MÁS COMPACTO ⭐ */
    #print-panel-clone * {
        margin: 0 !important;
        padding: 0 !important;
        line-height: 1.1 !important;
        box-sizing: border-box !important;
    }
    
    #print-panel-clone .row {
        margin: 0 !important;
        padding: 0 !important;
    }
    
    #print-panel-clone .col-1,
    #print-panel-clone .col-2,
    #print-panel-clone .col-3,
    #print-panel-clone .col-4,
    #print-panel-clone .col-5,
    #print-panel-clone .col-6,
    #print-panel-clone .col-10,
    #print-panel-clone .col-12 {
        padding: 0 1px !important;
    }
    
    /* ⭐ TAMAÑOS DE FUENTE MÁS PEQUEÑOS ⭐ */
    #print-panel-clone * {
        font-size: 5px !important;
    }
    
    #print-panel-clone .fs-6,
    #print-panel-clone .fw-bold,
    #print-panel-clone h6,
    #print-panel-clone .card-header {
        font-size: 6px !important;
        font-weight: bold !important;
        margin-bottom: 1px !important;
    }
    
    #print-panel-clone .fs-5,
    #print-panel-clone h5 {
        font-size: 7px !important;
        font-weight: bold !important;
        margin-bottom: 1px !important;
    }
    
    /* ⭐ BOTONES Y CONTROLES ⭐ */
    #print-panel-clone button {
        font-size: 4px !important;
        padding: 0px 2px !important;
        margin: 0 !important;
        min-height: 8px !important;
        height: 8px !important;
    }
    
    #print-panel-clone .form-check {
        margin-bottom: 0 !important;
        padding-left: 12px !important;
    }
    
    #print-panel-clone .form-check-input {
        width: 6px !important;
        height: 6px !important;
        min-width: 6px !important;
        min-height: 6px !important;
        margin-top: 0 !important;
    }
    
    #print-panel-clone .form-switch {
        padding-left: 15px !important;
    }
    
    #print-panel-clone .form-switch .form-check-input {
        width: 12px !important;
        height: 6px !important;
    }
    
    /* ⭐ INPUTS Y SELECTS ⭐ */
    #print-panel-clone select,
    #print-panel-clone input[type="text"],
    #print-panel-clone input[type="number"] {
        font-size: 5px !important;
        padding: 0px 1px !important;
        height: 10px !important;
        min-height: 10px !important;
    }
    
    /* ⭐ TABLAS ⭐ */
    #print-panel-clone table {
        font-size: 5px !important;
        width: 100% !important;
        margin: 1px 0 !important;
    }
    
    #print-panel-clone td,
    #print-panel-clone th {
        padding: 0px 1px !important;
        font-size: 5px !important;
    }
    
    /* ⭐ CARDS Y SECCIONES ⭐ */
    #print-panel-clone .card {
        margin-bottom: 2px !important;
        border-width: 0.5px !important;
    }
    
    #print-panel-clone .card-body {
        padding: 2px !important;
    }
    
    /* ⭐ ICONOS ⭐ */
    #print-panel-clone i,
    #print-panel-clone .bi {
        font-size: 5px !important;
    }
    
    /* ⭐ BADGES Y LABELS ⭐ */
    #print-panel-clone .badge {
        font-size: 4px !important;
        padding: 0px 2px !important;
    }
    
    /* ⭐ SEPARADORES ⭐ */
    #print-panel-clone hr {
        margin: 1px 0 !important;
        border-width: 0.5px !important;
    }
    
    /* ⭐ OCULTAR SCROLLBARS ⭐ */
    #print-panel-clone::-webkit-scrollbar {
        display: none !important;
    }
    
    /* ⭐ FORZAR SALTOS DE PÁGINA ⭐ */
    #print-panel-clone {
        page-break-inside: avoid !important;
        page-break-after: avoid !important;
    }
    
    #print-panel-clone > * {
        page-break-inside: avoid !important;
    }
}
.accordion-button {
  position: relative;
  padding-right: 30px; /* Espacio para la flecha */
  cursor: pointer;
}

.accordion-button::after {
  content: '▼';
  position: absolute;
  right: 10px;
  transition: transform 0.3s ease;
}

.accordion-button.expanded::after {
  transform: rotate(180deg);
}
/* Nuevos estilos para el acordeón de municipios */
.municipios-accordion {
  margin-top: 10px;
  max-height: 300px;
  overflow-y: auto;
  border: 1px solid #e0e0e0;
  border-radius: 5px;
}
body, html {
  margin: 0;
  padding: 0;
  height: 100%;
  font-family: Arial, sans-serif;
}
.map-container {
  display: flex;
  height: 100vh;
}
#map {
  flex-grow: 1;
  height: 100%;
}
.dashboard {
  width: 300px;
  background-color: #f4f4f4;
  padding: 20px;
  box-shadow: -2px 0 5px rgba(0,0,0,0.1);
  overflow-y: auto;
}
.dashboard-section {
  background-color: white;
  border-radius: 8px;
  padding: 15px;
  margin-bottom: 15px;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.dashboard-title {
  font-weight: bold;
  margin-bottom: 10px;
  border-bottom: 2px solid #e0e0e0;
  padding-bottom: 5px;
}
.stat-item {
  display: flex;
  justify-content: space-between;
  margin-bottom: 8px;
}
.layer-control {
  background: white;
  padding: 10px;
  border-radius: 5px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
}
.color-gradient {
  width: 100%;
  height: 30px;
  background: linear-gradient(to right, #00ff00, #ffff00, #ff0000);
  border: 1px solid #000;
  margin-top: 10px;
}
.color-labels {
  display: flex;
  justify-content: space-between;
  margin-top: 5px;
}
.zoom-control {
  background: white;
  padding: 10px;
  border-radius: 5px;
  box-shadow: 0 0 5px rgba(0,0,0,0.5);
  font-size: 16px;
  z-index: 1000;
}
/* From Uiverse.io by guilhermeyohan */ 
.checkbox-wrapper-31:hover .check {
stroke-dashoffset: 0;
}

.checkbox-wrapper-31 {
position: relative;
display: inline-block;
width: 40px;
height: 40px;
}

.checkbox-wrapper-31 .background {
fill: #ccc;
transition: ease all 0.6s;
-webkit-transition: ease all 0.6s;
}

.checkbox-wrapper-31 .stroke {
  fill: none;
  stroke: #fff;
  stroke-miterlimit: 10;
  stroke-width: 2px;
  stroke-dashoffset: 100;
  stroke-dasharray: 100;
  transition: ease all 0.6s;
  -webkit-transition: ease all 0.6s;
}

.checkbox-wrapper-31 .check {
  fill: none;
  stroke: #fff;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2px;
  stroke-dashoffset: 22;
  stroke-dasharray: 22;
  transition: ease all 0.6s;
  -webkit-transition: ease all 0.6s;
}

.checkbox-wrapper-31 input[type=checkbox] {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  margin: 0;
  opacity: 0;
}

.checkbox-wrapper-31 input[type=checkbox]:hover {
  cursor: pointer;
}

.checkbox-wrapper-31 input[type=checkbox]:checked + svg .background {
  fill: #6cbe45;
}

.checkbox-wrapper-31 input[type=checkbox]:checked + svg .stroke {
  stroke-dashoffset: 0;
}

.checkbox-wrapper-31 input[type=checkbox]:checked + svg .check {
  stroke-dashoffset: 0;
}
* {
    margin: 0;
        padding: 0;
        box-sizing: border-box;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
html, body {
        margin: 0;
        padding: 0;
        width: 100%;
        height: 100%;
        overflow: hidden;
    }

    body {
        overflow: hidden;
    }
.layers-panel {
    overflow: visible; /* En lugar de overflow: auto o overflow-y: scroll */
    max-height: none; /* Quitar cualquier restricción de altura máxima */
    height: auto; /* Permitir que crezca según el contenido */
}



.panel-title {
  font-size: 18px;
  color: #333;
  margin-top: 0;
  margin-bottom: 15px;
  padding-bottom: 10px;
  border-bottom: 1px solid #eee;
}

.layer-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid #f0f0f0;
}

.layer-item:last-child {
  border-bottom: none;
}

.layer-name {
  font-size: 14px;
  font-weight: 600;
  color: #444;
  margin: 0;
}

/* Estilos para el checkbox personalizado */
.checkbox-wrapper-31 {
  position: relative;
  display: inline-block;
  width: 35px;
  height: 35px;
}

.checkbox-wrapper-31 input {
  position: absolute;
  opacity: 0;
  cursor: pointer;
  height: 0;
  width: 0;
}

.checkbox-wrapper-31 svg {
  cursor: pointer;
}

.checkbox-wrapper-31 .background {
  fill: #ccc;
  transition: all 0.3s ease;
}

.checkbox-wrapper-31 .stroke {
  fill: none;
  stroke: #fff;
  stroke-width: 2px;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-miterlimit: 10;
  stroke-dasharray: 60;
  stroke-dashoffset: 60;
  transition: all 0.3s ease;
}

.checkbox-wrapper-31 .check {
  fill: none;
  stroke: #fff;
  stroke-width: 2px;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-miterlimit: 10;
  stroke-dasharray: 30;
  stroke-dashoffset: 30;
  transition: all 0.3s ease;
}

.checkbox-wrapper-31 input:checked ~ svg .background {
  fill: #4CAF50;
}

.checkbox-wrapper-31 input:checked ~ svg .stroke {
  stroke-dashoffset: 0;
}

.checkbox-wrapper-31 input:checked ~ svg .check {
  stroke-dashoffset: 0;
}

/* Leyenda de colores */
.legend-container {
  margin-top: 20px;
  padding-top: 15px;
  border-top: 1px solid #eee;
}

.legend-title {
  font-size: 16px;
  color: #333;
  margin-top: 0;
  margin-bottom: 15px;
}

.color-gradient {
  height: 10px;
  margin-bottom: 10px;
  border-radius: 5px;
  background: linear-gradient(to right, #32f008, #F9A826, #E94F37);
}

.color-labels {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: #666;
}

.color-labels span {
  display: flex;
  align-items: center;
  margin-right: 5px;
}

.color-box {
  width: 12px;
  height: 12px;
  margin-right: 5px;
  border-radius: 2px;
}

.color-box.green {
  background-color: #32f008;
}

.color-box.yellow {
  background-color: #F9A826;
}

.color-box.red {
  background-color: #E94F37;
}
#modal_beneficiarios .table-container {
  overflow-x: auto;
  width: 100%;
}

#tabla_beneficiarios {
  width: 100%;
  min-width: 800px; /* Esto ayuda a mantener un ancho mínimo para que las columnas no se compriman demasiado */
}

#tabla_beneficiarios th, #tabla_beneficiarios td {
  white-space: nowrap; /* Para evitar que el texto se rompa en múltiples líneas */
}
.dataTables_info,.dataTables_paginate{
  display: none;
}
.custom-close-button {
  background: none; /* Elimina el fondo por defecto */
  color: #555; /* Cambia el color del icono */
  border: none; /* Elimina el borde */
  font-size: 1.2em; /* Ajusta el tamaño del icono */
  cursor: pointer; /* Cambia el cursor al pasar por encima */
  opacity: 0.7; /* Reduce la opacidad inicialmente */
  transition: opacity 0.2s ease-in-out; /* Agrega una transición suave */
  position: absolute; /* Para posicionarlo dentro del modal */
  top: 10px; /* Ajusta la posición vertical */
  right: 15px; /* Ajusta la posición horizontal */
  z-index: 1050; /* Asegura que esté por encima del contenido del modal */
}

.custom-close-button:hover {
  opacity: 1; /* Aumenta la opacidad al pasar el mouse */
  color: #333; /* Cambia el color al pasar el mouse */
}

.custom-close-button:focus {
  outline: none; /* Elimina el contorno al enfocar */
}

.login-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

.login-form {
  background-color: white;
  padding: 40px;
  border-radius: 8px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  width: 100%;
  max-width: 400px;
}

h2 {
  text-align: center;
  margin-bottom: 20px;
  font-size: 24px;
  color: #333;
}

.input-group {
  margin-bottom: 15px;
}

.input-group input {
  width: 100%;
  padding: 12px;
  border-radius: 5px;
  border: 1px solid #ccc;
  font-size: 16px;
  box-sizing: border-box;
}

.input-group input:focus {
  border-color: #007BFF;
  outline: none;
}

.btn-submit {
  width: 100%;
  padding: 12px;
  background-color: #8B0000;
  color: white;
  border: none;
  border-radius: 5px;
  font-size: 16px;
  cursor: pointer;
  transition: background-color 0.3s ease;
}

.btn-submit:hover {
  background-color: #8B0000;
}
/* Estilos generales */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

/* Estilos para el hamburger (menú móvil) */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: space-around;
  width: 30px;
  height: 21px;
  cursor: pointer;
}

.hamburger span {
  width: 100%;
  height: 4px;
  background-color: white;
}

/* Estilos responsivos para pantallas pequeñas */
@media (max-width: 768px) {
  .nav-links {
    display: none;
    width: 100%;
    flex-direction: column;
    align-items: center;
    position: absolute;
    top: 60px; /* Ajuste para que el menú no se superponga con la navbar */
    left: 0;
    background-color: #008000;
    padding: 20px;
  }

  .nav-links.active {
    display: flex;
  }

  .nav-links li {
    margin: 15px 0;
  }

  .hamburger {
    display: flex;
  }
}

/* Para asegurar que el contenido debajo de la navbar no se superponga */
section {
  margin-top: 80px;  /* Agrega margen superior para que no se cubra el contenido por la navbar fija */
}

  /* Contenedor para el nombre de usuario */
  #div_conectado {
    margin-top: auto;  /* Esto empuja el nombre de usuario hacia la parte inferior */
    padding: 20px;
    text-align: center;
  }

  #div_conectado h5 {
    margin: 0;
  }

   /* Asegúrate de que el footer se vea bien */
  .footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    text-align: center;
    padding: 10px 0;
    background-color: #f8f9fa;
    color: #6c757d;
    font-size: 14px;
}

/* Estilo para los iconos y campos */
.input-group {
    position: relative;
    margin-bottom: 20px;
}

.input-group i {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #6c757d;
}

.input-group input {
    padding-left: 30px;  /* Espacio para los iconos */
}

.btn-submit {
    background-color: #8B0000;
    color: white;
    border: none;
    padding: 10px 20px;
    font-size: 16px;
    cursor: pointer;
    width: 100%;
}

.btn-submit:hover {
    background-color: #8B0000;
}
.image-container img {
    width: 35px;  /* Ajusta el tamaño de la imagen según sea necesario */
    margin-top: 25px;
}

.image-container-navbar img {
  width: 300px;  /* Ajusta el tamaño de la imagen según sea necesario */
  margin-top: 50px;
}
#tbody_inicio {
  font-family: 'Arial', sans-serif;
  background-color: #f0f2f5;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

/* Estilos de la barra de navegación */
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: #970045;  /* Verde fuerte */
  padding: 15px 30px;
  width: 100%;  /* Asegura que la navbar ocupe todo el ancho de la página */
  position: fixed;  /* Fija la navbar en la parte superior */
  top: 0;
  left: 0;
  z-index: 1000;  /* Asegura que la navbar quede encima de otros elementos */
}

.navbar .logo a {
  color: white;
  text-decoration: none;
  font-size: 24px;
  font-weight: bold;
}

.navbar .logo img {
  height: 40px;  /* Ajusta el tamaño del logo */
  max-height: 100%;  /* Asegura que el logo no se desborde */
  width: auto;  /* Mantiene las proporciones del logo */
}

.navbar .nav-links {
  list-style: none;
  display: flex;
}

.navbar .nav-links li {
  margin-left: 20px;
}

.navbar .nav-links a {
  color: white;
  text-decoration: none;
  font-size: 18px;
  padding: 10px;
}

.navbar .nav-links a:hover {
  background-color: #575757;
  border-radius: 5px;
}

  /* Estilos para el indicador de carga */
  .map-loading-indicator {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(255, 255, 255, 0.8);
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      z-index: 9999;
  }
  
  .spinner {
      border: 6px solid #f3f3f3;
      border-top: 6px solid #3498db;
      border-radius: 50%;
      width: 50px;
      height: 50px;
      animation: spin 1s linear infinite;
      margin-bottom: 15px;
  }
  
  @keyframes spin {
      0% { transform: rotate(0deg); }
      100% { transform: rotate(360deg); }
  }
  
  /* Mejoras para la visualización del panel de control */
  .layers-panel {
      background-color: white;
      border-radius: 5px;
      box-shadow: 0 1px 5px rgba(0,0,0,0.4);
      padding: 10px;
      width: 250px;
      max-height: 600px;
      overflow-y: auto;
  }
  
  /* Deshabilitar checkboxes fuera de rango */
  .checkbox-wrapper-31.disabled {
      opacity: 0.5;
      pointer-events: none;
  }

  /* Estilos adicionales para los controles de secciones */
  .reload-control button {
    background-color: #ffffff;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 5px 10px;
    font-size: 14px;
    cursor: pointer;
    box-shadow: 0 1px 5px rgba(0,0,0,0.4);
}

.reload-control button:hover {
    background-color: #f4f4f4;
}

.progress-control {
    background-color: white;
    padding: 10px;
    border-radius: 4px;
    box-shadow: 0 1px 5px rgba(0,0,0,0.4);
}

 /* Estilos para habilitar scrolling en los acordeones */
 .accordion-content {
  max-height: 300px; /* Altura máxima del acordeón */
  overflow-y: auto;  /* Habilitar scroll vertical */
  overflow-x: hidden; /* Ocultar scroll horizontal */
  padding-right: 5px; /* Espacio para la barra de desplazamiento */
}

/* Estilos para la barra de desplazamiento (personalización opcional) */
.accordion-content::-webkit-scrollbar {
  width: 8px;
}

.accordion-content::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 4px;
}

.accordion-content::-webkit-scrollbar-thumb {
  background: #888;
  border-radius: 4px;
}

.accordion-content::-webkit-scrollbar-thumb:hover {
  background: #555;
}

/* Estilo para las listas dentro de los acordeones */
.manzanas-accordion ul, 
.municipios-accordion ul, 
.regiones-accordion ul, 
.zonas-accordion ul, 
.secciones-accordion ul {
  padding-left: 15px;
  margin-top: 10px;
  list-style-type: none;
}

.manzanas-accordion li, 
.municipios-accordion li, 
.regiones-accordion li, 
.zonas-accordion li, 
.secciones-accordion li {
  margin-bottom: 5px;
}
 /* Indicador de scroll */
 .has-more-content {
  position: relative;
}

.has-more-content::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 20px;
  background: linear-gradient(to bottom, transparent, rgba(255, 255, 255, 0.9));
  pointer-events: none;
}

.casilla-icon {
    transition: transform 0.2s ease;
    filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));
}

.casilla-popup {
    font-family: Arial, sans-serif;
    min-width: 200px;
}

.casilla-popup h4 {
    margin: 0 0 10px 0;
    color: #333;
    border-bottom: 1px solid #ddd;
    padding-bottom: 5px;
}

.casillas-list {
    max-height: 300px;
    overflow-y: auto;
    list-style: none;
    padding: 0;
    margin: 0;
}

.casilla-item {
    padding: 5px 0;
    border-bottom: 1px solid #eee;
}

.casilla-label {
    display: flex;
    align-items: center;
    cursor: pointer;
    padding: 5px;
    border-radius: 3px;
    transition: background-color 0.2s ease;
}

.casilla-label:hover {
    background-color: #f5f5f5;
}

.casilla-checkbox {
    margin-right: 8px;
}

.casilla-name {
    flex: 1;
    font-size: 14px;
}

.no-data, .error {
    text-align: center;
    padding: 20px;
    color: #666;
    font-style: italic;
}

.error {
    color: #d32f2f;
}
.marker-cluster-small {
    background: linear-gradient(135deg, #3498db, #2980b9);
    border: 3px solid #ffffff;
    border-radius: 50%;
    box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}

.marker-cluster-medium {
    background: linear-gradient(135deg, #e74c3c, #c0392b);
    border: 3px solid #ffffff;
    border-radius: 50%;
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}

.marker-cluster-large {
    background: linear-gradient(135deg, #f39c12, #d68910);
    border: 3px solid #ffffff;
    border-radius: 50%;
    box-shadow: 0 6px 16px rgba(0,0,0,0.5);
}

.cluster-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: white;
    font-weight: bold;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.7);
}

.cluster-number {
    font-size: 12px;
    line-height: 1;
    margin-bottom: 2px;
}

.cluster-icon {
    font-size: 14px;
    line-height: 1;
}

.casilla-icon-clustered {
    transition: opacity 0.2s ease;
    filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));
}

.casilla-popup-clustered {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    min-width: 250px;
}

.popup-header {
    background: linear-gradient(135deg, #3498db, #2980b9);
    color: white;
    padding: 10px;
    margin: -10px -10px 10px -10px;
    border-radius: 6px 6px 0 0;
}

.casilla-title {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
}

.popup-body {
    padding: 5px 0;
}

.info-row {
    display: flex;
    justify-content: space-between;
    margin: 8px 0;
    padding: 4px 0;
    border-bottom: 1px solid #ecf0f1;
}

.info-label {
    font-weight: 600;
    color: #2c3e50;
    flex: 1;
}

.info-value {
    color: #555;
    flex: 1.5;
    text-align: right;
}

.custom-cluster-popup .leaflet-popup-content-wrapper {
    border-radius: 8px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.2);
    padding: 10px;
}

.leaflet-popup-tip {
    background: #3498db;
}

.marker-cluster-small {
    background: linear-gradient(135deg, #3498db, #2980b9);
    border: 2px solid #ffffff;
    border-radius: 50%;
    box-shadow: 0 3px 8px rgba(0,0,0,0.3);
    transition: transform 0.2s ease;
}

.marker-cluster-small:hover {
    transform: scale(1.1);
}

.cluster-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: white;
    font-weight: 600;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.8);
}

.casilla-icon-clustered {
    transition: all 0.2s ease;
    filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.4));
}

.casilla-popup-clustered {
    font-family: 'Segoe UI', sans-serif;
    min-width: 280px;
    border-radius: 8px;
}

.popup-header {
    background: linear-gradient(135deg, #3498db, #2980b9);
    color: white;
    padding: 12px;
    margin: -12px -12px 12px -12px;
    border-radius: 8px 8px 0 0;
}

.info-row {
    display: flex;
    justify-content: space-between;
    margin: 8px 0;
    padding: 6px 0;
    border-bottom: 1px solid #ecf0f1;
}

.info-label {
    font-weight: 600;
    color: #2c3e50;
}

.info-value {
    color: #555;
    font-weight: 500;
}
/* Estilos para clusters de Infonavit */
.marker-cluster-infonavit {
    background-color: rgba(0, 123, 255, 0.6);
    border: 2px solid rgba(0, 123, 255, 0.8);
    border-radius: 50%;
    text-align: center;
    color: white;
    font-weight: bold;
    font-size: 12px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.marker-cluster-infonavit div {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

.marker-cluster-infonavit.marker-cluster-small {
    width: 30px;
    height: 30px;
    font-size: 10px;
}

.marker-cluster-infonavit.marker-cluster-medium {
    width: 40px;
    height: 40px;
    font-size: 12px;
}

.marker-cluster-infonavit.marker-cluster-large {
    width: 50px;
    height: 50px;
    font-size: 14px;
    background-color: rgba(0, 123, 255, 0.8);
}

.marker-cluster-infonavit:hover {
    background-color: rgba(0, 123, 255, 0.9);
    transform: scale(1.1);
    transition: all 0.2s ease;
}

/* Estilos para la barra de progreso de Infonavit */
        .infonavit-progress-container {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: white;
            padding: 25px;
            border-radius: 12px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
            z-index: 10000;
            min-width: 400px;
            display: none;
        }

        .infonavit-progress-container.active {
            display: block;
        }

        .infonavit-progress-header {
            display: flex;
            align-items: center;
            margin-bottom: 15px;
        }

        .infonavit-progress-header i {
            color: #0066cc;
            font-size: 24px;
            margin-right: 12px;
        }

        .infonavit-progress-title {
            font-size: 18px;
            font-weight: 600;
            color: #333;
        }

        .infonavit-progress-stats {
            display: flex;
            justify-content: space-between;
            margin-bottom: 15px;
            font-size: 14px;
            color: #666;
        }

        .infonavit-progress-bar-wrapper {
            width: 100%;
            height: 24px;
            background-color: #f0f0f0;
            border-radius: 12px;
            overflow: hidden;
            position: relative;
            margin-bottom: 10px;
        }

        .infonavit-progress-bar {
            height: 100%;
            background: linear-gradient(90deg, #0066cc 0%, #0080ff 100%);
            width: 0%;
            transition: width 0.3s ease;
            border-radius: 12px;
            position: relative;
        }

        .infonavit-progress-bar::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: linear-gradient(
                45deg,
                rgba(255, 255, 255, 0.2) 25%,
                transparent 25%,
                transparent 50%,
                rgba(255, 255, 255, 0.2) 50%,
                rgba(255, 255, 255, 0.2) 75%,
                transparent 75%,
                transparent
            );
            background-size: 40px 40px;
            animation: move 1s linear infinite;
        }

        @keyframes move {
            0% {
                background-position: 0 0;
            }
            100% {
                background-position: 40px 40px;
            }
        }

        .infonavit-progress-percentage {
            font-size: 16px;
            font-weight: bold;
            color: #0066cc;
            text-align: center;
            margin-bottom: 5px;
        }

        .infonavit-progress-status {
            font-size: 13px;
            color: #888;
            text-align: center;
            font-style: italic;
        }

        .infonavit-progress-time {
            font-size: 12px;
            color: #999;
            text-align: center;
            margin-top: 10px;
        }

        /* Estilos para clusters de zoom bajo */
.marker-cluster-xs div {
    background-color: rgba(0, 123, 255, 0.8);
    width: 20px;
    height: 20px;
    margin-left: -10px;
    margin-top: -10px;
    border-radius: 50%;
    border: 1px solid #fff;
}

.marker-cluster-xs span {
    color: white;
    font-size: 10px;
    font-weight: bold;
    line-height: 20px;
}

.marker-cluster-xl div {
    background-color: rgba(0, 123, 255, 0.9);
    width: 50px;
    height: 50px;
    margin-left: -25px;
    margin-top: -25px;
    border-radius: 50%;
    border: 2px solid #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}

.marker-cluster-xl span {
    color: white;
    font-size: 14px;
    font-weight: bold;
    line-height: 50px;
}

/* Marcador simple para zoom bajo */
.infonavit-marker-simple {
    border: none !important;
    background: transparent !important;
}
/* Mensajes de alerta */
.alert {
    padding: 12px 15px;
    margin-bottom: 20px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    animation: slideDown 0.3s ease;
}

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.alert-error {
    background-color: #fee;
    color: #c33;
    border: 1px solid #fcc;
}

.alert-success {
    background-color: #efe;
    color: #3c3;
    border: 1px solid #cfc;
}

.alert-warning {
    background-color: #ffe;
    color: #cc3;
    border: 1px solid #ffc;
}

.alert i {
    font-size: 16px;
}

/* Errores inline en campos */
.error-text {
    color: #c33;
    font-size: 12px;
    display: block;
    margin-top: 5px;
    margin-left: 30px; /* Alineado con el input */
}

.input-group.has-error input {
    border-color: #c33;
}