/* ============================================================
   CMO — AGENDA ACADÉMICA
   Usado por: plantillas/inicio.tpl (resumen) y plantillas/agenda_academica.tpl
   Componentes: plantillas/componentes/agenda_card.tpl, agenda_card_compacta.tpl
   Datos: datos/agenda_academica.php (DEC-015)

   1. Ficha completa .cmo-evento-*  (movida desde css/home.css; imagen con contain)
   2. Media institucional y chips de categoría
   3. Home: resumen compacto .cmo-agenda-mini-*
   4. Página: navegación y secciones
   ============================================================ */


/* ----------------------------------------------------------
   1. FICHA COMPLETA
---------------------------------------------------------- */

/* --- Ficha de evento: el promocional es su cabecera; el padding vive solo en el cuerpo --- */

.cmo-evento-card {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: 26px;
    background: #ffffff;
    border: 1px solid var(--cmo-border);
    box-shadow: 0 22px 60px rgba(var(--cmo-primary-rgb),.08);
    transition: box-shadow .3s ease, transform .3s ease;
}

.cmo-evento-card:hover {
    box-shadow: 0 30px 78px rgba(var(--cmo-primary-rgb),.14);
    transform: translateY(-4px);
}

.cmo-evento-media {
    display: block;
    flex: 0 0 auto;
    overflow: hidden;
    background: var(--cmo-breadcum);
    border-bottom: 1px solid var(--cmo-border);
    aspect-ratio: 16 / 9;
}

/* contain: los promocionales llevan texto y QR; nunca se recortan */
.cmo-evento-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    transition: transform .5s ease;
}

.cmo-evento-media:hover img {
    transform: scale(1.02);
}

.cmo-evento-media:focus-visible {
    outline: 3px solid var(--cmo-primary-mid);
    outline-offset: -3px;
}

.cmo-evento-body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: 40px;
}

.cmo-evento-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    width: fit-content;
    color: var(--cmo-primary);
    font-size: var(--cmo-fs-micro);
    font-weight: 900;
    letter-spacing: .10em;
    text-transform: uppercase;
    margin-bottom: 14px;
}

.cmo-evento-eyebrow i {
    color: var(--cmo-accent);
    font-size: 15px;
}

.cmo-evento-card h3 {
    color: var(--cmo-dark);
    font-size: var(--cmo-fs-h3);
    line-height: 1.2;
    letter-spacing: -.02em;
    margin-bottom: 12px;
}

.cmo-evento-desc {
    color: var(--cmo-muted);
    font-size: 16px;
    line-height: 1.7;
    margin-bottom: 26px;
}

/* --- Datos principales: franja sin cajas --- */

.cmo-evento-datos {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px 26px;
    padding: 24px 0;
    border-top: 1px solid var(--cmo-border);
    border-bottom: 1px solid var(--cmo-border);
    margin-bottom: 22px;
}

.cmo-evento-datos > div {
    display: flex;
    align-items: flex-start;
    gap: 13px;
}

.cmo-evento-datos i {
    flex: 0 0 20px;
    width: 20px;
    margin-top: 2px;
    text-align: center;
    color: var(--cmo-accent);
    font-size: 19px;
}

.cmo-evento-datos span {
    display: block;
    color: var(--cmo-muted);
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .10em;
    text-transform: uppercase;
    margin-bottom: 4px;
}

.cmo-evento-datos strong {
    display: block;
    color: var(--cmo-dark);
    font-size: 15px;
    font-weight: 800;
    line-height: 1.4;
}

/* --- Actividades: línea editorial, no filtros --- */

.cmo-evento-actividades {
    margin-bottom: 24px;
}

.cmo-evento-actividades span {
    display: block;
    color: var(--cmo-muted);
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .10em;
    text-transform: uppercase;
    margin-bottom: 7px;
}

.cmo-evento-actividades p {
    color: var(--cmo-dark);
    font-size: 15px;
    font-weight: 600;
    line-height: 1.65;
    margin: 0;
}

/* --- Trabajos Libres: destacado sobrio --- */

.cmo-evento-tl {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: 22px 24px;
    border-radius: 18px;
    border-left: 3px solid var(--cmo-primary);
    background: var(--cmo-breadcum);
    margin-bottom: 28px;
}

.cmo-evento-tl-head {
    display: block;
    color: var(--cmo-primary-dark);
    font-size: var(--cmo-fs-small);
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
    margin-bottom: 14px;
}

.cmo-evento-tl-datos {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 34px;
    margin-bottom: 12px;
}

.cmo-evento-tl-datos span {
    display: block;
    color: var(--cmo-muted);
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .10em;
    text-transform: uppercase;
    margin-bottom: 3px;
}

.cmo-evento-tl-datos strong {
    display: block;
    color: var(--cmo-dark);
    font-size: 15px;
    font-weight: 800;
    line-height: 1.35;
}

.cmo-evento-tl p {
    color: var(--cmo-muted);
    font-size: var(--cmo-fs-small);
    line-height: 1.75;
    margin: 0 0 18px;
}

/* --- Enlace de consulta de artes --- */

.cmo-evento-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    color: var(--cmo-accent);
    font-size: var(--cmo-fs-small);
    font-weight: 900;
    text-decoration: none;
    transition: color .25s ease;
}

.cmo-evento-link:hover {
    color: var(--cmo-primary-dark);
}

/* --- Acciones del módulo de Trabajos Libres --- */

.cmo-evento-tl-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 18px;
    margin-top: auto;
}

/* --- Acciones --- */

.cmo-evento-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-top: auto;
}

/* --- Responsive --- */

@media (max-width: 1199px) {
    .cmo-evento-body {
        padding: 34px;
    }
}

@media (max-width: 767px) {
    .cmo-evento-card {
        border-radius: 22px;
    }

    .cmo-evento-body {
        padding: 26px 22px;
    }

    .cmo-evento-datos {
        grid-template-columns: 1fr;
        gap: 16px;
        padding: 20px 0;
    }

    .cmo-evento-tl {
        padding: 20px;
    }

    .cmo-evento-actions .cmo-btn,
    .cmo-evento-tl-actions .cmo-btn {
        flex: 1 1 100%;
    }

    /* Área táctil cómoda para los enlaces de consulta de artes */
    .cmo-evento-link {
        min-height: 44px;
    }
}


/* ----------------------------------------------------------
   2. MEDIA INSTITUCIONAL Y CHIPS DE CATEGORÍA
---------------------------------------------------------- */

/* Cabecera cuando la actividad no tiene arte promocional */
.cmo-evento-media--institucional {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--cmo-grad-institucional);
    color: #ffffff;
    text-decoration: none;
    overflow: hidden;
}

.cmo-evento-media--institucional::after {
    content: "";
    position: absolute;
    inset: auto -20% -55% auto;
    width: 70%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: rgba(255,255,255,.06);
    pointer-events: none;
}

.cmo-evento-media--institucional i {
    font-size: 54px;
    opacity: .9;
}

.cmo-evento-media--institucional span {
    font-size: var(--cmo-fs-micro);
    font-weight: 900;
    letter-spacing: .14em;
    text-transform: uppercase;
    opacity: .85;
}

.cmo-agenda-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    width: fit-content;
    padding: 5px 12px;
    border-radius: 999px;
    background: var(--cmo-soft);
    border: 1px solid var(--cmo-border);
    color: var(--cmo-primary-dark);
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .10em;
    text-transform: uppercase;
    margin-bottom: 14px;
}

.cmo-agenda-chip i {
    color: var(--cmo-primary-mid);
    font-size: 13px;
}

.cmo-agenda-chip--convocatoria {
    background: var(--cmo-primary);
    border-color: var(--cmo-primary);
    color: #ffffff;
}

.cmo-agenda-chip--convocatoria i {
    color: #ffffff;
}


/* Estado del registro de una convocatoria (datos: convocatoria.estado) */
.cmo-agenda-estado {
    display: inline-flex;
    align-items: center;
    margin-left: 10px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .06em;
    vertical-align: middle;
    background: var(--cmo-soft);
    border: 1px solid var(--cmo-border);
    color: var(--cmo-primary-dark);
}

.cmo-agenda-estado--abierta {
    background: var(--cmo-primary);
    border-color: var(--cmo-primary);
    color: #ffffff;
}

.cmo-agenda-estado--cerrada {
    color: var(--cmo-muted);
}

.cmo-agenda-mini-datos .is-alerta.is-cerrada {
    color: var(--cmo-muted);
}


/* ----------------------------------------------------------
   3. HOME — RESUMEN COMPACTO
   Cada tarjeta tiene 4 franjas: media · encabezado · datos · acciones.
   Con subgrid las franjas se alinean entre tarjetas de la misma fila,
   así un título largo no desalinea datos ni botones. Sin subgrid
   (navegadores antiguos) la tarjeta es flex y las acciones van al fondo.
---------------------------------------------------------- */

.cmo-agenda-home {
    position: relative;
    background: var(--cmo-grad-soft);
}

.cmo-agenda-home-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px 40px;
    margin-bottom: 40px;
}

.cmo-agenda-home-desc {
    max-width: 640px;
    color: var(--cmo-muted);
    font-size: var(--cmo-fs-body);
    line-height: 1.7;
    margin: 16px 0 0;
}

.cmo-agenda-home-cta {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.cmo-agenda-mini-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 28px 24px;
    align-items: stretch;
}

.cmo-agenda-mini {
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
    border-radius: 22px;
    background: #ffffff;
    border: 1px solid var(--cmo-border);
    box-shadow: 0 16px 40px rgba(var(--cmo-primary-rgb),.07);
    transition: box-shadow .3s ease, transform .3s ease, border-color .3s ease;
}

@supports (grid-template-rows: subgrid) {
    .cmo-agenda-mini {
        display: grid;
        grid-row: span 4;
        grid-template-rows: subgrid;
        row-gap: 0;
    }
}

.cmo-agenda-mini:hover {
    border-color: rgba(var(--cmo-primary-rgb),.35);
    box-shadow: 0 24px 60px rgba(var(--cmo-primary-rgb),.13);
    transform: translateY(-3px);
}

/* --- Media: 16:9 (proporción de los promocionales), sin recorte ni deformación --- */

.cmo-agenda-mini-media {
    position: relative;
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--cmo-breadcum);
    border-bottom: 1px solid var(--cmo-border);
}

.cmo-agenda-mini-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    transition: transform .5s ease;
}

.cmo-agenda-mini-media:hover img {
    transform: scale(1.03);
}

.cmo-agenda-mini-media:focus-visible {
    outline: 3px solid var(--cmo-primary-mid);
    outline-offset: -3px;
}

/* Indicador de ampliación (lightbox) */
.cmo-agenda-mini-zoom {
    position: absolute;
    right: 12px;
    bottom: 12px;
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: rgba(var(--cmo-primary-rgb),.88);
    color: #ffffff;
    font-size: 14px;
    opacity: 0;
    transform: translateY(4px);
    transition: opacity .25s ease, transform .25s ease;
}

.cmo-agenda-mini-media:hover .cmo-agenda-mini-zoom,
.cmo-agenda-mini-media:focus-visible .cmo-agenda-mini-zoom {
    opacity: 1;
    transform: none;
}

.cmo-agenda-mini-media.cmo-evento-media--institucional {
    display: flex;
    background: var(--cmo-grad-institucional);
    border-bottom: 0;
}

.cmo-agenda-mini-media.cmo-evento-media--institucional i {
    font-size: 40px;
}

/* --- Encabezado: categoría + título --- */

.cmo-agenda-mini-head {
    padding: 22px 22px 0;
}

.cmo-agenda-mini-head .cmo-agenda-chip {
    margin-bottom: 12px;
}

.cmo-agenda-mini h3 {
    color: var(--cmo-dark);
    font-size: 18px;
    font-weight: 800;
    line-height: 1.32;
    letter-spacing: -.01em;
    margin: 0 0 16px;
    text-wrap: balance;
}

/* --- Datos --- */

.cmo-agenda-mini-datos {
    list-style: none;
    align-self: start;
    padding: 14px 0 0;
    margin: 0 22px 20px;
    border-top: 1px solid var(--cmo-border);
}

.cmo-agenda-mini-datos li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    color: var(--cmo-dark);
    font-size: var(--cmo-fs-small);
    font-weight: 600;
    line-height: 1.45;
    margin-bottom: 8px;
}

.cmo-agenda-mini-datos li:last-child {
    margin-bottom: 0;
}

.cmo-agenda-mini-datos i {
    flex: 0 0 16px;
    margin-top: 2px;
    text-align: center;
    color: var(--cmo-accent);
}

.cmo-agenda-mini-datos .is-alerta {
    color: var(--cmo-primary-dark);
    font-weight: 800;
}

/* --- Acciones: siempre al final ---
   principal (sólido) · secundaria (outline) · "Ver detalles" (enlace discreto).
   Los botones van apilados a ancho completo; si la tarjeta es ancha
   (container query) se colocan en dos columnas iguales. */

.cmo-agenda-mini-actions {
    container-type: inline-size;
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin-top: auto;
    padding: 18px 22px 20px;
    border-top: 1px solid var(--cmo-border);
    background: var(--cmo-breadcum);
}

.cmo-agenda-mini-btns {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
}

@container (min-width: 330px) {
    .cmo-agenda-mini-btns {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cmo-agenda-mini-btns > :only-child {
        grid-column: 1 / -1;
    }
}

.cmo-agenda-btn {
    min-height: 46px;
    padding: 0 18px;
    font-size: 14px;
}

.cmo-agenda-mini-btns .cmo-agenda-btn {
    width: 100%;
    min-width: 0;
}

.cmo-agenda-btn span {
    overflow: hidden;
    text-overflow: ellipsis;
}

.cmo-agenda-btn.cmo-btn-outline {
    background: #ffffff;
}

.cmo-agenda-btn:focus-visible,
.cmo-agenda-mini-detalles:focus-visible {
    outline: 3px solid var(--cmo-accent);
    outline-offset: 2px;
}

.cmo-agenda-mini-detalles {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    align-self: center;
    min-height: 24px;
    color: var(--cmo-primary);
    font-size: var(--cmo-fs-small);
    font-weight: 800;
    text-decoration: none;
    transition: color .25s ease, gap .25s ease;
}

.cmo-agenda-mini-detalles:hover {
    color: var(--cmo-primary-dark);
    gap: 12px;
}


/* ----------------------------------------------------------
   4. PÁGINA — NAVEGACIÓN Y SECCIONES
---------------------------------------------------------- */

.cmo-agenda-page {
    background: var(--cmo-grad-soft);
}

.cmo-agenda-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 56px;
}

.cmo-agenda-nav-link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 20px;
    border-radius: 999px;
    background: #ffffff;
    border: 1px solid var(--cmo-border);
    color: var(--cmo-primary-dark);
    font-size: var(--cmo-fs-small);
    font-weight: 800;
    text-decoration: none;
    transition: background .25s ease, color .25s ease, border-color .25s ease;
}

.cmo-agenda-nav-link i {
    color: var(--cmo-accent);
}

.cmo-agenda-nav-link:hover,
.cmo-agenda-nav-link:focus-visible {
    background: var(--cmo-primary);
    border-color: var(--cmo-primary);
    color: #ffffff;
}

.cmo-agenda-nav-link:hover i,
.cmo-agenda-nav-link:focus-visible i {
    color: #ffffff;
}

.cmo-agenda-nav-count {
    display: inline-grid;
    place-items: center;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--cmo-soft);
    color: var(--cmo-primary-dark);
    font-size: 12px;
}

.cmo-agenda-seccion {
    scroll-margin-top: 120px;
    margin-bottom: 72px;
}

.cmo-agenda-seccion:last-of-type {
    margin-bottom: 56px;
}

.cmo-agenda-seccion-head {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 28px;
}

.cmo-agenda-seccion-icon {
    display: inline-grid;
    place-items: center;
    width: 52px;
    height: 52px;
    border-radius: 16px;
    background: var(--cmo-grad-institucional);
    color: #ffffff;
    font-size: 22px;
}

.cmo-agenda-seccion-head h2 {
    color: var(--cmo-dark);
    font-size: var(--cmo-fs-h2);
    margin: 0;
}

.cmo-agenda-lista {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 30px;
    align-items: stretch;
}

.cmo-agenda-lista .cmo-evento-card {
    scroll-margin-top: 120px;
}

/* Ficha sin arte: la cabecera institucional es una franja baja */
.cmo-evento-card .cmo-evento-media--institucional {
    flex-direction: row;
    aspect-ratio: auto;
    min-height: 132px;
}

.cmo-evento-card .cmo-evento-media--institucional i {
    font-size: 44px;
}

/* La categoría ya aparece en el chip del cuerpo */
.cmo-evento-card .cmo-evento-media--institucional span {
    display: none;
}

/* Una sola actividad con arte: ficha horizontal (media a la izquierda) */
.cmo-agenda-lista.is-single {
    grid-template-columns: 1fr;
}

.cmo-agenda-lista.is-single .cmo-evento-card.has-imagen {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cmo-agenda-lista.is-single .has-imagen .cmo-evento-media {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: auto;
    min-height: 100%;
    padding: 32px;
    border-bottom: 0;
    border-right: 1px solid var(--cmo-border);
}

/* Póster enmarcado: imagen completa, sin recorte */
.cmo-agenda-lista.is-single .has-imagen .cmo-evento-media img {
    height: auto;
    border-radius: 14px;
    box-shadow: 0 18px 44px rgba(var(--cmo-primary-rgb),.16);
}

.cmo-agenda-vacia,
.cmo-agenda-contacto {
    text-align: center;
}

.cmo-agenda-vacia {
    padding: 56px 24px;
    border-radius: 26px;
    background: #ffffff;
    border: 1px solid var(--cmo-border);
    margin-bottom: 40px;
}

.cmo-agenda-vacia i {
    color: var(--cmo-accent);
    font-size: 44px;
    margin-bottom: 16px;
}

.cmo-agenda-vacia h2 {
    color: var(--cmo-dark);
    font-size: var(--cmo-fs-h3);
}

.cmo-agenda-vacia p,
.cmo-agenda-contacto p {
    color: var(--cmo-muted);
    margin-bottom: 18px;
}

.cmo-agenda-contacto {
    padding-top: 8px;
}


/* ----------------------------------------------------------
   RESPONSIVE (resumen y página)
---------------------------------------------------------- */

@media (max-width: 1199px) {
    .cmo-agenda-lista {
        grid-template-columns: 1fr;
        gap: 24px;
    }
}

@media (max-width: 991px) {
    .cmo-agenda-home-head {
        flex-direction: column;
        align-items: flex-start;
    }

    /* Tablet y móvil: carrusel horizontal con snap (sin JS) para no alargar el home
       ni dejar una tarjeta sola en otra fila; en tablet se ven dos y asoma la tercera */
    .cmo-agenda-mini-grid {
        grid-template-columns: none;
        grid-auto-flow: column;
        grid-auto-columns: 46%;
        grid-template-rows: repeat(4, auto);
        gap: 0 16px;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        overscroll-behavior-x: contain;
        margin: 0 -16px;
        padding: 4px 16px 16px;
        scroll-padding-left: 16px;
        scrollbar-width: none;
    }

    .cmo-agenda-mini-grid::-webkit-scrollbar {
        display: none;
    }

    .cmo-agenda-mini {
        scroll-snap-align: start;
    }

    .cmo-agenda-lista.is-single .cmo-evento-card.has-imagen {
        display: flex;
    }

    .cmo-agenda-lista.is-single .has-imagen .cmo-evento-media {
        display: block;
        aspect-ratio: 16 / 9;
        min-height: 0;
        padding: 0;
        border-right: 0;
        border-bottom: 1px solid var(--cmo-border);
    }

    .cmo-agenda-lista.is-single .has-imagen .cmo-evento-media img {
        height: 100%;
        border-radius: 0;
        box-shadow: none;
    }
}

@media (max-width: 767px) {
    .cmo-agenda-mini-grid {
        grid-auto-columns: 84%;
    }

    .cmo-agenda-mini-head {
        padding: 20px 20px 0;
    }

    .cmo-agenda-mini-datos {
        margin-left: 20px;
        margin-right: 20px;
    }

    .cmo-agenda-mini-actions {
        padding: 16px 20px 18px;
    }

    .cmo-agenda-mini:hover {
        transform: none;
    }

    .cmo-agenda-home-head {
        margin-bottom: 28px;
    }

    .cmo-agenda-home-cta {
        width: 100%;
        justify-content: center;
    }

    .cmo-agenda-nav {
        flex-wrap: nowrap;
        overflow-x: auto;
        margin: 0 -16px 40px;
        padding: 0 16px 6px;
        scrollbar-width: none;
    }

    .cmo-agenda-nav::-webkit-scrollbar {
        display: none;
    }

    .cmo-agenda-nav-link {
        flex: 0 0 auto;
    }

    .cmo-agenda-seccion {
        margin-bottom: 56px;
    }

    .cmo-agenda-seccion-icon {
        width: 44px;
        height: 44px;
        border-radius: 14px;
        font-size: 19px;
    }

}

@media (prefers-reduced-motion: reduce) {
    .cmo-agenda-mini,
    .cmo-agenda-mini-media img,
    .cmo-agenda-mini-zoom,
    .cmo-agenda-mini-detalles {
        transition: none;
    }
}
