﻿/* ═══════════════════════════════════════════════
   VARIABLES
═══════════════════════════════════════════════ */
:root {
    --color-primario: #C0392B;
    --color-primario-oscuro: #962d22;
    --color-texto: #1a1a2e;
    --color-texto-suave: #555;
    --color-fondo: #ffffff;
    --color-fondo-gris: #f5f5f0;
    --color-borde: #e0e0e0;
    --fuente: 'Segoe UI', system-ui, sans-serif;
    --radio: 10px;
    --sombra: 0 2px 12px rgba(0,0,0,0.08);
    --sombra-hover: 0 6px 24px rgba(0,0,0,0.14);
    --transicion: 0.2s ease;
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: var(--fuente);
    color: var(--color-texto);
    background: var(--color-fondo);
    line-height: 1.6;
}

a {
    color: inherit;
    text-decoration: none;
}

    a:hover {
        color: var(--color-primario);
    }

/* ═══════════════════════════════════════════════
   HERO BANNER — ratio 3:1
═══════════════════════════════════════════════ */
.hero {
    width: 100%;
}

.hero-imagen {
    width: 100%;
    aspect-ratio: 3 / 1;
    min-height: 280px;
    background-size: cover;
    background-position: center;
    position: relative;
}

.hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient( 135deg, rgba(192,57,43,0.75) 0%, rgba(26,26,46,0.65) 100%);
    display: flex;
    align-items: center;
    justify-content: center;
}

.hero-contenido {
    text-align: center;
    color: white;
    padding: 2rem;
    max-width: 700px;
}

.hero-titulo {
    font-size: clamp(2.2rem, 6vw, 4rem);
    font-weight: 800;
    letter-spacing: -1px;
    text-shadow: 0 2px 8px rgba(0,0,0,0.3);
    margin-bottom: 0.5rem;
}

.hero-subtitulo {
    font-size: clamp(1rem, 2.5vw, 1.3rem);
    opacity: 0.92;
    margin-bottom: 1.8rem;
}

.hero-acciones {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
}

.btn-hero-primary {
    background: white;
    color: var(--color-primario);
    padding: 0.75rem 2rem;
    border-radius: 50px;
    font-weight: 700;
    font-size: 1rem;
    transition: var(--transicion);
    box-shadow: 0 4px 16px rgba(0,0,0,0.15);
}

    .btn-hero-primary:hover {
        background: var(--color-primario);
        color: white;
        transform: translateY(-2px);
    }

.btn-hero-secondary {
    background: transparent;
    color: white;
    padding: 0.75rem 2rem;
    border-radius: 50px;
    font-weight: 600;
    font-size: 1rem;
    border: 2px solid rgba(255,255,255,0.7);
    transition: var(--transicion);
}

    .btn-hero-secondary:hover {
        background: rgba(255,255,255,0.15);
        border-color: white;
    }

/* ═══════════════════════════════════════════════
   SECCIONES
═══════════════════════════════════════════════ */
.seccion {
    padding: 3.5rem 2rem;
    max-width: 1280px;
    margin: 0 auto;
}

.seccion-gris {
    background: var(--color-fondo-gris);
    max-width: 100%;
    padding: 3.5rem 0;
}

    .seccion-gris > * {
        max-width: 1280px;
        margin: 0 auto;
        padding-left: 2rem;
        padding-right: 2rem;
    }

.seccion-cabecera {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 2rem;
    padding-bottom: 0.75rem;
    border-bottom: 3px solid var(--color-primario);
}

.seccion-titulo {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--color-texto);
}

.seccion-ver-mas {
    font-size: 0.9rem;
    color: var(--color-primario);
    font-weight: 600;
    transition: var(--transicion);
}

    .seccion-ver-mas:hover {
        gap: 6px;
    }

/* ═══════════════════════════════════════════════
   EVENTOS HOME GRID
═══════════════════════════════════════════════ */
.eventos-home-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.5rem;
}

.evento-home-card {
    background: white;
    border-radius: var(--radio);
    box-shadow: var(--sombra);
    overflow: hidden;
    transition: var(--transicion);
    display: flex;
    flex-direction: column;
}

    .evento-home-card:hover {
        transform: translateY(-4px);
        box-shadow: var(--sombra-hover);
    }

.evento-home-card-imagen {
    aspect-ratio: 16 / 9;
    background-size: cover;
    background-position: center;
    position: relative;
    min-height: 160px;
}

.evento-home-categoria {
    position: absolute;
    top: 0.6rem;
    left: 0.6rem;
    background: var(--color-primario);
    color: white;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 0.25rem 0.6rem;
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.evento-home-gratuito {
    position: absolute;
    top: 0.6rem;
    right: 0.6rem;
    background: #27ae60;
    color: white;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 0.25rem 0.6rem;
    border-radius: 4px;
}

.evento-home-card-body {
    padding: 1rem;
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    flex: 1;
}

.evento-home-fecha {
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--color-primario);
    color: white;
    border-radius: 6px;
    padding: 0.4rem 0.6rem;
    min-width: 48px;
    flex-shrink: 0;
}

.evento-home-dia {
    font-size: 1.4rem;
    font-weight: 800;
    line-height: 1;
}

.evento-home-mes {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.5px;
}

.evento-home-info h3 {
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.3;
    margin-bottom: 0.3rem;
}

.evento-home-lugar,
.evento-home-hora {
    font-size: 0.8rem;
    color: var(--color-texto-suave);
}

/* ═══════════════════════════════════════════════
   NOTICIAS HOME
═══════════════════════════════════════════════ */
.noticias-home-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
}

@media (max-width: 768px) {
    .noticias-home-grid {
        grid-template-columns: 1fr;
    }
}

.noticia-home-destacada {
    background: white;
    border-radius: var(--radio);
    box-shadow: var(--sombra);
    overflow: hidden;
    transition: var(--transicion);
}

    .noticia-home-destacada:hover {
        box-shadow: var(--sombra-hover);
    }

.noticia-home-destacada-imagen {
    aspect-ratio: 16 / 9;
    background-size: cover;
    background-position: center;
}

.noticia-home-destacada-body {
    padding: 1.5rem;
}

    .noticia-home-destacada-body h3 {
        font-size: 1.3rem;
        font-weight: 700;
        margin: 0.5rem 0;
        line-height: 1.3;
    }

    .noticia-home-destacada-body p {
        color: var(--color-texto-suave);
        font-size: 0.95rem;
        margin-bottom: 0.75rem;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .noticia-home-destacada-body time {
        font-size: 0.8rem;
        color: var(--color-primario);
        font-weight: 600;
    }

.noticias-home-lista {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.noticia-home-item {
    display: flex;
    gap: 1rem;
    background: white;
    border-radius: var(--radio);
    box-shadow: var(--sombra);
    padding: 0.75rem;
    transition: var(--transicion);
    align-items: center;
}

    .noticia-home-item:hover {
        box-shadow: var(--sombra-hover);
        transform: translateX(3px);
    }

.noticia-home-item-imagen {
    width: 90px;
    height: 65px;
    object-fit: cover;
    border-radius: 6px;
    flex-shrink: 0;
}

.noticia-home-item-body h4 {
    font-size: 0.9rem;
    font-weight: 600;
    line-height: 1.3;
    margin: 0.2rem 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.noticia-home-item-body time {
    font-size: 0.75rem;
    color: var(--color-texto-suave);
}

/* ═══════════════════════════════════════════════
   AGENDA PÚBLICA
═══════════════════════════════════════════════ */
.page-header {
    background: var(--color-texto);
    color: white;
    padding: 3rem 2rem 2rem;
    text-align: center;
}

    .page-header h1 {
        font-size: 2.2rem;
        font-weight: 800;
    }

.filtros {
    background: white;
    border-bottom: 1px solid var(--color-borde);
    padding: 1rem 2rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    position: sticky;
    top: 0;
    z-index: 10;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

.filtro-select {
    padding: 0.5rem 1rem;
    border: 1.5px solid var(--color-borde);
    border-radius: 50px;
    font-size: 0.9rem;
    background: white;
    cursor: pointer;
    transition: var(--transicion);
}

    .filtro-select:focus,
    .filtro-select:hover {
        border-color: var(--color-primario);
        outline: none;
    }

.filtro-fechas {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
}

.btn-link {
    background: none;
    border: none;
    color: var(--color-texto-suave);
    cursor: pointer;
    font-size: 0.85rem;
    padding: 0.25rem;
    transition: var(--transicion);
}

    .btn-link:hover {
        color: var(--color-primario);
    }

.eventos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1.5rem;
    padding: 2rem;
    max-width: 1280px;
    margin: 0 auto;
}

.evento-card {
    background: white;
    border-radius: var(--radio);
    box-shadow: var(--sombra);
    overflow: hidden;
    transition: var(--transicion);
}

    .evento-card:hover {
        transform: translateY(-4px);
        box-shadow: var(--sombra-hover);
    }

.evento-card-imagen {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    display: block;
}

.evento-card-body {
    padding: 1rem;
}

.evento-card-titulo {
    font-size: 1rem;
    font-weight: 700;
    margin: 0.4rem 0 0.6rem;
    line-height: 1.3;
}

.evento-card-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    font-size: 0.82rem;
    color: var(--color-texto-suave);
}

.evento-fecha {
    color: var(--color-primario);
    font-weight: 600;
}

/* ═══════════════════════════════════════════════
   DETALLE EVENTO
═══════════════════════════════════════════════ */
.evento-detalle {
    max-width: 900px;
    margin: 0 auto;
    padding: 2rem;
}

.evento-detalle-imagenes {
    display: flex;
    gap: 1.5rem;
    margin-bottom: 2rem;
    align-items: flex-start;
}

.evento-detalle-hero {
    flex: 1;
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border-radius: var(--radio);
}

.evento-detalle-cartel {
    width: 200px;
    aspect-ratio: 2 / 3;
    object-fit: cover;
    border-radius: var(--radio);
    flex-shrink: 0;
    box-shadow: var(--sombra);
}

.evento-detalle-info {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    background: var(--color-fondo-gris);
    border-radius: var(--radio);
    padding: 1.5rem;
    margin: 1.5rem 0;
}

.info-item {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}

.info-icono {
    font-size: 1.3rem;
    flex-shrink: 0;
}

.btn-entradas {
    display: inline-block;
    margin-top: 0.5rem;
    background: var(--color-primario);
    color: white;
    padding: 0.6rem 1.4rem;
    border-radius: 50px;
    font-weight: 700;
    font-size: 0.9rem;
    transition: var(--transicion);
}

    .btn-entradas:hover {
        background: var(--color-primario-oscuro);
        color: white;
        transform: translateY(-1px);
    }

/* ═══════════════════════════════════════════════
   NOTICIAS PÚBLICAS
═══════════════════════════════════════════════ */
.noticias-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1.5rem;
    padding: 2rem;
    max-width: 1280px;
    margin: 0 auto;
}

.noticia-card {
    background: white;
    border-radius: var(--radio);
    box-shadow: var(--sombra);
    overflow: hidden;
    transition: var(--transicion);
}

    .noticia-card:hover {
        transform: translateY(-4px);
        box-shadow: var(--sombra-hover);
    }

.noticia-card-imagen {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.noticia-card-body {
    padding: 1rem;
}

.noticia-card-titulo {
    font-size: 1rem;
    font-weight: 700;
    margin: 0.4rem 0 0.5rem;
    line-height: 1.35;
}

.noticia-card-entradilla {
    font-size: 0.85rem;
    color: var(--color-texto-suave);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: 0.5rem;
}

.noticia-card-meta {
    font-size: 0.78rem;
    color: var(--color-texto-suave);
}

/* ═══════════════════════════════════════════════
   DETALLE NOTICIA
═══════════════════════════════════════════════ */
.noticia-detalle {
    max-width: 820px;
    margin: 0 auto;
    padding: 2rem;
}

.noticia-detalle-header h1 {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.2;
    margin: 0.5rem 0;
}

.noticia-detalle-entradilla {
    font-size: 1.15rem;
    color: var(--color-texto-suave);
    border-left: 4px solid var(--color-primario);
    padding-left: 1rem;
    margin: 1rem 0;
    font-style: italic;
}

.noticia-imagen-portada {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border-radius: var(--radio);
    margin: 1.5rem 0;
}

.noticia-detalle-contenido {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--color-texto);
}

    .noticia-detalle-contenido h1,
    .noticia-detalle-contenido h2,
    .noticia-detalle-contenido h3 {
        margin: 1.5rem 0 0.5rem;
        font-weight: 700;
    }

    .noticia-detalle-contenido p {
        margin-bottom: 1rem;
    }

/* ═══════════════════════════════════════════════
   BADGES Y TAGS
═══════════════════════════════════════════════ */
.categoria-badge {
    display: inline-block;
    background: var(--color-primario);
    color: white;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 0.2rem 0.6rem;
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.categoria-badge-pequeño {
    display: inline-block;
    background: rgba(192,57,43,0.1);
    color: var(--color-primario);
    font-size: 0.7rem;
    font-weight: 700;
    padding: 0.15rem 0.5rem;
    border-radius: 4px;
    text-transform: uppercase;
}

.badge {
    display: inline-block;
    padding: 0.2rem 0.6rem;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 700;
}

.badge-green {
    background: #d4edda;
    color: #155724;
}

.badge-gray {
    background: #e9ecef;
    color: #495057;
}

.badge-red {
    background: #f8d7da;
    color: #721c24;
}

.tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 1.5rem;
}

.tag {
    background: var(--color-fondo-gris);
    color: var(--color-texto-suave);
    padding: 0.3rem 0.8rem;
    border-radius: 50px;
    font-size: 0.82rem;
    border: 1px solid var(--color-borde);
    transition: var(--transicion);
}

    .tag:hover {
        border-color: var(--color-primario);
        color: var(--color-primario);
    }

/* ═══════════════════════════════════════════════
   PAGINACIÓN
═══════════════════════════════════════════════ */
.paginacion {
    display: flex;
    justify-content: center;
    gap: 0.4rem;
    padding: 2rem;
}

    .paginacion button {
        width: 38px;
        height: 38px;
        border-radius: 50%;
        border: 1.5px solid var(--color-borde);
        background: white;
        cursor: pointer;
        font-size: 0.9rem;
        font-weight: 600;
        transition: var(--transicion);
    }

        .paginacion button:hover,
        .paginacion button.activa {
            background: var(--color-primario);
            color: white;
            border-color: var(--color-primario);
        }

        .paginacion button:disabled {
            opacity: 0.35;
            cursor: not-allowed;
        }

/* ═══════════════════════════════════════════════
   ADMIN
═══════════════════════════════════════════════ */
.admin-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.5rem 2rem;
    background: white;
    border-bottom: 2px solid var(--color-primario);
    margin-bottom: 1.5rem;
}

    .admin-header h1 {
        font-size: 1.5rem;
        font-weight: 800;
    }

.admin-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

    .admin-table th {
        background: var(--color-texto);
        color: white;
        padding: 0.75rem 1rem;
        text-align: left;
        font-weight: 600;
    }

    .admin-table td {
        padding: 0.75rem 1rem;
        border-bottom: 1px solid var(--color-borde);
        vertical-align: middle;
    }

    .admin-table tr:hover td {
        background: var(--color-fondo-gris);
    }

.editor-layout {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 1.5rem;
    padding: 0 2rem 2rem;
    max-width: 1300px;
}

@media (max-width: 900px) {
    .editor-layout {
        grid-template-columns: 1fr;
    }
}

.editor-main {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.editor-aside {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.aside-bloque {
    background: white;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: 1.2rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.form-grupo {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

    .form-grupo label {
        font-weight: 600;
        font-size: 0.85rem;
        color: var(--color-texto);
    }

    .form-grupo small {
        font-weight: 400;
        color: var(--color-texto-suave);
        font-size: 0.78rem;
    }

.form-input {
    width: 100%;
    padding: 0.6rem 0.85rem;
    border: 1.5px solid var(--color-borde);
    border-radius: 6px;
    font-size: 0.92rem;
    font-family: var(--fuente);
    transition: var(--transicion);
    background: white;
}

    .form-input:focus {
        outline: none;
        border-color: var(--color-primario);
        box-shadow: 0 0 0 3px rgba(192,57,43,0.1);
    }

.form-input-grande {
    font-size: 1.15rem;
    font-weight: 600;
    padding: 0.75rem 1rem;
}

.form-fila {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

/* ═══════════════════════════════════════════════
   SUBIDOR IMAGEN
═══════════════════════════════════════════════ */
.subidor-imagen {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.subidor-preview {
    position: relative;
}

    .subidor-preview img {
        width: 100%;
        border-radius: 6px;
        display: block;
        max-height: 200px;
        object-fit: cover;
    }

.subidor-eliminar {
    position: absolute;
    top: 0.4rem;
    right: 0.4rem;
    background: rgba(0,0,0,0.6);
    color: white;
    border: none;
    border-radius: 4px;
    padding: 0.25rem 0.5rem;
    font-size: 0.78rem;
    cursor: pointer;
    transition: var(--transicion);
}

    .subidor-eliminar:hover {
        background: var(--color-primario);
    }

.subidor-zona {
    border: 2px dashed var(--color-borde);
    border-radius: 8px;
    padding: 1.5rem 1rem;
    text-align: center;
    color: var(--color-texto-suave);
    font-size: 0.85rem;
    cursor: default;
    transition: var(--transicion);
    outline: none;
}

    .subidor-zona:focus,
    .subidor-zona.drag-over {
        border-color: var(--color-primario);
        background: rgba(192,57,43,0.04);
    }

.subidor-opciones {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.subidor-boton-archivo {
    display: block;
    text-align: center;
    padding: 0.5rem;
    border: 1.5px solid var(--color-borde);
    border-radius: 6px;
    font-size: 0.85rem;
    cursor: pointer;
    transition: var(--transicion);
    font-weight: 600;
}

    .subidor-boton-archivo:hover {
        border-color: var(--color-primario);
        color: var(--color-primario);
    }

.subidor-url-row {
    display: flex;
    gap: 0.4rem;
}

    .subidor-url-row .form-input {
        flex: 1;
    }

.subidor-error {
    color: #c0392b;
    font-size: 0.82rem;
}

.subidor-cargando {
    color: var(--color-texto-suave);
    font-size: 0.85rem;
}

/* ═══════════════════════════════════════════════
   IMPORTACIÓN
═══════════════════════════════════════════════ */
.import-bloque {
    background: white;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: 1.5rem 2rem;
    margin: 0 2rem 1.5rem;
    max-width: 1200px;
}

    .import-bloque h2 {
        font-size: 1.1rem;
        font-weight: 700;
        margin-bottom: 0.75rem;
        color: var(--color-primario);
    }

.import-tabs {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

    .import-tabs button {
        padding: 0.5rem 1.2rem;
        border: 1.5px solid var(--color-borde);
        border-radius: 50px;
        background: white;
        cursor: pointer;
        font-size: 0.88rem;
        font-weight: 600;
        transition: var(--transicion);
    }

        .import-tabs button.tab-activa {
            background: var(--color-primario);
            color: white;
            border-color: var(--color-primario);
        }

.import-hint {
    font-size: 0.88rem;
    color: var(--color-texto-suave);
    margin-bottom: 0.75rem;
}

.import-paste-area {
    border: 2px dashed var(--color-borde);
    border-radius: 8px;
    padding: 2rem;
    text-align: center;
    cursor: text;
    color: var(--color-texto-suave);
    transition: var(--transicion);
    outline: none;
    min-height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .import-paste-area:focus {
        border-color: var(--color-primario);
        background: rgba(192,57,43,0.03);
    }

.import-paste-ok {
    color: #155724;
    font-weight: 600;
}

.import-resumen {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.import-preview-scroll {
    overflow-x: auto;
}

.import-acciones {
    display: flex;
    gap: 1rem;
    align-items: center;
    margin-top: 1rem;
}

.fila-error td {
    background: #fff5f5 !important;
}

/* ═══════════════════════════════════════════════
   BOTONES
═══════════════════════════════════════════════ */
.btn-primary {
    background: var(--color-primario);
    color: white;
    border: none;
    padding: 0.6rem 1.4rem;
    border-radius: 6px;
    font-weight: 700;
    font-size: 0.9rem;
    cursor: pointer;
    transition: var(--transicion);
    display: inline-block;
    text-align: center;
}

    .btn-primary:hover {
        background: var(--color-primario-oscuro);
        color: white;
        transform: translateY(-1px);
    }

    .btn-primary:disabled {
        opacity: 0.5;
        cursor: not-allowed;
        transform: none;
    }

.btn-secondary {
    background: white;
    color: var(--color-texto);
    border: 1.5px solid var(--color-borde);
    padding: 0.6rem 1.4rem;
    border-radius: 6px;
    font-weight: 600;
    font-size: 0.9rem;
    cursor: pointer;
    transition: var(--transicion);
    display: inline-block;
    text-align: center;
}

    .btn-secondary:hover {
        border-color: var(--color-primario);
        color: var(--color-primario);
    }

.btn-danger {
    background: none;
    color: #c0392b;
    border: 1.5px solid #c0392b;
    padding: 0.3rem 0.8rem;
    border-radius: 4px;
    font-size: 0.82rem;
    cursor: pointer;
    transition: var(--transicion);
}

    .btn-danger:hover {
        background: #c0392b;
        color: white;
    }

.btn-full {
    width: 100%;
}

.btn-grande {
    padding: 0.85rem 2rem;
    font-size: 1rem;
}

/* ═══════════════════════════════════════════════
   ESTADOS
═══════════════════════════════════════════════ */
.cargando, .vacio {
    text-align: center;
    padding: 3rem;
    color: var(--color-texto-suave);
    font-size: 1rem;
}

.error {
    color: #c0392b;
    font-size: 0.88rem;
    font-weight: 600;
}

.ok {
    color: #155724;
    font-size: 0.88rem;
    font-weight: 600;
}

.aviso {
    color: #856404;
    font-size: 0.88rem;
}

.skeleton-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.5rem;
}

.skeleton-card {
    height: 280px;
    border-radius: var(--radio);
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
    0% {
        background-position: 200% 0;
    }

    100% {
        background-position: -200% 0;
    }
}

/* ═══════════════════════════════════════════════
   COLECCIÓN BANNER
═══════════════════════════════════════════════ */
.coleccion-banner {
    background: linear-gradient(135deg, #1a1a2e, #2d2d5e);
    color: white;
    padding: 1rem 1.5rem;
    border-radius: var(--radio);
    margin-top: 1.5rem;
    display: flex;
    gap: 0.5rem;
    align-items: center;
    font-size: 0.9rem;
}

    .coleccion-banner a {
        color: #ffd700;
        font-weight: 700;
    }

/* ═══════════════════════════════════════════════
   NOT FOUND
═══════════════════════════════════════════════ */
.not-found {
    text-align: center;
    padding: 4rem 2rem;
    color: var(--color-texto-suave);
}

    .not-found h2 {
        font-size: 1.5rem;
        margin-bottom: 1rem;
    }



/* ═══════════════════════════════════════════════
   LOGIN
═══════════════════════════════════════════════ */

.login-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    background: linear-gradient(135deg, #eef4ff, #f8fafc);
}

.login-card {
    width: 100%;
    max-width: 460px;
    display: block;
    background: #fff;
    border-radius: 24px;
    overflow: hidden;
    box-shadow: 0 24px 70px rgba(15, 23, 42, 0.12);
}

.login-panel {
    padding: 3rem;
}

.login-header {
    margin-bottom: 2rem;
}

    .login-header h1 {
        font-size: 2.25rem;
        font-weight: 700;
        margin-bottom: .5rem;
    }

    .login-header p {
        color: #64748b;
        margin: 0;
    }

.login-link,
.login-footer a {
    text-decoration: none;
    font-weight: 500;
}

    .login-link:hover,
    .login-footer a:hover {
        text-decoration: underline;
    }

.login-separator {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin: 1.5rem 0;
    color: #94a3b8;
}

    .login-separator::before,
    .login-separator::after {
        content: "";
        flex: 1;
        height: 1px;
        background: #e2e8f0;
    }

.login-footer {
    margin-top: 1.5rem;
    text-align: center;
    color: #64748b;
}

    .login-footer p {
        margin-bottom: .5rem;
    }

.external-panel {
    padding: 3rem;
    background: #0f172a;
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

    .external-panel h2 {
        font-size: 1.5rem;
        font-weight: 700;
    }

    .external-panel p {
        color: #cbd5e1;
    }

@media (max-width: 768px) {
    .login-card {
        grid-template-columns: 1fr;
    }

    .login-panel,
    .external-panel {
        padding: 2rem;
    }
}


/* ═══════════════════════════════════════════════
   LUGAR
═══════════════════════════════════════════════ */

.lugar-mapa-sidebar {
    width: 100%;
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid #eee;
    margin-bottom: 1rem;
}

    .lugar-mapa-sidebar iframe {
        width: 100%;
        height: 260px;
        border: 0;
        display: block;
    }

.lugar-mapa-direccion {
    font-size: 0.85rem;
    line-height: 1.5;
    color: #666;
    margin-bottom: 1rem;
}

.lugar-mapa-boton {
    display: block;
    width: 100%;
    text-align: center;
    background: var(--color-primario, #C0392B);
    color: white;
    padding: 0.85rem 1rem;
    border-radius: 12px;
    text-decoration: none;
    font-weight: 700;
    transition: all .2s ease;
}

    .lugar-mapa-boton:hover {
        opacity: .92;
        transform: translateY(-1px);
    }


/* ═══════════════════════════════════════════════
   MENÚ PÚBLICO
═══════════════════════════════════════════════ */
.nav-publica {
    position: sticky;
    top: 0;
    z-index: 100;
    background: rgba(26, 26, 46, 0.96);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(255,255,255,0.08);
    box-shadow: 0 2px 20px rgba(0,0,0,0.2);
}

.nav-publica-redes {
    display: flex;
    align-items: center;
    margin-left: 0.65rem;
    padding-left: 0.9rem;
    border-left: 1px solid rgba(255, 255, 255, 0.16);
}

.nav-publica-inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 2rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 58px;
}

.nav-publica-logo {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: white;
    font-size: 1.15rem;
    font-weight: 900;
    letter-spacing: -0.04em;
    text-decoration: none;
    transition: 0.2s ease;
}

    .nav-publica-logo:hover {
        color: #e87e74;
    }

    .nav-publica-logo span {
        background: linear-gradient(90deg, #fff, #e87e74);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
    }

.nav-publica-enlaces {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.nav-link {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.45rem 1rem;
    border-radius: 999px;
    color: rgba(255,255,255,0.75);
    font-size: 0.88rem;
    font-weight: 600;
    text-decoration: none;
    transition: 0.2s ease;
    border: 1px solid transparent;
}

    .nav-link:hover {
        color: white;
        background: rgba(255,255,255,0.1);
        border-color: rgba(255,255,255,0.15);
    }

.nav-link-activo {
    color: white !important;
    background: rgba(192, 57, 43, 0.7) !important;
    border-color: rgba(192, 57, 43, 0.5) !important;
}

@media (max-width: 700px) {
    .nav-publica-inner {
        height: auto;
        min-height: 58px;
        padding: 0.45rem 0.7rem;
    }

    .nav-publica-enlaces {
        gap: 0;
    }

    .nav-link {
        padding: 0.4rem 0.5rem;
        font-size: 0.74rem;
    }

    .nav-publica-redes {
        margin-left: 0.25rem;
        padding-left: 0.4rem;
    }
}

@media (max-width: 520px) {
    .nav-publica-logo {
        display: none;
    }

    .nav-publica-inner {
        justify-content: center;
    }

    .nav-publica-enlaces {
        width: 100%;
        justify-content: center;
    }
}

/* ═══════════════════════════════════════════════
   MENÚ ADMIN
═══════════════════════════════════════════════ */
.nav-admin {
    background: #0f0f1e;
    border-bottom: 1px solid rgba(255,255,255,0.07);
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 16px rgba(0,0,0,0.3);
}

.nav-admin-inner {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    height: 52px;
}

.nav-admin-logo {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    color: white;
    font-size: 1rem;
    font-weight: 900;
    letter-spacing: -0.04em;
    text-decoration: none;
    flex-shrink: 0;
    margin-right: 0.5rem;
}

.nav-admin-badge {
    background: #C0392B;
    color: white;
    font-size: 0.6rem;
    font-weight: 800;
    padding: 0.1rem 0.45rem;
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-left: 0.2rem;
}

.nav-admin-grupos {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex: 1;
    overflow-x: auto;
}

.nav-admin-grupo {
    display: flex;
    align-items: center;
    gap: 0.15rem;
    padding: 0 0.75rem;
    border-right: 1px solid rgba(255,255,255,0.08);
}

    .nav-admin-grupo:last-child {
        border-right: none;
    }

.nav-admin-grupo-label {
    font-size: 0.65rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: rgba(255,255,255,0.35);
    margin-right: 0.35rem;
    flex-shrink: 0;
}

.nav-admin-grupo .nav-link,
.nav-admin-grupo a {
    color: rgba(255,255,255,0.65);
    font-size: 0.8rem;
    font-weight: 600;
    padding: 0.3rem 0.65rem;
    border-radius: 6px;
    text-decoration: none;
    transition: 0.15s ease;
    white-space: nowrap;
    border: 1px solid transparent;
}

    .nav-admin-grupo a:hover {
        color: white;
        background: rgba(255,255,255,0.08);
    }

    .nav-admin-grupo a.active {
        color: white;
        background: rgba(192,57,43,0.5);
        border-color: rgba(192,57,43,0.4);
    }

.nav-admin-logout {
    margin-left: auto;
    flex-shrink: 0;
}

    .nav-admin-logout button {
        background: rgba(255,255,255,0.08);
        color: rgba(255,255,255,0.6);
        border: 1px solid rgba(255,255,255,0.12);
        padding: 0.35rem 0.85rem;
        border-radius: 6px;
        font-size: 0.78rem;
        font-weight: 600;
        cursor: pointer;
        transition: 0.15s ease;
    }

        .nav-admin-logout button:hover {
            background: rgba(192,57,43,0.4);
            color: white;
            border-color: rgba(192,57,43,0.5);
        }

.main-con-admin {
    min-height: calc(100vh - 52px);
}

/* ── Error UI ── */
#blazor-error-ui {
    display: none;
    position: fixed;
    bottom: 1rem;
    left: 50%;
    transform: translateX(-50%);
    background: #1a1a2e;
    color: white;
    padding: 0.75rem 1.5rem;
    border-radius: 999px;
    font-size: 0.88rem;
    z-index: 9999;
    box-shadow: 0 4px 20px rgba(0,0,0,0.3);
    gap: 1rem;
    align-items: center;
}

    #blazor-error-ui .reload {
        color: #e87e74;
        font-weight: 700;
        margin-left: 0.5rem;
    }

    #blazor-error-ui .dismiss {
        cursor: pointer;
        opacity: 0.6;
        margin-left: 0.5rem;
    }

/* ═══════════════════════════════════════════════
   CONSENTIMIENTO DE COOKIES
═══════════════════════════════════════════════ */

.cookie-overlay {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 1.25rem;
    background: rgba(15, 15, 25, 0.28);
    backdrop-filter: blur(3px);
}

.cookie-banner {
    width: min(100%, 850px);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    padding: 1.5rem;
    color: var(--color-texto);
    background: white;
    border: 1px solid rgba(26, 26, 46, 0.1);
    border-radius: 18px;
    box-shadow: 0 24px 70px rgba(15, 15, 25, 0.22);
}

.cookie-content {
    max-width: 540px;
}

.cookie-eyebrow {
    display: block;
    margin-bottom: 0.35rem;
    color: var(--color-primario);
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.cookie-content h2 {
    margin: 0 0 0.45rem;
    font-size: 1.3rem;
}

.cookie-content p {
    margin: 0;
    color: var(--color-texto-suave);
    font-size: 0.9rem;
    line-height: 1.55;
}

.cookie-actions {
    min-width: 330px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    flex-shrink: 0;
    gap: 0.75rem;
}

.cookie-accept,
.cookie-reject {
    width: 100%;
    min-height: 46px;
    padding: 0 1rem;
    border-radius: 9px;
    cursor: pointer;
    font: inherit;
    font-size: 0.86rem;
    font-weight: 750;
}

.cookie-accept {
    color: white;
    background: var(--color-primario);
    border: 1px solid var(--color-primario);
}

.cookie-reject {
    color: white;
    background: #34343f;
    border: 1px solid #34343f;
}

.cookie-accept:hover {
    background: var(--color-primario-oscuro);
}

.cookie-reject:hover {
    background: #1f1f27;
}

.cookie-accept {
    color: white;
    background: var(--color-primario);
    border: 1px solid var(--color-primario);
}

    .cookie-accept:hover {
        background: var(--color-primario-oscuro);
    }

.cookie-reject {
    color: var(--color-texto);
    background: white;
    border: 1px solid #cfcfd6;
}

    .cookie-reject:hover {
        background: #f5f5f5;
        border-color: #aaaab2;
    }

.cookie-settings {
    position: fixed;
    left: 1rem;
    bottom: 1rem;
    z-index: 9000;
    padding: 0.55rem 0.8rem;
    color: #555;
    background: rgba(255, 255, 255, 0.94);
    border: 1px solid #d9d9df;
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(15, 15, 25, 0.1);
    cursor: pointer;
    font: inherit;
    font-size: 0.76rem;
}

    .cookie-settings:hover {
        color: var(--color-primario);
        border-color: var(--color-primario);
    }

@media (max-width: 700px) {
    .cookie-banner {
        align-items: stretch;
        flex-direction: column;
        gap: 1.25rem;
    }

    .cookie-actions {
        width: 100%;
        min-width: 0;
    }
}

@media (max-width: 430px) {
    .cookie-actions {
        grid-template-columns: 1fr;
    }
}

.cookie-policy-link {
    display: inline-block;
    margin-top: 0.65rem;
    color: var(--color-primario);
    font-size: 0.82rem;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

    .cookie-policy-link:hover {
        color: var(--color-primario-oscuro);
    }

/* ═══════════════════════════════════════════════
   PÁGINAS LEGALES
═══════════════════════════════════════════════ */

.legal-page {
    min-height: 100vh;
    padding: 4rem 1.25rem 6rem;
    background: #f7f5f0;
}

.legal-container {
    max-width: 850px;
    margin: 0 auto;
    padding: 3rem;
    background: white;
    border: 1px solid #e5e2dc;
    border-radius: 22px;
    box-shadow: 0 20px 60px rgba(26, 26, 46, 0.08);
}

.legal-header {
    padding-bottom: 2rem;
    border-bottom: 1px solid #e7e4de;
}

.legal-eyebrow {
    display: block;
    margin-bottom: 0.5rem;
    color: var(--color-primario);
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.legal-header h1 {
    margin: 0 0 0.5rem;
    font-size: clamp(2.2rem, 6vw, 3.5rem);
    letter-spacing: -0.05em;
}

.legal-header p {
    margin: 0;
    color: #777;
}

.legal-section {
    padding-top: 2rem;
}

    .legal-section h2 {
        margin: 0 0 0.8rem;
        font-size: 1.35rem;
    }

    .legal-section p {
        margin: 0 0 1rem;
        color: #4f4f59;
        line-height: 1.75;
    }

    .legal-section a {
        color: var(--color-primario);
        font-weight: 650;
        text-decoration: underline;
        text-underline-offset: 3px;
    }

    .legal-section code {
        padding: 0.15rem 0.35rem;
        background: #f2f1ed;
        border-radius: 5px;
    }

.legal-notice {
    padding: 1rem;
    color: #7a5212 !important;
    background: #fff8e8;
    border: 1px solid #efd69c;
    border-radius: 9px;
}

.legal-table-wrapper {
    margin: 1.25rem 0;
    overflow-x: auto;
}

.legal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

    .legal-table th,
    .legal-table td {
        padding: 0.9rem;
        border: 1px solid #dedbd5;
        text-align: left;
        vertical-align: top;
    }

    .legal-table th {
        background: #f4f2ed;
    }

.legal-footer {
    margin-top: 3rem;
    padding-top: 1.5rem;
    border-top: 1px solid #e7e4de;
}

    .legal-footer a {
        color: var(--color-primario);
        font-weight: 750;
    }

@media (max-width: 650px) {
    .legal-page {
        padding: 1rem 0.75rem 5rem;
    }

    .legal-container {
        padding: 1.5rem;
        border-radius: 16px;
    }
}
