/* =========================
   LIVESIC · EVENTS / FILTERS / BUTTONS
   ========================= */

.livesic-events-wrapper {
    display: grid;
    gap: 20px;
}

.livesic-filters-modern {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 16px;
    padding: 16px;
    border: 1px solid #e5e7eb;
    border-radius: 16px;
    background: #fff;
    box-sizing: border-box;
}

.livesic-filters-modern > * {
    min-width: 0;
}

.livesic-field {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.livesic-field label {
    display: block;
    margin: 0 0 7px;
    font-size: 12px;
    line-height: 1.2;
    font-weight: 700;
    color: #111827;
    letter-spacing: 0.02em;
}

.livesic-field input,
.livesic-field select,
.livesic-field textarea {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    min-height: 44px;
    padding: 10px 13px;
    border: 1.5px solid #d1d5db;
    border-radius: 10px;
    background: #fff;
    font-size: 14px;
    line-height: 1.25;
    color: #111827;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

.livesic-field select {
    appearance: none;
    -webkit-appearance: none;
    padding-right: 38px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1.5 6 6.5l5-5' stroke='%236b7280' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-position: right 14px center;
    background-repeat: no-repeat;
    background-size: 12px 8px;
}

.livesic-field input:focus,
.livesic-field select:focus,
.livesic-field textarea:focus {
    outline: none;
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.13);
    /* background-COLOR, nunca la abreviatura "background": esta regla (0,2,1) gana a
       .livesic-field select (0,1,1), así que con el atajo se reseteaban también
       background-repeat/position/size del chevron. En claro el <select> perdía la
       flecha al enfocarlo y en OSCURO era peor: la flecha la pone
       :root[data-lv-theme="dark"] .livesic-field select (0,3,1), que SÍ sobrevive,
       y quedaba en mosaico (repeat, 0 0, auto) = zigzag claro por todo el campo al
       elegir una opción. Mismo motivo del !important de livesic-regions.css. */
    background-color: #fff;
}

.livesic-field--checkbox {
    justify-content: flex-end;
}

.livesic-field--checkbox label {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    min-height: 44px;
    font-size: 14px;
    font-weight: 600;
}

.livesic-field--checkbox input[type="checkbox"] {
    width: 18px;
    height: 18px;
    min-width: 18px;
    max-width: 18px;
    padding: 0;
    margin: 0;
}

.livesic-field--range {
    justify-content: flex-start;
}

.livesic-range-wrap {
    display: grid;
    gap: 10px;
    min-width: 0;
}

.livesic-field--range input[type="range"] {
    width: 100%;
    height: 24px;
    min-height: 24px;
    min-width: 0;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    accent-color: #111827;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
}

.livesic-range-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-size: 12px;
    color: #6b7280;
}

.livesic-range-min,
.livesic-range-value {
    white-space: nowrap;
}

.livesic-range-value {
    font-weight: 700;
    color: #111827;
}

.livesic-field--range input[type="range"]::-webkit-slider-runnable-track {
    height: 6px;
    border-radius: 999px;
    background: #e5e7eb;
}

.livesic-field--range input[type="range"]::-webkit-slider-thumb {
    width: 18px;
    height: 18px;
    margin-top: -6px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: #111827;
    box-shadow: 0 2px 7px rgba(17, 24, 39, 0.28);
    -webkit-appearance: none;
    appearance: none;
}

.livesic-field--range input[type="range"]::-moz-range-track {
    height: 6px;
    border-radius: 999px;
    background: #e5e7eb;
}

.livesic-field--range input[type="range"]::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: #111827;
    box-shadow: 0 2px 7px rgba(17, 24, 39, 0.28);
}

.livesic-filter-actions {
    grid-column: 1 / -1;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}

.livesic-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 14px;
    border-radius: 10px;
    border: 1px solid #d1d5db;
    background: #fff;
    color: #111827;
    text-decoration: none;
    cursor: pointer;
    box-sizing: border-box;
    font-size: 14px;
    line-height: 1.2;
    white-space: nowrap;
}

.livesic-btn--primary {
    background: #111827;
    color: #fff;
    border-color: #111827;
}

.livesic-btn--ghost {
    background: #fff;
    color: #2563eb;
    border-color: #2563eb;
}


/* =========================
   LIVESIC · MAP
   ========================= */

.livesic-map-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin: 0;
}

.livesic-map-toolbar__actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.livesic-map-container {
    display: grid;
    gap: 12px;
}

body.livesic-popup-open .livesic-map-container {
    position: relative;
    z-index: 10000;
}

/* ── Hero map: filtros flotantes sobre el mapa ── */
.livesic-map-container--hero {
    position: relative;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    border-radius: 16px;
    /* No overflow:hidden aquí — recortaría el popup de Leaflet.
       El borde redondeado se aplica al map-box directamente. */
    border: 1px solid #e5e7eb;
}

.livesic-map-container--hero.filters-open {
    /* ya no necesita override de overflow */
}

/* El map-box define altura y border-radius. Sin overflow:hidden para no recortar el popup. */
.livesic-map-container--hero .livesic-map-box {
    position: relative;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    height: 560px;
    min-height: 560px;
    border: 0;
    border-radius: 16px;
    /* Sin overflow:hidden */
}

.livesic-map-container--hero .livesic-map-box > div {
    max-width: 100%;
    box-sizing: border-box;
    height: 560px !important;
    min-height: 560px !important;
    border-radius: 16px;
    /* clip-path eliminado: recortaba el popup de Leaflet.
       overflow:hidden en el map-box + border-radius logra las esquinas
       redondeadas sin recortar el popup (que se eleva fuera del flujo
       gracias a z-index). */
}

/* Overlay que se sitúa sobre el mapa */
.livesic-map-locating {
    display: none;
    position: absolute;
    inset: 0;
    z-index: 900;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 10px;
    width: auto !important;
    max-width: 100%;
    box-sizing: border-box;
    overflow: hidden;
    height: auto !important;
    min-height: 0 !important;
    padding: 22px;
    border-radius: 16px;
    color: #102033;
    text-align: center;
    background:
        linear-gradient(135deg, rgba(248, 250, 252, 0.86), rgba(239, 246, 255, 0.82)),
        radial-gradient(circle at 50% 32%, rgba(37, 99, 235, 0.18), transparent 38%),
        rgba(15, 23, 42, 0.08);
    backdrop-filter: blur(8px) saturate(1.05);
    -webkit-backdrop-filter: blur(8px) saturate(1.05);
    pointer-events: auto;
}

.livesic-map-locating::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(340px, calc(100% - 36px));
    height: 210px;
    transform: translate(-50%, -50%);
    border: 1px solid rgba(226, 232, 240, 0.95);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 20px 54px rgba(15, 23, 42, 0.18), 0 2px 10px rgba(15, 23, 42, 0.06);
}

.livesic-map-locating > * {
    position: relative;
    z-index: 1;
}

.livesic-map-locating__clock {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border: 1px solid rgba(37, 99, 235, 0.16);
    border-radius: 999px;
    color: #2563eb;
    background:
        linear-gradient(180deg, #fff, #eff6ff);
    box-shadow: 0 12px 28px rgba(37, 99, 235, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.92);
}

.livesic-map-locating__clock::before {
    content: "";
    position: absolute;
    inset: -7px;
    border-radius: inherit;
    border: 2px solid rgba(37, 99, 235, 0.12);
    border-top-color: #2563eb;
    animation: livesic-clock-spin 1.1s linear infinite;
}

.livesic-map-locating__clock svg {
    filter: drop-shadow(0 2px 4px rgba(37, 99, 235, 0.16));
}

.livesic-map-locating strong {
    max-width: min(280px, 100%);
    font-size: 18px;
    line-height: 1.2;
    font-weight: 850;
    color: #0f172a;
}

.livesic-map-locating span {
    max-width: min(260px, 100%);
    font-size: 13px;
    line-height: 1.35;
    color: #475569;
}

.livesic-map-container--hero .livesic-map-box > .livesic-map-locating {
    width: auto !important;
    height: auto !important;
    min-height: 0 !important;
    box-sizing: border-box;
}

@keyframes livesic-clock-spin {
    to {
        transform: rotate(360deg);
    }
}

@media (max-width: 760px) {
    .livesic-map-container--hero.is-locating-location .livesic-map-locating {
        display: flex;
    }

    .livesic-map-locating {
        padding: 18px;
    }

    .livesic-map-locating::before {
        width: min(320px, calc(100% - 24px));
    }
}

.livesic-map-overlay {
    position: absolute;
    top: 12px;
    left: 12px;
    right: 12px;
    /* z-index 650: por encima de marcadores (600) pero por debajo del popup-pane
       de Leaflet (700). El overlay ahora está dentro del map-box, así que comparte
       contexto de apilamiento con los panes internos de Leaflet. */
    z-index: 650;
    display: flex;
    flex-direction: column;
    gap: 8px;
    pointer-events: none;
}

.livesic-map-overlay > * {
    pointer-events: auto;
}

.livesic-map-results-count {
    align-self: flex-start;
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    width: fit-content;
    max-width: 100%;
    padding: 7px 11px;
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: 999px;
    background: rgba(17, 24, 39, 0.66);
    color: rgba(255, 255, 255, 0.86);
    box-shadow: 0 8px 22px rgba(15, 23, 42, 0.18);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    font-family: inherit;
    font-size: 12px;
    line-height: 1.15;
    font-weight: 650;
    text-align: left;
    cursor: pointer;
}

.livesic-map-results-count__line,
.livesic-map-results-count__hint {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

/* "Mostrar lista" solo tiene sentido en móvil, donde la lista va oculta */
.livesic-map-results-count__hint {
    display: none;
    color: rgba(255, 255, 255, 0.78);
    font-weight: 600;
}

/* El 📍 del contador de resultados es un emoji, igual que el ⚡ del de promocionados
   (se leen como pareja). Se le quita el line-height heredado para no descuadrar la línea. */
.livesic-map-results-count__icon {
    flex: 0 0 auto;
    font-size: 13px;
    line-height: 1;
}

.livesic-map-results-count strong {
    color: #fff;
    font-size: 13px;
    font-weight: 850;
}

.livesic-map-empty-filter-message {
    color: #fde68a;
    font-size: 11px;
    line-height: 1.25;
    font-weight: 750;
}

/* Contador de eventos PROMOCIONADOS que hay ahora mismo en el mapa. Va justo debajo del de
   resultados y comparte su estilo "glass", pero teñido con el naranja de promoción (#f13800,
   el mismo del halo del marcador y del distintivo del popup) para que se lean como pareja sin
   confundirse. Es informativo: sin cursor de pulsación ni acción. Solo se pinta si hay alguno. */
.livesic-map-promoted-count {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    width: fit-content;
    max-width: 100%;
    padding: 6px 11px;
    border: 1px solid rgba(241, 56, 0, 0.55);
    border-radius: 999px;
    background: rgba(88, 20, 0, 0.62);
    color: rgba(255, 255, 255, 0.88);
    box-shadow: 0 8px 22px rgba(15, 23, 42, 0.18);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    font-family: inherit;
    font-size: 12px;
    line-height: 1.15;
    font-weight: 650;
}

.livesic-map-promoted-count strong {
    color: #fff;
    font-size: 13px;
    font-weight: 850;
}

/* Variante "apagada": con "Ocultar eventos promocionados" activo la píldora no cuenta nada,
   AVISA de que no se muestran (2026-08-01). Mismo sitio y mismo ⚡, pero desaturada (grises en
   vez del naranja de promoción) y algo translúcida para leerse como estado, no como dato. */
.livesic-map-promoted-count--off {
    border-color: rgba(148, 163, 184, 0.55);
    background: rgba(15, 23, 42, 0.6);
    color: rgba(255, 255, 255, 0.78);
}

.livesic-map-promoted-count--off .livesic-map-promoted-count__icon {
    opacity: 0.65;
}

/* El ⚡ es el mismo icono del botón "Promocionar" de Mi perfil. Se le quita el line-height
   heredado para que no descuadre la píldora. */
.livesic-map-promoted-count__icon {
    font-size: 13px;
    line-height: 1;
    flex: 0 0 auto;
}

/* Botón de geolocalización: control flotante en la esquina superior derecha del mapa (icono de
   diana GPS). Hereda el estilo glass de .livesic-btn--map; aquí cuadrado, icon-only y posicionado
   en la esquina (absoluto respecto al overlay, que ya es position:absolute). Altura fija porque,
   fuera de la fila flex, ya no estira a la altura de los otros botones. */
.livesic-map-locate {
    position: absolute;
    top: 0;
    right: 0;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    padding: 0;
    width: 40px;
    min-width: 40px;
    height: 40px;
}

.livesic-map-locate svg {
    width: 19px;
    height: 19px;
    display: block;
}

.livesic-map-locate:active svg {
    transform: scale(0.9);
}

/* Cabecera de la hoja de resultados (solo visible en móvil con la hoja abierta) */
.livesic-events-list-head {
    display: none;
}

.livesic-events-list-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    flex: 0 0 auto;
    padding: 0;
    border: 1px solid #e5e7eb;
    border-radius: 999px;
    background: #fff;
    color: #111827;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

/* Barra superior: búsqueda + botones */
.livesic-map-topbar {
    display: flex;
    gap: 8px;
    align-items: center;
}

.livesic-map-search {
    flex: 1;
    position: relative;
    min-width: 0;
}

.livesic-map-search__icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    color: #6b7280;
    pointer-events: none;
}

.livesic-map-search__input {
    width: 100%;
    box-sizing: border-box;
    padding: 10px 12px 10px 36px;
    border: 1px solid rgba(255,255,255,0.6);
    border-radius: 10px;
    background: rgba(255,255,255,0.92);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    font-size: 14px;
    line-height: 1.2;
    color: #111827;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}

.livesic-map-search__input:focus {
    outline: none;
    border-color: #111827;
    background: #fff;
}

.livesic-map-topbar__actions {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
}

/* Botón de mapa (sobre el mapa, glassmorphism) */
.livesic-btn--map {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 12px;
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,0.5);
    background: rgba(255,255,255,0.88);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: #111827;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    white-space: nowrap;
    line-height: 1.2;
    text-decoration: none;
}

.livesic-btn--map:hover {
    background: rgba(255,255,255,0.98);
}

.livesic-btn--map.livesic-btn--active {
    background: #111827;
    color: #fff;
    border-color: #111827;
}

/* Panel de información (promocionados + resultados). En escritorio es transparente para
   el layout (display:contents) y las dos píldoras quedan exactamente donde estaban; en
   móvil se convierte en la tarjeta de la primera fila de la barra compacta. */
.livesic-map-info {
    display: contents;
}

/* Controles que SOLO existen en la barra compacta de móvil (≤760px): iconos de lupa y
   lista, icono del botón de filtros e interruptor "Gratuito". */
.livesic-map-iconbtn,
.livesic-map-free-toggle,
.livesic-map-filters-icon {
    display: none;
}

.livesic-map-filter-summary {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    max-width: 100%;
    width: fit-content;
    padding: 6px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 14px;
    background: rgba(17, 24, 39, 0.38);
    color: #fff;
    box-shadow: 0 10px 26px rgba(15, 23, 42, 0.18);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    cursor: pointer;
}

.livesic-map-filter-summary:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.9);
    outline-offset: 3px;
}

.livesic-map-filter-chip[data-livesic-filter-summary="price"],
.livesic-map-filter-chip[data-livesic-filter-summary="genre"] {
    display: none;
}

.livesic-map-filter-chip {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 9px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14);
    font-size: 12px;
    line-height: 1.15;
}

.livesic-map-filter-chip__icon {
    width: 16px;
    height: 16px;
    flex: 0 0 auto;
    color: rgba(255, 255, 255, 0.86);
}

.livesic-map-filter-chip span {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
    color: rgba(255, 255, 255, 0.7);
    font-weight: 650;
}

.livesic-map-filter-chip strong {
    min-width: 0;
    max-width: 180px;
    overflow: hidden;
    color: #fff;
    font-weight: 800;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Panel de filtros colapsable */
.livesic-map-filters-panel {
    background: rgba(255,255,255,0.97);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(226, 232, 240, 0.92);
    border-radius: 16px;
    padding: 14px;
    box-shadow: 0 18px 44px rgba(15, 23, 42, 0.16), 0 4px 14px rgba(15, 23, 42, 0.08);
    display: flex;
    flex-direction: column;
    gap: 14px;
    /* El scroll interno y el max-height del panel los define livesic-ui.css
       (capa de refresco visual); aquí solo va la barra de acciones fija (abajo). */
}

.livesic-map-filters-panel[hidden] {
    display: none;
}

.livesic-filters-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
}

.livesic-map-filters-panel .livesic-field {
    min-height: 0;
    padding: 12px;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    background: #f8fafc;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
    align-self: start;
}

/* "Ocultar eventos promocionados" (2026-07-31): primer control del panel, a todo el
   ancho y por delante del resto (order 0; los demás campos van del 1 al 7). */
.livesic-map-filters-panel .livesic-field--hide-promoted {
    grid-column: 1 / -1;
    order: 0;
}

.livesic-map-filters-panel .livesic-field--hide-promoted .livesic-free-only-label {
    margin: 0;
    white-space: normal;
}

.livesic-map-filters-panel .livesic-field--location {
    grid-column: 1 / -1;
    order: 1;
    background: #fff;
    gap: 8px;
}

.livesic-map-filters-panel .livesic-field--genre {
    grid-column: span 6;
    order: 4;
}

.livesic-map-filters-panel .livesic-field--date-from {
    grid-column: span 6;
    order: 2;
}

.livesic-map-filters-panel .livesic-field--date-to {
    grid-column: span 6;
    order: 3;
}

.livesic-map-filters-panel .livesic-field--sort {
    grid-column: span 6;
    order: 5;
}

/* Disciplina/Especialidad y Tipo de público. Sin estas reglas caían en el hueco
   por defecto de la rejilla de 12 (una sola columna, ~80px, y order 0, colándose
   arriba del todo): así Disciplina comparte fila con Género —solo uno de los dos
   está visible a la vez— y Tipo de público con "Ordenar por". */
.livesic-map-filters-panel .livesic-field--kind,
.livesic-map-filters-panel .livesic-field--discipline {
    grid-column: span 6;
    order: 4;
}

.livesic-map-filters-panel .livesic-field--audience {
    grid-column: span 6;
    order: 5;
}

.livesic-map-filters-panel .livesic-field--price-block {
    grid-column: 1 / -1;
    order: 6;
}

.livesic-map-filters-panel .livesic-filters-grid > .livesic-field--radius-block {
    grid-column: span 6;
    order: 7;
}

.livesic-map-filters-panel .livesic-location-tools {
    display: grid;
    grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
    gap: 14px;
    align-items: end;
    margin-top: 0;
    padding: 12px;
    border: 1px solid #dbeafe;
    border-radius: 12px;
    background: #f8fbff;
}

.livesic-map-filters-panel .livesic-location-permission-help {
    grid-column: 1 / -1;
    order: 3;
    color: #7f1d1d;
    background: #fff1f2;
    border: 1px solid #fecdd3;
    border-radius: 8px;
    padding: 10px 12px;
    font-size: 13px;
    line-height: 1.45;
}

.livesic-map-filters-panel .livesic-btn--location {
    width: 100%;
    min-height: 44px;
    order: 1;
    justify-content: center;
    gap: 8px;
    color: #1d4ed8;
    border-color: #bfdbfe;
    background: #eff6ff;
    font-weight: 700;
    white-space: nowrap;
}

.livesic-map-filters-panel .livesic-btn--location:hover {
    background: #dbeafe;
    border-color: #93c5fd;
}

.livesic-map-filters-panel .livesic-location-radius {
    min-width: 0;
    order: 2;
}

.livesic-map-filters-panel .livesic-field input,
.livesic-map-filters-panel .livesic-field select,
.livesic-map-filters-panel .livesic-region-picker .livesic-region-field select,
.livesic-map-filters-panel .livesic-region-picker .livesic-region-field input[type="text"] {
    border-color: #dbe3ee;
    background-color: #fff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.livesic-map-filters-panel .livesic-location-radius input[type="range"] {
    border: 0;
    background: transparent;
    box-shadow: none;
}

.livesic-map-filters-panel .livesic-region-picker.is-inline {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 14px;
}

.livesic-map-filters-panel .livesic-region-picker .livesic-region-field {
    min-width: 0;
}

.livesic-map-filters-panel .livesic-region-picker .livesic-region-field--city {
    grid-column: 1 / -1;
}

.livesic-map-filters-panel .livesic-region-picker .livesic-region-field select,
.livesic-map-filters-panel .livesic-region-picker .livesic-region-field input[type="text"] {
    min-height: 44px;
}

.livesic-map-filters-panel .livesic-filter-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
    /* Barra de acciones fija al fondo del panel: Limpiar/Aplicar siempre visibles
       aunque el panel haga scroll. Los márgenes negativos sangran hasta cubrir el
       padding del panel (14px) para que la barra ocupe todo el ancho y el borde. */
    position: sticky;
    bottom: -14px;
    margin: 0 -14px -14px;
    padding: 12px 14px 14px;
    background: rgba(255, 255, 255, 0.98);
    border-top: 1px solid #e5e7eb;
    border-radius: 0 0 16px 16px;
}

.livesic-map-filters-panel .livesic-filter-actions .livesic-btn {
    min-height: 42px;
    gap: 7px;
    border-radius: 10px;
    font-weight: 700;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}

.livesic-map-filters-panel .livesic-filter-actions .livesic-btn:hover {
    transform: translateY(-1px);
}

.livesic-map-filters-panel .livesic-btn--filter-apply {
    order: 3;
    min-width: 132px;
    box-shadow: 0 8px 18px rgba(17, 24, 39, 0.16);
}

.livesic-map-filters-panel .livesic-btn--filter-secondary {
    order: 1;
    color: #4b5563;
    border-color: #dbe3ee;
    background: #fff;
}

.livesic-map-box {
    height: 420px;
    min-height: 420px;
    border: 1px solid #ddd;
    border-radius: 12px;
    /* Sin overflow:hidden — recortaría el popup de Leaflet que sale fuera del mapa */
}

.livesic-map-box > div {
    width: 100%;
    height: 420px;
    min-height: 420px;
    border-radius: 16px;
    /* clip-path eliminado: recortaba el popup de Leaflet que sobresale
       del contenedor del mapa. border-radius basta para las esquinas. */
}

.livesic-map-container.is-fullscreen {
    position: fixed;
    inset: 0;
    z-index: 99999;
    background: #fff;
    padding: 0;
    margin: 0;
    border-radius: 0;
    box-shadow: none;
    overflow: hidden;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    gap: 0;
    width: 100vw;
    width: 100dvw;
    height: 100vh;
    height: 100dvh;
    touch-action: none;
}

.livesic-map-container.is-fullscreen .livesic-map-toolbar {
    margin: 0;
    padding: 12px;
    background: #fff;
    border-bottom: 1px solid #e5e7eb;
    z-index: 2;
    position: relative;
    flex-shrink: 0;
    -webkit-overflow-scrolling: none;
}

.livesic-map-container.is-fullscreen .livesic-map-box {
    height: 100%;
    min-height: 0;
    border: 0;
    border-radius: 0;
    overflow: hidden;
    touch-action: pan-x pan-y;
    overscroll-behavior: contain;
}

.livesic-map-container.is-fullscreen .livesic-map-box > div {
    display: block;
    width: 100%;
    height: 100% !important;
    min-height: 100% !important;
    border-radius: 0;
}

/* Hero container en fullscreen */
.livesic-map-container--hero.is-fullscreen {
    grid-template-rows: minmax(0, 1fr);
    overflow: hidden !important;
    border-radius: 0 !important;
}

.livesic-map-container--hero.is-fullscreen .livesic-map-overlay {
    /* Restaurar overlay flotante en fullscreen, incluso en móvil */
    position: fixed !important;
    top: 12px !important;
    left: 12px !important;
    right: 12px !important;
    bottom: auto !important;
    z-index: 100001 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 !important;
    gap: 8px !important;
}

.livesic-map-container--hero.is-fullscreen .livesic-map-topbar {
    padding: 0 !important;
}

.livesic-map-container--hero.is-fullscreen .livesic-map-search__input {
    background: rgba(255,255,255,0.92) !important;
    border-color: rgba(255,255,255,0.6) !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15) !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
}

.livesic-map-container--hero.is-fullscreen .livesic-btn--map {
    background: rgba(255,255,255,0.88) !important;
    border-color: rgba(255,255,255,0.5) !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15) !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
    color: #111827 !important;
}

.livesic-map-container--hero.is-fullscreen .livesic-btn--map.livesic-btn--active {
    background: #111827 !important;
    color: #fff !important;
    border-color: #111827 !important;
}

/* Panel de filtros en fullscreen: scroll si el contenido no cabe */
.livesic-map-container--hero.is-fullscreen .livesic-map-filters-panel {
    background: rgba(255,255,255,0.97) !important;
    border: 1px solid rgba(226, 232, 240, 0.92) !important;
    border-radius: 16px !important;
    box-shadow: 0 18px 44px rgba(15, 23, 42, 0.16), 0 4px 14px rgba(15, 23, 42, 0.08) !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
    padding: 14px !important;
    max-height: calc(100dvh - 120px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.livesic-map-container--hero.is-fullscreen .livesic-map-box {
    height: 100dvh !important;
    min-height: 100dvh !important;
}

.livesic-map-container--hero.is-fullscreen .livesic-map-box > div:not(.livesic-map-locating) {
    height: 100dvh !important;
    min-height: 100dvh !important;
}

.livesic-map-container.is-fullscreen .livesic-map-locating {
    display: none !important;
}

body.livesic-map-fullscreen {
    overflow: hidden;
    position: fixed;
    width: 100%;
    height: 100%;
    overscroll-behavior: none;
}

@supports (-webkit-touch-callout: none) {
    .livesic-map-container.is-fullscreen {
        height: -webkit-fill-available;
    }
}

html,
body {
    min-height: 100%;
    overflow-x: clip;
    max-width: 100%;
}


/* =========================
   LIVESIC · EVENTS GRID / CARDS
   ========================= */

.livesic-events-grid {
    display: grid;
    gap: 16px;
}

.livesic-event-card {
    border: 1px solid #e5e7eb;
    border-radius: 18px;
    background: #fff;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
}

.livesic-event-card.is-active {
    border-color: #111827;
    box-shadow: 0 0 0 2px rgba(17, 24, 39, 0.08);
}

.livesic-event-card__media img {
    display: block;
    width: 100%;
    height: 220px;
    object-fit: cover;
    background: #f3f4f6;
}

.livesic-event-card__body {
    padding: 18px;
    display: grid;
    gap: 12px;
}

.livesic-event-card__top {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.livesic-badges {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.livesic-badge {
    display: inline-flex;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    background: #f3f4f6;
    color: #111827;
}

.livesic-badge--green {
    background: #ecfdf5;
    color: #166534;
}

.livesic-badge--blue {
    background: #eff6ff;
    color: #1d4ed8;
}

.livesic-badge--amber {
    background: #fffbeb;
    color: #92400e;
}

/* Evento PROMOCIONADO en el listado: mismo naranja de promoción que el halo del marcador
   del mapa y el distintivo del popup (#f13800). Ver withPromotedEvents(). */
.livesic-badge--promoted {
    background: #fff1ec;
    color: #b3300a;
}

.livesic-event-card__title {
    margin: 0;
    font-size: 24px;
    line-height: 1.2;
}

.livesic-event-card__meta {
    display: grid;
    gap: 8px;
    color: #374151;
    font-size: 14px;
}

.livesic-event-card__links {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(132px, 1fr));
    gap: 8px;
}

.livesic-event-card__links a,
.livesic-event-card__actions .livesic-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 42px;
    padding: 10px 13px;
    border-radius: 10px;
    border: 1.5px solid #e5e7eb;
    background: #fff;
    color: #374151;
    text-decoration: none;
    cursor: pointer;
    box-sizing: border-box;
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.01em;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    transition: transform 0.15s ease, background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
    min-width: 0;
    text-align: center;
    white-space: normal;
}

.livesic-event-card__links a span,
.livesic-event-card__actions .livesic-btn span {
    min-width: 0;
    line-height: 1.15;
}

.livesic-event-card__links a:hover,
.livesic-event-card__actions .livesic-btn:hover {
    transform: translateY(-1px);
    background: #f9fafb;
    border-color: #9ca3af;
    box-shadow: 0 1px 4px rgba(0,0,0,.07);
}

.livesic-event-card__links a:focus-visible,
.livesic-event-card__actions .livesic-btn:focus-visible {
    outline: 3px solid rgba(37, 99, 235, 0.22);
    outline-offset: 2px;
}

.livesic-event-card__links a .livesic-btn__icon,
.livesic-event-card__actions .livesic-btn__icon {
    width: 14px;
    height: 14px;
    flex: 0 0 auto;
}

.livesic-event-card__links .is-primary,
.livesic-event-card__actions .is-tickets {
    background: #111827;
    color: #fff;
    border-color: #111827;
}

.livesic-event-card__links .is-primary:hover,
.livesic-event-card__actions .is-tickets:hover {
    background: #1f2937;
    border-color: #1f2937;
    box-shadow: 0 8px 18px rgba(17, 24, 39, 0.18);
}

.livesic-event-card__links .is-artist,
.livesic-event-card__actions .is-follow {
    color: #0f766e;
    border-color: #99f6e4;
    background: #f0fdfa;
}

.livesic-event-card__links .is-artist:hover,
.livesic-event-card__actions .is-follow:hover {
    background: #ccfbf1;
    border-color: #5eead4;
    box-shadow: 0 4px 12px rgba(15, 118, 110, 0.12);
}

.livesic-event-card__links .is-venue,
.livesic-event-card__actions .is-save {
    color: #92400e;
    border-color: #fde68a;
    background: #fffbeb;
}

.livesic-event-card__links .is-venue:hover,
.livesic-event-card__actions .is-save:hover {
    background: #fef3c7;
    border-color: #fcd34d;
    box-shadow: 0 4px 12px rgba(146, 64, 14, 0.12);
}

.livesic-event-card__actions .is-directions {
    color: #1d4ed8;
    border-color: #bfdbfe;
    background: #eff6ff;
}

.livesic-event-card__actions .is-directions:hover {
    background: #dbeafe;
    border-color: #93c5fd;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.12);
}

.livesic-event-card__actions .is-claim,
.livesic-event-card__actions .is-login {
    color: #4b5563;
    border-color: #e5e7eb;
    background: #fff;
}

.livesic-event-card__actions .is-claim {
    grid-column: 1 / -1;
    min-height: 38px;
    font-size: 12px;
    font-weight: 600;
}

.livesic-event-card__actions .is-claim:hover,
.livesic-event-card__actions .is-login:hover {
    color: #111827;
    background: #f3f4f6;
    border-color: #d1d5db;
}

.livesic-event-card__actions .livesic-btn:disabled {
    opacity: 0.62;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.livesic-event-card__actions {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(146px, 1fr));
    gap: 8px;
    align-items: stretch;
}

.livesic-login-hint {
    padding: 10px 12px;
    border: 1px dashed #d1d5db;
    border-radius: 12px;
    background: #fafafa;
    color: #4b5563;
    font-size: 14px;
}

.livesic-claim-form {
    display: none;
    margin-top: 6px;
    padding: 16px;
    border: 1px solid #e5e7eb;
    border-radius: 14px;
    background: #fafafa;
}


/* =========================
   LIVESIC · POPUPS / LEAFLET
   ========================= */

.livesic-popup-card {
    position: relative;
    width: 280px;
    max-width: 280px;
    background: #fff;
    touch-action: pan-y;
    user-select: none;
    overflow: hidden;
    /* El popup es su propia isla de pintado: lo que se invalide dentro (imagen, distintivo
       de promocionado, carrusel de eventos agrupados) no obliga a repintar el contenedor del
       mapa, que con el popup abierto está a z-index:10000 y sin recortar → un repintado suyo
       se ve en toda la pantalla. Ya recortaba con overflow:hidden, así que no cambia nada
       visualmente. */
    contain: paint;
}

.livesic-popup-shell {
    position: relative;
    width: 280px;
    max-width: 280px;
}

.livesic-popup-card__image,
.livesic-popup-card__placeholder {
    display: block;
    width: 100%;
    height: 140px;
    object-fit: cover;
}

.livesic-popup-card__image {
    background: #f3f4f6;
    /* Anti-parpadeo con portadas pesadas: fuerza una capa de composición propia (GPU) para que el
       navegador NO rerasterice el bitmap grande en cada frame del auto-pan/zoom del popup de Leaflet.
       La imagen ya tiene alto fijo (140px) + object-fit:cover, así que no hay reflujo por tamaño.
       ⚠️ En TÁCTIL se desactiva más abajo: en Blink móvil esta capa es justo la que parpadea. */
    transform: translateZ(0);
    backface-visibility: hidden;
}

/* ⚠️ PARPADEO EN MÓVIL — Chrome/Blink (y la PWA instalada, que es el mismo motor); en Firefox
   móvil NO pasa, y eso es lo que delata la causa: no es el markup ni la imagen, es la PROMOCIÓN
   DE CAPAS de composición.

   Con un popup abierto el mapa pasa a z-index:10000 y `body.livesic-popup-open` deja los panes de
   Leaflet en `overflow: visible`, o sea una capa sin recortar del tamaño de la pantalla, dentro de
   un ancestro transformado (el map-pane) que además se anima al abrir el popup. En Blink móvil,
   con presupuesto de teselas mucho más ajustado, una capa de GPU ahí dentro —y peor si otra se
   pinta ENCIMA, que es justo el distintivo de "Promocionado" y por eso solo se ve en esos
   eventos— se rasteriza y descarta una y otra vez: parpadeo de toda la pantalla. Gecko no compone
   así, por eso Firefox se salva.

   Solución: en táctil, NADA de capas forzadas dentro del popup. El motivo original del
   translateZ(0) (portadas enormes rerasterizándose en el auto-pan) ya está cubierto por otro lado:
   las subidas se recomprimen a 1600px máx. y la <img> lleva width/height + decoding="async". */
@media (max-width: 860px), (pointer: coarse) {
    .livesic-popup-card__image,
    .livesic-popup-promo {
        transform: none;
        backface-visibility: visible;
    }
}

.livesic-popup-card__placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #111827 0%, #374151 100%);
    color: #fff;
    font-weight: 700;
}

.livesic-popup-card__body {
    padding: 12px;
}

.livesic-popup-card__title {
    margin: 0 0 8px;
    font-size: 16px;
    line-height: 1.2;
}

.livesic-popup-card__meta {
    display: grid;
    gap: 4px;
    font-size: 13px;
    color: #374151;
}

.livesic-popup-card__desc {
    margin-top: 10px;
    color: #4b5563;
    font-size: 13px;
    line-height: 1.45;
}

.livesic-popup-card__actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    margin-top: 14px;
    padding: 0 16px 14px;
}

.livesic-popup-card__actions a,
.livesic-popup-card__actions button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 9px 10px;
    border-radius: 10px;
    border: 1.5px solid #e5e7eb;
    background: #fff;
    color: #374151;
    text-decoration: none;
    cursor: pointer;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.01em;
    transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
    white-space: nowrap;
}

.livesic-popup-card__actions a:hover,
.livesic-popup-card__actions button:hover {
    background: #f9fafb;
    border-color: #9ca3af;
    box-shadow: 0 1px 4px rgba(0,0,0,.07);
}

.livesic-popup-card__actions .is-primary {
    background: #111827;
    color: #fff;
    border-color: #111827;
    font-weight: 600;
}

.livesic-popup-card__actions .is-primary:hover {
    background: #1f2937;
    border-color: #1f2937;
    box-shadow: 0 2px 8px rgba(17,24,39,.25);
}

.livesic-popup-card__actions .is-directions {
    color: #1d4ed8;
    border-color: #bfdbfe;
    background: #eff6ff;
}

.livesic-popup-card__actions .is-directions:hover {
    background: #dbeafe;
    border-color: #93c5fd;
    box-shadow: 0 1px 4px rgba(37,99,235,.12);
}

/* "Voy a ir" / "Estoy aquí" en el popup del mapa (misma paleta que .lv-action-attend) */
.livesic-popup-card__actions .is-attend.is-attending {
    background: var(--lv-theme-success-bg, #dcfce7);
    color: var(--lv-theme-success, #15803d);
    border-color: var(--lv-theme-success, #86efac);
}

.livesic-popup-card__actions .is-attend.is-attending:hover {
    filter: brightness(1.05);
}

.livesic-popup-card__actions .is-attend:disabled {
    opacity: .55;
    cursor: not-allowed;
    box-shadow: none;
}

.livesic-popup-card__actions .is-claim {
    grid-column: 1 / -1;
    color: #6b7280;
    border-color: #e5e7eb;
    background: #fff;
    font-size: 11px;
    font-weight: 400;
    padding: 7px 10px;
}

.livesic-popup-card__actions .is-claim:hover {
    color: #374151;
    background: #f3f4f6;
    border-color: #d1d5db;
}

.livesic-popup-card__actions .is-ghost {
    color: #2563eb;
    border-color: #bfdbfe;
    background: #eff6ff;
}

.livesic-popup-card__actions .is-tickets {
    background: #111827;
    color: #fff;
    border-color: #111827;
    font-weight: 600;
}

.livesic-popup-card__actions .is-tickets:hover {
    background: #1f2937;
    border-color: #1f2937;
    box-shadow: 0 2px 8px rgba(17,24,39,.25);
}

/* Popup overlay nav */
.livesic-popup-nav.livesic-popup-nav--overlay {
    position: absolute;
    inset: 0;
    z-index: 20;
    margin: 0;
    display: block;
    pointer-events: none;
}

.livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__meta {
    position: absolute;
    top: 10px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 22;
    margin: 0;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(17, 24, 39, 0.72);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
    pointer-events: auto;
}

.livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 22;
    width: 42px;
    height: 42px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.75);
    background: rgba(17, 24, 39, 0.72);
    color: #fff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    line-height: 1;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
    backdrop-filter: blur(6px);
    pointer-events: auto;
}

.livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn:hover {
    background: rgba(17, 24, 39, 0.88);
}

.livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn--prev {
    left: -21px;
}

.livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn--next {
    right: -21px;
}

/* Cursor drag */
.livesic-popup-card.is-draggable {
    cursor: grab;
}

.livesic-popup-card.is-dragging {
    cursor: grabbing;
}

/* Leaflet refinements */

/* Leaflet usa overflow:hidden en varios niveles. Mientras haya popup
   abierto permitimos que salga por encima del borde superior del mapa
   y pueda cubrir el header sticky si hace falta. */
body.livesic-popup-open .livesic-map-box,
body.livesic-popup-open .livesic-map-box > .leaflet-container,
body.livesic-popup-open .livesic-map-box .leaflet-map-pane {
    overflow: visible !important;
}

/* Con la ficha abierta Leaflet suelta el pellizco (touchZoom desactivado en
   lockMapInteraction) y retira sus clases .leaflet-touch-*: el contenedor se quedaba
   con touch-action:auto y el gesto pasaba al NAVEGADOR, que ampliaba toda la página
   desde el trozo de mapa que asoma; al cerrar, seguía ampliada (2026-09-06). Sin
   pellizco ni doble toque del navegador mientras haya popup (el JS remata con
   preventDefault, que es lo que respeta Safari). Los scrollers internos de la ficha
   no se ven afectados: touch-action solo se consulta hasta el scroller más cercano. */
body.livesic-popup-open .livesic-map-box > .leaflet-container {
    touch-action: none;
}

.livesic-map-box .leaflet-map-pane {
    overflow: visible !important;
}

/* En el MAPA el logo del marcador va sobre un disco azul semitransparente para destacar sobre las
   teselas. Solo afecta al mapa: esta clase la usan únicamente los marcadores (livesicLogoIcon en
   livesic-events-map.js). El logo se centra con object-fit:contain + un pequeño padding para que se
   vea el fondo alrededor (box-sizing:border-box conserva el iconSize → no descuadra el anclaje). */
.livesic-event-marker-logo {
    background: rgba(37, 99, 235, 0.55) !important;
    border: 0 !important;
    border-radius: 50%;
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.35) !important;
    object-fit: contain;
    box-sizing: border-box;
    padding: 2px;
}

/* Eventos PROMOCIONADOS: marcador propio (logo con llama) más grande (iconSize 44/52 frente a
   32/38 de los normales) y SIN el disco semitransparente: la llama va directamente sobre el mapa.
   La clase la añade livesicLogoIcon() en livesic-events-map.js cuando el grupo lleva algún evento
   promocionado. Sin disco la sombra tiene que ser drop-shadow, que sigue el dibujo real de la
   llama (un box-shadow marcaría la caja cuadrada del icono). */
.livesic-event-marker-promoted.livesic-event-marker-logo {
    background-color: transparent !important;
    background-image: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    filter: drop-shadow(0 1px 4px rgba(124, 29, 0, 0.5));
    padding: 0;
}

/* Distintivo del evento PROMOCIONADO sobre la imagen del popup del mapa: chip arriba a la
   izquierda y fecha/hora abajo. Va sobre un degradado en los dos extremos para que se lea
   con cualquier portada, y es puramente decorativo (pointer-events:none) para no tapar las
   flechas ni el contador del carrusel de eventos agrupados. Alto = el de la imagen (140px). */
.livesic-popup-promo {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 140px;
    /* La hoja no aplica border-box global: sin esto el padding sumaba 20px y la capa se
       salía de la imagen sobre el cuerpo del popup. */
    box-sizing: border-box;
    z-index: 30;
    pointer-events: none;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
    padding: 10px;
    background:
        linear-gradient(180deg, rgba(15, 23, 42, 0.58) 0%, rgba(15, 23, 42, 0) 40%),
        linear-gradient(0deg, rgba(15, 23, 42, 0.78) 0%, rgba(15, 23, 42, 0) 42%);
}

.livesic-popup-promo__badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 10px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.3);
    background: linear-gradient(135deg, #f13800 0%, #b32900 100%);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.09em;
    line-height: 1;
    text-transform: uppercase;
    box-shadow: 0 2px 8px rgba(124, 29, 0, 0.45);
}

/* Fecha y hora: mismo tratamiento de chip que el distintivo, pero en MORADO para que se
   distingan entre sí sin dejar de leerse como un par. En caja (no versalitas) porque una
   fecha se lee peor en mayúsculas. */
.livesic-popup-promo__date {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 10px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.3);
    background: linear-gradient(135deg, #a855f7 0%, #6d28d9 100%);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.01em;
    box-shadow: 0 2px 8px rgba(76, 29, 149, 0.45);
}

.leaflet-popup-content-wrapper {
    border-radius: 14px;
    overflow: visible;
    max-height: none;
}

.leaflet-popup-close-button {
    width: 28px !important;
    height: 28px !important;
    line-height: 28px !important;
    font-size: 22px !important;
    font-weight: 700 !important;
    color: #fff !important;
    background: rgba(17, 24, 39, 0.78) !important;
    border-radius: 50% !important;
    text-align: center !important;
    top: 8px !important;
    right: 8px !important;
    padding: 0 !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25) !important;
    z-index: 10 !important;
    transition: background 0.15s ease, transform 0.15s ease;
}

.leaflet-popup-close-button:hover,
.leaflet-popup-close-button:focus {
    background: rgba(17, 24, 39, 0.95) !important;
    color: #fff !important;
    transform: scale(1.08);
}

/* El popup-pane de Leaflet usa z-index 700 por defecto.
   El overlay de filtros está en z-index 650 (dentro del mismo map-box),
   por lo que el popup queda siempre por encima sin necesidad de override. */

/* En fullscreen el overlay sube a z-index 100001, así que elevamos el
   popup-pane para que siga por encima. */
.livesic-map-container.is-fullscreen .leaflet-popup-pane {
    z-index: 100002 !important;
}

.livesic-map-container.is-fullscreen .leaflet-popup {
    z-index: 100002 !important;
}

.leaflet-popup-content {
    margin: 0 !important;
}

.leaflet-popup-content .livesic-popup-card {
    position: relative !important;
    width: 280px !important;
    max-width: 280px !important;
    max-height: 75dvh !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    border-radius: 14px !important;
    -webkit-overflow-scrolling: touch;
}

.leaflet-popup-content .livesic-popup-nav.livesic-popup-nav--overlay {
    position: absolute !important;
    inset: 0 !important;
    display: block !important;
    margin: 0 !important;
    pointer-events: none !important;
    z-index: 50 !important;
}

.leaflet-popup-content .livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__meta {
    position: absolute !important;
    top: 10px !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    margin: 0 !important;
    z-index: 60 !important;
    pointer-events: auto !important;
    background: rgba(17, 24, 39, 0.78) !important;
    color: #fff !important;
    padding: 6px 10px !important;
    border-radius: 999px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    white-space: nowrap !important;
}

.leaflet-popup-content .livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn {
    position: absolute !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 42px !important;
    height: 42px !important;
    margin: 0 !important;
    padding: 0 !important;
    z-index: 60 !important;
    pointer-events: auto !important;
    border-radius: 999px !important;
    border: 1px solid rgba(255, 255, 255, 0.55) !important;
    background: rgba(17, 24, 39, 0.28) !important;
    color: #fff !important;
    font-size: 18px !important;
    line-height: 1 !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
    backdrop-filter: blur(2px) !important;
    -webkit-backdrop-filter: blur(2px) !important;
    transition: background 0.15s ease !important;
}

.leaflet-popup-content .livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn--prev {
    left: -21px !important;
    right: auto !important;
}

.leaflet-popup-content .livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn--next {
    right: -21px !important;
    left: auto !important;
}

.leaflet-popup-content .livesic-popup-nav.livesic-popup-nav--overlay .livesic-popup-nav__btn:hover {
    background: rgba(17, 24, 39, 0.65) !important;
}


/* =========================
   LIVESIC · FORMS / AUTH
   ========================= */

.livesic-form-card {
    padding: 24px;
    border: 1px solid #e5e7eb;
    border-radius: 18px;
    background: #fff;
    box-sizing: border-box;
}

.livesic-form-stack {
    display: grid;
    gap: 12px;
}

.livesic-form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 16px;
}

.livesic-form-grid > * {
    min-width: 0;
}

.livesic-form-field {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.livesic-form-field label,
.livesic-form-label {
    display: block;
    margin: 0 0 6px;
    font-size: 14px;
    line-height: 1.2;
    font-weight: 600;
    color: #111827;
}

.livesic-form-field input,
.livesic-form-field select,
.livesic-form-field textarea,
.livesic-form-stack input,
.livesic-form-stack select,
.livesic-form-stack textarea {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding: 10px 12px;
    border: 1px solid #d1d5db;
    border-radius: 10px;
    background: #fff;
    font-size: 14px;
    line-height: 1.2;
}

.livesic-form-field input[type="date"],
.livesic-form-field input[type="number"],
.livesic-form-field input[type="password"],
.livesic-form-field input[type="email"],
.livesic-form-field input[type="text"],
.livesic-form-field input[type="url"] {
    min-height: 44px;
}

.livesic-form-checkbox {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: #111827;
}

.livesic-form-checkbox input[type="checkbox"] {
    width: 18px;
    height: 18px;
    min-width: 18px;
    max-width: 18px;
    margin: 0;
    padding: 0;
}

.livesic-form-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}

.livesic-auth-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    max-width: 720px;
    margin-inline: auto;
}

.livesic-google-auth,
.lv-google-auth {
    display: grid;
    gap: 14px;
    margin: 18px 0;
}

.livesic-google-btn {
    display: inline-flex;
    width: 100%;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 10px 16px;
    border: 1px solid #d1d5db;
    border-radius: 10px;
    background: #fff;
    color: #111827;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.2;
    text-decoration: none;
    box-sizing: border-box;
    transition: border-color .15s, box-shadow .15s, transform .15s;
}

.livesic-google-btn:hover {
    border-color: #9ca3af;
    color: #111827;
    box-shadow: 0 8px 18px rgba(15, 23, 42, .08);
    transform: translateY(-1px);
}

.livesic-google-btn__mark {
    display: inline-flex;
    width: 22px;
    height: 22px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #fff;
    color: #4285f4;
    font-family: Arial, sans-serif;
    font-size: 18px;
    font-weight: 700;
    line-height: 1;
}

.livesic-google-auth__terms {
    margin: -4px 0 0;
    color: #6b7280;
    font-size: 12px;
    line-height: 1.45;
    text-align: center;
}

.livesic-google-auth__terms a {
    color: inherit;
    font-weight: 700;
    text-decoration: underline;
}

.livesic-auth-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #6b7280;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
}

.livesic-auth-divider::before,
.livesic-auth-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: #e5e7eb;
}

.livesic-register-form {
    min-width: 0;
}


/* =========================
   LIVESIC · GENERIC PANELS / UTILITIES
   ========================= */

.livesic-section-card {
    padding: 22px;
    border: 1px solid #e5e7eb;
    border-radius: 18px;
    background: #fff;
    display: grid;
    gap: 14px;
    box-sizing: border-box;
}

.livesic-section-card h3 {
    margin: 0 0 6px;
}

.livesic-section-card p {
    margin: 0;
}

.livesic-panel {
    padding: 24px;
    border: 1px solid #e5e7eb;
    border-radius: 20px;
    background: #fff;
    box-sizing: border-box;
    min-width: 0;
    box-shadow: 0 4px 18px rgba(15, 23, 42, 0.03);
}

.livesic-panel__header {
    margin-bottom: 18px;
}

.livesic-panel__title {
    margin: 0 0 8px;
    font-size: 22px;
    line-height: 1.2;
    color: #111827;
}

.livesic-panel__text {
    margin: 0;
    color: #4b5563;
    font-size: 14px;
    line-height: 1.6;
}

.livesic-muted {
    color: #6b7280;
}

.livesic-inline-note,
.livesic-empty-note {
    padding: 12px 14px;
    border: 1px dashed #d1d5db;
    border-radius: 12px;
    color: #6b7280;
    background: #fff;
}


/* =========================
   LIVESIC · ARTIST CANDIDATES
   ========================= */

.livesic-artist-candidates,
.livesic-candidate-list {
    display: grid;
    gap: 10px;
}

.livesic-artist-candidate,
.livesic-candidate-card {
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 14px;
    background: #f9fafb;
    display: flex;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.livesic-artist-candidate__meta,
.livesic-candidate-card__meta {
    font-size: 13px;
    color: #6b7280;
    line-height: 1.4;
}

.livesic-artist-candidate__note,
.livesic-candidate-card__side {
    font-size: 13px;
    color: #374151;
    max-width: 320px;
    line-height: 1.5;
}

.livesic-candidate-card__main {
    min-width: 0;
}

.livesic-candidate-card__title {
    font-weight: 700;
    color: #111827;
    margin-bottom: 4px;
}


/* =========================
   LIVESIC · PROFILE
   ========================= */

.livesic-profile-shell,
.livesic-profile-sidebar,
.livesic-profile-main,
.livesic-profile-page {
    display: grid;
    gap: 20px;
}

.livesic-profile-page {
    gap: 24px;
}

.livesic-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 14px;
}

.livesic-stat-card {
    padding: 18px;
    border: 1px solid #e5e7eb;
    border-radius: 16px;
    background: #fff;
    min-width: 0;
    box-sizing: border-box;
}

.livesic-stat-card__label {
    font-size: 13px;
    color: #6b7280;
    margin-bottom: 6px;
}

.livesic-stat-card__value {
    font-size: 20px;
    font-weight: 700;
    color: #111827;
    line-height: 1.2;
}

.livesic-profile-hero {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 24px;
    overflow: hidden;
    box-shadow: 0 8px 30px rgba(15, 23, 42, 0.05);
}

.livesic-profile-hero__cover {
    height: 180px;
    background: linear-gradient(135deg, #111827 0%, #2563eb 50%, #7c3aed 100%);
}

.livesic-profile-hero__body {
    display: grid;
    grid-template-columns: 120px 1fr auto;
    gap: 20px;
    align-items: end;
    padding: 0 24px 24px;
    margin-top: -60px;
}

.livesic-profile-hero__avatar {
    width: 120px;
    height: 120px;
    border-radius: 50%;
    overflow: hidden;
    border: 5px solid #fff;
    background: #e5e7eb;
    box-shadow: 0 10px 25px rgba(15, 23, 42, 0.12);
}

.livesic-profile-hero__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.livesic-profile-hero__avatar-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 42px;
    font-weight: 700;
    color: #111827;
    background: linear-gradient(135deg, #dbeafe 0%, #e9d5ff 100%);
}

.livesic-profile-hero__main {
    min-width: 0;
}

.livesic-profile-hero__name {
    margin: 0 0 8px;
    font-size: 34px;
    line-height: 1.1;
    color: #111827;
}

.livesic-profile-hero__meta {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
    margin-bottom: 10px;
}

.livesic-profile-pill {
    display: inline-flex;
    align-items: center;
    padding: 6px 12px;
    border-radius: 999px;
    background: #eff6ff;
    color: #1d4ed8;
    font-size: 13px;
    font-weight: 600;
}

.livesic-profile-hero__location {
    color: #6b7280;
    font-size: 14px;
}

.livesic-profile-hero__bio {
    margin: 0;
    color: #4b5563;
    font-size: 15px;
    line-height: 1.6;
    max-width: 760px;
}

.livesic-profile-hero__stats {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.livesic-profile-stat {
    min-width: 110px;
    padding: 14px 16px;
    border: 1px solid #e5e7eb;
    border-radius: 16px;
    background: #f9fafb;
    text-align: center;
}

.livesic-profile-stat__value {
    display: block;
    font-size: 22px;
    font-weight: 700;
    color: #111827;
    line-height: 1.1;
}

.livesic-profile-stat__label {
    display: block;
    margin-top: 4px;
    font-size: 13px;
    color: #6b7280;
}

.livesic-profile-layout {
    display: grid;
    grid-template-columns: 320px minmax(0, 1fr);
    gap: 24px;
    align-items: start;
}

.livesic-summary-list {
    display: grid;
    gap: 12px;
}

.livesic-summary-item {
    display: grid;
    gap: 4px;
    padding: 12px 14px;
    border: 1px solid #eef2f7;
    border-radius: 14px;
    background: #f9fafb;
}

.livesic-summary-item__label {
    font-size: 12px;
    font-weight: 600;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.livesic-summary-item__value {
    font-size: 14px;
    color: #111827;
    line-height: 1.5;
}


/* =========================
   LIVESIC · GLOBAL HEADER
   ========================= */

.livesic-site-header {
    position: sticky;
    top: 0;
    z-index: 999;
    width: 100%;
    background: rgba(255, 255, 255, 0.96);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(15, 23, 42, 0.06);
    box-shadow: 0 4px 18px rgba(15, 23, 42, 0.04);
}

/* Pie de pagina oculto en todas las paginas: la navegacion vive en la
   cabecera y en la barra inferior movil, asi que el footer es redundante. */
.livesic-site-footer {
    display: none !important;
}

/* Cuando un popup del mapa está abierto, dejamos pasar el popup por
   encima del header. Lo bajamos a z-index 1 (no a 0/auto para no
   romper su contexto de apilamiento interno). */
body.livesic-popup-open .livesic-site-header {
    z-index: 1 !important;
}

.livesic-site-header__inner {
    max-width: 1280px;
    margin: 0 auto;
    min-height: 62px;
    padding: 0 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: nowrap;
}

.livesic-site-header__brand {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    flex: 0 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
}

.livesic-site-header__logo {
    width: 220px;
    height: 84px;
    object-fit: contain;      /* ← contain en lugar de cover para no recortar el logo */
    object-position: center;
    display: block;
    flex: 0 0 220px;
    border-radius: 0;         /* ← sin redondeo si no hay marco */
    background: transparent;  /* ← sin fondo blanco */
    box-shadow: none;         /* ← elimina el borde y la sombra */
}

.livesic-site-header__brand-text {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    white-space: nowrap;
}

.livesic-site-header__brand-text strong {
    margin: 0;
    font-size: 1rem;
    line-height: 1;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #0f172a;
}

.livesic-site-header__brand-text small {
    margin: 0;
    font-size: 0.8rem;
    line-height: 1;
    font-weight: 500;
    color: #64748b;
}

.livesic-site-header__nav {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 28px;
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
}

.livesic-site-header__nav a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    color: #334155;
    text-decoration: none;
    font-size: 0.94rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    transition: color 0.18s ease;
}

.livesic-site-header__nav a:hover {
    color: #7c3aed;
}

.livesic-site-header__group {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.livesic-site-header__group-toggle {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    min-height: 38px;
    padding: 0;
    background: transparent;
    border: 0;
    color: #334155;
    font: inherit;
    font-size: 0.94rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    cursor: pointer;
    transition: color 0.18s ease;
}

.livesic-site-header__group-toggle:hover,
.livesic-site-header__group.is-open .livesic-site-header__group-toggle {
    color: #7c3aed;
}

.livesic-site-header__group-caret {
    width: 14px;
    height: 14px;
    transition: transform 0.18s ease;
}

.livesic-site-header__group.is-open .livesic-site-header__group-caret {
    transform: rotate(180deg);
}

.livesic-site-header__group-menu {
    position: absolute;
    top: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%);
    min-width: 180px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 6px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12);
    z-index: 1000;
}

.livesic-site-header__group-menu[hidden] {
    display: none;
}

.livesic-site-header__group-menu a {
    display: block;
    padding: 8px 12px;
    color: #0f172a;
    text-decoration: none;
    font-size: 0.92rem;
    font-weight: 600;
    border-radius: 6px;
    white-space: nowrap;
    min-height: 0;
}

.livesic-site-header__group-menu a:hover {
    background: #f1f5f9;
    color: #7c3aed;
}

.livesic-site-header__menu-item-with-badge,
.livesic-site-header__mobile-item-with-badge {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.livesic-site-header__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 7px;
    border-radius: 999px;
    background: #7c3aed;
    color: #fff;
    font-size: 12px;
    line-height: 1;
    font-weight: 800;
    box-shadow: 0 0 0 2px #fff;
}

.livesic-site-header__badge[hidden] {
    display: none !important;
}

.livesic-site-header__badge--account {
    min-width: 18px;
    height: 18px;
    padding: 0 6px;
    font-size: 10px;
    box-shadow: none;
}

.livesic-site-header__burger {
    position: relative;
}

.livesic-site-header__mobile-heading {
    display: block;
    padding: 14px 12px 4px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #64748b;
}

.livesic-site-header__actions {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex: 0 0 auto;
    white-space: nowrap;
    margin-left: auto;
}

.livesic-site-header__actions--account {
    margin-left: auto;
}

.livesic-site-header__account {
    position: relative;
}

.livesic-site-header__account-toggle {
    gap: 10px;
    min-height: 46px;
    padding: 4px 8px 4px 5px;
    border: 1px solid rgba(226, 232, 240, 0.9);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.78);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
    transition: color 0.18s ease, border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease;
}

.livesic-site-header__account-toggle:hover,
.livesic-site-header__account.is-open .livesic-site-header__account-toggle {
    border-color: rgba(124, 58, 237, 0.36);
    background: #fff;
    box-shadow: 0 14px 34px rgba(15, 23, 42, 0.12);
}

.livesic-site-header__avatar-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
}

.livesic-site-header__avatar-wrap::before,
.livesic-site-header__avatar-wrap::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 18px;
    height: 2px;
    border-radius: 999px;
    background: currentColor;
    opacity: 0;
    transform: translate(-50%, -50%) rotate(0deg);
    transition: opacity 0.16s ease, transform 0.16s ease;
    pointer-events: none;
    z-index: 2;
}

.livesic-site-header__avatar {
    width: 38px;
    height: 38px;
    display: block;
    border-radius: 50%;
    object-fit: cover;
    background: #f8fafc;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);
    transition: opacity 0.16s ease, transform 0.16s ease;
}

.livesic-site-header__avatar--placeholder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #64748b;
}

.livesic-site-header__badge--avatar {
    position: absolute;
    top: -7px;
    right: -8px;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    font-size: 10px;
    background: linear-gradient(135deg, #ef4444 0%, #f97316 100%);
    box-shadow: 0 0 0 2px #fff, 0 8px 16px rgba(239, 68, 68, 0.28);
    transition: opacity 0.16s ease, transform 0.16s ease;
}

.livesic-site-header__account-name {
    display: inline-flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
    max-width: 132px;
    text-align: left;
    line-height: 1.05;
}

.livesic-site-header__account-name span {
    color: #64748b;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.livesic-site-header__account-name strong {
    overflow: hidden;
    color: #0f172a;
    font-size: 0.9rem;
    font-weight: 800;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.livesic-site-header__account-menu {
    right: 0;
    left: auto;
    min-width: 256px;
    padding: 8px;
    transform: none;
}

.livesic-site-header__account-card {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 6px;
    padding: 10px;
    border-radius: 8px;
    background: #f8fafc;
    color: #0f172a;
}

.livesic-site-header__account-card img,
.livesic-site-header__account-card > span {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    border-radius: 50%;
    object-fit: cover;
    background: #fff;
}

.livesic-site-header__account-card > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.livesic-site-header__account-card strong,
.livesic-site-header__account-card small {
    display: block;
    max-width: 176px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.livesic-site-header__account-card strong {
    color: #0f172a;
    font-size: 0.94rem;
    line-height: 1.15;
}

.livesic-site-header__account-card small {
    margin-top: 2px;
    color: #64748b;
    font-size: 0.78rem;
    font-weight: 700;
}

.livesic-site-header__account-menu a {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 8px;
}

.livesic-site-header__account-menu a > span:first-child,
.livesic-site-header__mobile a > span:first-child {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.livesic-site-header__account-menu .livesic-site-header__account-logout {
    margin-top: 6px;
    border-top: 1px solid #e2e8f0;
    border-radius: 0;
    padding-top: 12px;
    color: #b91c1c;
}

.livesic-site-header__account-menu .livesic-site-header__account-logout:hover {
    border-radius: 6px;
    background: #fef2f2;
    color: #991b1b;
}

.livesic-site-header__account-menu .livesic-site-header__account-register {
    margin-top: 4px;
    justify-content: center;
    color: #fff;
    background: linear-gradient(135deg, #ff2d8d 0%, #7c3aed 100%);
    box-shadow: 0 8px 18px rgba(124, 58, 237, 0.18);
}

.livesic-site-header__account-menu .livesic-site-header__account-register:hover {
    color: #fff;
    background: linear-gradient(135deg, #f0187f 0%, #6d28d9 100%);
}

.livesic-site-header__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 0 4px;
    color: #475569;
    text-decoration: none;
    font-size: 0.92rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    transition: color 0.18s ease;
}

.livesic-site-header__link:hover {
    color: #7c3aed;
}

.livesic-site-header__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 0 16px;
    border-radius: 999px;
    text-decoration: none;
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.01em;
    color: #fff;
    background: linear-gradient(135deg, #ff2d8d 0%, #7c3aed 100%);
    box-shadow: 0 8px 20px rgba(124, 58, 237, 0.18);
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.livesic-site-header__button:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 24px rgba(124, 58, 237, 0.22);
    color: #fff;
}

body.admin-bar .livesic-site-header {
    top: 32px;
}

/* ── Mobile burger ── */
.livesic-site-header__burger{display:none;align-items:center;justify-content:center;width:42px;height:42px;padding:0;border:1px solid #e2e8f0;background:#fff;border-radius:10px;cursor:pointer;margin-left:auto;color:#0f172a;box-shadow:0 1px 2px rgba(15,23,42,.04);transition:background .15s,border-color .15s,color .15s}
.livesic-site-header__burger:hover{background:#f8fafc;border-color:#cbd5e1;color:#0f172a}
.livesic-site-header__burger:focus-visible{outline:2px solid #2563eb;outline-offset:2px}
.livesic-site-header__burger-icon{width:22px;height:22px;display:block;color:inherit;stroke:currentColor}
/* La lupa nace oculta y el JS solo la muestra en la pantalla de eventos */
.livesic-site-header__burger[hidden]{display:none !important}
.livesic-site-header__burger-icon--close{display:none}
.livesic-site-header__burger.is-open .livesic-site-header__burger-icon--open{display:none}
.livesic-site-header__burger.is-open .livesic-site-header__burger-icon--close{display:block}

/* ── Búsqueda desplegable bajo la cabecera (la abre la lupa) ── */
.livesic-site-header__search{padding:12px 16px 14px;background:#fff;border-top:1px solid #e2e8f0}
.livesic-site-header__search[hidden]{display:none}
.livesic-site-header__search-form{display:flex;align-items:stretch;gap:8px}
.livesic-site-header__search-box{flex:1 1 auto;position:relative;display:flex;align-items:center;min-width:0}
.livesic-site-header__search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:#6b7280;pointer-events:none}
.livesic-site-header__search-input{width:100%;height:44px;box-sizing:border-box;padding:0 14px 0 38px;border:1px solid #dbe3ee;border-radius:12px;background:#fff;font-size:16px;line-height:1.2;color:#111827}
.livesic-site-header__search-input:focus{outline:none;border-color:#111827}
.livesic-site-header__search-submit{flex:0 0 auto;height:44px;padding:0 18px;border:0;border-radius:12px;background:#111827;color:#fff;font-size:14px;font-weight:700;line-height:1;cursor:pointer}
.livesic-site-header__search-submit:hover{background:#1f2937}
.livesic-site-header__mobile{display:none;flex-direction:column;gap:2px;padding:8px 16px 16px;background:#fff;border-top:1px solid #e2e8f0}
.livesic-site-header__mobile a{display:flex;align-items:center;gap:8px;padding:12px 12px;color:#0f172a;text-decoration:none;font-weight:600;border-radius:8px}
.livesic-site-header__mobile a:hover{background:#f1f5f9}
.livesic-site-header__mobile-top-link{margin-top:10px;border-top:1px solid #e2e8f0;border-radius:0!important;padding-top:14px!important}
.livesic-site-header__mobile-cta{background:#0f172a;color:#fff!important;text-align:center;margin-top:4px}
.livesic-site-header__mobile-cta:hover{background:#1e3a5f!important}
.livesic-site-header__mobile:not([hidden]){display:flex}

/* =========================
   RESPONSIVE
   ========================= */

@media (max-width: 1100px) {
    .livesic-site-header__inner {
        gap: 16px;
        padding: 0 16px;
    }

    .livesic-site-header__nav {
        gap: 18px;
    }

    .livesic-site-header__brand-text small {
        display: none;
    }
}

@media (max-width: 1024px) {
    .livesic-profile-layout {
        grid-template-columns: 1fr;
    }

    .livesic-profile-hero__body {
        grid-template-columns: 100px 1fr;
    }

    .livesic-profile-hero__stats {
        grid-column: 1 / -1;
        justify-content: flex-start;
    }
}

@media (max-width: 860px) {
    .livesic-site-header__nav {
        display: none;
    }

    .livesic-site-header__actions {
        display: none;
    }

    .livesic-site-header__actions--account {
        display: inline-flex;
        order: 2;
        margin-left: auto;
    }

    /* En móvil la navegación principal vive en la barra inferior (iframe).
       El antiguo burger es ahora la lupa de búsqueda y sí se muestra;
       el panel de menú móvil queda oculto (sustituido por la barra). */
    .livesic-site-header__burger {
        display: inline-flex;
        order: 0;
        margin-left: 0;
        margin-right: auto;
    }

    .livesic-site-header__mobile {
        display: none;
    }

    .livesic-site-header__inner {
        min-height: 58px;
        position: relative;
        justify-content: flex-start;
    }

    /* Logo centrado horizontalmente en móvil */
    .livesic-site-header__brand {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        margin: 0;
        pointer-events: auto;
    }

    /* Solo logo, sin texto junto, para no colisionar con el burger */
    .livesic-site-header__brand-text {
        display: none;
    }

    .livesic-site-header__account-toggle {
        width: 42px;
        min-height: 42px;
        padding: 2px;
        border-radius: 50%;
    }

    .livesic-site-header__account-name,
    .livesic-site-header__account-toggle .livesic-site-header__group-caret {
        display: none;
    }

    .livesic-site-header__avatar-wrap,
    .livesic-site-header__avatar {
        width: 38px;
        height: 38px;
        flex-basis: 38px;
    }

    .livesic-site-header__account.is-open .livesic-site-header__avatar {
        opacity: 0;
        transform: scale(0.72);
    }

    .livesic-site-header__account.is-open .livesic-site-header__avatar-wrap::before {
        opacity: 1;
        transform: translate(-50%, -50%) rotate(45deg);
    }

    .livesic-site-header__account.is-open .livesic-site-header__avatar-wrap::after {
        opacity: 1;
        transform: translate(-50%, -50%) rotate(-45deg);
    }

    .livesic-site-header__account.is-open .livesic-site-header__badge--avatar {
        opacity: 0;
        transform: scale(0.72);
        pointer-events: none;
    }

    .livesic-site-header__account-menu {
        position: fixed;
        top: 64px;
        right: 12px;
        left: 12px;
        width: auto;
        min-width: 0;
        transform: none;
    }

    body.admin-bar .livesic-site-header__account-menu {
        top: 110px;
    }
}

@media (max-width: 768px) {
    .livesic-filters-modern,
    .livesic-auth-grid,
    .livesic-form-grid,
    .livesic-stats-grid {
        grid-template-columns: 1fr;
    }

    .livesic-filter-actions {
        grid-column: auto;
    }

    .livesic-event-card__title {
        font-size: 20px;
    }

    .livesic-map-container.is-fullscreen {
        inset: 0;
        width: 100vw;
        height: 100vh;
        height: 100dvh;
        grid-template-rows: auto 1fr;
    }

    .livesic-map-container.is-fullscreen .livesic-map-toolbar {
        padding: 10px 12px;
        gap: 8px;
    }

    .livesic-map-container.is-fullscreen .livesic-map-toolbar__actions {
        width: 100%;
    }

    .livesic-map-container.is-fullscreen .livesic-map-toolbar__actions .livesic-btn {
        flex: 1 1 auto;
    }

    .livesic-map-container.is-fullscreen .livesic-map-box {
        height: 100%;
        min-height: 0;
    }

    .livesic-profile-hero__cover {
        height: 140px;
    }

    .livesic-profile-hero__body {
        grid-template-columns: 1fr;
        margin-top: -40px;
        padding: 0 16px 16px;
        gap: 16px;
    }

    .livesic-profile-hero__avatar {
        width: 96px;
        height: 96px;
    }

    .livesic-profile-hero__name {
        font-size: 28px;
    }

    .livesic-panel {
        padding: 18px;
    }

    .livesic-candidate-card {
        flex-direction: column;
    }

    .livesic-candidate-card__side {
        max-width: none;
    }
}

@media (max-width: 640px) {
    .livesic-site-header__inner {
        min-height: 58px;
        padding: 0 12px;
        gap: 8px;
    }

    .livesic-site-header__logo {
        width: 150px;
        height: 68px;
        flex-basis: 150px;
        border-radius: 8px;
    }

    .livesic-site-header__brand-text strong {
        font-size: 0.94rem;
    }

    .livesic-site-header__link {
        font-size: 0.86rem;
    }

    .livesic-site-header__button {
        min-height: 34px;
        padding: 0 12px;
        font-size: 0.84rem;
    }
}

@media (max-width: 420px) {
    /* En pantallas muy pequeñas, ocultar el texto junto al logo.
       El logo solo es suficiente para identificar la marca. */
    .livesic-site-header__brand-text {
        display: none;
    }

    .livesic-site-header__logo {
        width: 130px;
        height: 62px;
        flex-basis: 130px;
    }

    .livesic-site-header__inner {
        gap: 6px;
        padding: 0 10px;
    }
}
.livesic-field .livesic-free-only-label {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 10px;
    margin: 12px 0 0;
    padding: 9px 11px;
    border: 1px solid #dbe3ee;
    border-radius: 10px;
    background: #fff;
    color: #374151;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0;
    white-space: nowrap;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.livesic-field .livesic-free-only-label input[type="checkbox"] {
    width: 18px;
    height: 18px;
    min-height: 18px;
    min-width: 18px;
    max-width: 18px;
    max-height: 18px;
    order: 0;
    flex-shrink: 0;
    margin: 0;
    padding: 0;
    box-shadow: none;
    accent-color: #111827;
    cursor: pointer;
}

.livesic-field .livesic-free-only-label:hover,
.livesic-field .livesic-free-only-label:has(input[type="checkbox"]:checked) {
    color: #111827;
    border-color: #cbd5e1;
    background: #f8fafc;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
}
/* ── Mapa móvil: aspecto app (overlay apilado a la izquierda) ────────── */
@media (max-width: 760px) {
    /* El mapa ocupa el ancho completo del viewport y casi todo el alto */
    .livesic-map-container--hero {
        width: 100vw;
        max-width: 100vw;
        margin-left: calc(50% - 50vw);
        border: 0;
        border-radius: 0;
    }

    /* Fallback para mapas sin el marco livesic-map-viewport. Las vistas de
       eventos usan el reparto flex al final de este archivo. */
    .livesic-map-container--hero .livesic-map-box {
        height: calc(100vh - 124px - env(safe-area-inset-bottom, 0px));
        height: calc(100dvh - 124px - env(safe-area-inset-bottom, 0px));
        min-height: 320px;
        border-radius: 0;
    }

    /* !important: el div del mapa lleva border-radius:16px en estilo inline */
    .livesic-map-container--hero .livesic-map-box > div {
        height: 100% !important;
        min-height: 100% !important;
        border-radius: 0 !important;
    }

    /* ── Barra compacta del mapa (2026-07-29) ─────────────────────────────────
       Rejilla de dos filas de controles:
         fila 1   [lupa] [lista] [tarjeta de info: promocionados + resultados]
         fila 2   [GPS]  [filtros] [chips de fechas/género] [Gratuito]
         fila 3   buscador desplegado (solo con .is-search-open)
         fila 4   panel de filtros
       Los contenedores intermedios (.livesic-map-topbar y sus acciones) pasan a
       display:contents para que cada control caiga en su celda. Todo esto vive
       DENTRO del media query: en escritorio la barra no cambia. */
    .livesic-map-overlay {
        display: grid;
        grid-template-columns: auto auto minmax(0, 1fr) auto;
        align-items: start;
        gap: 5px;
        /* 2px menos de margen a cada lado que en escritorio: es lo que falta para que el
           rango de fechas completo quepa junto al interruptor "Gratuito" a 360px. */
        left: 10px;
        right: 10px;
    }

    .livesic-map-topbar,
    .livesic-map-topbar__actions {
        display: contents;
    }

    /* Botones cuadrados de icono, con el mismo cristal oscuro del resto de la barra. */
    .livesic-map-iconbtn,
    .livesic-map-locate,
    #livesic-toggle-filters {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        align-self: center;
        width: 42px;
        min-width: 42px;
        height: 42px;
        padding: 0;
        border-radius: 13px;
        border-color: rgba(255, 255, 255, 0.28);
        background: rgba(17, 24, 39, 0.66);
        color: #fff;
        box-shadow: 0 8px 22px rgba(15, 23, 42, 0.18);
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }

    .livesic-map-iconbtn svg,
    .livesic-map-locate svg,
    .livesic-map-filters-icon {
        display: block;
        width: 21px;
        height: 21px;
    }

    /* El botón de filtros pasa a icono; su texto queda solo para lectores de pantalla. */
    #livesic-toggle-filters > span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }

    .livesic-map-search-toggle { grid-area: 1 / 1; }
    #livesic-toggle-filters { grid-area: 2 / 2; }
    .livesic-map-filter-summary { grid-area: 2 / 3; }
    .livesic-map-free-toggle { grid-area: 2 / 4; }

    /* Fuera de la esquina: el GPS es el primer icono de la segunda fila. */
    .livesic-map-locate {
        position: static;
        grid-area: 2 / 1;
    }

    /* Tarjeta de información: las dos píldoras se funden en dos líneas de texto y el icono de
       lista vive DENTRO, a la derecha (rejilla de 2 columnas: texto | botón). El velo es el
       mismo 0.38 que el contenedor de chips —no el 0.66 de los botones— para que no pese:
       los paneles informativos van claros y los controles oscuros. */
    .livesic-map-info {
        grid-area: 1 / 2 / auto / -1;
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        /* Dos filas EXPLÍCITAS (promocionados + resultados) para que `grid-row:1/-1` del botón
           las abarque de verdad: sin `grid-template-rows`, la línea -1 es la 1 y el botón se
           quedaba en la primera fila estirando la tarjeta. */
        grid-template-rows: repeat(2, auto);
        align-items: center;
        align-self: stretch;
        column-gap: 8px;
        row-gap: 2px;
        min-width: 0;
        padding: 5px 6px 5px 11px;
        border: 1px solid rgba(255, 255, 255, 0.2);
        border-radius: 14px;
        background: rgba(17, 24, 39, 0.38);
        color: rgba(255, 255, 255, 0.88);
        box-shadow: 0 10px 26px rgba(15, 23, 42, 0.18);
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }

    /* Las dos líneas ocupan la primera columna; el botón de lista abarca las que haya.
       En la tarjeta los resultados van ARRIBA y los promocionados debajo (al revés que en
       el apilado de escritorio, que el usuario dejó con los promocionados encima). */
    .livesic-map-info .livesic-map-results-count {
        grid-column: 1;
        grid-row: 1;
    }

    .livesic-map-info .livesic-map-promoted-count {
        grid-column: 1;
        grid-row: 2;
    }

    .livesic-map-info .livesic-map-list-toggle {
        grid-column: 2;
        grid-row: 1 / -1;
    }

    /* Dentro de la tarjeta el botón de lista no lleva el cristal oscuro de los otros iconos:
       sería una segunda capa oscura sobre el velo. Va con un tinte blanco, como los chips. */
    .livesic-map-info .livesic-map-list-toggle {
        width: 34px;
        min-width: 34px;
        height: 34px;
        border-radius: 10px;
        border-color: rgba(255, 255, 255, 0.18);
        background: rgba(255, 255, 255, 0.14);
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14);
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }

    .livesic-map-info .livesic-map-list-toggle svg {
        width: 19px;
        height: 19px;
    }

    .livesic-map-info .livesic-map-promoted-count,
    .livesic-map-info .livesic-map-results-count {
        width: 100%;
        max-width: 100%;
        align-self: stretch;
        padding: 0;
        border: 0;
        border-radius: 0;
        background: none;
        box-shadow: none;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        /* Las dos líneas van centradas dentro de la tarjeta. */
        justify-content: center;
        text-align: center;
    }

    /* El contador es una columna (línea + pista), así que además hay que centrar su eje cruzado. */
    .livesic-map-info .livesic-map-results-count {
        align-items: center;
    }

    /* ⚠️ En tema OSCURO el contador conserva fondo propio dentro de la tarjeta: la regla
       `:root[data-lv-theme="dark"] .livesic-map-results-count` de livesic-theme.css (0,3,0)
       gana al `background:none` de aquí (0,2,0). Se deja redondeado como píldora y con algo
       de aire para que no sea un rectángulo de esquinas vivas sobre el velo de la tarjeta.
       En tema claro no hay fondo y solo se nota el par de píxeles de alto. */
    .livesic-map-info .livesic-map-results-count {
        box-sizing: border-box;
        padding: 2px 9px;
        border-radius: 999px;
    }

    /* El icono de lista ya abre los resultados: la pista sobra dentro de la tarjeta. */
    .livesic-map-results-count__hint {
        display: none;
    }

    .livesic-map-filter-summary {
        /* width:auto anula el `fit-content` de la regla base: dentro de la rejilla debe
           ocupar su celda y recortar (no desbordar sobre el interruptor "Gratuito"). */
        width: auto;
        min-width: 0;
        align-self: stretch;
        justify-content: center;
        flex-wrap: nowrap;
        gap: 4px;
        padding: 3px;
        overflow: hidden;
    }

    /* Tipografía y separaciones ajustadas para que "dd/mm/aaaa - dd/mm/aaaa" quepa
       entero junto al interruptor "Gratuito" en pantallas de 360-390px. */
    .livesic-map-filter-chip {
        min-width: 0;
        padding: 6px 4px;
        font-size: 11px;
    }

    .livesic-map-filter-chip strong {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    /* El chip de género solo sale si hay un género filtrado; el de precio nunca (su
       sitio lo ocupa el interruptor "Gratuito"). */
    .livesic-map-filter-chip[data-livesic-filter-summary="genre"].livesic-map-filter-chip--on {
        display: inline-flex;
    }

    /* Interruptor rápido de "solo eventos gratuitos". */
    .livesic-map-free-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 5px;
        align-self: stretch;
        padding: 6px 9px;
        border: 1px solid rgba(255, 255, 255, 0.28);
        border-radius: 13px;
        background: rgba(17, 24, 39, 0.66);
        color: #fff;
        font-family: inherit;
        font-size: 11px;
        font-weight: 700;
        line-height: 1.15;
        white-space: nowrap;
        cursor: pointer;
        box-shadow: 0 8px 22px rgba(15, 23, 42, 0.18);
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }

    .livesic-map-free-toggle__box {
        flex: 0 0 auto;
        width: 16px;
        height: 16px;
        color: rgba(255, 255, 255, 0.5);
    }

    .livesic-map-free-toggle__check {
        display: none;
    }

    .livesic-map-free-toggle.is-on {
        border-color: rgba(34, 197, 94, 0.75);
        background: rgba(20, 83, 45, 0.72);
    }

    .livesic-map-free-toggle.is-on .livesic-map-free-toggle__box {
        color: #4ade80;
    }

    .livesic-map-free-toggle.is-on .livesic-map-free-toggle__check {
        display: block;
    }

    /* Buscador: oculto hasta pulsar la lupa; entonces ocupa su propia fila completa. */
    .livesic-map-search {
        grid-column: 1 / -1;
        display: none;
    }

    .livesic-map-overlay.is-search-open .livesic-map-search {
        display: block;
    }

    .livesic-map-overlay.is-search-open .livesic-map-search-toggle {
        border-color: rgba(96, 165, 250, 0.8);
        background: rgba(37, 99, 235, 0.85);
    }

    .livesic-map-overlay .livesic-map-filters-panel {
        grid-column: 1 / -1;
        width: 100%;
        box-sizing: border-box;
        max-height: calc(100vh - 330px);
        max-height: calc(100dvh - 330px);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* "Ver todo" y pantalla completa no caben en la barra compacta. */
    .livesic-btn--map[data-livesic-fit],
    .livesic-btn--map[data-livesic-fullscreen] {
        display: none;
    }

    /* El panel de filtros usa dos columnas */
    .livesic-filters-grid {
        grid-template-columns: 1fr 1fr;
    }

    /* La lista de conciertos queda oculta y se abre como hoja inferior */
    .livesic-events-wrapper.has-list-toggle .livesic-events-grid {
        display: none;
    }

    .livesic-events-wrapper.has-list-toggle.list-open .livesic-events-grid {
        display: grid;
        position: fixed;
        top: 96px;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 9500;
        margin: 0;
        padding: 0 14px 28px;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        align-content: start;
        background: #f8fafc;
        border-radius: 20px 20px 0 0;
        box-shadow: 0 -18px 50px rgba(15, 23, 42, 0.35);
    }

    /* El contador duplicado dentro de la lista sobra en la hoja */
    .livesic-events-wrapper.has-list-toggle .livesic-events-grid > p {
        display: none;
    }

    body.livesic-events-list-open {
        overflow: hidden;
    }

    .livesic-events-wrapper.has-list-toggle .livesic-events-list-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        position: sticky;
        top: 0;
        z-index: 2;
        margin: 0 -14px;
        padding: 18px 16px 12px;
        background: #f8fafc;
        border-bottom: 1px solid #e5e7eb;
    }

    .livesic-events-list-head strong {
        font-size: 15px;
    }

    /* Asa visual de la hoja inferior */
    .livesic-events-list-head::before {
        content: "";
        position: absolute;
        top: 6px;
        left: 50%;
        transform: translateX(-50%);
        width: 44px;
        height: 4px;
        border-radius: 999px;
        background: #cbd5e1;
    }
}

@media (max-width: 380px) {
    .livesic-filters-grid {
        grid-template-columns: 1fr;
    }
}

/* ── Leaflet: zoom abajo a la derecha ───────────────────────────────── */
.leaflet-top.leaflet-left .leaflet-control-zoom {
    display: none !important;
}

/* Leaflet controls sit below the filters overlay (z-index 800) */
.leaflet-control-container .leaflet-bottom {
    z-index: 400;
}

.leaflet-control-container .leaflet-top {
    z-index: 400;
}

/* Atribución de OpenStreetMap: OBLIGATORIA por su licencia, así que NO se oculta;
   se deja visible pero discreta (más pequeña y tenue) en el mapa de eventos. */
.livesic-map-container--hero .leaflet-control-attribution {
    font-size: 10px;
    line-height: 1.5;
    padding: 1px 6px;
    background: rgba(255, 255, 255, 0.55);
    color: #667085;
}

.livesic-map-container--hero .leaflet-control-attribution a {
    color: #475467;
}

/* En móvil se ocultan los botones +/- (zoom): el zoom se hace con los dedos. En
   escritorio se mantienen. Solo el mapa de eventos (hero). */
@media (max-width: 860px) {
    .livesic-map-container--hero .leaflet-control-zoom {
        display: none;
    }
}

/* La atribución de OpenStreetMap va SIEMPRE pegada a la esquina inferior derecha del
   mapa (Leaflet ancla su contenedor a bottom:0). ÚNICA excepción: en PANTALLA COMPLETA
   el mapa llega al borde de la pantalla y la barra inferior fija (60px + safe-area,
   z-index altísimo) taparía la etiqueta —que por licencia debe verse—, así que ahí se
   sube justo por encima de la barra.

   ⚠️ NO subirla fuera de pantalla completa (2026-08-16): antes el desplazamiento se
   aplicaba a TODO ≤860px, y como en la vista normal el `body` ya reserva ese hueco con
   su `padding-bottom` y el map-box termina justo encima de la barra, la etiqueta
   quedaba flotando 60px por DENTRO del mapa. Peor aún, el valor no era estable: depende
   de `env(safe-area-inset-bottom)`, que iOS cambia al plegar/desplegar su barra de
   navegación, y del corte de 860px al redimensionar la ventana → la etiqueta "se movía
   sola de vez en cuando y ya no volvía". */
@media (max-width: 860px) {
    .livesic-map-container--hero.is-fullscreen .leaflet-bottom {
        bottom: calc(60px + env(safe-area-inset-bottom, 0px));
    }
}

/* ── Botón solo icono ────────────────────────────────────────────────── */
.livesic-btn--icon {
    padding: 9px 10px;
    min-width: 38px;
    justify-content: center;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
}

/* ======================================================================
   Detail pages (event / artist / venue)
   ====================================================================== */
.livesic-detail-page{display:block;max-width:1080px;margin:24px auto 48px;padding:0 16px;box-sizing:border-box;width:100%;overflow-x:clip}
.livesic-detail-page *,.livesic-detail-page *::before,.livesic-detail-page *::after{box-sizing:border-box}
.livesic-detail-page img,.livesic-detail-page iframe,.livesic-detail-page video,.livesic-detail-page embed{max-width:100%;height:auto}
.livesic-detail-page iframe{width:100%}
.lv-detail{background:#fff;border:1px solid var(--lv-border,#e5e7eb);border-radius:20px;overflow:hidden;box-shadow:0 4px 24px rgba(15,23,42,.06);max-width:100%}
.lv-detail,.lv-detail *{min-width:0}
.lv-detail__title,.lv-detail__subtitle,.lv-detail__desc,.lv-detail__block h2,.lv-event-card__body,.lv-card strong,.lv-card__meta{overflow-wrap:anywhere;word-break:break-word}

/* Event hero */
.lv-detail__hero{position:relative;min-height:320px;padding:32px;display:flex;align-items:flex-end;color:#fff;background:linear-gradient(135deg,#1e293b 0%,#2563eb 55%,#7c3aed 100%);background-size:cover;background-position:center}
.lv-detail__hero-inner{display:flex;gap:20px;align-items:flex-end;width:100%}
.lv-detail__date-chip{flex-shrink:0;background:#fff;color:#0f172a;border-radius:12px;padding:10px 16px;text-align:center;min-width:72px;box-shadow:0 4px 12px rgba(0,0,0,.15)}
.lv-detail__date-day{display:block;font-size:30px;font-weight:700;line-height:1}
.lv-detail__date-month{display:block;font-size:11px;font-weight:600;letter-spacing:.12em;color:#64748b;margin-top:2px}
.lv-detail__hero-text{flex:1;min-width:0}
.lv-detail__chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.lv-detail__title{font-size:32px;font-weight:700;margin:0 0 8px;line-height:1.15;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.lv-detail__subtitle{margin:0;font-size:15px;opacity:.92}
.lv-detail__subtitle a{color:inherit;text-decoration:underline}
.lv-detail__sep{opacity:.6;margin:0 4px}

/* Artist/Venue cover */
.lv-detail__cover{height:220px;background:linear-gradient(135deg,#1e293b 0%,#2563eb 55%,#7c3aed 100%);background-size:cover;background-position:center}

/* Body layouts */
.lv-detail__body{padding:24px 32px 32px;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
.lv-detail__body--artist,.lv-detail__body--venue{display:block;padding:0 32px 32px}

/* Head (artist/venue) */
.lv-detail__head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:20px;align-items:flex-start;margin-bottom:20px;padding-top:20px}
.lv-detail__body--venue .lv-detail__head{display:block;padding-top:24px}
.lv-detail__avatar-wrap{margin-top:-80px}
.lv-detail__avatar{width:128px;height:128px;border-radius:50%;object-fit:cover;border:4px solid #fff;box-shadow:0 4px 16px rgba(0,0,0,.12);background:#e2e8f0;display:flex;align-items:center;justify-content:center;font-size:46px;font-weight:700;color:#64748b}
.lv-detail__avatar--placeholder{width:128px;height:128px}
.lv-detail__head-info{min-width:0}
.lv-detail__body--artist .lv-detail__title,.lv-detail__body--venue .lv-detail__title{color:#0f172a;font-size:30px}
.lv-detail__body--artist .lv-detail__subtitle,.lv-detail__body--venue .lv-detail__subtitle{color:#64748b}

/* Stats */
.lv-detail__stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.lv-stat{display:flex;flex-direction:column;padding:10px 16px;background:#f8fafc;border:1px solid var(--lv-border,#e5e7eb);border-radius:12px;min-width:100px}
.lv-stat strong{font-size:20px;color:#0f172a;line-height:1.1}
.lv-stat span{font-size:12px;color:#64748b;margin-top:2px}

/* Badges */
.lv-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;background:rgba(255,255,255,.2);color:#fff;backdrop-filter:blur(6px)}
.lv-detail__body--artist .lv-badge,.lv-detail__body--venue .lv-badge{background:#f1f5f9;color:#334155}
.lv-badge--verified{background:#2563eb!important;color:#fff!important}
.lv-badge--free{background:#10b981!important;color:#fff!important}
.lv-badge--status{background:#f59e0b!important;color:#fff!important}
.lv-badge--cancelled,.lv-badge--canceled{background:#ef4444!important;color:#fff!important}
.lv-badge--location{background:#f1f5f9!important;color:#334155!important}

/* Main content blocks */
.lv-detail__main{min-width:0}
.lv-detail__block{margin-top:28px;padding-top:24px;border-top:1px solid var(--lv-border,#e5e7eb)}
.lv-detail__block:first-child{margin-top:0;padding-top:0;border-top:0}
.lv-detail__block h2{font-size:18px;font-weight:700;margin:0 0 14px;color:#0f172a}
.lv-detail__desc{line-height:1.65;color:#334155;font-size:15px}
.lv-detail__desc p:first-child{margin-top:0}
.lv-detail__desc p:last-child{margin-bottom:0}
.lv-detail__empty{color:#94a3b8;font-style:italic;margin:0}

/* Programa descargable del evento */
.lv-event-program,.lv-event-program *{box-sizing:border-box}
.lv-event-program{display:flex;align-items:center;gap:16px;width:min(100%,720px);padding:14px;border:1px solid var(--lv-border,#dbe3ee);border-radius:16px;background:linear-gradient(135deg,var(--lv-surface,#fff),rgba(249,96,62,.055));color:var(--lv-ink,#0f172a);text-decoration:none;box-shadow:0 10px 26px rgba(15,23,42,.06);transition:border-color .16s,box-shadow .16s,transform .16s}
.lv-event-program:hover{transform:translateY(-2px);border-color:#f9603e;box-shadow:0 16px 34px rgba(249,96,62,.13)}
.lv-event-program:focus-visible{outline:3px solid rgba(249,96,62,.25);outline-offset:4px}
.lv-event-program__preview{position:relative;display:grid;place-items:center;flex:0 0 76px;width:76px;height:88px;overflow:hidden;border:1px solid var(--lv-border,#dbe3ee);border-radius:11px;background:var(--lv-bg,#f8fafc);color:#f9603e}
.lv-event-program__preview img{width:100%;height:100%;object-fit:cover}
.lv-event-program__preview svg{width:38px;height:46px;stroke:currentColor;stroke-width:2}
.lv-event-program__preview b{position:absolute;right:5px;bottom:5px;padding:3px 5px;border-radius:5px;background:#f9603e;color:#fff;font-size:9px;letter-spacing:.08em}
.lv-event-program__copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:4px}
.lv-event-program__copy small{color:#f9603e;font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.lv-event-program__copy strong{overflow:hidden;color:var(--lv-ink,#0f172a);font-size:15px;text-overflow:ellipsis;white-space:nowrap}
.lv-event-program__copy span{color:var(--lv-muted,#64748b);font-size:12px}
.lv-event-program__download{display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:0 0 auto;min-height:42px;padding:10px 14px;border-radius:10px;background:#f9603e;color:#fff;font-size:13px;font-weight:800}
.lv-event-program__download svg{width:17px;height:17px}
@media (max-width:560px){.lv-event-program{align-items:stretch;flex-wrap:wrap}.lv-event-program__preview{flex-basis:68px;width:68px;height:78px}.lv-event-program__copy{justify-content:center;min-width:calc(100% - 88px)}.lv-event-program__download{flex-basis:100%}}

/* Full event poster */
.lv-detail__poster-block{max-width:100%}
.lv-detail__poster{position:relative;display:flex;align-items:center;justify-content:center;width:min(100%,640px);max-width:100%;min-height:0;margin:0;padding:0;border:1px solid #dbe3ee;border-radius:8px;background:#eef2f7;overflow:hidden;cursor:pointer;box-shadow:0 10px 28px rgba(15,23,42,.08);transition:border-color .15s,box-shadow .15s,transform .15s}
.lv-detail__poster:hover{transform:translateY(-2px);border-color:#2563eb;box-shadow:0 16px 34px rgba(37,99,235,.13)}
.lv-detail__poster:focus-visible{outline:3px solid rgba(37,99,235,.22);outline-offset:4px}
.lv-detail__poster img{display:block;width:auto;height:auto;max-width:100%;max-height:720px;object-fit:contain;background:#eef2f7}
.lv-detail__poster-zoom{position:absolute;right:12px;bottom:12px;display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:8px 12px;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:rgba(15,23,42,.72);color:#fff;font-size:12px;font-weight:700;line-height:1;box-shadow:0 8px 20px rgba(15,23,42,.22);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
html.lv-poster-lightbox-open,html.lv-poster-lightbox-open body{overflow:hidden}
/* z-index sobre cabecera (100050), barra inferior móvil (2147483001) y modales (2147483050);
   las sugerencias del region-picker conservan el máximo (2147483647). */
.lv-poster-lightbox{position:fixed;inset:0;z-index:2147483100;display:flex;align-items:center;justify-content:center;width:100vw;width:100dvw;height:100vh;height:100dvh;padding:24px;background:rgba(2,6,23,.94);box-sizing:border-box}
.lv-poster-lightbox__frame{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-width:0;min-height:0}
.lv-poster-lightbox__frame img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:8px;box-shadow:0 24px 70px rgba(0,0,0,.42);background:#0f172a}
.lv-poster-lightbox__close{position:fixed;top:18px;right:18px;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(15,23,42,.72);color:#fff;font-size:30px;line-height:1;cursor:pointer;box-shadow:0 12px 28px rgba(0,0,0,.28);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.lv-poster-lightbox__close:hover{background:rgba(30,41,59,.92)}
.lv-poster-lightbox__close:focus-visible{outline:3px solid rgba(255,255,255,.45);outline-offset:3px}

/* Artist card inside event */
.lv-card{display:flex;gap:14px;align-items:center;padding:14px;background:#f8fafc;border:1px solid var(--lv-border,#e5e7eb);border-radius:14px;text-decoration:none;color:inherit;transition:border-color .15s,transform .15s}
.lv-card:hover{border-color:#2563eb;transform:translateY(-1px)}
.lv-card img{width:56px;height:56px;border-radius:50%;object-fit:cover}
.lv-card__avatar-placeholder{width:56px;height:56px;border-radius:50%;background:#cbd5e1;color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700}
.lv-card small{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#64748b;margin-bottom:2px}
.lv-card strong{display:block;color:#0f172a;font-size:15px}
.lv-card__meta{display:block;font-size:13px;color:#64748b;margin-top:2px}
.lv-card__arrow{margin-left:auto;color:#94a3b8;font-size:18px}
.lv-detail__tick{color:#2563eb;font-size:14px}

/* Venue block inside event */
.lv-detail__venue{background:#f8fafc;border:1px solid var(--lv-border,#e5e7eb);border-radius:14px;padding:16px;color:#334155;line-height:1.5}
.lv-detail__venue strong{color:#0f172a;font-size:16px;display:block;margin-bottom:4px}
.lv-detail__venue-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}

/* Right panel (event aside) */
.lv-detail__aside{position:sticky;top:20px}
.lv-detail__panel{background:#fff;border:1px solid var(--lv-border,#e5e7eb);border-radius:16px;padding:18px;box-shadow:0 2px 12px rgba(15,23,42,.04)}
.lv-detail__price-row{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid #f1f5f9}
.lv-detail__price-label{color:#64748b;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.lv-detail__price-value{font-size:22px;font-weight:700;color:#0f172a}

/* Buttons */
.lv-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:10px;font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,transform .15s;box-sizing:border-box;max-width:100%}
.lv-btn--primary{background:#2563eb;color:#fff}
.lv-btn--primary:hover{background:#1d4ed8;color:#fff}
.lv-btn--ghost{background:#fff;color:#334155;border-color:var(--lv-border,#e5e7eb)}
.lv-btn--ghost:hover{border-color:#2563eb;color:#2563eb}
.lv-btn--block{display:flex;width:100%;margin-top:8px}
.lv-musician__actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:12px}
.lv-musician__message-note,.lv-detail__message-note{display:inline-flex;align-items:center;min-height:38px;padding:8px 12px;border:1px solid var(--lv-border,#e5e7eb);border-radius:10px;background:#f8fafc;color:#64748b;font-size:13px;font-weight:600}

/* Socials */
.lv-detail__social{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 0}
.lv-social{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;text-decoration:none;background:#f1f5f9;color:#334155;border:1px solid var(--lv-border,#e5e7eb);transition:all .15s}
.lv-social:hover{background:#2563eb;color:#fff;border-color:#2563eb}
.lv-social--instagram:hover{background:#e1306c;border-color:#e1306c}
.lv-social--youtube:hover{background:#ff0000;border-color:#ff0000}
.lv-social--tiktok:hover{background:#000;border-color:#000}
.lv-social--facebook:hover{background:#1877f2;border-color:#1877f2}
.lv-social--spotify:hover{background:#1db954;border-color:#1db954}
/* Icono por red/enlace: genéricos (emoji) + logos de marca ORIGINALES (Simple Icons) como máscara SVG */
.lv-social::before{font-weight:400;line-height:1}
.lv-social--website::before{content:"🌐"}
.lv-social--email::before{content:"✉️"}
.lv-social--phone::before{content:"📞"}
.lv-social--map::before{content:"📍"}
/* Hover con color de marca (los 5 de arriba se definen antes de este bloque) */
.lv-social--whatsapp:hover{background:#25d366;border-color:#25d366}
.lv-social--telegram:hover{background:#229ed9;border-color:#229ed9}
.lv-social--x:hover{background:#000;border-color:#000}
.lv-social--threads:hover{background:#000;border-color:#000}
.lv-social--snapchat:hover{background:#fffc00;border-color:#fffc00;color:#000}
.lv-social--pinterest:hover{background:#e60023;border-color:#e60023}
.lv-social--linkedin:hover{background:#0a66c2;border-color:#0a66c2}
.lv-social--twitch:hover{background:#9146ff;border-color:#9146ff}
.lv-social--instagram::before,
.lv-social--facebook::before,
.lv-social--tiktok::before,
.lv-social--spotify::before,
.lv-social--youtube::before,
.lv-social--soundcloud::before,
.lv-social--bandcamp::before,
.lv-social--whatsapp::before,
.lv-social--telegram::before,
.lv-social--x::before,
.lv-social--threads::before,
.lv-social--snapchat::before,
.lv-social--pinterest::before,
.lv-social--linkedin::before,
.lv-social--twitch::before{content:"";width:1.05em;height:1.05em;background-color:currentColor;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.lv-social--instagram::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.0301.084c-1.2768.0602-2.1487.264-2.911.5634-.7888.3075-1.4575.72-2.1228 1.3877-.6652.6677-1.075 1.3368-1.3802 2.127-.2954.7638-.4956 1.6365-.552 2.914-.0564 1.2775-.0689 1.6882-.0626 4.947.0062 3.2586.0206 3.6671.0825 4.9473.061 1.2765.264 2.1482.5635 2.9107.308.7889.72 1.4573 1.388 2.1228.6679.6655 1.3365 1.0743 2.1285 1.38.7632.295 1.6361.4961 2.9134.552 1.2773.056 1.6884.069 4.9462.0627 3.2578-.0062 3.668-.0207 4.9478-.0814 1.28-.0607 2.147-.2652 2.9098-.5633.7889-.3086 1.4578-.72 2.1228-1.3881.665-.6682 1.0745-1.3378 1.3795-2.1284.2957-.7632.4966-1.636.552-2.9124.056-1.2809.0692-1.6898.063-4.948-.0063-3.2583-.021-3.6668-.0817-4.9465-.0607-1.2797-.264-2.1487-.5633-2.9117-.3084-.7889-.72-1.4568-1.3876-2.1228C21.2982 1.33 20.628.9208 19.8378.6165 19.074.321 18.2017.1197 16.9244.0645 15.6471.0093 15.236-.005 11.977.0014 8.718.0076 8.31.0215 7.0301.0839m.1402 21.6932c-1.17-.0509-1.8053-.2453-2.2287-.408-.5606-.216-.96-.4771-1.3819-.895-.422-.4178-.6811-.8186-.9-1.378-.1644-.4234-.3624-1.058-.4171-2.228-.0595-1.2645-.072-1.6442-.079-4.848-.007-3.2037.0053-3.583.0607-4.848.05-1.169.2456-1.805.408-2.2282.216-.5613.4762-.96.895-1.3816.4188-.4217.8184-.6814 1.3783-.9003.423-.1651 1.0575-.3614 2.227-.4171 1.2655-.06 1.6447-.072 4.848-.079 3.2033-.007 3.5835.005 4.8495.0608 1.169.0508 1.8053.2445 2.228.408.5608.216.96.4754 1.3816.895.4217.4194.6816.8176.9005 1.3787.1653.4217.3617 1.056.4169 2.2263.0602 1.2655.0739 1.645.0796 4.848.0058 3.203-.0055 3.5834-.061 4.848-.051 1.17-.245 1.8055-.408 2.2294-.216.5604-.4763.96-.8954 1.3814-.419.4215-.8181.6811-1.3783.9-.4224.1649-1.0577.3617-2.2262.4174-1.2656.0595-1.6448.072-4.8493.079-3.2045.007-3.5825-.006-4.848-.0608M16.953 5.5864A1.44 1.44 0 1 0 18.39 4.144a1.44 1.44 0 0 0-1.437 1.4424M5.8385 12.012c.0067 3.4032 2.7706 6.1557 6.173 6.1493 3.4026-.0065 6.157-2.7701 6.1506-6.1733-.0065-3.4032-2.771-6.1565-6.174-6.1498-3.403.0067-6.156 2.771-6.1496 6.1738M8 12.0077a4 4 0 1 1 4.008 3.9921A3.9996 3.9996 0 0 1 8 12.0077'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.0301.084c-1.2768.0602-2.1487.264-2.911.5634-.7888.3075-1.4575.72-2.1228 1.3877-.6652.6677-1.075 1.3368-1.3802 2.127-.2954.7638-.4956 1.6365-.552 2.914-.0564 1.2775-.0689 1.6882-.0626 4.947.0062 3.2586.0206 3.6671.0825 4.9473.061 1.2765.264 2.1482.5635 2.9107.308.7889.72 1.4573 1.388 2.1228.6679.6655 1.3365 1.0743 2.1285 1.38.7632.295 1.6361.4961 2.9134.552 1.2773.056 1.6884.069 4.9462.0627 3.2578-.0062 3.668-.0207 4.9478-.0814 1.28-.0607 2.147-.2652 2.9098-.5633.7889-.3086 1.4578-.72 2.1228-1.3881.665-.6682 1.0745-1.3378 1.3795-2.1284.2957-.7632.4966-1.636.552-2.9124.056-1.2809.0692-1.6898.063-4.948-.0063-3.2583-.021-3.6668-.0817-4.9465-.0607-1.2797-.264-2.1487-.5633-2.9117-.3084-.7889-.72-1.4568-1.3876-2.1228C21.2982 1.33 20.628.9208 19.8378.6165 19.074.321 18.2017.1197 16.9244.0645 15.6471.0093 15.236-.005 11.977.0014 8.718.0076 8.31.0215 7.0301.0839m.1402 21.6932c-1.17-.0509-1.8053-.2453-2.2287-.408-.5606-.216-.96-.4771-1.3819-.895-.422-.4178-.6811-.8186-.9-1.378-.1644-.4234-.3624-1.058-.4171-2.228-.0595-1.2645-.072-1.6442-.079-4.848-.007-3.2037.0053-3.583.0607-4.848.05-1.169.2456-1.805.408-2.2282.216-.5613.4762-.96.895-1.3816.4188-.4217.8184-.6814 1.3783-.9003.423-.1651 1.0575-.3614 2.227-.4171 1.2655-.06 1.6447-.072 4.848-.079 3.2033-.007 3.5835.005 4.8495.0608 1.169.0508 1.8053.2445 2.228.408.5608.216.96.4754 1.3816.895.4217.4194.6816.8176.9005 1.3787.1653.4217.3617 1.056.4169 2.2263.0602 1.2655.0739 1.645.0796 4.848.0058 3.203-.0055 3.5834-.061 4.848-.051 1.17-.245 1.8055-.408 2.2294-.216.5604-.4763.96-.8954 1.3814-.419.4215-.8181.6811-1.3783.9-.4224.1649-1.0577.3617-2.2262.4174-1.2656.0595-1.6448.072-4.8493.079-3.2045.007-3.5825-.006-4.848-.0608M16.953 5.5864A1.44 1.44 0 1 0 18.39 4.144a1.44 1.44 0 0 0-1.437 1.4424M5.8385 12.012c.0067 3.4032 2.7706 6.1557 6.173 6.1493 3.4026-.0065 6.157-2.7701 6.1506-6.1733-.0065-3.4032-2.771-6.1565-6.174-6.1498-3.403.0067-6.156 2.771-6.1496 6.1738M8 12.0077a4 4 0 1 1 4.008 3.9921A3.9996 3.9996 0 0 1 8 12.0077'/%3E%3C/svg%3E");background-color:#E4405F}
.lv-social--facebook::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E");background-color:#1877F2}
.lv-social--tiktok::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'/%3E%3C/svg%3E");background-color:#111111}
.lv-social--spotify::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z'/%3E%3C/svg%3E");background-color:#1DB954}
.lv-social--youtube::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E");background-color:#FF0000}
.lv-social--soundcloud::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.999 14.165c-.052 1.796-1.612 3.169-3.4 3.169h-8.18a.68.68 0 0 1-.675-.683V7.862a.747.747 0 0 1 .452-.724s.75-.513 2.333-.513a5.364 5.364 0 0 1 2.763.755 5.433 5.433 0 0 1 2.57 3.54c.282-.08.574-.121.868-.12.884 0 1.73.358 2.347.992s.948 1.49.922 2.373ZM10.721 8.421c.247 2.98.427 5.697 0 8.672a.264.264 0 0 1-.53 0c-.395-2.946-.22-5.718 0-8.672a.264.264 0 0 1 .53 0ZM9.072 9.448c.285 2.659.37 4.986-.006 7.655a.277.277 0 0 1-.55 0c-.331-2.63-.256-5.02 0-7.655a.277.277 0 0 1 .556 0Zm-1.663-.257c.27 2.726.39 5.171 0 7.904a.266.266 0 0 1-.532 0c-.38-2.69-.257-5.21 0-7.904a.266.266 0 0 1 .532 0Zm-1.647.77a26.108 26.108 0 0 1-.008 7.147.272.272 0 0 1-.542 0 27.955 27.955 0 0 1 0-7.147.275.275 0 0 1 .55 0Zm-1.67 1.769c.421 1.865.228 3.5-.029 5.388a.257.257 0 0 1-.514 0c-.21-1.858-.398-3.549 0-5.389a.272.272 0 0 1 .543 0Zm-1.655-.273c.388 1.897.26 3.508-.01 5.412-.026.28-.514.283-.54 0-.244-1.878-.347-3.54-.01-5.412a.283.283 0 0 1 .56 0Zm-1.668.911c.4 1.268.257 2.292-.026 3.572a.257.257 0 0 1-.514 0c-.241-1.262-.354-2.312-.023-3.572a.283.283 0 0 1 .563 0Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.999 14.165c-.052 1.796-1.612 3.169-3.4 3.169h-8.18a.68.68 0 0 1-.675-.683V7.862a.747.747 0 0 1 .452-.724s.75-.513 2.333-.513a5.364 5.364 0 0 1 2.763.755 5.433 5.433 0 0 1 2.57 3.54c.282-.08.574-.121.868-.12.884 0 1.73.358 2.347.992s.948 1.49.922 2.373ZM10.721 8.421c.247 2.98.427 5.697 0 8.672a.264.264 0 0 1-.53 0c-.395-2.946-.22-5.718 0-8.672a.264.264 0 0 1 .53 0ZM9.072 9.448c.285 2.659.37 4.986-.006 7.655a.277.277 0 0 1-.55 0c-.331-2.63-.256-5.02 0-7.655a.277.277 0 0 1 .556 0Zm-1.663-.257c.27 2.726.39 5.171 0 7.904a.266.266 0 0 1-.532 0c-.38-2.69-.257-5.21 0-7.904a.266.266 0 0 1 .532 0Zm-1.647.77a26.108 26.108 0 0 1-.008 7.147.272.272 0 0 1-.542 0 27.955 27.955 0 0 1 0-7.147.275.275 0 0 1 .55 0Zm-1.67 1.769c.421 1.865.228 3.5-.029 5.388a.257.257 0 0 1-.514 0c-.21-1.858-.398-3.549 0-5.389a.272.272 0 0 1 .543 0Zm-1.655-.273c.388 1.897.26 3.508-.01 5.412-.026.28-.514.283-.54 0-.244-1.878-.347-3.54-.01-5.412a.283.283 0 0 1 .56 0Zm-1.668.911c.4 1.268.257 2.292-.026 3.572a.257.257 0 0 1-.514 0c-.241-1.262-.354-2.312-.023-3.572a.283.283 0 0 1 .563 0Z'/%3E%3C/svg%3E");background-color:#FF5500}
.lv-social--bandcamp::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M0 18.75l7.437-13.5H24l-7.438 13.5H0z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M0 18.75l7.437-13.5H24l-7.438 13.5H0z'/%3E%3C/svg%3E");background-color:#408294}
.lv-social--whatsapp::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z'/%3E%3C/svg%3E");background-color:#25D366}
.lv-social--telegram::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z'/%3E%3C/svg%3E");background-color:#26A5E4}
.lv-social--x::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z'/%3E%3C/svg%3E");background-color:#111111}
.lv-social--threads::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.845 1.205 8.6.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098 1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164 1.43 1.783 3.631 2.698 6.54 2.717 2.623-.02 4.358-.631 5.8-2.045 1.647-1.613 1.618-3.593 1.09-4.798-.31-.71-.873-1.3-1.634-1.75-.192 1.352-.622 2.446-1.284 3.272-.886 1.102-2.14 1.704-3.73 1.79-1.202.065-2.361-.218-3.259-.801-1.063-.689-1.685-1.74-1.752-2.964-.065-1.19.408-2.285 1.33-3.082.88-.76 2.119-1.207 3.583-1.291a13.853 13.853 0 0 1 3.02.142c-.126-.742-.375-1.332-.75-1.757-.513-.586-1.308-.883-2.359-.89h-.029c-.844 0-1.992.232-2.721 1.32L7.734 7.847c.98-1.454 2.568-2.256 4.478-2.256h.044c3.194.02 5.097 1.975 5.287 5.388.108.046.216.094.321.142 1.49.7 2.58 1.761 3.154 3.07.797 1.82.871 4.79-1.548 7.158-1.85 1.81-4.094 2.628-7.277 2.65Zm1.003-11.69c-.242 0-.487.007-.739.021-1.836.103-2.98.946-2.916 2.143.067 1.256 1.452 1.839 2.784 1.767 1.224-.065 2.818-.543 3.086-3.71a10.5 10.5 0 0 0-2.215-.221z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.845 1.205 8.6.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098 1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164 1.43 1.783 3.631 2.698 6.54 2.717 2.623-.02 4.358-.631 5.8-2.045 1.647-1.613 1.618-3.593 1.09-4.798-.31-.71-.873-1.3-1.634-1.75-.192 1.352-.622 2.446-1.284 3.272-.886 1.102-2.14 1.704-3.73 1.79-1.202.065-2.361-.218-3.259-.801-1.063-.689-1.685-1.74-1.752-2.964-.065-1.19.408-2.285 1.33-3.082.88-.76 2.119-1.207 3.583-1.291a13.853 13.853 0 0 1 3.02.142c-.126-.742-.375-1.332-.75-1.757-.513-.586-1.308-.883-2.359-.89h-.029c-.844 0-1.992.232-2.721 1.32L7.734 7.847c.98-1.454 2.568-2.256 4.478-2.256h.044c3.194.02 5.097 1.975 5.287 5.388.108.046.216.094.321.142 1.49.7 2.58 1.761 3.154 3.07.797 1.82.871 4.79-1.548 7.158-1.85 1.81-4.094 2.628-7.277 2.65Zm1.003-11.69c-.242 0-.487.007-.739.021-1.836.103-2.98.946-2.916 2.143.067 1.256 1.452 1.839 2.784 1.767 1.224-.065 2.818-.543 3.086-3.71a10.5 10.5 0 0 0-2.215-.221z'/%3E%3C/svg%3E");background-color:#111111}
.lv-social--snapchat::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.206.793c.99 0 4.347.276 5.93 3.821.529 1.193.403 3.219.299 4.847l-.003.06c-.012.18-.022.345-.03.51.075.045.203.09.401.09.3-.016.659-.12 1.033-.301.165-.088.344-.104.464-.104.182 0 .359.029.509.09.45.149.734.479.734.838.015.449-.39.839-1.213 1.168-.089.029-.209.075-.344.119-.45.135-1.139.36-1.333.81-.09.224-.061.524.12.868l.015.015c.06.136 1.526 3.475 4.791 4.014.255.044.435.27.42.509 0 .075-.015.149-.045.225-.24.569-1.273.988-3.146 1.271-.059.091-.12.375-.164.57-.029.179-.074.36-.134.553-.076.271-.27.405-.555.405h-.03c-.135 0-.313-.031-.538-.074-.36-.075-.765-.135-1.273-.135-.3 0-.599.015-.913.074-.6.104-1.123.464-1.723.884-.853.599-1.826 1.288-3.294 1.288-.06 0-.119-.015-.18-.015h-.149c-1.468 0-2.427-.675-3.279-1.288-.599-.42-1.107-.779-1.707-.884-.314-.045-.629-.074-.928-.074-.54 0-.958.089-1.272.149-.211.043-.391.074-.54.074-.374 0-.523-.224-.583-.42-.061-.192-.09-.389-.135-.567-.046-.181-.105-.494-.166-.57-1.918-.222-2.95-.642-3.189-1.226-.031-.063-.052-.15-.055-.225-.015-.243.165-.465.42-.509 3.264-.54 4.73-3.879 4.791-4.02l.016-.029c.18-.345.224-.645.119-.869-.195-.434-.884-.658-1.332-.809-.121-.029-.24-.074-.346-.119-1.107-.435-1.257-.93-1.197-1.273.09-.479.674-.793 1.168-.793.146 0 .27.029.383.074.42.194.789.3 1.104.3.234 0 .384-.06.465-.105l-.046-.569c-.098-1.626-.225-3.651.307-4.837C7.392 1.077 10.739.807 11.727.807l.419-.015h.06z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.206.793c.99 0 4.347.276 5.93 3.821.529 1.193.403 3.219.299 4.847l-.003.06c-.012.18-.022.345-.03.51.075.045.203.09.401.09.3-.016.659-.12 1.033-.301.165-.088.344-.104.464-.104.182 0 .359.029.509.09.45.149.734.479.734.838.015.449-.39.839-1.213 1.168-.089.029-.209.075-.344.119-.45.135-1.139.36-1.333.81-.09.224-.061.524.12.868l.015.015c.06.136 1.526 3.475 4.791 4.014.255.044.435.27.42.509 0 .075-.015.149-.045.225-.24.569-1.273.988-3.146 1.271-.059.091-.12.375-.164.57-.029.179-.074.36-.134.553-.076.271-.27.405-.555.405h-.03c-.135 0-.313-.031-.538-.074-.36-.075-.765-.135-1.273-.135-.3 0-.599.015-.913.074-.6.104-1.123.464-1.723.884-.853.599-1.826 1.288-3.294 1.288-.06 0-.119-.015-.18-.015h-.149c-1.468 0-2.427-.675-3.279-1.288-.599-.42-1.107-.779-1.707-.884-.314-.045-.629-.074-.928-.074-.54 0-.958.089-1.272.149-.211.043-.391.074-.54.074-.374 0-.523-.224-.583-.42-.061-.192-.09-.389-.135-.567-.046-.181-.105-.494-.166-.57-1.918-.222-2.95-.642-3.189-1.226-.031-.063-.052-.15-.055-.225-.015-.243.165-.465.42-.509 3.264-.54 4.73-3.879 4.791-4.02l.016-.029c.18-.345.224-.645.119-.869-.195-.434-.884-.658-1.332-.809-.121-.029-.24-.074-.346-.119-1.107-.435-1.257-.93-1.197-1.273.09-.479.674-.793 1.168-.793.146 0 .27.029.383.074.42.194.789.3 1.104.3.234 0 .384-.06.465-.105l-.046-.569c-.098-1.626-.225-3.651.307-4.837C7.392 1.077 10.739.807 11.727.807l.419-.015h.06z'/%3E%3C/svg%3E");background-color:#111111}
.lv-social--pinterest::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z'/%3E%3C/svg%3E");background-color:#BD081C}
.lv-social--linkedin::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.225 0z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.225 0z'/%3E%3C/svg%3E");background-color:#0A66C2}
.lv-social--twitch::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z'/%3E%3C/svg%3E");background-color:#9146FF}
.lv-social--instagram:hover::before,
.lv-social--facebook:hover::before,
.lv-social--tiktok:hover::before,
.lv-social--spotify:hover::before,
.lv-social--youtube:hover::before,
.lv-social--soundcloud:hover::before,
.lv-social--bandcamp:hover::before,
.lv-social--whatsapp:hover::before,
.lv-social--telegram:hover::before,
.lv-social--x:hover::before,
.lv-social--threads:hover::before,
.lv-social--snapchat:hover::before,
.lv-social--pinterest:hover::before,
.lv-social--linkedin:hover::before,
.lv-social--twitch:hover::before{background-color:#fff}
.lv-social--snapchat:hover::before{background-color:#111}

/* Events grid */
.lv-detail__events-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.lv-event-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--lv-border,#e5e7eb);border-radius:14px;overflow:hidden;text-decoration:none;color:inherit;transition:transform .15s,border-color .15s,box-shadow .15s}
.lv-event-card:hover{transform:translateY(-2px);border-color:#2563eb;box-shadow:0 8px 20px rgba(37,99,235,.08)}
.lv-event-card__media{position:relative;aspect-ratio:16/10;background:linear-gradient(135deg,#1e293b,#2563eb);background-size:cover;background-position:center}
.lv-event-card__date{position:absolute;top:10px;left:10px;background:#fff;border-radius:10px;padding:6px 10px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.lv-event-card__date span{display:block;font-size:20px;font-weight:700;line-height:1;color:#0f172a}
.lv-event-card__date small{display:block;font-size:10px;font-weight:600;color:#64748b;letter-spacing:.1em;margin-top:2px}
.lv-event-card__free{position:absolute;top:10px;right:10px;background:#10b981;color:#fff;font-size:11px;font-weight:700;padding:4px 8px;border-radius:6px}
.lv-event-card__body{padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.lv-event-card__body strong{font-size:14px;color:#0f172a;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lv-event-card__venue,.lv-event-card__time{font-size:12px;color:#64748b}

/* 404 */
.lv-detail--404{text-align:center;padding:64px 20px}
.lv-detail--404 h1{font-size:24px;margin:0 0 12px}

/* Responsive */
@media (max-width:860px){
    .lv-detail__body{grid-template-columns:1fr;padding:20px 24px 28px}
    .lv-detail__aside{position:static}
    .lv-detail__hero{min-height:240px;padding:24px}
    .lv-detail__title{font-size:26px}
    .lv-detail__cover{height:180px}
    .lv-detail__avatar-wrap{margin-top:-60px}
    .lv-detail__avatar,.lv-detail__avatar--placeholder{width:104px;height:104px;font-size:38px}
    .lv-detail__body--artist,.lv-detail__body--venue{padding:0 24px 28px}
    .lv-detail__events-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
}
@media (max-width:560px){
    .livesic-detail-page{margin:12px auto 32px;padding:0 10px}
    .lv-detail{border-radius:14px}
    .lv-detail__body{padding:16px 16px 22px}
    .lv-detail__body--artist,.lv-detail__body--venue{padding:0 16px 22px}
    .lv-detail__hero{padding:18px;min-height:190px}
    .lv-detail__hero-inner{flex-wrap:wrap;gap:14px;align-items:flex-start}
    .lv-detail__date-chip{padding:8px 12px;min-width:62px}
    .lv-detail__date-day{font-size:26px}
    .lv-detail__cover{height:150px}
    .lv-detail__head{grid-template-columns:1fr;text-align:center;gap:10px;padding-top:14px;margin-bottom:16px}
    .lv-detail__avatar-wrap{margin:-54px auto 0}
    .lv-detail__avatar,.lv-detail__avatar--placeholder{width:92px;height:92px;font-size:34px;border-width:3px}
    .lv-detail__title,.lv-detail__body--artist .lv-detail__title,.lv-detail__body--venue .lv-detail__title{font-size:22px;line-height:1.2;justify-content:center}
    .lv-detail__subtitle{font-size:13px}
    .lv-detail__chips{justify-content:center;gap:5px;margin-bottom:8px}
    .lv-detail__stats{justify-content:center;gap:8px;margin-top:12px}
    .lv-stat{padding:8px 12px;min-width:88px;flex:1 1 88px;max-width:160px}
    .lv-stat strong{font-size:17px}
    .lv-stat span{font-size:11px}
    .lv-detail__social{justify-content:center;gap:6px;margin-top:16px}
    .lv-social{padding:8px 12px;font-size:12px}
    .lv-detail__actions{justify-content:center;gap:8px;margin-top:14px}
    .lv-detail__actions .lv-btn{flex:1 1 100%;min-height:44px}
    .lv-detail__block{margin-top:22px;padding-top:18px}
    .lv-detail__block h2{font-size:17px;margin:0 0 12px}
    .lv-detail__desc{font-size:14px;line-height:1.6}
    .lv-detail__poster{width:100%;border-radius:8px}
    .lv-detail__poster img{max-height:620px}
    .lv-detail__poster-zoom{right:10px;bottom:10px;min-height:32px;padding:7px 10px;font-size:11px}
    .lv-poster-lightbox{padding:12px}
    .lv-poster-lightbox__close{top:12px;right:12px;width:40px;height:40px;font-size:28px}
    .lv-detail__events-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
    .lv-event-card__body{padding:10px 12px}
    .lv-event-card__body strong{font-size:13px}
    .lv-event-card__venue,.lv-event-card__time{font-size:11px}
    .lv-event-card__date{padding:5px 8px}
    .lv-event-card__date span{font-size:17px}
    .lv-detail__venue-actions .lv-btn{flex:1 1 100%}
}
@media (max-width:380px){
    .livesic-detail-page{padding:0 8px}
    .lv-detail__hero{padding:16px;min-height:170px}
    .lv-detail__cover{height:130px}
    .lv-detail__title,.lv-detail__body--artist .lv-detail__title,.lv-detail__body--venue .lv-detail__title{font-size:20px}
    .lv-detail__avatar,.lv-detail__avatar--placeholder{width:82px;height:82px;font-size:30px}
    .lv-detail__avatar-wrap{margin-top:-46px}
    .lv-detail__events-grid{grid-template-columns:1fr 1fr;gap:10px}
    .lv-stat{padding:6px 10px;min-width:72px}
    .lv-stat strong{font-size:15px}
    .lv-social{padding:6px 10px;font-size:11px}
}

/* Action buttons (save/follow/claim) */
.lv-detail__actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.lv-action-save,.lv-action-follow{position:relative;transition:all .2s}
.lv-action-save.is-saved{background:#fee2e2;color:#dc2626;border-color:#fecaca}
.lv-action-save.is-saved:hover{background:#fecaca}
.lv-action-save__icon{font-size:16px;line-height:1}
.lv-action-save.is-saved .lv-action-save__icon{color:#dc2626}
.lv-action-follow.is-saved{background:#fff;color:#0f172a;border-color:#cbd5e1}
.lv-action-follow.is-saved:hover{background:#fef2f2;color:#dc2626;border-color:#fca5a5}
.lv-action-follow.is-saved:hover .lv-action-follow__label::before{content:'Dejar de seguir'}
.lv-action-follow.is-saved:hover .lv-action-follow__label{font-size:0}
.lv-action-follow.is-saved:hover .lv-action-follow__label::before{font-size:14px}
/* Nº de seguidores: línea pequeña bajo el nombre, no un adorno del botón. */
.lv-followers{margin:8px 0 0;font-size:12.5px;line-height:1.2;color:var(--lv-muted,#64748b);letter-spacing:.01em}
.lv-followers strong{font-weight:800;color:var(--lv-ink,#0f172a);font-variant-numeric:tabular-nums}
.lv-followers-trigger{font:inherit;cursor:pointer}
.lv-stat.lv-followers-trigger{-webkit-appearance:none;appearance:none;text-align:left;color:inherit;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}
.lv-stat.lv-followers-trigger:hover{border-color:var(--lv-primary,#2563eb);box-shadow:0 4px 12px rgba(37,99,235,.12);transform:translateY(-1px)}
.lv-followers-trigger:focus-visible{outline:3px solid rgba(37,99,235,.38);outline-offset:2px}
.lv-followers-trigger--inline{-webkit-appearance:none;appearance:none;display:block;width:max-content;max-width:100%;padding:0;background:none;border:0;text-align:left;text-decoration:underline;text-underline-offset:3px}
.lv-followers-trigger--inline:hover{color:var(--lv-primary,#2563eb)}

/* ── "Voy a ir" (asistencia estimada del evento) ─────────────────── */
.lv-action-attend{position:relative;transition:all .2s}
.lv-action-attend:disabled,.lv-action-attend.is-ended{opacity:.55;cursor:not-allowed}
.lv-action-attend.is-attending{background:var(--lv-theme-success-bg,#dcfce7);color:var(--lv-theme-success,#15803d);border-color:var(--lv-theme-success,#86efac)}
.lv-action-attend.is-attending:hover{filter:brightness(1.05)}
.lv-action-attend__icon{font-size:15px;line-height:1;font-weight:800}
.lv-action-attend__count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;margin-left:6px;border-radius:999px;background:var(--lv-border,#e2e8f0);color:var(--lv-ink,#0f172a);font-size:12px;font-weight:700}
.lv-action-attend.is-attending .lv-action-attend__count{background:var(--lv-theme-success,#15803d);color:var(--lv-theme-primary-ink,#fff)}

/* ── "Me gusta" del evento, junto a Compartir ─────────────────────
   Es EL MISMO me gusta del Muro (social_reactions con target_type='event'), así que
   usa los colores de .lv-social-action--like para que se reconozca como lo mismo. */
.lv-detail__share-row{display:flex;align-items:stretch;gap:8px}
.lv-detail__share-row .lv-action-share{flex:1 1 auto;width:auto;min-width:0}
.lv-action-like{flex:0 0 auto;gap:6px;margin-top:8px;padding:10px 13px;transition:all .2s}
.lv-action-like__icon{display:flex;line-height:0}
.lv-action-like__count{font-size:13px;font-weight:700;line-height:1}
.lv-action-like:hover{color:#e11d48;border-color:#fecdd3}
.lv-action-like.is-liked{background:#fff1f2;color:#e11d48;border-color:#fecdd3}
.lv-action-like.is-liked .lv-action-like__icon svg{fill:#e11d48}
.lv-action-like.is-static{cursor:default}
.lv-action-like.is-static:hover{color:inherit;border-color:var(--lv-border,#e5e7eb)}
/* Ojo: livesic-theme.css se carga DESPUÉS y su :root[data-lv-theme="dark"] .lv-btn--ghost
   tiene la misma especificidad → el estado "me gusta" necesita ganarle (de ahí el .lv-btn). */
:root[data-lv-theme="dark"] .lv-btn.lv-action-like:hover{color:#fb7185;border-color:rgba(225,29,72,.45)}
:root[data-lv-theme="dark"] .lv-btn.lv-action-like.is-static:hover{color:var(--lv-theme-muted);border-color:var(--lv-theme-border)}
:root[data-lv-theme="dark"] .lv-btn.lv-action-like.is-liked{background:rgba(225,29,72,.18);color:#fb7185;border-color:rgba(225,29,72,.45)}
:root[data-lv-theme="dark"] .lv-btn.lv-action-like.is-liked .lv-action-like__icon svg{fill:#fb7185}
/* "Me gusta" reubicado en el hero, debajo de la tarjeta de fecha. */
.lv-detail__hero-side{display:flex;flex-direction:column;gap:8px;flex-shrink:0;align-items:stretch}
.lv-action-like--hero{margin-top:0;width:100%;justify-content:center;background:#fff;color:#0f172a;border-color:transparent;box-shadow:0 4px 12px rgba(0,0,0,.15)}
.lv-action-like--hero .lv-action-like__count{font-size:12px}
:root[data-lv-theme="dark"] .lv-btn.lv-action-like--hero{background:var(--lv-theme-elevated);border-color:var(--lv-theme-surface);color:var(--lv-theme-ink)}
.lv-detail__whos-going{display:block;width:100%;margin-top:2px;background:none;border:none;cursor:pointer;color:var(--lv-muted,#64748b);font-size:12.5px;font-weight:600;text-decoration:underline;text-underline-offset:3px;padding:2px 0 0}
.lv-detail__whos-going:hover{color:var(--lv-ink,#0f172a)}
/* "Ver quién va" + "Ver quién está" lado a lado (el segundo aparece al empezar el evento) */
.lv-detail__who-row{display:flex;gap:16px;justify-content:center;margin-top:2px}
.lv-detail__who-row .lv-detail__whos-going{display:inline-block;width:auto;margin-top:0}
.lv-detail__who-row .lv-detail__whos-going[hidden]{display:none}
.lv-detail__attend-note{margin:6px 0 0;text-align:center;font-size:12.5px;color:var(--lv-muted,#64748b)}
/* "Buscar sustituto" (solo para quien programa el evento). Hereda .lv-btn--ghost
   entero —incluido su modo oscuro de livesic-theme.css— y solo alinea el icono. */
.lv-action-replace__icon{display:flex;line-height:0}
.lv-detail__replace-note{margin:6px 0 0;text-align:center;font-size:12.5px;color:var(--lv-muted,#64748b)}

/* Modal "¿Cómo quieres aparecer?" / "Quién va" */
.lv-attend-modal{background:var(--lv-surface,#fff);color:var(--lv-ink,#0f172a);border:1px solid var(--lv-border,#e2e8f0);border-radius:20px;padding:24px 22px;max-width:420px;width:100%;max-height:80vh;overflow:auto;box-shadow:var(--lv-theme-shadow,0 8px 32px rgba(0,0,0,.25))}
.lv-attend-modal__head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}
.lv-attend-modal__head h3{margin:0;font-size:17px;font-weight:800}
.lv-attend-modal__close{background:none;border:none;cursor:pointer;font-size:22px;line-height:1;color:var(--lv-muted,#9ca3af);padding:0}
.lv-attend-modal__sub{margin:0 0 16px;font-size:13.5px;line-height:1.5;color:var(--lv-muted,#64748b)}
.lv-attend-modal__options{display:flex;flex-direction:column;gap:8px}
.lv-attend-modal__note{margin:12px 0 0;font-size:12px;color:var(--lv-muted,#64748b);text-align:center}
.lv-attend-modal__anon{margin:12px 0 0;font-size:12.5px;color:var(--lv-muted,#64748b)}
.lv-attend-modal__toggle{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--lv-border,#e2e8f0);font-size:13.5px;font-weight:600;cursor:pointer}
.lv-attend-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow:auto}
.lv-attend-list__item{display:flex;align-items:center;gap:10px}
.lv-attend-list__avatar{width:34px;height:34px;min-width:34px;border-radius:50%;background:var(--lv-border,#e2e8f0) center/cover no-repeat;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:var(--lv-muted,#64748b)}
.lv-attend-list__name{font-size:14px;font-weight:600}
.lv-attend-list__name em{font-style:normal;font-weight:500;color:var(--lv-muted,#64748b)}
.lv-attend-list__empty{font-size:13.5px;color:var(--lv-muted,#64748b)}

/* Lista pública de seguidores de artistas, bandas, compañías y salas. */
.lv-followers-modal{box-sizing:border-box;max-width:460px}
.lv-followers-list{display:flex;flex-direction:column;gap:7px;max-height:56vh;overflow:auto;margin:0 -6px;padding:2px 6px}
.lv-followers-list__item{display:flex;align-items:center;gap:11px;min-width:0;padding:9px 10px;border:1px solid transparent;border-radius:12px;color:var(--lv-ink,#0f172a);text-decoration:none}
.lv-followers-list__item.is-linked:hover{background:var(--lv-surface-2,#f8fafc);border-color:var(--lv-border,#e2e8f0)}
.lv-followers-list__avatar{width:42px;height:42px;min-width:42px;border-radius:50%;overflow:hidden;background:var(--lv-border,#e2e8f0);display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;color:var(--lv-muted,#64748b)}
.lv-followers-list__avatar img{display:block;width:100%;height:100%;object-fit:cover}
.lv-followers-list__body{display:flex;flex:1 1 auto;min-width:0;flex-direction:column;gap:2px}
.lv-followers-list__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:750;color:var(--lv-ink,#0f172a)}
.lv-followers-list__name em{font-style:normal;font-weight:500;color:var(--lv-muted,#64748b)}
.lv-followers-list__meta{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--lv-muted,#64748b)}
.lv-followers-list__arrow{flex:0 0 auto;font-size:24px;line-height:1;color:var(--lv-muted,#94a3b8)}
.lv-followers-list__empty{margin:8px 0 4px;padding:16px 8px;text-align:center;font-size:13.5px;color:var(--lv-muted,#64748b)}
.lv-followers-modal__footer{display:flex;justify-content:center;margin-top:14px}
.lv-followers-modal__footer:empty{display:none}

/* ── Mis perfiles artísticos ──────────────────────────────────────── */
.lv-ap-edit-link{color:var(--lv-primary,#dc2626);font-weight:600;text-decoration:none}
.lv-ap-edit-link:hover{text-decoration:underline}
.lv-ev-card-head__actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}

/* ── Region picker: estilos en assets/css/livesic-regions.css ─────── */

@media (max-width: 760px) {
    .livesic-map-filters-panel {
        padding: 12px;
        border-radius: 14px;
    }

    .livesic-map-filters-panel .livesic-filters-grid {
        grid-template-columns: 1fr 1fr;
    }

    .livesic-map-filters-panel .livesic-field,
    .livesic-map-filters-panel .livesic-field:not(.livesic-field--location),
    .livesic-map-filters-panel .livesic-field--price-block,
    .livesic-map-filters-panel .livesic-field--range:not(.livesic-field--price-block) {
        grid-column: 1 / -1;
    }

    .livesic-map-filters-panel .livesic-filter-actions {
        justify-content: stretch;
        /* El padding del panel en móvil es 12px: ajusta el sangrado de la barra fija. */
        bottom: -12px;
        margin: 0 -12px -12px;
        padding: 12px;
        border-radius: 0 0 14px 14px;
    }

    .livesic-map-filters-panel .livesic-location-tools {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    .livesic-map-filters-panel .livesic-region-picker.is-inline {
        grid-template-columns: 1fr;
    }

    .livesic-map-filters-panel .livesic-filter-actions .livesic-btn--filter-secondary,
    .livesic-map-filters-panel .livesic-filter-actions .livesic-btn--filter-apply {
        flex: 1 1 0;
    }
}

@media (max-width: 420px) {
    .livesic-map-filters-panel .livesic-filters-grid {
        grid-template-columns: 1fr;
    }

    .livesic-map-filters-panel .livesic-btn--filter-secondary {
        order: 1;
    }

    .livesic-map-filters-panel .livesic-btn--filter-apply {
        order: 2;
    }
}

/* =========================
   LIVESIC · LEGAL PAGES
   ========================= */

.lv-legal-page {
    width: min(1120px, calc(100% - 32px));
    margin: 0 auto;
    padding: 34px 0 52px;
    color: #111827;
}

.lv-legal-hero {
    display: grid;
    gap: 10px;
    margin: 0 0 24px;
    padding: 26px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #fff;
}

.lv-legal-hero span {
    font-size: 12px;
    line-height: 1.2;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: #2563eb;
}

.lv-legal-hero h1 {
    margin: 0;
    font-size: clamp(30px, 4vw, 48px);
    line-height: 1.05;
    letter-spacing: 0;
    color: #111827;
}

.lv-legal-hero p {
    margin: 0;
    max-width: 720px;
    font-size: 17px;
    line-height: 1.55;
    color: #4b5563;
}

.lv-legal-grid,
.lv-legal-split {
    display: grid;
    gap: 16px;
}

.lv-legal-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.lv-legal-split {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    margin-bottom: 16px;
}

.lv-legal-panel {
    min-width: 0;
    padding: 22px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #fff;
    box-sizing: border-box;
}

.lv-legal-page > .lv-legal-panel {
    margin-top: 16px;
}

.lv-legal-panel h2 {
    margin: 0 0 12px;
    font-size: 20px;
    line-height: 1.2;
    letter-spacing: 0;
    color: #111827;
}

.lv-legal-panel p,
.lv-legal-panel li,
.lv-legal-panel dd {
    font-size: 15px;
    line-height: 1.62;
    color: #374151;
}

.lv-legal-panel p {
    margin: 0 0 12px;
}

.lv-legal-panel p:last-child {
    margin-bottom: 0;
}

.lv-legal-panel ul {
    margin: 0;
    padding-left: 18px;
}

.lv-legal-link {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    margin-top: 4px;
    color: #2563eb;
    font-weight: 700;
    text-decoration: none;
}

.lv-legal-link:hover {
    text-decoration: underline;
}

.lv-legal-docs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
}

.lv-legal-docs a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 0 12px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    color: #111827;
    text-decoration: none;
    font-size: 14px;
    font-weight: 700;
    background: #fff;
}

.lv-legal-docs a:hover {
    border-color: #2563eb;
    color: #2563eb;
}

.lv-legal-list {
    display: grid;
    gap: 10px;
    margin: 0;
}

.lv-legal-list div {
    display: grid;
    grid-template-columns: minmax(120px, .35fr) minmax(0, 1fr);
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid #eef2f7;
}

.lv-legal-list div:last-child {
    border-bottom: 0;
}

.lv-legal-list dt {
    font-size: 13px;
    line-height: 1.4;
    font-weight: 800;
    color: #111827;
}

.lv-legal-list dd {
    margin: 0;
}

.lv-legal-list a {
    color: #2563eb;
}

.lv-legal-small,
.lv-legal-config-note {
    font-size: 13px !important;
    color: #6b7280 !important;
}

.lv-legal-config-note {
    margin: 16px 0 0;
    padding: 12px 14px;
    border: 1px dashed #f59e0b;
    border-radius: 8px;
    background: #fffbeb;
}

.lv-legal-form {
    display: grid;
    gap: 14px;
}

.lv-legal-form label {
    display: grid;
    gap: 7px;
    font-size: 13px;
    font-weight: 800;
    color: #111827;
}

.lv-legal-form input,
.lv-legal-form select,
.lv-legal-form textarea {
    width: 100%;
    min-width: 0;
    min-height: 44px;
    padding: 10px 12px;
    border: 1.5px solid #d1d5db;
    border-radius: 8px;
    background: #fff;
    color: #111827;
    font: inherit;
    font-size: 14px;
    line-height: 1.35;
    box-sizing: border-box;
}

.lv-legal-form textarea {
    resize: vertical;
}

.lv-legal-form input:focus,
.lv-legal-form select:focus,
.lv-legal-form textarea:focus {
    outline: none;
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .14);
}

.lv-legal-check {
    display: flex !important;
    flex-direction: row;
    align-items: flex-start;
    gap: 10px;
    font-size: 13px !important;
    line-height: 1.45;
    font-weight: 600 !important;
    color: #374151 !important;
}

.lv-legal-check input[type="checkbox"] {
    width: 18px;
    min-width: 18px;
    height: 18px;
    min-height: 18px;
    margin-top: 1px;
    padding: 0;
}

.lv-legal-check a {
    color: #2563eb;
}

.lv-legal-check--auth {
    margin: 4px 0 2px;
}

.lv-legal-hp {
    position: absolute !important;
    left: -10000px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.lv-legal-auth {
    margin-bottom: 16px;
}

@media (max-width: 820px) {
    .lv-legal-page {
        width: min(100% - 20px, 680px);
        padding: 20px 0 36px;
    }

    .lv-legal-grid,
    .lv-legal-split {
        grid-template-columns: 1fr;
    }

    .lv-legal-hero,
    .lv-legal-panel {
        padding: 18px;
    }

    .lv-legal-list div {
        grid-template-columns: 1fr;
        gap: 4px;
    }
}

/* =========================================================================
   MAPA · Plegar el panel de filtros deslizando hacia ARRIBA (2026-08-31)
   =========================================================================
   Espejo del gesto de la hoja "Más" de la barra inferior (que se cierra hacia
   abajo porque cuelga del fondo): este panel cuelga de la barra SUPERIOR del
   mapa, así que se pliega hacia arriba. La mini barra (tirador) la inyecta
   livesic-events-filters.js dentro de .livesic-filter-actions —que es sticky—
   para que se vea siempre aunque el panel esté haciendo scroll, y para que las
   dos vistas que comparten ese JS (agenda e invitado) la tengan sin duplicar
   marcado. */
.livesic-map-filters-panel {
    transition: transform .22s cubic-bezier(.22, .8, .3, 1), opacity .22s ease;
}

.livesic-map-filters-panel.is-dragging {
    transition: none;
    user-select: none;
    -webkit-user-select: none;
}

/* Sin pantalla táctil no hay gesto que anunciar: el tirador no se pinta. */
.livesic-map-filters-grabber {
    display: none;
}

@media (hover: none) and (pointer: coarse) {
    .livesic-map-filters-panel .livesic-filter-actions .livesic-map-filters-grabber {
        /* Fila propia dentro de la barra de acciones (que es flex-wrap), DESPUÉS
           de "Limpiar" (order 1) y "Aplicar" (order 3). */
        display: flex;
        flex: 1 0 100%;
        order: 4;
        align-items: center;
        justify-content: center;
        /* El margen negativo la pega al filo inferior del panel, como en las
           hojas del sistema; el padding le da una zona de toque cómoda. */
        margin: 6px 0 -8px;
        padding: 7px 0 4px;
        border: 0;
        background: none;
        cursor: grab;
        /* Sin esto el navegador se queda el gesto vertical para hacer scroll. */
        touch-action: none;
        -webkit-tap-highlight-color: transparent;
    }

    .livesic-map-filters-grabber::before {
        content: "";
        display: block;
        width: 42px;
        height: 4px;
        border-radius: 999px;
        /* Mismo tirador que la hoja "Más" de la barra inferior (.lvbn__handle).
           La barra de acciones es blanca en los dos temas, así que no hace falta
           variante para el modo oscuro. */
        background: #cbd5e1;
    }
}

/* ── «Continuar con Apple» (guía 4.8 de la App Store, 2026-09-03) ──────────
   Apple exige su logo y un botón sólido: negro sobre fondo claro. Hereda la
   caja de .livesic-google-btn y solo invierte los colores; en tema oscuro
   pasa a blanco sobre negro (livesic-theme.css), como permite la guía. */
.livesic-apple-auth {
    margin: 18px 0 -8px;
}

.livesic-google-btn.livesic-apple-btn {
    border-color: #000;
    background: #000;
    color: #fff;
}

.livesic-google-btn.livesic-apple-btn:hover {
    border-color: #1c1c1e;
    background: #1c1c1e;
    color: #fff;
    box-shadow: 0 8px 18px rgba(0, 0, 0, .28);
}

/* =========================================================================
   MAPA · Bocadillos contextuales al pie (eventos promocionados y fiestas)
   ========================================================================= */
.livesic-map-hints {
    position: absolute;
    left: 18px;
    bottom: 18px;
    z-index: 640;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 9px;
    max-width: min(390px, calc(100% - 92px));
    pointer-events: none;
    transform-origin: 24px 100%;
    transition: opacity .18s ease, transform .18s ease, visibility .18s linear;
}

.livesic-map-hint {
    position: relative;
    display: inline-flex;
    align-items: flex-start;
    gap: 10px;
    width: fit-content;
    max-width: 100%;
    box-sizing: border-box;
    padding: 10px 36px 10px 12px;
    border: 1px solid rgba(216, 180, 254, .42);
    border-radius: 13px;
    background: linear-gradient(145deg, rgba(17, 24, 39, .92), rgba(30, 41, 59, .86));
    color: rgba(248, 250, 252, .94);
    box-shadow: 0 10px 28px rgba(15, 23, 42, .24), inset 0 1px 0 rgba(255, 255, 255, .08);
    backdrop-filter: blur(12px) saturate(1.08);
    -webkit-backdrop-filter: blur(12px) saturate(1.08);
    font-size: 12.5px;
    line-height: 1.38;
    letter-spacing: .005em;
    pointer-events: none;
    transform-origin: 24px 100%;
    animation: livesic-festival-hint-in .32s cubic-bezier(.22, .8, .3, 1);
    transition: opacity .18s ease, transform .18s ease;
}

.livesic-map-hint.is-closing {
    opacity: 0;
    transform: translateY(4px) scale(.985);
}

/* Colita solo en el bocadillo de abajo (el que toca el pie del mapa). */
.livesic-map-hint:last-child::after {
    content: "";
    position: absolute;
    left: 24px;
    bottom: -5px;
    width: 9px;
    height: 9px;
    border-right: 1px solid;
    border-bottom: 1px solid;
    border-color: inherit;
    background: rgba(23, 31, 47, .92);
    transform: rotate(45deg);
}

.livesic-map-hint--promoted {
    border-color: rgba(253, 186, 116, .46);
}

.livesic-map-hint__mark {
    flex: 0 0 auto;
}

.livesic-municipal-festival-hint__dot {
    width: 11px;
    height: 11px;
    margin-top: 3px;
    border: 2px solid rgba(233, 213, 255, .94);
    border-radius: 999px;
    background: #a855f7;
    box-shadow: 0 0 0 4px rgba(168, 85, 247, .2), 0 0 13px rgba(168, 85, 247, .58);
}

.livesic-map-hint__mark--promoted {
    display: inline-flex;
    width: 22px;
    height: 22px;
    margin: -2px 0 -2px -1px;
}

.livesic-map-hint__mark--promoted img {
    display: block;
    width: 22px;
    height: 22px;
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, .35));
}

.livesic-map-hint__copy {
    min-width: 0;
}

.livesic-map-hint__copy strong {
    color: #f3e8ff;
    font-weight: 800;
}

.livesic-map-hint--promoted .livesic-map-hint__copy strong {
    color: #ffedd5;
}

.livesic-map-hint__close {
    position: absolute;
    top: 6px;
    right: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, .10);
    color: rgba(248, 250, 252, .82);
    cursor: pointer;
    pointer-events: auto;
    -webkit-tap-highlight-color: transparent;
    transition: background .15s ease, color .15s ease;
}

.livesic-map-hint__close svg {
    width: 11px;
    height: 11px;
}

.livesic-map-hint__close:hover,
.livesic-map-hint__close:focus-visible {
    background: rgba(255, 255, 255, .22);
    color: #fff;
    outline: none;
}

body.livesic-popup-open .livesic-map-hints,
.livesic-map-container.filters-open .livesic-map-hints {
    visibility: hidden;
    opacity: 0;
    transform: translateY(4px) scale(.985);
}

@keyframes livesic-festival-hint-in {
    from { opacity: 0; transform: translateY(5px) scale(.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 760px) {
    .livesic-map-hints {
        left: 12px;
        bottom: 14px;
        gap: 8px;
        max-width: calc(100% - 82px);
    }

    .livesic-map-hint {
        gap: 9px;
        padding: 9px 34px 9px 11px;
        border-radius: 12px;
        font-size: 12px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .livesic-map-hints,
    .livesic-map-hint {
        animation: none;
        transition: none;
    }
}

.livesic-apple-btn__mark {
    width: 20px;
    height: 20px;
    margin-top: -2px;
    flex: none;
}

/* El mapa movil ocupa el espacio restante del marco, sin depender del scroll
   restaurado al recargar. Solo estas vistas bloquean el documento; los filtros
   y las fichas mantienen sus propios scrollers. */
@media (max-width: 760px) {
    html.livesic-map-viewport {
        height: 100%;
        min-height: 0;
        overflow: hidden;
        overscroll-behavior: none;
    }
    body.livesic-app.livesic-map-viewport {
        position: fixed;
        inset: 0;
        display: flex;
        flex-direction: column;
        height: auto;
        min-height: 0;
        overflow: hidden;
        overscroll-behavior: none;
        padding-bottom: 0;
    }
    /* La barra ocupa una fila real. No duplicar su altura con padding del body:
       Android puede reajustar el viewport durante la navegacion. */
    .livesic-map-viewport > .lvbn { flex: 0 0 auto; }
    .livesic-map-viewport > .lvbn > .lvbn__bar {
        position: relative;
        bottom: auto;
        box-sizing: border-box;
    }
    .livesic-map-viewport > .livesic-site-header { flex: 0 0 auto; }
    .livesic-map-viewport > .livesic-main { flex: 1 1 0; min-height: 0; }
    .livesic-map-viewport > .livesic-site-footer { display: none; }
    .livesic-map-viewport .livesic-main > .livesic-events-wrapper {
        display: block;
        height: 100%;
        min-height: 0;
        margin-top: 0;
        margin-bottom: 0;
        padding-top: 0;
        padding-bottom: 0;
    }
    .livesic-map-viewport .livesic-map-container--hero:not(.is-fullscreen),
    .livesic-map-viewport .livesic-map-container--hero:not(.is-fullscreen) .livesic-map-box {
        height: 100%;
        min-height: 0;
    }
    .livesic-map-viewport .livesic-map-container--hero:not(.is-fullscreen) .livesic-map-box > .leaflet-container {
        height: 100% !important;
        min-height: 0 !important;
    }
}

@media (max-width: 760px) {
    .livesic-map-viewport .livesic-map-overlay .livesic-map-filters-panel {
        /* 2026-09-07: tope 400 → 520px (el usuario pidió que baje algo más); la
           variable del JS sigue impidiendo que pase del pie del mapa / barra inferior. */
        max-height: min(520px, var(--lv-map-filter-room, calc(100dvh - 330px))) !important;
        min-height: 0;
        overscroll-behavior-y: contain;
    }
}

/* ── iOS: sin zoom al enfocar campos (2026-09-08) ────────────────────────────
   Safari y el WebView de la app amplían la pantalla al tocar un campo con letra
   menor de 16px, y la página queda más ancha que el visor: en acceso y registro
   se podía arrastrar de lado a lado (medido en un iPhone 17 Pro: viewport 402,
   innerWidth 352). Solo iOS: -webkit-touch-callout únicamente existe ahí. */
@supports (-webkit-touch-callout: none) {
    input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="hidden"]):not([type="file"]),
    select,
    textarea {
        font-size: max(16px, 1em) !important;
    }
}

/* ── App de tienda: respiro sobre la barra inferior (2026-09-08) ─────────────
   El body ya reserva la altura exacta de la barra (60px + área segura), pero sin
   un navegador debajo los últimos botones quedaban pegados y medio tapados.
   +16px solo dentro de la app y nunca en el mapa (livesic-events-map.js calcula
   su altura contra la barra real). Especificidad mayor que el `body{}` del
   partial de la barra, así gana sin !important. */
@media (max-width: 860px) {
    html.lv-native-app body.livesic-has-bottom-bar:not(.livesic-map-viewport) {
        padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px));
    }
}
