.vlc-sust {
    --vlc-sust-azul: #123b5d;
    --vlc-sust-acento: #087ea4;
    --vlc-sust-borde: #dce5eb;
    --vlc-sust-fondo: #f5f8fa;
    color: #243746;
    font-family: inherit;
    line-height: 1.6;
    overflow-wrap: anywhere;
}
.vlc-sust *, .vlc-sust *::before, .vlc-sust *::after { box-sizing: border-box; }
.vlc-sust h1, .vlc-sust h2, .vlc-sust h3 { color: var(--vlc-sust-azul); font-family: inherit; line-height: 1.2; }
.vlc-sust h1 { font-size: clamp(2rem, 5vw, 3.3rem); margin: 0 0 18px; }
.vlc-sust h2 { font-size: clamp(1.3rem, 3vw, 1.8rem); margin: 0 0 16px; }
.vlc-sust h3 { font-size: 1.2rem; margin: 0 0 10px; }
.vlc-sust p { margin: 0 0 14px; }
.vlc-sust a { color: #076b8a; text-underline-offset: .18em; }
.vlc-sust a:hover { text-decoration-thickness: 2px; }
.vlc-sust :focus-visible { outline: 3px solid #123b5d; outline-offset: 4px; }
.vlc-sust .vlc-sust-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 46px; padding: 11px 18px; border: 1px solid var(--vlc-sust-azul);
    border-radius: 9px; background: var(--vlc-sust-azul); color: #fff;
    font: inherit; font-weight: 700; text-decoration: none; cursor: pointer; text-align: center;
}
.vlc-sust .vlc-sust-btn-secundario { background: #fff; color: var(--vlc-sust-azul); }
.vlc-sust .vlc-sust-btn:disabled { opacity: .65; cursor: wait; }
.vlc-sust-cabecera, .vlc-sust-seccion { margin-bottom: 30px; }
.vlc-sust-kicker { font-weight: 700; font-size: .85rem; color: #456071; }
.vlc-sust-hero { padding: clamp(22px, 5vw, 46px); margin-bottom: 32px; border-radius: 18px; background: #edf5f9; }
.vlc-sust-hero > p { max-width: 750px; font-size: 1.08rem; }
.vlc-sust-buscador { margin: 22px 0; }
.vlc-sust-busqueda label, .vlc-sust-campo label { display: block; font-weight: 700; margin-bottom: 8px; }
.vlc-sust-busqueda-fila { display: flex; flex-direction: column; gap: 10px; }
.vlc-sust input, .vlc-sust select { width: 100%; min-width: 0; min-height: 46px; padding: 11px 13px; border: 1px solid #8ba1af; border-radius: 8px; font: inherit; background: #fff; color: #243746; }
.vlc-sust input::placeholder { color: #556d7c; opacity: 1; }
.vlc-sust-estado { margin: 12px 0; font-size: .95rem; }
.vlc-sust-estado:empty { display: none; }
.vlc-sust-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; list-style: none !important; padding: 0 !important; margin: 18px 0 !important; }
.vlc-sust-card { min-width: 0; padding: 20px; border: 1px solid var(--vlc-sust-borde); border-radius: 13px; background: #fff; }
.vlc-sust-card > a { font-weight: 700; }
.vlc-sust-card h3 a, .vlc-sust-resultados a { text-decoration: none; }
.vlc-sust-card p { font-size: .95rem; }
.vlc-sust-etiqueta { display: inline-block; padding: 4px 8px; border-radius: 6px; background: #edf5f9; font-size: .85rem; }
.vlc-sust-etiqueta:empty { display: none; }
.vlc-sust-panel, .vlc-sust-fuente { margin: 22px 0; padding: 22px; border: 1px solid var(--vlc-sust-borde); border-radius: 13px; background: #fff; }
.vlc-sust-prosa > :last-child, .vlc-sust-fuente > :last-child { margin-bottom: 0; }
.vlc-sust-prosa ul, .vlc-sust-prosa ol { padding-left: 24px; }
.vlc-sust-fuente { background: var(--vlc-sust-fondo); font-size: .95rem; }
.vlc-sust-fuente h2 { font-size: 1.15rem; }
.vlc-sust-migas { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; font-size: .9rem; }
.vlc-sust-aviso { padding: 14px 16px; border-left: 4px solid #a16b09; border-radius: 5px; background: #fff6df; color: #694a10; }
.vlc-sust-aviso-neutro, .vlc-sust-vacio { padding: 18px; border-radius: 9px; background: var(--vlc-sust-fondo); }
.vlc-sust-ayuda { font-size: .88rem; color: #456071; }
.vlc-sust-acciones, .vlc-sust-paginacion { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-top: 18px; }
.vlc-sust-enlaces { padding-left: 22px; }
.vlc-sust-enlaces li { margin-bottom: 9px; }
.vlc-sust-enlace { display: inline-block; margin: 10px 0; font-weight: 700; }
.vlc-sust-filtros { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; padding: 20px; border: 1px solid var(--vlc-sust-borde); border-radius: 13px; align-items: end; }
.vlc-sust-paginacion span { font-size: .9rem; }
@media (min-width: 600px) {
    .vlc-sust-busqueda-fila { flex-direction: row; }
    .vlc-sust-busqueda-fila input { flex: 1; }
    .vlc-sust-busqueda-fila button { flex-shrink: 0; }
    .vlc-sust-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .vlc-sust-filtros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1000px) {
    .vlc-sust-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .vlc-sust-filtros { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; }
    .vlc-sust-filtros > .vlc-sust-enlace { grid-column: 1 / -1; }
}
.vlc-sust-mapa-bloque { margin: 20px 0; }
.vlc-sust-mapa { position: relative; z-index: 0; height: 360px; border: 1px solid var(--vlc-sust-borde); border-radius: 12px; background: #edf1f4; }
.vlc-sust .leaflet-container { font-family: inherit; font-size: 1rem; }
.vlc-sust-marker, .vlc-sust-simbolo { display: flex; align-items: center; justify-content: center; border: 2px solid #fff; border-radius: 50%; color: #fff; font-weight: 800; box-shadow: 0 2px 5px #0004; }
.vlc-sust .leaflet-marker-icon.vlc-sust-marker { display: flex; }
.vlc-sust-marker-ecopunto { background: #123b5d; }
.vlc-sust-marker-especifico { background: #076b8a; }
.vlc-sust-marker-institucion { background: #66518b; }
.vlc-sust-marker-temporal { background: #805614; }
.vlc-sust-simbolo { width: 28px; height: 28px; flex-shrink: 0; }
.vlc-sust-leyenda { display: flex; gap: 14px; flex-wrap: wrap; list-style: none !important; padding: 0 !important; margin: 16px 0 !important; font-size: .85rem; }
.vlc-sust-leyenda li { display: flex; gap: 7px; align-items: center; }
.vlc-sust-popup p { margin: 10px 0; }
.vlc-sust-popup a { display: inline-flex; align-items: center; min-height: 44px; margin-right: 12px; font-weight: 700; }
@media (max-width: 599px) { .vlc-sust-mapa { height: 300px; } }
/* Marcador agrupado: varios puntos con la misma coordenada. */
.vlc-sust-marker.vlc-sust-marker-grupo { background: #001142; color: #fff; font-size: 15px; box-shadow: 0 0 0 4px rgba(0, 17, 66, .25); }
.vlc-sust-popup-grupo { max-height: 280px; overflow-y: auto; }
.vlc-sust-popup-grupo .vlc-sust-popup-item { margin-top: 10px; padding-top: 10px; border-top: 1px solid #dce5eb; }
.vlc-sust-popup-grupo .vlc-sust-popup-item strong { display: block; }
