/* Cronograma — extiende tema UTN FRH */

body.page-cronograma .site-main {
    max-width: 100%;
    padding-left: 0;
    padding-right: 0;
}

.cronograma-panel {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 1.25rem 2rem;
}

.cronograma-panel--embed {
    max-width: none;
    margin: 0;
    padding: 0;
}

.cronograma-panel--embed .cronograma-card {
    border-radius: var(--utn-radio-lg);
}

.horarios-seccion-intro {
    margin-top: 1.5rem;
}

body.page-cronograma:not(.page-admin-dashboard) .horarios-seccion-intro {
    max-width: 1400px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 1.25rem;
}

.horarios-modulos-panel {
    margin-top: 0;
}

.horarios-modulos-panel .cronograma-scroll-wrap {
    width: 100%;
    min-width: 0;
}

/* Ocupación aulas por módulos */
.tabla-cronograma--aulas-modulos {
    --modulos-ancho-curso: 7.5rem;
}

.tabla-cronograma--aulas-modulos .celda-aula-modulos {
    vertical-align: middle;
    padding: 0.35rem 0.4rem;
}

.tabla-cronograma--aulas-modulos .celda-aula-modulos .aula-fila-meta {
    min-width: 0;
}

.tabla-cronograma--aulas-modulos .cronograma-th-aula {
    min-width: 7.5rem;
}

.tabla-cronograma--aulas-modulos .materia-curso-modulos {
    font-size: 0.62rem;
    font-weight: 600;
    color: var(--utn-texto-suave);
    line-height: 1.2;
    margin-bottom: 0.15rem;
}

@media (max-width: 899px), (max-height: 520px) and (orientation: landscape) and (hover: none) and (pointer: coarse) {
    .horarios-modulos-panel .wrapper-cronograma,
    .aulas-modulos-grilla-panel .wrapper-cronograma {
        scroll-snap-type: x mandatory;
    }

    .horarios-modulos-panel .wrapper-cronograma {
        scroll-padding-left: 5rem;
    }

    .aulas-modulos-grilla-panel .wrapper-cronograma {
        scroll-padding-left: 7.5rem;
    }

    .tabla-cronograma--modulos th.cronograma-th-modulo {
        scroll-snap-align: start;
    }

    .tabla-cronograma--aulas-modulos .cronograma-th-aula,
    .tabla-cronograma--aulas-modulos .celda-aula-modulos {
        position: sticky;
        left: 0;
        box-shadow: 4px 0 8px -4px rgba(0, 40, 85, 0.22);
    }

    .tabla-cronograma--aulas-modulos .cronograma-th-aula {
        z-index: 35;
    }

    .tabla-cronograma--aulas-modulos .celda-aula-modulos {
        z-index: 18;
        background: var(--utn-azul-claro) !important;
    }
}

.cronograma-col--oculta {
    display: none !important;
}

.tabla-cronograma--modulos col.col-modulos-hora.cronograma-col--oculta {
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    padding: 0;
    border: none;
    visibility: collapse;
}

.aulas-modulos-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: flex-start;
    flex-direction: column;
    gap: 0.65rem;
    padding: 0.85rem 1.25rem 0.65rem;
    background: var(--utn-blanco);
    border-bottom: 1px solid var(--utn-borde);
    border-radius: var(--utn-radio-lg) var(--utn-radio-lg) 0 0;
}

.aulas-grilla-toolbar.aulas-modulos-toolbar {
    padding: 0.85rem 1.25rem 0.65rem;
}

.aulas-modulos-toolbar__meta {
    margin: 0;
    width: 100%;
    font-size: 0.9rem;
    line-height: 1.45;
    color: var(--utn-texto-secundario, #5c6b7a);
}

.aulas-modulos-toolbar .aulas-dia-tabs {
    flex: 0 0 auto;
    width: 100%;
    padding: 0;
    gap: 0.4rem;
}

.aulas-modulos-codigos-btn {
    flex-shrink: 0;
}

.aulas-modulos-grilla-panel .cronograma-card {
    border-radius: var(--utn-radio-lg);
    overflow: hidden;
}

.aulas-modulos-grilla-panel .cronograma-scroll-wrap {
    padding: 0.85rem 1.25rem 1.15rem;
    background: var(--utn-blanco);
    border-radius: 0 0 var(--utn-radio-lg) var(--utn-radio-lg);
}

/* Módulos escritorio: scroll en el wrapper (comportamiento original) */
@media (min-width: 900px) {
    .horarios-modulos-panel .cronograma-scroll-wrap,
    .aulas-modulos-grilla-panel .cronograma-scroll-wrap {
        overflow: hidden;
    }

    .horarios-modulos-panel .wrapper-cronograma,
    .aulas-modulos-grilla-panel .wrapper-cronograma {
        width: auto;
        min-width: unset;
        max-height: min(85vh, 1000px);
        overflow: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* Módulos en apaisado (móvil): scroll en el wrapper interno */
@media (max-width: 899px) and (orientation: landscape),
       (max-height: 520px) and (orientation: landscape) and (hover: none) and (pointer: coarse) {
    .horarios-modulos-panel .cronograma-scroll-wrap,
    .aulas-modulos-grilla-panel .cronograma-scroll-wrap {
        overflow: hidden;
    }

    .horarios-modulos-panel .wrapper-cronograma,
    .aulas-modulos-grilla-panel .wrapper-cronograma {
        width: auto;
        min-width: unset;
        max-height: min(85vh, 1000px);
        overflow: auto;
        -webkit-overflow-scrolling: touch;
    }
}

.hor-modulos-toolbar {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.75rem 1rem;
    padding: 0.5rem 1.25rem 0.65rem;
    background: var(--utn-blanco);
    border-bottom: 1px solid var(--utn-borde);
}

.hor-modulos-toolbar__contador {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.82rem;
    color: var(--utn-texto-suave);
    font-weight: 600;
    line-height: 1.3;
}

.hor-modulos-toolbar__contador i {
    color: var(--utn-acento);
    font-size: 0.82rem;
}

.hor-modulos-toolbar__filtros {
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
    margin: 0;
}

.hor-modulos-toolbar__filtros[hidden] {
    display: none !important;
}

.hor-modulos-grilla-wrap,
.aulas-modulos-grilla-wrap {
    position: relative;
}

.hor-modulos-toolbar__actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 0 0 auto;
    margin-left: auto;
}

.hor-modulos-grilla-wrap.is-fullscreen {
    position: fixed;
    inset: 0;
    z-index: 2500;
    width: 100vw;
    height: 100vh;
    max-width: none;
    background: var(--utn-blanco);
    padding: 0.75rem 1rem 1rem;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    margin: 0;
    box-sizing: border-box;
}

.hor-modulos-grilla-wrap.is-fullscreen .hor-modulos-toolbar {
    flex-shrink: 0;
    padding-top: 0.35rem;
}

.hor-modulos-grilla-wrap.is-fullscreen .cronograma-scroll-wrap {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow: auto;
}

.hor-modulos-grilla-wrap.is-fullscreen .aulas-grilla-fullscreen-btn:not(.aulas-grilla-fullscreen-btn--close) {
    display: none;
}

.hor-modulos-grilla-wrap.is-fullscreen .aulas-grilla-fullscreen-btn--close {
    display: inline-flex;
}

body.hor-modulos-body-lock {
    overflow: hidden;
}

/* Botones toolbar módulos (mismo diseño que mapa operativo de aulas) */
.hor-modulos-toolbar .aulas-grilla-fullscreen-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border: 1px solid var(--utn-borde);
    background: var(--utn-blanco);
    color: var(--utn-azul);
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    padding: 0.45rem 0.9rem;
    border-radius: 999px;
    cursor: pointer;
    transition: var(--utn-transicion);
    white-space: nowrap;
}

.hor-modulos-toolbar .aulas-grilla-fullscreen-btn:hover {
    border-color: var(--utn-azul-medio);
    background: var(--utn-azul-claro);
}

.hor-modulos-toolbar .aulas-grilla-fullscreen-btn--close {
    display: none;
    border-color: var(--utn-azul);
    background: var(--utn-azul);
    color: var(--utn-blanco);
}

.hor-modulos-toolbar .aulas-grilla-fullscreen-btn--close:hover {
    background: var(--utn-azul-medio, #004a9f);
    border-color: var(--utn-azul-medio, #004a9f);
    color: var(--utn-blanco);
}

.modal-contenido--codigos-hora {
    max-width: min(920px, 96vw);
}

.modal-body--codigos-hora {
    padding: 0;
    background: var(--utn-blanco);
}

.codigos-hora-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.codigos-hora-tabla {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
    min-width: 640px;
}

.codigos-hora-tabla thead th {
    background: linear-gradient(180deg, var(--utn-azul) 0%, var(--utn-azul-oscuro) 100%);
    color: var(--utn-blanco);
    font-weight: 700;
    text-align: center;
    padding: 0.65rem 0.5rem;
    border: 1px solid rgba(255, 255, 255, 0.15);
    white-space: nowrap;
}

.codigos-hora-tabla tbody td,
.codigos-hora-tabla tbody th.codigos-hora-tabla__th-hora {
    border: 1px solid var(--utn-borde);
    padding: 0.55rem 0.45rem;
    text-align: center;
    background: var(--utn-blanco);
    color: var(--utn-texto);
    white-space: nowrap;
}

.codigos-hora-tabla__th-hora {
    background: var(--utn-fondo);
    font-weight: 700;
    color: var(--utn-azul);
}

.codigos-hora-tabla__celda-vacia {
    background: var(--utn-fondo);
}

.hor-mod-hora-tooltip {
    position: absolute;
    z-index: 1200;
    pointer-events: none;
    max-width: min(96vw, 720px);
    padding: 0;
    border-radius: 0;
    border: none;
    background: var(--utn-blanco);
    box-shadow: var(--utn-sombra-lg);
    overflow: hidden;
}

.hor-mod-hora-tooltip[hidden] {
    display: none;
}

.hor-mod-hora-tooltip__simple {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.55rem 0.75rem;
    min-width: 8.5rem;
}

.hor-mod-hora-tooltip__simple-codigo {
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--utn-azul);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.hor-mod-hora-tooltip__simple-rango {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--utn-texto);
    white-space: nowrap;
}

.hor-mod-hora-tooltip__tabla {
    width: max-content;
    border-collapse: collapse;
    font-size: 0.72rem;
    min-width: 0;
    border: none;
}

.hor-mod-hora-tooltip__tabla th,
.hor-mod-hora-tooltip__tabla td {
    border: none;
    border-right: 1px solid var(--utn-borde);
    border-bottom: 1px solid var(--utn-borde);
    padding: 0.45rem 0.4rem;
    text-align: center;
    white-space: nowrap;
}

.hor-mod-hora-tooltip__tabla tr > :last-child {
    border-right: none;
}

.hor-mod-hora-tooltip__tabla tbody tr:last-child > * {
    border-bottom: none;
}

.hor-mod-hora-tooltip__tabla thead th {
    background: linear-gradient(180deg, var(--utn-azul) 0%, var(--utn-azul-oscuro) 100%);
    color: var(--utn-blanco);
    font-weight: 700;
}

.hor-mod-hora-tooltip__tabla tbody td,
.hor-mod-hora-tooltip__tabla tbody th.hor-mod-hora-tooltip__th-hora {
    background: var(--utn-blanco);
    color: var(--utn-texto);
}

.hor-mod-hora-tooltip__th-hora {
    background: var(--utn-fondo);
    font-weight: 700;
    color: var(--utn-azul);
}

.hor-mod-hora-tooltip__celda-vacia {
    background: var(--utn-fondo);
}

.hor-mod-clase-tooltip {
    position: absolute;
    z-index: 1200;
    pointer-events: none;
    max-width: min(96vw, 320px);
    padding: 0;
    border-radius: 0;
    border: none;
    background: var(--utn-blanco);
    box-shadow: 0 4px 18px rgba(0, 40, 85, 0.14);
    overflow: hidden;
    box-sizing: border-box;
}

.hor-mod-clase-tooltip[hidden] {
    display: none;
}

.hor-mod-clase-tooltip__materia {
    font-size: 0.78rem;
    font-weight: 800;
    color: var(--utn-blanco);
    line-height: 1.25;
    margin: 0;
    padding: 0.55rem 0.72rem;
    background: linear-gradient(180deg, var(--utn-azul) 0%, var(--utn-azul-oscuro) 100%);
}

.hor-mod-clase-tooltip__seccion {
    display: flex;
    flex-direction: column;
    gap: 0.28rem;
    padding: 0.55rem 0.72rem 0.65rem;
    background: var(--utn-blanco);
    color: var(--utn-texto);
}

.hor-mod-clase-tooltip__seccion + .hor-mod-clase-tooltip__seccion {
    border-top: 1px solid var(--utn-borde);
    padding-top: 0.5rem;
}

.hor-mod-clase-tooltip__fila {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.2rem 0.35rem;
    font-size: 0.7rem;
    line-height: 1.3;
    text-align: left;
}

.hor-mod-clase-tooltip__icono {
    color: var(--utn-azul);
    font-size: 0.68rem;
    width: 0.85rem;
    flex-shrink: 0;
    margin-top: 0.12rem;
    text-align: center;
}

.hor-mod-clase-tooltip__label {
    font-weight: 700;
    color: var(--utn-azul);
    white-space: nowrap;
}

.hor-mod-clase-tooltip__valor {
    color: var(--utn-texto);
    font-weight: 600;
}

.hor-mod-clase-tooltip__fila--etiqueta {
    align-items: center;
}

.hor-mod-clase-tooltip__etiqueta {
    display: inline-block;
    font-size: 0.66rem;
    font-weight: 700;
    line-height: 1.2;
    padding: 0.12rem 0.38rem;
    border-radius: 4px;
    background: color-mix(in srgb, var(--etiqueta-color, var(--utn-azul)) 14%, var(--utn-blanco));
    color: var(--utn-texto);
}

.hor-mod-clase-tooltip__seccion-titulo {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.68rem;
    font-weight: 800;
    color: var(--utn-azul);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    margin-bottom: 0.15rem;
}

.hor-mod-clase-tooltip__seccion-titulo .hor-mod-clase-tooltip__icono {
    margin-top: 0;
}

.tabla-cronograma--modulos th.cronograma-th-modulo--tooltip {
    cursor: default;
    background: linear-gradient(180deg, var(--utn-azul) 0%, var(--utn-azul-oscuro) 100%);
}

.tabla-cronograma--modulos th.cronograma-th-modulo--tooltip.cronograma-th-modulo--activa {
    background: var(--utn-blanco);
    background-image: none;
    color: var(--utn-azul);
    font-weight: 800;
}

.tabla-cronograma--modulos {
    --modulos-total-columnas: 49;
    --modulos-ancho-curso: 5rem;
    --modulos-ancho-modulo-min: 2.15rem;
    --modulos-alto-fila: clamp(6.75rem, 11vh, 8.25rem);
    --modulos-borde: 1px solid #e8edf2;
    --modulos-borde-fuerte: 1px solid #d5dfe8;
    --modulos-borde-fin-turno: 2px solid #bcc8d4;
    width: 100%;
    min-width: calc(var(--modulos-ancho-curso) + var(--modulos-ancho-modulo-min) * var(--modulos-total-columnas));
    table-layout: fixed;
}

.tabla-cronograma--modulos col.col-modulos-curso {
    width: var(--modulos-ancho-curso);
}

.tabla-cronograma--modulos col.col-modulos-hora {
    width: calc((100% - var(--modulos-ancho-curso)) / var(--modulos-total-columnas));
}

.tabla-cronograma--modulos tbody tr {
    height: var(--modulos-alto-fila);
}

.tabla-cronograma--modulos tbody tr.cronograma-fila-capa {
    height: var(--modulos-alto-fila);
}

.tabla-cronograma--modulos tbody td {
    min-height: 0;
    height: var(--modulos-alto-fila);
    max-height: var(--modulos-alto-fila);
    padding: 0.1rem;
    vertical-align: top;
    overflow: hidden;
}

.tabla-cronograma--modulos tbody td.cronograma-celda-modulo {
    padding: 0;
}

.tabla-cronograma--modulos th.cronograma-th-curso,
.tabla-cronograma--modulos td.celda-curso {
    position: sticky;
    left: 0;
    width: var(--modulos-ancho-curso);
    min-width: var(--modulos-ancho-curso);
    max-width: var(--modulos-ancho-curso);
    padding: 0.2rem 0.2rem;
    box-sizing: border-box;
    overflow: hidden;
    box-shadow: 4px 0 8px -4px rgba(0, 40, 85, 0.22);
}

.tabla-cronograma--modulos th.cronograma-th-curso {
    z-index: 30;
}

.tabla-cronograma--modulos td.celda-curso {
    z-index: 12;
}

.tabla-cronograma--modulos tbody td.celda-curso {
    vertical-align: middle;
    font-size: 0.72rem;
    line-height: 1.2;
    white-space: nowrap;
    word-break: keep-all;
    overflow-wrap: normal;
    text-overflow: ellipsis;
}

.tabla-cronograma--modulos th.cronograma-th-dia[data-dia^="sabado"] {
    font-size: 0.54rem;
    letter-spacing: 0.01em;
}

.tabla-cronograma--modulos thead tr:first-child th.cronograma-th-curso,
.tabla-cronograma--modulos thead tr:first-child th.cronograma-th-dia {
    padding: 0.45rem 0.25rem;
    font-size: 0.64rem;
}

.tabla-cronograma--modulos th.cronograma-th-dia {
    border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}

.tabla-cronograma--modulos th.cronograma-th-modulo {
    top: 1.95rem;
    left: auto;
    z-index: 10;
    font-size: 0.5rem;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    padding: 0.2rem 0.08rem;
    width: auto;
    min-width: 0;
    max-width: none;
    box-shadow: none;
    line-height: 1;
    white-space: nowrap;
    word-break: keep-all;
    overflow-wrap: normal;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo {
    width: auto;
    min-width: 0;
    max-width: none;
    padding: 0;
    text-align: center;
    font-size: 0.5rem;
    box-sizing: border-box;
    background: #f4f7fa;
    border-right: var(--modulos-borde);
    vertical-align: top;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo--fin-dia {
    border-right: var(--modulos-borde-fin-turno);
}

.tabla-cronograma--modulos tbody td.celda-curso,
.tabla-cronograma--modulos tbody td.cronograma-celda-modulo {
    border-top: none;
    border-bottom: var(--modulos-borde);
}

.tabla-cronograma--modulos tbody tr.cronograma-fila-capa--inicio-curso > td {
    border-top: var(--modulos-borde-fuerte);
}

.tabla-cronograma--modulos tbody tr.cronograma-fila-capa--fin-curso > td {
    border-bottom: var(--modulos-borde-fuerte);
}

.tabla-cronograma--modulos td.celda-curso {
    border-right: var(--modulos-borde-fuerte);
}

.tabla-cronograma--modulos tbody td.celda-curso--continuacion {
    background: var(--utn-azul-claro) !important;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo--vacia {
    padding: 0;
    pointer-events: none;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-bloque--spill-continuacion {
    border-left: 3px solid var(--utn-acento);
}

/* Sáb. TM → TT (legado visual stretch; ya no se usa con segmentos por turno) */
.tabla-cronograma--modulos tbody td.cronograma-celda-modulo--spill-inicio,
.tabla-cronograma--modulos tbody td.cronograma-celda-modulo--spill-cont {
    overflow: visible;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo--spill-inicio {
    position: relative;
    z-index: 2;
    border-right: none;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo--spill-inicio .cronograma-celda-modulo__cuerpo {
    overflow: visible;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo--spill-inicio .materia-bloque--spill-inicio {
    position: relative;
    z-index: 3;
    flex: none;
    width: 100%;
    max-width: none;
    background: var(--utn-blanco);
    box-sizing: border-box;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo--spill-cont {
    padding: 0;
    cursor: default;
    position: relative;
    z-index: 1;
}

.tabla-cronograma--modulos .cronograma-celda-modulo__cuerpo--spill-cont {
    display: none;
}

.tabla-cronograma--modulos tbody tr:has(td.cronograma-celda-modulo--spill-cont:hover) .materia-bloque--spill-inicio {
    background: var(--utn-fondo);
}

.tabla-cronograma--modulos .cronograma-celda-modulo__cuerpo {
    display: flex;
    flex-direction: column;
    gap: 0.08rem;
    height: 100%;
    min-height: 0;
    padding: 0.08rem;
    box-sizing: border-box;
    overflow: hidden;
}

.tabla-cronograma--modulos .cronograma-celda-modulo__cuerpo--apilado {
    gap: 0.1rem;
}

.tabla-cronograma--modulos .cronograma-celda-modulo__cuerpo--apilado .materia-bloque {
    flex: 1 1 0;
    height: auto;
    min-height: 0;
}

.tabla-cronograma--modulos .materia-bloque--solo-tooltip {
    cursor: default;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo:not(.cronograma-celda-modulo--vacia) .materia-bloque {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
    width: 100%;
    margin: 0;
    padding: 0.18rem 0.22rem;
    font-size: 0.64rem;
    text-align: left;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    overflow: hidden;
    border-radius: 4px;
    box-sizing: border-box;
    border: 1px solid var(--utn-borde);
    background: var(--utn-blanco);
    transition: var(--utn-transicion);
}

.tabla-cronograma--modulos td.cronograma-celda-modulo:not(.cronograma-celda-modulo--vacia) .materia-bloque:hover {
    transform: none;
    filter: none;
    background: var(--utn-fondo);
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-badges {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 0.1rem;
    margin-bottom: 0.12rem;
    flex-shrink: 0;
    width: 100%;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-badges--modulos .materia-dictado-badge {
    font-size: 0.66rem;
    padding: 0.07rem 0.24rem;
    letter-spacing: 0.02em;
    line-height: 1.15;
    text-transform: none;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-titulo {
    font-size: 0.64rem;
    line-height: 1.15;
    margin-bottom: 0.2rem;
    text-align: left;
    width: 100%;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    color: var(--utn-azul);
    font-weight: 700;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-hora--stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.05rem;
    margin-top: 0.12rem;
    text-align: left;
    width: 100%;
    line-height: 1.1;
    flex-shrink: 0;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-hora--stack i {
    font-size: 0.58rem;
    margin: 0;
    color: var(--utn-acento);
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-hora--stack .materia-hora__inicio,
.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-hora--stack .materia-hora__fin {
    font-size: 0.56rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-aula--stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.05rem;
    margin-top: 0.08rem;
    flex-shrink: 0;
    line-height: 1.05;
    text-align: left;
    max-width: 100%;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-aula--stack .materia-aula__label {
    font-size: 0.58rem;
    font-weight: 600;
    color: var(--utn-azul);
    margin-right: 0;
    white-space: nowrap;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-aula--stack .materia-aula__valor {
    font-size: 0.58rem;
    font-weight: 700;
    color: var(--utn-blanco);
    background: var(--utn-acento);
    border-radius: 4px;
    padding: 0.05rem 0.22rem;
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

.materia-etiqueta-virtual {
    margin-top: 0.08rem;
    flex-shrink: 0;
}

.tabla-cronograma--modulos td.cronograma-celda-modulo .materia-etiqueta-virtual .materia-modalidad-badge {
    font-size: 0.58rem;
    font-weight: 700;
    padding: 0.05rem 0.22rem;
    line-height: 1.15;
    text-transform: none;
    color: var(--utn-blanco);
    background: var(--utn-acento);
}

.tabla-cronograma--modulos td.cronograma-celda-modulo[colspan] {
    width: auto;
    min-width: 0;
    max-width: none;
}

.cronograma-card {
    background: var(--utn-blanco);
    border-radius: var(--utn-radio-lg);
    box-shadow: var(--utn-sombra-lg);
    border: 1px solid var(--utn-borde);
    overflow: visible;
}

.cronograma-card__toolbar {
    padding: 1rem 1.25rem;
    background: var(--utn-fondo);
    border-bottom: 1px solid var(--utn-borde);
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 1rem;
    position: relative;
    z-index: 30;
}

.cronograma-toolbar__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    width: 100%;
}

.cronograma-toolbar__meta span,
#cronograma-contador {
    font-size: 0.82rem;
    color: var(--utn-texto-suave);
    font-weight: 600;
}

.cronograma-toolbar__meta .cronograma-filters-block__head--toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    margin-left: auto;
    flex-shrink: 0;
}

.cronograma-toolbar__meta .cronograma-filters-block__panel-toggle-slot--toolbar {
    display: inline-flex;
    align-items: center;
    margin-left: auto;
    flex-shrink: 0;
}

.cronograma-toolbar__meta .cronograma-filters-block__toolbar-acciones {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    flex-shrink: 0;
}

.cronograma-toolbar__meta .cronograma-filters-block__clear--toolbar {
    align-self: center;
    margin: 0;
    flex-shrink: 0;
}

.cronograma-toolbar__meta .cronograma-filters-block__head {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    margin-left: auto;
    flex-shrink: 0;
}

.cronograma-toolbar__meta .cronograma-filters-block__toggle {
    gap: 0.4rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--utn-texto-suave);
}

.cronograma-filters-block__toggle-label {
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.cronograma-toolbar__meta .cronograma-filters-block__toggle-filter {
    color: var(--utn-acento);
    font-size: 0.82rem;
}

.cronograma-toolbar__meta .cronograma-filters-block__toggle-icon {
    color: var(--utn-acento);
    font-size: 0.82rem;
    transition: color 0.15s ease;
}

.cronograma-filters-block {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 100%;
}

.cronograma-filters-block__head {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.cronograma-filters-block__toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    gap: 0.35rem;
    padding: 0.1rem;
    border: none;
    background: transparent;
    color: var(--utn-texto-suave);
    font-family: inherit;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    transition: color 0.15s ease;
}

button.cronograma-filters-block__toggle,
.cronograma-filters-block__head--toggle[hidden] {
    display: none !important;
}

.cronograma-filters-block__toggle-filter {
    color: var(--utn-acento);
    font-size: 0.82rem;
}

.cronograma-filters-block__toggle-icon {
    color: var(--utn-acento);
    font-size: 0.82rem;
    transition: color 0.15s ease;
}

.cronograma-filters-block__toggle:hover .cronograma-filters-block__toggle-icon {
    color: var(--utn-azul);
}

.cronograma-filters-block__toggle:focus-visible {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 2px;
    border-radius: 4px;
}

.cronograma-filters-block__rotulo {
    cursor: default;
}

.cronograma-filters-block__clear {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    gap: 0.35rem;
    padding: 0.35rem 0.8rem;
    font-size: 0.78rem;
    font-weight: 600;
    font-family: inherit;
    line-height: 1.2;
    color: var(--utn-azul);
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    border-radius: 999px;
    cursor: pointer;
    transition: var(--utn-transicion);
    white-space: nowrap;
    flex-shrink: 0;
}

.cronograma-filters-block__clear i {
    color: var(--utn-acento);
    font-size: 0.72rem;
}

.cronograma-filters-block__clear:hover {
    border-color: var(--utn-azul-medio);
    background: var(--utn-azul-claro);
}

.cronograma-filters-block__clear:focus-visible {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 2px;
}

.cronograma-filters-block__clear[hidden] {
    display: none !important;
}

.cronograma-filters-block__toggle-panel {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.cronograma-filters-block__toggle-panel-icon {
    color: var(--utn-acento);
    font-size: 0.72rem;
    flex-shrink: 0;
}

.cronograma-filters-block__panel-toggle-slot {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
}

.cronograma-filters-block__panel-toggle-slot--toolbar {
    min-height: 0;
}

.cronograma-filters-block__activos-layout {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem 0.75rem;
    width: 100%;
}

.cronograma-filters-block__foot--activos.is-panel-closed {
    justify-content: flex-start;
    align-items: flex-start;
}

.cronograma-filters-block__foot--activos.is-panel-closed .cronograma-filters-block__activos-layout {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
    width: 100%;
}

.cronograma-filters-block__foot--activos.is-panel-closed .cronograma-filters-block__panel-toggle-slot--foot {
    display: none;
}

.cronograma-filters-block__foot--activos.is-panel-closed .cronograma-filters-block__foot-activos {
    margin-right: 0;
    width: 100%;
}

.cronograma-filters-block__foot--activos.is-panel-open .cronograma-filters-block__activos-layout {
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
}

.cronograma-filters-block__foot--activos.is-panel-open .cronograma-filters-block__foot-activos {
    flex: 1 1 auto;
    min-width: 0;
    margin-right: auto;
}

.cronograma-filters-block__foot--activos.is-panel-open .cronograma-filters-block__panel-toggle-slot--foot {
    margin-left: 0;
    flex-shrink: 0;
}

.cronograma-filters-block__foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.65rem 0.75rem;
    width: 100%;
    margin-top: 0.15rem;
}

.cronograma-filters-block__foot-activos {
    flex: 1 1 auto;
    min-width: 0;
    margin-right: auto;
}

.cronograma-filters-block__foot-activos[hidden] {
    display: none !important;
}

.cronograma-filters-block__foot--activos {
    padding: 0.55rem 1.25rem 0.65rem;
    background: var(--utn-fondo);
    border-bottom: 1px solid var(--utn-borde);
}

.cronograma-filters-block__foot--activos[hidden] {
    display: none !important;
}

.cronograma-filters-block__foot .cronograma-filters-block__clear {
    flex-shrink: 0;
}

.cronograma-filters-block__panel {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
}

.cronograma-filtros-activos {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
}

.cronograma-filtros-activos[hidden] {
    display: none !important;
}

.cronograma-filtros-activos__titulo {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--utn-texto-suave);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    margin-right: 0.25rem;
}

.cronograma-chip-activo {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.7rem;
    font-size: 0.78rem;
    font-weight: 600;
    font-family: inherit;
    line-height: 1.2;
    color: var(--utn-azul);
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    border-radius: 999px;
    cursor: pointer;
    transition: var(--utn-transicion);
}

.cronograma-chip-activo i {
    color: var(--utn-acento);
    font-size: 0.78rem;
}

.cronograma-chip-activo:hover {
    border-color: var(--utn-azul-medio);
    background: var(--utn-azul-claro);
}

.cronograma-chip-activo:focus-visible {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 2px;
}

.cronograma-filters-block__panel[hidden] {
    display: none !important;
}

@media (max-width: 900px), (max-height: 520px) and (orientation: landscape) and (hover: none) and (pointer: coarse) {
    .cronograma-filters-block__panel:not(.is-filters-open) {
        display: none !important;
    }

    .cronograma-filters-block__panel.is-filters-open {
        display: flex !important;
    }
}

.cronograma-filters-block--integrado {
    margin-bottom: 1rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem 0.75rem;
}

.cronograma-filters-block--integrado > .cronograma-filters-block__clear--toolbar {
    align-self: center;
    margin: 0;
    flex-shrink: 0;
}

.cronograma-filters-block__head--toggle {
    margin-left: auto;
}

.cronograma-filters-block__head--solo-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.65rem;
}

.cronograma-filters-block__contador-mini {
    font-size: 0.82rem;
    color: var(--utn-texto-suave, #5a6a7a);
    font-weight: 600;
}

.cronograma-filters-block--integrado-inner {
    width: 100%;
}

.aulas-control-filtros {
    margin-bottom: 1.25rem;
}

.aulas-filtros-section {
    margin-bottom: 0;
}

.aulas-filtros-section__card {
    overflow: visible;
    border-radius: 0;
    border: none;
    box-shadow: none;
    background: transparent;
}

.aulas-filtros-section__body {
    padding: 1rem 1.25rem 0.25rem;
}

.aulas-filtros-section__body .cronograma-card__toolbar {
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    box-shadow: none;
}

.aulas-filtros-section__body .cronograma-filters-block {
    width: 100%;
}

.cronograma-filters-block__title {
    margin: 0;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--utn-azul);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.cronograma-filters-block__title i {
    color: var(--utn-acento);
    font-size: 0.95rem;
}

.dictado-filter {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem 1rem;
    padding: 0.85rem 1rem;
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    border-radius: var(--utn-radio);
}

.dictado-filter__label {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--utn-azul);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.dictado-filter__label i {
    color: var(--utn-acento);
}

.dictado-filter__options {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.dictado-chip {
    position: relative;
    cursor: pointer;
    user-select: none;
}

.dictado-chip input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
    z-index: 1;
}

.dictado-chip span {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 0.85rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--utn-azul);
    background: var(--utn-azul-claro);
    border: 1px solid var(--utn-borde);
    border-radius: 999px;
    transition: var(--utn-transicion);
}

.dictado-chip input:checked + span {
    background: var(--utn-azul);
    color: var(--utn-blanco);
    border-color: var(--utn-azul);
    box-shadow: 0 2px 8px rgba(0, 56, 118, 0.2);
}

.dictado-chip input:focus-visible + span {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 2px;
}

.cronograma-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 1rem;
}

.cronograma-filters .dictado-filter {
    flex: 1 1 280px;
}

.esp-filter {
    flex: 1 1 220px;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    padding: 0.85rem 1rem;
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    border-radius: var(--utn-radio);
}

.esp-filter__label {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--utn-azul);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.esp-filter__label i {
    color: var(--utn-acento);
}

.esp-filter__select {
    width: 100%;
    min-height: 2.5rem;
    padding: 0.45rem 0.75rem;
    font-size: 0.88rem;
    font-family: inherit;
    color: var(--utn-azul);
    background: var(--utn-azul-claro);
    border: 1px solid var(--utn-borde);
    border-radius: var(--utn-radio);
}

.esp-filter__select:focus {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 1px;
}

.cronograma-filters-secondary {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 1rem;
    align-items: start;
}

.cronograma-filters-secondary .esp-filter {
    width: 100%;
    box-sizing: border-box;
}

.cronograma-filters-secondary .ano-nivel-filter {
    grid-column: 1 / 3;
    grid-row: 1;
    min-width: 0;
}

.cronograma-filters-secondary .modalidad-filter {
    grid-column: 3 / 5;
    grid-row: 1;
    min-width: 0;
}

.cronograma-filters-secondary .turno-filter {
    grid-column: 5 / 7;
    grid-row: 1;
    min-width: 0;
}

.cronograma-filters-secondary .docente-filter:not(.materia-filter) {
    grid-column: 1 / 4;
    grid-row: 2;
    min-width: 0;
    z-index: 31;
}

.cronograma-filters-secondary .materia-filter {
    grid-column: 4 / 7;
    grid-row: 2;
    min-width: 0;
    z-index: 30;
}

.docente-filter {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    padding: 0.85rem 1rem;
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    border-radius: var(--utn-radio);
    position: relative;
    z-index: 40;
}

.docente-filter__label {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--utn-azul);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.docente-filter__label i {
    color: var(--utn-acento);
}

.docente-filter__row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.65rem;
}

.docente-filter__field {
    position: relative;
    flex: 1 1 240px;
    min-width: 0;
    z-index: 50;
}

.docente-filter__input {
    width: 100%;
    min-height: 2.5rem;
    padding: 0.45rem 0.75rem;
    font-size: 0.88rem;
    font-family: inherit;
    color: var(--utn-azul);
    background: var(--utn-azul-claro);
    border: 1px solid var(--utn-borde);
    border-radius: var(--utn-radio);
}

.docente-filter__input:focus {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 1px;
}

.docente-filter__sugerencias {
    position: absolute;
    z-index: 1200;
    top: calc(100% + 0.25rem);
    left: 0;
    right: 0;
    margin: 0;
    padding: 0.35rem 0;
    list-style: none;
    max-height: 12rem;
    overflow-y: auto;
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    border-radius: var(--utn-radio);
    box-shadow: var(--utn-sombra-lg);
}

.docente-filter__sugerencias li {
    padding: 0.45rem 0.75rem;
    font-size: 0.88rem;
    color: var(--utn-azul);
    cursor: pointer;
}

.docente-filter__sugerencias li:hover,
.docente-filter__sugerencias li.is-active {
    background: var(--utn-azul-claro);
}

.docente-filter__aviso {
    margin: 0;
    font-size: 0.82rem;
    color: #b45309;
    font-weight: 600;
}

.docente-filter__ayuda {
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.45;
    color: var(--utn-texto-suave, #5a6a7a);
}

.docente-filter__activo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin: 0;
    min-height: 2.5rem;
    padding: 0.35rem 0;
    background: transparent;
    border: none;
}

.docente-filter__activo-nombre {
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--utn-azul);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.docente-filter__borrar {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    padding: 0.3rem 0.75rem;
    font-size: 0.76rem;
    font-weight: 600;
    font-family: inherit;
    line-height: 1.2;
    color: var(--utn-azul);
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    border-radius: 999px;
    cursor: pointer;
    transition: var(--utn-transicion);
    white-space: nowrap;
}

.docente-filter__borrar:hover {
    border-color: var(--utn-azul-medio);
    background: var(--utn-azul-claro);
}

.docente-filter__borrar:focus-visible {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 2px;
}

.dictado-chip:hover span {
    border-color: var(--utn-azul-medio);
}

.materia-bloque--oculto,
.materia-bloque[hidden] {
    display: none !important;
}

.tabla-cronograma tbody tr.cronograma-fila--oculta {
    display: none;
}

.materia-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-bottom: 0.35rem;
}

.materia-dictado-badge,
.materia-modalidad-badge {
    display: inline-block;
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-radius: 4px;
    padding: 0.15rem 0.4rem;
}

.materia-dictado-badge {
    color: var(--utn-azul-oscuro);
    background: var(--utn-azul-claro);
}

.materia-dictado-badge[data-tipo="A"],
.materia-bloque[data-tipo-dictado="A"] .materia-dictado-badge {
    background: #e8f4ea;
    color: #1b5e20;
}

.materia-bloque[data-tipo-dictado="1"] .materia-dictado-badge {
    background: #fff4e5;
    color: #9a5b00;
}

.materia-bloque[data-tipo-dictado="2"] .materia-dictado-badge {
    background: #fce8f3;
    color: #7b1f4a;
}

.materia-modalidad-badge[data-modalidad="presencial"] {
    background: #e8f0f8;
    color: #003876;
}

.materia-modalidad-badge[data-modalidad="virtual"] {
    background: #ede7f6;
    color: #4527a0;
}

.cronograma-scroll-hint {
    display: none;
    font-size: 0.78rem;
    color: var(--utn-azul-medio);
    align-items: center;
    gap: 0.35rem;
}

@media (max-width: 768px) {
    .cronograma-scroll-hint {
        display: inline-flex;
    }
}

.wrapper-cronograma {
    width: max-content;
    min-width: 100%;
    max-height: min(85vh, 1000px);
    overflow-x: visible;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.tabla-cronograma {
    width: 100%;
    min-width: 720px;
    border-collapse: separate;
    border-spacing: 0;
}

.tabla-cronograma th {
    background: linear-gradient(180deg, var(--utn-azul) 0%, var(--utn-azul-oscuro) 100%);
    color: var(--utn-blanco);
    text-align: center;
    padding: 0.85rem 0.65rem;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-right: 1px solid rgba(255, 255, 255, 0.12);
    position: sticky;
    top: 0;
    z-index: 10;
}

.tabla-cronograma td:first-child,
.tabla-cronograma th:first-child:not(.cronograma-th-modulo) {
    position: sticky;
    left: 0;
    min-width: 88px;
    z-index: 5;
    border-right: 2px solid var(--utn-borde);
}

.tabla-cronograma--modulos th.cronograma-th-curso,
.tabla-cronograma--modulos td.celda-curso {
    min-width: var(--modulos-ancho-curso);
}

.tabla-cronograma th:first-child:not(.cronograma-th-modulo) {
    z-index: 20;
}

.tabla-cronograma .cronograma-sin-resultados[hidden] {
    display: none;
}

.tabla-cronograma .cronograma-sin-resultados__celda {
    text-align: center;
    padding: 2.5rem 1rem;
    color: var(--utn-texto-suave);
    font-size: 0.95rem;
    font-weight: 600;
    background: var(--utn-blanco);
}

.tabla-cronograma .cronograma-sin-resultados__celda i {
    display: block;
    margin-bottom: 0.6rem;
    font-size: 1.6rem;
    color: var(--utn-borde);
}

.celda-curso {
    font-weight: 800;
    font-size: 0.82rem;
    color: var(--utn-azul);
    background: var(--utn-azul-claro) !important;
    vertical-align: middle !important;
    text-align: center;
}

.tabla-cronograma td {
    border-bottom: 1px solid var(--utn-borde);
    border-right: 1px solid var(--utn-borde);
    padding: 0.65rem;
    vertical-align: top;
    background: var(--utn-blanco);
    min-height: 80px;
    width: 14%;
}

.tabla-cronograma tbody tr:nth-child(even) td:not(.celda-curso) {
    background: #fafbfd;
}

.materia-bloque {
    background: var(--utn-blanco);
    border: 1px solid var(--utn-borde);
    padding: 0.55rem 0.65rem;
    border-radius: 8px;
    margin-bottom: 0.5rem;
    cursor: pointer;
    transition: var(--utn-transicion);
}

.materia-bloque:hover {
    box-shadow: 0 1px 4px rgba(0, 40, 85, 0.08);
    transform: translateY(-1px);
    filter: brightness(0.98);
}

.materia-bloque:focus-visible {
    outline: 2px solid var(--utn-azul-medio);
    outline-offset: 2px;
}

.materia-titulo {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--utn-azul);
    margin-bottom: 0.25rem;
    line-height: 1.25;
}

.materia-hora {
    font-size: 0.72rem;
    color: var(--utn-texto-suave);
    font-weight: 600;
}

.materia-hora i {
    font-size: 0.8rem;
    color: var(--utn-acento);
    margin-right: 0.2rem;
}

.materia-aula {
    font-size: 0.72rem;
    color: var(--utn-texto-suave);
    font-weight: 600;
    margin-top: 0.2rem;
}

.materia-aula__label {
    color: var(--utn-acento);
    margin-right: 0.25rem;
}

.cronograma-error {
    margin: 1.25rem;
    padding: 1rem 1.15rem;
    background: #fef2f2;
    color: #991b1b;
    border-radius: var(--utn-radio);
    border: 1px solid #fca5a5;
}

/* Modal */
.modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(0, 40, 85, 0.55);
    align-items: center;
    justify-content: center;
    padding: 1rem;
    backdrop-filter: blur(4px);
}

.modal.activo {
    display: flex;
    z-index: 2100;
}

.modal-contenido {
    background: var(--utn-blanco);
    border-radius: var(--utn-radio-lg);
    width: 100%;
    max-width: 640px;
    max-height: 90vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: var(--utn-sombra-lg);
    animation: modalEntrada 0.25s ease;
}

@keyframes modalEntrada {
    from { transform: scale(0.96); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

.modal-header {
    background: linear-gradient(135deg, var(--utn-azul-oscuro), var(--utn-azul));
    color: var(--utn-blanco);
    padding: 1.25rem 1.5rem;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
}

.modal-header-text h3 {
    margin: 0.5rem 0 0;
    font-size: 1.2rem;
    font-weight: 800;
    line-height: 1.3;
    color: var(--utn-blanco);
}

.badge-materia {
    display: inline-block;
    background: var(--utn-acento);
    color: var(--utn-blanco);
    font-size: 0.7rem;
    font-weight: 700;
    padding: 0.25rem 0.65rem;
    border-radius: 20px;
    text-transform: uppercase;
}

.modal-cerrar {
    background: rgba(255, 255, 255, 0.15);
    border: none;
    color: var(--utn-blanco);
    width: 36px;
    height: 36px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: var(--utn-transicion);
}

.modal-cerrar:hover {
    background: rgba(255, 255, 255, 0.28);
}

.modal-body {
    padding: 1.25rem;
    overflow-y: auto;
    background: var(--utn-fondo);
}

.grid-modal {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.85rem;
    margin-bottom: 1rem;
}

@media (min-width: 520px) {
    .grid-modal {
        grid-template-columns: 1fr 1fr;
    }
}

.card-info {
    background: var(--utn-blanco);
    padding: 1rem;
    border-radius: var(--utn-radio);
    border: 1px solid var(--utn-borde);
}

.card-info-full {
    grid-column: 1 / -1;
}

.card-titulo {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--utn-texto-suave);
    letter-spacing: 0.04em;
    margin-bottom: 0.4rem;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.card-titulo i {
    color: var(--utn-azul);
}

.card-valor {
    color: var(--utn-texto);
    font-size: 0.95rem;
    font-weight: 600;
}

.lista-docentes {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.docente-item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    background: var(--utn-fondo);
    padding: 0.65rem 0.85rem;
    border-radius: 8px;
    border-left: 4px solid var(--utn-borde);
}

.docente-item.cargo-principal {
    border-left-color: var(--utn-azul);
    background: var(--utn-azul-claro);
}

.docente-item.cargo-medio {
    border-left-color: var(--utn-acento);
    background: #fff8ed;
}

.docente-rol {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--utn-texto-suave);
}

.docente-nombre {
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--utn-texto);
}

/* Contenedor con scroll horizontal interno */
.cronograma-scroll-wrap {
    position: relative;
    z-index: 1;
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    touch-action: pan-x pan-y;
    border-bottom-left-radius: var(--utn-radio-lg);
    border-bottom-right-radius: var(--utn-radio-lg);
}

.cronograma-scroll-wrap::after {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 28px;
    background: linear-gradient(to left, rgba(240, 244, 248, 0.95), transparent);
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s;
}

@media (max-width: 768px) {
    .cronograma-scroll-wrap::after {
        opacity: 1;
    }

    .cronograma-scroll-wrap.scrolled-end::after {
        opacity: 0;
    }
}

/* ========== CRONOGRAMA — MÓVIL ========== */

@media (max-width: 899px), (max-height: 520px) and (orientation: landscape) and (hover: none) and (pointer: coarse) {
    .cronograma-panel {
        padding: 0 0.75rem 1.25rem;
    }

    body.page-cronograma .site-main {
        padding-bottom: 0.5rem;
    }

    .cronograma-filters,
    .cronograma-filters-secondary {
        flex-direction: column;
        width: 100%;
    }

    .cronograma-filters-secondary {
        display: flex;
        flex-direction: column;
    }

    .cronograma-filters-block {
        gap: 0.65rem;
    }

    .cronograma-filters .dictado-filter,
    .cronograma-filters .esp-filter,
    .cronograma-filters-secondary .docente-filter,
    .cronograma-filters-secondary .materia-filter,
    .cronograma-filters-secondary .ano-nivel-filter,
    .cronograma-filters-secondary .modalidad-filter,
    .cronograma-filters-secondary .turno-filter {
        grid-column: auto;
        grid-row: auto;
        flex: 1 1 100%;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }

    .docente-filter__row,
    .docente-filter__field {
        width: 100%;
        flex: 1 1 100%;
        min-width: 0;
    }
}

/* Módulos retrato: grilla idéntica a PC, scroll horizontal dentro de la tarjeta */
@media (max-width: 899px) and (orientation: portrait) {
    .horarios-modulos-panel.cronograma-panel,
    .aulas-modulos-grilla-panel.cronograma-panel {
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }

    .horarios-modulos-panel .cronograma-card {
        overflow: hidden;
        margin: 0;
        border-radius: var(--utn-radio-lg);
    }

    .aulas-modulos-grilla-panel .cronograma-card {
        overflow: hidden;
    }

    .horarios-modulos-panel .hor-modulos-grilla-wrap,
    .aulas-modulos-grilla-panel .aulas-modulos-grilla-wrap {
        min-width: 0;
        max-width: 100%;
        overflow: hidden;
    }

    .horarios-modulos-panel .cronograma-scroll-wrap,
    .aulas-modulos-grilla-panel .cronograma-scroll-wrap {
        width: 100%;
        max-width: 100%;
        overflow-x: hidden;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
    }

    .horarios-modulos-panel .cronograma-scroll-wrap::after,
    .aulas-modulos-grilla-panel .cronograma-scroll-wrap::after {
        opacity: 1;
    }

    .horarios-modulos-panel .cronograma-scroll-wrap.scrolled-end::after,
    .aulas-modulos-grilla-panel .cronograma-scroll-wrap.scrolled-end::after {
        opacity: 0;
    }

    .horarios-modulos-panel .wrapper-cronograma,
    .aulas-modulos-grilla-panel .wrapper-cronograma {
        width: auto;
        max-width: none;
        min-width: 0;
        max-height: min(85vh, 1000px);
        overflow-x: auto;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* Evita que la tabla se achique al ancho del teléfono (mismas columnas que PC) */
    .horarios-modulos-panel .tabla-cronograma--modulos,
    .aulas-modulos-grilla-panel .tabla-cronograma--modulos {
        width: calc(var(--modulos-ancho-curso) + var(--modulos-ancho-modulo-min) * var(--modulos-total-columnas));
        min-width: calc(var(--modulos-ancho-curso) + var(--modulos-ancho-modulo-min) * var(--modulos-total-columnas));
        max-width: none;
    }

    .horarios-modulos-panel .tabla-cronograma--modulos col.col-modulos-hora,
    .aulas-modulos-grilla-panel .tabla-cronograma--modulos col.col-modulos-hora {
        width: var(--modulos-ancho-modulo-min);
    }
}

/* Módulos apaisado móvil: celdas algo más grandes (retrato usa tamaños de escritorio) */
@media (max-width: 899px) and (orientation: landscape),
       (max-height: 520px) and (orientation: landscape) and (hover: none) and (pointer: coarse) {
    body.page-cronograma .site-main {
        padding-top: 0.35rem;
        padding-bottom: 0;
    }

    body.page-cronograma .page-hero {
        padding: 0.45rem 1rem;
    }

    body.page-cronograma.page-hero-compact .page-hero__title {
        font-size: clamp(1rem, 2.6vw, 1.35rem);
    }

    .cronograma-panel {
        max-width: none;
        padding: 0 0.35rem 0.45rem;
    }

    .cronograma-card {
        margin: 0;
        border-radius: var(--utn-radio);
    }

    .cronograma-card__toolbar {
        gap: 0.45rem;
        padding: 0.5rem 0.65rem;
    }

    .cronograma-toolbar__meta {
        gap: 0.35rem 0.5rem;
    }

    .cronograma-filters-block {
        gap: 0.45rem;
    }

    .cronograma-filters,
    .cronograma-filters-secondary {
        gap: 0.45rem;
    }

    .cronograma-filters {
        display: grid;
        grid-template-columns: minmax(13rem, 1fr) minmax(13rem, 1fr);
    }

    .cronograma-filters .dictado-filter,
    .cronograma-filters .esp-filter {
        width: 100%;
        min-width: 0;
    }

    .cronograma-filters-secondary {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }

    .cronograma-filters-secondary .ano-nivel-filter {
        grid-column: 1 / 3;
        grid-row: 1;
    }

    .cronograma-filters-secondary .modalidad-filter {
        grid-column: 3 / 5;
        grid-row: 1;
    }

    .cronograma-filters-secondary .turno-filter {
        grid-column: 5 / 7;
        grid-row: 1;
    }

    .cronograma-filters-secondary .docente-filter:not(.materia-filter) {
        grid-column: 1 / 4;
        grid-row: 2;
    }

    .cronograma-filters-secondary .materia-filter {
        grid-column: 4 / 7;
        grid-row: 2;
    }

    .dictado-filter,
    .esp-filter,
    .docente-filter {
        gap: 0.3rem;
        padding: 0.45rem 0.55rem;
    }

    .dictado-filter__label,
    .esp-filter__label,
    .docente-filter__label {
        font-size: 0.68rem;
    }

    .dictado-chip span {
        padding: 0.25rem 0.55rem;
        font-size: 0.72rem;
    }

    .esp-filter__select,
    .docente-filter__input,
    .docente-filter__activo {
        min-height: 2rem;
        font-size: 0.78rem;
    }

    .cronograma-scroll-wrap {
        max-height: calc(100dvh - 9rem);
    }

    .wrapper-cronograma {
        max-height: calc(100dvh - 9rem);
    }

    .tabla-cronograma--modulos {
        --modulos-ancho-modulo-min: 2.7rem;
        --modulos-alto-fila: clamp(8.45rem, 13.75vh, 10.3rem);
        min-width: calc(var(--modulos-ancho-curso) + var(--modulos-ancho-modulo-min) * var(--modulos-total-columnas));
    }

    .tabla-cronograma--modulos thead tr:first-child th.cronograma-th-dia {
        padding: 0.46rem 0.28rem;
        font-size: 0.66rem;
    }

    .tabla-cronograma--modulos th.cronograma-th-modulo {
        font-size: 0.52rem;
        padding: 0.22rem 0.09rem;
    }

    .tabla-cronograma--modulos td.cronograma-celda-modulo:not(.cronograma-celda-modulo--vacia) .materia-bloque {
        padding: 0.2rem 0.26rem;
        font-size: 0.66rem;
    }

    .tabla-cronograma--modulos td.cronograma-celda-modulo .materia-titulo {
        font-size: 0.66rem;
    }

    .tabla-cronograma--modulos td.cronograma-celda-modulo .materia-hora--stack .materia-hora__inicio,
    .tabla-cronograma--modulos td.cronograma-celda-modulo .materia-hora--stack .materia-hora__fin {
        font-size: 0.58rem;
    }

    .tabla-cronograma--modulos td.cronograma-celda-modulo .materia-aula--stack .materia-aula__label,
    .tabla-cronograma--modulos td.cronograma-celda-modulo .materia-aula--stack .materia-aula__valor {
        font-size: 0.6rem;
    }
}

@media (max-width: 599px), (max-height: 520px) and (orientation: landscape) and (hover: none) and (pointer: coarse) {
    .cronograma-panel {
        padding: 0 0.5rem 1rem;
    }

    .cronograma-card {
        border-radius: var(--utn-radio);
        margin: 0 -0.25rem;
    }

    .cronograma-card__toolbar {
        flex-direction: column;
        align-items: flex-start;
        padding: 0.85rem 1rem;
        gap: 0.5rem;
    }

    .cronograma-scroll-hint {
        display: inline-flex;
        width: 100%;
        justify-content: center;
        padding: 0.35rem 0.5rem;
        background: var(--utn-azul-claro);
        border-radius: 6px;
        font-size: 0.75rem;
    }

    /* Modal tipo sheet en móvil */
    .modal {
        padding: 0;
        align-items: flex-end;
    }

    .modal-contenido {
        max-width: 100%;
        max-height: 92dvh;
        border-radius: 16px 16px 0 0;
        margin: 0;
    }

    .modal-header {
        padding: 1rem 1rem 1rem 1.15rem;
    }

    .modal-header-text h3 {
        font-size: 1.05rem;
    }

    .modal-cerrar {
        width: 44px;
        height: 44px;
    }

    .modal-body {
        padding: 1rem;
        max-height: calc(92dvh - 120px);
        -webkit-overflow-scrolling: touch;
    }

    .docente-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.25rem;
    }

    .docente-nombre {
        font-size: 0.85rem;
        word-break: break-word;
    }

    .card-valor {
        font-size: 0.9rem;
        word-break: break-word;
    }

    .cronograma-error {
        margin: 0.85rem;
        font-size: 0.88rem;
    }
}

@media (max-width: 899px) and (orientation: landscape),
       (max-height: 520px) and (orientation: landscape) and (hover: none) and (pointer: coarse) {
    .cronograma-panel {
        padding: 0 0.35rem 0.45rem;
    }

    .cronograma-card {
        margin: 0;
    }

    .cronograma-card__toolbar {
        padding: 0.5rem 0.65rem;
        gap: 0.45rem;
    }

    .wrapper-cronograma,
    .horarios-modulos-panel .wrapper-cronograma,
    .aulas-modulos-grilla-panel .wrapper-cronograma {
        max-height: calc(100dvh - 9rem);
    }
}

/* Grilla general: solo retrato; apaisado móvil usa el bloque compacto anterior */
@media (max-width: 599px) and (orientation: portrait) {
    .wrapper-cronograma {
        max-height: min(58dvh, 520px);
        border-radius: 0;
        margin: 0 -1px;
    }

    .tabla-cronograma:not(.tabla-cronograma--modulos) {
        min-width: 640px;
    }

    .tabla-cronograma th {
        padding: 0.65rem 0.45rem;
        font-size: 0.7rem;
    }

    .tabla-cronograma td {
        padding: 0.5rem;
        min-height: 72px;
    }

    .celda-curso {
        font-size: 0.75rem;
        min-width: 72px !important;
    }

    .tabla-cronograma td:first-child,
    .tabla-cronograma th:first-child:not(.cronograma-th-modulo) {
        min-width: 72px;
        box-shadow: 4px 0 8px -2px rgba(0, 40, 85, 0.08);
    }

    .materia-bloque {
        padding: 0.5rem;
        margin-bottom: 0.4rem;
    }

    .materia-titulo {
        font-size: 0.72rem;
    }

    .materia-hora {
        font-size: 0.68rem;
    }
}

@media (max-width: 380px) and (orientation: portrait) {
    .tabla-cronograma:not(.tabla-cronograma--modulos) {
        min-width: 580px;
    }

    .tabla-cronograma th:not(:first-child) {
        font-size: 0.65rem;
        padding: 0.55rem 0.35rem;
    }
}
