:root {
    --turmeon-rojo: #a3394f;
    --turmeon-crema: #f0e5d3;
    --turmeon-marron-oscuro: #4b1e1e;
    --turmeon-marron-medio: #6e4b3a;
    --turmeon-gris-claro: #f9f9f9;
    --turmeon-texto: #181615;
    --estrella-activa: #ffc107;
    --estrella-inactiva: #ccc;
}

body, html {
    margin: 0;
    padding: 0**Evitar que el `body` haga scroll (Si el mapa es TODO lo que quieres en la página):**
;
    height: 100%;
    font-family: 'Poppins', sans-serif;
    *   Si el mapa es la única aplicación y no hay nada más que el usuario deba ver haciendo scroll, puedes añadir    background-color: var(--turmeon-gris-claro);
    overflow: hidden; /* < al CSS:
        ```css
        body, html {
            overflow: hidden; /* Evita el scroll en--- AÑADIR ESTO PARA EVITAR EL SCROLL DEL BODY */
}
#map {
    width: 100%;
    height: 100vh; /* O la altura que desees para el mapa */
    overflow: hidden !important; /* Evitar que el propio div del mapa haga scroll */
}

/* --- Estilos del Popup (Compacto) --- */
.leaflet-popup-content-wrapper {
    background: var(--turmeon-crema);
    color: var(--turmeon-texto);
    border-radius: 10px;
    box-shadow: 0 3px 10px rgba(0,0,0,0.15);
}
.popup-content .recordatorio-voto {
    font-size: 0.75em;
    color: var(--turmeon-marron-medio, #6e4b3a);
    margin-top: 5px;
    margin-bottom: 10px;
    line-height: 1.3;
    font-style: italic; /* Opcional */
}

.leaflet-popup-content {
    margin: 0 !important;
    padding: 0;
    font-family: 'Poppins', sans-serif;
    width: auto !important;
    min-width: 230px;
    max-width: 250px;
}
.leaflet-popup-tip-container { display: none; }

.popup-content {
    padding: 10px 12px;
    text-align: center;
    position: relative;
}
.media-badge {
    position: absolute;
    top: 8px; left: 8px;
    background-color: rgba(0,0,0,0.5);
    color: white;
    padding: 2px 6px;
    border-radius: 4px;
    font-size: 0.8em;
    z-index: 10;
}
.popup-title {
    font-family: 'Georgia', serif;
    font-size: 1.25em;
    color: var(--turmeon-marron-oscuro);
    margin: 3px 0 5px 0;
    line-height: 1.2;
}
.direccion {
    font-size: 0.8em;
    color: var(--turmeon-marron-medio);
    margin: 0 0 8px 0;
    line-height: 1.3;
    min-height: 1em;
}
.tu-voto-label {
    font-size: 0.85em;
    color: var(--turmeon-marron-medio);
    margin-bottom: 4px;
    font-weight: 600;
}
.star-rating { margin-bottom: 8px; }
.star-rating .star {
    font-size: 1.6em;
    color: var(--estrella-inactiva);
    cursor: pointer;
    transition: color 0.2s;
    padding: 0 1px;
}
.star-rating .star:hover,
.star-rating .star.active { color: var(--estrella-activa); }

.rating-email {
    width: calc(100% - 16px);
    padding: 6px 8px;
    margin-bottom: 8px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 0.85em;
    box-sizing: border-box;
}
.rating-feedback {
    font-size: 0.8em;
    padding: 6px;
    border-radius: 4px;
    margin-bottom: 8px;
}
.rating-feedback.hidden { display: none; }
.rating-feedback.success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
.rating-feedback.error   { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
.rating-feedback.warning { background-color: #fff3cd; color: #856404; border: 1px solid #ffeeba; }
.rating-feedback.already-voted { background-color: #e2e3e5; color: #383d41; border: 1px solid #d6d8db; }

.popup-actions { display: flex; justify-content: space-between; gap: 8px; }
.popup-actions button {
    flex: 1;
    padding: 7px 8px;
    border-radius: 18px;
    border: none;
    font-size: 0.85em;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.2s, opacity 0.2s;
    line-height: 1.2;
}
.popup-actions .rating-submit { background-color: var(--turmeon-rojo); color: white; }
.popup-actions .rating-submit:disabled { background-color: #ccc; opacity: 0.7; cursor: not-allowed; }
.popup-actions .llevarme { background-color: #fff; color: var(--turmeon-rojo); border: 1px solid var(--turmeon-rojo); }
.popup-actions .llevarme:hover { background-color: var(--turmeon-rojo); color: white; }

/* --- Estilos del Cluster --- */
.cluster-icon { position: relative; display: flex; justify-content: center; align-items: center; }
.cluster-icon .badge {
    position: absolute; top: -5px; right: -5px;
    background-color: var(--turmeon-rojo); color: white;
    border-radius: 50%; width: 24px; height: 24px;
    display: flex; justify-content: center; align-items: center;
    font-size: 0.8em; font-weight: bold; border: 2px solid white;
}
.cluster-icon img[alt="Cluster"]:error { content: url('https://via.placeholder.com/56/A3394F/FFFFFF?text=G'); }


/* --- Estilos de Tooltip de Nombre de Bar (para búsqueda) --- */
.bar-name-tooltip {
    background-color: rgba(255, 255, 255, 0.9) !important;
    border: 1px solid var(--turmeon-marron-oscuro) !important;
    color: var(--turmeon-marron-oscuro) !important;
    padding: 3px 8px !important; border-radius: 4px !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2) !important;
    font-size: 0.85em !important; font-weight: 600 !important;
    white-space: nowrap !important; opacity: 0 !important;
    transition: opacity 0.3s ease-in-out !important;
}
.bar-name-tooltip-visible { opacity: 1 !important; }

/* --- Estilos para marcadores filtrados --- */
.marker-filtered-out .leaflet-marker-icon, /* Aplica a L.Icon */
.marker-filtered-out.custom-marker-pin /* Aplica a L.DivIcon si usas esa clase */ {
    opacity: 0.3 !important;
    filter: grayscale(80%);
}
.marker-filtered-match .leaflet-marker-icon,
.marker-filtered-match.custom-marker-pin {
    opacity: 1 !important;
}
.leaflet-marker-icon:error { content: url('https://via.placeholder.com/48/A3394F/FFFFFF?text=B');}


/* --- Estilos del Control de Búsqueda y Lista Integrada --- */
.leaflet-control-search-wrapper { /* Contenedor principal del control + lista */
    display: flex;
    flex-direction: column; /* Para que la lista esté debajo del input */
}

.search-control-container { /* Contenedor del input y botón limpiar */
    display: flex;
    align-items: center;
    background-color: white;
    padding: 5px 8px;
    border-radius: 4px;
    box-shadow: 0 1px 5px rgba(0,0,0,0.2);
    position: relative; /* Para el mensaje de "No resultados" del input */
    z-index: 1001; /* Encima de la lista */
}
.search-control-container.search-active { /* Estilo cuando el input tiene foco */
    /* Puedes añadir un borde más pronunciado o sombra */
}

.search-icon-span { font-size: 1.2em; margin-right: 5px; color: #555; }
.search-input {
    border: none; outline: none; padding: 5px;
    font-size: 0.9em; flex-grow: 1; min-width: 180px; /* Ajusta min-width */
}
.search-clear-button {
    background: none; border: none; font-size: 1.2em;
    color: #888; cursor: pointer; padding: 0 3px;
}
.search-clear-button:hover { color: #333; }

/* Mensaje "No resultados" DENTRO del control de input */
.search-results-message {
    position: absolute;
    top: calc(100% + 2px); /* Justo debajo del input */
    left: 0;
    width: 100%;
    background-color: white;
    padding: 5px;
    font-size: 0.85em;
    border: 1px solid #ddd;
    border-top: none;
    border-radius: 0 0 4px 4px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    box-sizing: border-box;
    text-align: center;
}


/* Contenedor de la lista de resultados, DENTRO del control wrapper */
.search-results-list-container {
    background-color: rgba(255, 255, 255, 0.98);
    max-height: 280px; /* Altura máxima para la lista */
    overflow-y: auto;
    border: 1px solid #ccc;
    /* border-top: none; /* Se quita si el wrapper ya une visualmente */
    border-radius: 4px; /* Redondeo completo si es un bloque separado */
    box-shadow: 0 2px 5px rgba(0,0,0,0.15);
    margin-top: 5px; /* Espacio entre el input y la lista */
    display: none; /* Oculto por defecto */
    width: 100%;
    box-sizing: border-box;
    /* position: absolute; top: 100%; left: 0; ya no es necesario si está en el flujo del wrapper */
    z-index: 1000;
}

.search-results-list-container ul { list-style-type: none; padding: 0; margin: 0; }
.search-results-list-container li {
    padding: 8px 12px;
    border-bottom: 1px solid #f0f0f0;
    cursor: pointer;
    transition: background-color 0.2s;
    font-size: 0.9em;
}
.search-results-list-container li:last-child { border-bottom: none; }
.search-results-list-container li:hover { background-color: var(--turmeon-crema, #f0e5d3); }
.search-results-list-container li .bar-nombre-lista { font-weight: 600; color: var(--turmeon-marron-oscuro, #4b1e1e); }
.search-results-list-container li .bar-direccion-lista {
    font-size: 0.85em; color: var(--turmeon-marron-medio, #6e4b3a);
    display: block; margin-top: 2px;
}
.search-results-list-container .no-results-lista {
    padding: 15px; text-align: center;
    color: #777; font-style: italic;
}

/* Mensaje de error de carga de datos general */
.load-error-message {
    position:absolute; top:50%; left:50%;
    transform:translate(-50%,-50%); background:white;
    padding:20px; border-radius:5px;
    box-shadow:0 0 10px rgba(0,0,0,0.5); z-index:10000;
    color: var(--turmeon-rojo); text-align: center; font-weight: 600;
}

/* Para DivIcon si decides usarlo para el círculo */
.custom-pin-icon-wrapper { /* ... */ }
.custom-pin-icon-circle { /* ... */ }
.custom-pin-icon-image { /* ... */ }
.leaflet-div-icon { background: none !important; border: none !important; }
.permanent-bar-name-tooltip {
    background-color: rgba(255, 255, 255, 0.9) !important;
    border: 1px solid var(--turmeon-marron-medio, #6e4b3a) !important;
    color: var(--turmeon-marron-oscuro, #4b1e1e) !important;
    padding: 2px 5px !important;
    border-radius: 3px !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.15) !important;
    font-size: 10px !important; /* Clave para reducir solapamiento */
    font-weight: 600 !important;
    white-space: nowrap !important;
    opacity: 0.95 !important; /* El opacity desde JS podría no necesitar !important */
}

.leaflet-tooltip-right.permanent-bar-name-tooltip::before {
    border-right-color: rgba(255, 255, 255, 0.9) !important;
}