@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@700;800&family=Caveat:wght@600;700&display=swap');

:root, body.role-alumno, body.role-emisor,
body:is(.role-profesor, .role-director, .role-administrativo) {
    /* Brand Colors (base) */
    --brand-yellow: #ffd824;
    --brand-cyan: #007b84;
    --brand-white: #ffffff;
    --brand-black: #1c1c1a;
    --brand-bg: #FFFDEB;
    --brand-text: #000000;
    --brand-text-muted: #4A5568;

    /* Utility States */
    --brand-success: #16A34A;
    --brand-warning: #D97706;
    --brand-danger: #DC2626;

    /* ── Design tokens (paleta ampliada, uso: acentos por sección) ── */
    --apr-color-yellow: var(--brand-yellow);
    --apr-color-orange: #ff7b54;
    --apr-color-teal: var(--brand-cyan);
    --apr-color-blue: #4d6bfa;
    --apr-color-pink: #ff6b9d;

    /* Versiones pastel de cada acento, para fondos de cabecera de sección */
    --apr-color-yellow-light: #fff4c2;
    --apr-color-orange-light: #ffe1d6;
    --apr-color-teal-light: #cfecef;
    --apr-color-blue-light: #dce3ff;
    --apr-color-pink-light: #ffe0eb;

    --apr-radius: 12px;
    --apr-radius-pill: 999px;
    --apr-shadow: 4px 4px 0px 0px var(--brand-black);
    --apr-shadow-hover: 6px 6px 0px 0px var(--brand-black);
    --apr-font-handwritten: 'Caveat', cursive;
}

body.role-alumno,
body.role-emisor,
body:is(.role-profesor, .role-director, .role-administrativo),
body.role-director,
body.role-administrativo {
    font-family: 'Inter', system-ui, sans-serif !important;
    background-color: var(--brand-bg) !important;
    background-image: url('../images/bg-moderno.svg') !important;
    background-repeat: repeat !important;
    background-size: 24px 24px !important;
    color: var(--brand-text) !important;
}

body.role-alumno .wrap-content,
body.role-emisor .wrap-content,
body:is(.role-profesor, .role-director, .role-administrativo) .wrap-content,
body.role-director .wrap-content,
body.role-administrativo .wrap-content {
    background-color: transparent !important;
    background-image: none !important;
}

body.role-alumno .hidden {
    display: none !important;
}

body.role-alumno .login-layout {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 40px !important;
    align-items: flex-start !important;
    justify-content: center !important;
}

body.role-alumno .login-info-col {
    flex: 1 !important;
    min-width: 300px !important;
    max-width: 600px !important;
}

body.role-alumno .login-form-col {
    flex: 0 0 380px !important;
    min-width: 280px !important;
}

body.role-alumno footer a {
    color: var(--brand-yellow) !important;
}

@media (max-width: 768px) {
    body.role-alumno footer .col-sm-6 {
        margin-bottom: 30px !important;
    }
}

/* Card and Panels */
body.role-alumno .neo-card,
body.role-alumno .card,
body.role-alumno .panel,
body.role-alumno .flotante,
body.role-emisor .neo-card,
body.role-emisor .card,
body.role-emisor .panel,
body.role-emisor .flotante,
body:is(.role-profesor, .role-director, .role-administrativo) .neo-card,
body:is(.role-profesor, .role-director, .role-administrativo) .card,
body:is(.role-profesor, .role-director, .role-administrativo) .panel,
body:is(.role-profesor, .role-director, .role-administrativo) .flotante {
    border: 3px solid var(--brand-black) !important;
    box-shadow: var(--apr-shadow) !important;
    background-color: var(--brand-white) !important;
    border-radius: var(--apr-radius) !important;
    padding: 24px !important;
    transition: transform 0.15s ease, box-shadow 0.15s ease !important;
}

body.role-alumno .neo-card:hover,
body.role-alumno .card:hover,
body.role-alumno .panel:hover,
body.role-emisor .neo-card:hover,
body.role-emisor .card:hover,
body.role-emisor .panel:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .neo-card:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .card:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .panel:hover {
    box-shadow: 6px 6px 0px 0px var(--brand-black) !important;
    transform: translate(-2px, -2px) !important;
}

/* Buttons (componentes nuevos, fuera de .btn legacy) */
body.role-alumno .neo-btn,
body:is(.role-profesor, .role-director, .role-administrativo) .neo-btn {
    border: 3px solid var(--brand-black) !important;
    box-shadow: var(--apr-shadow) !important;
    border-radius: var(--apr-radius-pill) !important;
    padding: 10px 24px !important;
    font-weight: 700 !important;
    transition: all 0.1s ease !important;
    text-transform: none !important;
}
body.role-alumno .neo-btn:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .neo-btn:hover {
    box-shadow: var(--apr-shadow-hover) !important;
    transform: translate(-2px, -2px) !important;
}
body.role-alumno .neo-btn:active,
body:is(.role-profesor, .role-director, .role-administrativo) .neo-btn:active {
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
    transform: translate(2px, 2px) !important;
}

body.role-alumno .btn-info,
body.role-alumno .btn-primary,
body.role-emisor .btn-info,
body.role-emisor .btn-primary,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-info,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-primary {
    background-color: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    border-color: var(--brand-black) !important;
}

body.role-alumno .btn-success,
body.role-emisor .btn-success,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-success {
    background-color: var(--brand-success) !important;
    color: var(--brand-white) !important;
    border-color: var(--brand-black) !important;
}

body.role-alumno .btn-danger,
body.role-emisor .btn-danger,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-danger {
    background-color: var(--brand-danger) !important;
    color: var(--brand-white) !important;
    border-color: var(--brand-black) !important;
}

body.role-alumno .btn-warning,
body.role-emisor .btn-warning,
body.role-emisor .btn-warning:not(:disabled):not(.disabled).active,
body.role-emisor .btn-warning:not(:disabled):not(.disabled):active,
body.role-emisor .btn-warning:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-warning {
    background-color: var(--brand-warning) !important;
    color: var(--brand-white) !important;
    border-color: var(--brand-black) !important;
}

body.role-alumno .btn-secondary,
body.role-emisor .btn-secondary,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-secondary {
    background-color: var(--brand-cyan) !important;
    color: var(--brand-white) !important;
    border-color: var(--brand-black) !important;
}

/* Aviso de contacto bajo la lista de pagos pendientes. */
body.role-alumno .pagos-contact-note {
    margin-top: 24px !important;
    margin-bottom: 24px !important;
    padding: 14px 18px !important;
    border: 3px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
    font-weight: 600 !important;
}
body.role-alumno .pagos-anteriores-title {
    margin-top: 40px !important;
}
body.role-alumno .pagos-contact-note i {
    color: var(--apr-color-orange) !important;
    margin-right: 6px !important;
}
body.role-alumno .pagos-contact-note a {
    color: var(--apr-color-teal) !important;
    font-weight: 800 !important;
    text-decoration: underline !important;
}

/* Grupo de botones de acción (p.ej. Asignaturas: entregas / horario). */
body.role-alumno .asig-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 16px !important;
}

/* Inputs */
body.role-alumno .form-control,
body.role-alumno input[type="text"],
body.role-alumno input[type="email"],
body.role-alumno input[type="password"],
body.role-alumno input[type="date"],
body.role-alumno input[type="datetime-local"],
body.role-alumno input[type="file"],
body.role-alumno select,
body.role-alumno textarea,
body.role-emisor .form-control,
body.role-emisor input[type="text"],
body.role-emisor input[type="email"],
body.role-emisor input[type="password"],
body.role-emisor input[type="date"],
body.role-emisor input[type="datetime-local"],
body.role-emisor input[type="file"],
body.role-emisor select,
body.role-emisor textarea,
body:is(.role-profesor, .role-director, .role-administrativo) .form-control,
body:is(.role-profesor, .role-director, .role-administrativo) input[type="text"],
body:is(.role-profesor, .role-director, .role-administrativo) input[type="email"],
body:is(.role-profesor, .role-director, .role-administrativo) input[type="password"],
body:is(.role-profesor, .role-director, .role-administrativo) input[type="date"],
body:is(.role-profesor, .role-director, .role-administrativo) input[type="datetime-local"],
body:is(.role-profesor, .role-director, .role-administrativo) input[type="file"],
body:is(.role-profesor, .role-director, .role-administrativo) select,
body:is(.role-profesor, .role-director, .role-administrativo) textarea {
    border: 3px solid var(--brand-black) !important;
    border-radius: 0 !important;
    padding: 10px 14px !important;
    background: var(--brand-white) !important;
    font-family: 'Inter', sans-serif !important;
    box-shadow: none !important;
    color: var(--brand-black) !important;
}

body.role-alumno .form-control:focus,
body.role-alumno select:focus,
body.role-alumno textarea:focus,
body.role-emisor .form-control:focus,
body.role-emisor select:focus,
body.role-emisor textarea:focus,
body:is(.role-profesor, .role-director, .role-administrativo) .form-control:focus,
body:is(.role-profesor, .role-director, .role-administrativo) select:focus,
body:is(.role-profesor, .role-director, .role-administrativo) textarea:focus {
    outline: none !important;
    box-shadow: 4px 4px 0px 0px var(--brand-cyan) !important;
    border-color: var(--brand-cyan) !important;
}

/* Listas de selección múltiple (géneros/idiomas de Biblioteca, etc.):
   filas más altas para que el dedo acierte en móvil. */
body.role-alumno select[multiple] option,
body:is(.role-profesor, .role-director, .role-administrativo) select[multiple] option {
    padding: 8px 10px !important;
}
@media (max-width: 767px) {
    body.role-alumno select[multiple],
    body:is(.role-profesor, .role-director, .role-administrativo) select[multiple] {
        min-height: 150px !important;
        font-size: 1rem !important;
    }
    body.role-alumno select[multiple] option,
    body:is(.role-profesor, .role-director, .role-administrativo) select[multiple] option {
        padding: 12px 10px !important;
    }
}

/* Desplegable (<details>) para filtros de selección múltiple: colapsado
   por defecto, no ocupa pantalla hasta que el usuario lo abre. */
body.role-alumno .apr-select-collapse,
body:is(.role-profesor, .role-director, .role-administrativo) .apr-select-collapse {
    width: 100%;
    border: 3px solid var(--brand-black);
    background: var(--brand-white);
}
body.role-alumno .apr-select-collapse summary,
body:is(.role-profesor, .role-director, .role-administrativo) .apr-select-collapse summary {
    list-style: none;
    cursor: pointer;
    padding: 10px 14px;
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    color: var(--brand-black);
    background: var(--brand-white);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
body.role-alumno .apr-select-collapse summary::-webkit-details-marker,
body:is(.role-profesor, .role-director, .role-administrativo) .apr-select-collapse summary::-webkit-details-marker {
    display: none;
}
body.role-alumno .apr-select-collapse summary::after,
body:is(.role-profesor, .role-director, .role-administrativo) .apr-select-collapse summary::after {
    content: '\25BE';
    margin-left: 8px;
    font-size: 0.9em;
}
body.role-alumno .apr-select-collapse[open] summary,
body:is(.role-profesor, .role-director, .role-administrativo) .apr-select-collapse[open] summary {
    border-bottom: 3px solid var(--brand-black);
}
body.role-alumno .apr-select-collapse select[multiple],
body:is(.role-profesor, .role-director, .role-administrativo) .apr-select-collapse select[multiple] {
    display: block !important;
    width: 100% !important;
    border: none !important;
    border-radius: 0 !important;
}

/* Tables */
body.role-alumno .table,
body.role-emisor .table,
body:is(.role-profesor, .role-director, .role-administrativo) .table {
    border: 3px solid var(--brand-black) !important;
    background-color: var(--brand-white) !important;
}

body.role-alumno .table thead th,
body.role-emisor .table thead th,
body:is(.role-profesor, .role-director, .role-administrativo) .table thead th {
    background-color: var(--brand-black) !important;
    color: var(--brand-white) !important;
    border-bottom: 3px solid var(--brand-black) !important;
    font-weight: 800 !important;
}

body.role-alumno .table td,
body.role-alumno .table th,
body.role-emisor .table td,
body.role-emisor .table th,
body:is(.role-profesor, .role-director, .role-administrativo) .table td,
body:is(.role-profesor, .role-director, .role-administrativo) .table th {
    border: 2px solid var(--brand-black) !important;
    color: var(--brand-black) !important;
}

body.role-alumno .table-striped tbody tr:nth-of-type(odd),
body.role-emisor .table-striped tbody tr:nth-of-type(odd),
body:is(.role-profesor, .role-director, .role-administrativo) .table-striped tbody tr:nth-of-type(odd) {
    background-color: var(--brand-white) !important;
}

body.role-alumno .table-striped tbody tr:nth-of-type(even),
body.role-emisor .table-striped tbody tr:nth-of-type(even),
body:is(.role-profesor, .role-director, .role-administrativo) .table-striped tbody tr:nth-of-type(even) {
    background-color: var(--brand-bg) !important;
}

/* Headers */
body.role-alumno .headTitle,
body.role-emisor .headTitle,
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle {
    border-bottom: 3px solid var(--brand-black) !important;
    margin-bottom: 16px !important;
    padding-bottom: 8px !important;
}

body.role-alumno .sectitle,
body.role-emisor .sectitle,
body:is(.role-profesor, .role-director, .role-administrativo) .sectitle {
    font-weight: 900 !important;
    font-size: 1.5rem !important;
    color: var(--brand-black) !important;
}

body.role-alumno h1, body.role-alumno h2,
body.role-alumno h3, body.role-alumno h4,
body.role-alumno h5, body.role-alumno h6,
body.role-emisor h1, body.role-emisor h2,
body.role-emisor h3, body.role-emisor h4,
body.role-emisor h5, body.role-emisor h6,
body:is(.role-profesor, .role-director, .role-administrativo) h1,
body:is(.role-profesor, .role-director, .role-administrativo) h2,
body:is(.role-profesor, .role-director, .role-administrativo) h3,
body:is(.role-profesor, .role-director, .role-administrativo) h4,
body:is(.role-profesor, .role-director, .role-administrativo) h5,
body:is(.role-profesor, .role-director, .role-administrativo) h6 {
    font-family: 'Inter', sans-serif !important;
    font-weight: 900 !important;
    color: var(--brand-black) !important;
}

body.role-alumno a,
body.role-emisor a,
body:is(.role-profesor, .role-director, .role-administrativo) a {
    color: var(--brand-cyan) !important;
    font-weight: 700 !important;
    text-decoration: underline !important;
}

body.role-alumno a:hover,
body.role-emisor a:hover,
body:is(.role-profesor, .role-director, .role-administrativo) a:hover {
    color: var(--brand-black) !important;
}

/* Badges and Stickers */
body.role-alumno .badge,
body.role-emisor .badge,
body:is(.role-profesor, .role-director, .role-administrativo) .badge {
    border: 2px solid var(--brand-black) !important;
    border-radius: 0 !important;
    font-weight: 800 !important;
    padding: 4px 8px !important;
    text-transform: uppercase !important;
}

body.role-alumno .neo-sticker,
body:is(.role-profesor, .role-director, .role-administrativo) .neo-sticker {
    display: inline-block !important;
    padding: 3px 8px !important;
    border: 2px solid var(--brand-black) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.72rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
    border-radius: 0 !important;
}

/* Speech Bubble Mascot */
body.role-alumno .neo-speech-bubble-container {
    position: relative !important;
    margin-bottom: 24px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
}

body.role-alumno .neo-speech-bubble {
    position: relative !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    box-shadow: 4px 4px 0px 0px var(--brand-black) !important;
    padding: 16px 20px !important;
    border-radius: 4px !important;
    font-weight: 700 !important;
    font-size: 0.95rem !important;
    line-height: 1.4 !important;
    color: var(--brand-black) !important;
    max-width: 320px !important;
}

/* Arrow indicator on the right of speech bubble pointing left/down */
body.role-alumno .neo-speech-bubble::after {
    content: '' !important;
    position: absolute !important;
    bottom: -15px !important;
    left: 40px !important;
    border-width: 15px 15px 0 !important;
    border-style: solid !important;
    border-color: var(--brand-black) transparent !important;
    display: block !important;
    width: 0 !important;
}

body.role-alumno .neo-speech-bubble::before {
    content: '' !important;
    position: absolute !important;
    bottom: -11px !important;
    left: 41px !important;
    border-width: 14px 14px 0 !important;
    border-style: solid !important;
    border-color: var(--brand-white) transparent !important;
    display: block !important;
    width: 0 !important;
    z-index: 1 !important;
}

/* Stats Box */
body.role-alumno .stat-box,
body:is(.role-profesor, .role-director, .role-administrativo) .stat-box {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    box-shadow: 4px 4px 0px 0px var(--brand-yellow) !important;
    padding: 12px 16px !important;
    font-weight: 800 !important;
    text-align: center !important;
    font-family: 'Inter', sans-serif !important;
}

/* Modals */
body.role-alumno .modal-content,
body.role-emisor .modal-content,
body:is(.role-profesor, .role-director, .role-administrativo) .modal-content {
    border: 3px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: 6px 6px 0px 0px var(--brand-black) !important;
}

body.role-alumno .modal-header,
body.role-emisor .modal-header,
body:is(.role-profesor, .role-director, .role-administrativo) .modal-header {
    background-color: var(--brand-yellow) !important;
    border-bottom: 3px solid var(--brand-black) !important;
}

/* Reproductor de vídeo dentro del modal: siempre a ancho completo y
   sin recortar los controles, tanto en escritorio como en móvil. */
body.role-alumno #modalBodyVideoContainer {
    max-height: 75vh !important;
    overflow-y: auto !important;
}
/* El reproductor de Google Drive tiene un ancho mínimo y en móvil sus
   controles se salen por la derecha. Se renderiza a 640px lógicos dentro
   de este contenedor y se reescala con transform para que quepa entero. */
body.role-alumno .video-scale-wrap {
    position: relative !important;
    width: 100% !important;
    overflow: hidden !important;
}
body.role-alumno .video-scale-wrap > iframe,
body.role-alumno .video-scale-wrap > video {
    display: block !important;
    border: 0 !important;
    max-width: none !important;
}
/* Botón "Saltar intro" sobre el vídeo de presentación, estilo Netflix */
body.role-alumno .btn-skip-intro {
    position: absolute !important;
    bottom: 16px !important;
    right: 16px !important;
    z-index: 5 !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius-pill) !important;
    padding: 8px 18px !important;
    font-weight: 800 !important;
    font-size: 0.85rem !important;
    box-shadow: var(--apr-shadow) !important;
    cursor: pointer !important;
    transition: all 0.1s ease !important;
}
body.role-alumno .btn-skip-intro:hover {
    background: var(--brand-yellow) !important;
    box-shadow: var(--apr-shadow-hover) !important;
    transform: translate(-2px, -2px) !important;
}
body.role-alumno .btn-skip-intro:active {
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
    transform: translate(2px, 2px) !important;
}
/* Tapa el botón de "abrir en ventana nueva" del reproductor de Drive */
body.role-alumno .video-popout-cover {
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
    width: 15% !important;
    height: 22% !important;
    opacity: 0 !important;
}

body.role-alumno .modal-footer,
body.role-emisor .modal-footer {
    background-color: var(--brand-bg) !important;
    border-top: 3px solid var(--brand-black) !important;
}

/* Tarjetas de notificación push (modal de avisos del alumno) */
body.role-alumno .notif-card {
    background: var(--apr-color-teal-light) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    padding: 16px 18px !important;
    margin-bottom: 16px !important;
}
body.role-alumno .notif-card:last-child {
    margin-bottom: 0 !important;
}
body.role-alumno .notif-card-header {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin-bottom: 8px !important;
}
body.role-alumno .notif-card-header i {
    color: var(--brand-cyan) !important;
    font-size: 1rem !important;
}
body.role-alumno .notif-card-title {
    margin: 0 !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.3px !important;
    color: var(--brand-black) !important;
}
body.role-alumno .notif-card-body {
    color: var(--brand-black) !important;
    font-weight: 500 !important;
    line-height: 1.5 !important;
}
body.role-alumno .notif-card-body p {
    margin: 0 0 8px 0 !important;
}
body.role-alumno .notif-card-body p:last-child {
    margin-bottom: 0 !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   STUDENT VIEW STYLES
   ────────────────────────────────────────────────────────────────────────── */

/* ── Ocultar cabecera universal para alumnos ────────── */
body.role-alumno #topmenu {
    display: none !important;
}
body.role-alumno .wrap-body {
    padding-top: 0 !important;
    margin-top: 0 !important;
    /* De borde a borde, como dirección y profesor: sin márgenes a los lados */
    padding-left: 0 !important;
    padding-right: 0 !important;
}
body.role-alumno .almhead {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/* ── Quick Stats bar ─────────────────────────────── */
body.role-alumno .almenu-quick-stats {
    background: #0f0f0f !important;
    border-bottom: 3px solid var(--brand-yellow) !important;
    padding: 0 !important;
    width: 100% !important;
}
body.role-alumno .almenu-quick-stats .container {
    display: flex !important;
    align-items: stretch !important;
    gap: 0 !important;
    padding: 0 !important;
    max-width: 1200px !important;
    flex-wrap: wrap !important;
    overflow-x: hidden !important;
}
body.role-alumno .qs-item {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 11px 22px !important;
    font-size: 0.78rem !important;
    font-weight: 700 !important;
    color: rgba(255,255,255,0.75) !important;
    border-right: 1px solid rgba(255,255,255,0.1) !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    position: relative !important;
    white-space: nowrap !important;
}
body.role-alumno .qs-item::before {
    content: '' !important;
    display: block !important;
    width: 6px !important;
    height: 6px !important;
    background: var(--brand-yellow) !important;
    border-radius: 50% !important;
    flex-shrink: 0 !important;
}
body.role-alumno .qs-item i {
    color: var(--brand-yellow) !important;
    font-size: 0.85rem !important;
    margin-right: 2px !important;
}
body.role-alumno .qs-alert {
    color: #ff6b6b !important;
    font-weight: 900 !important;
}
body.role-alumno .qs-alert::before {
    background: #ff6b6b !important;
    animation: qsPulseDot 1.3s ease-in-out infinite !important;
}
body.role-alumno .qs-payment-alert,
body.role-alumno .qs-notif-alert {
    cursor: pointer !important;
    text-decoration: none !important;
    animation: qsPulseText 1.3s ease-in-out infinite !important;
}
body.role-alumno .qs-payment-alert:hover,
body.role-alumno .qs-notif-alert:hover {
    background: rgba(255,107,107,0.15) !important;
}
@keyframes qsPulseText {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.55; }
}
@keyframes qsPulseDot {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.6); opacity: 0.6; }
}
body.role-alumno .qs-ok {
    color: #69db7c !important;
    font-weight: 900 !important;
}
body.role-alumno .qs-ok::before { background: #69db7c !important; }


/* ── Sidebar + main layout ──────────────────────────── */
body.role-alumno .dashboard-wrapper,
body:is(.role-profesor, .role-director, .role-administrativo) .dashboard-wrapper {
    padding: 0 0 80px 0 !important;
    background: var(--brand-bg) !important;
}
body.role-alumno .dashboard-wrapper > .container,
body:is(.role-profesor, .role-director, .role-administrativo) .dashboard-wrapper > .container {
    max-width: none !important;
    padding: 0 !important;
    width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    float: none !important;
}
body.role-alumno .dash-layout,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-layout {
    display: flex !important;
    align-items: flex-start !important;
    min-height: 70vh !important;
    padding: 0 !important;
    gap: 0 !important;
    box-sizing: border-box !important;
}

/* ── Sidebar navigation ─────────────────────────────── */
body.role-alumno .dash-sidebar,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar {
    width: 230px !important;
    min-width: 230px !important;
    background: #0f0f0f !important;
    display: flex !important;
    flex-direction: column !important;
    padding: 0 !important;
    min-height: calc(100vh - 200px) !important;
    position: sticky !important;
    top: 0 !important;
    align-self: flex-start !important;
    border-right: 3px solid var(--brand-yellow) !important;
}
/* Sidebar user header */
body.role-alumno .sidebar-user-header,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-user-header {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 20px 16px 16px !important;
    border-bottom: 2px solid rgba(255,216,36,0.25) !important;
    background: rgba(255,216,36,0.07) !important;
}
body.role-alumno .sidebar-avatar,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-avatar {
    width: 42px !important;
    height: 42px !important;
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    font-weight: 900 !important;
    font-size: 1rem !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 2px solid var(--brand-black) !important;
    flex-shrink: 0 !important;
    letter-spacing: -1px !important;
    font-family: 'Inter', sans-serif !important;
}
body.role-alumno .sidebar-user-info,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-user-info {
    flex: 1 !important;
    min-width: 0 !important;
}
body.role-alumno .sidebar-user-name,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-user-name {
    font-weight: 800 !important;
    font-size: 0.85rem !important;
    color: var(--brand-white) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}
body.role-alumno .sidebar-user-role,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-user-role {
    font-size: 0.68rem !important;
    color: var(--brand-yellow) !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.8px !important;
    margin-top: 2px !important;
}
body.role-alumno .sidebar-user-role i,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-user-role i {
    font-size: 0.65rem !important;
}
/* Section labels */
body.role-alumno .sidebar-section-label,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-section-label {
    font-size: 0.6rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 1.5px !important;
    color: rgba(255,216,36,0.5) !important;
    padding: 14px 18px 4px !important;
    pointer-events: none !important;
}
/* Nav buttons */
body.role-alumno .dash-sidebar .nav-panel-btn,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 11px 18px !important;
    color: rgba(255,255,255,0.6) !important;
    text-decoration: none !important;
    font-size: 0.83rem !important;
    font-weight: 600 !important;
    text-transform: none !important;
    letter-spacing: 0.2px !important;
    border-left: 3px solid transparent !important;
    transition: all 0.15s ease !important;
    border-radius: 0 !important;
    background: none !important;
    box-shadow: none !important;
    margin: 1px 0 !important;
}
body.role-alumno .dash-sidebar .nav-panel-btn i,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn i {
    font-size: 0.95rem !important;
    width: 20px !important;
    text-align: center !important;
    color: rgba(255,255,255,0.35) !important;
    transition: all 0.15s ease !important;
    flex-shrink: 0 !important;
}
body.role-alumno .dash-sidebar .nav-panel-btn:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn:hover {
    color: var(--brand-white) !important;
    background: rgba(255,255,255,0.05) !important;
    border-left-color: rgba(255,216,36,0.5) !important;
    transform: none !important;
    box-shadow: none !important;
}
body.role-alumno .dash-sidebar .nav-panel-btn:hover i,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn:hover i {
    color: var(--brand-yellow) !important;
}
body.role-alumno .dash-sidebar .nav-panel-btn.active,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn.active {
    color: var(--brand-black) !important;
    background: var(--brand-yellow) !important;
    border-left: 3px solid var(--brand-black) !important;
    font-weight: 800 !important;
    box-shadow: none !important;
}
body.role-alumno .dash-sidebar .nav-panel-btn.active i,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn.active i {
    color: var(--brand-black) !important;
}
/* El resaltado del ítem activo usa el mismo color de acento que la tarjeta de esa sección */
body.role-alumno .dash-sidebar .nav-panel-btn[data-accent="blue"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn[data-accent="blue"].active { background: var(--apr-color-blue) !important; }
body.role-alumno .dash-sidebar .nav-panel-btn[data-accent="orange"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn[data-accent="orange"].active { background: var(--apr-color-orange) !important; }
body.role-alumno .dash-sidebar .nav-panel-btn[data-accent="teal"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn[data-accent="teal"].active { background: var(--apr-color-teal) !important; }
body.role-alumno .dash-sidebar .nav-panel-btn[data-accent="pink"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn[data-accent="pink"].active { background: var(--apr-color-pink) !important; }
/* Sidebar footer */
body.role-alumno .sidebar-footer,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-footer {
    margin-top: auto !important;
    padding: 14px 18px !important;
    font-size: 0.65rem !important;
    color: rgba(255,255,255,0.2) !important;
    border-top: 1px solid rgba(255,255,255,0.07) !important;
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
}
body.role-alumno .sidebar-footer i,
body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-footer i {
    color: rgba(255,216,36,0.3) !important;
    font-size: 0.7rem !important;
}


/* ── Main content area ──────────────────────────────── */
body.role-alumno .dash-main,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-main {
    flex: 1 !important;
    min-width: 0 !important;
    padding: 28px !important;
    box-sizing: border-box !important;
}
body.role-alumno .dash-breadcrumb,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-breadcrumb {
    font-size: 0.7rem !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
    letter-spacing: 1.5px !important;
    color: var(--brand-cyan) !important;
    margin-bottom: 20px !important;
    border-bottom: 2px solid var(--brand-yellow) !important;
    padding-bottom: 10px !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}
body.role-alumno .dash-breadcrumb::before,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-breadcrumb::before {
    content: '›' !important;
    font-size: 1.2rem !important;
    color: var(--brand-yellow) !important;
    font-weight: 900 !important;
    line-height: 1 !important;
}

/* ── Panel visibility & animation ──────────────────── */
body.role-alumno .dashboard-panel {
    opacity: 0;
    transform: translateY(6px);
    transition: opacity 0.2s ease, transform 0.2s ease;
    margin-bottom: 0 !important;
}
body.role-alumno .dashboard-panel.panel-visible {
    opacity: 1;
    transform: translateY(0);
}

/* ── Mobile nav dropdown (sustituye al <select> nativo) ──────── */
body.role-alumno .dash-mobile-nav,
body:is(.role-profesor, .role-director, .role-administrativo) .dash-mobile-nav {
    background: var(--brand-yellow) !important;
    border-bottom: 3px solid var(--brand-black) !important;
}
body.role-alumno .mobile-nav-toggle,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-toggle {
    width: 100% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 12px 16px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    font-size: 0.9rem !important;
    color: var(--brand-black) !important;
    cursor: pointer !important;
}
body.role-alumno .mobile-nav-toggle i:first-child,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-toggle i:first-child {
    margin-right: 8px !important;
}
body.role-alumno .mobile-nav-chevron,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-chevron {
    transition: transform 0.15s ease !important;
}
body.role-alumno .mobile-nav-chevron.is-open,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-chevron.is-open {
    transform: rotate(180deg) !important;
}
body.role-alumno .mobile-nav-list,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-list {
    margin-top: 10px !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    overflow: hidden !important;
}
body.role-alumno .mobile-nav-group-label,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-group-label {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.68rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 1px !important;
    color: rgba(0,0,0,0.45) !important;
    padding: 10px 16px 4px !important;
}
body.role-alumno .mobile-nav-item,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-item {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 12px 16px !important;
    font-weight: 700 !important;
    color: var(--brand-black) !important;
    border-top: 2px solid rgba(0,0,0,0.06) !important;
    text-decoration: none !important;
}
body.role-alumno .mobile-nav-item.active,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-item.active {
    background: var(--brand-yellow) !important;
    font-weight: 800 !important;
}
body.role-alumno .mobile-nav-item[data-accent="blue"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-item[data-accent="blue"].active { background: var(--apr-color-blue) !important; }
body.role-alumno .mobile-nav-item[data-accent="orange"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-item[data-accent="orange"].active { background: var(--apr-color-orange) !important; }
body.role-alumno .mobile-nav-item[data-accent="teal"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-item[data-accent="teal"].active { background: var(--apr-color-teal) !important; }
body.role-alumno .mobile-nav-item[data-accent="pink"].active,
body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-item[data-accent="pink"].active { background: var(--apr-color-pink) !important; }

body.role-alumno .almhead .almnombre-first,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre-first {
    display: none !important;
}
body.role-alumno .almhead .almnombre-bang,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre-bang {
    margin-right: 0 !important;
    margin-left: 1px !important;
}

/* ── Responsive: collapse sidebar and menus on mobile ──────── */
@media (max-width: 767px) {
    body.role-alumno .dash-layout,
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-layout {
        flex-direction: column !important;
        align-items: stretch !important;
    }
    
    /* Fix horizontal scroll on quick stats menu */
    body.role-alumno .almenu-quick-stats .container {
        flex-wrap: wrap !important;
        overflow-x: hidden !important;
    }
    body.role-alumno .almenu-quick-stats .qs-item {
        flex: 1 1 50% !important;
        justify-content: center !important;
        border-right: none !important;
        border-bottom: 1px solid rgba(255,255,255,0.1) !important;
    }
    
    /* Hide main sidebar menu on mobile in favor of select dropdown */
    body.role-alumno .dash-sidebar,
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar {
        display: none !important;
    }
    body.role-alumno .sidebar-user-header,
    body.role-alumno .sidebar-section-label,
    body.role-alumno .sidebar-footer,
    body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-user-header,
    body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-section-label,
    body:is(.role-profesor, .role-director, .role-administrativo) .sidebar-footer { display: none !important; }
    body.role-alumno .dash-sidebar .nav-panel-btn,
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn {
        width: 100% !important;
        text-align: center !important;
        padding: 12px !important;
        border: 2px solid rgba(255,255,255,0.1) !important;
        border-radius: 6px !important;
        justify-content: center !important;
    }
    body.role-alumno .dash-sidebar .nav-panel-btn.active,
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-sidebar .nav-panel-btn.active {
        border: 2px solid var(--brand-black) !important;
        background: var(--brand-yellow) !important;
        color: var(--brand-black) !important;
    }
    body.role-alumno .dash-main,
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-main { padding: 20px !important; box-sizing: border-box !important; }
    body.role-alumno .dash-layout,
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-layout { padding: 0 !important; gap: 0 !important; }
    body.role-alumno .dash-mobile-nav,
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-mobile-nav { padding: 12px 20px !important; box-sizing: border-box !important; }

    /* Cabecera en móvil: solo el primer nombre (el completo no cabe si es compuesto) */
    body.role-alumno .almhead .almnombre-full,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre-full {
        display: none !important;
    }
    body.role-alumno .almhead .almnombre-first,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre-first {
        display: inline !important;
    }
    body.role-alumno .almhead .apr-accent-text,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .apr-accent-text {
        margin-right: 0 !important;
    }

    /* Notificaciones ya resueltas por la campana del header en móvil */
    body.role-alumno .qs-notif-desktop-only {
        display: none !important;
    }
}


/* ── Header Override ────────────────────────────────── */
body.role-alumno .almhead,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead {
    background-image: none !important;
    background-color: var(--brand-yellow) !important;
    border-bottom: 4px solid var(--brand-black) !important;
    padding: 14px 28px !important;
    margin: 0 !important;
    width: 100% !important;
    position: relative !important;
    z-index: 100 !important;
}
body.role-alumno .almhead .container,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead .container {
    max-width: 1200px !important;
    padding: 0 28px !important;
    box-sizing: border-box !important;
    display: grid !important;
    grid-template-columns: auto 1fr auto !important;
    align-items: center !important;
    gap: 20px !important;
    flex-wrap: nowrap !important;
}
/* Logo column */
body.role-alumno .almhead-left,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead-left {
    display: flex !important;
    align-items: center !important;
}
body.role-alumno .almhead-logo-link,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead-logo-link {
    display: flex !important;
    align-items: center !important;
    text-decoration: none !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 6px 14px !important;
}
body.role-alumno .almhead-logo,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead-logo {
    height: 60px !important;
    max-width: 200px !important;
    object-fit: contain !important;
    display: block !important;
}
body.role-alumno .almhead-logo-text,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead-logo-text {
    font-size: 1.2rem !important;
    font-weight: 900 !important;
    color: var(--brand-black) !important;
    text-transform: uppercase !important;
    letter-spacing: -0.5px !important;
}
/* Center info column */
body.role-alumno .almhead-center,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead-center {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    text-align: center !important;
    min-width: 0 !important;
}
body.role-alumno .almhead .almpre,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almpre {
    font-family: 'JetBrains Mono', monospace !important;
    text-transform: uppercase !important;
    font-size: 0.62rem !important;
    font-weight: 800 !important;
    color: var(--brand-black) !important;
    background: rgba(0,0,0,0.1) !important;
    border: 1.5px solid rgba(0,0,0,0.2) !important;
    padding: 1px 7px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 5px !important;
    width: fit-content !important;
    letter-spacing: 1px !important;
    margin: 0 auto !important;
}
/* Campana de notificaciones (solo móvil): sustituye la pastilla "Alumno"
   por un botón con badge que despliega la lista de avisos pendientes. */
body.role-alumno .alm-notif-wrapper,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-notif-wrapper {
    position: relative !important;
    display: none !important;
    width: fit-content !important;
    margin: 0 auto !important;
}
body.role-alumno .almpre-notif,
body:is(.role-profesor, .role-director, .role-administrativo) .almpre-notif {
    background: #ff6b6b !important;
    border: 1.5px solid var(--brand-black) !important;
    color: var(--brand-white) !important;
    font-size: 0.75rem !important;
    padding: 5px 12px !important;
    cursor: pointer !important;
    animation: qsPulseScale 1.1s ease-in-out infinite !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
}
body.role-alumno .almpre-notif i,
body:is(.role-profesor, .role-director, .role-administrativo) .almpre-notif i {
    font-size: 0.85rem !important;
}
@keyframes qsPulseScale {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.08); }
}
body.role-alumno .alm-notif-badge,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-notif-badge {
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
    border-radius: 999px !important;
    padding: 1px 6px !important;
    font-size: 0.68rem !important;
    font-weight: 900 !important;
    line-height: 1.4 !important;
    margin-left: 2px !important;
}
body.role-alumno .alm-notif-dropdown,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-notif-dropdown {
    left: 50% !important;
    transform: translateX(-50%) !important;
    top: calc(100% + 8px) !important;
    min-width: 220px !important;
}
body.role-alumno .alm-notif-item,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-notif-item {
    white-space: normal !important;
    text-align: left !important;
}
@media (max-width: 767px) {
    body.role-alumno .almhead .almpre-desktop-only,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almpre-desktop-only {
        display: none !important;
    }
    body.role-alumno .alm-notif-wrapper,
    body:is(.role-profesor, .role-director, .role-administrativo) .alm-notif-wrapper {
        display: inline-flex !important;
    }
}
body.role-alumno .apr-accent-text,
body:is(.role-profesor, .role-director, .role-administrativo) .apr-accent-text {
    font-family: var(--apr-font-handwritten) !important;
    font-weight: 700 !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    color: var(--apr-color-teal) !important;
    font-size: 1.3em !important;
    margin-right: 4px !important;
}
body.role-alumno .almhead .almnombre,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre {
    font-size: 1.45rem !important;
    font-weight: 900 !important;
    color: var(--brand-black) !important;
    line-height: 1.05 !important;
    text-transform: uppercase !important;
    letter-spacing: -0.8px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    margin: 0 !important;
}
body.role-alumno .almhead .almhead-email,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almhead-email {
    font-size: 0.75rem !important;
    font-weight: 500 !important;
    color: rgba(0,0,0,0.5) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
}
@media (max-width: 767px) {
    body.role-alumno .almhead .almhead-email,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almhead-email {
        display: none !important;
    }
    /* Cabecera en móvil: logo pegado a la izquierda, menú usuario pegado a la derecha,
       saludo centrado entre ambos, todo en una sola fila. */
    body.role-alumno .almhead,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead {
        padding: 10px 12px !important;
    }
    body.role-alumno .almhead .container,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .container {
        display: grid !important;
        grid-template-columns: auto 1fr auto !important;
        padding: 0 !important;
        gap: 8px !important;
    }
    body.role-alumno .almhead-left,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead-left {
        justify-self: start !important;
    }
    body.role-alumno .almhead-right,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead-right {
        justify-self: end !important;
    }
    body.role-alumno .almhead-center,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead-center {
        min-width: 0 !important;
    }
    body.role-alumno .almhead-logo-link,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead-logo-link {
        padding: 3px 8px !important;
    }
    body.role-alumno .almhead-logo,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead-logo {
        height: 58px !important;
        max-width: 40vw !important;
    }
    body.role-alumno .almhead .almpre,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almpre {
        font-size: 0.52rem !important;
        padding: 1px 5px !important;
    }
    body.role-alumno .almhead .almnombre,
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre {
        font-size: 1rem !important;
    }
    body.role-alumno .alm-avatar,
    body:is(.role-profesor, .role-director, .role-administrativo) .alm-avatar {
        width: 58px !important;
        height: 58px !important;
    }
    /* Tablas anchas (asistencia, calificaciones...): scroll horizontal dentro de la tarjeta
       en vez de desbordar el borde de la tarjeta en pantallas estrechas. */
    body.role-alumno .editForm table,
    body:is(.role-profesor, .role-director, .role-administrativo) .editForm table {
        display: block !important;
        width: 100% !important;
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch !important;
        white-space: nowrap !important;
    }
}
/* Right: user dropdown */
body.role-alumno .almhead-right,
body:is(.role-profesor, .role-director, .role-administrativo) .almhead-right {
    display: flex !important;
    align-items: center !important;
    flex-shrink: 0 !important;
}
body.role-alumno .alm-usermenu,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-usermenu {
    position: relative !important;
}
body.role-alumno .alm-avatar,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-avatar {
    width: 50px !important;
    height: 50px !important;
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
    font-weight: 900 !important;
    font-size: 1.1rem !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 3px solid var(--brand-black) !important;
    letter-spacing: -1px !important;
    font-family: 'Inter', sans-serif !important;
    box-shadow: 3px 3px 0 rgba(0,0,0,0.3) !important;
    cursor: pointer !important;
    transition: transform 0.12s ease, box-shadow 0.12s ease !important;
    border-radius: 0 !important;
}
body.role-alumno .alm-avatar:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-avatar:hover {
    transform: translate(-1px,-1px) !important;
    box-shadow: 4px 4px 0 rgba(0,0,0,0.4) !important;
}
/* Dropdown panel */
body.role-alumno .alm-dropdown,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown {
    position: absolute !important;
    right: 0 !important;
    top: calc(100% + 8px) !important;
    width: 240px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    box-shadow: 4px 4px 0 var(--brand-black) !important;
    z-index: 9999 !important;
    display: none !important;
    flex-direction: column !important;
}
body.role-alumno .alm-dropdown.open,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown.open {
    display: flex !important;
}
body.role-alumno .alm-dropdown-header,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-header {
    padding: 12px 16px !important;
    border-bottom: 2px solid var(--brand-black) !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
    background: #f9f9f9 !important;
}
body.role-alumno .alm-dropdown-header strong,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-header strong {
    font-size: 0.85rem !important;
    font-weight: 800 !important;
    color: var(--brand-black) !important;
}
body.role-alumno .alm-dropdown-header span,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-header span {
    font-size: 0.72rem !important;
    color: rgba(0,0,0,0.5) !important;
}
body.role-alumno .alm-dropdown-item,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-item {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 12px 16px !important;
    font-size: 0.85rem !important;
    font-weight: 600 !important;
    color: var(--brand-black) !important;
    text-decoration: none !important;
    border-bottom: 1px solid #eee !important;
    transition: background 0.1s !important;
}
body.role-alumno .alm-dropdown-item:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-item:hover {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
}
body.role-alumno .alm-dropdown-item:last-child,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-item:last-child {
    border-bottom: none !important;
}
body.role-alumno .alm-dropdown-admin i,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-admin i { color: #007b84 !important; }
body.role-alumno .alm-dropdown-logout i,
body:is(.role-profesor, .role-director, .role-administrativo) .alm-dropdown-logout i { color: #e03131 !important; }

/* ── Removed old almmenu styles ─────────────────────── */
body.role-alumno .almmenu { display: none !important; }

/* ── Header vista Emisor (pizarras de TV) ──────────────
   Reutiliza el mismo lenguaje visual del header de alumno (.almhead)
   con una estructura simplificada: logo, saludo y botón de salir. */
body.role-emisor .almhead {
    background-image: none !important;
    background-color: var(--brand-yellow) !important;
    border-bottom: 4px solid var(--brand-black) !important;
    padding: 14px 28px !important;
    margin: 0 !important;
    width: 100% !important;
    position: relative !important;
    z-index: 100 !important;
}
body.role-emisor .almhead .container {
    max-width: 1200px !important;
    padding: 0 28px !important;
    box-sizing: border-box !important;
    display: grid !important;
    grid-template-columns: auto 1fr auto !important;
    align-items: center !important;
    gap: 20px !important;
}
body.role-emisor .almhead-left {
    display: flex !important;
    align-items: center !important;
}
body.role-emisor .almhead-logo-link {
    display: flex !important;
    align-items: center !important;
    text-decoration: none !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 6px 14px !important;
}
body.role-emisor .almhead-logo {
    height: 60px !important;
    max-width: 200px !important;
    object-fit: contain !important;
    display: block !important;
}
body.role-emisor .almhead-logo-text {
    font-size: 1.2rem !important;
    font-weight: 900 !important;
    color: var(--brand-black) !important;
    text-transform: uppercase !important;
    letter-spacing: -0.5px !important;
}
body.role-emisor .almhead-center {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    text-align: center !important;
    min-width: 0 !important;
}
body.role-emisor .almhead .almpre {
    font-family: 'JetBrains Mono', monospace !important;
    text-transform: uppercase !important;
    font-size: 0.62rem !important;
    font-weight: 800 !important;
    color: var(--brand-black) !important;
    background: rgba(0,0,0,0.1) !important;
    border: 1.5px solid rgba(0,0,0,0.2) !important;
    padding: 1px 7px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 5px !important;
    width: fit-content !important;
    letter-spacing: 1px !important;
    margin: 0 auto !important;
}
body.role-emisor .apr-accent-text {
    font-family: var(--apr-font-handwritten) !important;
    font-weight: 700 !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    color: var(--apr-color-teal) !important;
    font-size: 1.3em !important;
    margin-right: 4px !important;
}
body.role-emisor .almhead .almnombre {
    font-size: 1.45rem !important;
    font-weight: 900 !important;
    color: var(--brand-black) !important;
    line-height: 1.05 !important;
    text-transform: uppercase !important;
    letter-spacing: -0.8px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    margin: 0 !important;
}
body.role-emisor .almhead-right {
    display: flex !important;
    align-items: center !important;
    flex-shrink: 0 !important;
}
body.role-emisor .alm-avatar {
    width: 50px !important;
    height: 50px !important;
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
    font-size: 1.1rem !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 3px solid var(--brand-black) !important;
    box-shadow: 3px 3px 0 rgba(0,0,0,0.3) !important;
    cursor: pointer !important;
    transition: transform 0.12s ease, box-shadow 0.12s ease !important;
    border-radius: 0 !important;
    text-decoration: none !important;
}
body.role-emisor .alm-avatar:hover {
    transform: translate(-1px,-1px) !important;
    box-shadow: 4px 4px 0 rgba(0,0,0,0.4) !important;
    color: var(--brand-yellow) !important;
}
@media (max-width: 767px) {
    body.role-emisor .almhead {
        padding: 10px 12px !important;
    }
    body.role-emisor .almhead .container {
        padding: 0 !important;
        gap: 8px !important;
    }
    body.role-emisor .almhead-logo {
        height: 48px !important;
        max-width: 40vw !important;
    }
    body.role-emisor .almhead .almnombre {
        font-size: 1rem !important;
    }
    body.role-emisor .alm-avatar {
        width: 44px !important;
        height: 44px !important;
    }
}


/* ── Panel Containers (editForm) ───────────────────── */
body.role-alumno .editForm {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-left: 5px solid var(--brand-black) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 24px 28px !important;
    margin-bottom: 0 !important;
    border-radius: var(--apr-radius) !important;
}
/* Color accent único para todas las subsecciones (mismo tono en marcos,
   icono de cabecera y botones, sin variar de una sección a otra). */
body.role-alumno .editForm {
    --section-accent: var(--apr-color-yellow);
    --section-accent-light: var(--apr-color-yellow-light);
    border-left-color: var(--section-accent, var(--brand-black)) !important;
}
body.role-alumno .editForm[data-section="warning"],
body.role-alumno #admonition.editForm {
    border-left-color: #f03e3e !important;
    background: #fff5f5 !important;
}
body.role-alumno .editForm > h4 {
    font-size: 1.1rem !important;
    font-weight: 900 !important;
    color: var(--brand-black) !important;
    margin: 0 0 20px 0 !important;
    padding: 0 0 14px 0 !important;
    background: transparent !important;
    border-bottom: 3px solid var(--section-accent, rgba(0,0,0,0.12)) !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
}
body.role-alumno .editForm > h4 i {
    background: var(--section-accent, var(--brand-yellow)) !important;
    color: var(--brand-black) !important;
    width: 28px !important;
    height: 28px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 6px !important;
    font-size: 0.85rem !important;
    flex-shrink: 0 !important;
}

/* Cajas de alerta de Bootstrap dentro de una tarjeta: mismo lenguaje visual que el resto,
   en vez del azul/verde/rojo genérico que choca con el color de acento de la sección. */
body.role-alumno .editForm .alert {
    background: var(--brand-bg) !important;
    color: var(--brand-black) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    font-weight: 700 !important;
    box-shadow: none !important;
}
body.role-alumno .editForm .alert-danger {
    background: #fff0f0 !important;
    border-color: var(--apr-color-orange) !important;
}

/* Read-only Data Boxes */
body.role-alumno .bgInpt {
    background: #F8FAFC !important;
    border: 2px solid var(--brand-black) !important;
    padding: 8px 12px !important;
    font-weight: 700 !important;
    color: var(--brand-black) !important;
    margin-top: 4px !important;
    margin-bottom: 16px !important;
    border-radius: 0 !important;
    font-size: 0.9rem !important;
    word-break: break-all !important;
    overflow-wrap: anywhere !important;
}

/* ── Schedule panel: isolate inline-styled HTML from Bootstrap ──── */
body.role-alumno .schedule-raw-wrapper {
    width: 100% !important;
    overflow-x: auto !important;
    display: block !important;
}
body.role-alumno .schedule-raw-wrapper .col-sm-12,
body.role-alumno .schedule-raw-wrapper [class*="col-"] {
    flex: none !important;
    max-width: none !important;
    padding: 0 !important;
}
body.role-alumno .schedule-raw-wrapper > div {
    overflow: hidden !important;
}
body.role-alumno .schedule-raw-wrapper h2 {
    font-size: 1.2rem !important;
    font-weight: 900 !important;
    text-align: center !important;
    margin: 0 0 4px !important;
    text-transform: uppercase !important;
    border-bottom: none !important;
    padding-bottom: 0 !important;
}
body.role-alumno .schedule-raw-wrapper h4 {
    font-size: 1rem !important;
    font-weight: 700 !important;
    text-align: center !important;
    margin: 0 0 16px !important;
    color: rgba(0,0,0,0.6) !important;
    border-bottom: none !important;
    padding-bottom: 0 !important;
}
/* Day header bars from inline style */
body.role-alumno .schedule-raw-wrapper [style*="background:rgb(212,163,15)"] {
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
    font-weight: 800 !important;
    font-size: 0.8rem !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
}
/* Print button bar */
body.role-alumno .schedule-print-bar {
    margin-top: 20px !important;
    text-align: center !important;
    padding-top: 16px !important;
    border-top: 2px solid #eee !important;
}

/* ── Asignaturas List Layout (replaces standard Bootstrap columns) ──── */
body.role-alumno .horario {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
body.role-alumno .horarioHead > .row,
body.role-alumno .horarioBody > .row {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px;
    align-items: center;
    border: 3px solid var(--brand-black) !important;
    background-color: var(--brand-white) !important;
    box-shadow: 4px 4px 0px var(--brand-black) !important;
    margin: 0 0 16px 0 !important;
    border-radius: 8px !important;
    padding: 16px !important;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
body.role-alumno .horarioBody > .row:hover {
    transform: translate(-2px, -2px) !important;
    box-shadow: 6px 6px 0px var(--brand-black) !important;
}
body.role-alumno .horarioHead {
    display: none !important; /* Hide headers on mobile */
}
body.role-alumno .horarioHead > .row > div,
body.role-alumno .horarioBody > .row > div {
    max-width: none !important;
    width: 100% !important;
    flex: none !important;
    padding: 0 !important;
    text-align: left !important;
    white-space: normal !important;
    overflow: visible !important;
    font-size: 0.9rem !important;
}

/* Desktop Grid for Asignaturas */
@media (min-width: 992px) {
    body.role-alumno .horarioHead {
        display: block !important;
    }
    body.role-alumno .horarioHead > .row,
    body.role-alumno .horarioBody > .row {
        grid-template-columns: 80px 80px 1.5fr 2fr 100px 140px !important;
        padding: 12px 20px !important;
        margin-bottom: 12px !important;
    }
    body.role-alumno .horarioHead > .row {
        background: var(--brand-yellow) !important;
        text-transform: uppercase;
        font-weight: 800;
        margin-bottom: 24px !important;
        box-shadow: 4px 4px 0px var(--brand-black) !important;
    }
    /* Re-center specific columns on desktop if needed */
    body.role-alumno .horarioHead > .row > div:nth-child(1),
    body.role-alumno .horarioBody > .row > div:nth-child(1),
    body.role-alumno .horarioHead > .row > div:nth-child(2),
    body.role-alumno .horarioBody > .row > div:nth-child(2) {
        text-align: center !important;
    }
}

/* Wrapper neutro en escritorio (sus hijos .col-sm-2 siguen siendo
   columnas directas del .row de Bootstrap); en móvil se convierte en el
   contenedor flex que fusiona los iconos de ambas columnas. */
body.role-alumno .icons-group {
    display: contents !important;
}

/* Elements inside the Asignaturas rows */
body.role-alumno .horarioBody .icons,
body.role-alumno .horarioHead .icons {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-wrap: wrap !important;
    gap: 14px !important;
}
body.role-alumno .horarioBody .icons a {
    text-decoration: none !important;
    margin: 0 !important;
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 3px !important;
    min-width: 40px !important;
    padding: 4px !important;
}
body.role-alumno .horarioBody .icons i {
    color: var(--brand-black) !important;
    font-size: 1.5rem !important;
    transition: color 0.15s ease, transform 0.15s ease !important;
}
body.role-alumno .horarioBody .icons a:hover i {
    color: var(--apr-color-teal) !important;
    transform: translateY(-2px) !important;
}
body.role-alumno .icon-btn-label {
    display: none;
    font-size: 0.62rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    color: var(--brand-black);
    white-space: nowrap;
}
@media (max-width: 767px) {
    /* En móvil, las columnas Material/Vídeos/Classroom y Entregas/Encargos
       se fusionan visualmente en un único grupo de iconos centrado: el
       wrapper .icons-group pasa a ser el contenedor flex y cada .icons se
       "aplana" con display:contents para que sus <a> se comporten como
       hijos directos suyos. */
    body.role-alumno .icons-group {
        display: flex !important;
        flex-wrap: wrap !important;
        justify-content: center !important;
        align-items: center !important;
        gap: 20px !important;
    }
    body.role-alumno .icons-group .icons {
        display: contents !important;
    }
    body.role-alumno .horarioBody .icons a {
        min-width: 52px !important;
        min-height: 52px !important;
        padding: 6px !important;
    }
    body.role-alumno .horarioBody .icons i {
        font-size: 1.7rem !important;
    }
    body.role-alumno .icon-btn-label {
        display: block !important;
    }
}
body.role-alumno .horarioDia {
    font-size: 0.85rem !important;
    line-height: 1.4 !important;
    color: var(--brand-black) !important;
}
body.role-alumno .emit {
    background: var(--brand-danger) !important;
    color: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    font-size: 0.72rem !important;
    font-weight: 800 !important;
    padding: 6px 10px !important;
    text-transform: uppercase !important;
    border-radius: 4px !important;
    width: 100% !important;
    transition: all 0.2s ease !important;
}
body.role-alumno .emit:hover {
    transform: translate(-1px, -1px);
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body.role-alumno .on_rec {
    background-color: var(--brand-white) !important;
    border: 1px solid var(--brand-black) !important;
    box-shadow: none !important;
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

/* Tables (Calificaciones & Asistencia) */
body.role-alumno .evaluation-table {
    border: 3px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
    margin-bottom: 20px !important;
}
body.role-alumno .evaluation-table th {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    padding: 10px !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
    font-size: 0.85rem !important;
}
body.role-alumno .evaluation-table td {
    border: 2px solid var(--brand-black) !important;
    padding: 10px !important;
    color: var(--brand-black) !important;
    font-weight: 600 !important;
}
body.role-alumno .evaluation-table tr:nth-child(even) {
    background: #FDFDF7 !important;
}
body.role-alumno .evaluation-table .final-text {
    background: var(--brand-yellow) !important;
    border-top: 3px solid var(--brand-black) !important;
}
body.role-alumno .evaluation-table .final-text b {
    color: var(--brand-black) !important;
    font-weight: 900 !important;
}

/* Móvil: filas de datos como tarjetas apiladas (etiqueta: valor) en vez de
   tabla con scroll horizontal — más intuitivo con pocas columnas. */
@media (max-width: 767px) {
    body.role-alumno .evaluation-table,
    body.role-alumno .evaluation-table tbody,
    body.role-alumno .evaluation-table tr,
    body.role-alumno .evaluation-table th,
    body.role-alumno .evaluation-table td {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box !important;
        white-space: normal !important;
    }
    body.role-alumno .evaluation-table {
        border: none !important;
    }
    body.role-alumno .evaluation-table tr.ev-head {
        display: none !important;
    }
    body.role-alumno .evaluation-table tr:not(.ev-head) {
        margin-bottom: 14px !important;
        border: 3px solid var(--brand-black) !important;
    }
    body.role-alumno .evaluation-table th[colspan],
    body.role-alumno .evaluation-table td[colspan] {
        border: none !important;
        border-bottom: 2px solid var(--brand-black) !important;
    }
    body.role-alumno .evaluation-table td[data-label] {
        border: none !important;
        border-bottom: 1px solid rgba(0,0,0,0.15) !important;
        padding-left: 45% !important;
        position: relative !important;
        min-height: 20px !important;
    }
    body.role-alumno .evaluation-table td[data-label]:last-child {
        border-bottom: none !important;
    }
    body.role-alumno .evaluation-table td[data-label]::before {
        content: attr(data-label) !important;
        position: absolute !important;
        left: 10px !important;
        top: 10px !important;
        width: 40% !important;
        font-weight: 800 !important;
        text-transform: uppercase !important;
        font-size: 0.68rem !important;
        color: rgba(0,0,0,0.55) !important;
    }
}

/* Buttons */
body.role-alumno .btn,
body.role-alumno .comBtns,
body.role-emisor .btn,
body.role-emisor .comBtns,
body:is(.role-profesor, .role-director, .role-administrativo) .btn,
body:is(.role-profesor, .role-director, .role-administrativo) .comBtns {
    border: 2px solid var(--brand-black) !important;
    border-radius: var(--apr-radius-pill) !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    box-shadow: 3px 3px 0px var(--brand-black) !important;
    transition: all 0.1s ease !important;
    padding: 10px 20px !important;
}
body.role-alumno .comBtns,
body.role-emisor .comBtns,
body:is(.role-profesor, .role-director, .role-administrativo) .comBtns {
    background: var(--brand-cyan) !important;
    color: var(--brand-white) !important;
    white-space: nowrap !important;
}

/* Grid de vídeos: tarjetas de igual altura, icono e título consistentes */
body.role-alumno #videoList.row,
body:is(.role-profesor, .role-director, .role-administrativo) #videoList.row {
    align-items: stretch !important;
}
body.role-alumno #videoList > div,
body:is(.role-profesor, .role-director, .role-administrativo) #videoList > div {
    display: flex !important;
    margin-bottom: 20px !important;
}
/* Dirección: tres vídeos por fila también en pantallas grandes (el profesor lleva cuatro) */
@media (min-width: 1200px) {
    body:is(.role-director, .role-administrativo) #videoList > .col-xl-3 {
        flex: 0 0 33.333333% !important;
        max-width: 33.333333% !important;
    }
}
body.role-alumno .videoclase,
body:is(.role-profesor, .role-director, .role-administrativo) .videoclase {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    width: 100% !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 0 0 14px 0 !important;
    margin-top: 0 !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform 0.15s ease, box-shadow 0.15s ease !important;
}
body.role-alumno .videoclase:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .videoclase:hover {
    box-shadow: 6px 6px 0px var(--brand-black) !important;
}
/* Banda tipo miniatura con el botón de play centrado */
body.role-alumno .playLink,
body:is(.role-profesor, .role-director, .role-administrativo) .playLink {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 2.2 / 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: var(--brand-yellow) !important;
    border: none !important;
    border-bottom: 3px solid var(--brand-black) !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    margin: 0 0 14px 0 !important;
    cursor: pointer !important;
}
body.role-alumno .videoImg,
body:is(.role-profesor, .role-director, .role-administrativo) .videoImg {
    width: 76px !important;
    height: 76px !important;
    object-fit: contain !important;
    transition: transform 0.15s ease !important;
}
body.role-alumno .playLink:hover .videoImg,
body:is(.role-profesor, .role-director, .role-administrativo) .playLink:hover .videoImg {
    transform: scale(1.1) !important;
}
/* Miniatura real del vídeo (extraída de Google Drive) de fondo, con el
   icono de play superpuesto y un velo oscuro para que se lea sobre
   cualquier imagen. */
body.role-alumno .playLink.has-thumbnail,
body:is(.role-profesor, .role-director, .role-administrativo) .playLink.has-thumbnail {
    background: var(--brand-black) !important;
    position: relative !important;
}
body.role-alumno .playLink.has-thumbnail::after,
body:is(.role-profesor, .role-director, .role-administrativo) .playLink.has-thumbnail::after {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    background: rgba(0,0,0,0.25) !important;
    z-index: 1 !important;
}
body.role-alumno .playLink.has-thumbnail .videoThumbnail,
body:is(.role-profesor, .role-director, .role-administrativo) .playLink.has-thumbnail .videoThumbnail {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    z-index: 0 !important;
}
body.role-alumno .playLink.has-thumbnail .videoImg,
body:is(.role-profesor, .role-director, .role-administrativo) .playLink.has-thumbnail .videoImg {
    position: relative !important;
    z-index: 2 !important;
    filter: drop-shadow(0 2px 6px rgba(0,0,0,0.7)) !important;
}
body.role-alumno .video-watch-toggle,
body:is(.role-profesor, .role-director, .role-administrativo) .video-watch-toggle {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 8px !important;
    min-height: 42px !important;
    padding: 8px 12px 6px 12px !important;
    background: var(--brand-white) !important;
}
body.role-alumno .videoclase > label,
body:is(.role-profesor, .role-director, .role-administrativo) .videoclase > label {
    margin-top: 0 !important;
    padding: 0 14px !important;
    font-weight: 800 !important;
    color: var(--brand-black) !important;
    font-size: 0.82rem !important;
    text-align: center !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    word-break: break-word !important;
}

/* Estado visto/no visto de cada clase: badge en vez de checkbox suelto */
body.role-alumno .video-watch-toggle input.videoVisionado,
body:is(.role-profesor, .role-director, .role-administrativo) .video-watch-toggle input.videoVisionado {
    position: absolute !important;
    opacity: 0 !important;
    width: 1px !important;
    height: 1px !important;
    pointer-events: none !important;
}
body.role-alumno .video-watch-toggle label.videoVisionado {
    display: inline-flex !important;
    align-items: center !important;
    flex-shrink: 0 !important;
    gap: 5px !important;
    padding: 3px 10px !important;
    border-radius: 999px !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
    color: rgba(0,0,0,0.55) !important;
    font-size: 0.62rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.3px !important;
    white-space: nowrap !important;
    cursor: pointer !important;
    margin: 0 !important;
}
body.role-alumno .video-watch-toggle input.videoVisionado:checked + label.videoVisionado {
    background: var(--apr-color-teal-light) !important;
    border-color: var(--apr-color-teal) !important;
    color: var(--brand-black) !important;
}
body.role-alumno .video-watch-toggle label.videoVisionado i {
    color: rgba(0,0,0,0.35) !important;
}
body.role-alumno .video-watch-toggle input.videoVisionado:checked + label.videoVisionado i {
    color: var(--apr-color-teal) !important;
}
body.role-alumno .video-watch-date {
    margin-top: 0 !important;
    padding: 2px 8px !important;
    border-radius: 999px !important;
    background: rgba(0,0,0,0.55) !important;
    color: var(--brand-white) !important;
    font-size: 0.58rem !important;
    font-weight: 700 !important;
    width: fit-content !important;
}

/* Barra de progreso de clases vistas */
body.role-alumno .progress {
    border: 3px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-white) !important;
    height: 20px !important;
    overflow: hidden !important;
}
body.role-alumno .progress-bar {
    background: var(--apr-color-teal) !important;
    background-image: none !important;
}

/* Banner de asignatura (p.ej. cabecera de la lista de vídeos) */
body.role-alumno .asg-banner {
    background: var(--brand-yellow) !important;
    border-bottom: 4px solid var(--brand-black) !important;
    padding: 16px !important;
    margin-left: -30px !important;
    margin-right: -30px !important;
    width: calc(100% + 60px) !important;
}
body.role-alumno .asg-banner-pre {
    font-family: 'JetBrains Mono', monospace !important;
    text-transform: uppercase !important;
    font-size: 0.7rem !important;
    font-weight: 800 !important;
    color: var(--brand-black) !important;
    background: rgba(0,0,0,0.1) !important;
    border: 1.5px solid rgba(0,0,0,0.2) !important;
    padding: 2px 10px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 5px !important;
    letter-spacing: 1px !important;
    margin-bottom: 6px !important;
}
body.role-alumno .asg-banner-name {
    font-size: 1.4rem !important;
    font-weight: 900 !important;
    color: var(--brand-black) !important;
    text-transform: uppercase !important;
    letter-spacing: -0.5px !important;
    overflow-wrap: break-word !important;
}

/* Botones largos: que envuelvan el texto en vez de desbordar en móvil */
body.role-alumno .styleSelector .btn {
    white-space: normal !important;
}
@media (max-width: 767px) {
    body.role-alumno .btn {
        white-space: normal !important;
        max-width: 100% !important;
        overflow-wrap: break-word !important;
    }
    body.role-alumno .cookiesButton .btn {
        width: 100% !important;
    }
    /* Rejillas de carpetas/vídeos: nombres largos que envuelven en vez de desbordar */
    body.role-alumno #folders > div,
    body.role-alumno #videoList > div {
        width: 33.333% !important;
        max-width: 33.333% !important;
        flex: 0 0 33.333% !important;
        box-sizing: border-box !important;
        padding-left: 6px !important;
        padding-right: 6px !important;
    }
    body.role-alumno #folders p,
    body.role-alumno #videoList label {
        overflow-wrap: break-word !important;
        word-break: break-word !important;
        white-space: normal !important;
        font-size: 0.7rem !important;
    }
    /* En móvil la fecha de visionado sobra: solo el badge Vista/No vista */
    body.role-alumno .video-watch-date {
        display: none !important;
    }
    /* Menos aire alrededor del badge para que quepa sin desbordar la tarjeta */
    body.role-alumno .video-watch-toggle {
        padding: 6px 8px 4px 8px !important;
    }
    body.role-alumno .video-watch-toggle label.videoVisionado {
        padding: 2px 7px !important;
        font-size: 0.55rem !important;
        gap: 3px !important;
    }
    /* Icono de play a juego con la tarjeta más estrecha (33% del ancho) */
    body.role-alumno .videoImg {
        width: 40px !important;
        height: 40px !important;
    }
}

/* Separación entre la barra "Clases previas" y la rejilla de debajo */
body.role-alumno .section-title {
    margin-bottom: 16px !important;
}
@media (max-width: 767px) {
    body.role-alumno .section-title {
        margin-bottom: 18px !important;
    }
}

/* Selector + botón de solicitud de sala de estudio */
body.role-alumno .salas-request {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 12px !important;
    align-items: stretch !important;
}
body.role-alumno .salas-request select.form-control {
    flex: 1 1 240px !important;
    min-height: 44px !important;
}
body.role-alumno .btn:hover,
body.role-alumno .comBtns:hover,
body.role-emisor .btn:hover,
body.role-emisor .comBtns:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .btn:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .comBtns:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: 4px 4px 0px var(--brand-black) !important;
}
body.role-alumno .btn:active,
body.role-alumno .comBtns:active,
body.role-emisor .btn:active,
body.role-emisor .comBtns:active,
body:is(.role-profesor, .role-director, .role-administrativo) .btn:active,
body:is(.role-profesor, .role-director, .role-administrativo) .comBtns:active {
    transform: translate(1px, 1px) !important;
    box-shadow: 2px 2px 0px var(--brand-black) !important;
}
body.role-alumno .btn-success,
body.role-emisor .btn-success,
body.role-emisor .btn-success:not(:disabled):not(.disabled).active,
body.role-emisor .btn-success:not(:disabled):not(.disabled):active,
body.role-emisor .btn-success:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-success {
    background: var(--brand-success) !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-white) !important;
}
body.role-alumno .btn-info,
body.role-emisor .btn-info,
body.role-emisor .btn-info:not(:disabled):not(.disabled).active,
body.role-emisor .btn-info:not(:disabled):not(.disabled):active,
body.role-emisor .btn-info:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-info {
    background: var(--brand-yellow) !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-black) !important;
}
body.role-alumno .btn-danger,
body.role-emisor .btn-danger,
body.role-emisor .btn-danger:not(:disabled):not(.disabled).active,
body.role-emisor .btn-danger:not(:disabled):not(.disabled):active,
body.role-emisor .btn-danger:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-danger {
    background: var(--brand-danger) !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-white) !important;
}
/* Panel de asistencia: todos los botones en gris mientras no están marcados;
   solo el marcado lleva color ("Sin registrar" en rosa) */
body.role-emisor .panel-button.btn-secondary,
body:is(.role-profesor, .role-director, .role-administrativo) .panel-button.btn-secondary {
    background: #d9d9d9 !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-black) !important;
}
body.role-emisor .panel-button.btn-secondary:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .panel-button.btn-secondary:hover {
    background: #b3b3b3 !important;
}
body.role-emisor [onclick*="'sin_registrar'"].panel-button.btn-secondary:not(:disabled):not(.disabled).active,
body:is(.role-profesor, .role-director, .role-administrativo) [onclick*="'sin_registrar'"].panel-button.btn-secondary:not(:disabled):not(.disabled).active {
    background: var(--apr-color-pink) !important;
    color: var(--brand-white) !important;
}
body.role-emisor [onclick*="'sin_registrar'"].panel-button.btn-secondary:not(:disabled):not(.disabled).active:hover,
body:is(.role-profesor, .role-director, .role-administrativo) [onclick*="'sin_registrar'"].panel-button.btn-secondary:not(:disabled):not(.disabled).active:hover {
    background: #e0447f !important;
}
body.role-emisor .btn-carga-faltas,
body:is(.role-profesor, .role-director, .role-administrativo) .btn-carga-faltas {
    background: var(--apr-color-blue) !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-white) !important;
}
body.role-emisor .btn-secondary {
    background: #d9d9d9 !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-black) !important;
}
body.role-emisor .btn-secondary:not(:disabled):not(.disabled).active,
body.role-emisor .btn-secondary:not(:disabled):not(.disabled):active,
body.role-emisor .btn-secondary:hover {
    background: #b3b3b3 !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-black) !important;
}
body.role-emisor .btn-primary:not(:disabled):not(.disabled).active,
body.role-emisor .btn-primary:not(:disabled):not(.disabled):active,
body.role-emisor .btn-primary:hover {
    background: var(--brand-yellow) !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-black) !important;
}

/* Schedule Box Specifics */
body.role-alumno #scheduleShow table {
    border: 3px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
    width: 100% !important;
    max-width: 100% !important;
}
body.role-alumno #scheduleShow th {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    font-weight: 900 !important;
    font-size: 0.85rem !important;
    padding: 8px !important;
    text-transform: uppercase !important;
}
body.role-alumno #scheduleShow td {
    border: 2px solid var(--brand-black) !important;
    padding: 8px !important;
    font-size: 0.8rem !important;
}
body.role-alumno #scheduleShow .clase {
    border: 2px solid var(--brand-black) !important;
    background: #FFF9DB !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
}


/* Fix the Horario PDF rendering on Web */
body.role-alumno .horario-pdf-container .studentData {
    position: static !important;
    margin-bottom: 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: var(--brand-black);
    padding: 10px 20px;
    border-radius: 8px;
    box-shadow: 4px 4px 0px var(--brand-black);
    border: 3px solid var(--brand-black);
}
body.role-alumno .horario-pdf-container .studentName {
    float: none !important;
    width: auto !important;
}
body.role-alumno .horario-pdf-container .studentName p {
    color: var(--brand-white) !important;
    font-size: 1.2rem !important;
    margin: 0 !important;
}
body.role-alumno .horario-pdf-container .studentPeriods {
    float: none !important;
    width: auto !important;
    text-align: right !important;
}
body.role-alumno .horario-pdf-container .studentPeriods p {
    color: var(--brand-yellow) !important;
    margin: 0 !important;
}
body.role-alumno .horario-pdf-container .title {
    margin: 20px 0;
}
body.role-alumno .horario-pdf-container table.morning,
body.role-alumno .horario-pdf-container table.afternoon {
    width: 100% !important;
}
body.role-alumno .horario-pdf-container td {
    position: relative !important;
    border-top: none !important;
    border-bottom: none !important;
    border-right: 1px dashed #ccc !important;
    border-left: 1px dashed #ccc !important;
}
/* Ensure the absolute blocks position relative to their cell */
body.role-alumno .horario-pdf-container .clase.gris {
    width: 100% !important; /* expand to cell width */
    left: 0 !important;
    box-sizing: border-box !important;
    margin-top: 0 !important;
    z-index: 10;
    overflow: hidden;
    padding: 2px !important;
}
body.role-alumno .horario-pdf-container .clase p {
    line-height: 1.2 !important;
    font-size: 0.7rem !important;
    margin: 2px 0 !important;
}
body.role-alumno .horario-pdf-container .clase .arribaCentrado p,
body.role-alumno .horario-pdf-container .clase .abajoCentrado p {
    background: var(--brand-black);
    color: var(--brand-yellow);
    display: inline-block;
    padding: 1px 4px;
    border-radius: 4px;
    font-size: 0.6rem !important;
}

/* ── Web Schedule Cards Layout ──── */
body.role-alumno .schedule-period-title,
body:is(.role-profesor, .role-director, .role-administrativo) .schedule-period-title {
    font-weight: 900;
    font-size: 1.2rem;
    text-transform: uppercase;
    margin-bottom: 20px;
    background: var(--brand-black);
    color: var(--apr-color-yellow);
    display: inline-block;
    padding: 8px 16px;
    border-radius: var(--apr-radius);
    border: 3px solid var(--brand-black);
    box-shadow: 4px 4px 0px var(--apr-color-yellow);
}
body.role-alumno .schedule-days-container,
body:is(.role-profesor, .role-director, .role-administrativo) .schedule-days-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 24px;
    margin-bottom: 40px;
}
body.role-alumno .schedule-day-card,
body:is(.role-profesor, .role-director, .role-administrativo) .schedule-day-card {
    background: var(--brand-white);
    border: 3px solid var(--brand-black);
    border-radius: 8px;
    box-shadow: 6px 6px 0px var(--brand-black);
    overflow: hidden;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
body.role-alumno .schedule-day-card:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .schedule-day-card:hover {
    transform: translate(-2px, -2px);
    box-shadow: 8px 8px 0px var(--brand-black);
}
body.role-alumno .day-title,
body:is(.role-profesor, .role-director, .role-administrativo) .day-title {
    background: var(--brand-yellow);
    color: var(--brand-black);
    font-weight: 900;
    text-align: center;
    padding: 12px;
    margin: 0;
    border-bottom: 3px solid var(--brand-black);
    text-transform: uppercase;
    letter-spacing: 2px;
    font-size: 1.1rem;
}
body.role-alumno .class-item,
body:is(.role-profesor, .role-director, .role-administrativo) .class-item {
    display: flex;
    flex-direction: column;
    padding: 16px;
    border-bottom: 2px dashed #ccc;
    background: var(--brand-white);
}
body.role-alumno .class-item:last-child,
body:is(.role-profesor, .role-director, .role-administrativo) .class-item:last-child {
    border-bottom: none;
}
body.role-alumno .class-time,
body:is(.role-profesor, .role-director, .role-administrativo) .class-time {
    margin-bottom: 8px;
}
body.role-alumno .time-badge,
body:is(.role-profesor, .role-director, .role-administrativo) .time-badge {
    background: var(--brand-black);
    color: var(--brand-yellow);
    font-weight: 800;
    padding: 4px 10px;
    border-radius: 4px;
    display: inline-block;
    font-size: 0.85rem;
}
body.role-alumno .subject-name,
body:is(.role-profesor, .role-director, .role-administrativo) .subject-name {
    font-weight: 900;
    font-size: 1.05rem;
    margin: 0 0 8px 0;
    color: var(--brand-black);
    line-height: 1.3;
}
body.role-alumno .teacher-name,
body.role-alumno .room-name,
body:is(.role-profesor, .role-director, .role-administrativo) .teacher-name,
body:is(.role-profesor, .role-director, .role-administrativo) .room-name {
    margin: 0 0 4px 0;
    color: #333;
    font-size: 0.9rem;
    font-weight: 600;
}
body.role-alumno .teacher-name i,
body.role-alumno .room-name i,
body:is(.role-profesor, .role-director, .role-administrativo) .teacher-name i,
body:is(.role-profesor, .role-director, .role-administrativo) .room-name i {
    width: 20px;
    text-align: center;
    color: var(--brand-black);
}

/* Vista Emisor (pizarras de TV en aula): pestañas Formación externa/interna
   y selección de periodo/asignatura, con el mismo lenguaje visual que el
   dashboard de alumno. */
body.role-emisor #emisorTab {
    border-bottom: 3px solid var(--brand-black) !important;
    gap: 8px !important;
    margin-bottom: 12px !important;
}
body.role-emisor #emisorTab .nav-link {
    border: 3px solid var(--brand-black) !important;
    border-bottom: none !important;
    border-radius: var(--apr-radius) var(--apr-radius) 0 0 !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    padding: 10px 20px !important;
}
body.role-emisor #emisorTab .nav-link.active {
    background: var(--brand-yellow) !important;
}
body.role-emisor h3 {
    text-align: center !important;
    margin-top: 40px !important;
}
body.role-emisor .swiper-slide .card-title {
    font-weight: 900 !important;
}

/* Selects de periodo/asignatura, mejorados con selectize.js */
body.role-emisor .selectize-control.single .selectize-input {
    border: 3px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: var(--brand-white) !important;
    padding: 10px 14px !important;
    font-family: 'Inter', sans-serif !important;
    color: var(--brand-black) !important;
}
body.role-emisor .selectize-control.single .selectize-input.focus {
    outline: none !important;
    box-shadow: 4px 4px 0px 0px var(--brand-cyan) !important;
    border-color: var(--brand-cyan) !important;
}
body.role-emisor .selectize-dropdown {
    border: 3px solid var(--brand-black) !important;
    border-top: none !important;
    border-radius: 0 !important;
    box-shadow: 4px 4px 0px 0px var(--brand-black) !important;
    font-family: 'Inter', sans-serif !important;
}
body.role-emisor .selectize-dropdown-content .option.active {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
}

/* Título "Selecciona una asignatura", cabecera de la zona de selects */
body.role-emisor .emisor-select-hint {
    text-align: center !important;
    margin: 4px 0 24px 0 !important;
    font-weight: 900 !important;
    font-size: 2.2rem !important;
    letter-spacing: -0.5px !important;
    color: var(--brand-black) !important;
}
body.role-emisor .emisor-select-hint .apr-accent-text {
    font-size: 1.1em !important;
    margin-right: 10px !important;
}

/* Selects de periodo/asignatura: más presencia visual (pizarras de TV,
   se ven de lejos) */
body.role-emisor .selectize-control.single .selectize-input {
    border: 4px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    background: var(--brand-white) !important;
    padding: 16px 20px !important;
    font-family: 'Inter', sans-serif !important;
    font-weight: 700 !important;
    font-size: 1.15rem !important;
    color: var(--brand-black) !important;
}
body.role-emisor .selectize-control.single .selectize-input:after {
    border-color: var(--brand-black) transparent transparent transparent !important;
}
body.role-emisor .selectize-control.single .selectize-input.dropdown-active:after {
    border-color: transparent transparent var(--brand-black) transparent !important;
}

/* Panel de asistencia (tabla de alumnos con botones de estado):
   delimitar filas/columnas y reducir el tamaño de los botones, que con
   el estilo .btn general (pensado para acciones sueltas) salían enormes. */
body.role-emisor .panel-header-title,
body:is(.role-profesor, .role-director, .role-administrativo) .panel-header-title {
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
    font-weight: 800 !important;
    padding: 10px 8px !important;
    border: 2px solid var(--brand-black) !important;
}
body.role-emisor [id^="fila_alumno_"],
body:is(.role-profesor, .role-director, .role-administrativo) [id^="fila_alumno_"] {
    border-bottom: 2px solid var(--brand-black) !important;
    padding-top: 10px !important;
    padding-bottom: 10px !important;
    align-items: stretch !important;
    overflow: visible !important;
}
body.role-emisor [id^="fila_alumno_"]:nth-of-type(even),
body:is(.role-profesor, .role-director, .role-administrativo) [id^="fila_alumno_"]:nth-of-type(even) {
    background: var(--brand-bg) !important;
}
body.role-emisor .panel-line-data,
body:is(.role-profesor, .role-director, .role-administrativo) .panel-line-data {
    border-left: 2px solid rgba(0,0,0,0.15) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
}
body.role-emisor .botonera-radio,
body:is(.role-profesor, .role-director, .role-administrativo) .botonera-radio {
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 4px !important;
    height: auto !important;
    padding: 8px 4px !important;
}
body.role-emisor .botonera-radio .panel-button.btn,
body:is(.role-profesor, .role-director, .role-administrativo) .botonera-radio .panel-button.btn {
    display: block !important;
    width: 100% !important;
    box-sizing: border-box !important;
    position: static !important;
}
body.role-emisor .panel-button.btn,
body:is(.role-profesor, .role-director, .role-administrativo) .panel-button.btn {
    padding: 4px 10px !important;
    font-size: 0.7rem !important;
    border-width: 2px !important;
    box-shadow: 2px 2px 0px var(--brand-black) !important;
}
body.role-emisor .panel-button.btn:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .panel-button.btn:hover {
    box-shadow: 3px 3px 0px var(--brand-black) !important;
}
body.role-emisor .panel-button.btn:active,
body:is(.role-profesor, .role-director, .role-administrativo) .panel-button.btn:active {
    box-shadow: 1px 1px 0px var(--brand-black) !important;
}

/* Card de sesión (Emitir Google Meet / BBB / Zoom) */
body.role-emisor #emitir_buttons {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    margin: 14px 0 !important;
}
body.role-emisor #emitir_buttons .btn {
    width: 100% !important;
    text-align: center !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   TEACHER VIEW STYLES (body.role-profesor)
   Cabecera, menú lateral y menú móvil reutilizan las reglas del alumno
   (.almhead, .dash-sidebar, .mobile-nav-*). Aquí solo lo propio del
   profesor: el layout es multipágina, el menú vive en base.html.twig.
   ────────────────────────────────────────────────────────────────────────── */

/* overflow: hidden de style.css impide que el menú lateral quede fijo al hacer
   scroll; clip recorta igual el desborde horizontal sin romper position: sticky. */
body:is(.role-profesor, .role-director, .role-administrativo) .wrap-content {
    overflow: visible !important;
    overflow-x: clip !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-layout {
    min-height: calc(100vh - 100px) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-sidebar {
    min-height: calc(100vh - 100px) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-main .wrap-body {
    padding: 0 !important;
}
/* style.css da a .almnombre un fondo gris redondeado pensado para la cabecera antigua */
body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre {
    background: transparent !important;
    border-radius: 0 !important;
}

/* ── Acentos por tarjeta (data-accent) ─────────────────────── */
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="yellow"] { --prof-accent: var(--apr-color-yellow); --prof-accent-light: var(--apr-color-yellow-light); }
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="orange"] { --prof-accent: var(--apr-color-orange); --prof-accent-light: var(--apr-color-orange-light); }
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="teal"]   { --prof-accent: var(--apr-color-teal);   --prof-accent-light: var(--apr-color-teal-light); }
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="blue"]   { --prof-accent: var(--apr-color-blue);   --prof-accent-light: var(--apr-color-blue-light); }
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="pink"]   { --prof-accent: var(--apr-color-pink);   --prof-accent-light: var(--apr-color-pink-light); }

/* ── Tarjetas de acceso (páginas Datos del docente / Academia) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important;
    gap: 24px !important;
    align-items: start !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-card {
    display: flex !important;
    flex-direction: column !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    overflow: hidden !important;
    transition: transform 0.15s ease, box-shadow 0.15s ease !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-card:hover {
    transform: translate(-2px, -2px) !important;
    box-shadow: var(--apr-shadow-hover) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-card-head {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 14px 18px !important;
    background: var(--prof-accent-light, var(--apr-color-yellow-light)) !important;
    border-bottom: 3px solid var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-icon {
    width: 42px !important;
    height: 42px !important;
    flex-shrink: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: var(--prof-accent, var(--brand-yellow)) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    font-size: 1.1rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="teal"] .prof-hub-icon,
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="blue"] .prof-hub-icon {
    color: var(--brand-white) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-card-head h2 {
    margin: 0 !important;
    font-size: 1.05rem !important;
    text-transform: uppercase !important;
    letter-spacing: 0.3px !important;
    line-height: 1.2 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-card-body {
    padding: 18px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 16px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-desc {
    margin: 0 !important;
    color: var(--brand-text-muted) !important;
    font-size: 0.9rem !important;
    font-weight: 500 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-actions {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-actions .btn {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    width: 100% !important;
    white-space: normal !important;
    text-decoration: none !important;
    font-size: 0.8rem !important;
    line-height: 1.25 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-stats {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border-top: 2px solid var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-stats li {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 8px 0 !important;
    border-bottom: 2px dashed #d0d0d0 !important;
    font-size: 0.85rem !important;
    font-weight: 600 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-stats li:last-child {
    border-bottom: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-count {
    min-width: 32px !important;
    padding: 2px 8px !important;
    text-align: center !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 800 !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-count.is-positive {
    background: var(--prof-accent, var(--brand-yellow)) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="teal"] .prof-count.is-positive,
body:is(.role-profesor, .role-director, .role-administrativo) [data-accent="blue"] .prof-count.is-positive {
    color: var(--brand-white) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-note {
    padding: 10px 12px !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-bg) !important;
    font-size: 0.85rem !important;
    font-weight: 600 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-note.is-danger {
    background: #ffe3e3 !important;
    border-color: var(--brand-danger) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-note strong {
    display: block !important;
    margin-bottom: 4px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-note ul {
    margin: 0 !important;
    padding-left: 18px !important;
}

/* ── Mis asignaturas (listado del profesor) ────────────────── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-period-title {
    display: inline-block !important;
    margin: 8px 0 18px !important;
    padding: 8px 16px !important;
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: 4px 4px 0 var(--brand-yellow) !important;
    font-size: 1rem !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)) !important;
    gap: 24px !important;
    margin-bottom: 36px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-card {
    display: flex !important;
    flex-direction: column !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    overflow: hidden !important;
    transition: transform 0.15s ease, box-shadow 0.15s ease !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-card:hover {
    transform: translate(-2px, -2px) !important;
    box-shadow: var(--apr-shadow-hover) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-band {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px !important;
    padding: 10px 14px !important;
    background: var(--asg-color, var(--brand-yellow)) !important;
    border-bottom: 3px solid var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-band .neo-sticker {
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 3px 8px !important;
    background: var(--brand-danger) !important;
    color: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.7rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live::before {
    content: '' !important;
    width: 8px !important;
    height: 8px !important;
    border-radius: 50% !important;
    background: var(--brand-white) !important;
    animation: qsPulseDot 1.3s ease-in-out infinite !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-body {
    flex: 1 !important;
    padding: 16px 18px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 14px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-name {
    margin: 0 !important;
    font-size: 1.2rem !important;
    line-height: 1.2 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-name a {
    color: var(--brand-black) !important;
    text-decoration: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-name a:hover {
    text-decoration: underline !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-curso {
    margin: 4px 0 0 !important;
    color: var(--brand-text-muted) !important;
    font-size: 0.85rem !important;
    font-weight: 600 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-stats {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 8px !important;
    margin: 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-stat {
    padding: 8px 4px !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-bg) !important;
    text-align: center !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-stat dt {
    font-size: 0.62rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    color: var(--brand-text-muted) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-stat dd {
    margin: 2px 0 0 !important;
    font-size: 1.15rem !important;
    font-weight: 900 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-substat {
    margin: -6px 0 0 !important;
    font-size: 0.75rem !important;
    color: var(--brand-text-muted) !important;
    font-weight: 600 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-horario {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-chip {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 4px 8px !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.75rem !important;
    font-weight: 700 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-chip-days {
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
    padding: 0 5px !important;
    letter-spacing: 1px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-empty {
    font-size: 0.8rem !important;
    color: var(--brand-text-muted) !important;
    font-style: italic !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
    padding: 14px 18px !important;
    border-top: 3px solid var(--brand-black) !important;
    background: var(--brand-bg) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-actions .btn {
    flex: 1 1 auto !important;
    text-decoration: none !important;
    font-size: 0.78rem !important;
    padding: 8px 14px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-empty {
    padding: 28px !important;
    text-align: center !important;
    font-weight: 700 !important;
    border: 3px dashed var(--brand-black) !important;
    background: var(--brand-white) !important;
}

/* Paginación de knp (listas del profesor) */
body:is(.role-profesor, .role-director, .role-administrativo) .pagination {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    justify-content: center !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .pagination .page-link,
body:is(.role-profesor, .role-director, .role-administrativo) .pagination span,
body:is(.role-profesor, .role-director, .role-administrativo) .pagination a {
    border: 2px solid var(--brand-black) !important;
    border-radius: 0 !important;
    color: var(--brand-black) !important;
    text-decoration: none !important;
    font-weight: 800 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .pagination .active .page-link,
body:is(.role-profesor, .role-director, .role-administrativo) .pagination .current {
    background: var(--brand-yellow) !important;
}

/* ── Mi horario ────────────────────────────────────────────── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-toolbar {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: flex-end !important;
    gap: 12px !important;
    margin-bottom: 20px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle .secinfo {
    white-space: nowrap !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-asg-band {
    min-height: 44px !important;
}

/* ── Gestión de archivos (carpeta/index.html.twig, compartida con director:
   solo se retoca con CSS bajo body.role-profesor) ─────────────────────── */
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle:has(#searchTerm) {
    flex-wrap: wrap !important;
    gap: 14px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle:has(#searchTerm) .sectitle {
    flex: 1 1 100% !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .filtros:has(#searchTerm) {
    flex: 1 1 100% !important;
    flex-wrap: wrap !important;
    overflow: visible !important;
    gap: 10px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .filtros #searchTerm {
    flex: 1 1 180px !important;
    width: auto !important;
    min-width: 0 !important;
    padding: 8px 12px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .filtros .btn {
    padding: 7px 14px !important;
    font-size: 0.72rem !important;
    white-space: nowrap !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #uploadBtn {
    background: var(--brand-cyan) !important;
    color: var(--brand-white) !important;
    border-color: var(--brand-black) !important;
}

/* Leyenda de colores: pastillas de filtro */
body:is(.role-profesor, .role-director, .role-administrativo) #filter-badges {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 8px !important;
    margin: 6px 0 18px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #filter-badges .colorCodeFiles {
    margin: 0 !important;
    padding: 5px 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    font-size: 0.72rem !important;
    font-weight: 800 !important;
    line-height: 1.3 !important;
    transition: transform 0.1s ease, box-shadow 0.1s ease !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #filter-badges .colorCodeFiles:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #filter-badges .colorCodeFiles.filter-active {
    transform: translate(1px, 1px) !important;
    box-shadow: 0 0 0 3px var(--brand-yellow), 0 0 0 5px var(--brand-black) !important;
}

/* Árbol de carpetas (breadcrumbs) */
body:is(.role-profesor, .role-director, .role-administrativo) .col-sm-6:has(> #breadcrumbs) {
    flex: 1 1 100% !important;
    max-width: 100% !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    margin: 0 15px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #breadcrumbs .breadcrumb-nav {
    text-align: left !important;
    word-break: break-word !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #breadcrumbs .breadcrumb-nav a {
    color: var(--brand-cyan) !important;
}

/* Barra de orden (Alfabética / Recientes) y botón Volver */
body:is(.role-profesor, .role-director, .role-administrativo) .styleSelector > .col-sm-12 {
    flex-wrap: wrap !important;
    gap: 10px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .styleSelector .btn,
body:is(.role-profesor, .role-director, .role-administrativo) .styleSelector #back_btn {
    margin: 0 !important;
    padding: 7px 14px !important;
    font-size: 0.72rem !important;
    border-radius: var(--apr-radius-pill) !important;
}

/* Directorio vacío */
body:is(.role-profesor, .role-director, .role-administrativo) #nofiles > .col-sm-6 {
    flex: 1 1 100% !important;
    max-width: 520px !important;
    background: var(--brand-white) !important;
    border: 3px dashed var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    padding: 24px 16px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #nofiles h4 {
    font-size: 1rem !important;
    margin-top: 8px !important;
}

/* Rejilla de carpetas y ficheros */
body:is(.role-profesor, .role-director, .role-administrativo) #folders {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)) !important;
    gap: 14px !important;
    margin: 20px 0 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #folders .folderElem {
    max-width: none !important;
    width: auto !important;
    flex: none !important;
    padding: 12px 6px 6px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #folders .folderElem:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: 4px 4px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #folders .folderElem.selected {
    background: var(--apr-color-yellow-light) !important;
    box-shadow: 0 0 0 3px var(--brand-yellow), 3px 3px 0 3px var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #folders .folderElem p {
    margin: 6px 0 0 !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
    word-break: break-word !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) #folders {
        grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)) !important;
        gap: 10px !important;
    }
}

/* ── Ficha de asignatura (asignatura/edit.html.twig, compartida con
   director: solo CSS bajo body:is(.role-profesor, .role-director, .role-administrativo), anclado a #subjectTab) ── */

/* Cabecera: nombre + botones de navegación entre asignaturas */
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle:has(#firstSubject) {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 10px 18px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle:has(#firstSubject) .filtros {
    float: none !important;
    margin-left: auto !important;
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle:has(#firstSubject) .filtros .btn {
    padding: 6px 14px !important;
    font-size: 0.72rem !important;
    min-height: 36px !important;
}
/* Paginador de asignaturas: un solo bloque unido, flechas separadas por
   líneas. El JS solo rellena onclick de los botones con destino; los que
   quedan con onclick vacío se muestran apagados y sin clic. */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager {
    display: inline-flex !important;
    align-items: stretch !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-white) !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
    overflow: hidden !important;
    height: 40px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager:not(:has(button:not([onclick=""]))) {
    display: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager .btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    min-height: 0 !important;
    height: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    font-size: 0.9rem !important;
    transform: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager .btn + .btn,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager .prof-subject-pager-label + .btn {
    border-left: 2px solid var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager .btn:hover:not([onclick=""]) {
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager .btn[onclick=""] {
    background: #f1efe0 !important;
    color: #b5b2a0 !important;
    cursor: default !important;
    pointer-events: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager-label {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0 12px !important;
    border-left: 2px solid var(--brand-black) !important;
    font-size: 0.7rem !important;
    font-weight: 800 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    background: var(--brand-white) !important;
}
@media (max-width: 420px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager-label { display: none !important; }
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager .prof-subject-pager-label + .btn { border-left: none !important; }
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-subject-pager #nextSubject { border-left: 2px solid var(--brand-black) !important; }
}

/* Pestañas: pastillas; en móvil una sola fila con scroll horizontal */
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
    border-bottom: none !important;
    margin: 18px 0 20px !important;
    padding: 0 2px 6px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab .nav-item {
    margin: 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab .nav-link {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 8px 16px !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: var(--apr-radius-pill) !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
    font-size: 0.82rem !important;
    font-weight: 800 !important;
    text-decoration: none !important;
    white-space: nowrap !important;
    transition: transform 0.1s ease, box-shadow 0.1s ease !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab .nav-link:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: 4px 4px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab .nav-link.active {
    background: var(--brand-yellow) !important;
    transform: translate(2px, 2px) !important;
    box-shadow: 1px 1px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab .nav-link .badge {
    border-radius: 999px !important;
    padding: 1px 7px !important;
}
/* Móvil: rejilla de dos columnas, nunca una fila deslizante */
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 8px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab .nav-link {
        width: 100% !important;
        justify-content: flex-start !important;
        padding: 8px 12px !important;
        white-space: normal !important;
        line-height: 1.2 !important;
    }
}

/* Contenido de cada pestaña: tarjeta */
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content > .tab-pane > .editForm {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 20px !important;
    margin: 0 !important;
    min-height: 120px !important;
}

/* Botones dentro de las pestañas: tamaño contenido y sin desbordar */
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .btn {
    padding: 8px 16px !important;
    font-size: 0.75rem !important;
    line-height: 1.25 !important;
    white-space: normal !important;
    max-width: 100% !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content [class*="col-"]:has(> .btn):not(:has(> :not(.btn, .modal, br))) {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 100% !important;
    margin-bottom: 10px !important;
}

/* Tablas de las pestañas (sesiones, alumnos...) */
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content table {
    width: 100% !important;
    border-collapse: collapse !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .thHeader th,
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content thead th {
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
    padding: 10px 8px !important;
    font-size: 0.75rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.4px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .trBody > tr > td {
    padding: 10px 8px !important;
    border-bottom: 2px solid var(--brand-black) !important;
    vertical-align: middle !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .sessionPanelRow > td {
    background: var(--brand-bg) !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content table {
        display: block !important;
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch !important;
    }
}

/* Material didáctico: iframe con la gestión de archivos */
body:is(.role-profesor, .role-director, .role-administrativo) #materialFrame {
    width: 100% !important;
    height: 70vh !important;
    min-height: 480px !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-bg) !important;
}
/* Página cargada dentro del iframe: sin márgenes de la cabecera/menú */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-embedded .wrap-body {
    padding: 16px !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content > .tab-pane > .editForm {
        padding: 14px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content > .tab-pane > .editForm > [class*="col-"] {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    /* Sesiones: cada sesión como tarjeta apilada (etiqueta: valor) */
    /* .sessionPanelRow no se fuerza: su display lo controla toggleSessionPanel() */
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones table,
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones tbody,
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones tr:not(.sessionPanelRow),
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones td {
        display: block !important;
        width: 100% !important;
        overflow: visible !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones thead {
        display: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .trBody > tr:not(.sessionPanelRow) {
        border: 2px solid var(--brand-black) !important;
        margin-top: 12px !important;
        background: var(--brand-white) !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .trBody > tr > td {
        border-bottom: 1px dashed #ccc !important;
        text-align: left !important;
        padding: 8px 12px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .trBody > tr:not(.sessionPanelRow) > td:nth-child(1) {
        font-weight: 900 !important;
        background: var(--brand-yellow) !important;
        border-bottom: 2px solid var(--brand-black) !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .trBody > tr:not(.sessionPanelRow) > td:nth-child(2)::before { content: 'Retrasos: '; font-weight: 800; }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .trBody > tr:not(.sessionPanelRow) > td:nth-child(3)::before { content: 'Faltas: '; font-weight: 800; }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .trBody > tr:not(.sessionPanelRow) > td:nth-child(4),
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .trBody > tr:not(.sessionPanelRow) > td:nth-child(5) {
        display: inline-block !important;
        width: auto !important;
        border-bottom: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .sessionPanelRow:not([style*="none"]) {
        display: block !important;
        width: 100% !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones [id^="sessionAttendancePanel_"] {
        margin: 0 !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #sesiones .sessionPanelRow > td {
        padding: 0 !important;
        border: 2px solid var(--brand-black) !important;
        border-top: none !important;
    }

    /* Panel de asistencia: sin cabecera de columnas; alumno arriba y botones debajo */
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .panel-header-title {
        display: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content [id^="fila_alumno_"] {
        display: flex !important;
        flex-wrap: wrap !important;
        margin: 0 !important;
        padding: 10px !important;
        gap: 8px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content [id^="fila_alumno_"] > .panel-line-data {
        flex: 1 1 auto !important;
        max-width: 100% !important;
        border-left: none !important;
        padding: 0 !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content [id^="fila_alumno_"] > .alumno_nombre {
        flex: 1 1 100% !important;
        justify-content: flex-start !important;
        font-weight: 800 !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content [id^="fila_alumno_"] > .botonera-radio {
        flex-direction: row !important;
        flex-wrap: wrap !important;
        padding: 0 !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content [id^="fila_alumno_"] .botonera-radio .panel-button.btn {
        width: auto !important;
        flex: 1 1 auto !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .btn-carga-faltas {
        width: 100% !important;
    }
}

/* ── Vídeos de clase en la ficha (asignatura/edit/_videos-profesor.html.twig):
   tarjetas reutilizadas del alumno (.videoclase, .playLink) + acciones ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-video-toolbar {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    margin: 24px 0 18px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-video-count {
    font-weight: 900 !important;
    text-transform: uppercase !important;
    font-size: 0.85rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .video-sort-btn {
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    font-size: 0.8rem !important;
    padding: 8px 18px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-video-info {
    flex: 1 !important;
    padding: 0 14px !important;
    text-align: left !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-video-title {
    margin: 0 0 6px !important;
    font-weight: 800 !important;
    font-size: 0.92rem !important;
    line-height: 1.3 !important;
    word-break: break-word !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-video-date {
    display: inline-block !important;
    padding: 2px 8px !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-bg) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-video-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    padding: 14px 14px 0 !important;
    margin-top: 12px !important;
    border-top: 2px dashed #d0d0d0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .prof-video-actions .btn {
    flex: 1 1 auto !important;
    padding: 6px 10px !important;
    font-size: 0.7rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .prof-video-actions .btn-danger {
    flex: 0 0 auto !important;
}

/* ── Encargos y Entregas/consultas en la ficha (tarjetas en vez de tabla) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-section + .prof-delivery-section {
    margin-top: 32px !important;
    padding-top: 24px !important;
    border-top: 3px dashed var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-section-title {
    margin: 0 0 14px !important;
    font-size: 1.15rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-filter-bar {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    margin-bottom: 16px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-filter-chip {
    padding: 5px 12px !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: var(--apr-radius-pill) !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    font-size: 0.75rem !important;
    font-weight: 800 !important;
    cursor: pointer !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-filter-chip span {
    margin-left: 4px !important;
    padding: 0 6px !important;
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
    border-radius: 999px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-filter-chip.is-active {
    background: var(--brand-yellow) !important;
    transform: translate(1px, 1px) !important;
    box-shadow: 1px 1px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-list,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-list {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)) !important;
    gap: 16px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-card,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-card {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    padding: 14px 16px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-card[hidden] {
    display: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-card.is-new {
    border-left: 8px solid var(--brand-danger) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-head {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: space-between !important;
    align-items: center !important;
    gap: 6px 12px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-student {
    font-weight: 900 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-date {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    padding: 2px 8px !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-bg) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-title {
    margin: 0 !important;
    font-weight: 700 !important;
    word-break: break-word !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-items {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border-top: 2px dashed #d0d0d0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-item {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 10px 0 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-item + .prof-delivery-item {
    margin-top: 6px !important;
    border-top: 1px solid #eee !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-file {
    flex: 1 1 100% !important;
    min-width: 0 !important;
    font-size: 0.85rem !important;
    word-break: break-word !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-muted {
    color: var(--brand-text-muted) !important;
    font-size: 0.8rem !important;
    font-weight: 600 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-state {
    padding: 3px 8px !important;
    border: 2px solid var(--brand-black) !important;
    font-size: 0.7rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-state.is-new { background: var(--brand-danger) !important; color: var(--brand-white) !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-state.is-pending { background: var(--brand-yellow) !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-state.is-done { background: #dff5e3 !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-actions,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    margin-left: auto !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .prof-delivery-actions .btn,
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content .prof-assign-actions .btn {
    padding: 6px 12px !important;
    font-size: 0.7rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-message {
    margin: 0 !important;
    white-space: pre-wrap !important;
    word-break: break-word !important;
    font-size: 0.9rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-file {
    font-size: 0.85rem !important;
    word-break: break-word !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-actions {
    margin-left: 0 !important;
    margin-top: auto !important;
    padding-top: 10px !important;
    border-top: 2px dashed #d0d0d0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-filter-empty {
    font-weight: 700 !important;
    color: var(--brand-text-muted) !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-list,
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-list {
        grid-template-columns: 1fr !important;
    }
}

/* ── Ficha: tablas apiladas en móvil (etiquetas puestas por profesor-tablas.js) ── */
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack,
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody,
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tr,
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box !important;
        white-space: normal !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack {
        overflow: visible !important;
        border: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack thead {
        display: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr {
        margin-bottom: 12px !important;
        padding: 4px 12px !important;
        background: var(--brand-white) !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 8px !important;
        box-shadow: 3px 3px 0 var(--brand-black) !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td {
        display: flex !important;
        justify-content: space-between !important;
        align-items: center !important;
        gap: 12px !important;
        padding: 8px 0 !important;
        text-align: right !important;
        border: none !important;
        border-bottom: 1px dashed #d0d0d0 !important;
        word-break: break-word !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td:last-child {
        border-bottom: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td::before {
        content: attr(data-label) !important;
        flex-shrink: 0 !important;
        max-width: 45% !important;
        text-align: left !important;
        font-size: 0.68rem !important;
        font-weight: 800 !important;
        text-transform: uppercase !important;
        letter-spacing: 0.4px !important;
        color: var(--brand-text-muted) !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td[data-label=""]::before {
        content: none !important;
    }
    /* La primera celda hace de título de la tarjeta */
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td:first-child {
        font-weight: 900 !important;
        font-size: 1rem !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td:first-child p {
        margin: 0 !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-empty {
        display: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack .prof-cell-value {
        min-width: 0 !important;
        text-align: right !important;
    }
    /* Celda de botones: etiqueta arriba y botones en rejilla de 2 columnas iguales */
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td.prof-cell-actions {
        display: block !important;
        text-align: left !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tbody > tr > td.prof-cell-actions::before {
        display: block !important;
        max-width: none !important;
        margin-bottom: 8px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-actions > .prof-cell-value {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 8px !important;
        text-align: center !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-actions > .prof-cell-value > .btn,
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-actions > .prof-cell-value > a.btn {
        width: 100% !important;
        margin: 0 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        gap: 6px !important;
        padding: 8px 6px !important;
        font-size: 0.66rem !important;
        letter-spacing: 0 !important;
        word-break: normal !important;
        overflow-wrap: normal !important;
        white-space: nowrap !important;
    }
    /* Si el número de botones es impar, el último ocupa las dos columnas */
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-actions > .prof-cell-value > .btn:last-of-type:nth-of-type(odd) {
        grid-column: 1 / -1 !important;
    }
    /* Un único botón (p.ej. "Ver nota", "Evaluar"): alineado a la derecha, no a lo ancho */
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-actions:not(:has(.prof-cell-value > .btn ~ .btn)) {
        display: flex !important;
        justify-content: space-between !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-actions:not(:has(.prof-cell-value > .btn ~ .btn))::before {
        margin-bottom: 0 !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack td.prof-cell-actions:not(:has(.prof-cell-value > .btn ~ .btn)) > .prof-cell-value {
        display: block !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) table.prof-stack tr.prof-row-full > td {
        justify-content: center !important;
        text-align: center !important;
    }

    /* Ventanas (modales) en móvil: casi a pantalla completa */
    body:is(.role-profesor, .role-director, .role-administrativo) .modal-dialog {
        margin: 8px !important;
        max-width: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .modal-body {
        padding: 12px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .modal-header {
        align-items: flex-start !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .modal-title {
        font-size: 1.05rem !important;
        line-height: 1.25 !important;
    }
}

/* ── Calificaciones: método + botones ordenados ── */
body:is(.role-profesor, .role-director, .role-administrativo) #calificaciones form .row > [class*="col-"] {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    gap: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #calificaciones form label[for="method"] {
    flex-basis: 100% !important;
    margin: 0 !important;
    font-weight: 800 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #calificaciones #method {
    flex: 1 1 220px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #calificaciones form .row > .col-sm-6 + .col-sm-6 {
    justify-content: flex-end !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) #calificaciones form .row > .col-sm-6 + .col-sm-6 {
        justify-content: flex-start !important;
        margin-top: 12px !important;
    }
}

/* ── Alumnos: botones de comunicados en fila ── */
body:is(.role-profesor, .role-director, .role-administrativo) #alumnos .col-sm-2:has(> .btn) {
    margin-bottom: 8px !important;
}

/* ── Impartir clase (rama del profesor en edit.html.twig) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-session-creator {
    text-align: center !important;
    padding: 12px 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-hint {
    margin: 0 0 12px !important;
    font-weight: 700 !important;
}
/* display sin !important: el JS oculta/muestra estas filas con style.display */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-actions {
    display: flex;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 10px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-pair {
    display: inline-flex !important;
    gap: 6px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-head {
    padding: 14px 16px !important;
    margin-bottom: 16px !important;
    background: var(--apr-color-yellow-light) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-badge {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 2px 8px !important;
    background: var(--brand-danger) !important;
    color: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.68rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-badge::before {
    content: '' !important;
    width: 8px !important;
    height: 8px !important;
    border-radius: 50% !important;
    background: var(--brand-white) !important;
    animation: qsPulseDot 1.3s ease-in-out infinite !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-title {
    margin: 8px 0 2px !important;
    font-size: 1.3rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-meta {
    margin: 0 !important;
    color: var(--brand-text-muted) !important;
    font-weight: 600 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important;
    gap: 14px !important;
    margin-bottom: 24px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-grid.collapse:not(.show) {
    display: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-box {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    padding: 14px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-box h4 {
    margin: 0 !important;
    font-size: 0.9rem !important;
    text-transform: uppercase !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-box .prof-live-actions {
    justify-content: flex-start !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-box .form-control {
    flex: 1 1 100% !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-attendance {
    padding-top: 16px !important;
    border-top: 3px dashed var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-live-attendance > #attendancePanel {
    margin: 0 !important;
    padding: 0 !important;
}
/* Enlaces con aspecto de botón: sin subrayado (la regla general de <a> lo pone) */
body:is(.role-profesor, .role-director, .role-administrativo) a.btn,
body:is(.role-profesor, .role-director, .role-administrativo) a.btn:hover {
    text-decoration: none !important;
}

/* Campos de fichero: el relleno general de los inputs hace que el botón
   "Seleccionar archivo" se salga del recuadro */
body:is(.role-profesor, .role-director, .role-administrativo) input[type="file"] {
    padding: 6px !important;
    font-size: 0.8rem !important;
    line-height: 1.3 !important;
    height: auto !important;
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) input[type="file"]::file-selector-button {
    margin-right: 10px !important;
    padding: 6px 12px !important;
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: var(--apr-radius-pill) !important;
    font-family: 'Inter', sans-serif !important;
    font-size: 0.72rem !important;
    font-weight: 800 !important;
    cursor: pointer !important;
}

/* ── Leyenda de colores de alumnos (asistencia/panel.html.twig y pestaña Alumnos) ── */
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda {
    width: 100% !important;
    margin: 16px 0 0 !important;
    padding: 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .legend {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    margin: 0 !important;
    padding: 10px 12px !important;
    list-style: none !important;
    background: var(--brand-bg) !important;
    border: 2px dashed var(--brand-black) !important;
    border-radius: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .legend::before {
    content: 'Leyenda' !important;
    margin-right: 4px !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 0.68rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 1px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .legend li {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    margin: 0 !important;
    padding: 3px 10px 3px 6px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: var(--apr-radius-pill) !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .legend li b {
    font-weight: 900 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .legend li span {
    display: inline-block !important;
    width: 12px !important;
    height: 12px !important;
    margin: 0 !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 50% !important;
    float: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .bk-blue { background: blue !important; }
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .bk-green { background: green !important; }
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .bk-red { background: red !important; }
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .bk-black { background: var(--brand-black) !important; }
body:is(.role-profesor, .role-director, .role-administrativo) #leyenda .bk-lightgray { background: lightgray !important; }

/* Aviso "No hay alumnos inscritos..." del panel de asistencia */
body:is(.role-profesor, .role-director, .role-administrativo) #attendancePanel > .panel-line-data:only-of-type,
body:is(.role-profesor, .role-director, .role-administrativo) [id^="sessionAttendancePanel_"] > .panel-line-data {
    padding: 18px !important;
    border: 2px dashed var(--brand-black) !important;
    border-left: 2px dashed var(--brand-black) !important;
    background: var(--brand-white) !important;
    font-weight: 700 !important;
}

/* Material didáctico dentro de la ficha (carpeta/emisor.html.twig): sus
   elementos son .col-sm-2 en vez de .folderElem; en la rejilla #folders
   no pueden conservar el ancho de columna de Bootstrap */
body:is(.role-profesor, .role-director, .role-administrativo) #folders > [class*="col-"] {
    flex: none !important;
    max-width: none !important;
    width: auto !important;
    padding: 12px 6px 6px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
    word-break: normal !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #folders > [class*="col-"] > .row {
    margin: 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #folders > [class*="col-"] p {
    margin: 6px 0 0 !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
    overflow-wrap: anywhere !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #folders > [class*="col-"]:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: 4px 4px 0 var(--brand-black) !important;
}

/* Desplegables bootstrap-select (p.ej. "Cargar predefinido"): el borde lo
   pone el botón; el contenedor .form-control no debe llevar otro */
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select.form-control,
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select {
    border: none !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    height: auto !important;
    width: 100% !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select > .dropdown-toggle {
    width: 100% !important;
    padding: 10px 14px !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-weight: 600 !important;
    font-size: 0.9rem !important;
    transform: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select > .dropdown-toggle:focus,
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select.show > .dropdown-toggle {
    border-color: var(--brand-cyan) !important;
    box-shadow: 4px 4px 0 var(--brand-cyan) !important;
    outline: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .filter-option-inner-inner {
    color: var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select > .dropdown-toggle.bs-placeholder .filter-option-inner-inner {
    color: var(--brand-text-muted) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu {
    border: 3px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: 4px 4px 0 var(--brand-black) !important;
}
/* style.css fija min-width: 500px al menú: en el móvil (p. ej. "Compartir
   archivos") se salía de la pantalla. Que mida como el botón y parta el texto */
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select > .dropdown-menu {
    min-width: 100% !important;
    max-width: calc(100vw - 32px) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu li a .text {
    white-space: normal !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu .inner {
    max-height: 280px !important;
    overflow-y: auto !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu li a,
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu .dropdown-item {
    color: var(--brand-black) !important;
    text-decoration: none !important;
    font-weight: 600 !important;
    padding: 8px 14px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu li a:hover,
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu li.active a,
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu .dropdown-item:hover {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .bs-searchbox .form-control {
    padding: 6px 10px !important;
}
/* Opción de relleno vacía (<option value="" disabled>) del select original */
body:is(.role-profesor, .role-director, .role-administrativo) .bootstrap-select .dropdown-menu li.disabled:has(.text:empty) {
    display: none !important;
}

/* Páginas Tailwind dentro de la plantilla del profesor (.prof-tw):
   campos .neo-input que en base-alumno define su propia hoja de estilos */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw .neo-input {
    display: block !important;
    width: 100% !important;
    padding: 8px 12px !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: 0 !important;
    font-family: 'Inter', sans-serif !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw .neo-input:focus {
    outline: none !important;
    border-color: var(--brand-cyan) !important;
    box-shadow: 4px 4px 0 var(--brand-cyan) !important;
}
/* Las tarjetas de Tailwind llevan su propio relleno (p-6, p-8, px-6 py-3...) */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw .neo-card { padding: 0 !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw .neo-card.p-6 { padding: 1.5rem !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw .neo-card.p-8 { padding: 2rem !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw .neo-card.px-6.py-3 { padding: 0.75rem 1.5rem !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw .neo-card:hover { transform: none !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw table th,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw table td {
    border: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw a.neo-btn,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tw a.neo-btn:hover {
    text-decoration: none !important;
    color: inherit !important;
}

/* ── Retoques generales ─────────────────────────────────────── */

/* Título de página: sin el degradado amarillo antiguo de style.css */
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle {
    background: none !important;
    filter: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0 0 12px !important;
    margin: 0 0 24px !important;
    border-bottom: 3px solid var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle .sectitle {
    font-size: 1.6rem !important;
    line-height: 1.15 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle .sectitle i {
    color: var(--brand-black) !important;
    background: var(--brand-yellow) !important;
    border: 2px solid var(--brand-black) !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    padding: 6px !important;
    margin-right: 6px !important;
    font-size: 0.8em !important;
    vertical-align: middle !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle .secinfo {
    color: var(--brand-text-muted) !important;
    font-weight: 700 !important;
    font-size: 0.9rem !important;
}
/* La ventana de modal comparte regla con .headTitle en style.css: mantenerla */
body:is(.role-profesor, .role-director, .role-administrativo) .modal-header {
    border-radius: 0 !important;
}

/* Vídeos: la ayuda "¿No puedes reproducir los vídeos?" como enlace discreto */
body:is(.role-profesor, .role-director, .role-administrativo) #archivos .cookiesButton {
    margin: 12px 0 !important;
    text-align: center !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab ~ .tab-content #archivos .cookiesButton > [class*=col] {
    flex: 1 1 100% !important;
    max-width: 100% !important;
    text-align: center !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #archivos .cookiesButton .btn {
    background: transparent !important;
    color: var(--brand-danger) !important;
    border: none !important;
    box-shadow: none !important;
    padding: 4px 8px !important;
    font-size: 0.78rem !important;
    text-transform: none !important;
    text-decoration: underline !important;
    transform: none !important;
}

/* Cabecera y menú en móvil: más compactos para dejar sitio al contenido */
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead {
        padding: 8px 12px !important;
        border-bottom-width: 3px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead-logo-link {
        padding: 2px 6px !important;
        box-shadow: 2px 2px 0 var(--brand-black) !important;
        border-width: 2px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead-logo {
        height: 38px !important;
        max-width: 32vw !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almpre {
        display: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .almhead .almnombre {
        font-size: 0.95rem !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .alm-avatar {
        width: 42px !important;
        height: 42px !important;
        font-size: 0.95rem !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .dash-mobile-nav {
        padding: 8px 16px !important;
        border-bottom-width: 3px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .mobile-nav-toggle {
        padding: 8px 14px !important;
        box-shadow: 3px 3px 0 var(--brand-black) !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .headTitle .sectitle {
        font-size: 1.3rem !important;
    }
}

/* ── Formularios del profesor (Mis datos) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-field {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-field label {
    margin: 0 !important;
    font-size: 0.75rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.4px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-form .prof-hub-grid {
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-form-actions {
    display: flex !important;
    justify-content: flex-end !important;
    margin-top: 24px !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-form-actions .btn {
        width: 100% !important;
    }
}

/* ── Mis reservas de biblioteca (compartida con alumno) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .secfilarow {
    align-items: center !important;
    margin: 0 0 12px !important;
    padding: 12px 8px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .reserves-empty {
    display: block !important;
    border-style: dashed !important;
    box-shadow: none !important;
    font-weight: 700 !important;
    padding: 24px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .tablelabelsbook {
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
    border-radius: 0 !important;
    margin: 0 0 12px !important;
    padding: 10px 0 !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .tablelabelsbook {
        display: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .secfilarow > [class*="col-"] {
        margin: 4px 0 !important;
    }
}

/* ── Info acoso laboral / prevención de riesgos (compartidas con administrativo) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .editForm.panel2 iframe {
    width: 100% !important;
    height: 60vh !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-white) !important;
    margin-bottom: 16px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .editForm.panel2 .title {
    font-weight: 900 !important;
    text-align: left !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .editForm.panel2 .row:has(> .btnUpdate) {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
    margin: 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .editForm.panel2 .btnUpdate {
    flex: 0 1 auto !important;
    max-width: 100% !important;
    width: auto !important;
    padding: 0 !important;
    margin: 0 !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .editForm.panel2 iframe {
        height: 45vh !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .editForm.panel2 .btnUpdate,
    body:is(.role-profesor, .role-director, .role-administrativo) .editForm.panel2 .btnUpdate .btn {
        width: 100% !important;
    }
}

/* ── Ficha: pestaña Informes (un bloque por alumno) ── */
body:is(.role-profesor, .role-director, .role-administrativo) #informes .mt-4 > .mb-4 {
    padding: 12px 14px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #informes .input-group {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    margin-top: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #informes .input-group > textarea {
    width: 100% !important;
    min-height: 90px !important;
    border-radius: 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #informes .input-group-prepend,
body:is(.role-profesor, .role-director, .role-administrativo) #informes .input-group-text {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    background: none !important;
    border: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #informes .input-group-text .text-left {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #informes .input-group-text br {
    display: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #informes .input-group-text .btn {
    margin: 0 !important;
}

/* ── Pestañas genéricas (p.ej. Mis ficheros): mismo estilo que las de la ficha ── */
body:is(.role-profesor, .role-director, .role-administrativo) .nav-tabs:not(#subjectTab) {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    border-bottom: none !important;
    margin-bottom: 16px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .nav-tabs:not(#subjectTab) .nav-link {
    padding: 6px 12px !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: var(--apr-radius-pill) !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    font-size: 0.78rem !important;
    font-weight: 800 !important;
    text-decoration: none !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .nav-tabs:not(#subjectTab) .nav-link.active {
    background: var(--brand-yellow) !important;
    transform: translate(1px, 1px) !important;
    box-shadow: 1px 1px 0 var(--brand-black) !important;
}
/* Título de página con botones: que los botones pasen debajo si no caben */
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle:has(.filtros .btn, > .btn, > a.btn) {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 10px 16px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle .filtros.float-right,
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle > .float-right {
    float: none !important;
    margin-left: auto !important;
}

/* ── Ventana "Entregas del encargo" (tarjetas en #assignmentDeliveriesCards) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-summary {
    margin: 0 0 16px !important;
    padding: 10px 14px !important;
    background: var(--apr-color-yellow-light) !important;
    border: 2px solid var(--brand-black) !important;
    font-size: 0.95rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) #assignmentDeliveriesCards .prof-section-title {
    margin: 18px 0 10px !important;
    font-size: 0.95rem !important;
    text-transform: uppercase !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-answer {
    padding: 8px 10px !important;
    background: #dff5e3 !important;
    border: 2px solid var(--brand-black) !important;
    font-size: 0.85rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-missing-list {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-card.is-missing {
    padding: 6px 10px !important;
    gap: 0 !important;
    box-shadow: none !important;
    border-style: dashed !important;
    background: var(--brand-bg) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-card.is-missing .prof-delivery-head {
    gap: 8px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-card.is-missing .prof-delivery-student {
    font-size: 0.82rem !important;
    font-weight: 700 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-card.is-missing .prof-state {
    display: none !important;
}

/* ── Inicio del profesor (user/profesor.html.twig) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-sidebar {
    padding-top: 12px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-stats {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 16px !important;
    margin-bottom: 24px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-stat {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    padding: 16px 18px !important;
    background: var(--prof-accent-light) !important;
    color: var(--brand-black) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    text-decoration: none !important;
    transition: transform 0.15s ease, box-shadow 0.15s ease !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-stat:hover {
    transform: translate(-2px, -2px) !important;
    box-shadow: var(--apr-shadow-hover) !important;
    color: var(--brand-black) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-stat-value {
    font-size: 2.2rem !important;
    font-weight: 900 !important;
    line-height: 1 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-stat-label {
    font-size: 0.78rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-stat.is-alert {
    background: var(--brand-danger) !important;
    color: var(--brand-white) !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-home-grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)) !important;
    gap: 24px !important;
    align-items: start !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-today-item {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 10px !important;
    padding-bottom: 12px !important;
    border-bottom: 2px dashed #d0d0d0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-today-item:last-child {
    border-bottom: none !important;
    padding-bottom: 0 !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-today-info {
    flex: 1 1 140px !important;
    display: flex !important;
    flex-direction: column !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-stats li a {
    color: var(--brand-black) !important;
    text-decoration: underline !important;
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-stats {
        grid-template-columns: 1fr 1fr !important;
        gap: 10px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-stats .prof-stat:last-child {
        grid-column: 1 / -1 !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-stat {
        padding: 12px !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .prof-stat-value {
        font-size: 1.7rem !important;
    }
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-today-item .btn,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-hub-card-body > .btn {
    padding: 7px 14px !important;
    font-size: 0.72rem !important;
    align-self: flex-start !important;
    text-decoration: none !important;
}

/* ── Gestión de formación interna/externa (formacion-interna/_index-profesor) ── */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-tags {
    display: inline-flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-card .prof-asg-name {
    margin: 4px 0 0 !important;
    font-size: 1.1rem !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .headTitle .filtros.right {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    width: 100% !important;
    margin-top: 12px !important;
}
/* Botones de las tarjetas de lista: mismo tamaño compacto en cualquier página */
body:is(.role-profesor, .role-director, .role-administrativo) .prof-assign-actions .btn,
body:is(.role-profesor, .role-director, .role-administrativo) .prof-delivery-actions .btn {
    padding: 6px 12px !important;
    font-size: 0.7rem !important;
    line-height: 1.25 !important;
    white-space: nowrap !important;
    text-decoration: none !important;
}
/* Desplegables nativos: la altura fija de Bootstrap cortaba el texto con el relleno nuevo */
body:is(.role-profesor, .role-director, .role-administrativo) select.form-control,
body:is(.role-profesor, .role-director, .role-administrativo) select {
    height: auto !important;
    min-height: 44px !important;
    line-height: 1.3 !important;
}
/* Compartir archivos: el botón Aceptar va posicionado en absoluto y tapaba "Fecha fin" */
body:is(.role-profesor, .role-director, .role-administrativo) .botonCompartir button {
    position: static !important;
    margin-top: 12px !important;
}
body:is(.role-profesor, .role-director, .role-administrativo) .botonCompartir {
    display: flex !important;
    justify-content: flex-end !important;
    width: 100% !important;
}

/* ============================================================
   ADMIN VIEW STYLES (director y administrativo) — issue #93
   El armazón (cabecera, menú lateral, menú móvil) reutiliza las
   reglas del profesor vía body:is(.role-profesor, .role-director,
   .role-administrativo). Aquí va solo lo propio de administración.
   ============================================================ */

/* Grupos plegables del menú lateral */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-group {
    width: 100% !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-group-toggle {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
    background: none !important;
    border: none !important;
    cursor: pointer !important;
    padding-right: 6px !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-group-chevron {
    font-size: 10px !important;
    transition: transform 0.15s ease !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-group.collapsed .adm-group-chevron {
    transform: rotate(-90deg) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-group.collapsed .adm-group-items {
    display: none !important;
}
/* En el móvil el menú sale siempre completo: sin plegado ni flechas */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-mobile-nav .adm-group-chevron {
    display: none !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-mobile-nav .adm-nav-group.collapsed .adm-group-items {
    display: block !important;
}

/* Botón "Contraer" y modo solo iconos */
body.role-director .adm-collapse-btn,
body.role-administrativo .adm-collapse-btn {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin-top: 10px !important;
    padding: 8px 12px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-white) !important;
    font-weight: 800 !important;
    font-size: 12px !important;
    cursor: pointer !important;
}
body.role-director .adm-collapse-btn:hover,
body.role-administrativo .adm-collapse-btn:hover {
    background: var(--brand-yellow) !important;
}
body.adm-nav-mini .adm-sidebar {
    width: 72px !important;
    min-width: 72px !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
}
body.adm-nav-mini .adm-sidebar .nav-panel-btn span:not(.adm-ico),
body.adm-nav-mini .adm-sidebar .adm-group-toggle span,
body.adm-nav-mini .adm-sidebar .adm-group-chevron,
body.adm-nav-mini .adm-sidebar .adm-collapse-btn span,
body.adm-nav-mini .adm-sidebar .sidebar-footer {
    display: none !important;
}
body.adm-nav-mini .adm-sidebar .adm-group-toggle {
    justify-content: center !important;
    border-top: 2px dashed var(--brand-black) !important;
    border-radius: 0 !important;
    padding: 4px 0 !important;
    min-height: 10px !important;
}
body.adm-nav-mini .adm-sidebar .adm-group-toggle span { display: none !important; }
/* Contraído, los grupos no se pliegan: siempre todos los iconos a la vista */
body.adm-nav-mini .adm-sidebar .adm-nav-group.collapsed .adm-group-items {
    display: block !important;
}
body.adm-nav-mini .adm-sidebar .nav-panel-btn {
    justify-content: center !important;
    padding: 10px 8px !important;
}
body.adm-nav-mini .adm-sidebar .nav-panel-btn i {
    margin-right: 0 !important;
}
body.adm-nav-mini .adm-collapse-btn {
    justify-content: center !important;
    width: 100% !important;
}
body.adm-nav-mini .adm-collapse-btn i {
    transform: rotate(180deg) !important;
}

/* Campana de avisos en la cabecera */
body.role-director .adm-bell,
body.role-administrativo .adm-bell {
    position: relative !important;
    margin-right: 12px !important;
}
body.role-director .adm-bell-btn,
body.role-administrativo .adm-bell-btn {
    position: relative !important;
    width: 46px !important;
    height: 46px !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: 50% !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    font-size: 17px !important;
    cursor: pointer !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
}
body.role-director .adm-bell-btn:hover,
body.role-administrativo .adm-bell-btn:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: 4px 4px 0px 0px var(--brand-black) !important;
    background: var(--brand-yellow) !important;
}

/* Desplegable propio (.nb-dd): mismo aspecto en todas las páginas */
body.role-director .nb-dd,
body.role-administrativo .nb-dd {
    position: relative !important;
    display: inline-block !important;
}
body.role-director .nb-dd-panel,
body.role-administrativo .nb-dd-panel {
    display: none !important;
    position: absolute !important;
    top: calc(100% + 8px) !important;
    right: 0 !important;
    z-index: 1050 !important;
    min-width: 240px !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 6px !important;
}
body.role-director .nb-dd.open .nb-dd-panel,
body.role-administrativo .nb-dd.open .nb-dd-panel {
    display: block !important;
}
body.role-director .nb-dd-head,
body.role-administrativo .nb-dd-head {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    padding: 7px 12px 3px !important;
}
body.role-director .nb-dd-item,
body.role-administrativo .nb-dd-item {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100% !important;
    padding: 9px 12px !important;
    border: none !important;
    border-radius: 8px !important;
    background: none !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    color: var(--brand-black) !important;
    text-decoration: none !important;
    cursor: pointer !important;
    text-align: left !important;
}
body.role-director .nb-dd-item:hover,
body.role-administrativo .nb-dd-item:hover {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    text-decoration: none !important;
}
body.role-director .nb-dd-item i,
body.role-administrativo .nb-dd-item i {
    width: 18px !important;
    text-align: center !important;
}
body.role-director .nb-dd-sep,
body.role-administrativo .nb-dd-sep {
    border-top: 2px dashed var(--brand-black) !important;
    margin: 5px 8px !important;
}

/* El contenido antiguo (Bootstrap) dentro del armazón nuevo: respiración mínima
   sin tocar las páginas. El rediseño de cada pantalla llega en su fase. */
body.role-director .dash-main .wrap-body,
body.role-administrativo .dash-main .wrap-body {
    min-width: 0 !important;
}

/* --- Menú de administración: filtro rápido, favoritos y densidad ---
   El director/administrativo salta entre pantallas todo el día: filas
   compactas, el menú con scroll propio y dos atajos (filtro y estrellas). */

/* El menú siempre a mano: pegado arriba con su propio scroll */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar {
    position: sticky !important;
    top: 12px !important;
    max-height: calc(100vh - 24px) !important;
    overflow-y: auto !important;
    scrollbar-width: thin !important;
}

/* Filas más compactas que las del profesor */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn {
    /* Menú compacto: opciones de 36 px e iconos de 22, para que quepa más sin bajar */
    padding: 3px 8px !important;
    font-size: 12.5px !important;
    margin-bottom: 1px !important;
    gap: 8px !important;
    min-height: 0 !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn .adm-ico {
    width: 22px !important;
    height: 22px !important;
    min-width: 22px !important;
    font-size: 10.5px !important;
    border-radius: 6px !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .sidebar-section-label {
    margin-top: 4px !important;
    margin-bottom: 0 !important;
    padding: 3px 8px !important;
    font-size: 10px !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .adm-nav-group {
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
}

/* Cabecera más contenida que la del profesor: es una pantalla de trabajo */
body.role-director .almhead .almnombre,
body.role-administrativo .almhead .almnombre {
    font-size: 24px !important;
}
body.role-director .almhead .almhead-email,
body.role-administrativo .almhead .almhead-email {
    font-size: 12px !important;
}

/* Filtro rápido */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin: 0 0 8px !important;
    padding: 7px 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    color: var(--brand-text) !important;
    background: var(--brand-white) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter:focus-within {
    border-color: var(--brand-black) !important;
    box-shadow: 2px 2px 0px 0px var(--brand-cyan) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter i {
    font-size: 12px !important;
    opacity: 0.8 !important;
    color: var(--brand-text-muted) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter input {
    flex: 1 !important;
    min-width: 0 !important;
    background: none !important;
    border: none !important;
    outline: none !important;
    color: var(--brand-text) !important;
    font-family: inherit !important;
    font-size: 13px !important;
    font-weight: 700 !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter input::placeholder {
    color: var(--brand-text-muted) !important;
    font-weight: 600 !important;
}

/* Filtrando: fuera lo que no casa, y los grupos plegados se abren */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .filter-hide {
    display: none !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar.filtering .adm-nav-group.collapsed .adm-group-items {
    display: block !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar.filtering .adm-nav-pinned {
    display: none !important;
}

/* Iconos del menú: cajita de color con borde, la firma del diseño.
   El color sale del data-accent de cada opción. */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .adm-ico,
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-mobile-nav .adm-ico {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: none !important;
    width: 25px !important;
    height: 25px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 7px !important;
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    box-shadow: 1.5px 1.5px 0px 0px rgba(0, 0, 0, 0.55) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .adm-ico i,
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-mobile-nav .adm-ico i {
    font-size: 11px !important;
    margin: 0 !important;
    width: auto !important;
    color: inherit !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) [data-accent="blue"] .adm-ico { background: var(--apr-color-blue) !important; color: var(--brand-white) !important; }
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) [data-accent="orange"] .adm-ico { background: var(--apr-color-orange) !important; color: var(--brand-white) !important; }
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) [data-accent="teal"] .adm-ico { background: var(--apr-color-teal) !important; color: var(--brand-white) !important; }
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) [data-accent="pink"] .adm-ico { background: var(--apr-color-pink) !important; color: var(--brand-white) !important; }
/* La opción activa lleva el fondo de su acento: la cajita pasa a negro */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn.active .adm-ico {
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
    box-shadow: none !important;
}

/* Menú contextual (botón derecho): añadir o quitar de Favoritos */
.adm-ctx {
    position: fixed;
    z-index: 2000;
    background: var(--brand-white);
    border: 3px solid var(--brand-black);
    border-radius: 10px;
    box-shadow: 4px 4px 0px 0px var(--brand-black);
    padding: 4px;
}
.adm-ctx-item {
    display: flex;
    align-items: center;
    gap: 8px;
    border: none;
    background: none;
    font-family: 'Inter', sans-serif;
    font-size: 13px;
    font-weight: 700;
    color: var(--brand-black);
    padding: 8px 12px;
    border-radius: 7px;
    cursor: pointer;
    white-space: nowrap;
}
.adm-ctx-item:hover {
    background: var(--brand-yellow);
}

/* Bloque de favoritos, separado del resto */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-pinned {
    width: 100% !important;
    padding-bottom: 6px !important;
    margin-bottom: 4px !important;
    border-bottom: 2px dashed rgba(255, 255, 255, 0.25) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-pinned-label {
    margin-top: 0 !important;
}

/* Contraído a iconos: sin filtro ni etiqueta, los favoritos quedan como iconos */
body.adm-nav-mini .adm-sidebar .adm-nav-filter,
body.adm-nav-mini .adm-sidebar .adm-pinned-label,
body.adm-nav-mini .adm-sidebar .adm-pin {
    display: none !important;
}

/* --- Menú de administración en claro ---
   El sidebar oscuro del profesor cansa la vista en una pantalla de
   trabajo de jornada completa: aquí fondo blanco, texto negro y el
   color solo en las cajitas de los iconos y en la opción activa. */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar {
    background: var(--brand-white) !important;
    border-right: 3px solid var(--brand-black) !important;
    color: var(--brand-text) !important;
}
/* Los títulos de grupo aquí SÍ son botones (pliegan el grupo): la regla
   del profesor los deja sin pointer-events y por eso no se podía plegar */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .adm-group-toggle {
    pointer-events: auto !important;
    cursor: pointer !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .sidebar-section-label {
    color: var(--brand-text-muted) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .adm-group-chevron {
    color: var(--brand-text-muted) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn {
    color: var(--brand-text) !important;
    background: transparent !important;
    border: 2px solid transparent !important;
    border-radius: 10px !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn i {
    color: inherit !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn:hover {
    background: var(--brand-bg) !important;
    border-color: var(--brand-black) !important;
    color: var(--brand-text) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn.active {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    border-color: var(--brand-black) !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
}
/* La cajita del icono conserva su color siempre (el hover del profesor
   ponía el icono en negro) */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn:hover .adm-ico i,
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn .adm-ico i {
    color: inherit !important;
}
body.role-director .adm-sidebar .nav-panel-btn:hover [data-accent] i { color: inherit !important; }
/* En claro la cajita no necesita sombra fuerte */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .adm-ico,
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-mobile-nav .adm-ico {
    box-shadow: none !important;
}
/* La activa mantiene la cajita en negro sobre amarillo */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .nav-panel-btn.active .adm-ico {
    background: var(--brand-black) !important;
    color: var(--brand-yellow) !important;
}
/* Favoritos, en claro */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-pinned {
    border-bottom: 2px dashed rgba(0, 0, 0, 0.3) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .sidebar-footer {
    color: var(--brand-text-muted) !important;
    border-top: 2px dashed rgba(0, 0, 0, 0.2) !important;
    background: transparent !important;
}
/* Relleno lateral propio (el sidebar del profesor va a padding 0 + oscuro) */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar {
    padding: 12px 10px !important;
}

/* --- Página de inicio de administración --- */
body.role-director .adm-inicio,
body.role-administrativo .adm-inicio {
    max-width: 1200px !important;
    margin: 0 auto !important;
    padding: 8px 4px 40px !important;
}
body.role-director .adm-inicio-head,
body.role-administrativo .adm-inicio-head {
    display: flex !important;
    align-items: flex-end !important;
    justify-content: space-between !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    margin-bottom: 18px !important;
}
body.role-director .adm-crumb,
body.role-administrativo .adm-crumb {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: 1.5px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-title,
body.role-administrativo .adm-title {
    font-size: 26px !important;
    font-weight: 900 !important;
    margin: 0 !important;
}
body.role-director .adm-fecha,
body.role-administrativo .adm-fecha {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
    padding: 4px 10px !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
}
/* Cifras */
body.role-director .adm-stats,
body.role-administrativo .adm-stats {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 14px !important;
    margin-bottom: 18px !important;
}
body.role-administrativo .adm-stats {
    grid-template-columns: repeat(3, 1fr) !important;
}
/* Inicio: las cifras siempre en una fila, sean 3 o 4 (un administrativo con permiso de
   importes también ve «Pendiente de cobro», y con 3 columnas la cuarta bajaba sola) */
@media (min-width: 992px) {
    body:is(.role-director, .role-administrativo) .adm-inicio .adm-stats {
        grid-template-columns: none !important;
        grid-auto-flow: column;
        grid-auto-columns: minmax(0, 1fr);
    }
}
body.role-director .adm-stat,
body.role-administrativo .adm-stat {
    display: block !important;
    text-align: center !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: 4px 4px 0px 0px var(--brand-yellow) !important;
    padding: 14px 10px !important;
    color: var(--brand-text) !important;
    text-decoration: none !important;
}
body.role-director .adm-stat:hover,
body.role-administrativo .adm-stat:hover {
    transform: translate(-2px, -2px) !important;
    box-shadow: 6px 6px 0px 0px var(--brand-black) !important;
    text-decoration: none !important;
    color: var(--brand-text) !important;
}
body.role-director .adm-stat b,
body.role-administrativo .adm-stat b {
    display: block !important;
    font-size: 26px !important;
    font-weight: 900 !important;
    line-height: 1.2 !important;
}
body.role-director .adm-stat span,
body.role-administrativo .adm-stat span {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-stat-alert,
body.role-administrativo .adm-stat-alert {
    box-shadow: 4px 4px 0px 0px var(--brand-danger) !important;
}
body.role-director .adm-stat-warn,
body.role-administrativo .adm-stat-warn {
    box-shadow: 4px 4px 0px 0px var(--apr-color-orange) !important;
}
body.role-director .adm-panel,
body.role-administrativo .adm-panel {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 16px !important;
}
body.role-director .adm-panel-title,
body.role-administrativo .adm-panel-title {
    font-size: 16px !important;
    font-weight: 900 !important;
    margin: 0 0 12px !important;
}
/* Accesos rápidos */
body.role-director .adm-quick-grid,
body.role-administrativo .adm-quick-grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 12px !important;
}
body.role-director .adm-quick,
body.role-administrativo .adm-quick {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 13px 14px !important;
    font-weight: 800 !important;
    font-size: 14px !important;
    color: var(--brand-text) !important;
    text-decoration: none !important;
}
body.role-director .adm-quick:hover,
body.role-administrativo .adm-quick:hover {
    transform: translate(-2px, -2px) !important;
    box-shadow: var(--apr-shadow-hover) !important;
    text-decoration: none !important;
    color: var(--brand-text) !important;
}
body.role-director .adm-quick .adm-ico,
body.role-administrativo .adm-quick .adm-ico {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: none !important;
    width: 34px !important;
    height: 34px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 9px !important;
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
}
body.role-director .adm-quick .adm-ico i,
body.role-administrativo .adm-quick .adm-ico i {
    font-size: 14px !important;
}
body.role-director .adm-quick small,
body.role-administrativo .adm-quick small {
    display: block !important;
    color: var(--brand-text-muted) !important;
    font-weight: 600 !important;
}
@media (max-width: 991px) {
    body.role-director .adm-stats,
    body.role-administrativo .adm-stats {
        grid-template-columns: repeat(2, 1fr) !important;
    }
}

/* Accesos rápidos a lo ancho (el inicio ya no lleva columna de avisos) */
body.role-director .adm-quick-grid-4,
body.role-administrativo .adm-quick-grid-4 {
    grid-template-columns: repeat(4, 1fr) !important;
}
@media (max-width: 991px) {
    body.role-director .adm-quick-grid-4,
    body.role-administrativo .adm-quick-grid-4 {
        grid-template-columns: 1fr 1fr !important;
    }
}

/* --- Listados de administración (alumnos, profesores, salas...) ---
   Mismas clases en todos los índices viejos: .sectitle, .tablelabels,
   .secfila, .buscador, .legend. Se estilizan una vez para toda la vista. */
body.role-director .sectitle,
body.role-administrativo .sectitle {
    font-size: 24px !important;
    font-weight: 900 !important;
}
body.role-director .secinfo,
body.role-administrativo .secinfo {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
}
/* Leyenda de colores como stickers */
body.role-director .legend li,
body.role-administrativo .legend li {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
    padding: 2px 9px !important;
    margin-right: 6px !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
}
/* Cabecera de columnas */
body.role-director .tablelabels,
body.role-administrativo .tablelabels {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    background: transparent !important;
    border: none !important;
    padding: 10px 6px 4px !important;
}
/* Cada fila como tarjeta */
body.role-director .secfila,
body.role-administrativo .secfila {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    margin-bottom: 10px !important;
    padding: 8px 6px !important;
}
body.role-director .secfila:hover,
body.role-administrativo .secfila:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: var(--apr-shadow) !important;
}
body.role-director .secfila .row,
body.role-administrativo .secfila .row {
    align-items: center !important;
}
/* Toolbar de página y menú de la fila */
body.role-director .adm-toolbar,
body.role-administrativo .adm-toolbar {
    display: flex !important;
    gap: 10px !important;
    flex-wrap: wrap !important;
    align-items: center !important;
}
body.role-director .adm-caret,
body.role-administrativo .adm-caret {
    font-size: 10px !important;
    margin-left: 4px !important;
}
body.role-director .adm-row-actions,
body.role-administrativo .adm-row-actions {
    display: flex !important;
    gap: 8px !important;
    justify-content: flex-end !important;
    align-items: center !important;
}
body.role-director .adm-row-more,
body.role-administrativo .adm-row-more {
    font-size: 17px !important;
    line-height: 1 !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
}
body.role-director .adm-dd-danger,
body.role-administrativo .adm-dd-danger {
    color: var(--brand-danger) !important;
}
/* El panel del menú de la fila se alinea a la derecha y por encima de la fila siguiente */
body.role-director .secfila .nb-dd-panel,
body.role-administrativo .secfila .nb-dd-panel {
    min-width: 200px !important;
}

/* --- Administración en el móvil ---
   El viewport ya está activo para director y administrativo: el armazón
   usa las mismas reglas de móvil del profesor (menú desplegable arriba)
   y aquí se apilan los listados y se da salida a las tablas anchas. */
@media (max-width: 767px) {
    /* Filas de listado: tarjeta apilada, sin cabecera de columnas */
    body.role-director .tablelabels,
    body.role-administrativo .tablelabels {
        display: none !important;
    }
    body.role-director .secfila .row,
    body.role-administrativo .secfila .row {
        display: block !important;
    }
    body.role-director .secfila .row > [class*="col"],
    body.role-administrativo .secfila .row > [class*="col"] {
        width: 100% !important;
        max-width: 100% !important;
        flex: none !important;
        text-align: left !important;
        padding: 2px 10px !important;
    }
    body.role-director .adm-row-actions,
    body.role-administrativo .adm-row-actions {
        justify-content: flex-start !important;
        padding-top: 6px !important;
    }
    /* Botoneras de página: debajo del título, sin flotar */
    body.role-director .filtros.float-right,
    body.role-administrativo .filtros.float-right {
        float: none !important;
        margin-top: 8px !important;
    }
    /* Tablas anchas de las pantallas viejas: scroll propio, no de la página */
    body.role-director .wrap-body table,
    body.role-administrativo .wrap-body table {
        display: block !important;
        max-width: 100% !important;
        overflow-x: auto !important;
    }
    body.role-director .wrap-body,
    body.role-administrativo .wrap-body {
        overflow-x: hidden !important;
    }
    body.role-director .adm-stats,
    body.role-administrativo .adm-stats {
        grid-template-columns: 1fr 1fr !important;
    }
    body.role-director .adm-quick-grid-4,
    body.role-administrativo .adm-quick-grid-4 {
        grid-template-columns: 1fr !important;
    }
}

/* --- Ficha del alumno: índice de secciones y separadores --- */
body.role-director,
body.role-administrativo {
    scroll-behavior: smooth !important;
}
body.role-director .adm-sec,
body.role-administrativo .adm-sec {
    scroll-margin-top: 90px !important;
    text-align: left !important;
    font-weight: 900 !important;
    border-bottom: 3px solid var(--brand-black) !important;
    padding: 18px 0 6px !important;
    margin-bottom: 14px !important;
}

/* --- Ficha del alumno: cajas por sección y formulario contenido --- */
/* Cada columna de la ficha es una tarjeta */
body.role-director .editForm > .row,
body.role-administrativo .editForm > .row {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 16px !important;
    align-items: flex-start !important;
    margin: 0 !important;
}
body.role-director .editForm > .row > [class*="col-"],
body.role-administrativo .editForm > .row > [class*="col-"] {
    flex: 1 1 300px !important;
    width: auto !important;
    max-width: none !important;
    min-width: 280px !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 16px !important;
}
/* Título de sección dentro de su caja */
body.role-director .editForm .adm-sec,
body.role-administrativo .editForm .adm-sec,
body.role-director .editForm h4,
body.role-administrativo .editForm h4 {
    font-size: 17px !important;
    text-align: left !important;
    border-bottom: 3px solid var(--brand-black) !important;
    padding: 0 0 8px !important;
    margin: 0 0 14px !important;
}
/* Fuera los chevrons decorativos de las etiquetas del HTML viejo */
body.role-director .editForm label .fa-angle-down,
body.role-administrativo .editForm label .fa-angle-down {
    display: none !important;
}
/* Etiquetas uniformes, legibles también en pantallas grandes (crecen con el ancho) */
body.role-director .editForm label,
body.role-administrativo .editForm label {
    font-family: 'Inter', sans-serif !important;
    font-size: clamp(12px, 0.72vw, 14px) !important;
    font-weight: 900 !important;
    letter-spacing: 0.6px !important;
    text-transform: uppercase !important;
    color: var(--brand-text, #1a1a1a) !important;
    margin-bottom: 4px !important;
}
body.role-director .editForm .form-control,
body.role-administrativo .editForm .form-control,
body.role-director .editForm input,
body.role-administrativo .editForm input,
body.role-director .editForm select,
body.role-administrativo .editForm select {
    font-size: 14px !important;
    font-weight: 600 !important;
    padding: 8px 10px !important;
    height: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
}
body.role-director .editForm input[type="checkbox"],
body.role-administrativo .editForm input[type="checkbox"],
body.role-director .editForm input[type="radio"],
body.role-administrativo .editForm input[type="radio"] {
    width: 16px !important;
    height: 16px !important;
    accent-color: var(--brand-black) !important;
}
/* Botones dentro de la ficha: compactos y sin desbordar la caja */
body.role-director .editForm .btn,
body.role-administrativo .editForm .btn {
    font-size: 12.5px !important;
    padding: 7px 14px !important;
    line-height: 1.25 !important;
    white-space: normal !important;
    max-width: 100% !important;
}
/* "Visado denegado": span con form-control+btn del HTML viejo, sin forma de píldora */
body.role-director .editForm #visado_denegado_div .btn,
body.role-administrativo .editForm #visado_denegado_div .btn {
    display: block !important;
    width: 100% !important;
    border-radius: 10px !important;
    height: auto !important;
}
/* Los paneles de opción (alert-info celeste viejo): tarjetitas del estilo */
body.role-director .editForm .alert-info,
body.role-administrativo .editForm .alert-info {
    background: var(--brand-bg) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    color: var(--brand-text) !important;
    padding: 9px 12px !important;
    margin-bottom: 8px !important;
    display: flex !important;
    align-items: center !important;
    gap: 9px !important;
}
body.role-director .editForm .alert-info label,
body.role-administrativo .editForm .alert-info label {
    margin: 0 !important;
    color: var(--brand-text) !important;
}
/* Tablas y horarios dentro de la ficha caben en su caja */
body.role-director .editForm table,
body.role-administrativo .editForm table {
    max-width: 100% !important;
}
@media (max-width: 991px) {
    body.role-director .editForm > .row > [class*="col-"],
    body.role-administrativo .editForm > .row > [class*="col-"] {
        flex-basis: 100% !important;
        min-width: 0 !important;
    }
}

/* bootstrap-select sustituye el <select> nativo por su propio botón: el
   nativo debe seguir oculto (la regla de altura de la ficha lo destapaba) */
body.role-director .editForm .bootstrap-select select.selectpicker,
body.role-administrativo .editForm .bootstrap-select select.selectpicker,
body.role-director .editForm select.selectpicker.bs-select-hidden,
body.role-administrativo .editForm select.selectpicker.bs-select-hidden {
    display: none !important;
}

/* --- Ficha del alumno: parte baja (pagos y archivos) --- */
/* El contenedor viejo .editForm pintaba un fondo blanco gigante: las cajas
   son las columnas, el contenedor queda transparente */
body.role-director .editForm,
body.role-administrativo .editForm {
    background: transparent !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
}
/* Columna separadora que solo contiene un <hr>: no es una caja */
body.role-director .editForm > .row > [class*="col-"]:has(> hr:only-child),
body.role-administrativo .editForm > .row > [class*="col-"]:has(> hr:only-child) {
    display: none !important;
}
/* Botones de la zona de pagos: forma normal, no círculos */
body.role-director .editForm .btn-pagos,
body.role-administrativo .editForm .btn-pagos {
    width: auto !important;
    height: auto !important;
    border-radius: 999px !important;
    padding: 7px 14px !important;
    margin: 3px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
}
body.role-director .editForm .row.justify-content-center,
body.role-administrativo .editForm .row.justify-content-center {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    justify-content: center !important;
}
body.role-director .editForm .row.justify-content-center > [class*="col-"],
body.role-administrativo .editForm .row.justify-content-center > [class*="col-"] {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: none !important;
}
/* Tabla de pagos: scroll propio, nunca se sale de su caja */
body.role-director .editForm #table-pagos,
body.role-administrativo .editForm #table-pagos {
    display: block !important;
    overflow-x: auto !important;
    max-width: 100% !important;
}
body.role-director .editForm #table-pagos input,
body.role-administrativo .editForm #table-pagos input,
body.role-director .editForm #table-pagos select,
body.role-administrativo .editForm #table-pagos select {
    min-width: 80px !important;
    padding: 6px 8px !important;
    font-size: 13px !important;
}
/* Archivos del alumnado: nombre a la izquierda, botones compactos a la derecha */
body.role-director .editForm .archivo,
body.role-administrativo .editForm .archivo {
    display: flex !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    background: var(--brand-bg) !important;
    padding: 8px 10px !important;
    margin-bottom: 6px !important;
    font-size: 13px !important;
}
body.role-director .editForm .archivo > div,
body.role-administrativo .editForm .archivo > div,
body.role-director .editForm .archivo > a,
body.role-administrativo .editForm .archivo > a {
    float: none !important;
    flex: 1 1 200px !important;
    min-width: 0 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .editForm .archivo .btn,
body.role-administrativo .editForm .archivo .btn,
body.role-director .editForm h4 .btn,
body.role-administrativo .editForm h4 .btn {
    float: none !important;
    font-size: 11px !important;
    padding: 4px 10px !important;
    margin: 2px !important;
    text-transform: none !important;
}
body.role-director .editForm h4 br,
body.role-administrativo .editForm h4 br {
    display: none !important;
}
body.role-director .editForm h4,
body.role-administrativo .editForm h4 {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 6px !important;
}
body.role-director .editForm h4 > b,
body.role-administrativo .editForm h4 > b {
    flex: 1 1 100% !important;
}
/* Las cajas anchas (col-lg-8, p.ej. Datos de pago) ocupan el doble que las estrechas */
body.role-director .editForm > .row > .col-lg-8,
body.role-administrativo .editForm > .row > .col-lg-8 {
    flex: 2 1 520px !important;
}

/* --- Ficha del alumno: cabecera ordenada --- */
body.role-director .adm-ficha-head,
body.role-administrativo .adm-ficha-head {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    justify-content: space-between !important;
    gap: 14px !important;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 0 10px !important;
}
body.role-director .adm-ficha-titulo,
body.role-administrativo .adm-ficha-titulo {
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
    min-width: 0 !important;
}
body.role-director .adm-ficha-titulo .sectitle,
body.role-administrativo .adm-ficha-titulo .sectitle {
    font-size: 26px !important;
    font-weight: 900 !important;
    line-height: 1.15 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-ficha-titulo .sectitle::before,
body.role-administrativo .adm-ficha-titulo .sectitle::before {
    content: none !important;
    display: none !important;
}
/* Botonera: misma altura y estilo en todo; texto normal, no versalitas */
body.role-director .adm-ficha-head .adm-toolbar,
body.role-administrativo .adm-ficha-head .adm-toolbar {
    float: none !important;
    margin: 0 !important;
}
body.role-director .adm-ficha-head .adm-toolbar .btn,
body.role-administrativo .adm-ficha-head .adm-toolbar .btn {
    text-transform: none !important;
    font-size: 13.5px !important;
    letter-spacing: 0 !important;
    height: 38px !important;
    padding: 0 16px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
    margin: 0 !important;
}
/* Paginador entre alumnos: un solo bloque  ‹  3 de 170  › */
body.role-director .adm-pager,
body.role-administrativo .adm-pager {
    display: inline-flex !important;
    align-items: center !important;
    height: 38px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-white) !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
    overflow: hidden !important;
}
body.role-director .adm-pager .btn,
body.role-administrativo .adm-pager .btn {
    height: 100% !important;
    width: 34px !important;
    padding: 0 !important;
    justify-content: center !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    transform: none !important;
}
body.role-director .adm-pager .btn:hover,
body.role-administrativo .adm-pager .btn:hover {
    background: var(--brand-yellow) !important;
}
body.role-director .adm-pager .posAlumn,
body.role-administrativo .adm-pager .posAlumn {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    padding: 0 8px !important;
    white-space: nowrap !important;
}
body.role-director .adm-pager .posAlumn:empty,
body.role-administrativo .adm-pager .posAlumn:empty {
    display: none !important;
}
body.role-director .adm-pager:not(:has(.btn:not([style*="display: none"]))):not(:has(.posAlumn:not(:empty))),
body.role-administrativo .adm-pager:not(:has(.btn:not([style*="display: none"]))):not(:has(.posAlumn:not(:empty))) {
    display: none !important;
}

/* --- Ficha del alumno: aire dentro de las cajas --- */
/* Las .row de Bootstrap llevan margen negativo: dentro de la caja pegaban
   títulos y campos al borde */
body.role-director .editForm > .row > [class*="col-"] > .row,
body.role-administrativo .editForm > .row > [class*="col-"] > .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
}
body.role-director .editForm > .row > [class*="col-"],
body.role-administrativo .editForm > .row > [class*="col-"] {
    padding: 18px 20px !important;
}

/* --- Ficha del alumno: desplegables con texto largo (asignaturas con horario) ---
   El texto elegido va en una línea con puntos suspensivos; nunca se sale */
body.role-director .editForm .bootstrap-select,
body.role-administrativo .editForm .bootstrap-select {
    width: 100% !important;
    max-width: 100% !important;
}
body.role-director .editForm .bootstrap-select > .dropdown-toggle,
body.role-administrativo .editForm .bootstrap-select > .dropdown-toggle {
    white-space: nowrap !important;
    height: auto !important;
    width: 100% !important;
    border-radius: 0 !important;
}
body.role-director .editForm .bootstrap-select .filter-option,
body.role-administrativo .editForm .bootstrap-select .filter-option,
body.role-director .editForm .bootstrap-select .filter-option-inner,
body.role-administrativo .editForm .bootstrap-select .filter-option-inner,
body.role-director .editForm .bootstrap-select .filter-option-inner-inner,
body.role-administrativo .editForm .bootstrap-select .filter-option-inner-inner {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    display: block !important;
    min-width: 0 !important;
}
/* Opciones del desplegable abierto: pueden ocupar varias líneas */
body.role-director .editForm .bootstrap-select .dropdown-menu li a .text,
body.role-administrativo .editForm .bootstrap-select .dropdown-menu li a .text {
    white-space: normal !important;
}
body.role-director .editForm .bootstrap-select .dropdown-menu,
body.role-administrativo .editForm .bootstrap-select .dropdown-menu {
    max-width: 100% !important;
}
body.role-director .editForm #visado_denegado_div .btn,
body.role-administrativo .editForm #visado_denegado_div .btn {
    font-size: 11px !important;
    padding: 6px 8px !important;
    overflow-wrap: anywhere !important;
    text-align: center !important;
}

/* --- Ficha del alumno: resumen, pestañas y vista general (alumno-ficha-pestanas.js) --- */
body.role-director .adm-resumen,
body.role-administrativo .adm-resumen {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 8px 18px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    padding: 9px 14px !important;
    margin: 0 0 12px !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
}
body.role-director .adm-resumen i,
body.role-administrativo .adm-resumen i {
    color: var(--brand-text-muted) !important;
    margin-right: 4px !important;
}
body.role-director .adm-res-estado,
body.role-administrativo .adm-res-estado {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    border: 2px solid var(--brand-black) !important;
    padding: 2px 9px !important;
    color: #fff !important;
}
body.role-director .adm-res-alta,
body.role-administrativo .adm-res-alta { background: var(--brand-success) !important; }
body.role-director .adm-res-baja,
body.role-administrativo .adm-res-baja { background: var(--brand-danger) !important; }
body.role-director .adm-res-debe,
body.role-administrativo .adm-res-debe {
    margin-left: auto !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 800 !important;
}
body.role-director .adm-res-debe-si,
body.role-administrativo .adm-res-debe-si {
    color: var(--brand-danger) !important;
}

/* Barra de pestañas pegada a su caja: la activa es del mismo blanco
   que la caja y tapa su borde superior, se leen como una sola pieza */
body.role-director .adm-tabs,
body.role-administrativo .adm-tabs {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    border-bottom: none !important;
    margin: 0 !important;
    padding: 0 10px !important;
    position: relative !important;
    z-index: 2 !important;
}
body.role-director .adm-tabs button,
body.role-administrativo .adm-tabs button {
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
    border: 3px solid var(--brand-black) !important;
    border-bottom: none !important;
    border-radius: 10px 10px 0 0 !important;
    background: var(--brand-bg) !important;
    color: var(--brand-text-muted) !important;
    font-family: inherit !important;
    font-size: 13.5px !important;
    font-weight: 800 !important;
    padding: 9px 16px 10px !important;
    margin-bottom: -3px !important;
    cursor: pointer !important;
    box-shadow: none !important;
}
body.role-director .adm-tabs button i,
body.role-administrativo .adm-tabs button i {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-tabs button:hover:not(.active),
body.role-administrativo .adm-tabs button:hover:not(.active) {
    background: var(--brand-white) !important;
    color: var(--brand-text) !important;
}
body.role-director .adm-tabs button.active,
body.role-administrativo .adm-tabs button.active {
    background: var(--brand-white) !important;
    color: var(--brand-text) !important;
    border-bottom: 3px solid var(--brand-white) !important;
    box-shadow: inset 0 4px 0 0 var(--brand-yellow) !important;
}
body.role-director .adm-tabs button.active i,
body.role-administrativo .adm-tabs button.active i {
    color: var(--brand-black) !important;
}
body.role-director .adm-tabs .adm-tab-general,
body.role-administrativo .adm-tabs .adm-tab-general {
    margin-left: auto !important;
}

/* Secciones ocultas por la pestaña: siguen en el formulario, no se ven */
body.role-director .editForm .adm-tab-oculta,
body.role-administrativo .editForm .adm-tab-oculta {
    display: none !important;
}
/* Modo pestaña: la sección visible a todo el ancho y sus campos en 3 columnas */
body.role-director .editForm.adm-vista-pestana > .row > [data-tab],
body.role-administrativo .editForm.adm-vista-pestana > .row > [data-tab] {
    flex: 1 1 100% !important;
}
@media (min-width: 992px) {
    body.role-director .editForm.adm-vista-pestana [data-tab] > .row > .col-lg-6,
    body.role-administrativo .editForm.adm-vista-pestana [data-tab] > .row > .col-lg-6 {
        flex: 0 0 33.333% !important;
        max-width: 33.333% !important;
    }
}
/* Vista general: todo a la vez, dos secciones por fila y pagos a lo ancho */
body.role-director .editForm.adm-vista-general > .row > [data-tab],
body.role-administrativo .editForm.adm-vista-general > .row > [data-tab] {
    flex: 1 1 420px !important;
}
body.role-director .editForm.adm-vista-general > .row > [data-tab="pagos"],
body.role-administrativo .editForm.adm-vista-general > .row > [data-tab="pagos"] {
    flex-basis: 100% !important;
}
@media (max-width: 767px) {
    body.role-director .adm-tabs button,
    body.role-administrativo .adm-tabs button {
        font-size: 12.5px !important;
        padding: 7px 10px !important;
    }
    body.role-director .adm-tabs .adm-tab-general,
    body.role-administrativo .adm-tabs .adm-tab-general {
        margin-left: 0 !important;
    }
    body.role-director .adm-res-debe,
    body.role-administrativo .adm-res-debe {
        margin-left: 0 !important;
    }
}

/* Vista general en parejas: personales|académico, cliente|archivos, pagos a lo ancho */
body.role-director .editForm.adm-vista-general > .row > [data-tab="personales"],
body.role-administrativo .editForm.adm-vista-general > .row > [data-tab="personales"] { order: 1 !important; }
body.role-director .editForm.adm-vista-general > .row > [data-tab="academico"],
body.role-administrativo .editForm.adm-vista-general > .row > [data-tab="academico"] { order: 2 !important; }
body.role-director .editForm.adm-vista-general > .row > [data-tab="cliente"],
body.role-administrativo .editForm.adm-vista-general > .row > [data-tab="cliente"] { order: 3 !important; }
body.role-director .editForm.adm-vista-general > .row > [data-tab="archivos"],
body.role-administrativo .editForm.adm-vista-general > .row > [data-tab="archivos"] { order: 4 !important; }
body.role-director .editForm.adm-vista-general > .row > [data-tab="pagos"],
body.role-administrativo .editForm.adm-vista-general > .row > [data-tab="pagos"] { order: 5 !important; }
body.role-director .editForm.adm-vista-general > .row > :not([data-tab]),
body.role-administrativo .editForm.adm-vista-general > .row > :not([data-tab]) { order: 6 !important; }

/* La caja en modo pestaña va pegada a la barra de pestañas */
body.role-director .editForm.adm-vista-pestana > .row > [data-tab],
body.role-administrativo .editForm.adm-vista-pestana > .row > [data-tab] {
    margin-top: 0 !important;
}

/* --- Pagos: todas las celdas iguales y acciones en una fila --- */
body.role-director .editForm #table-pagos th,
body.role-administrativo .editForm #table-pagos th {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    padding: 0 4px 6px !important;
    text-align: left !important;
}
body.role-director .editForm #table-pagos td,
body.role-administrativo .editForm #table-pagos td {
    padding: 3px 4px !important;
    vertical-align: middle !important;
}
body.role-director .editForm #table-pagos .form-control,
body.role-administrativo .editForm #table-pagos .form-control {
    height: 38px !important;
    min-height: 38px !important;
    padding: 0 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    line-height: 34px !important;
    text-align: left !important;
    box-shadow: none !important;
    margin: 0 !important;
    min-width: 0 !important;
}
body.role-director .editForm #table-pagos .value_ano,
body.role-administrativo .editForm #table-pagos .value_ano { width: 84px !important; }
body.role-director .editForm #table-pagos .value_metodo,
body.role-administrativo .editForm #table-pagos .value_metodo { width: 110px !important; }
body.role-director .editForm #table-pagos .value_cuota,
body.role-administrativo .editForm #table-pagos .value_cuota,
body.role-director .editForm #table-pagos .value_pagado,
body.role-administrativo .editForm #table-pagos .value_pagado,
body.role-director .editForm #table-pagos .value_debe,
body.role-administrativo .editForm #table-pagos .value_debe {
    width: 100px !important;
    text-align: right !important;
    font-family: 'JetBrains Mono', monospace !important;
}
body.role-director .editForm #table-pagos .value_concepto,
body.role-administrativo .editForm #table-pagos .value_concepto {
    width: 100% !important;
    min-width: 170px !important;
}
/* Debe es de solo lectura: se distingue de lo editable */
body.role-director .editForm #table-pagos .value_debe,
body.role-administrativo .editForm #table-pagos .value_debe {
    background: var(--brand-bg) !important;
    border-style: dashed !important;
}
/* Acciones de cada pago: cuatro iconos iguales en una sola fila */
body.role-director .editForm #table-pagos tr > td:last-child,
body.role-administrativo .editForm #table-pagos tr > td:last-child {
    white-space: nowrap !important;
    min-width: 0 !important;
    width: 1% !important;
}
body.role-director .editForm #table-pagos tr > td:last-child .btn,
body.role-administrativo .editForm #table-pagos tr > td:last-child .btn {
    width: 32px !important;
    height: 32px !important;
    padding: 0 !important;
    margin: 0 2px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-white) !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 12px !important;
    vertical-align: middle !important;
}
body.role-director .editForm #table-pagos tr > td:last-child .btn:hover,
body.role-administrativo .editForm #table-pagos tr > td:last-child .btn:hover {
    background: var(--brand-yellow) !important;
    transform: none !important;
}
body.role-director .editForm #table-pagos tr > td:last-child .btn[title="Eliminar pago"]:hover,
body.role-administrativo .editForm #table-pagos tr > td:last-child .btn[title="Eliminar pago"]:hover {
    background: var(--brand-danger) !important;
    color: var(--brand-white) !important;
}
/* Fila de totales alineada con las columnas de importes */
body.role-director .editForm #table-pagos #total-pagos td,
body.role-administrativo .editForm #table-pagos #total-pagos td {
    border-top: 3px solid var(--brand-black) !important;
    padding-top: 8px !important;
    text-align: left !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 800 !important;
}
body.role-director .editForm #table-pagos #total-pagos td:first-child,
body.role-administrativo .editForm #table-pagos #total-pagos td:first-child {
    text-align: right !important;
}
/* Cada cifra ocupa lo mismo que la casilla de encima (100px, número a la derecha) */
body.role-director .editForm #table-pagos #total-pagos span,
body.role-administrativo .editForm #table-pagos #total-pagos span {
    display: inline-block !important;
    width: 100px !important;
    padding-right: 12px !important;
    margin: 0 !important;
    text-align: right !important;
}

/* --- Ficha del alumno en el móvil --- */
@media (max-width: 767px) {
    /* Cabecera: botonera en una sola fila; Historial y Más solo con icono */
    body.role-director .adm-ficha-titulo .sectitle,
    body.role-administrativo .adm-ficha-titulo .sectitle {
        font-size: 22px !important;
    }
    body.role-director .adm-ficha-head .adm-toolbar,
    body.role-administrativo .adm-ficha-head .adm-toolbar {
        width: 100% !important;
        flex-wrap: nowrap !important;
        gap: 8px !important;
    }
    body.role-director .adm-ficha-head .adm-pager,
    body.role-administrativo .adm-ficha-head .adm-pager {
        flex: 1 1 auto !important;
        justify-content: space-between !important;
    }
    body.role-director .adm-ficha-head .nb-dd > .btn,
    body.role-administrativo .adm-ficha-head .nb-dd > .btn {
        font-size: 0 !important;
        width: 42px !important;
        padding: 0 !important;
        justify-content: center !important;
        gap: 0 !important;
    }
    body.role-director .adm-ficha-head .nb-dd > .btn > i:first-child,
    body.role-administrativo .adm-ficha-head .nb-dd > .btn > i:first-child {
        font-size: 15px !important;
    }
    body.role-director .adm-ficha-head .nb-dd > .btn .adm-caret,
    body.role-administrativo .adm-ficha-head .nb-dd > .btn .adm-caret {
        display: none !important;
    }
    body.role-director .adm-ficha-head .nb-dd-panel,
    body.role-administrativo .adm-ficha-head .nb-dd-panel {
        right: auto !important;
        left: 50% !important;
        transform: translateX(-50%) !important;
        max-width: calc(100vw - 32px) !important;
    }
    /* Guardar: barra fija abajo, siempre a mano */
    body.role-director .adm-ficha-head .adm-toolbar > .btn-success,
    body.role-administrativo .adm-ficha-head .adm-toolbar > .btn-success {
        position: fixed !important;
        left: 12px !important;
        right: 12px !important;
        bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
        z-index: 1040 !important;
        height: 48px !important;
        justify-content: center !important;
        font-size: 16px !important;
        box-shadow: 4px 4px 0px 0px var(--brand-black) !important;
    }
    body.role-director:has(.adm-ficha-head) .wrap-body,
    body.role-administrativo:has(.adm-ficha-head) .wrap-body {
        padding-bottom: 80px !important;
    }

    /* Resumen: más compacto */
    body.role-director .adm-resumen,
    body.role-administrativo .adm-resumen {
        gap: 6px 12px !important;
        font-size: 13px !important;
    }

    body.role-director .editForm > .row > [class*="col-"],
    body.role-administrativo .editForm > .row > [class*="col-"] {
        padding: 14px 12px !important;
    }

    /* Pagos: cada pago es una tarjeta con sus campos rotulados */
    body.role-director .editForm #table-pagos,
    body.role-administrativo .editForm #table-pagos,
    body.role-director .editForm #table-pagos tbody,
    body.role-administrativo .editForm #table-pagos tbody {
        display: block !important;
        overflow: visible !important;
        width: 100% !important;
    }
    body.role-director .editForm #table-pagos tr:has(> th),
    body.role-administrativo .editForm #table-pagos tr:has(> th) {
        display: none !important;
    }
    body.role-director .editForm #table-pagos tr.filaPago,
    body.role-administrativo .editForm #table-pagos tr.filaPago {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 6px 8px !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 10px !important;
        background: var(--brand-white) !important;
        padding: 10px !important;
        margin-bottom: 10px !important;
    }
    body.role-director .editForm #table-pagos tr.filaPago > td,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td {
        display: flex !important;
        flex-direction: column !important;
        gap: 3px !important;
        padding: 0 !important;
        width: auto !important;
        min-width: 0 !important;
    }
    body.role-director .editForm #table-pagos tr.filaPago > td::before,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td::before {
        font-family: 'JetBrains Mono', monospace !important;
        font-size: 10px !important;
        font-weight: 800 !important;
        letter-spacing: 1px !important;
        text-transform: uppercase !important;
        color: var(--brand-text-muted) !important;
    }
    body.role-director .editForm #table-pagos tr.filaPago > td:nth-of-type(1)::before,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:nth-of-type(1)::before { content: 'Año' !important; }
    body.role-director .editForm #table-pagos tr.filaPago > td:nth-of-type(2)::before,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:nth-of-type(2)::before { content: 'Mes / concepto' !important; }
    body.role-director .editForm #table-pagos tr.filaPago > td:nth-of-type(3)::before,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:nth-of-type(3)::before { content: 'Método' !important; }
    body.role-director .editForm #table-pagos tr.filaPago > td:nth-of-type(4)::before,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:nth-of-type(4)::before { content: 'Cuota' !important; }
    body.role-director .editForm #table-pagos tr.filaPago > td:nth-of-type(5)::before,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:nth-of-type(5)::before { content: 'Pagado' !important; }
    body.role-director .editForm #table-pagos tr.filaPago > td:nth-of-type(6)::before,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:nth-of-type(6)::before { content: 'Debe' !important; }
    body.role-director .editForm #table-pagos tr.filaPago .form-control,
    body.role-administrativo .editForm #table-pagos tr.filaPago .form-control {
        width: 100% !important;
        min-width: 0 !important;
        height: 42px !important;
        font-size: 15px !important;
    }
    /* Acciones del pago: fila completa abajo, botones grandes para el dedo */
    body.role-director .editForm #table-pagos tr.filaPago > td:last-child,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:last-child {
        grid-column: 1 / -1 !important;
        flex-direction: row !important;
        justify-content: space-between !important;
        gap: 8px !important;
        border-top: 2px dashed var(--brand-black) !important;
        padding-top: 8px !important;
        width: auto !important;
    }
    body.role-director .editForm #table-pagos tr.filaPago > td:last-child .btn,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td:last-child .btn {
        flex: 1 1 0 !important;
        width: auto !important;
        height: 40px !important;
        margin: 0 !important;
        font-size: 15px !important;
    }
    /* Totales: tres cifras en fila */
    body.role-director .editForm #table-pagos #total-pagos,
    body.role-administrativo .editForm #table-pagos #total-pagos {
        display: grid !important;
        grid-template-columns: auto 1fr 1fr 1fr !important;
        gap: 8px !important;
        align-items: center !important;
    }
    body.role-director .editForm #table-pagos #total-pagos td,
    body.role-administrativo .editForm #table-pagos #total-pagos td {
        border-top: none !important;
        padding: 0 !important;
    }
    body.role-director .editForm #table-pagos #total-pagos td:last-child,
    body.role-administrativo .editForm #table-pagos #total-pagos td:last-child {
        display: none !important;
    }
    body.role-director .editForm #table-pagos #total-pagos span,
    body.role-administrativo .editForm #table-pagos #total-pagos span {
        width: auto !important;
        padding-right: 0 !important;
    }
    body.role-director .editForm #table-pagos #recibo_ok,
    body.role-administrativo .editForm #table-pagos #recibo_ok,
    body.role-director .editForm #table-pagos #recibo_ko,
    body.role-administrativo .editForm #table-pagos #recibo_ko {
        display: block !important;
    }
    body.role-director .editForm #table-pagos #recibo_ok.collapse:not(.show),
    body.role-administrativo .editForm #table-pagos #recibo_ok.collapse:not(.show),
    body.role-director .editForm #table-pagos #recibo_ko.collapse:not(.show),
    body.role-administrativo .editForm #table-pagos #recibo_ko.collapse:not(.show) {
        display: none !important;
    }
}
@media (max-width: 767px) {
    body.role-director .editForm #table-pagos tr.filaPago > td,
    body.role-administrativo .editForm #table-pagos tr.filaPago > td {
        text-align: left !important;
        align-items: stretch !important;
    }
}

/* --- Selector de sección de la ficha: solo en el móvil, en lugar de las pestañas ---
   Botón con la sección actual + lista que sube desde abajo (alumno-ficha-pestanas.js) */
body.role-director .adm-seccion-movil,
body.role-administrativo .adm-seccion-movil {
    display: none !important;
}
@media (max-width: 767px) {
    body.role-director .adm-tabs,
    body.role-administrativo .adm-tabs {
        display: none !important;
    }
    body.role-director .adm-seccion-movil,
    body.role-administrativo .adm-seccion-movil {
        display: block !important;
        margin: 0 0 12px !important;
    }
    body.role-director .adm-seccion-btn,
    body.role-administrativo .adm-seccion-btn {
        display: flex !important;
        align-items: center !important;
        gap: 10px !important;
        width: 100% !important;
        min-height: 54px !important;
        padding: 6px 16px !important;
        border: 3px solid var(--brand-black) !important;
        border-radius: 12px !important;
        background: var(--brand-yellow) !important;
        box-shadow: 3px 3px 0px 0px var(--brand-black) !important;
        font-family: 'Inter', sans-serif !important;
        color: var(--brand-black) !important;
        text-align: left !important;
        cursor: pointer !important;
    }
    body.role-director .adm-seccion-btn:active,
    body.role-administrativo .adm-seccion-btn:active {
        transform: translate(2px, 2px) !important;
        box-shadow: 1px 1px 0px 0px var(--brand-black) !important;
    }
    body.role-director .adm-seccion-label,
    body.role-administrativo .adm-seccion-label {
        font-family: 'JetBrains Mono', monospace !important;
        font-size: 10.5px !important;
        font-weight: 800 !important;
        letter-spacing: 1px !important;
        text-transform: uppercase !important;
        color: rgba(28, 28, 26, 0.65) !important;
    }
    body.role-director .adm-seccion-actual,
    body.role-administrativo .adm-seccion-actual {
        flex: 1 1 auto !important;
        font-size: 17px !important;
        font-weight: 900 !important;
    }
    /* Lista desplegada justo debajo del botón; el fondo transparente
       solo sirve para cerrarla tocando fuera */
    body.role-director .adm-seccion-movil,
    body.role-administrativo .adm-seccion-movil {
        position: relative !important;
    }
    body.role-director .adm-seccion-fondo,
    body.role-administrativo .adm-seccion-fondo {
        position: fixed !important;
        inset: 0 !important;
        z-index: 1060 !important;
        background: transparent !important;
    }
    body.role-director .adm-seccion-fondo[hidden],
    body.role-administrativo .adm-seccion-fondo[hidden],
    body.role-director .adm-seccion-panel[hidden],
    body.role-administrativo .adm-seccion-panel[hidden] {
        display: none !important;
    }
    body.role-director .adm-seccion-panel,
    body.role-administrativo .adm-seccion-panel {
        position: absolute !important;
        top: calc(100% + 8px) !important;
        left: 0 !important;
        right: 0 !important;
        z-index: 1070 !important;
        display: flex !important;
        flex-direction: column !important;
        gap: 6px !important;
        background: var(--brand-white) !important;
        border: 3px solid var(--brand-black) !important;
        border-radius: 12px !important;
        box-shadow: 4px 4px 0px 0px var(--brand-black) !important;
        padding: 10px !important;
        animation: admBajar 0.14s ease-out !important;
    }
    body.role-director .adm-seccion-titulo,
    body.role-administrativo .adm-seccion-titulo {
        font-family: 'JetBrains Mono', monospace !important;
        font-size: 11px !important;
        font-weight: 800 !important;
        letter-spacing: 1px !important;
        text-transform: uppercase !important;
        color: var(--brand-text-muted) !important;
        padding: 0 6px 6px !important;
    }
    body.role-director .adm-seccion-panel button,
    body.role-administrativo .adm-seccion-panel button {
        display: flex !important;
        align-items: center !important;
        gap: 14px !important;
        min-height: 56px !important;
        padding: 0 16px !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 12px !important;
        background: var(--brand-white) !important;
        font-family: 'Inter', sans-serif !important;
        font-size: 17px !important;
        font-weight: 800 !important;
        color: var(--brand-black) !important;
        text-align: left !important;
        cursor: pointer !important;
    }
    body.role-director .adm-seccion-panel button i,
    body.role-administrativo .adm-seccion-panel button i {
        width: 22px !important;
        text-align: center !important;
        font-size: 17px !important;
        color: var(--brand-text-muted) !important;
    }
    body.role-director .adm-seccion-panel button.active,
    body.role-administrativo .adm-seccion-panel button.active {
        background: var(--brand-yellow) !important;
        box-shadow: 3px 3px 0px 0px var(--brand-black) !important;
    }
    body.role-director .adm-seccion-panel button.active i,
    body.role-administrativo .adm-seccion-panel button.active i {
        color: var(--brand-black) !important;
    }
    body.role-director .adm-seccion-panel button.active::after,
    body.role-administrativo .adm-seccion-panel button.active::after {
        content: '\f00c' !important;
        font-family: 'Font Awesome 6 Free' !important;
        font-weight: 900 !important;
        margin-left: auto !important;
    }
    /* Con la lista abierta, la barra de Guardar no se superpone */
    body.adm-seccion-abierta .adm-ficha-head .adm-toolbar > .btn-success {
        display: none !important;
    }
}
@keyframes admBajar {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}

/* --- Listado de alumnos: el nombre manda en la fila --- */
body.role-director .secfila[id^="alumno_"] .row > .col:first-child,
body.role-administrativo .secfila[id^="alumno_"] .row > .col:first-child {
    text-align: left !important;
    padding-left: 18px !important;
}
body.role-director .secfila[id^="alumno_"] .row > .col:first-child a,
body.role-administrativo .secfila[id^="alumno_"] .row > .col:first-child a {
    font-size: 16px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    color: var(--brand-black) !important;
    text-decoration: none !important;
}
/* Leyenda del listado en el propio nombre (CamposAlm::frontClasses):
   azul = online, verde = diferido, rojo = debe cuota, negrita = seguimiento */
body.role-director .secfila[id^="alumno_"] .row > .col:first-child a.blue,
body.role-administrativo .secfila[id^="alumno_"] .row > .col:first-child a.blue {
    color: #1d4ed8 !important;
}
body.role-director .secfila[id^="alumno_"] .row > .col:first-child a.green,
body.role-administrativo .secfila[id^="alumno_"] .row > .col:first-child a.green {
    color: #15803d !important;
}
body.role-director .secfila[id^="alumno_"] .row > .col:first-child a.bold,
body.role-administrativo .secfila[id^="alumno_"] .row > .col:first-child a.bold {
    font-weight: 900 !important;
}
body.role-director .secfila[id^="alumno_"] .row > .col:first-child a:hover,
body.role-administrativo .secfila[id^="alumno_"] .row > .col:first-child a:hover {
    text-decoration: underline !important;
    text-decoration-thickness: 2px !important;
}
/* Con deuda, el nombre en rojo como antes (clase .red de la plantilla) */
body.role-director .secfila[id^="alumno_"] .row > .col:first-child a.red,
body.role-administrativo .secfila[id^="alumno_"] .row > .col:first-child a.red {
    color: var(--brand-danger) !important;
    padding: 0 !important;
    animation: none !important;
}
/* Lo que debe, en cifra clara */
body.role-director .secfila[id^="alumno_"] [id^="importe_"],
body.role-administrativo .secfila[id^="alumno_"] [id^="importe_"] {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 14px !important;
    font-weight: 800 !important;
}
/* Pagar más contenido: que no le gane al nombre */
body.role-director .secfila .adm-row-actions .btn,
body.role-administrativo .secfila .adm-row-actions .btn {
    font-size: 13.5px !important;
    padding: 7px 14px !important;
}

/* --- Menú lateral: columna a pantalla completa, sin corte brusco ---
   Siempre ocupa todo el alto de la ventana (con su propio scroll) y
   Contraer + Panel seguro quedan anclados abajo */
@media (min-width: 768px) {
    body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar {
        position: sticky !important;
        top: 0 !important;
        align-self: flex-start !important;
        height: 100vh !important;
        max-height: 100vh !important;
        min-height: 100vh !important;
        overflow-y: auto !important;
        display: flex !important;
        flex-direction: column !important;
    }
    body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .adm-collapse-btn {
        margin-top: auto !important;
        flex: none !important;
    }
    body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-sidebar .sidebar-footer {
        flex: none !important;
        margin-top: 8px !important;
    }
}

/* --- Buscadores de listados en el móvil ---
   style.css pone los botones de .buscador en position:absolute pegados al
   fondo de su columna; apilado, la columna no tiene alto y el botón se
   montaba sobre el campo de búsqueda. En el móvil van en el flujo normal */
@media (max-width: 767px) {
    body.role-director .buscador button,
    body.role-administrativo .buscador button,
    body.role-director .btn-bottom,
    body.role-administrativo .btn-bottom {
        position: static !important;
        top: auto !important;
        bottom: auto !important;
    }
    body.role-director .buscador .row > [class*="col-"]:has(> button),
    body.role-administrativo .buscador .row > [class*="col-"]:has(> button) {
        margin-top: 10px !important;
    }
    body.role-director .buscador .btn,
    body.role-administrativo .buscador .btn {
        width: 100% !important;
        justify-content: center !important;
    }
    body.role-director .buscador .btn[style*="display: none"],
    body.role-administrativo .buscador .btn[style*="display: none"] {
        display: none !important;
    }
}
@media (max-width: 767px) {
    body.role-director #btnShowMore::after,
    body.role-administrativo #btnShowMore::after {
        content: 'Más filtros' !important;
        margin-left: 8px !important;
    }
    body.role-director #btnHideMore::after,
    body.role-administrativo #btnHideMore::after {
        content: 'Menos filtros' !important;
        margin-left: 8px !important;
    }
}

/* Código de tutor en el resumen de la ficha, con su botón de envío */
body.role-director .adm-res-tutor,
body.role-administrativo .adm-res-tutor {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    flex-wrap: wrap !important;
}
body.role-director .adm-res-tutor b,
body.role-administrativo .adm-res-tutor b {
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
}
body.role-director .adm-res-tutor-btn,
body.role-administrativo .adm-res-tutor-btn {
    display: inline-flex !important;
    align-items: center !important;
    gap: 5px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-yellow) !important;
    font-family: inherit !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    color: var(--brand-black) !important;
    padding: 3px 10px !important;
    cursor: pointer !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
}
body.role-director .adm-res-tutor-btn:hover,
body.role-administrativo .adm-res-tutor-btn:hover {
    transform: translate(-1px, -1px) !important;
    box-shadow: 3px 3px 0px 0px var(--brand-black) !important;
}
body.role-director .adm-res-tutor-btn i,
body.role-administrativo .adm-res-tutor-btn i {
    color: var(--brand-black) !important;
    margin: 0 !important;
}

/* Código de tutor dentro de Datos tutor, con su botón de envío */
body.role-director .adm-tutor-codigo,
body.role-administrativo .adm-tutor-codigo {
    display: flex !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
    min-height: 42px !important;
    padding: 6px 10px !important;
    border: 2px dashed var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-bg) !important;
}
body.role-director .adm-tutor-codigo-valor,
body.role-administrativo .adm-tutor-codigo-valor {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 14px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-tutor-codigo-vacio,
body.role-administrativo .adm-tutor-codigo-vacio {
    font-size: 13px !important;
    color: var(--brand-text-muted) !important;
}

/* ============================================================
   Patrón de fila de listado reutilizable (profesores y demás):
   .adm-fila-nombre | .adm-fila-chips | .adm-row-actions
   ============================================================ */
body.role-director .secfila:has(> .adm-fila-nombre),
body.role-administrativo .secfila:has(> .adm-fila-nombre) {
    display: grid !important;
    grid-template-columns: minmax(180px, 260px) minmax(0, 1fr) auto !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 16px !important;
}
body.role-director .adm-fila-nombre,
body.role-administrativo .adm-fila-nombre {
    font-size: 16px !important;
    font-weight: 600 !important;
    color: var(--brand-black) !important;
    text-decoration: none !important;
    line-height: 1.3 !important;
}
body.role-director .adm-fila-nombre:hover,
body.role-administrativo .adm-fila-nombre:hover {
    text-decoration: underline !important;
    text-decoration-thickness: 2px !important;
    color: var(--brand-black) !important;
}
body.role-director .adm-fila-chips,
body.role-administrativo .adm-fila-chips {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 5px !important;
    min-width: 0 !important;
}
body.role-director .adm-fila-chips > a,
body.role-administrativo .adm-fila-chips > a,
body.role-director .adm-fila-chips > span:not(.adm-fila-vacio),
body.role-administrativo .adm-fila-chips > span:not(.adm-fila-vacio) {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    border: 1.5px solid var(--brand-black) !important;
    border-radius: 6px !important;
    background: var(--brand-bg) !important;
    color: var(--brand-black) !important;
    padding: 2px 7px !important;
    text-decoration: none !important;
    white-space: nowrap !important;
    cursor: pointer !important;
}
body.role-director .adm-fila-chips > a:hover,
body.role-administrativo .adm-fila-chips > a:hover {
    background: var(--brand-yellow) !important;
}
body.role-director .adm-fila-vacio,
body.role-administrativo .adm-fila-vacio {
    font-size: 13px !important;
    color: var(--brand-text-muted) !important;
}
/* Cabecera de columnas del mismo patrón (tablelabels con 3 divs) */
body.role-director .tablelabels:has(+ .secfila > .adm-fila-nombre),
body.role-administrativo .tablelabels:has(+ .secfila > .adm-fila-nombre) {
    display: grid !important;
    grid-template-columns: minmax(180px, 260px) minmax(0, 1fr) auto !important;
    gap: 14px !important;
    padding: 10px 19px 4px !important;
    text-align: left !important;
}

/* Interruptor (checkbox de siempre con aspecto de switch) */
body.role-director .adm-switch,
body.role-administrativo .adm-switch {
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
    margin: 0 4px 0 0 !important;
    cursor: pointer !important;
    font-size: 12.5px !important;
    font-weight: 700 !important;
    user-select: none !important;
}
body.role-director .adm-switch input,
body.role-administrativo .adm-switch input {
    position: absolute !important;
    opacity: 0 !important;
    width: 1px !important;
    height: 1px !important;
}
body.role-director .adm-switch-pista,
body.role-administrativo .adm-switch-pista {
    position: relative !important;
    width: 38px !important;
    height: 22px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-white) !important;
    flex: none !important;
    transition: background 0.15s ease !important;
}
body.role-director .adm-switch-pista::after,
body.role-administrativo .adm-switch-pista::after {
    content: '' !important;
    position: absolute !important;
    top: 2px !important;
    left: 2px !important;
    width: 14px !important;
    height: 14px !important;
    border-radius: 50% !important;
    background: var(--brand-black) !important;
    transition: transform 0.15s ease !important;
}
body.role-director .adm-switch input:checked + .adm-switch-pista,
body.role-administrativo .adm-switch input:checked + .adm-switch-pista {
    background: var(--brand-danger) !important;
}
body.role-director .adm-switch input:checked + .adm-switch-pista::after,
body.role-administrativo .adm-switch input:checked + .adm-switch-pista::after {
    transform: translateX(16px) !important;
    background: var(--brand-white) !important;
}
body.role-director .adm-switch input:focus-visible + .adm-switch-pista,
body.role-administrativo .adm-switch input:focus-visible + .adm-switch-pista {
    box-shadow: 0 0 0 3px var(--brand-cyan) !important;
}
/* Profesor inactivo: la fila entera se atenúa */
body.role-director .secfila:has(.adm-switch input:checked) .adm-fila-nombre,
body.role-administrativo .secfila:has(.adm-switch input:checked) .adm-fila-nombre {
    color: var(--brand-text-muted) !important;
    text-decoration: line-through !important;
}

@media (max-width: 767px) {
    body.role-director .secfila:has(> .adm-fila-nombre),
    body.role-administrativo .secfila:has(> .adm-fila-nombre) {
        grid-template-columns: 1fr !important;
        gap: 8px !important;
    }
    body.role-director .tablelabels:has(+ .secfila > .adm-fila-nombre),
    body.role-administrativo .tablelabels:has(+ .secfila > .adm-fila-nombre) {
        display: none !important;
    }
}

/* ============================================================
   Listado de asignaturas (administración)
   ============================================================ */
body.role-director .adm-fila-asg,
body.role-administrativo .adm-fila-asg,
body.role-director .adm-cab-asg,
body.role-administrativo .adm-cab-asg {
    display: grid !important;
    grid-template-columns: 26px 34px minmax(190px, 1.5fr) minmax(130px, 1fr) 100px 120px 84px minmax(150px, 1.1fr) 120px !important;
    gap: 12px !important;
    align-items: center !important;
    text-align: left !important;
}
body.role-director .adm-fila-asg,
body.role-administrativo .adm-fila-asg {
    padding: 10px 14px !important;
}
body.role-director .adm-cab-asg,
body.role-administrativo .adm-cab-asg {
    padding: 10px 17px 4px !important;
}
body.role-director .adm-fila-asg > div,
body.role-administrativo .adm-fila-asg > div,
body.role-director .adm-cab-asg > div,
body.role-administrativo .adm-cab-asg > div {
    min-width: 0 !important;
    width: auto !important;
    max-width: none !important;
    padding: 0 !important;
    flex: none !important;
}
/* Color: muestra redonda */
body.role-director .adm-asg-color .color-picker-inline,
body.role-administrativo .adm-asg-color .color-picker-inline {
    width: 30px !important;
    height: 30px !important;
    border-radius: 50% !important;
    border: 2px solid var(--brand-black) !important;
    overflow: hidden !important;
    cursor: pointer !important;
}
body.role-director .adm-asg-nombre,
body.role-administrativo .adm-asg-nombre {
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
}
body.role-director .adm-asg-nombre small,
body.role-administrativo .adm-asg-nombre small {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-asg-nombre small a,
body.role-administrativo .adm-asg-nombre small a {
    color: var(--brand-text-muted) !important;
    text-decoration: none !important;
}
body.role-director .adm-asg-nombre small a:hover,
body.role-administrativo .adm-asg-nombre small a:hover {
    text-decoration: underline !important;
}
body.role-director .adm-fila-asg select,
body.role-administrativo .adm-fila-asg select {
    width: 100% !important;
    height: 36px !important;
    padding: 0 8px !important;
    font-size: 13px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
}
body.role-director .adm-asg-cifra,
body.role-administrativo .adm-asg-cifra {
    display: flex !important;
    flex-direction: column !important;
    line-height: 1.15 !important;
}
body.role-director .adm-asg-cifra b,
body.role-administrativo .adm-asg-cifra b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 18px !important;
    font-weight: 800 !important;
}
body.role-director .adm-asg-cifra small,
body.role-administrativo .adm-asg-cifra small {
    font-size: 11px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-asg-llena,
body.role-administrativo .adm-asg-llena {
    color: var(--brand-danger) !important;
}
/* Horario compacto: como mucho 3 líneas visibles, el resto con scroll */
body.role-director .adm-asg-horario,
body.role-administrativo .adm-asg-horario {
    display: flex !important;
    align-items: flex-start !important;
    gap: 8px !important;
}
body.role-director .adm-asg-horario .horario-texto,
body.role-administrativo .adm-asg-horario .horario-texto {
    flex: 1 1 auto !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    line-height: 1.45 !important;
    max-height: 4.4em !important;
    overflow-y: auto !important;
    text-align: left !important;
}
body.role-director .adm-icon-btn,
body.role-administrativo .adm-icon-btn {
    flex: none !important;
    width: 30px !important;
    height: 30px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    font-size: 12px !important;
    cursor: pointer !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}
body.role-director .adm-icon-btn:hover,
body.role-administrativo .adm-icon-btn:hover {
    background: var(--brand-yellow) !important;
}
/* Indicador de emisión en directo (punto rojo que late) */
body.role-director .adm-btn-directo,
body.role-administrativo .adm-btn-directo {
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
}
/* En la fila de la asignatura: etiqueta roja pequeña bajo el nombre */
body.role-director .adm-asg-nombre .adm-btn-directo,
body.role-administrativo .adm-asg-nombre .adm-btn-directo {
    align-self: flex-start !important;
    gap: 6px !important;
    margin: 2px 0 !important;
    padding: 2px 9px !important;
    background: var(--brand-danger, #d32f2f) !important;
    color: #fff !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: .5px !important;
    text-transform: uppercase !important;
    line-height: 1.4 !important;
    cursor: pointer !important;
}
body.role-director .adm-asg-nombre .adm-btn-directo .on_rec,
body.role-administrativo .adm-asg-nombre .adm-btn-directo .on_rec {
    background: #fff !important;
}
body.role-director .adm-btn-directo .on_rec,
body.role-administrativo .adm-btn-directo .on_rec {
    float: none !important;
    margin: 0 !important;
    width: 9px !important;
    height: 9px !important;
}
@media (max-width: 991px) {
    body.role-director .adm-fila-asg,
    body.role-administrativo .adm-fila-asg {
        grid-template-columns: 26px 34px 1fr 1fr !important;
    }
    body.role-director .adm-fila-asg > .adm-asg-horario,
    body.role-administrativo .adm-fila-asg > .adm-asg-horario,
    body.role-director .adm-fila-asg > .adm-row-actions,
    body.role-administrativo .adm-fila-asg > .adm-row-actions {
        grid-column: 3 / -1 !important;
    }
    body.role-director .adm-cab-asg,
    body.role-administrativo .adm-cab-asg {
        display: none !important;
    }
}
body.role-director .adm-asg-horario .horario-texto,
body.role-administrativo .adm-asg-horario .horario-texto {
    white-space: nowrap !important;
    font-size: 10.5px !important;
}
@media (min-width: 992px) {
    body.role-director .adm-fila-asg,
    body.role-administrativo .adm-fila-asg,
    body.role-director .adm-cab-asg,
    body.role-administrativo .adm-cab-asg {
        grid-template-columns: 26px 34px minmax(170px, 1.4fr) minmax(130px, 1fr) 96px 118px 74px 168px 60px !important;
    }
}

/* --- Modal de pagos del listado de alumnos (.table-pagos-list) ---
   Mismo criterio que la tabla de pagos de la ficha: celdas iguales,
   anchos por columna (las clases llevan el id del alumno, por eso se
   fijan por posición) e iconos de acción en fila */
body.role-director .table-pagos-list,
body.role-administrativo .table-pagos-list {
    width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 4px 4px !important;
}
body.role-director .table-pagos-list th,
body.role-administrativo .table-pagos-list th {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    min-width: 0 !important;
    padding: 0 2px 4px !important;
    text-align: left !important;
}
body.role-director .table-pagos-list td,
body.role-administrativo .table-pagos-list td {
    padding: 0 !important;
    vertical-align: middle !important;
}
body.role-director .table-pagos-list .form-control,
body.role-administrativo .table-pagos-list .form-control,
body.role-director .modal [id^="pagos_alm_"] .form-control,
body.role-administrativo .modal [id^="pagos_alm_"] .form-control {
    height: 38px !important;
    min-height: 38px !important;
    width: 100% !important;
    min-width: 0 !important;
    padding: 0 8px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    line-height: 34px !important;
    text-align: left !important;
    box-shadow: none !important;
    margin: 0 !important;
}
/* Anchos: tipo, concepto (flexible), año, mes, día, método, cuota, pagado, debe */
body.role-director .table-pagos-list tr > td:nth-of-type(1),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(1) { width: 104px !important; }
body.role-director .table-pagos-list tr > td:nth-of-type(3),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(3) { width: 74px !important; }
body.role-director .table-pagos-list tr > td:nth-of-type(4),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(4) { width: 110px !important; }
body.role-director .table-pagos-list tr > td:nth-of-type(5),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(5) { width: 58px !important; }
body.role-director .table-pagos-list tr > td:nth-of-type(6),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(6) { width: 100px !important; }
body.role-director .table-pagos-list tr > td:nth-of-type(7),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(7),
body.role-director .table-pagos-list tr > td:nth-of-type(8),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(8),
body.role-director .table-pagos-list tr > td:nth-of-type(9),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(9) { width: 78px !important; }
body.role-director .table-pagos-list tr > td:nth-of-type(7) .form-control,
body.role-administrativo .table-pagos-list tr > td:nth-of-type(7) .form-control,
body.role-director .table-pagos-list tr > td:nth-of-type(8) .form-control,
body.role-administrativo .table-pagos-list tr > td:nth-of-type(8) .form-control,
body.role-director .table-pagos-list tr > td:nth-of-type(9) .form-control,
body.role-administrativo .table-pagos-list tr > td:nth-of-type(9) .form-control {
    text-align: right !important;
    font-family: 'JetBrains Mono', monospace !important;
}
body.role-director .table-pagos-list tr > td:nth-of-type(9) .form-control,
body.role-administrativo .table-pagos-list tr > td:nth-of-type(9) .form-control {
    background: var(--brand-bg) !important;
    border-style: dashed !important;
}
/* Acciones (recibo, borrar): iconos iguales */
body.role-director .table-pagos-list tr > td:nth-of-type(n+10),
body.role-administrativo .table-pagos-list tr > td:nth-of-type(n+10) {
    width: 36px !important;
    text-align: center !important;
}
body.role-director .table-pagos-list tr > td:nth-of-type(n+10) .btn,
body.role-administrativo .table-pagos-list tr > td:nth-of-type(n+10) .btn {
    width: 32px !important;
    height: 32px !important;
    padding: 0 !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-white) !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 12px !important;
}
body.role-director .table-pagos-list tr > td:nth-of-type(n+10) .btn:hover,
body.role-administrativo .table-pagos-list tr > td:nth-of-type(n+10) .btn:hover {
    background: var(--brand-yellow) !important;
    transform: none !important;
}
body.role-director .table-pagos-list tr > td:nth-of-type(11) .btn:hover,
body.role-administrativo .table-pagos-list tr > td:nth-of-type(11) .btn:hover {
    background: var(--brand-danger) !important;
    color: var(--brand-white) !important;
}
/* Copia recibo del mismo modal: mismos campos que el calendario */
body.role-director .modal[id^="pagos_alm_"] .form-control,
body.role-administrativo .modal[id^="pagos_alm_"] .form-control {
    height: 38px !important;
    min-height: 38px !important;
    padding: 0 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    box-shadow: none !important;
}
body.role-director .modal[id^="pagos_alm_"] label,
body.role-administrativo .modal[id^="pagos_alm_"] label {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    text-align: left !important;
    margin-bottom: 4px !important;
}

/* Texto de ayuda bajo un título de bloque */
body.role-director .adm-ayuda,
body.role-administrativo .adm-ayuda {
    font-size: 12.5px !important;
    font-weight: 500 !important;
    color: var(--brand-text-muted) !important;
    margin: 2px auto 10px !important;
    max-width: 620px !important;
    line-height: 1.4 !important;
}
body.role-director .adm-ayuda b,
body.role-administrativo .adm-ayuda b {
    color: var(--brand-black) !important;
}

/* --- Modal de pagos del listado en el móvil: cada pago es una tarjeta --- */
@media (max-width: 767px) {
    body.role-director .modal[id^="pagos_alm_"] .modal-dialog,
    body.role-administrativo .modal[id^="pagos_alm_"] .modal-dialog {
        margin: 8px !important;
        max-width: none !important;
    }
    body.role-director .modal[id^="pagos_alm_"] .modal-body,
    body.role-administrativo .modal[id^="pagos_alm_"] .modal-body {
        padding: 10px !important;
    }
    body.role-director .table-pagos-list,
    body.role-administrativo .table-pagos-list,
    body.role-director .table-pagos-list tbody,
    body.role-administrativo .table-pagos-list tbody {
        display: block !important;
        width: 100% !important;
        border-spacing: 0 !important;
        overflow: visible !important;
    }
    body.role-director .table-pagos-list tr:has(> th),
    body.role-administrativo .table-pagos-list tr:has(> th) {
        display: none !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"],
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 6px 8px !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 10px !important;
        background: var(--brand-white) !important;
        padding: 10px !important;
        margin-bottom: 10px !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td {
        display: flex !important;
        flex-direction: column !important;
        gap: 3px !important;
        width: auto !important;
        min-width: 0 !important;
        padding: 0 !important;
        text-align: left !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td::before {
        font-family: 'JetBrains Mono', monospace !important;
        font-size: 10px !important;
        font-weight: 800 !important;
        letter-spacing: 1px !important;
        text-transform: uppercase !important;
        color: var(--brand-text-muted) !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(1)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(1)::before { content: 'Tipo' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(2)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(2)::before { content: 'Concepto' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(3)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(3)::before { content: 'Año' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(4)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(4)::before { content: 'Mes' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(5)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(5)::before { content: 'Día' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(6)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(6)::before { content: 'Método' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(7)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(7)::before { content: 'Cuota' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(8)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(8)::before { content: 'Pagado' !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(9)::before,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(9)::before { content: 'Debe' !important; }
    /* Concepto a lo ancho: es el campo largo */
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(2),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(2) {
        grid-column: 1 / -1 !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] .form-control,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] .form-control {
        height: 42px !important;
        font-size: 15px !important;
        width: 100% !important;
    }
    /* Acciones (recibo y borrar): fila propia abajo, botones grandes */
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10),
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(11),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(11) {
        border-top: 2px dashed var(--brand-black) !important;
        padding-top: 8px !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(n+10) .btn,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(n+10) .btn {
        width: 100% !important;
        height: 42px !important;
        font-size: 15px !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10) .btn::after,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10) .btn::after {
        content: 'Recibo' !important;
        margin-left: 8px !important;
        font-weight: 800 !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(11) .btn::after,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(11) .btn::after {
        content: 'Borrar' !important;
        margin-left: 8px !important;
        font-weight: 800 !important;
    }
    body.role-director .modal[id^="pagos_alm_"] h5,
    body.role-administrativo .modal[id^="pagos_alm_"] h5 {
        font-size: 16px !important;
    }
}
@media (max-width: 767px) {
    /* Rejilla de 6: Concepto | Tipo · Método | Año · Mes · Día | Cuota · Pagado · Debe | Recibo · Borrar */
    body.role-director .table-pagos-list tr[class^="filaPago"],
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] {
        grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td {
        grid-column: span 2 !important;
    }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(2),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(2) { order: 1 !important; grid-column: 1 / -1 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(1),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(1) { order: 2 !important; grid-column: span 3 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(6),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(6) { order: 3 !important; grid-column: span 3 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(3),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(3) { order: 4 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(4),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(4) { order: 5 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(5),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(5) { order: 6 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(7),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(7) { order: 7 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(8),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(8) { order: 8 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(9),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(9) { order: 9 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10) { order: 10 !important; grid-column: span 3 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(11),
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(11) { order: 11 !important; grid-column: span 3 !important; }
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(3) .form-control,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(3) .form-control,
    body.role-director .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(n+7):nth-of-type(-n+9) .form-control,
    body.role-administrativo .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(n+7):nth-of-type(-n+9) .form-control {
        padding: 0 6px !important;
        font-size: 14px !important;
    }
}

/* Recibo suelto del modal de pagos: desplegable para que no se confunda con el calendario */
body.role-director .adm-recibo-suelto,
body.role-administrativo .adm-recibo-suelto {
    margin-top: 12px !important;
    text-align: center !important;
}
body.role-director .adm-recibo-suelto > summary,
body.role-administrativo .adm-recibo-suelto > summary {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    list-style: none !important;
    cursor: pointer !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-white) !important;
    padding: 8px 16px !important;
    font-weight: 800 !important;
    font-size: 13.5px !important;
    box-shadow: 2px 2px 0px 0px var(--brand-black) !important;
    user-select: none !important;
}
body.role-director .adm-recibo-suelto > summary::-webkit-details-marker,
body.role-administrativo .adm-recibo-suelto > summary::-webkit-details-marker {
    display: none !important;
}
body.role-director .adm-recibo-suelto > summary:hover,
body.role-administrativo .adm-recibo-suelto > summary:hover {
    background: var(--brand-yellow) !important;
}
body.role-director .adm-recibo-suelto[open] > summary .adm-caret,
body.role-administrativo .adm-recibo-suelto[open] > summary .adm-caret {
    transform: rotate(180deg) !important;
}
body.role-director .adm-recibo-suelto[open] > summary,
body.role-administrativo .adm-recibo-suelto[open] > summary {
    margin-bottom: 10px !important;
    background: var(--brand-yellow) !important;
}
body.role-director .adm-recibo-suelto > .modal-filtros,
body.role-administrativo .adm-recibo-suelto > .modal-filtros {
    text-align: left !important;
}

/* ============================================================
   Filtros en una franja (reutilizable) y listado de Altas de formulario
   ============================================================ */
body.role-director .adm-filtros-linea,
body.role-administrativo .adm-filtros-linea {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    gap: 12px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    padding: 12px 14px !important;
    margin: 4px 0 16px !important;
}
body.role-director .adm-filtro,
body.role-administrativo .adm-filtro {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    flex: 1 1 220px !important;
    margin: 0 !important;
}
body.role-director .adm-filtro > span,
body.role-administrativo .adm-filtro > span {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-filtro .form-control,
body.role-administrativo .adm-filtro .form-control {
    height: 40px !important;
    padding: 0 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 14px !important;
    font-weight: 600 !important;
}
body.role-director .adm-filtros-botones,
body.role-administrativo .adm-filtros-botones {
    display: flex !important;
    gap: 8px !important;
}
body.role-director .adm-filtros-botones .btn,
body.role-administrativo .adm-filtros-botones .btn {
    height: 40px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    margin: 0 !important;
}
/* Estado vacío */
body.role-director .adm-vacio,
body.role-administrativo .adm-vacio {
    text-align: center !important;
    padding: 40px 16px !important;
    border: 3px dashed var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    color: var(--brand-text-muted) !important;
    font-weight: 600 !important;
}
body.role-director .adm-vacio i,
body.role-administrativo .adm-vacio i {
    font-size: 30px !important;
    margin-bottom: 8px !important;
}

/* Tarjeta de alta */
body.role-director .adm-fila-alta,
body.role-administrativo .adm-fila-alta {
    display: grid !important;
    grid-template-columns: minmax(200px, 1.5fr) minmax(160px, 1.2fr) minmax(150px, 1fr) 92px auto !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 16px !important;
    border-left-width: 8px !important;
}
body.role-director .adm-alta-registrado,
body.role-administrativo .adm-alta-registrado { border-left-color: var(--brand-success) !important; }
body.role-director .adm-alta-existia,
body.role-administrativo .adm-alta-existia { border-left-color: var(--brand-warning) !important; }
body.role-director .adm-alta-quien,
body.role-administrativo .adm-alta-quien,
body.role-director .adm-alta-form,
body.role-administrativo .adm-alta-form,
body.role-director .adm-alta-fecha,
body.role-administrativo .adm-alta-fecha {
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
    min-width: 0 !important;
}
body.role-director .adm-fila-alta small,
body.role-administrativo .adm-fila-alta small {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-alta-form b,
body.role-administrativo .adm-alta-form b {
    font-size: 14px !important;
    font-weight: 700 !important;
}
body.role-director .adm-alta-estado,
body.role-administrativo .adm-alta-estado {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 5px !important;
}
body.role-director .adm-alta-fecha b,
body.role-administrativo .adm-alta-fecha b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 13px !important;
    font-weight: 800 !important;
}
body.role-director .adm-fila-alta .nb-dd-panel form,
body.role-administrativo .adm-fila-alta .nb-dd-panel form {
    margin: 0 !important;
}
@media (max-width: 991px) {
    body.role-director .adm-fila-alta,
    body.role-administrativo .adm-fila-alta {
        grid-template-columns: 1fr 1fr !important;
    }
    body.role-director .adm-fila-alta > .adm-row-actions,
    body.role-administrativo .adm-fila-alta > .adm-row-actions {
        grid-column: 1 / -1 !important;
        justify-content: flex-start !important;
    }
}
@media (max-width: 575px) {
    body.role-director .adm-fila-alta,
    body.role-administrativo .adm-fila-alta {
        grid-template-columns: 1fr !important;
        gap: 8px !important;
    }
}
@media (min-width: 992px) {
    /* Columnas alineadas entre filas aunque unas tengan más botones que otras */
    body.role-director .adm-fila-alta,
    body.role-administrativo .adm-fila-alta {
        grid-template-columns: minmax(200px, 1.5fr) minmax(160px, 1.2fr) minmax(150px, 1fr) 92px 290px !important;
    }
    body.role-director .adm-fila-alta > .adm-row-actions,
    body.role-administrativo .adm-fila-alta > .adm-row-actions {
        justify-content: flex-end !important;
    }
}

/* ============================================================
   Detalle de un alta de formulario (.editForm.adm-detalle)
   ============================================================ */
/* Una sola caja por sección: la columna no es caja, la .card de dentro sí */
body.role-director .editForm.adm-detalle > .row > [class*="col-"],
body.role-administrativo .editForm.adm-detalle > .row > [class*="col-"] {
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
}
body.role-director .editForm.adm-detalle > .row,
body.role-administrativo .editForm.adm-detalle > .row {
    margin-bottom: 16px !important;
}
body.role-director .adm-detalle .card,
body.role-administrativo .adm-detalle .card {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    overflow: hidden !important;
    height: auto !important;
}
body.role-director .adm-detalle .card-header,
body.role-administrativo .adm-detalle .card-header {
    background: var(--brand-bg) !important;
    border-bottom: 3px solid var(--brand-black) !important;
    padding: 12px 16px !important;
}
body.role-director .adm-detalle .card-header h5,
body.role-administrativo .adm-detalle .card-header h5 {
    font-size: 16px !important;
    font-weight: 900 !important;
    margin: 0 !important;
    border: none !important;
    padding: 0 !important;
}
/* Tablas de datos como lista etiqueta / valor */
body.role-director .adm-detalle .card .table,
body.role-administrativo .adm-detalle .card .table {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
    border: none !important;
}
body.role-director .adm-detalle .card .table tbody,
body.role-administrativo .adm-detalle .card .table tbody {
    display: block !important;
}
body.role-director .adm-detalle .card .table tr,
body.role-administrativo .adm-detalle .card .table tr {
    display: grid !important;
    grid-template-columns: minmax(130px, 38%) 1fr !important;
    gap: 10px !important;
    padding: 9px 16px !important;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.18) !important;
    background: none !important;
}
body.role-director .adm-detalle .card .table tr:last-child,
body.role-administrativo .adm-detalle .card .table tr:last-child {
    border-bottom: none !important;
}
body.role-director .adm-detalle .card .table th,
body.role-administrativo .adm-detalle .card .table th,
body.role-director .adm-detalle .card .table td,
body.role-administrativo .adm-detalle .card .table td {
    display: block !important;
    border: none !important;
    padding: 0 !important;
    background: none !important;
    width: auto !important;
    min-width: 0 !important;
    text-align: left !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-detalle .card .table th,
body.role-administrativo .adm-detalle .card .table th {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 0.5px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    padding-top: 2px !important;
}
body.role-director .adm-detalle .card .table td,
body.role-administrativo .adm-detalle .card .table td {
    font-size: 14px !important;
    font-weight: 600 !important;
}
/* Formularitos dentro de una celda (estado del pago): que bajen de línea */
body.role-director .adm-detalle .card .table td form,
body.role-administrativo .adm-detalle .card .table td form {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    margin: 6px 0 0 !important;
}
body.role-director .adm-detalle .card .table td select,
body.role-administrativo .adm-detalle .card .table td select {
    height: 34px !important;
    max-width: 100% !important;
    padding: 0 8px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 13px !important;
}
/* Botonera final en fila ordenada */
body.role-director .adm-detalle > .row:last-child .col-md-12,
body.role-administrativo .adm-detalle > .row:last-child .col-md-12 {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
    align-items: center !important;
}
body.role-director .adm-detalle > .row:last-child .col-md-12 > form,
body.role-administrativo .adm-detalle > .row:last-child .col-md-12 > form {
    margin: 0 !important;
}
body.role-director .adm-detalle > .row:last-child .col-md-12 > .alert,
body.role-administrativo .adm-detalle > .row:last-child .col-md-12 > .alert {
    flex: 1 1 100% !important;
}
@media (max-width: 767px) {
    body.role-director .adm-detalle .card .table tr,
    body.role-administrativo .adm-detalle .card .table tr {
        grid-template-columns: 1fr !important;
        gap: 2px !important;
        padding: 8px 12px !important;
    }
    body.role-director .adm-detalle > .row:last-child .col-md-12 > a,
    body.role-administrativo .adm-detalle > .row:last-child .col-md-12 > a,
    body.role-director .adm-detalle > .row:last-child .col-md-12 > form,
    body.role-administrativo .adm-detalle > .row:last-child .col-md-12 > form,
    body.role-director .adm-detalle > .row:last-child .col-md-12 > form .btn,
    body.role-administrativo .adm-detalle > .row:last-child .col-md-12 > form .btn {
        width: 100% !important;
        justify-content: center !important;
    }
}
body.role-director .adm-detalle .card,
body.role-administrativo .adm-detalle .card {
    padding: 0 !important;
}
body.role-director .adm-detalle .card-header,
body.role-administrativo .adm-detalle .card-header {
    margin: 0 !important;
}

/* ============================================================
   Filtro segmentado (reutilizable) y listado de formularios de registro
   ============================================================ */
body.role-director .adm-segmento,
body.role-administrativo .adm-segmento {
    display: inline-flex !important;
    max-width: 100% !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    background: var(--brand-white) !important;
    padding: 3px !important;
    gap: 3px !important;
    margin: 4px 0 16px !important;
}
body.role-director .adm-segmento > button,
body.role-administrativo .adm-segmento > button {
    flex: 1 1 auto !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    min-height: 34px !important;
    padding: 0 14px !important;
    border: 0 !important;
    border-radius: 7px !important;
    background: transparent !important;
    box-shadow: none !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    color: var(--brand-text) !important;
    white-space: nowrap !important;
    cursor: pointer !important;
}
body.role-director .adm-segmento > button:hover,
body.role-administrativo .adm-segmento > button:hover {
    background: var(--brand-bg) !important;
}
body.role-director .adm-segmento > button.active,
body.role-administrativo .adm-segmento > button.active {
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
}
body.role-director .adm-segmento > button b,
body.role-administrativo .adm-segmento > button b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    opacity: .75 !important;
}

body.role-director .adm-fila-form,
body.role-administrativo .adm-fila-form {
    display: grid !important;
    grid-template-columns: minmax(220px, 1fr) minmax(180px, 260px) 290px !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 16px !important;
    border-left-width: 8px !important;
    border-left-color: var(--brand-success) !important;
}
body.role-director .adm-fila-form.adm-form-inactivo,
body.role-administrativo .adm-fila-form.adm-form-inactivo {
    border-left-color: #9CA3AF !important;
    opacity: .8 !important;
}
body.role-director .adm-form-quien,
body.role-administrativo .adm-form-quien {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    min-width: 0 !important;
}
body.role-director .adm-form-url,
body.role-administrativo .adm-form-url {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 12px !important;
    color: var(--brand-cyan) !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-form-url i,
body.role-administrativo .adm-form-url i {
    font-size: 10px !important;
}
body.role-director .adm-fila-form > .adm-row-actions,
body.role-administrativo .adm-fila-form > .adm-row-actions {
    justify-content: flex-end !important;
}
@media (max-width: 991px) {
    body.role-director .adm-fila-form,
    body.role-administrativo .adm-fila-form {
        grid-template-columns: 1fr auto !important;
    }
    body.role-director .adm-fila-form > .adm-row-actions,
    body.role-administrativo .adm-fila-form > .adm-row-actions {
        grid-column: 1 / -1 !important;
        justify-content: flex-start !important;
    }
}
@media (max-width: 575px) {
    body.role-director .adm-fila-form,
    body.role-administrativo .adm-fila-form {
        grid-template-columns: 1fr !important;
        gap: 10px !important;
    }
    body.role-director .adm-segmento,
    body.role-administrativo .adm-segmento {
        display: flex !important;
    }
    body.role-director .adm-segmento > button,
    body.role-administrativo .adm-segmento > button {
        padding: 0 8px !important;
        font-size: 12.5px !important;
    }
    body.role-director .adm-fila-form > .adm-row-actions > .btn,
    body.role-administrativo .adm-fila-form > .adm-row-actions > .btn {
        flex: 1 1 0 !important;
        justify-content: center !important;
    }
}
body.role-director .adm-alta-estado a.badge,
body.role-administrativo .adm-alta-estado a.badge {
    color: var(--brand-white) !important;
    text-decoration: none !important;
}
body.role-director .adm-alta-estado a.badge:hover,
body.role-administrativo .adm-alta-estado a.badge:hover {
    filter: brightness(.9) !important;
}
body.role-director .adm-oculto,
body.role-administrativo .adm-oculto {
    display: none !important;
}

/* ============================================================
   Inicio: altas del día por curso
   ============================================================ */
body.role-director .adm-altas-dia,
body.role-administrativo .adm-altas-dia {
    margin-bottom: 16px !important;
}
body.role-director .adm-altas-head,
body.role-administrativo .adm-altas-head {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    flex-wrap: wrap !important;
    margin-bottom: 12px !important;
}
body.role-director .adm-altas-head .adm-panel-title,
body.role-administrativo .adm-altas-head .adm-panel-title {
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}
body.role-director .adm-altas-total,
body.role-administrativo .adm-altas-total {
    background: var(--brand-yellow) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    padding: 0 8px !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 14px !important;
}
body.role-director .adm-altas-nav,
body.role-administrativo .adm-altas-nav {
    display: flex !important;
    gap: 6px !important;
}
body.role-director .adm-altas-nav .btn,
body.role-administrativo .adm-altas-nav .btn {
    margin: 0 !important;
    min-width: 36px !important;
    height: 34px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}
body.role-director .adm-altas-cursos,
body.role-administrativo .adm-altas-cursos {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important;
    gap: 10px !important;
}
body.role-director .adm-altas-curso,
body.role-administrativo .adm-altas-curso {
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    padding: 10px 12px !important;
    background: var(--brand-bg) !important;
}
body.role-director .adm-altas-curso-head,
body.role-administrativo .adm-altas-curso-head {
    display: flex !important;
    justify-content: space-between !important;
    align-items: baseline !important;
    gap: 10px !important;
    margin-bottom: 8px !important;
}
body.role-director .adm-altas-nombre,
body.role-administrativo .adm-altas-nombre {
    font-weight: 800 !important;
    font-size: 14px !important;
    min-width: 0 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-altas-nombre small,
body.role-administrativo .adm-altas-nombre small {
    display: block !important;
    font-weight: 600 !important;
    font-size: 11.5px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-altas-curso-head > b,
body.role-administrativo .adm-altas-curso-head > b {
    white-space: nowrap !important;
    font-size: 15px !important;
}
body.role-director .adm-altas-niveles,
body.role-administrativo .adm-altas-niveles {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 5px !important;
}
body.role-director .adm-altas-nivel,
body.role-administrativo .adm-altas-nivel {
    border: 1.5px solid var(--brand-black) !important;
    border-radius: 6px !important;
    background: var(--brand-white) !important;
    padding: 1px 7px !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
}
body.role-director .adm-altas-nivel b,
body.role-administrativo .adm-altas-nivel b {
    font-family: 'JetBrains Mono', monospace !important;
    margin-left: 3px !important;
}
body.role-director .adm-altas-vacio,
body.role-administrativo .adm-altas-vacio {
    margin: 0 !important;
    color: var(--brand-text-muted) !important;
    font-weight: 600 !important;
}
/* Número de altas del curso destacado */
body.role-director .adm-altas-curso-head,
body.role-administrativo .adm-altas-curso-head {
    align-items: flex-start !important;
}
body.role-director .adm-altas-num,
body.role-administrativo .adm-altas-num {
    display: inline-flex !important;
    align-items: baseline !important;
    gap: 4px !important;
    flex-shrink: 0 !important;
    background: var(--brand-cyan) !important;
    color: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    padding: 2px 9px !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
    white-space: nowrap !important;
}
body.role-director .adm-altas-num b,
body.role-administrativo .adm-altas-num b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 20px !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
    line-height: 1.1 !important;
}
body.role-director .adm-altas-num.adm-altas-cero,
body.role-administrativo .adm-altas-num.adm-altas-cero {
    background: var(--brand-white) !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-altas-nivel b,
body.role-administrativo .adm-altas-nivel b {
    display: inline-block !important;
    background: var(--brand-yellow) !important;
    border-radius: 4px !important;
    padding: 0 5px !important;
    margin-left: 4px !important;
}

/* Página "Altas del día" (para hacerle foto sin el resto del inicio) */
body.role-director .adm-altas-head .adm-panel-title a,
body.role-administrativo .adm-altas-head .adm-panel-title a {
    color: inherit !important;
    text-decoration: none !important;
}
body.role-director .adm-altas-head .adm-panel-title a:hover,
body.role-administrativo .adm-altas-head .adm-panel-title a:hover {
    text-decoration: underline !important;
}
body.role-director .adm-altas-head .adm-panel-title a i,
body.role-administrativo .adm-altas-head .adm-panel-title a i {
    font-size: 11px !important;
    margin-left: 2px !important;
    color: var(--brand-cyan) !important;
}
body.role-director .adm-altas-pagina .adm-ficha-head .sectitle:first-letter,
body.role-administrativo .adm-altas-pagina .adm-ficha-head .sectitle:first-letter {
    text-transform: uppercase !important;
}
body.role-director .adm-altas-resumen,
body.role-administrativo .adm-altas-resumen {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    margin: 4px 0 16px !important;
    font-weight: 700 !important;
    font-size: 15px !important;
}
body.role-director .adm-altas-resumen .adm-altas-num b,
body.role-administrativo .adm-altas-resumen .adm-altas-num b {
    font-size: 26px !important;
}
body.role-director .adm-altas-pagina .adm-altas-curso,
body.role-administrativo .adm-altas-pagina .adm-altas-curso {
    background: var(--brand-white) !important;
    border-width: 3px !important;
    box-shadow: var(--apr-shadow) !important;
}
body.role-director .adm-altas-pagina .adm-altas-cursos,
body.role-administrativo .adm-altas-pagina .adm-altas-cursos {
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)) !important;
    gap: 16px !important;
    align-items: start !important;
}
body.role-director .adm-altas-alumnos,
body.role-administrativo .adm-altas-alumnos {
    margin: 12px 0 0 !important;
    padding: 10px 0 0 22px !important;
    border-top: 2px dashed var(--brand-black) !important;
    font-size: 13.5px !important;
}
body.role-director .adm-altas-alumnos li,
body.role-administrativo .adm-altas-alumnos li {
    margin-bottom: 6px !important;
}
body.role-director .adm-altas-alumnos li a,
body.role-administrativo .adm-altas-alumnos li a {
    font-weight: 700 !important;
    color: var(--brand-text) !important;
}
body.role-director .adm-altas-alumnos li small,
body.role-administrativo .adm-altas-alumnos li small {
    display: block !important;
    color: var(--brand-text-muted) !important;
    font-size: 12px !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-altas-alumnos li.adm-altas-ya,
body.role-administrativo .adm-altas-alumnos li.adm-altas-ya {
    opacity: .65 !important;
}
body.role-director .adm-altas-alumnos,
body.role-administrativo .adm-altas-alumnos {
    list-style: none !important;
    padding-left: 0 !important;
}
body.role-director .adm-altas-alumnos li,
body.role-administrativo .adm-altas-alumnos li {
    padding-left: 12px !important;
    border-left: 4px solid var(--brand-cyan) !important;
}
body.role-director .adm-altas-alumnos li.adm-altas-ya,
body.role-administrativo .adm-altas-alumnos li.adm-altas-ya {
    border-left-color: #D1D5DB !important;
}
body.role-director .adm-altas-resumen,
body.role-administrativo .adm-altas-resumen {
    flex-wrap: wrap !important;
}
body.role-director .adm-altas-resumen .adm-altas-toggle,
body.role-administrativo .adm-altas-resumen .adm-altas-toggle {
    margin: 0 0 0 auto !important;
}

/* ============================================================
   Estadísticas de matrícula
   ============================================================ */
body.role-director .adm-est-contexto,
body.role-administrativo .adm-est-contexto {
    margin: 0 0 14px !important;
    font-size: 14px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-est-contexto b,
body.role-administrativo .adm-est-contexto b {
    color: var(--brand-text) !important;
}
body.role-director .adm-est-kpis .adm-stat,
body.role-administrativo .adm-est-kpis .adm-stat {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 3px !important;
    cursor: default !important;
}
body.role-director .adm-est-kpis .adm-stat small,
body.role-administrativo .adm-est-kpis .adm-stat small {
    font-size: 11.5px !important;
    color: var(--brand-text-muted) !important;
    text-align: center !important;
}
body.role-director .adm-est-var,
body.role-administrativo .adm-est-var {
    display: inline-flex !important;
    align-items: center !important;
    gap: 3px !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11.5px !important;
    font-weight: 800 !important;
    border-radius: 6px !important;
    padding: 1px 6px !important;
    white-space: nowrap !important;
}
body.role-director .adm-est-var.sube,
body.role-administrativo .adm-est-var.sube { background: #DCFCE7 !important; color: #166534 !important; }
body.role-director .adm-est-var.baja,
body.role-administrativo .adm-est-var.baja { background: #FEE2E2 !important; color: #991B1B !important; }
body.role-director .adm-est-var.igual,
body.role-administrativo .adm-est-var.igual { background: #F3F4F6 !important; color: #4B5563 !important; }
body.role-director .adm-est-panel,
body.role-administrativo .adm-est-panel {
    margin-bottom: 16px !important;
}
body.role-director .adm-est-panel .adm-panel-title small,
body.role-administrativo .adm-est-panel .adm-panel-title small {
    font-size: 12px !important;
    font-weight: 600 !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-est-grafica,
body.role-administrativo .adm-est-grafica {
    position: relative !important;
    height: 320px !important;
}
body.role-director .adm-est-nota,
body.role-administrativo .adm-est-nota {
    margin: 10px 0 0 !important;
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-est-cols,
body.role-administrativo .adm-est-cols {
    display: grid !important;
    grid-template-columns: 3fr 2fr !important;
    gap: 16px !important;
    align-items: start !important;
}
body.role-director .adm-est-fila,
body.role-administrativo .adm-est-fila {
    display: grid !important;
    grid-template-columns: 1fr 70px 150px !important;
    gap: 10px !important;
    align-items: center !important;
    padding: 10px 0 !important;
    border-bottom: 1px solid #E5E7EB !important;
}
body.role-director .adm-est-cab,
body.role-administrativo .adm-est-cab {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    border-bottom: 2px solid var(--brand-black) !important;
    padding-top: 0 !important;
}
body.role-director .adm-est-curso,
body.role-administrativo .adm-est-curso {
    display: flex !important;
    flex-direction: column !important;
    gap: 5px !important;
    min-width: 0 !important;
}
body.role-director .adm-est-curso > b,
body.role-administrativo .adm-est-curso > b {
    font-size: 14px !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-est-num,
body.role-administrativo .adm-est-num {
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 800 !important;
    font-size: 15px !important;
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 4px !important;
}
body.role-director .adm-est-barra,
body.role-administrativo .adm-est-barra {
    margin-bottom: 12px !important;
}
body.role-director .adm-est-barra-txt,
body.role-administrativo .adm-est-barra-txt {
    display: flex !important;
    justify-content: space-between !important;
    gap: 8px !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    margin-bottom: 3px !important;
}
body.role-director .adm-est-barra-txt b,
body.role-administrativo .adm-est-barra-txt b {
    font-family: 'JetBrains Mono', monospace !important;
    white-space: nowrap !important;
}
body.role-director .adm-est-barra-fondo,
body.role-administrativo .adm-est-barra-fondo {
    height: 12px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 6px !important;
    background: var(--brand-white) !important;
    overflow: hidden !important;
}
body.role-director .adm-est-barra-valor,
body.role-administrativo .adm-est-barra-valor {
    height: 100% !important;
    background: var(--brand-cyan) !important;
}
body.role-director .adm-est-barra-ant,
body.role-administrativo .adm-est-barra-ant {
    height: 7px !important;
    border-width: 1px !important;
    margin-top: 3px !important;
}
body.role-director .adm-est-barra-ant .adm-est-barra-valor,
body.role-administrativo .adm-est-barra-ant .adm-est-barra-valor {
    background: #9CA3AF !important;
}
body.role-director .adm-est-barra small,
body.role-administrativo .adm-est-barra small {
    font-size: 11px !important;
    color: var(--brand-text-muted) !important;
}
@media (max-width: 991px) {
    body.role-director .adm-est-cols,
    body.role-administrativo .adm-est-cols {
        grid-template-columns: 1fr !important;
    }
}
@media (max-width: 575px) {
    body.role-director .adm-est-fila,
    body.role-administrativo .adm-est-fila {
        grid-template-columns: 1fr 52px 96px !important;
        gap: 6px !important;
    }
    body.role-director .adm-est-grafica,
    body.role-administrativo .adm-est-grafica {
        height: 240px !important;
    }
}
/* Estadísticas: edad, ocupación de grupos */
body.role-director .adm-est-subtitulo,
body.role-administrativo .adm-est-subtitulo {
    margin-top: 22px !important;
    padding-top: 14px !important;
    border-top: 2px dashed var(--brand-black) !important;
}
body.role-director .adm-est-kpis .adm-stat small br,
body.role-administrativo .adm-est-kpis .adm-stat small br {
    display: block !important;
}
body.role-director .adm-est-ocu-resumen,
body.role-administrativo .adm-est-ocu-resumen {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    margin-bottom: 12px !important;
}
body.role-director .adm-est-lleno b,
body.role-administrativo .adm-est-lleno b { background: #FCA5A5 !important; }
body.role-director .adm-est-pocos b,
body.role-administrativo .adm-est-pocos b { background: #E5E7EB !important; }
body.role-director .adm-est-ocu-fila,
body.role-administrativo .adm-est-ocu-fila {
    display: grid !important;
    grid-template-columns: minmax(150px, 260px) 1fr 110px !important;
    gap: 12px !important;
    align-items: center !important;
    padding: 7px 0 !important;
    border-bottom: 1px solid #E5E7EB !important;
}
body.role-director .adm-est-ocu-nombre,
body.role-administrativo .adm-est-ocu-nombre {
    display: flex !important;
    flex-direction: column !important;
    min-width: 0 !important;
    font-size: 13.5px !important;
}
body.role-director .adm-est-ocu-nombre small,
body.role-administrativo .adm-est-ocu-nombre small,
body.role-director .adm-est-ocu-num small,
body.role-administrativo .adm-est-ocu-num small {
    font-size: 11.5px !important;
    color: var(--brand-text-muted) !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-est-ocu-num,
body.role-administrativo .adm-est-ocu-num {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-end !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 14px !important;
}
body.role-director .adm-est-lleno .adm-est-barra-valor,
body.role-administrativo .adm-est-lleno .adm-est-barra-valor { background: var(--brand-danger) !important; }
body.role-director .adm-est-pocos .adm-est-barra-valor,
body.role-administrativo .adm-est-pocos .adm-est-barra-valor { background: #9CA3AF !important; }
body.role-director .adm-est-mas > summary,
body.role-administrativo .adm-est-mas > summary {
    list-style: none !important;
    cursor: pointer !important;
    padding: 10px 0 4px !important;
    font-weight: 700 !important;
    font-size: 13px !important;
    color: var(--brand-cyan) !important;
}
body.role-director .adm-est-mas > summary::-webkit-details-marker,
body.role-administrativo .adm-est-mas > summary::-webkit-details-marker { display: none !important; }
body.role-director .adm-est-mas[open] > summary .adm-caret,
body.role-administrativo .adm-est-mas[open] > summary .adm-caret { transform: rotate(180deg) !important; }
@media (max-width: 575px) {
    body.role-director .adm-est-ocu-fila,
    body.role-administrativo .adm-est-ocu-fila {
        grid-template-columns: 1fr 80px !important;
        gap: 4px 10px !important;
    }
    body.role-director .adm-est-ocu-fila > .adm-est-barra-fondo,
    body.role-administrativo .adm-est-ocu-fila > .adm-est-barra-fondo {
        grid-column: 1 / -1 !important;
        grid-row: 2 !important;
    }
}
/* Estadísticas: materias más demandadas / que suben / que bajan */
body.role-director .adm-est-ocu-resumen .adm-est-lleno b,
body.role-administrativo .adm-est-ocu-resumen .adm-est-lleno b { background: #FCA5A5 !important; }
body.role-director .adm-est-ocu-fila b,
body.role-administrativo .adm-est-ocu-fila b { background: transparent !important; }
body.role-director .adm-est-materias,
body.role-administrativo .adm-est-materias {
    display: grid !important;
    grid-template-columns: 1.3fr 1fr 1fr !important;
    gap: 22px !important;
}
body.role-director .adm-est-h3,
body.role-administrativo .adm-est-h3 {
    font-size: 13px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
    margin: 0 0 10px !important;
}
body.role-director .adm-est-h3.sube,
body.role-administrativo .adm-est-h3.sube { color: #166534 !important; }
body.role-director .adm-est-h3.baja,
body.role-administrativo .adm-est-h3.baja { color: #991B1B !important; }
body.role-director .adm-est-mat,
body.role-administrativo .adm-est-mat {
    display: grid !important;
    grid-template-columns: 80px 1fr 44px !important;
    gap: 8px !important;
    align-items: center !important;
    margin-bottom: 7px !important;
    font-size: 13px !important;
}
body.role-director .adm-est-mat > b,
body.role-administrativo .adm-est-mat > b {
    font-family: 'JetBrains Mono', monospace !important;
    text-align: right !important;
}
body.role-director .adm-est-mat-nombre,
body.role-administrativo .adm-est-mat-nombre {
    font-weight: 800 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-est-mat-dif,
body.role-administrativo .adm-est-mat-dif {
    grid-template-columns: 80px 1fr auto !important;
    padding-bottom: 6px !important;
    border-bottom: 1px solid #E5E7EB !important;
}
body.role-director .adm-est-mat-dif small,
body.role-administrativo .adm-est-mat-dif small {
    font-family: 'JetBrains Mono', monospace !important;
    color: var(--brand-text-muted) !important;
}
@media (max-width: 991px) {
    body.role-director .adm-est-materias,
    body.role-administrativo .adm-est-materias {
        grid-template-columns: 1fr !important;
    }
}
/* Estadísticas: modalidad */
body.role-director .adm-filtro.adm-filtro-corto,
body.role-administrativo .adm-filtro.adm-filtro-corto {
    flex: 0 1 180px !important;
}
body.role-director .adm-est-solo,
body.role-administrativo .adm-est-solo {
    display: inline-block !important;
    margin-left: 6px !important;
    background: var(--brand-yellow) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 6px !important;
    padding: 0 8px !important;
    font-weight: 800 !important;
    color: var(--brand-text) !important;
}
body.role-director .adm-est-modalidad,
body.role-administrativo .adm-est-modalidad {
    align-items: stretch !important;
    gap: 4px !important;
}
body.role-director .adm-est-modalidad > span,
body.role-administrativo .adm-est-modalidad > span {
    text-align: center !important;
    margin-bottom: 2px !important;
}
body.role-director .adm-est-md,
body.role-administrativo .adm-est-md {
    display: grid !important;
    grid-template-columns: 1fr auto auto !important;
    gap: 6px !important;
    align-items: center !important;
    font-size: 12.5px !important;
}
body.role-director .adm-est-md em,
body.role-administrativo .adm-est-md em {
    font-style: normal !important;
    font-weight: 700 !important;
}
body.role-director .adm-est-md b,
body.role-administrativo .adm-est-md b {
    font-size: 15px !important;
    font-family: 'JetBrains Mono', monospace !important;
}
body.role-director .adm-est-md-curso,
body.role-administrativo .adm-est-md-curso {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    font-size: 11.5px !important;
    font-weight: 700 !important;
}
body.role-director .adm-est-md-curso .md-presencial,
body.role-administrativo .adm-est-md-curso .md-presencial { color: var(--brand-text-muted) !important; }
body.role-director .adm-est-md-curso .md-online,
body.role-administrativo .adm-est-md-curso .md-online { color: #1D4ED8 !important; }
body.role-director .adm-est-md-curso .md-diferido,
body.role-administrativo .adm-est-md-curso .md-diferido { color: #15803D !important; }
body.role-director .adm-altas-nav .adm-altas-est,
body.role-administrativo .adm-altas-nav .adm-altas-est {
    gap: 6px !important;
    padding: 0 12px !important;
    margin-left: 6px !important;
}
@media (max-width: 575px) {
    body.role-director .adm-altas-nav,
    body.role-administrativo .adm-altas-nav {
        flex-wrap: wrap !important;
    }
}
/* Estadísticas: tarjetas de cifras sin desbordarse */
body.role-director .adm-stats.adm-est-kpis,
body.role-administrativo .adm-stats.adm-est-kpis {
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)) !important;
}
body.role-director .adm-est-kpis .adm-stat,
body.role-administrativo .adm-est-kpis .adm-stat {
    min-width: 0 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-est-kpis .adm-stat > span,
body.role-administrativo .adm-est-kpis .adm-stat > span {
    letter-spacing: .5px !important;
}
@media (max-width: 575px) {
    body.role-director .adm-stats.adm-est-kpis,
    body.role-administrativo .adm-stats.adm-est-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 10px !important;
    }
    body.role-director .adm-est-kpis .adm-stat,
    body.role-administrativo .adm-est-kpis .adm-stat {
        padding: 12px 8px !important;
    }
    body.role-director .adm-est-kpis .adm-stat > b,
    body.role-administrativo .adm-est-kpis .adm-stat > b {
        font-size: 26px !important;
    }
    body.role-director .adm-est-kpis .adm-stat > span,
    body.role-administrativo .adm-est-kpis .adm-stat > span {
        font-size: 9.5px !important;
    }
    body.role-director .adm-est-var,
    body.role-administrativo .adm-est-var {
        white-space: normal !important;
        justify-content: center !important;
    }
    body.role-director .adm-est-kpis .adm-est-modalidad,
    body.role-administrativo .adm-est-kpis .adm-est-modalidad {
        grid-column: 1 / -1 !important;
    }
    body.role-director .adm-est-md,
    body.role-administrativo .adm-est-md {
        grid-template-columns: 90px 50px 1fr !important;
        justify-items: start !important;
    }
    body.role-director .adm-est-contexto,
    body.role-administrativo .adm-est-contexto {
        font-size: 13px !important;
    }
}

/* ============================================================
   Filtros plegables (reutilizable) y listado de Solicitudes
   ============================================================ */
body.role-director .adm-filtros-plegable,
body.role-administrativo .adm-filtros-plegable {
    margin: 4px 0 16px !important;
}
body.role-director .adm-filtros-plegable > summary,
body.role-administrativo .adm-filtros-plegable > summary {
    list-style: none !important;
    cursor: pointer !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 8px 14px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    background: var(--brand-white) !important;
    font-weight: 800 !important;
    font-size: 14px !important;
    user-select: none !important;
}
body.role-director .adm-filtros-plegable > summary::-webkit-details-marker,
body.role-administrativo .adm-filtros-plegable > summary::-webkit-details-marker { display: none !important; }
body.role-director .adm-filtros-plegable[open] > summary,
body.role-administrativo .adm-filtros-plegable[open] > summary {
    margin-bottom: 8px !important;
    background: var(--brand-yellow) !important;
}
body.role-director .adm-filtros-plegable[open] > summary .adm-caret,
body.role-administrativo .adm-filtros-plegable[open] > summary .adm-caret { transform: rotate(180deg) !important; }
body.role-director .adm-filtros-plegable .adm-filtros-linea,
body.role-administrativo .adm-filtros-plegable .adm-filtros-linea { margin: 0 !important; }
body.role-director .adm-filtros-activos,
body.role-administrativo .adm-filtros-activos {
    background: var(--brand-cyan) !important;
    color: var(--brand-white) !important;
    border-radius: 6px !important;
    padding: 0 6px !important;
    font-size: 11px !important;
    text-transform: uppercase !important;
}
body.role-director .adm-filtros-linea .bootstrap-select,
body.role-administrativo .adm-filtros-linea .bootstrap-select { width: 100% !important; }
body.role-director .adm-filtros-linea .bootstrap-select > .dropdown-toggle,
body.role-administrativo .adm-filtros-linea .bootstrap-select > .dropdown-toggle {
    height: 40px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-white) !important;
    box-shadow: none !important;
    font-size: 14px !important;
    font-weight: 600 !important;
}

body.role-director .adm-fila-sol,
body.role-administrativo .adm-fila-sol {
    display: grid !important;
    grid-template-columns: 26px minmax(200px, 1.3fr) minmax(200px, 1.6fr) minmax(90px, .6fr) 200px !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 16px !important;
    border-left-width: 8px !important;
}
body.role-director .adm-fila-sol.adm-sol-convertida,
body.role-administrativo .adm-fila-sol.adm-sol-convertida { border-left-color: var(--brand-success) !important; }
body.role-director .adm-sol-check,
body.role-administrativo .adm-sol-check {
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer !important;
}
body.role-director .adm-sol-check input,
body.role-administrativo .adm-sol-check input {
    width: 18px !important;
    height: 18px !important;
    accent-color: var(--brand-cyan) !important;
}
body.role-director .adm-sol-quien,
body.role-administrativo .adm-sol-quien,
body.role-director .adm-sol-que,
body.role-administrativo .adm-sol-que {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    min-width: 0 !important;
}
body.role-director .adm-sol-quien small,
body.role-administrativo .adm-sol-quien small {
    font-size: 12.5px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-sol-quien small a,
body.role-administrativo .adm-sol-quien small a {
    color: inherit !important;
    text-decoration: none !important;
    white-space: nowrap !important;
}
body.role-director .adm-sol-que > b,
body.role-administrativo .adm-sol-que > b {
    font-size: 13.5px !important;
    font-weight: 800 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-sol-libre,
body.role-administrativo .adm-sol-libre {
    border-style: dashed !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-sol-empleado,
body.role-administrativo .adm-sol-empleado {
    font-size: 13px !important;
    font-weight: 600 !important;
    color: var(--brand-text-muted) !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-fila-sol > .adm-row-actions,
body.role-administrativo .adm-fila-sol > .adm-row-actions {
    justify-content: flex-end !important;
}
@media (max-width: 991px) {
    body.role-director .adm-fila-sol,
    body.role-administrativo .adm-fila-sol {
        grid-template-columns: 26px 1fr 1fr !important;
    }
    body.role-director .adm-fila-sol > .adm-sol-empleado,
    body.role-administrativo .adm-fila-sol > .adm-sol-empleado { grid-column: 2 / 3 !important; }
    body.role-director .adm-fila-sol > .adm-row-actions,
    body.role-administrativo .adm-fila-sol > .adm-row-actions { grid-column: 3 / 4 !important; }
}
@media (max-width: 575px) {
    body.role-director .adm-fila-sol,
    body.role-administrativo .adm-fila-sol {
        grid-template-columns: 22px 1fr !important;
        gap: 8px 10px !important;
        padding: 12px !important;
    }
    body.role-director .adm-fila-sol > .adm-sol-check,
    body.role-administrativo .adm-fila-sol > .adm-sol-check {
        grid-row: 1 !important;
        align-self: start !important;
        padding-top: 3px !important;
    }
    body.role-director .adm-fila-sol > :not(.adm-sol-check),
    body.role-administrativo .adm-fila-sol > :not(.adm-sol-check) {
        grid-column: 2 / 3 !important;
    }
    body.role-director .adm-fila-sol > .adm-row-actions,
    body.role-administrativo .adm-fila-sol > .adm-row-actions {
        justify-content: flex-start !important;
    }
    body.role-director .adm-filtro.adm-filtro-corto,
    body.role-administrativo .adm-filtro.adm-filtro-corto { flex: 1 1 140px !important; }
}
body.role-director .adm-est-md em,
body.role-administrativo .adm-est-md em {
    white-space: nowrap !important;
}
body.role-director .adm-est-md,
body.role-administrativo .adm-est-md {
    grid-template-columns: minmax(70px, auto) auto 1fr !important;
    justify-items: start !important;
}
/* Estadísticas: cómo pagan */
body.role-director .adm-est-pagos,
body.role-administrativo .adm-est-pagos {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)) !important;
    gap: 12px !important;
}
body.role-director .adm-est-pago,
body.role-administrativo .adm-est-pago {
    display: flex !important;
    flex-direction: column !important;
    gap: 5px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    background: var(--brand-bg) !important;
    padding: 12px !important;
    min-width: 0 !important;
}
body.role-director .adm-est-pago-nombre,
body.role-administrativo .adm-est-pago-nombre {
    font-weight: 800 !important;
    font-size: 13.5px !important;
}
body.role-director .adm-est-pago-pct,
body.role-administrativo .adm-est-pago-pct {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 28px !important;
    line-height: 1 !important;
}
body.role-director .adm-est-pago small,
body.role-administrativo .adm-est-pago small {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-est-pago .adm-est-pago-importe,
body.role-administrativo .adm-est-pago .adm-est-pago-importe {
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 800 !important;
    color: var(--brand-text) !important;
}
@media (max-width: 575px) {
    body.role-director .adm-est-pagos,
    body.role-administrativo .adm-est-pagos {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}
body.role-director .adm-est-aviso,
body.role-administrativo .adm-est-aviso {
    margin: 0 0 12px !important;
    padding: 8px 12px !important;
    border: 2px dashed var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-white) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
}
body.role-director .adm-est-pago-ref,
body.role-administrativo .adm-est-pago-ref {
    background: #F3F4F6 !important;
    border-style: dashed !important;
}
body.role-director .adm-est-pago-ref .adm-est-barra-ant,
body.role-administrativo .adm-est-pago-ref .adm-est-barra-ant {
    height: 12px !important;
    border-width: 2px !important;
}
body.role-director .adm-est-md b,
body.role-administrativo .adm-est-md b {
    white-space: nowrap !important;
}

/* ============================================================
   Impresión / Guardar como PDF (estadísticas y altas del día)
   ============================================================ */
body.role-director .adm-solo-impresion,
body.role-administrativo .adm-solo-impresion {
    display: none !important;
}
body.role-director .adm-altas-resumen .adm-altas-pdf,
body.role-administrativo .adm-altas-resumen .adm-altas-pdf {
    margin: 0 !important;
    gap: 6px !important;
}
@media print {
    @page { size: A4; margin: 12mm; }
    body.role-director,
    body.role-administrativo {
        background: #fff !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    body.role-director .almhead,
    body.role-administrativo .almhead,
    body.role-director .adm-layout > :not(main),
    body.role-administrativo .adm-layout > :not(main),
    body.role-director .sf-toolbar,
    body.role-administrativo .sf-toolbar,
    body.role-director .adm-toolbar,
    body.role-administrativo .adm-toolbar,
    body.role-director .adm-altas-nav,
    body.role-administrativo .adm-altas-nav,
    body.role-director .adm-altas-toggle,
    body.role-administrativo .adm-altas-toggle,
    body.role-director .adm-altas-pdf,
    body.role-administrativo .adm-altas-pdf,
    body.role-director #filtroEstadisticas,
    body.role-administrativo #filtroEstadisticas,
    body.role-director .adm-est-mas > summary,
    body.role-administrativo .adm-est-mas > summary,
    body.role-director .modal,
    body.role-administrativo .modal {
        display: none !important;
    }
    body.role-director .adm-solo-impresion,
    body.role-administrativo .adm-solo-impresion {
        display: block !important;
        font-size: 11px !important;
        color: #555 !important;
        margin: 0 0 6px !important;
    }
    body.role-director .adm-layout,
    body.role-administrativo .adm-layout,
    body.role-director .adm-main,
    body.role-administrativo .adm-main {
        display: block !important;
        margin: 0 !important;
        padding: 0 !important;
        width: 100% !important;
        max-width: none !important;
        overflow: visible !important;
    }
    body.role-director .adm-panel,
    body.role-administrativo .adm-panel,
    body.role-director .adm-stat,
    body.role-administrativo .adm-stat,
    body.role-director .adm-altas-curso,
    body.role-administrativo .adm-altas-curso,
    body.role-director .adm-est-fila,
    body.role-administrativo .adm-est-fila,
    body.role-director .adm-est-ocu-fila,
    body.role-administrativo .adm-est-ocu-fila,
    body.role-director .adm-est-pago,
    body.role-administrativo .adm-est-pago {
        break-inside: avoid !important;
        page-break-inside: avoid !important;
        box-shadow: none !important;
    }
    body.role-director .adm-est-grafica,
    body.role-administrativo .adm-est-grafica {
        height: 260px !important;
    }
    body.role-director .adm-est-cols,
    body.role-administrativo .adm-est-cols {
        grid-template-columns: 1fr !important;
    }
    body.role-director .adm-stats.adm-est-kpis,
    body.role-administrativo .adm-stats.adm-est-kpis {
        grid-template-columns: repeat(4, 1fr) !important;
    }
}
@media print {
    body.role-director details[data-no-imprimir],
    body.role-administrativo details[data-no-imprimir] {
        display: none !important;
    }
}
@media print {
    body.role-director .adm-altas-pagina .adm-altas-curso,
    body.role-administrativo .adm-altas-pagina .adm-altas-curso,
    body.role-director .adm-altas-pagina .adm-altas-cursos,
    body.role-administrativo .adm-altas-pagina .adm-altas-cursos {
        break-inside: auto !important;
        page-break-inside: auto !important;
    }
    body.role-director .adm-altas-pagina .adm-altas-cursos,
    body.role-administrativo .adm-altas-pagina .adm-altas-cursos {
        display: block !important;
    }
    body.role-director .adm-altas-pagina .adm-altas-curso,
    body.role-administrativo .adm-altas-pagina .adm-altas-curso {
        margin-bottom: 10px !important;
    }
    body.role-director .adm-altas-alumnos li,
    body.role-administrativo .adm-altas-alumnos li {
        break-inside: avoid !important;
    }
}
/* Impresión: maquetación para papel (A4) */
@media print {
    html, body { width: auto !important; }
    body.role-director .adm-main,
    body.role-administrativo .adm-main { font-size: 11px !important; }
    body.role-director .adm-ficha-head,
    body.role-administrativo .adm-ficha-head {
        margin-bottom: 4px !important;
        padding-bottom: 6px !important;
        border-bottom: 2px solid #000 !important;
    }
    body.role-director .adm-ficha-head .sectitle,
    body.role-administrativo .adm-ficha-head .sectitle { font-size: 20px !important; }
    /* Los recuadros pueden seguir en la página siguiente, con su borde en cada trozo */
    body.role-director .adm-panel,
    body.role-administrativo .adm-panel {
        break-inside: auto !important;
        page-break-inside: auto !important;
        -webkit-box-decoration-break: clone !important;
        box-decoration-break: clone !important;
        border-width: 2px !important;
        border-radius: 8px !important;
        padding: 10px 12px !important;
        margin-bottom: 10px !important;
    }
    body.role-director .adm-panel-title,
    body.role-administrativo .adm-panel-title,
    body.role-director .adm-est-h3,
    body.role-administrativo .adm-est-h3 {
        break-after: avoid !important;
        page-break-after: avoid !important;
        font-size: 13px !important;
        margin-bottom: 8px !important;
    }
    body.role-director .adm-est-barra,
    body.role-administrativo .adm-est-barra,
    body.role-director .adm-est-mat,
    body.role-administrativo .adm-est-mat,
    body.role-director .adm-altas-curso-head,
    body.role-administrativo .adm-altas-curso-head {
        break-inside: avoid !important;
        page-break-inside: avoid !important;
    }
    /* Cifras más compactas */
    body.role-director .adm-stats.adm-est-kpis,
    body.role-administrativo .adm-stats.adm-est-kpis {
        gap: 8px !important;
        margin-bottom: 10px !important;
    }
    body.role-director .adm-est-kpis .adm-stat,
    body.role-administrativo .adm-est-kpis .adm-stat {
        border-width: 2px !important;
        padding: 8px 6px !important;
    }
    body.role-director .adm-est-kpis .adm-stat > b,
    body.role-administrativo .adm-est-kpis .adm-stat > b { font-size: 22px !important; }
    body.role-director .adm-est-pagos,
    body.role-administrativo .adm-est-pagos { grid-template-columns: repeat(4, 1fr) !important; gap: 8px !important; }
    body.role-director .adm-est-pago-pct,
    body.role-administrativo .adm-est-pago-pct { font-size: 20px !important; }
    /* Barras (cómo nos conocieron, edad) a dos columnas */
    body.role-director .adm-est-barras,
    body.role-administrativo .adm-est-barras {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        column-gap: 22px !important;
    }
    body.role-director .adm-est-barras > details,
    body.role-administrativo .adm-est-barras > details { display: contents !important; }
    body.role-director .adm-est-barra,
    body.role-administrativo .adm-est-barra { margin-bottom: 7px !important; }
    body.role-director .adm-est-subtitulo,
    body.role-administrativo .adm-est-subtitulo { margin-top: 12px !important; padding-top: 10px !important; }
    /* Tabla por curso */
    body.role-director .adm-est-fila,
    body.role-administrativo .adm-est-fila { padding: 6px 0 !important; grid-template-columns: 1fr 60px 130px !important; }
    body.role-director .adm-altas-nivel,
    body.role-administrativo .adm-altas-nivel { font-size: 10.5px !important; padding: 0 5px !important; }
    body.role-director .adm-est-materias,
    body.role-administrativo .adm-est-materias { grid-template-columns: 1.2fr 1fr 1fr !important; gap: 14px !important; }
    body.role-director .adm-est-ocu-fila,
    body.role-administrativo .adm-est-ocu-fila { padding: 4px 0 !important; grid-template-columns: 220px 1fr 90px !important; }
    body.role-director .adm-est-grafica,
    body.role-administrativo .adm-est-grafica { height: 240px !important; width: 100% !important; }
    body.role-director .adm-est-grafica canvas,
    body.role-administrativo .adm-est-grafica canvas { max-width: 100% !important; }
    body.role-director .adm-est-nota,
    body.role-administrativo .adm-est-nota { font-size: 10px !important; }
}
@media print {
    body.role-director .adm-est-barras,
    body.role-administrativo .adm-est-barras {
        display: block !important;
        columns: 2 !important;
        column-gap: 22px !important;
    }
    body.role-director .adm-est-barras > details,
    body.role-administrativo .adm-est-barras > details { display: block !important; }
    body.role-director .adm-est-barra,
    body.role-administrativo .adm-est-barra { display: block !important; }
}
@media print {
    body.role-director .adm-main a[href]::after,
    body.role-administrativo .adm-main a[href]::after,
    body.role-director .adm-main abbr[title]::after,
    body.role-administrativo .adm-main abbr[title]::after {
        content: none !important;
    }
    body.role-director .adm-main a,
    body.role-administrativo .adm-main a { text-decoration: none !important; }
    body.role-director .adm-altas-alumnos,
    body.role-administrativo .adm-altas-alumnos {
        columns: 2 !important;
        column-gap: 20px !important;
    }
    body.role-director .adm-altas-alumnos li,
    body.role-administrativo .adm-altas-alumnos li { margin-bottom: 4px !important; }
}
@media print {
    body.role-director .adm-altas-pagina .adm-altas-curso,
    body.role-administrativo .adm-altas-pagina .adm-altas-curso {
        box-shadow: none !important;
        border-width: 2px !important;
        -webkit-box-decoration-break: clone !important;
        box-decoration-break: clone !important;
    }
}

/* ============================================================
   Ficha simple (administrativo y similares): un solo recuadro con los
   campos en rejilla en vez de una caja por campo
   ============================================================ */
body.role-director .adm-ficha-form > form.row,
body.role-administrativo .adm-ficha-form > form.row {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 14px 18px !important;
    margin: 0 !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 18px !important;
}
body.role-director .editForm.adm-ficha-form > form.row > div[class],
body.role-administrativo .editForm.adm-ficha-form > form.row > div[class] {
    width: auto !important;
    max-width: none !important;
    flex: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    min-width: 0 !important;
}
body.role-director .adm-ficha-form > form.row > div > label,
body.role-administrativo .adm-ficha-form > form.row > div > label,
body.role-director .adm-ficha-form #funciones_div > label,
body.role-administrativo .adm-ficha-form #funciones_div > label {
    display: block !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    margin: 0 0 5px !important;
}
body.role-director .adm-ficha-form > form.row .form-control,
body.role-administrativo .adm-ficha-form > form.row .form-control {
    height: 42px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 14px !important;
    width: 100% !important;
}
body.role-director .editForm.adm-ficha-form > form.row > div.adm-ficha-final[class],
body.role-administrativo .editForm.adm-ficha-form > form.row > div.adm-ficha-final[class],
body.role-director .adm-ficha-form > form.row > div:has(> .alert),
body.role-administrativo .adm-ficha-form > form.row > div:has(> .alert) {
    grid-column: 1 / -1 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    border-top: 2px dashed var(--brand-black) !important;
    padding-top: 16px !important;
}
body.role-director .adm-ficha-final > div,
body.role-administrativo .adm-ficha-final > div {
    width: 100% !important;
    max-width: none !important;
    flex: none !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
body.role-director .adm-ficha-final #separador,
body.role-administrativo .adm-ficha-final #separador { display: none !important; }
body.role-director .adm-ficha-final #proteccionDatos,
body.role-administrativo .adm-ficha-final #proteccionDatos,
body.role-director .adm-ficha-final #acosoLaboral,
body.role-administrativo .adm-ficha-final #acosoLaboral {
    font-size: 13px !important;
    font-weight: 600 !important;
}
body.role-director .adm-ficha-final #proteccionDatos p,
body.role-administrativo .adm-ficha-final #proteccionDatos p,
body.role-director .adm-ficha-final #acosoLaboral p,
body.role-administrativo .adm-ficha-final #acosoLaboral p {
    margin: 0 !important;
    color: var(--brand-danger) !important;
}
body.role-director .adm-ficha-final .bootstrap-select,
body.role-administrativo .adm-ficha-final .bootstrap-select { width: 100% !important; }
body.role-director .adm-ficha-final #register_submit,
body.role-administrativo .adm-ficha-final #register_submit {
    align-self: flex-start !important;
    min-width: 220px !important;
    width: auto !important;
    margin: 6px 0 0 !important;
}
/* Ficheros del administrativo */
body.role-director .adm-fichero,
body.role-administrativo .adm-fichero {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    flex-wrap: wrap !important;
    padding: 8px 0 !important;
    border-bottom: 1px solid #E5E7EB !important;
}
body.role-director .adm-fichero > a,
body.role-administrativo .adm-fichero > a {
    font-weight: 700 !important;
    color: var(--brand-text) !important;
    overflow-wrap: anywhere !important;
    min-width: 0 !important;
}
body.role-director .adm-fichero-acciones,
body.role-administrativo .adm-fichero-acciones {
    display: flex !important;
    gap: 6px !important;
}
@media (max-width: 991px) {
    body.role-director .adm-ficha-form > form.row,
    body.role-administrativo .adm-ficha-form > form.row {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}
@media (max-width: 575px) {
    body.role-director .adm-ficha-form > form.row,
    body.role-administrativo .adm-ficha-form > form.row {
        grid-template-columns: 1fr !important;
        padding: 14px !important;
        gap: 12px !important;
    }
    body.role-director .adm-ficha-final #register_submit,
    body.role-administrativo .adm-ficha-final #register_submit {
        width: 100% !important;
    }
}
body.role-director .adm-pager .posAdmin,
body.role-administrativo .adm-pager .posAdmin {
    white-space: nowrap !important;
    font-size: 12.5px !important;
    font-weight: 700 !important;
    padding: 0 4px !important;
}

/* ============================================================
   Ficha de asignatura (dirección y administración): cabecera y pestañas
   compactas en una fila; en el móvil, selector de sección
   ============================================================ */
body.role-director .adm-asg-sub,
body.role-administrativo .adm-asg-sub {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px 12px !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    color: var(--brand-text-muted) !important;
    margin-top: 2px !important;
}
body.role-director #subjectTab,
body.role-administrativo #subjectTab {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 4px !important;
    margin: 4px 0 0 !important;
    padding: 0 10px !important;
    border: 0 !important;
    position: relative !important;
    z-index: 1 !important;
    overflow: visible !important;
}
body.role-director #subjectTab .nav-item,
body.role-administrativo #subjectTab .nav-item {
    margin: 0 !important;
}
body.role-director #subjectTab .nav-link,
body.role-administrativo #subjectTab .nav-link {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    border: 2px solid var(--brand-black) !important;
    border-bottom: 0 !important;
    border-radius: 10px 10px 0 0 !important;
    background: var(--brand-white) !important;
    color: var(--brand-text) !important;
    box-shadow: none !important;
    font-size: 13px !important;
    font-weight: 800 !important;
    padding: 7px 12px !important;
    margin: 0 0 -3px !important;
    min-height: 0 !important;
    white-space: nowrap !important;
    transform: none !important;
}
body.role-director #subjectTab .nav-link i,
body.role-administrativo #subjectTab .nav-link i {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director #subjectTab .nav-link:hover,
body.role-administrativo #subjectTab .nav-link:hover {
    background: var(--brand-bg) !important;
}
body.role-director #subjectTab .nav-link.active,
body.role-administrativo #subjectTab .nav-link.active {
    background: var(--brand-yellow) !important;
    border-bottom: 3px solid var(--brand-yellow) !important;
    padding-bottom: 8px !important;
}
body.role-director #subjectTab .nav-link.active i,
body.role-administrativo #subjectTab .nav-link.active i {
    color: var(--brand-black) !important;
}
body.role-director #subjectTab ~ .tab-content > .tab-pane > .editForm,
body.role-administrativo #subjectTab ~ .tab-content > .tab-pane > .editForm {
    margin-top: 0 !important;
    border-top-width: 3px !important;
}
@media (max-width: 767px) {
    body.role-director #subjectTab,
    body.role-administrativo #subjectTab {
        display: none !important;
    }
    body.role-director #subjectTab ~ .tab-content > .tab-pane > .editForm,
    body.role-administrativo #subjectTab ~ .tab-content > .tab-pane > .editForm {
        padding: 12px !important;
    }
}
/* Pestañas de la ficha de asignatura en una fila: más compactas en pantallas medianas */
@media (max-width: 1500px) {
    body.role-director #subjectTab .nav-link,
    body.role-administrativo #subjectTab .nav-link {
        font-size: 12.5px !important;
        padding: 6px 9px !important;
        gap: 5px !important;
    }
    body.role-director #subjectTab .nav-link.active,
    body.role-administrativo #subjectTab .nav-link.active { padding-bottom: 7px !important; }
}
@media (max-width: 1350px) {
    body.role-director #subjectTab .nav-link i,
    body.role-administrativo #subjectTab .nav-link i { display: none !important; }
}

/* ============================================================
   Pestaña Sesiones (dirección y administración)
   ============================================================ */
body.role-director #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td,
body.role-administrativo #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td {
    padding: 8px 6px !important;
    vertical-align: middle !important;
}
body.role-director #sesiones .adm-sesion-fecha,
body.role-administrativo #sesiones .adm-sesion-fecha {
    font-weight: 700 !important;
    text-align: left !important;
}
body.role-director #sesiones .adm-sesion .btn,
body.role-administrativo #sesiones .adm-sesion .btn {
    font-size: 11.5px !important;
    padding: 6px 12px !important;
    min-height: 0 !important;
    margin: 0 !important;
    white-space: nowrap !important;
}
/* Panel de asistencia de una sesión: una fila compacta por alumno */
body.role-director #sesiones [id^="sessionAttendancePanel_"],
body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] {
    margin: 0 !important;
    padding: 8px 4px !important;
}
body.role-director #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title,
body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title {
    background: transparent !important;
    color: var(--brand-text-muted) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
    padding: 4px !important;
    border: 0 !important;
    min-height: 0 !important;
}
body.role-director #sesiones [id^="fila_alumno_"],
body.role-administrativo #sesiones [id^="fila_alumno_"] {
    display: grid !important;
    grid-template-columns: 3fr 3fr 2fr 4fr !important;
    align-items: center !important;
    gap: 8px !important;
    margin: 0 !important;
    padding: 6px 8px !important;
    border-bottom: 1px solid #E5E7EB !important;
    width: 100% !important;
    max-width: none !important;
    flex: none !important;
}
body.role-director #sesiones [id^="fila_alumno_"] > .panel-line-data,
body.role-administrativo #sesiones [id^="fila_alumno_"] > .panel-line-data {
    max-width: none !important;
    width: auto !important;
    flex: none !important;
    padding: 0 !important;
    border: 0 !important;
    min-height: 0 !important;
}
body.role-director #sesiones [id^="fila_alumno_"] > .alumno_nombre,
body.role-administrativo #sesiones [id^="fila_alumno_"] > .alumno_nombre {
    text-align: left !important;
    font-weight: 700 !important;
    font-size: 13.5px !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio,
body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 4px !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .panel-button.btn,
body.role-administrativo #sesiones [id^="fila_alumno_"] .panel-button.btn {
    font-size: 10.5px !important;
    padding: 4px 9px !important;
    min-height: 0 !important;
    margin: 0 !important;
    border-width: 2px !important;
    box-shadow: none !important;
    white-space: nowrap !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .btn-carga-faltas,
body.role-administrativo #sesiones [id^="fila_alumno_"] .btn-carga-faltas {
    white-space: normal !important;
    text-align: center !important;
}
@media (max-width: 767px) {
    body.role-director #sesiones table.adm-sesiones > thead,
    body.role-administrativo #sesiones table.adm-sesiones > thead { display: none !important; }
    body.role-director #sesiones table.adm-sesiones,
    body.role-administrativo #sesiones table.adm-sesiones,
    body.role-director #sesiones table.adm-sesiones > tbody,
    body.role-administrativo #sesiones table.adm-sesiones > tbody { display: block !important; width: 100% !important; }
    body.role-director #sesiones tr.adm-sesion,
    body.role-administrativo #sesiones tr.adm-sesion {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 6px 10px !important;
        align-items: center !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 10px !important;
        background: var(--brand-white) !important;
        padding: 10px 12px !important;
        margin: 10px 0 0 !important;
    }
    body.role-director #sesiones tr.adm-sesion > td,
    body.role-administrativo #sesiones tr.adm-sesion > td {
        display: block !important;
        padding: 0 !important;
        border: 0 !important;
        background: transparent !important;
        text-align: left !important;
    }
    body.role-director #sesiones tr.adm-sesion > .adm-sesion-fecha,
    body.role-administrativo #sesiones tr.adm-sesion > .adm-sesion-fecha {
        grid-column: 1 / -1 !important;
        font-size: 15px !important;
    }
    body.role-director #sesiones tr.adm-sesion > td[data-label]::before,
    body.role-administrativo #sesiones tr.adm-sesion > td[data-label]::before {
        content: attr(data-label) ': ' !important;
        font-weight: 700 !important;
        color: var(--brand-text-muted) !important;
        font-size: 12.5px !important;
    }
    body.role-director #sesiones tr.adm-sesion > td:last-child,
    body.role-administrativo #sesiones tr.adm-sesion > td:last-child { text-align: right !important; }
    body.role-director #sesiones .adm-sesion-txt,
    body.role-administrativo #sesiones .adm-sesion-txt { display: none !important; }
    body.role-director #sesiones tr.sessionPanelRow,
    body.role-administrativo #sesiones tr.sessionPanelRow { display: block; }
    body.role-director #sesiones tr.sessionPanelRow > td,
    body.role-administrativo #sesiones tr.sessionPanelRow > td {
        display: block !important;
        padding: 0 !important;
        border: 2px solid var(--brand-black) !important;
        border-top: 0 !important;
        border-radius: 0 0 10px 10px !important;
        background: var(--brand-white) !important;
    }
    body.role-director #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title,
    body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title { display: none !important; }
    body.role-director #sesiones [id^="fila_alumno_"],
    body.role-administrativo #sesiones [id^="fila_alumno_"] {
        grid-template-columns: 1fr auto !important;
        padding: 8px 4px !important;
    }
    body.role-director #sesiones [id^="fila_alumno_"] > .alumno_nombre,
    body.role-administrativo #sesiones [id^="fila_alumno_"] > .alumno_nombre { grid-column: 1 / -1 !important; }
    body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio,
    body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio { justify-content: flex-start !important; }
    body.role-director #sesiones [id^="fila_alumno_"] > :last-child,
    body.role-administrativo #sesiones [id^="fila_alumno_"] > :last-child { grid-column: 1 / -1 !important; }
}
body.role-director #sesiones [id^="sessionAttendancePanel_"],
body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] {
    display: grid !important;
    grid-template-columns: 3fr 3fr 2fr 4fr !important;
    column-gap: 8px !important;
    align-items: center !important;
}
body.role-director #sesiones [id^="sessionAttendancePanel_"] > :not(.panel-header-title),
body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] > :not(.panel-header-title) {
    grid-column: 1 / -1 !important;
}
body.role-director #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title,
body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title {
    width: auto !important;
    max-width: none !important;
    flex: none !important;
}
body.role-director #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title:first-child,
body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title:first-child { text-align: left !important; padding-left: 12px !important; }
body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn,
body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn {
    width: auto !important;
    display: inline-flex !important;
    flex: 0 0 auto !important;
}
@media (max-width: 767px) {
    body.role-director #sesiones [id^="sessionAttendancePanel_"],
    body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] { display: block !important; }
    body.role-director #sesiones [id^="fila_alumno_"] .btn-carga-faltas,
    body.role-administrativo #sesiones [id^="fila_alumno_"] .btn-carga-faltas {
        width: 100% !important;
        overflow-wrap: anywhere !important;
    }
}
body.role-director #sesiones [id^="fila_alumno_"] > .botonera-radio,
body.role-administrativo #sesiones [id^="fila_alumno_"] > .botonera-radio {
    flex-direction: row !important;
    align-items: center !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .panel-button.btn.btn-carga-faltas,
body.role-administrativo #sesiones [id^="fila_alumno_"] .panel-button.btn.btn-carga-faltas {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    max-width: 100% !important;
    height: auto !important;
    line-height: 1.25 !important;
}

/* Listado de asignaturas en el móvil: tarjeta ordenada por zonas */
@media (max-width: 767px) {
    body.role-director .adm-fila-asg,
    body.role-administrativo .adm-fila-asg {
        grid-template-columns: 22px 30px minmax(0, 1fr) 112px !important;
        grid-template-areas:
            "chk col nom nom"
            "pro pro pro aul"
            "alu alu lib lib"
            "hor hor hor act" !important;
        gap: 8px 10px !important;
        padding: 12px !important;
        align-items: center !important;
    }
    body.role-director .adm-fila-asg > .checkbox-col,
    body.role-administrativo .adm-fila-asg > .checkbox-col { grid-area: chk !important; }
    body.role-director .adm-fila-asg > .adm-asg-color,
    body.role-administrativo .adm-fila-asg > .adm-asg-color { grid-area: col !important; }
    body.role-director .adm-fila-asg > .adm-asg-nombre,
    body.role-administrativo .adm-fila-asg > .adm-asg-nombre { grid-area: nom !important; }
    body.role-director .adm-fila-asg > .adm-asg-profe,
    body.role-administrativo .adm-fila-asg > .adm-asg-profe { grid-area: pro !important; }
    body.role-director .adm-fila-asg > .adm-asg-aula,
    body.role-administrativo .adm-fila-asg > .adm-asg-aula { grid-area: aul !important; }
    body.role-director .adm-fila-asg > .adm-asg-alumnos,
    body.role-administrativo .adm-fila-asg > .adm-asg-alumnos { grid-area: alu !important; }
    body.role-director .adm-fila-asg > .adm-asg-libres,
    body.role-administrativo .adm-fila-asg > .adm-asg-libres { grid-area: lib !important; }
    body.role-director .adm-fila-asg > .adm-asg-horario,
    body.role-administrativo .adm-fila-asg > .adm-asg-horario { grid-area: hor !important; }
    body.role-director .adm-fila-asg > .adm-row-actions,
    body.role-administrativo .adm-fila-asg > .adm-row-actions {
        grid-area: act !important;
        justify-content: flex-end !important;
        align-self: end !important;
    }
    body.role-director .adm-fila-asg > .adm-asg-alumnos,
    body.role-administrativo .adm-fila-asg > .adm-asg-alumnos,
    body.role-director .adm-fila-asg > .adm-asg-libres,
    body.role-administrativo .adm-fila-asg > .adm-asg-libres {
        display: flex !important;
        flex-direction: row !important;
        align-items: baseline !important;
        gap: 6px !important;
        text-align: left !important;
        background: var(--brand-bg) !important;
        border: 1.5px solid var(--brand-black) !important;
        border-radius: 8px !important;
        padding: 4px 8px !important;
    }
    body.role-director .adm-fila-asg > .adm-asg-libres::before,
    body.role-administrativo .adm-fila-asg > .adm-asg-libres::before {
        content: 'Plazas libres' !important;
        font-size: 11px !important;
        font-weight: 700 !important;
        color: var(--brand-text-muted) !important;
        order: 3 !important;
    }
    body.role-director .adm-fila-asg .adm-asg-cifra small,
    body.role-administrativo .adm-fila-asg .adm-asg-cifra small {
        font-size: 11px !important;
        line-height: 1.2 !important;
    }
    body.role-director .adm-fila-asg .adm-asg-nombre .adm-fila-nombre,
    body.role-administrativo .adm-fila-asg .adm-asg-nombre .adm-fila-nombre {
        font-size: 16px !important;
        font-weight: 800 !important;
    }
    body.role-director .adm-fila-asg .adm-asg-horario,
    body.role-administrativo .adm-fila-asg .adm-asg-horario {
        display: flex !important;
        align-items: center !important;
        gap: 8px !important;
    }
    body.role-director .adm-fila-asg select,
    body.role-administrativo .adm-fila-asg select {
        width: 100% !important;
        min-width: 0 !important;
    }
}
@media (max-width: 767px) {
    body.role-director .adm-fila-asg,
    body.role-administrativo .adm-fila-asg {
        grid-template-columns: 22px 30px minmax(0, 1fr) minmax(0, 1fr) !important;
        grid-template-areas:
            "chk col nom nom"
            "pro pro pro aul"
            "alu alu alu lib"
            "hor hor hor act" !important;
    }
    body.role-director .adm-fila-asg .adm-asg-horario .horario-texto,
    body.role-administrativo .adm-fila-asg .adm-asg-horario .horario-texto {
        display: block !important;
        white-space: normal !important;
        font-size: 11px !important;
    }
    body.role-director .adm-fila-asg > .adm-asg-libres,
    body.role-administrativo .adm-fila-asg > .adm-asg-libres { flex-wrap: wrap !important; }
}
body.role-director .adm-fila-asg > .adm-row-actions,
body.role-administrativo .adm-fila-asg > .adm-row-actions {
    justify-content: flex-end !important;
    min-width: 0 !important;
}
body.role-director .adm-fila-asg > .adm-row-actions .adm-row-more,
body.role-administrativo .adm-fila-asg > .adm-row-actions .adm-row-more {
    margin: 0 !important;
}
@media (min-width: 992px) {
    body.role-director .adm-fila-asg,
    body.role-administrativo .adm-fila-asg,
    body.role-director .adm-cab-asg,
    body.role-administrativo .adm-cab-asg {
        grid-template-columns: 26px 34px minmax(160px, 1.4fr) minmax(120px, 1fr) 90px 112px 70px 160px 52px !important;
    }
}

/* La fila con su menú ⋯ abierto queda por encima de las demás: el efecto
   hover (transform) de la fila siguiente creaba una capa encima del menú */
body.role-director :is(.secfila, .adm-fila-asg, tr):has(.nb-dd.open),
body.role-administrativo :is(.secfila, .adm-fila-asg, tr):has(.nb-dd.open) {
    position: relative !important;
    z-index: 60 !important;
}

/* Cuotas prefijadas (página y ventana) */
body.role-director .adm-ayuda-pagina,
body.role-administrativo .adm-ayuda-pagina {
    margin: 0 0 14px !important;
    font-size: 13.5px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-cuotas-barra,
body.role-administrativo .adm-cuotas-barra {
    margin: 0 0 12px !important;
}
body.role-director .secfila.adm-fila-cuota,
body.role-administrativo .secfila.adm-fila-cuota {
    display: grid !important;
    grid-template-columns: minmax(160px, 1fr) minmax(0, 1.4fr) auto !important;
    gap: 12px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 10px 14px !important;
}
body.role-director .adm-cuota-nombre,
body.role-administrativo .adm-cuota-nombre {
    font-size: 15px !important;
    overflow-wrap: anywhere !important;
}
@media (max-width: 575px) {
    body.role-director .secfila.adm-fila-cuota,
    body.role-administrativo .secfila.adm-fila-cuota {
        grid-template-columns: 1fr !important;
        gap: 8px !important;
    }
    body.role-director .adm-fila-cuota > .adm-row-actions,
    body.role-administrativo .adm-fila-cuota > .adm-row-actions { justify-content: flex-start !important; }
}

/* Tests de nivel de español */
body.role-director .secfila.adm-fila-test,
body.role-administrativo .secfila.adm-fila-test {
    display: grid !important;
    grid-template-columns: minmax(200px, 1.3fr) 70px minmax(0, 2fr) 130px auto !important;
    gap: 12px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 14px !important;
    border-left-width: 8px !important;
}
body.role-director .adm-fila-test.adm-test-atendida,
body.role-administrativo .adm-fila-test.adm-test-atendida { border-left-color: var(--brand-success) !important; }
body.role-director .adm-test-quien,
body.role-administrativo .adm-test-quien {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    min-width: 0 !important;
}
body.role-director .adm-test-quien small,
body.role-administrativo .adm-test-quien small {
    display: flex !important;
    flex-direction: column !important;
    gap: 1px !important;
    font-size: 12px !important;
}
body.role-director .adm-test-quien small a,
body.role-administrativo .adm-test-quien small a {
    color: var(--brand-text-muted) !important;
    text-decoration: none !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-test-nivel,
body.role-administrativo .adm-test-nivel {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    background: var(--brand-yellow) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    padding: 4px !important;
}
body.role-director .adm-test-nivel span,
body.role-administrativo .adm-test-nivel span {
    font-size: 9.5px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
}
body.role-director .adm-test-nivel b,
body.role-administrativo .adm-test-nivel b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 15px !important;
    white-space: nowrap !important;
}
body.role-director .adm-test-datos > span,
body.role-administrativo .adm-test-datos > span {
    font-family: inherit !important;
    font-weight: 600 !important;
    white-space: normal !important;
    cursor: default !important;
}
body.role-director .adm-test-estado,
body.role-administrativo .adm-test-estado {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 4px !important;
}
@media (max-width: 991px) {
    body.role-director .secfila.adm-fila-test,
    body.role-administrativo .secfila.adm-fila-test {
        grid-template-columns: minmax(0, 1fr) 70px !important;
    }
    body.role-director .adm-fila-test > .adm-test-datos,
    body.role-administrativo .adm-fila-test > .adm-test-datos,
    body.role-director .adm-fila-test > .adm-test-estado,
    body.role-administrativo .adm-fila-test > .adm-test-estado,
    body.role-director .adm-fila-test > .adm-row-actions,
    body.role-administrativo .adm-fila-test > .adm-row-actions {
        grid-column: 1 / -1 !important;
        justify-content: flex-start !important;
    }
}
body.role-director .adm-fila-chips.adm-test-datos > span:not(.adm-fila-vacio),
body.role-administrativo .adm-fila-chips.adm-test-datos > span:not(.adm-fila-vacio) {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    max-width: 100% !important;
    font-family: inherit !important;
    font-weight: 600 !important;
    cursor: default !important;
}
body.role-director .secfila.adm-fila-test,
body.role-administrativo .secfila.adm-fila-test {
    grid-template-columns: minmax(200px, 1.3fr) 88px minmax(0, 2fr) 130px auto !important;
}
@media (max-width: 991px) {
    body.role-director .secfila.adm-fila-test,
    body.role-administrativo .secfila.adm-fila-test { grid-template-columns: minmax(0, 1fr) 88px !important; }
}

/* Observaciones docentes */
body.role-director .secfila.adm-fila-obs,
body.role-administrativo .secfila.adm-fila-obs {
    display: grid !important;
    grid-template-columns: 170px minmax(0, 1fr) auto !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 14px !important;
    border-left-width: 8px !important;
    border-left-color: var(--brand-warning) !important;
}
body.role-director .adm-fila-obs.adm-obs-ini,
body.role-administrativo .adm-fila-obs.adm-obs-ini { border-left-color: var(--brand-cyan) !important; }
body.role-director .adm-fila-obs.adm-obs-fin,
body.role-administrativo .adm-fila-obs.adm-obs-fin { border-left-color: var(--brand-success) !important; }
body.role-director .adm-obs-cuando,
body.role-administrativo .adm-obs-cuando,
body.role-director .adm-obs-quien,
body.role-administrativo .adm-obs-quien {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    min-width: 0 !important;
}
body.role-director .adm-obs-cuando b,
body.role-administrativo .adm-obs-cuando b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 14px !important;
}
body.role-director .adm-obs-estado,
body.role-administrativo .adm-obs-estado {
    align-self: flex-start !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    border: 1.5px solid var(--brand-black) !important;
    border-radius: 6px !important;
    padding: 1px 7px !important;
    background: var(--brand-bg) !important;
}
body.role-director .adm-obs-quien small,
body.role-administrativo .adm-obs-quien small {
    font-size: 12.5px !important;
    color: var(--brand-text-muted) !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-fila-obs .nb-dd-head,
body.role-administrativo .adm-fila-obs .nb-dd-head {
    font-size: 10px !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
    color: var(--brand-text-muted) !important;
    border: 0 !important;
    margin: 6px 0 2px !important;
    padding: 2px 8px !important;
    background: none !important;
}
@media (max-width: 767px) {
    body.role-director .secfila.adm-fila-obs,
    body.role-administrativo .secfila.adm-fila-obs {
        grid-template-columns: 1fr !important;
        gap: 8px !important;
    }
    body.role-director .adm-obs-cuando,
    body.role-administrativo .adm-obs-cuando {
        flex-direction: row !important;
        align-items: center !important;
        justify-content: space-between !important;
    }
    body.role-director .adm-fila-obs > .adm-row-actions,
    body.role-administrativo .adm-fila-obs > .adm-row-actions { justify-content: flex-start !important; flex-wrap: wrap !important; }
}

/* Encuestas */
body.role-director .secfila.adm-fila-enc,
body.role-administrativo .secfila.adm-fila-enc {
    display: grid !important;
    grid-template-columns: minmax(200px, 1.3fr) 190px minmax(0, 1.4fr) auto !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 14px !important;
    border-left-width: 8px !important;
}
body.role-director .adm-fila-enc.adm-enc-publicada,
body.role-administrativo .adm-fila-enc.adm-enc-publicada { border-left-color: var(--brand-success) !important; }
body.role-director .adm-enc-que,
body.role-administrativo .adm-enc-que {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    min-width: 0 !important;
}
body.role-director .adm-enc-que small,
body.role-administrativo .adm-enc-que small {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-enc-estado,
body.role-administrativo .adm-enc-estado {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 5px !important;
}
body.role-director .adm-enc-resp,
body.role-administrativo .adm-enc-resp {
    font-size: 12.5px !important;
    font-weight: 600 !important;
}
body.role-director .adm-enc-resp b,
body.role-administrativo .adm-enc-resp b {
    font-family: 'JetBrains Mono', monospace !important;
}
body.role-director .adm-fila-chips.adm-enc-dest > span:not(.adm-fila-vacio),
body.role-administrativo .adm-fila-chips.adm-enc-dest > span:not(.adm-fila-vacio) {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    cursor: default !important;
}
@media (max-width: 991px) {
    body.role-director .secfila.adm-fila-enc,
    body.role-administrativo .secfila.adm-fila-enc { grid-template-columns: 1fr !important; gap: 8px !important; }
    body.role-director .adm-fila-enc > .adm-row-actions,
    body.role-administrativo .adm-fila-enc > .adm-row-actions { justify-content: flex-start !important; flex-wrap: wrap !important; }
}
body.role-director .adm-fila-chips.adm-enc-dest > .adm-enc-mas,
body.role-administrativo .adm-fila-chips.adm-enc-dest > .adm-enc-mas {
    background: var(--brand-yellow) !important;
    cursor: help !important;
}

/* Listados antiguos en el móvil: cada fila como tarjeta, con el nombre de la
   columna delante de cada dato (data-label lo pone admin-dropdown.js) */
@media (max-width: 767px) {
    body.role-director .tablelabels.adm-tabla-cab,
    body.role-administrativo .tablelabels.adm-tabla-cab { display: none !important; }
    body.role-director .secfila.adm-tabla-movil,
    body.role-administrativo .secfila.adm-tabla-movil {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 4px !important;
        text-align: left !important;
        padding: 12px 14px !important;
    }
    body.role-director .secfila.adm-tabla-movil > *,
    body.role-administrativo .secfila.adm-tabla-movil > * {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: baseline !important;
        gap: 4px 8px !important;
        width: 100% !important;
        max-width: none !important;
        flex: none !important;
        padding: 0 !important;
        margin: 0 !important;
        text-align: left !important;
        min-width: 0 !important;
        overflow-wrap: anywhere !important;
        font-size: 13.5px !important;
    }
    body.role-director .secfila.adm-tabla-movil > :empty,
    body.role-administrativo .secfila.adm-tabla-movil > :empty { display: none !important; }
    body.role-director .secfila.adm-tabla-movil > [data-label]::before,
    body.role-administrativo .secfila.adm-tabla-movil > [data-label]::before {
        content: attr(data-label) !important;
        font-family: 'JetBrains Mono', monospace !important;
        font-size: 10px !important;
        font-weight: 800 !important;
        letter-spacing: .5px !important;
        text-transform: uppercase !important;
        color: var(--brand-text-muted) !important;
        min-width: 92px !important;
    }
    body.role-director .secfila.adm-tabla-movil > :first-child,
    body.role-administrativo .secfila.adm-tabla-movil > :first-child {
        font-size: 15.5px !important;
        font-weight: 800 !important;
    }
    body.role-director .secfila.adm-tabla-movil > :first-child::before,
    body.role-administrativo .secfila.adm-tabla-movil > :first-child::before { display: none !important; }
    body.role-director .secfila.adm-tabla-movil > :last-child,
    body.role-administrativo .secfila.adm-tabla-movil > :last-child {
        margin-top: 6px !important;
    }
    body.role-director .secfila.adm-tabla-movil .btn,
    body.role-administrativo .secfila.adm-tabla-movil .btn { margin: 0 !important; }
}

/* ============================================================
   Gestión de archivos (dirección y administración): nombres en negrita que
   no se salen, leyenda y botones compactos y móvil ordenado
   ============================================================ */
body.role-director #folders .folderElem label,
body.role-administrativo #folders .folderElem label,
body.role-director #folders .folderElem p,
body.role-administrativo #folders .folderElem p,
body.role-director #folders [id^="folder_name_"],
body.role-administrativo #folders [id^="folder_name_"],
body.role-director #folders [id^="file_name_"],
body.role-administrativo #folders [id^="file_name_"] {
    font-weight: 700 !important;
    font-size: 12.5px !important;
    line-height: 1.25 !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    hyphens: auto !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 3 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    max-width: 100% !important;
    text-align: center !important;
}
body.role-director #folders .folderElem,
body.role-administrativo #folders .folderElem {
    min-width: 0 !important;
    overflow: hidden !important;
}
body.role-director #filter-badges,
body.role-administrativo #filter-badges {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
    gap: 6px !important;
    margin: 6px 0 10px !important;
}
body.role-director #filter-badges .colorCodeFiles,
body.role-administrativo #filter-badges .colorCodeFiles {
    margin: 0 !important;
    font-size: 11px !important;
    padding: 3px 9px !important;
    border-radius: 999px !important;
    cursor: pointer !important;
}
@media (max-width: 767px) {
    body.role-director .headTitle:has(#searchTerm) .filtros,
    body.role-administrativo .headTitle:has(#searchTerm) .filtros {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 6px !important;
        width: 100% !important;
    }
    body.role-director .headTitle:has(#searchTerm) #searchTerm,
    body.role-administrativo .headTitle:has(#searchTerm) #searchTerm {
        flex: 1 1 100% !important;
        height: 42px !important;
        margin: 0 !important;
    }
    body.role-director .headTitle:has(#searchTerm) .filtros .btn,
    body.role-administrativo .headTitle:has(#searchTerm) .filtros .btn {
        flex: 1 1 auto !important;
        margin: 0 !important;
        font-size: 11px !important;
        padding: 6px 8px !important;
    }
    body.role-director .styleSelector > div,
    body.role-administrativo .styleSelector > div {
        flex-wrap: wrap !important;
        gap: 6px !important;
    }
    body.role-director .styleSelector .btn,
    body.role-administrativo .styleSelector .btn {
        font-size: 11px !important;
        padding: 6px 10px !important;
        margin: 0 !important;
    }
    body.role-director #folders,
    body.role-administrativo #folders {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        gap: 8px !important;
    }
    body.role-director #folders .folderElem,
    body.role-administrativo #folders .folderElem {
        padding: 8px 4px 6px !important;
        min-height: 0 !important;
        height: auto !important;
    }
    body.role-director #folders .folderElem i.ficon,
    body.role-administrativo #folders .folderElem i.ficon,
    body.role-director #folders .folderElem .fa-folder,
    body.role-administrativo #folders .folderElem .fa-folder {
        font-size: 30px !important;
    }
    body.role-director #folders .folderElem label,
    body.role-administrativo #folders .folderElem label,
    body.role-director #folders [id^="folder_name_"],
    body.role-administrativo #folders [id^="folder_name_"],
    body.role-director #folders [id^="file_name_"],
    body.role-administrativo #folders [id^="file_name_"] {
        font-size: 11px !important;
    }
}
body.role-director #folders .folderElem label,
body.role-administrativo #folders .folderElem label,
body.role-director #folders [id^="folder_name_"],
body.role-administrativo #folders [id^="folder_name_"],
body.role-director #folders [id^="file_name_"],
body.role-administrativo #folders [id^="file_name_"] {
    overflow-wrap: break-word !important;
    hyphens: manual !important;
    font-size: 11.5px !important;
    letter-spacing: -0.1px !important;
}
@media (max-width: 767px) {
    body.role-director #folders .folderElem label,
    body.role-administrativo #folders .folderElem label,
    body.role-director #folders [id^="folder_name_"],
    body.role-administrativo #folders [id^="folder_name_"],
    body.role-director #folders [id^="file_name_"],
    body.role-administrativo #folders [id^="file_name_"] { font-size: 10px !important; }
}
body.role-director #folders .folderElem .row,
body.role-administrativo #folders .folderElem .row { margin: 0 !important; }
body.role-director #folders .folderElem [class*="col-"],
body.role-administrativo #folders .folderElem [class*="col-"] {
    padding-left: 2px !important;
    padding-right: 2px !important;
}
body.role-director #folders .folderElem,
body.role-administrativo #folders .folderElem {
    padding-left: 4px !important;
    padding-right: 4px !important;
}
@media (max-width: 767px) {
    body.role-director #folders,
    body.role-administrativo #folders { gap: 6px !important; }
    body.role-director #folders .folderElem,
    body.role-administrativo #folders .folderElem { padding-left: 2px !important; padding-right: 2px !important; }
    body.role-director #folders .folderElem label,
    body.role-administrativo #folders .folderElem label,
    body.role-director #folders [id^="folder_name_"],
    body.role-administrativo #folders [id^="folder_name_"],
    body.role-director #folders [id^="file_name_"],
    body.role-administrativo #folders [id^="file_name_"] { font-size: 9.5px !important; letter-spacing: -0.2px !important; }
}
@media (max-width: 440px) {
    body.role-director #folders,
    body.role-administrativo #folders { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
    body.role-director #folders .folderElem label,
    body.role-administrativo #folders .folderElem label,
    body.role-director #folders [id^="folder_name_"],
    body.role-administrativo #folders [id^="folder_name_"],
    body.role-director #folders [id^="file_name_"],
    body.role-administrativo #folders [id^="file_name_"] { font-size: 11.5px !important; letter-spacing: 0 !important; }
}

/* ============================================================
   Sesiones › Ver alumnos: una tarjeta por alumno, botones agrupados
   (asistencia y retraso/falta como interruptores de varias opciones)
   ============================================================ */
body.role-director #sesiones [id^="sessionAttendancePanel_"],
body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] {
    row-gap: 8px !important;
    padding: 12px 8px !important;
}
body.role-director #sesiones [id^="fila_alumno_"],
body.role-administrativo #sesiones [id^="fila_alumno_"] {
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    padding: 10px 12px !important;
    grid-template-columns: minmax(150px, 1.2fr) auto auto minmax(110px, auto) !important;
    gap: 14px !important;
}
body.role-director #sesiones [id^="fila_alumno_"]:nth-of-type(even),
body.role-administrativo #sesiones [id^="fila_alumno_"]:nth-of-type(even) {
    background: var(--brand-white) !important;
}
/* Grupos de botones pegados (segmentados) */
body.role-director #sesiones [id^="fila_alumno_"] > .botonera-radio,
body.role-administrativo #sesiones [id^="fila_alumno_"] > .botonera-radio {
    display: inline-flex !important;
    flex-wrap: nowrap !important;
    gap: 0 !important;
    justify-content: flex-start !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    overflow: hidden !important;
    width: max-content !important;
    max-width: 100% !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn,
body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn {
    border: 0 !important;
    border-right: 2px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    min-width: 76px !important;
    justify-content: center !important;
    padding: 6px 10px !important;
    font-size: 10.5px !important;
    letter-spacing: .3px !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn:last-child,
body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn:last-child {
    border-right: 0 !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn-secondary,
body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn-secondary {
    background: var(--brand-white) !important;
    color: var(--brand-text-muted) !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn-secondary.active,
body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn-secondary.active {
    background: #E5E7EB !important;
    color: var(--brand-text) !important;
}
/* "Faltas de <nombre>": el nombre ya está en la tarjeta, aquí basta "Ver faltas" */
body.role-director #sesiones [id^="fila_alumno_"] .panel-button.btn.btn-carga-faltas,
body.role-administrativo #sesiones [id^="fila_alumno_"] .panel-button.btn.btn-carga-faltas {
    font-size: 0 !important;
    padding: 6px 12px !important;
    background: var(--brand-bg) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    box-shadow: none !important;
    white-space: nowrap !important;
    justify-self: end !important;
}
body.role-director #sesiones [id^="fila_alumno_"] .panel-button.btn.btn-carga-faltas::after,
body.role-administrativo #sesiones [id^="fila_alumno_"] .panel-button.btn.btn-carga-faltas::after {
    content: 'Ver faltas' !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    color: var(--brand-text) !important;
}
body.role-director #sesiones [id^="fila_alumno_"] > :last-child,
body.role-administrativo #sesiones [id^="fila_alumno_"] > :last-child {
    text-align: right !important;
}
@media (max-width: 767px) {
    body.role-director #sesiones [id^="fila_alumno_"],
    body.role-administrativo #sesiones [id^="fila_alumno_"] {
        grid-template-columns: 1fr !important;
        gap: 8px !important;
        margin-bottom: 8px !important;
    }
    body.role-director #sesiones [id^="fila_alumno_"] > .botonera-radio,
    body.role-administrativo #sesiones [id^="fila_alumno_"] > .botonera-radio {
        width: 100% !important;
        display: flex !important;
    }
    body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn,
    body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn {
        flex: 1 1 0 !important;
        min-width: 0 !important;
        padding: 9px 4px !important;
    }
    body.role-director #sesiones [id^="fila_alumno_"] > :last-child,
    body.role-administrativo #sesiones [id^="fila_alumno_"] > :last-child { text-align: left !important; }
}
@media (max-width: 767px) {
    /* Sesiones: aprovechar el ancho (sin rellenos de columnas anidadas) */
    body.role-director #sesiones .editForm,
    body.role-administrativo #sesiones .editForm { padding: 10px 8px !important; }
    body.role-director #sesiones .editForm [class*="col-"],
    body.role-administrativo #sesiones .editForm [class*="col-"] { padding-left: 0 !important; padding-right: 0 !important; }
    body.role-director #sesiones .editForm .row,
    body.role-administrativo #sesiones .editForm .row { margin-left: 0 !important; margin-right: 0 !important; }
    body.role-director #sesiones [id^="sessionAttendancePanel_"],
    body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] { padding: 8px 6px !important; }
    body.role-director #sesiones [id^="fila_alumno_"],
    body.role-administrativo #sesiones [id^="fila_alumno_"] { padding: 10px !important; }
    body.role-director #sesiones [id^="fila_alumno_"] > .botonera-radio,
    body.role-administrativo #sesiones [id^="fila_alumno_"] > .botonera-radio { flex-wrap: nowrap !important; }
    body.role-director #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn,
    body.role-administrativo #sesiones [id^="fila_alumno_"] .botonera-radio > .panel-button.btn {
        font-size: 10px !important;
        letter-spacing: 0 !important;
        white-space: nowrap !important;
    }
}
@media (max-width: 767px) {
    body.role-director #sesiones .editForm [id^="fila_alumno_"][class*="col-"],
    body.role-administrativo #sesiones .editForm [id^="fila_alumno_"][class*="col-"] {
        padding: 10px 12px !important;
        grid-template-columns: 1fr !important;
        gap: 8px !important;
    }
    body.role-director #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio,
    body.role-administrativo #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio {
        width: 100% !important;
    }
    body.role-director #sesiones .editForm [id^="fila_alumno_"] > .alumno_nombre,
    body.role-administrativo #sesiones .editForm [id^="fila_alumno_"] > .alumno_nombre {
        font-size: 14.5px !important;
    }
}
@media (max-width: 767px) {
    body.role-director #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio,
    body.role-administrativo #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio {
        display: flex !important;
        flex-wrap: nowrap !important;
    }
    body.role-director #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio > .panel-button.btn,
    body.role-administrativo #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio > .panel-button.btn {
        flex: 1 1 0 !important;
        min-width: 0 !important;
        width: auto !important;
    }
}
@media (max-width: 767px) {
    body.role-director #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio > .panel-button.btn,
    body.role-administrativo #sesiones .editForm [id^="fila_alumno_"] > .botonera-radio > .panel-button.btn {
        flex: 1 1 auto !important;
        padding: 9px 3px !important;
        font-size: 9.5px !important;
        overflow: visible !important;
        text-overflow: clip !important;
    }
    body.role-director #sesiones tr.sessionPanelRow > td,
    body.role-administrativo #sesiones tr.sessionPanelRow > td { border-left-width: 0 !important; border-right-width: 0 !important; }
    body.role-director #sesiones [id^="sessionAttendancePanel_"],
    body.role-administrativo #sesiones [id^="sessionAttendancePanel_"] { padding: 8px 0 !important; }
}
/* Botones de la cabecera de ficha: en el móvil bajan de línea en vez de cortarse */
@media (max-width: 767px) {
    body.role-director .adm-ficha-head .adm-toolbar,
    body.role-administrativo .adm-ficha-head .adm-toolbar {
        flex-wrap: wrap !important;
        overflow: visible !important;
        -webkit-mask-image: none !important;
        mask-image: none !important;
    }
}
body.role-director .adm-main h4,
body.role-administrativo .adm-main h4 { overflow-wrap: anywhere !important; }
@media (max-width: 767px) {
    body.role-director #configuracion .editForm .row,
    body.role-administrativo #configuracion .editForm .row { margin-left: 0 !important; margin-right: 0 !important; max-width: 100% !important; }
}
body.role-director #configuracion .row > [class*="col-"]:has(> h4),
body.role-administrativo #configuracion .row > [class*="col-"]:has(> h4) {
    flex: 1 1 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
}
body.role-director #configuracion h4,
body.role-administrativo #configuracion h4 {
    display: block !important;
    white-space: normal !important;
    min-width: 0 !important;
}

/* Nóminas */
body.role-director .secfila.adm-fila-nomina,
body.role-administrativo .secfila.adm-fila-nomina {
    display: grid !important;
    grid-template-columns: minmax(220px, 1fr) minmax(0, 1.6fr) auto !important;
    gap: 14px !important;
    align-items: start !important;
    text-align: left !important;
    padding: 12px 14px !important;
}
body.role-director .adm-nomina-que,
body.role-administrativo .adm-nomina-que {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    min-width: 0 !important;
}
body.role-director .adm-nomina-que small,
body.role-administrativo .adm-nomina-que small {
    font-size: 12.5px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-nomina-profes > summary,
body.role-administrativo .adm-nomina-profes > summary {
    list-style: none !important;
    cursor: pointer !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    font-weight: 700 !important;
    font-size: 13px !important;
    padding: 4px 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-bg) !important;
    user-select: none !important;
}
body.role-director .adm-nomina-profes > summary::-webkit-details-marker,
body.role-administrativo .adm-nomina-profes > summary::-webkit-details-marker { display: none !important; }
body.role-director .adm-nomina-profes[open] > summary .adm-caret,
body.role-administrativo .adm-nomina-profes[open] > summary .adm-caret { transform: rotate(180deg) !important; }
body.role-director .adm-nomina-profes .adm-fila-chips,
body.role-administrativo .adm-nomina-profes .adm-fila-chips { margin-top: 8px !important; }
body.role-director .adm-nomina-profes .adm-fila-chips > span,
body.role-administrativo .adm-nomina-profes .adm-fila-chips > span {
    font-family: inherit !important;
    font-weight: 600 !important;
    cursor: default !important;
}
body.role-director .adm-fila-nomina > .adm-row-actions,
body.role-administrativo .adm-fila-nomina > .adm-row-actions { align-self: center !important; }
@media (max-width: 767px) {
    body.role-director .secfila.adm-fila-nomina,
    body.role-administrativo .secfila.adm-fila-nomina { grid-template-columns: 1fr !important; gap: 8px !important; }
    body.role-director .adm-fila-nomina > .adm-row-actions,
    body.role-administrativo .adm-fila-nomina > .adm-row-actions { justify-content: flex-start !important; }
}

/* ============================================================
   Nómina por dentro: cada profesor como una hoja compacta
   (cabecera con su nombre, una línea por grupo, total) y en el móvil
   la hoja se desliza en horizontal
   ============================================================ */
body.role-director .adm-nomina-hoja > [id^="teacher_"],
body.role-administrativo .adm-nomina-hoja > [id^="teacher_"] {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    margin-bottom: 18px !important;
    overflow-x: auto !important;
}
body.role-director .adm-nomina-hoja .tablelabels,
body.role-administrativo .adm-nomina-hoja .tablelabels,
body.role-director .adm-nomina-hoja .secfila,
body.role-administrativo .adm-nomina-hoja .secfila {
    display: grid !important;
    grid-template-columns: minmax(170px, 1.6fr) minmax(100px, 1fr) minmax(110px, 1fr) 105px 105px 105px 105px !important;
    gap: 8px !important;
    align-items: center !important;
    min-width: 860px !important;
    margin: 0 !important;
    padding: 6px 12px !important;
    border: 0 !important;
    border-bottom: 1px solid #E5E7EB !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    transform: none !important;
    text-align: left !important;
}
body.role-director .adm-nomina-hoja .secfila:hover,
body.role-administrativo .adm-nomina-hoja .secfila:hover {
    background: var(--brand-bg) !important;
    transform: none !important;
    box-shadow: none !important;
}
body.role-director .adm-nomina-hoja .secfila > *,
body.role-administrativo .adm-nomina-hoja .secfila > *,
body.role-director .adm-nomina-hoja .tablelabels > *,
body.role-administrativo .adm-nomina-hoja .tablelabels > * {
    width: auto !important;
    max-width: none !important;
    flex: none !important;
    padding: 0 !important;
    min-width: 0 !important;
}
body.role-director .adm-nomina-hoja .tablelabels,
body.role-administrativo .adm-nomina-hoja .tablelabels {
    background: var(--brand-yellow) !important;
    border-bottom: 2px solid var(--brand-black) !important;
    padding: 8px 12px !important;
}
body.role-director .adm-nomina-hoja .tablelabels p,
body.role-administrativo .adm-nomina-hoja .tablelabels p {
    margin: 0 !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
}
body.role-director .adm-nomina-hoja .tablelabels > :first-child p,
body.role-administrativo .adm-nomina-hoja .tablelabels > :first-child p {
    font-family: inherit !important;
    font-size: 14px !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
}
body.role-director .adm-nomina-hoja .secfila p,
body.role-administrativo .adm-nomina-hoja .secfila p {
    margin: 0 !important;
    font-size: 12.5px !important;
    line-height: 1.3 !important;
}
body.role-director .adm-nomina-hoja .secfila > :first-child p,
body.role-administrativo .adm-nomina-hoja .secfila > :first-child p {
    font-size: 11.5px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-nomina-hoja .secfila > :first-child p br,
body.role-administrativo .adm-nomina-hoja .secfila > :first-child p br { display: none !important; }
body.role-director .adm-nomina-hoja .form-control,
body.role-administrativo .adm-nomina-hoja .form-control {
    height: 32px !important;
    padding: 2px 8px !important;
    font-size: 13px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 6px !important;
    text-align: right !important;
    width: 100% !important;
    min-width: 0 !important;
}
body.role-director .adm-nomina-hoja .form-control[readonly],
body.role-administrativo .adm-nomina-hoja .form-control[readonly] {
    background: #F3F4F6 !important;
}
body.role-director .adm-nomina-hoja .secfila.total-row,
body.role-administrativo .adm-nomina-hoja .secfila.total-row {
    background: var(--brand-bg) !important;
    border-top: 2px solid var(--brand-black) !important;
    border-bottom: 0 !important;
    font-weight: 800 !important;
}
body.role-director .adm-nomina-hoja .secfila .btn,
body.role-administrativo .adm-nomina-hoja .secfila .btn {
    font-size: 11px !important;
    padding: 4px 10px !important;
    margin: 0 !important;
}
/* Campos de cabecera de la nómina (nombre, fecha, periodos) en una franja */
body.role-director #nomina-form > .mb-4:first-child,
body.role-administrativo #nomina-form > .mb-4:first-child {
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    padding: 12px 14px 4px !important;
}
body.role-director #nomina-form > .mb-4:first-child p.bold,
body.role-administrativo #nomina-form > .mb-4:first-child p.bold {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    margin: 0 0 4px !important;
}
body.role-director #nomina-form > .mb-4:first-child p.bold i,
body.role-administrativo #nomina-form > .mb-4:first-child p.bold i { display: none !important; }
body.role-director .adm-nomina-hoja .secfila.row,
body.role-administrativo .adm-nomina-hoja .secfila.row {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    min-width: 0 !important;
    border-bottom: 0 !important;
    padding: 10px 12px !important;
}
body.role-director .adm-nomina-hoja .secfila.row > *,
body.role-administrativo .adm-nomina-hoja .secfila.row > * {
    flex: 0 0 auto !important;
    width: auto !important;
}
body.role-director .adm-nomina-hoja .secfila.row > :empty,
body.role-administrativo .adm-nomina-hoja .secfila.row > :empty { display: none !important; }
body.role-director .adm-nomina-hoja .total-row p,
body.role-administrativo .adm-nomina-hoja .total-row p { overflow-wrap: anywhere !important; font-size: 11.5px !important; }

/* ============================================================
   Observaciones docentes por dentro (rúbricas de observación y
   autoobservación): páginas con .editForm que contienen .fixedElement
   ============================================================ */
body.role-director .editForm:has(.fixedElement),
body.role-administrativo .editForm:has(.fixedElement) {
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
    padding: 16px !important;
}
body.role-director .editForm:has(.fixedElement) .row.white-back,
body.role-administrativo .editForm:has(.fixedElement) .row.white-back {
    background: transparent !important;
    margin: 0 0 10px !important;
    row-gap: 10px !important;
}
body.role-director .editForm:has(.fixedElement) .row.white-back .form-control,
body.role-administrativo .editForm:has(.fixedElement) .row.white-back .form-control {
    height: 40px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--brand-bg) !important;
    font-size: 14px !important;
}
/* Cabecera de columnas fija al bajar */
body.role-director .editForm .fixedElement,
body.role-administrativo .editForm .fixedElement {
    position: sticky !important;
    top: 0 !important;
    width: 100% !important;
    z-index: 30 !important;
    margin: 14px 0 0 !important;
    background: transparent !important;
}
body.role-director .editForm .fixedElement > .row.background,
body.role-administrativo .editForm .fixedElement > .row.background {
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
    border-radius: 10px 10px 0 0 !important;
    margin: 0 !important;
    padding: 8px 0 !important;
    align-items: end !important;
}
body.role-director .editForm .fixedElement p,
body.role-administrativo .editForm .fixedElement p {
    margin: 0 0 2px !important;
    font-size: 11px !important;
    line-height: 1.25 !important;
    color: var(--brand-white) !important;
}
body.role-director .editForm .fixedElement p b,
body.role-administrativo .editForm .fixedElement p b {
    font-family: 'JetBrains Mono', monospace !important;
    letter-spacing: .5px !important;
}
/* Filas de indicadores */
body.role-director .editForm .row.alignVertical.lineBorder,
body.role-administrativo .editForm .row.alignVertical.lineBorder {
    margin: 0 !important;
    padding: 10px 0 !important;
    border-top: 1px solid #E5E7EB !important;
    background: var(--brand-white) !important;
}
body.role-director .editForm .row.alignVertical.lineBorder:hover,
body.role-administrativo .editForm .row.alignVertical.lineBorder:hover {
    background: var(--brand-bg) !important;
}
body.role-director .editForm .row.lineBorder > .background,
body.role-administrativo .editForm .row.lineBorder > .background {
    background: transparent !important;
}
body.role-director .editForm .row.lineBorder > .background p,
body.role-administrativo .editForm .row.lineBorder > .background p {
    display: inline-block !important;
    margin: 0 !important;
    background: var(--brand-yellow) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 6px !important;
    padding: 4px 6px !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .editForm .row.lineBorder label,
body.role-administrativo .editForm .row.lineBorder label {
    font-family: inherit !important;
    font-size: 13.5px !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    color: var(--brand-text) !important;
}
body.role-director .editForm .row.lineBorder ol,
body.role-administrativo .editForm .row.lineBorder ol {
    margin: 0 !important;
    padding-left: 18px !important;
    font-size: 12.5px !important;
    line-height: 1.4 !important;
}
/* Escala: círculos grandes; el marcado, relleno en color */
body.role-director .editForm .row.lineBorder input[type="radio"],
body.role-administrativo .editForm .row.lineBorder input[type="radio"] {
    -webkit-appearance: none !important;
    appearance: none !important;
    width: 24px !important;
    height: 24px !important;
    margin: 0 auto !important;
    display: block !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 50% !important;
    background: var(--brand-white) !important;
    cursor: pointer !important;
}
body.role-director .editForm .row.lineBorder input[type="radio"]:checked,
body.role-administrativo .editForm .row.lineBorder input[type="radio"]:checked {
    background: var(--brand-cyan) !important;
    box-shadow: inset 0 0 0 4px var(--brand-white) !important;
}
body.role-director .editForm .row.lineBorder input[type="radio"]:disabled:not(:checked),
body.role-administrativo .editForm .row.lineBorder input[type="radio"]:disabled:not(:checked) {
    opacity: .3 !important;
    cursor: default !important;
}
@media (max-width: 767px) {
    body.role-director .editForm .fixedElement,
    body.role-administrativo .editForm .fixedElement { display: none !important; }
    body.role-director .editForm .row.alignVertical.lineBorder,
    body.role-administrativo .editForm .row.alignVertical.lineBorder {
        flex-wrap: wrap !important;
        row-gap: 6px !important;
    }
    body.role-director .editForm .row.lineBorder > [class*="col-sm-"],
    body.role-administrativo .editForm .row.lineBorder > [class*="col-sm-"] {
        flex: 0 0 100% !important;
        max-width: 100% !important;
    }
    body.role-director .editForm .row.lineBorder > .col-sm-1:empty,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-1:empty { display: none !important; }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row { flex-wrap: nowrap !important; margin: 4px 0 0 !important; }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        gap: 3px !important;
        padding: 0 !important;
    }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm::before,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm::before {
        font-family: 'JetBrains Mono', monospace !important;
        font-size: 10px !important;
        font-weight: 800 !important;
        color: var(--brand-text-muted) !important;
    }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(1)::before,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(1)::before { content: '0' !important; }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(2)::before,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(2)::before { content: '1' !important; }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(3)::before,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(3)::before { content: '2' !important; }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(4)::before,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(4)::before { content: '3' !important; }
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(5)::before,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm:nth-child(5)::before { content: 'N/A' !important; }
}
body.role-director .editForm .row.lineBorder > .background p,
body.role-administrativo .editForm .row.lineBorder > .background p {
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: auto !important;
    font-size: 9.5px !important;
    padding: 3px 4px !important;
}
@media (max-width: 767px) {
    body.role-director .editForm .row.lineBorder > .col-sm-5 .row > .col-sm,
    body.role-administrativo .editForm .row.lineBorder > .col-sm-5 .row > .col-sm {
        flex: 1 1 0 !important;
        width: auto !important;
        max-width: none !important;
        min-width: 0 !important;
    }
    body.role-director .editForm .row.lineBorder > .background p,
    body.role-administrativo .editForm .row.lineBorder > .background p { font-size: 10.5px !important; }
}
body.role-director .adm-main .editForm .row.background:not(.fixedElement .row),
body.role-administrativo .adm-main .editForm .row.background:not(.fixedElement .row) {
    background: var(--brand-black) !important;
    color: var(--brand-white) !important;
    border-radius: 10px 10px 0 0 !important;
    margin: 0 !important;
}
body.role-director .adm-main .editForm .row.background:not(.fixedElement .row) *,
body.role-administrativo .adm-main .editForm .row.background:not(.fixedElement .row) * {
    color: var(--brand-white) !important;
    font-size: 12px !important;
}

/* Informes pendientes: listado por asignatura y ventana de edición */
body.role-director .secfila.adm-fila-inf,
body.role-administrativo .secfila.adm-fila-inf {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    gap: 12px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 14px !important;
}
body.role-director .adm-inf-asg,
body.role-administrativo .adm-inf-asg {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 2px !important;
    min-width: 0 !important;
}
body.role-director .adm-inf-abrir,
body.role-administrativo .adm-inf-abrir {
    background: none !important;
    border: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    cursor: pointer !important;
}
body.role-director .adm-inf-asg small,
body.role-administrativo .adm-inf-asg small {
    font-size: 12.5px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-informes-modal,
body.role-administrativo .adm-informes-modal { max-width: 860px !important; }
body.role-director .adm-informe,
body.role-administrativo .adm-informe {
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    background: var(--brand-white) !important;
    padding: 12px !important;
    margin-bottom: 12px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
}
body.role-director .adm-informe-cab,
body.role-administrativo .adm-informe-cab {
    display: flex !important;
    justify-content: space-between !important;
    align-items: baseline !important;
    gap: 10px !important;
    flex-wrap: wrap !important;
}
body.role-director .adm-informe-cab b,
body.role-administrativo .adm-informe-cab b { font-size: 15px !important; }
body.role-director .adm-informe-cab small,
body.role-administrativo .adm-informe-cab small {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-informe-texto,
body.role-administrativo .adm-informe-texto {
    min-height: 130px !important;
    height: auto !important;
    field-sizing: content !important;
    max-height: 60vh !important;
    resize: vertical !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    text-align: left !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    padding: 10px 12px !important;
}
body.role-director .adm-informe-acc,
body.role-administrativo .adm-informe-acc {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
}
body.role-director .adm-informe-acc .btn,
body.role-administrativo .adm-informe-acc .btn { margin: 0 !important; }
body.role-director .adm-informe-guardar,
body.role-administrativo .adm-informe-guardar {
    position: sticky !important;
    bottom: 0 !important;
    background: var(--brand-white) !important;
    padding: 10px 0 0 !important;
    text-align: right !important;
}
@media (max-width: 767px) {
    body.role-director .secfila.adm-fila-inf,
    body.role-administrativo .secfila.adm-fila-inf { grid-template-columns: 1fr !important; }
    body.role-director .adm-fila-inf > .adm-row-actions,
    body.role-administrativo .adm-fila-inf > .adm-row-actions { justify-content: flex-start !important; flex-wrap: wrap !important; }
}

/* Formación interna / externa (dirección) */
body.role-director .secfila.adm-fila-form-int,
body.role-administrativo .secfila.adm-fila-form-int {
    display: grid !important;
    grid-template-columns: 110px minmax(0, 1fr) 110px auto !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
    padding: 12px 14px !important;
}
body.role-director .adm-fi-cuando,
body.role-administrativo .adm-fi-cuando,
body.role-director .adm-fi-que,
body.role-administrativo .adm-fi-que,
body.role-director .adm-fi-alumnos,
body.role-administrativo .adm-fi-alumnos {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    min-width: 0 !important;
}
body.role-director .adm-fi-cuando b,
body.role-administrativo .adm-fi-cuando b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 13px !important;
}
body.role-director .adm-fi-cuando .badge,
body.role-administrativo .adm-fi-cuando .badge { align-self: flex-start !important; }
body.role-director .adm-fi-que small,
body.role-administrativo .adm-fi-que small {
    font-size: 12.5px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-fi-que .adm-fila-chips > span,
body.role-administrativo .adm-fi-que .adm-fila-chips > span {
    font-family: inherit !important;
    font-weight: 600 !important;
    cursor: default !important;
}
body.role-director .adm-fi-alumnos,
body.role-administrativo .adm-fi-alumnos {
    align-items: center !important;
    text-align: center !important;
    gap: 0 !important;
}
body.role-director .adm-fi-alumnos b,
body.role-administrativo .adm-fi-alumnos b {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 22px !important;
    line-height: 1.1 !important;
}
body.role-director .adm-fi-alumnos small,
body.role-administrativo .adm-fi-alumnos small {
    font-size: 11.5px !important;
    color: var(--brand-text-muted) !important;
}
@media (max-width: 767px) {
    body.role-director .secfila.adm-fila-form-int,
    body.role-administrativo .secfila.adm-fila-form-int {
        grid-template-columns: 1fr auto !important;
        gap: 8px !important;
    }
    body.role-director .adm-fila-form-int > .adm-fi-cuando,
    body.role-administrativo .adm-fila-form-int > .adm-fi-cuando {
        flex-direction: row !important;
        align-items: center !important;
        gap: 8px !important;
    }
    body.role-director .adm-fila-form-int > .adm-fi-que,
    body.role-administrativo .adm-fila-form-int > .adm-fi-que { grid-column: 1 / -1 !important; grid-row: 2 !important; }
    body.role-director .adm-fila-form-int > .adm-fi-alumnos,
    body.role-administrativo .adm-fila-form-int > .adm-fi-alumnos { grid-column: 2 !important; grid-row: 1 !important; }
    body.role-director .adm-fila-form-int > .adm-row-actions,
    body.role-administrativo .adm-fila-form-int > .adm-row-actions { grid-column: 1 / -1 !important; justify-content: flex-start !important; }
}

/* ============================================================
   Fichaje (dirección): cabeceras oscuras propias pasadas al estilo claro
   ============================================================ */
body.role-director :is(.fichaje-admin-header, .manual-header, .pines-header),
body.role-administrativo :is(.fichaje-admin-header, .manual-header, .pines-header) {
    background: var(--brand-white) !important;
    color: var(--brand-text) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
}
body.role-director :is(.fichaje-admin-header, .manual-header, .pines-header) :is(h1, h2, h3, h4, h5),
body.role-administrativo :is(.fichaje-admin-header, .manual-header, .pines-header) :is(h1, h2, h3, h4, h5) {
    color: var(--brand-text) !important;
    font-weight: 900 !important;
}
body.role-director :is(.fichaje-admin-header, .manual-header, .pines-header) :is(.subtitulo, p, small),
body.role-administrativo :is(.fichaje-admin-header, .manual-header, .pines-header) :is(.subtitulo, p, small) {
    color: var(--brand-text-muted) !important;
}
body.role-director :is(.fichaje-admin-header, .manual-header, .pines-header) a.btn,
body.role-administrativo :is(.fichaje-admin-header, .manual-header, .pines-header) a.btn,
body.role-director :is(.fichaje-admin-header, .manual-header, .pines-header) > a,
body.role-administrativo :is(.fichaje-admin-header, .manual-header, .pines-header) > a {
    background: var(--brand-yellow) !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    font-weight: 800 !important;
    text-decoration: none !important;
    padding: 6px 14px !important;
}
body.role-director .fichaje-admin-header .fichaje-master-toggle,
body.role-administrativo .fichaje-admin-header .fichaje-master-toggle {
    background: var(--brand-bg) !important;
    border: 2px solid var(--brand-black) !important;
}
body.role-director .fichaje-admin-header .fichaje-master-toggle span,
body.role-administrativo .fichaje-admin-header .fichaje-master-toggle span:not(.slider-round) {
    color: var(--brand-text) !important;
    font-weight: 700 !important;
}
body.role-director .fichaje-admin-header .stat-pill,
body.role-administrativo .fichaje-admin-header .stat-pill {
    color: var(--brand-text) !important;
    border: 2px solid var(--brand-black) !important;
    background: var(--brand-white) !important;
}
body.role-director .fichaje-filtros,
body.role-administrativo .fichaje-filtros {
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    box-shadow: none !important;
}
body.role-director .fichaje-filtros label,
body.role-administrativo .fichaje-filtros label {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
}
body.role-director :is(.btn-filtrar, .btn-excel),
body.role-administrativo :is(.btn-filtrar, .btn-excel) {
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
    padding: 7px 16px !important;
    font-weight: 800 !important;
    text-decoration: none !important;
    height: 38px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
}
body.role-director .btn-filtrar,
body.role-administrativo .btn-filtrar { background: var(--brand-yellow) !important; color: var(--brand-black) !important; }
body.role-director .btn-excel,
body.role-administrativo .btn-excel { background: var(--brand-white) !important; color: var(--brand-black) !important; }
body.role-director .manual-card,
body.role-administrativo .manual-card {
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
}
@media (max-width: 767px) {
    body.role-director .adm-main .container-fluid:has(> .fichaje-admin-header),
    body.role-administrativo .adm-main .container-fluid:has(> .fichaje-admin-header) { padding: 0 !important; margin-top: 0 !important; }
}
/* Cajas: las tablas se deslizan en horizontal en el móvil */
@media (max-width: 767px) {
    body.role-director .adm-main:has(#filterDate) table:not(#tabla_cajas),
    body.role-administrativo .adm-main:has(#filterDate) table:not(#tabla_cajas) {
        display: block !important;
        overflow-x: auto !important;
        max-width: 100% !important;
        white-space: nowrap !important;
    }
}
body.role-director .nb-dd-item:disabled,
body.role-administrativo .nb-dd-item:disabled { opacity: .45 !important; cursor: not-allowed !important; }

/* Datos y conteos: una tarjeta por informe */
body.role-director .adm-datos,
body.role-administrativo .adm-datos {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)) !important;
    gap: 18px !important;
    align-items: start !important;
}
body.role-director .adm-datos-card .adm-panel-title,
body.role-administrativo .adm-datos-card .adm-panel-title {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    font-size: 17px !important;
    margin-bottom: 6px !important;
}
body.role-director .adm-datos-card .adm-ico,
body.role-administrativo .adm-datos-card .adm-ico {
    width: 34px !important;
    height: 34px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: var(--prof-accent, var(--brand-yellow)) !important;
    flex: 0 0 auto !important;
}
body.role-director .adm-datos-card .adm-ico i,
body.role-administrativo .adm-datos-card .adm-ico i { color: var(--brand-black) !important; font-size: 15px !important; }
body.role-director .adm-datos-desc,
body.role-administrativo .adm-datos-desc {
    font-size: 13px !important;
    color: var(--brand-text-muted) !important;
    margin: 0 0 14px !important;
}
body.role-director .adm-datos-form,
body.role-administrativo .adm-datos-form {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 12px !important;
}
body.role-director .adm-datos-form .adm-filtro,
body.role-administrativo .adm-datos-form .adm-filtro { flex: none !important; min-width: 0 !important; }
body.role-director .adm-datos-form .adm-filtro .form-control,
body.role-administrativo .adm-datos-form .adm-filtro .form-control {
    height: 40px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 14px !important;
}
body.role-director .adm-datos-form .bootstrap-select > .dropdown-toggle,
body.role-administrativo .adm-datos-form .bootstrap-select > .dropdown-toggle {
    height: 40px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    padding: 6px 12px !important;
    font-size: 13.5px !important;
}
body.role-director .adm-check,
body.role-administrativo .adm-check {
    grid-column: 1 / -1 !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin: 0 !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
}
body.role-director .adm-check input,
body.role-administrativo .adm-check input {
    width: 18px !important;
    height: 18px !important;
    accent-color: var(--brand-cyan) !important;
}
body.role-director .adm-datos-btn,
body.role-administrativo .adm-datos-btn {
    grid-column: 1 / -1 !important;
    justify-self: start !important;
    margin: 4px 0 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
}
@media (max-width: 575px) {
    body.role-director .adm-datos,
    body.role-administrativo .adm-datos { grid-template-columns: 1fr !important; }
    body.role-director .adm-datos-form,
    body.role-administrativo .adm-datos-form { grid-template-columns: 1fr !important; }
    body.role-director .adm-datos-btn,
    body.role-administrativo .adm-datos-btn { justify-self: stretch !important; justify-content: center !important; }
}

/* Ajustes de la academia */
body.role-director .adm-aviso,
body.role-administrativo .adm-aviso {
    display: flex !important;
    gap: 10px !important;
    align-items: flex-start !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    padding: 10px 14px !important;
    margin: 0 0 14px !important;
    font-weight: 600 !important;
}
body.role-director .adm-aviso p,
body.role-administrativo .adm-aviso p { margin: 0 !important; }
body.role-director .adm-aviso-ok,
body.role-administrativo .adm-aviso-ok { background: #DCFCE7 !important; }
body.role-director .adm-aviso-error,
body.role-administrativo .adm-aviso-error { background: #FEE2E2 !important; }
body.role-director .adm-ajustes-indice,
body.role-administrativo .adm-ajustes-indice {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    margin: 0 0 14px !important;
}
body.role-director .adm-ajustes-indice a,
body.role-administrativo .adm-ajustes-indice a {
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    padding: 4px 12px !important;
    background: var(--brand-white) !important;
    color: var(--brand-text) !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
}
body.role-director .adm-ajustes-indice a:hover,
body.role-administrativo .adm-ajustes-indice a:hover { background: var(--brand-yellow) !important; }
body.role-director .adm-ajustes > section,
body.role-administrativo .adm-ajustes > section {
    margin-bottom: 18px !important;
    scroll-margin-top: 80px !important;
}
body.role-director .adm-ajustes .adm-panel-title,
body.role-administrativo .adm-ajustes .adm-panel-title {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    font-size: 17px !important;
    margin-bottom: 4px !important;
}
body.role-director .adm-ajustes-rejilla,
body.role-administrativo .adm-ajustes-rejilla {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important;
    gap: 14px 18px !important;
    margin-top: 10px !important;
}
body.role-director .adm-ajuste,
body.role-administrativo .adm-ajuste { flex: none !important; min-width: 0 !important; }
body.role-director .adm-ajuste .form-control,
body.role-administrativo .adm-ajuste .form-control {
    height: 42px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 14px !important;
}
body.role-director .adm-ajuste .form-control:disabled,
body.role-administrativo .adm-ajuste .form-control:disabled { background: #F3F4F6 !important; }
body.role-director .adm-ajuste small,
body.role-administrativo .adm-ajuste small {
    font-size: 11.5px !important;
    font-weight: 500 !important;
    color: var(--brand-text-muted) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-family: inherit !important;
}
body.role-director .adm-firma,
body.role-administrativo .adm-firma {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 16px !important;
}
body.role-director .adm-firma textarea.form-control,
body.role-administrativo .adm-firma textarea.form-control {
    height: 260px !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 12px !important;
}
body.role-director .adm-firma-vista,
body.role-administrativo .adm-firma-vista {
    width: 100% !important;
    height: 260px !important;
    border: 2px dashed var(--brand-black) !important;
    border-radius: 8px !important;
    background: #fff !important;
}
body.role-director .adm-estado,
body.role-administrativo .adm-estado {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important;
    gap: 12px !important;
    margin-top: 10px !important;
}
body.role-director .adm-estado-item,
body.role-administrativo .adm-estado-item {
    display: flex !important;
    gap: 10px !important;
    align-items: flex-start !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    padding: 10px 12px !important;
    background: var(--brand-bg) !important;
}
body.role-director .adm-estado-item small,
body.role-administrativo .adm-estado-item small {
    display: block !important;
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-estado-luz,
body.role-administrativo .adm-estado-luz {
    width: 14px !important;
    height: 14px !important;
    border-radius: 50% !important;
    border: 2px solid var(--brand-black) !important;
    flex: 0 0 auto !important;
    margin-top: 3px !important;
}
body.role-director .adm-estado-luz.on,
body.role-administrativo .adm-estado-luz.on { background: var(--brand-success) !important; }
body.role-director .adm-estado-luz.off,
body.role-administrativo .adm-estado-luz.off { background: #D1D5DB !important; }
body.role-director .adm-estado-logo,
body.role-administrativo .adm-estado-logo {
    width: 64px !important;
    height: auto !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    background: #fff !important;
    padding: 4px !important;
}
@media (max-width: 767px) {
    body.role-director .adm-firma,
    body.role-administrativo .adm-firma { grid-template-columns: 1fr !important; }
}

/* ── Gestor de archivos: menú de opciones (clic derecho / mantener pulsado / ⋯) ── */
/* Las acciones sobre lo seleccionado viven en el menú; los botones siguen en la
   página (el menú los usa) pero ya no se muestran en la barra */
#openBtn, #descargarBtn, #cortarBtn, #copiarBtn, #shareBtn, #delBtn {
    display: none !important;
}
#folders .folderElem {
    position: relative;
}
#folders .carp-mas {
    position: absolute;
    top: 2px;
    right: 2px;
    width: 26px;
    height: 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 2px solid var(--nb-border, #1a1a1a);
    border-radius: 6px;
    background: #fff;
    color: #1a1a1a;
    font-size: 0.8rem;
    cursor: pointer;
    opacity: 0;
    transition: opacity .12s;
    z-index: 2;
}
#folders .folderElem:hover .carp-mas,
#folders .folderElem.selected .carp-mas,
#folders .carp-mas:focus-visible {
    opacity: 1;
}
@media (pointer: coarse) {
    #folders .carp-mas {
        opacity: 1;
        width: 30px;
        height: 30px;
    }
    #folders .folderElem {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        user-select: none;
    }
}
.carp-menu {
    position: fixed;
    z-index: 2000;
    min-width: 220px;
    max-width: 300px;
    padding: 6px;
    background: #fff;
    color: #1a1a1a;
    border: 2px solid #1a1a1a;
    border-radius: 12px;
    box-shadow: 4px 4px 0 #1a1a1a;
    font-size: 0.9rem;
}
.carp-menu-head {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 6px 10px 8px;
    border-bottom: 2px dashed #d4d4d4;
    margin-bottom: 4px;
}
.carp-menu-titulo {
    font-weight: 800;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.carp-menu-sub {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #6b6b6b;
}
.carp-menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 8px 10px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: inherit;
    font-weight: 600;
    text-align: left;
    cursor: pointer;
}
.carp-menu-item i {
    width: 18px;
    text-align: center;
    color: #4a4a4a;
}
.carp-menu-item:hover,
.carp-menu-item:focus-visible {
    background: var(--amarillo, #ffd93d);
    outline: none;
}
.carp-menu-peligro,
.carp-menu-peligro i {
    color: #c62828;
}
.carp-menu-peligro:hover,
.carp-menu-peligro:focus-visible {
    background: #c62828;
    color: #fff;
}
.carp-menu-peligro:hover i,
.carp-menu-peligro:focus-visible i {
    color: #fff;
}
.carp-menu-sep {
    height: 2px;
    margin: 4px 6px;
    background: #ececec;
}
.carp-menu-form {
    padding: 6px 4px 2px;
}
.carp-menu-aviso {
    margin: 4px 10px 8px;
    font-size: 0.85rem;
    color: #4a4a4a;
}
.carp-menu-botones {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 8px 4px 4px;
}
.carp-menu-fondo {
    position: fixed;
    inset: 0;
    z-index: 1999;
    background: rgba(0, 0, 0, .35);
}
.carp-menu.carp-menu-hoja {
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    min-width: 0;
    max-width: none;
    max-height: 80vh;
    overflow-y: auto;
    padding: 10px 12px calc(14px + env(safe-area-inset-bottom));
    border-width: 2px 0 0;
    border-radius: 18px 18px 0 0;
    box-shadow: none;
    font-size: 1rem;
}
.carp-menu-hoja::before {
    content: "";
    display: block;
    width: 44px;
    height: 5px;
    margin: 0 auto 6px;
    border-radius: 3px;
    background: #cfcfcf;
}
.carp-menu-hoja .carp-menu-item {
    padding: 13px 12px;
}

/* ── Avisos: tarjetas de mensaje (alertas, sugerencias, incidencias, alarmas) ── */
body.role-director .secfila.adm-fila-msg,
body.role-administrativo .secfila.adm-fila-msg {
    display: grid !important;
    grid-template-columns: 22px minmax(0, 1fr) auto !important;
    grid-template-areas: "check cab acc" ". texto texto" !important;
    gap: 8px 14px !important;
    align-items: start !important;
    text-align: left !important;
    padding: 12px 14px !important;
    border-left-width: 8px !important;
}
body.role-director .adm-fila-msg.adm-msg-nueva,
body.role-administrativo .adm-fila-msg.adm-msg-nueva { border-left-color: var(--brand-yellow) !important; }
body.role-director .adm-fila-msg.adm-msg-archivada,
body.role-administrativo .adm-fila-msg.adm-msg-archivada { opacity: .7 !important; }
body.role-director .adm-fila-msg > .adm-msg-check,
body.role-administrativo .adm-fila-msg > .adm-msg-check {
    grid-area: check !important;
    margin-top: 4px !important;
    width: 18px !important;
    height: 18px !important;
}
body.role-director .adm-fila-msg > .adm-msg-cabecera,
body.role-administrativo .adm-fila-msg > .adm-msg-cabecera {
    grid-area: cab !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    min-width: 0 !important;
}
body.role-director .adm-msg-quien,
body.role-administrativo .adm-msg-quien {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 8px !important;
}
body.role-director .adm-msg-quien .adm-fila-nombre,
body.role-administrativo .adm-msg-quien .adm-fila-nombre {
    font-weight: 800 !important;
    color: var(--brand-black) !important;
}
body.role-director .adm-msg-contacto,
body.role-administrativo .adm-msg-contacto {
    color: var(--brand-text-muted) !important;
    text-decoration: none !important;
}
body.role-director .adm-msg-chips > span,
body.role-administrativo .adm-msg-chips > span {
    font-family: inherit !important;
    font-weight: 600 !important;
    white-space: normal !important;
    cursor: default !important;
}
body.role-director .adm-msg-nueva .adm-msg-estado-leida,
body.role-administrativo .adm-msg-nueva .adm-msg-estado-leida {
    background: var(--brand-yellow) !important;
    font-weight: 800 !important;
}
body.role-director .adm-fila-msg > .adm-row-actions,
body.role-administrativo .adm-fila-msg > .adm-row-actions {
    grid-area: acc !important;
    justify-content: flex-end !important;
}
body.role-director .adm-fila-msg > .adm-msg-cuerpo,
body.role-administrativo .adm-fila-msg > .adm-msg-cuerpo {
    grid-area: texto !important;
    min-width: 0 !important;
}
body.role-director .adm-msg-texto,
body.role-administrativo .adm-msg-texto {
    padding: 10px 12px !important;
    background: var(--brand-bg, #fffdf0) !important;
    border: 2px solid #e4e4e4 !important;
    border-radius: 8px !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-msg-texto p:last-child,
body.role-administrativo .adm-msg-texto p:last-child { margin-bottom: 0 !important; }
body.role-director .adm-msg-texto.adm-msg-recortado,
body.role-administrativo .adm-msg-texto.adm-msg-recortado {
    max-height: calc(1.5em * 4 + 20px) !important;
    overflow: hidden !important;
    -webkit-mask-image: linear-gradient(to bottom, #000 65%, transparent) !important;
    mask-image: linear-gradient(to bottom, #000 65%, transparent) !important;
}
body.role-director .adm-msg-vermas,
body.role-administrativo .adm-msg-vermas {
    margin-top: 6px !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
    color: var(--brand-black) !important;
    font-size: 12.5px !important;
    font-weight: 800 !important;
    text-decoration: underline !important;
    cursor: pointer !important;
}
body.role-director .adm-fila-msg > .adm-row-actions,
body.role-administrativo .adm-fila-msg > .adm-row-actions { flex-wrap: wrap !important; }
@media (max-width: 767px) {
    body.role-director .secfila.adm-fila-msg,
    body.role-administrativo .secfila.adm-fila-msg {
        grid-template-columns: 22px minmax(0, 1fr) !important;
        grid-template-areas: "check cab" "texto texto" "acc acc" !important;
    }
    body.role-director .adm-fila-msg > .adm-row-actions,
    body.role-administrativo .adm-fila-msg > .adm-row-actions { justify-content: flex-start !important; }
    body.role-director .adm-fila-msg .adm-msg-archivar span,
    body.role-administrativo .adm-fila-msg .adm-msg-archivar span { display: none !important; }
}

/* Alarmas de asignaturas: icono por motivo, solución y modal del alumno */
body.role-director .adm-fila-alarma > .adm-alarma-icono,
body.role-administrativo .adm-fila-alarma > .adm-alarma-icono {
    width: 30px !important;
    height: 30px !important;
    margin-top: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-size: 13px !important;
}
body.role-director .adm-fila-alarma,
body.role-administrativo .adm-fila-alarma { grid-template-columns: 30px minmax(0, 1fr) auto !important; }
@media (max-width: 767px) {
    body.role-director .secfila.adm-fila-alarma,
    body.role-administrativo .secfila.adm-fila-alarma { grid-template-columns: 30px minmax(0, 1fr) !important; }
}
body.role-director .adm-alarma-asistencia,
body.role-administrativo .adm-alarma-asistencia { background: #cfe3ff !important; }
body.role-director .adm-alarma-rendimiento,
body.role-administrativo .adm-alarma-rendimiento { background: #ffe1a8 !important; }
body.role-director .adm-alarma-comportamiento,
body.role-administrativo .adm-alarma-comportamiento { background: #ffc4c4 !important; }
body.role-director .adm-alarma-otro,
body.role-administrativo .adm-alarma-otro { background: #e8e8e8 !important; }
body.role-director .adm-msg-chips > .adm-alarma-motivo,
body.role-administrativo .adm-msg-chips > .adm-alarma-motivo { font-weight: 800 !important; }
body.role-director .adm-fila-alarma.adm-msg-nueva,
body.role-administrativo .adm-fila-alarma.adm-msg-nueva { border-left-color: var(--brand-danger, #d32f2f) !important; }
body.role-director .adm-fila-alarma.adm-alarma-ok,
body.role-administrativo .adm-fila-alarma.adm-alarma-ok { border-left-color: var(--brand-success) !important; }
body.role-director .adm-fila-alarma:not(.adm-alarma-ok) .adm-alarma-estado,
body.role-administrativo .adm-fila-alarma:not(.adm-alarma-ok) .adm-alarma-estado {
    background: var(--brand-danger, #d32f2f) !important;
    color: #fff !important;
}
body.role-director .adm-alarma-solucion,
body.role-administrativo .adm-alarma-solucion {
    margin-top: 6px !important;
    padding: 8px 12px !important;
    border: 2px solid var(--brand-success) !important;
    border-radius: 8px !important;
    background: #eaf7ee !important;
    font-size: 13.5px !important;
}
body.role-director .adm-filtro.adm-filtro-check,
body.role-administrativo .adm-filtro.adm-filtro-check {
    flex-direction: row !important;
    align-items: center !important;
    gap: 8px !important;
    align-self: center !important;
}
body.role-director .adm-filtro.adm-filtro-check input,
body.role-administrativo .adm-filtro.adm-filtro-check input { width: 18px !important; height: 18px !important; }
body.role-director .adm-filtro.adm-filtro-check span,
body.role-administrativo .adm-filtro.adm-filtro-check span {
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-size: 13px !important;
}
body.role-director .adm-alarma-modal,
body.role-administrativo .adm-alarma-modal {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
    padding: 12px !important;
    margin-bottom: 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
}
body.role-director .adm-alarma-modal .adm-row-actions,
body.role-administrativo .adm-alarma-modal .adm-row-actions {
    justify-content: flex-start !important;
    flex-wrap: wrap !important;
}

/* Incidencias: letra de importancia, estado y causa */
body.role-director .adm-fila-inc,
body.role-administrativo .adm-fila-inc { grid-template-columns: 30px minmax(0, 1fr) auto !important; }
@media (max-width: 767px) {
    body.role-director .secfila.adm-fila-inc,
    body.role-administrativo .secfila.adm-fila-inc { grid-template-columns: 30px minmax(0, 1fr) !important; }
}
body.role-director .adm-fila-inc > .adm-inc-nivel,
body.role-administrativo .adm-fila-inc > .adm-inc-nivel {
    width: 30px !important;
    height: 30px !important;
    margin-top: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    font-weight: 900 !important;
    font-size: 14px !important;
    background: #e8e8e8 !important;
}
body.role-director .adm-inc-urgente,
body.role-administrativo .adm-inc-urgente { background: var(--brand-danger, #d32f2f) !important; color: #fff !important; }
body.role-director .adm-inc-alta,
body.role-administrativo .adm-inc-alta { background: #ffb38a !important; }
body.role-director .adm-inc-media,
body.role-administrativo .adm-inc-media { background: var(--brand-yellow) !important; }
body.role-director .adm-inc-baja,
body.role-administrativo .adm-inc-baja { background: #cfe3ff !important; }
body.role-director .adm-fila-inc.adm-msg-nueva,
body.role-administrativo .adm-fila-inc.adm-msg-nueva { border-left-color: var(--brand-yellow) !important; }
body.role-director .adm-fila-inc.adm-inc-ok,
body.role-administrativo .adm-fila-inc.adm-inc-ok { border-left-color: var(--brand-success) !important; }
body.role-director .adm-fila-inc.adm-inc-incompleta,
body.role-administrativo .adm-fila-inc.adm-inc-incompleta { border-left-color: var(--brand-danger, #d32f2f) !important; }
body.role-director .adm-msg-chips > .adm-inc-estado,
body.role-administrativo .adm-msg-chips > .adm-inc-estado { font-weight: 800 !important; }
body.role-director .adm-msg-chips > .adm-inc-estado-incompleta,
body.role-administrativo .adm-msg-chips > .adm-inc-estado-incompleta { background: var(--brand-danger, #d32f2f) !important; color: #fff !important; }
body.role-director .adm-msg-chips > .adm-inc-estado-ok,
body.role-administrativo .adm-msg-chips > .adm-inc-estado-ok { background: #d8f3df !important; }
body.role-director .adm-msg-chips > .adm-inc-revision,
body.role-administrativo .adm-msg-chips > .adm-inc-revision { background: #ffe1a8 !important; }
body.role-director .adm-inc-causa,
body.role-administrativo .adm-inc-causa {
    margin-top: 6px !important;
    font-size: 13px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-check-inline,
body.role-administrativo .adm-check-inline {
    width: 18px !important;
    height: 18px !important;
    margin-right: 6px !important;
    vertical-align: middle !important;
}

/* Selector de color (XNColorPicker): el campo HEX no lleva el estilo grande de los formularios */
body:is(.role-profesor, .role-director, .role-administrativo) .color-btns .current-color-value input {
    width: 100% !important;
    height: 22px !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 4px !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    font-size: 13px !important;
    line-height: 22px !important;
}

/* Asignaturas: modal "Asignaturas en emisión" */
body.role-director .adm-directos,
body.role-administrativo .adm-directos {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
}
body.role-director .adm-directo-fila,
body.role-administrativo .adm-directo-fila {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    flex-wrap: wrap !important;
    gap: 8px 12px !important;
    padding: 10px 12px !important;
    background: #fff !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
}
body.role-director .adm-directo-nombre,
body.role-administrativo .adm-directo-nombre {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    min-width: 0 !important;
    font-weight: 800 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-directo-nombre .on_rec,
body.role-administrativo .adm-directo-nombre .on_rec {
    flex: 0 0 auto !important;
    float: none !important;
    margin: 0 !important;
    width: 10px !important;
    height: 10px !important;
}
body.role-director .adm-directo-acciones,
body.role-administrativo .adm-directo-acciones {
    display: flex !important;
    gap: 8px !important;
    flex: 0 0 auto !important;
}

/* Datos y conteos: página de resultado (procedencia / origen) */
body.role-director .adm-dato-grafico,
body.role-administrativo .adm-dato-grafico {
    min-width: 0 !important;
    margin-bottom: 16px !important;
    overflow: hidden !important;
}
body.role-director .adm-dato-chart,
body.role-administrativo .adm-dato-chart {
    width: 100% !important;
    min-height: 280px !important;
}
body.role-director .adm-datos-graficos,
body.role-administrativo .adm-datos-graficos {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 0 16px !important;
}
body.role-director .adm-datos-detalle,
body.role-administrativo .adm-datos-detalle {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 16px !important;
    align-items: start !important;
}
@media (max-width: 991px) {
    body.role-director .adm-datos-graficos,
    body.role-administrativo .adm-datos-graficos,
    body.role-director .adm-datos-detalle,
    body.role-administrativo .adm-datos-detalle { grid-template-columns: minmax(0, 1fr) !important; }
}
body.role-director .adm-dato-tabla,
body.role-administrativo .adm-dato-tabla {
    width: 100% !important;
    border-collapse: collapse !important;
    font-size: 14px !important;
}
body.role-director .adm-dato-tabla th,
body.role-administrativo .adm-dato-tabla th {
    font-size: 11px !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
    color: var(--brand-text-muted) !important;
    text-align: left !important;
    padding: 4px 8px !important;
    border-bottom: 2px solid var(--brand-black) !important;
}
body.role-director .adm-dato-tabla td,
body.role-administrativo .adm-dato-tabla td {
    padding: 6px 8px !important;
    border-bottom: 1px solid #e4e4e4 !important;
}
body.role-director .adm-dato-tabla td:last-child,
body.role-administrativo .adm-dato-tabla td:last-child,
body.role-director .adm-dato-tabla th:last-child,
body.role-administrativo .adm-dato-tabla th:last-child {
    text-align: right !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
}
body.role-director .adm-dato-curso,
body.role-administrativo .adm-dato-curso {
    border: 2px solid var(--brand-black) !important;
    border-radius: 8px !important;
    margin-bottom: 8px !important;
    background: #fff !important;
}
body.role-director .adm-dato-curso > summary,
body.role-administrativo .adm-dato-curso > summary {
    display: flex !important;
    justify-content: space-between !important;
    gap: 10px !important;
    padding: 8px 12px !important;
    font-weight: 800 !important;
    cursor: pointer !important;
}
body.role-director .adm-dato-curso > summary span,
body.role-administrativo .adm-dato-curso > summary span {
    font-family: 'JetBrains Mono', monospace !important;
    background: var(--brand-yellow) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 6px !important;
    padding: 0 6px !important;
}
body.role-director .adm-dato-curso .adm-dato-tabla,
body.role-administrativo .adm-dato-curso .adm-dato-tabla { margin: 0 0 6px !important; }

/* Campana de avisos: número de pendientes */
body.role-director .adm-bell-count,
body.role-administrativo .adm-bell-count {
    position: absolute !important;
    top: -8px !important;
    right: -10px !important;
    min-width: 22px !important;
    height: 22px !important;
    padding: 0 5px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 999px !important;
    background: var(--brand-danger) !important;
    color: #fff !important;
    border: 2px solid var(--brand-black) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    line-height: 1 !important;
}
body.role-director .adm-bell .nb-dd-item,
body.role-administrativo .adm-bell .nb-dd-item {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}
body.role-director .adm-bell-num,
body.role-administrativo .adm-bell-num {
    margin-left: auto !important;
    min-width: 22px !important;
    padding: 1px 6px !important;
    border-radius: 999px !important;
    background: var(--brand-danger) !important;
    color: #fff !important;
    border: 2px solid var(--brand-black) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    text-align: center !important;
}
body.role-director .adm-bell-num.adm-bell-num-gris,
body.role-administrativo .adm-bell-num.adm-bell-num-gris {
    background: #e4e4e4 !important;
    color: var(--brand-black) !important;
}

/* Buscador del menú: resultados de alumnos, profesores, administrativos y asignaturas */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-panel {
    margin: 0 0 10px !important;
    padding: 6px !important;
    max-height: 60vh !important;
    overflow-y: auto !important;
    background: #fff !important;
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-panel[hidden] { display: none !important; }
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-grupo {
    padding: 6px 8px 2px !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    letter-spacing: .08em !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-item {
    display: flex !important;
    align-items: flex-start !important;
    gap: 8px !important;
    padding: 6px 8px !important;
    border-radius: 8px !important;
    color: var(--brand-black) !important;
    text-decoration: none !important;
    font-size: 13px !important;
    line-height: 1.25 !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-item i {
    width: 16px !important;
    margin-top: 2px !important;
    text-align: center !important;
    color: var(--brand-text-muted) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-item span {
    display: flex !important;
    flex-direction: column !important;
    min-width: 0 !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-item small {
    font-size: 11px !important;
    color: var(--brand-text-muted) !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-item:hover,
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-item:focus {
    background: var(--brand-yellow) !important;
    outline: none !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-busca-vacio {
    padding: 8px !important;
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
/* Buscador dentro del menú móvil */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter.adm-nav-filter-movil {
    margin: 4px 0 10px !important;
    background: #fff !important;
    border: 2px solid var(--brand-black) !important;
    color: var(--brand-black) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter-movil input {
    color: var(--brand-black) !important;
    font-size: 16px !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter-movil input::placeholder { color: #777 !important; }
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) #admMobileNavList .filter-hide { display: none !important; }

/* Recordatorios del equipo (Inicio y página Recordatorios) */
body.role-director .adm-rec-cabecera,
body.role-administrativo .adm-rec-cabecera {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
}
body.role-director .adm-rec-total,
body.role-administrativo .adm-rec-total,
body.role-director .adm-rec-hechos summary .adm-panel-title span,
body.role-administrativo .adm-rec-hechos summary .adm-panel-title span {
    display: inline-block !important;
    min-width: 24px !important;
    padding: 0 7px !important;
    margin-left: 6px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: var(--brand-yellow) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 13px !important;
    text-align: center !important;
}
body.role-director .adm-rec-todos,
body.role-administrativo .adm-rec-todos,
body.role-director .adm-rec-mas,
body.role-administrativo .adm-rec-mas {
    font-size: 13px !important;
    font-weight: 800 !important;
    color: var(--brand-black) !important;
    text-decoration: underline !important;
}
body.role-director .adm-rec-mas,
body.role-administrativo .adm-rec-mas { display: inline-block !important; margin-top: 8px !important; }
body.role-director .adm-rec-nuevo,
body.role-administrativo .adm-rec-nuevo { margin: 6px 0 10px !important; }
body.role-director .adm-rec-nuevo > summary,
body.role-administrativo .adm-rec-nuevo > summary {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 5px 12px !important;
    border: 2px dashed var(--brand-black) !important;
    border-radius: 999px !important;
    font-size: 13px !important;
    font-weight: 800 !important;
    cursor: pointer !important;
    list-style: none !important;
}
body.role-director .adm-rec-nuevo > summary::-webkit-details-marker,
body.role-administrativo .adm-rec-nuevo > summary::-webkit-details-marker { display: none !important; }
body.role-director .adm-rec-nuevo[open] > summary,
body.role-administrativo .adm-rec-nuevo[open] > summary { background: var(--brand-yellow) !important; border-style: solid !important; }
body.role-director .adm-rec-form,
body.role-administrativo .adm-rec-form {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    gap: 10px !important;
    margin-top: 10px !important;
    padding: 12px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    background: #fff !important;
}
body.role-director .adm-rec-form .adm-rec-campo-texto,
body.role-administrativo .adm-rec-form .adm-rec-campo-texto { flex: 1 1 260px !important; }
body.role-director .adm-rec-lista,
body.role-administrativo .adm-rec-lista {
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
}
body.role-director .adm-rec,
body.role-administrativo .adm-rec {
    display: flex !important;
    align-items: flex-start !important;
    gap: 10px !important;
    padding: 8px 10px !important;
    background: #fff !important;
    border: 2px solid var(--brand-black) !important;
    border-left-width: 6px !important;
    border-radius: 10px !important;
}
body.role-director .adm-rec-vencido,
body.role-administrativo .adm-rec-vencido { border-left-color: var(--brand-danger) !important; }
body.role-director .adm-rec-hoy,
body.role-administrativo .adm-rec-hoy { border-left-color: var(--brand-yellow) !important; }
body.role-director .adm-rec-check,
body.role-administrativo .adm-rec-check {
    flex: 0 0 auto !important;
    width: 20px !important;
    height: 20px !important;
    margin-top: 2px !important;
    accent-color: var(--brand-success) !important;
    cursor: pointer !important;
}
body.role-director .adm-rec-cuerpo,
body.role-administrativo .adm-rec-cuerpo {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
}
body.role-director .adm-rec-texto,
body.role-administrativo .adm-rec-texto {
    font-weight: 700 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-rec-cuerpo small,
body.role-administrativo .adm-rec-cuerpo small {
    font-size: 12px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-rec-vencido .adm-rec-cuando,
body.role-administrativo .adm-rec-vencido .adm-rec-cuando { color: var(--brand-danger) !important; font-weight: 800 !important; }
body.role-director .adm-rec-hoy .adm-rec-cuando,
body.role-administrativo .adm-rec-hoy .adm-rec-cuando { color: var(--brand-black) !important; font-weight: 800 !important; }
body.role-director .adm-rec-hecho,
body.role-administrativo .adm-rec-hecho {
    border-left-color: var(--brand-success) !important;
    opacity: .65 !important;
}
body.role-director .adm-rec-hecho .adm-rec-texto,
body.role-administrativo .adm-rec-hecho .adm-rec-texto { text-decoration: line-through !important; }
body.role-director .adm-rec-vacio,
body.role-administrativo .adm-rec-vacio {
    margin: 4px 0 0 !important;
    font-size: 13px !important;
    color: var(--brand-text-muted) !important;
}
body.role-director .adm-rec-hechos > summary,
body.role-administrativo .adm-rec-hechos > summary { cursor: pointer !important; list-style: none !important; }
body.role-director .adm-rec .adm-row-more,
body.role-administrativo .adm-rec .adm-row-more {
    width: 32px !important;
    height: 28px !important;
    min-width: 0 !important;
    padding: 0 !important;
    font-size: 14px !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
}
body.role-director .adm-rec .nb-dd,
body.role-administrativo .adm-rec .nb-dd { flex: 0 0 auto !important; }
/* Recordatorios: detalles desplegables */
body.role-director .adm-rec-abrir,
body.role-administrativo .adm-rec-abrir {
    display: flex !important;
    align-items: flex-start !important;
    gap: 8px !important;
    width: 100% !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
    color: inherit !important;
    text-align: left !important;
    cursor: pointer !important;
}
body.role-director .adm-rec-abrir i,
body.role-administrativo .adm-rec-abrir i {
    margin-top: 3px !important;
    font-size: 12px !important;
    transition: transform .15s !important;
}
body.role-director .adm-rec-abrir[aria-expanded="true"] i,
body.role-administrativo .adm-rec-abrir[aria-expanded="true"] i { transform: rotate(180deg) !important; }
body.role-director .adm-rec-abrir:hover .adm-rec-texto,
body.role-administrativo .adm-rec-abrir:hover .adm-rec-texto { text-decoration: underline !important; }
body.role-director .adm-rec-detalle,
body.role-administrativo .adm-rec-detalle {
    margin-top: 6px !important;
    padding: 8px 10px !important;
    background: var(--brand-bg, #fffdf0) !important;
    border: 2px solid #e4e4e4 !important;
    border-radius: 8px !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    overflow-wrap: anywhere !important;
}
body.role-director .adm-rec-detalle[hidden],
body.role-administrativo .adm-rec-detalle[hidden] { display: none !important; }
body.role-director .adm-rec-form .adm-rec-campo-detalle,
body.role-administrativo .adm-rec-form .adm-rec-campo-detalle { flex: 1 1 100% !important; order: 1 !important; }
body.role-director .adm-rec-form .adm-rec-campo-detalle textarea,
body.role-administrativo .adm-rec-form .adm-rec-campo-detalle textarea { min-height: 70px !important; resize: vertical !important; }
body.role-director .adm-rec-form .adm-filtro-corto,
body.role-administrativo .adm-rec-form .adm-filtro-corto,
body.role-director .adm-rec-form .adm-filtros-botones,
body.role-administrativo .adm-rec-form .adm-filtros-botones { order: 2 !important; }

/* Cajas en el móvil: cada apunte como tarjeta */
@media (max-width: 767px) {
    body.role-director #tabla_cajas,
    body.role-administrativo #tabla_cajas { display: block !important; width: 100% !important; }
    body.role-director #tabla_cajas thead,
    body.role-administrativo #tabla_cajas thead { display: none !important; }
    body.role-director #tabla_cajas tbody,
    body.role-administrativo #tabla_cajas tbody { display: flex !important; flex-direction: column !important; gap: 8px !important; }
    body.role-director #tabla_cajas tbody tr,
    body.role-administrativo #tabla_cajas tbody tr {
        display: grid !important;
        grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
        gap: 4px 6px !important;
        padding: 10px 12px !important;
        background: #fff !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 10px !important;
    }
    body.role-director #tabla_cajas tbody tr[style*="display: none"],
    body.role-administrativo #tabla_cajas tbody tr[style*="display: none"],
    body.role-director #tabla_cajas tbody tr[style*="display:none"],
    body.role-administrativo #tabla_cajas tbody tr[style*="display:none"] { display: none !important; }
    body.role-director #tabla_cajas tbody td,
    body.role-administrativo #tabla_cajas tbody td {
        display: block !important;
        background: transparent !important;
        border: 0 !important;
        padding: 0 !important;
        text-align: left !important;
        min-width: 0 !important;
        overflow-wrap: anywhere !important;
    }
    /* Alumno / Quitar y concepto a todo el ancho */
    body.role-director #tabla_cajas tbody td:nth-child(1),
    body.role-administrativo #tabla_cajas tbody td:nth-child(1) { grid-column: 1 / -1 !important; font-weight: 800 !important; }
    body.role-director #tabla_cajas tbody td:nth-child(1):empty,
    body.role-administrativo #tabla_cajas tbody td:nth-child(1):empty { display: none !important; }
    body.role-director #tabla_cajas tbody td:nth-child(2),
    body.role-administrativo #tabla_cajas tbody td:nth-child(2) { grid-column: 1 / -1 !important; font-size: 13px !important; color: var(--brand-text-muted) !important; margin-bottom: 4px !important; }
    /* Importes con su etiqueta encima */
    body.role-director #tabla_cajas tbody td:nth-child(n+3),
    body.role-administrativo #tabla_cajas tbody td:nth-child(n+3) {
        font-family: 'JetBrains Mono', monospace !important;
        font-weight: 700 !important;
        font-size: 14px !important;
        padding: 4px 6px !important;
        border-radius: 6px !important;
        background: #f4f2e8 !important;
    }
    body.role-director #tabla_cajas tbody td:nth-child(n+3)::before,
    body.role-administrativo #tabla_cajas tbody td:nth-child(n+3)::before {
        display: block !important;
        font-family: 'Inter', sans-serif !important;
        font-size: 9.5px !important;
        font-weight: 800 !important;
        letter-spacing: .06em !important;
        text-transform: uppercase !important;
        color: var(--brand-text-muted) !important;
    }
    body.role-director #tabla_cajas tbody td:nth-child(3)::before, body.role-administrativo #tabla_cajas tbody td:nth-child(3)::before { content: "Banco"; }
    body.role-director #tabla_cajas tbody td:nth-child(4)::before, body.role-administrativo #tabla_cajas tbody td:nth-child(4)::before { content: "Tarjeta"; }
    body.role-director #tabla_cajas tbody td:nth-child(5)::before, body.role-administrativo #tabla_cajas tbody td:nth-child(5)::before { content: "Efectivo"; }
    body.role-director #tabla_cajas tbody td:nth-child(6)::before, body.role-administrativo #tabla_cajas tbody td:nth-child(6)::before { content: "Saldo"; }
    body.role-director #tabla_cajas tbody td:nth-child(n+3):empty::after,
    body.role-administrativo #tabla_cajas tbody td:nth-child(n+3):empty::after { content: "–"; color: #bbb !important; }
    body.role-director #tabla_cajas tbody td:nth-child(6),
    body.role-administrativo #tabla_cajas tbody td:nth-child(6) { background: var(--brand-yellow) !important; }
    /* Totales del día y campos de administración */
    body.role-director #tabla_cajas tbody tr.cajas-total,
    body.role-administrativo #tabla_cajas tbody tr.cajas-total { background: #fffbe6 !important; border-style: dashed !important; }
    body.role-director #tabla_cajas tbody tr.cajas-campo,
    body.role-administrativo #tabla_cajas tbody tr.cajas-campo { grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, 1fr)) !important; background: #f1f1f1 !important; }
    body.role-director #tabla_cajas tbody tr.cajas-campo td:nth-child(1),
    body.role-administrativo #tabla_cajas tbody tr.cajas-campo td:nth-child(1) { grid-column: auto !important; align-self: center !important; font-size: 13px !important; }
    body.role-director #tabla_cajas tbody tr.cajas-campo td:nth-child(2)::before, body.role-administrativo #tabla_cajas tbody tr.cajas-campo td:nth-child(2)::before { content: "Ayer"; }
    body.role-director #tabla_cajas tbody tr.cajas-campo td:nth-child(3)::before, body.role-administrativo #tabla_cajas tbody tr.cajas-campo td:nth-child(3)::before { content: "Hoy"; }
    body.role-director #tabla_cajas tbody tr.cajas-campo td:nth-child(n+2),
    body.role-administrativo #tabla_cajas tbody tr.cajas-campo td:nth-child(n+2) {
        grid-column: auto !important;
        margin: 0 !important;
        color: inherit !important;
        font-family: 'JetBrains Mono', monospace !important;
        font-weight: 700 !important;
        font-size: 14px !important;
        padding: 4px 6px !important;
        border-radius: 6px !important;
        background: #fff !important;
    }
    body.role-director #tabla_cajas tbody tr.cajas-campo td:nth-child(n+2)::before,
    body.role-administrativo #tabla_cajas tbody tr.cajas-campo td:nth-child(n+2)::before {
        display: block !important;
        font-family: 'Inter', sans-serif !important;
        font-size: 9.5px !important;
        font-weight: 800 !important;
        letter-spacing: .06em !important;
        text-transform: uppercase !important;
        color: var(--brand-text-muted) !important;
    }
    body.role-director #tabla_cajas tbody td .btn,
    body.role-administrativo #tabla_cajas tbody td .btn { width: auto !important; }
}
@media (max-width: 767px) {
    body.role-director #tabla_cajas tbody td,
    body.role-administrativo #tabla_cajas tbody td { white-space: normal !important; }
    body.role-director #tabla_cajas tbody td:nth-child(n+3),
    body.role-administrativo #tabla_cajas tbody td:nth-child(n+3),
    body.role-director #tabla_cajas tbody tr.cajas-campo td:nth-child(n+2),
    body.role-administrativo #tabla_cajas tbody tr.cajas-campo td:nth-child(n+2) { font-size: 12.5px !important; }
}

/* Cajas (todos los tamaños): los días en una tira encima y la caja a todo el ancho */
body.role-director .row:has(> .col-sm-12 > #pestanas_salas),
body.role-administrativo .row:has(> .col-sm-12 > #pestanas_salas) {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    gap: 14px !important;
}
body.role-director .row:has(> .col-sm-12 > #pestanas_salas) > [class*="col-"],
body.role-administrativo .row:has(> .col-sm-12 > #pestanas_salas) > [class*="col-"] {
    flex: 0 0 auto !important;
    width: 100% !important;
    max-width: 100% !important;
}
body.role-director #pestanas_salas,
body.role-administrativo #pestanas_salas {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    gap: 8px !important;
    overflow-x: auto !important;
    margin: 0 !important;
    padding: 6px 4px 12px !important;
    border: 0 !important;
    -webkit-overflow-scrolling: touch !important;
}
body.role-director #pestanas_salas li,
body.role-administrativo #pestanas_salas li { flex: 0 0 auto !important; list-style: none !important; }
body.role-director #pestanas_salas .nav-pestana,
body.role-administrativo #pestanas_salas .nav-pestana {
    display: inline-block !important;
    padding: 7px 14px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: var(--brand-black) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    white-space: nowrap !important;
    cursor: pointer !important;
}
body.role-director #pestanas_salas .nav-pestana:hover,
body.role-administrativo #pestanas_salas .nav-pestana:hover { background: #fff3a8 !important; }
body.role-director #pestanas_salas .nav-pestana.active,
body.role-administrativo #pestanas_salas .nav-pestana.active {
    background: var(--brand-yellow) !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
@media (min-width: 768px) {
    body.role-director #tabla_cajas,
    body.role-administrativo #tabla_cajas {
        font-size: 14px !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 10px !important;
        overflow: hidden !important;
        border-collapse: separate !important;
        border-spacing: 0 !important;
        background: #fff !important;
    }
    body.role-director #tabla_cajas td,
    body.role-administrativo #tabla_cajas td,
    body.role-director #tabla_cajas th,
    body.role-administrativo #tabla_cajas th { padding: 9px 12px !important; }
    body.role-director #tabla_cajas td:first-child:not([colspan]),
    body.role-administrativo #tabla_cajas td:first-child:not([colspan]) { text-align: left !important; }
}
body.role-director .row:has(> .col-sm-12 > #pestanas_salas) > [class*="col-"],
body.role-administrativo .row:has(> .col-sm-12 > #pestanas_salas) > [class*="col-"] {
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    padding: 0 !important;
}

/* Conteo de alumnos en pantalla */
body.role-director .adm-datos-botones,
body.role-administrativo .adm-datos-botones { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; }
body.role-director .adm-conteo-stats,
body.role-administrativo .adm-conteo-stats { margin: 14px 0 !important; }
body.role-director .adm-stat b small,
body.role-administrativo .adm-stat b small { font-size: 55% !important; font-weight: 700 !important; color: var(--brand-text-muted) !important; }
body.role-director .adm-conteo-dias,
body.role-administrativo .adm-conteo-dias {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    padding: 4px 2px 10px !important;
    margin-bottom: 10px !important;
}
body.role-director .adm-conteo-dia,
body.role-administrativo .adm-conteo-dia {
    flex: 0 0 auto !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 8px 14px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: var(--brand-black) !important;
    font-weight: 800 !important;
    font-size: 14px !important;
    cursor: pointer !important;
}
body.role-director .adm-conteo-dia small,
body.role-administrativo .adm-conteo-dia small { font-family: 'JetBrains Mono', monospace !important; font-size: 11px !important; color: var(--brand-text-muted) !important; }
body.role-director .adm-conteo-dia.active,
body.role-administrativo .adm-conteo-dia.active { background: var(--brand-yellow) !important; box-shadow: 3px 3px 0 var(--brand-black) !important; }
body.role-director .adm-conteo-dia-n,
body.role-administrativo .adm-conteo-dia-n,
body.role-director .adm-conteo-dia-rojo,
body.role-administrativo .adm-conteo-dia-rojo {
    min-width: 22px !important;
    padding: 0 6px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 999px !important;
    background: #fff !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    text-align: center !important;
}
body.role-director .adm-conteo-dia-rojo,
body.role-administrativo .adm-conteo-dia-rojo { background: var(--brand-danger) !important; color: #fff !important; }
body.role-director .adm-conteo-panel .adm-panel-title span,
body.role-administrativo .adm-conteo-panel .adm-panel-title span,
body.role-director .adm-conteo-totales .adm-panel-title span,
body.role-administrativo .adm-conteo-totales .adm-panel-title span { font-size: 12px !important; font-weight: 600 !important; color: var(--brand-text-muted) !important; margin-left: 8px !important; }
body.role-director .adm-conteo-tabla,
body.role-administrativo .adm-conteo-tabla { width: 100% !important; border-collapse: collapse !important; font-size: 14px !important; }
body.role-director .adm-conteo-tabla th,
body.role-administrativo .adm-conteo-tabla th {
    padding: 6px 10px !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: .06em !important;
    text-transform: uppercase !important;
    color: var(--brand-text-muted) !important;
    text-align: left !important;
    border-bottom: 2px solid var(--brand-black) !important;
}
body.role-director .adm-conteo-tabla td,
body.role-administrativo .adm-conteo-tabla td { padding: 8px 10px !important; border-bottom: 1px solid #e4e4e4 !important; vertical-align: middle !important; }
body.role-director .adm-conteo-tabla .num,
body.role-administrativo .adm-conteo-tabla .num { text-align: right !important; font-family: 'JetBrains Mono', monospace !important; white-space: nowrap !important; }
body.role-director .adm-conteo-tabla td small,
body.role-administrativo .adm-conteo-tabla td small { display: block !important; font-size: 11.5px !important; color: var(--brand-text-muted) !important; }
body.role-director .adm-conteo-tabla a,
body.role-administrativo .adm-conteo-tabla a { color: var(--brand-black) !important; text-decoration: none !important; }
body.role-director .adm-conteo-tabla a:hover,
body.role-administrativo .adm-conteo-tabla a:hover { text-decoration: underline !important; }
body.role-director .adm-conteo-hora,
body.role-administrativo .adm-conteo-hora { font-family: 'JetBrains Mono', monospace !important; font-weight: 700 !important; white-space: nowrap !important; }
body.role-director .adm-conteo-color,
body.role-administrativo .adm-conteo-color { display: inline-block !important; width: 12px !important; height: 12px !important; border: 2px solid var(--brand-black) !important; border-radius: 3px !important; vertical-align: -1px !important; margin-right: 4px !important; }
body.role-director .adm-conteo-n,
body.role-administrativo .adm-conteo-n { font-size: 15px !important; }
body.role-director .adm-conteo-n-rojo,
body.role-administrativo .adm-conteo-n-rojo { color: var(--brand-danger) !important; }
body.role-director .adm-conteo-mas,
body.role-administrativo .adm-conteo-mas {
    display: inline-block !important;
    margin-left: 4px !important;
    padding: 0 6px !important;
    border-radius: 999px !important;
    background: var(--brand-danger) !important;
    color: #fff !important;
    font-size: 11px !important;
    font-weight: 800 !important;
}
body.role-director tr.adm-conteo-exceso td,
body.role-administrativo tr.adm-conteo-exceso td { background: #fff1f1 !important; }
body.role-director .adm-conteo-totales-grid,
body.role-administrativo .adm-conteo-totales-grid { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important; gap: 12px !important; }
body.role-director .adm-conteo-categoria,
body.role-administrativo .adm-conteo-categoria { border: 2px solid var(--brand-black) !important; border-radius: 10px !important; background: #fff !important; overflow: hidden !important; }
body.role-director .adm-conteo-categoria-head,
body.role-administrativo .adm-conteo-categoria-head { display: flex !important; justify-content: space-between !important; padding: 8px 12px !important; background: var(--brand-yellow) !important; border-bottom: 2px solid var(--brand-black) !important; }
body.role-director .adm-conteo-categoria-head span,
body.role-administrativo .adm-conteo-categoria-head span { font-family: 'JetBrains Mono', monospace !important; font-weight: 800 !important; }
body.role-director .adm-conteo-categoria ul,
body.role-administrativo .adm-conteo-categoria ul { list-style: none !important; margin: 0 !important; padding: 4px 0 !important; }
body.role-director .adm-conteo-categoria li,
body.role-administrativo .adm-conteo-categoria li { display: flex !important; justify-content: space-between !important; gap: 10px !important; padding: 5px 12px !important; font-size: 13.5px !important; border-bottom: 1px solid #eee !important; }
body.role-director .adm-conteo-categoria li b,
body.role-administrativo .adm-conteo-categoria li b { font-family: 'JetBrains Mono', monospace !important; }
@media (max-width: 767px) {
    body.role-director .adm-conteo-tabla thead,
    body.role-administrativo .adm-conteo-tabla thead { display: none !important; }
    body.role-director .adm-conteo-tabla,
    body.role-administrativo .adm-conteo-tabla,
    body.role-director .adm-conteo-tabla tbody,
    body.role-administrativo .adm-conteo-tabla tbody { display: block !important; }
    body.role-director .adm-conteo-tabla tr,
    body.role-administrativo .adm-conteo-tabla tr {
        display: grid !important;
        grid-template-columns: 1fr 1fr 1fr !important;
        gap: 4px 8px !important;
        padding: 10px 12px !important;
        margin-bottom: 8px !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 10px !important;
        background: #fff !important;
    }
    body.role-director .adm-conteo-tabla td,
    body.role-administrativo .adm-conteo-tabla td { display: block !important; padding: 0 !important; border: 0 !important; background: transparent !important; }
    body.role-director .adm-conteo-tabla td:nth-child(-n+4),
    body.role-administrativo .adm-conteo-tabla td:nth-child(-n+4) { grid-column: 1 / -1 !important; }
    body.role-director .adm-conteo-tabla td.num,
    body.role-administrativo .adm-conteo-tabla td.num { text-align: left !important; padding: 4px 6px !important; border-radius: 6px !important; background: #f4f2e8 !important; }
    body.role-director .adm-conteo-tabla td.num::before,
    body.role-administrativo .adm-conteo-tabla td.num::before { content: attr(data-label); display: block !important; font-family: 'Inter', sans-serif !important; font-size: 9.5px !important; font-weight: 800 !important; letter-spacing: .06em !important; text-transform: uppercase !important; color: var(--brand-text-muted) !important; }
    body.role-director .adm-conteo-tabla td[data-label="Profesor"]::before,
    body.role-administrativo .adm-conteo-tabla td[data-label="Profesor"]::before { content: "Profesor: "; font-weight: 800 !important; font-size: 11px !important; color: var(--brand-text-muted) !important; }
    body.role-director tr.adm-conteo-exceso,
    body.role-administrativo tr.adm-conteo-exceso { border-left: 6px solid var(--brand-danger) !important; }
}
body.role-director .adm-conteo-franja th,
body.role-administrativo .adm-conteo-franja th {
    padding: 10px 10px 4px !important;
    border-bottom: 1px solid var(--brand-black) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 12px !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    color: var(--brand-black) !important;
    background: #fffbe6 !important;
}
body.role-director .adm-conteo-solo,
body.role-administrativo .adm-conteo-solo { display: inline-flex !important; align-items: center !important; gap: 8px !important; margin: 0 0 10px !important; font-size: 13px !important; font-weight: 700 !important; cursor: pointer !important; }
body.role-director .adm-conteo-solo input,
body.role-administrativo .adm-conteo-solo input { width: 18px !important; height: 18px !important; accent-color: var(--brand-danger) !important; }
body.adm-conteo-solo-aforo .adm-conteo-fila:not(.adm-conteo-exceso),
body.adm-conteo-solo-aforo .adm-conteo-franja { display: none !important; }
@media (max-width: 767px) {
    body.role-director .adm-conteo-tabla tr.adm-conteo-franja,
    body.role-administrativo .adm-conteo-tabla tr.adm-conteo-franja { display: block !important; padding: 2px 4px !important; border: 0 !important; background: transparent !important; margin: 6px 0 2px !important; }
    body.role-director .adm-conteo-tabla tr.adm-conteo-franja th,
    body.role-administrativo .adm-conteo-tabla tr.adm-conteo-franja th { display: block !important; border: 0 !important; background: transparent !important; padding: 0 !important; }
}

/* ===== Calificaciones y asistencia del alumno (ventana de la ficha y del listado) ===== */
.cal-alumno { background: var(--brand-bg, #FFFDEB) !important; padding: 18px !important; text-align: left !important; }
.cal-alumno .cal-seccion { margin: 0 0 22px; }
.cal-alumno .cal-seccion-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px; padding-bottom: 8px; border-bottom: 3px solid var(--brand-black); }
.cal-alumno .cal-seccion-head h3 { margin: 0; font-size: 18px; font-weight: 900; letter-spacing: .01em; text-decoration: none; }
.cal-alumno .cal-vacio { margin: 6px 0; color: var(--brand-text-muted, #555); font-size: 13px; font-weight: 600; }
.cal-alumno .cal-bien { --cal-color: var(--brand-success, #16A34A); }
.cal-alumno .cal-regular { --cal-color: var(--brand-warning, #D97706); }
.cal-alumno .cal-mal { --cal-color: var(--brand-danger, #DC2626); }
/* Media de asistencia */
.cal-alumno .cal-media { display: inline-flex; align-items: baseline; gap: 6px; padding: 4px 12px; border: 3px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); box-shadow: 3px 3px 0 0 var(--cal-color); }
.cal-alumno .cal-media b { font-size: 22px; font-weight: 900; color: var(--cal-color); }
.cal-alumno .cal-media small { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
/* Asistencia por asignatura */
.cal-alumno .cal-asis { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 18px; }
.cal-alumno .cal-asis li { display: grid; grid-template-columns: minmax(0, 1fr) 90px 62px; grid-template-areas: "nombre barra pct" "faltas faltas faltas"; align-items: center; gap: 2px 10px; padding: 8px 10px; background: var(--brand-white); border: 2px solid var(--brand-black); border-left: 6px solid var(--cal-color); border-radius: 8px; }
.cal-alumno .cal-asis .cal-nombre { grid-area: nombre; font-weight: 800; font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-alumno .cal-barra { grid-area: barra; height: 8px; border: 1.5px solid var(--brand-black); border-radius: 6px; background: #f1f1f1; overflow: hidden; }
.cal-alumno .cal-barra i { display: block; height: 100%; background: var(--cal-color); }
.cal-alumno .cal-pct { grid-area: pct; text-align: right; font-family: 'JetBrains Mono', monospace; font-size: 13px; color: var(--cal-color); }
.cal-alumno .cal-faltas { grid-area: faltas; font-size: 11.5px; color: var(--brand-text-muted, #555); font-weight: 600; }
/* Tarjeta de asignatura */
.cal-alumno .cal-asig { background: var(--brand-white); border: 3px solid var(--brand-black); border-radius: 12px; box-shadow: 4px 4px 0 0 var(--brand-yellow); margin: 0 0 16px; overflow: hidden; }
.cal-alumno .cal-asig-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px 14px; background: #fffbe6; border-bottom: 2px solid var(--brand-black); }
.cal-alumno .cal-asig-head h4 { margin: 0; font-size: 16px; font-weight: 900; flex: 1 1 auto; }
.cal-alumno .cal-asis-chip { font-size: 11.5px; font-weight: 800; padding: 3px 8px; border: 2px solid var(--cal-color); color: var(--cal-color); border-radius: 999px; background: var(--brand-white); white-space: nowrap; }
.cal-alumno .cal-finales { display: flex; gap: 8px; }
.cal-alumno .cal-final { display: inline-flex; flex-direction: column; align-items: center; min-width: 84px; padding: 3px 10px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); line-height: 1.15; }
.cal-alumno .cal-final small { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--brand-text-muted, #555); }
.cal-alumno .cal-final b { font-size: 18px; font-weight: 900; }
.cal-alumno .cal-final-bien { box-shadow: 2px 2px 0 0 var(--brand-success, #16A34A); }
.cal-alumno .cal-final-bien b { color: var(--brand-success, #16A34A); }
.cal-alumno .cal-final-mal { box-shadow: 2px 2px 0 0 var(--brand-danger, #DC2626); }
.cal-alumno .cal-final-mal b { color: var(--brand-danger, #DC2626); }
.cal-alumno .cal-final-vacia b { color: #9a9a9a; }
.cal-alumno .cal-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cal-alumno .cal-bloque { padding: 10px 14px 12px; }
.cal-alumno .cal-bloque + .cal-bloque { border-left: 2px dashed #cfcfcf; }
.cal-alumno .cal-bloque h5 { margin: 0 0 6px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; color: var(--brand-text-muted, #555); }
.cal-alumno .cal-bloque h5 span { display: inline-block; min-width: 18px; padding: 0 5px; margin-left: 4px; border-radius: 9px; background: var(--brand-black); color: var(--brand-white); text-align: center; font-size: 10px; }
.cal-alumno .cal-lista { list-style: none; margin: 0; padding: 0; }
.cal-alumno .cal-lista li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 0; border-bottom: 1px solid #ececec; font-size: 13px; }
.cal-alumno .cal-lista li:last-child { border-bottom: 0; }
.cal-alumno .cal-lista .cal-nombre { font-weight: 600; min-width: 0; }
.cal-alumno .cal-peso { margin-left: 4px; font-size: 11px; color: var(--brand-text-muted, #666); font-weight: 700; }
.cal-alumno .cal-nota { flex: 0 0 auto; min-width: 46px; text-align: center; padding: 2px 8px; border: 2px solid var(--brand-black); border-radius: 6px; font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 12.5px; background: var(--brand-white); }
.cal-alumno .cal-nota-np { background: #efefef; color: #555; border-color: #8a8a8a; }
.cal-alumno .cal-nota-vacia { border-style: dashed; border-color: #b8b8b8; color: #8a8a8a; font-family: 'Inter', sans-serif; font-weight: 700; font-size: 11px; }
.cal-alumno .cal-obs { margin: 0; padding: 10px 14px; border-top: 2px solid var(--brand-black); background: #f7f7f7; font-size: 13px; white-space: pre-line; }
.cal-alumno .cal-obs b { display: block; font-family: 'JetBrains Mono', monospace; font-size: 10.5px; text-transform: uppercase; letter-spacing: .08em; color: var(--brand-text-muted, #555); }
/* Asignaturas de cursos anteriores, plegadas */
.cal-alumno .cal-antiguas { margin-top: 6px; }
.cal-alumno .cal-antiguas > summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 8px; margin-bottom: 12px; padding: 8px 14px; border: 3px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); font-weight: 800; box-shadow: 3px 3px 0 0 var(--brand-black); }
.cal-alumno .cal-antiguas > summary::-webkit-details-marker { display: none; }
.cal-alumno .cal-antiguas > summary span { padding: 0 6px; border-radius: 9px; background: var(--brand-black); color: var(--brand-white); font-size: 11px; }
.cal-alumno .cal-antiguas .cal-asig { box-shadow: 4px 4px 0 0 #d6d6d6; }
@media (max-width: 767px) {
    .cal-alumno { padding: 12px !important; }
    .cal-alumno .cal-asis, .cal-alumno .cal-cols { grid-template-columns: 1fr; }
    .cal-alumno .cal-bloque + .cal-bloque { border-left: 0; border-top: 2px dashed #cfcfcf; }
    .cal-alumno .cal-asis li { grid-template-columns: minmax(0, 1fr) 70px 58px; }
    .cal-alumno .cal-finales { width: 100%; }
    .cal-alumno .cal-final { flex: 1 1 0; }
}
.cal-alumno .cal-una .cal-lista { column-count: 2; column-gap: 28px; }
.cal-alumno .cal-una .cal-lista li { break-inside: avoid; }
.cal-alumno .cal-sin { margin: 0; padding: 0 14px 10px; font-size: 12px; font-weight: 700; color: var(--brand-text-muted, #555); }
.cal-alumno .cal-sin-nada { padding: 10px 14px; margin: 0; }
@media (max-width: 767px) {
    .cal-alumno .cal-una .cal-lista { column-count: 1; }
}

/* ===== Resultados de una encuesta ===== */
.enc-bien { --enc-color: var(--brand-success, #16A34A); }
.enc-regular { --enc-color: var(--brand-warning, #D97706); }
.enc-mal { --enc-color: var(--brand-danger, #DC2626); }
.enc-vacia { --enc-color: #9a9a9a; }
.enc-ambito { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; }
.enc-etiqueta { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border: 2px solid var(--brand-black); border-radius: 999px; background: var(--brand-white); font-size: 12.5px; font-weight: 700; }
body.role-director .enc-stats, body.role-administrativo .enc-stats { grid-template-columns: repeat(4, 1fr) !important; }
body.role-director .enc-stats .adm-stat b small, body.role-administrativo .enc-stats .adm-stat b small { font-size: 14px !important; color: var(--brand-text-muted) !important; margin-left: 2px; }
body.role-director .enc-stat-bien b, body.role-administrativo .enc-stat-bien b { color: var(--brand-success) !important; }
body.role-director .enc-stat-regular b, body.role-administrativo .enc-stat-regular b { color: var(--brand-warning) !important; }
body.role-director .enc-stat-mal b, body.role-administrativo .enc-stat-mal b { color: var(--brand-danger) !important; }
.enc-titulo-impresion { display: none; }
body.role-director .enc-categoria, body.role-administrativo .enc-categoria { margin-bottom: 18px !important; padding: 0 !important; overflow: hidden; }
body.role-director .enc-categoria > .adm-panel-title, body.role-administrativo .enc-categoria > .adm-panel-title { margin: 0 !important; padding: 10px 16px !important; background: var(--brand-yellow) !important; border-bottom: 3px solid var(--brand-black) !important; font-size: 14px !important; letter-spacing: .04em !important; }
.enc-pregunta { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 10px 24px; align-items: center; padding: 14px 16px; border-bottom: 1px solid #e6e6e6; }
.enc-pregunta:last-child { border-bottom: 0; }
.enc-pregunta.enc-tipo-5 { grid-template-columns: 1fr; }
.enc-enunciado p { margin: 0; font-size: 14.5px; font-weight: 700; line-height: 1.35; }
.enc-enunciado small { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--brand-text-muted, #555); font-weight: 700; }
/* Escala 1-5 / 1-10: media y reparto en columnas */
.enc-escala { display: flex; align-items: flex-end; gap: 16px; }
.enc-media { flex: 0 0 auto; min-width: 74px; text-align: center; padding: 6px 8px; border: 3px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); box-shadow: 3px 3px 0 0 var(--enc-color); align-self: center; }
.enc-media b { display: block; font-size: 24px; font-weight: 900; line-height: 1.05; color: var(--enc-color); }
.enc-media small { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 800; text-transform: uppercase; color: var(--brand-text-muted, #555); }
.enc-reparto { flex: 1 1 auto; display: flex; align-items: flex-end; gap: 4px; height: 82px; padding-bottom: 2px; border-bottom: 2px solid var(--brand-black); }
.enc-columna { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; min-width: 0; }
.enc-columna .enc-n { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; font-weight: 800; line-height: 1.3; }
.enc-barra-v { display: block; width: 100%; max-width: 34px; min-height: 2px; background: var(--enc-color); border: 1.5px solid var(--brand-black); border-bottom: 0; border-radius: 4px 4px 0 0; }
.enc-columna .enc-valor { position: relative; top: 4px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; line-height: 1; height: 0; overflow: visible; }
.enc-escala { padding-bottom: 14px; }
/* Sí / No */
.enc-sino-barra { display: flex; height: 30px; border: 2px solid var(--brand-black); border-radius: 8px; overflow: hidden; background: #f3f3f3; }
.enc-sino-barra span { display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800; white-space: nowrap; overflow: hidden; min-width: 0; }
.enc-si { background: var(--brand-success, #16A34A); color: #fff; }
.enc-no { background: var(--brand-danger, #DC2626); color: #fff; }
.enc-si + .enc-no { border-left: 2px solid var(--brand-black); }
.enc-sino small { display: block; margin-top: 4px; font-size: 12px; color: var(--brand-text-muted, #555); font-weight: 700; }
/* Opciones */
.enc-opciones { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.enc-opciones li { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(60px, 1fr) 34px 42px; align-items: center; gap: 8px; font-size: 13px; }
.enc-opcion { font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.enc-barra-h { height: 12px; border: 1.5px solid var(--brand-black); border-radius: 6px; background: #f3f3f3; overflow: hidden; }
.enc-barra-h i { display: block; height: 100%; background: var(--brand-cyan, #007b84); }
.enc-opciones b { text-align: right; font-family: 'JetBrains Mono', monospace; }
.enc-opciones small { text-align: right; color: var(--brand-text-muted, #555); font-weight: 700; }
/* Comentarios */
.enc-textos-resumen blockquote { margin: 6px 0; padding: 6px 12px; border-left: 4px solid var(--brand-yellow); background: #fffbe6; font-size: 13.5px; font-style: italic; }
.enc-ver-comentarios { margin-top: 4px; padding: 6px 12px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); font-weight: 800; font-size: 13px; cursor: pointer; box-shadow: 2px 2px 0 0 var(--brand-black); }
.enc-sin { color: var(--brand-text-muted, #555); font-weight: 600; font-size: 13px; margin: 6px 0; }
.enc-buscar { display: flex; align-items: center; gap: 8px; max-width: 460px; margin: 0 0 14px; padding: 0 12px; border: 2px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); }
.enc-buscar input { flex: 1; min-width: 0; height: 40px; border: 0; outline: 0; background: transparent; font-size: 14px; }
body.role-director .enc-comentarios, body.role-administrativo .enc-comentarios { margin-bottom: 16px !important; }
body.role-director .enc-comentarios .adm-panel-title span, body.role-administrativo .enc-comentarios .adm-panel-title span { display: block; margin-top: 2px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; color: var(--brand-text-muted); text-transform: uppercase; }
.enc-comentarios ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.enc-comentarios li { padding: 8px 12px; border-left: 4px solid var(--brand-yellow); background: #fffbe6; border-radius: 0 8px 8px 0; }
.enc-comentarios li p { margin: 0; font-size: 14px; white-space: pre-line; }
.enc-comentarios li small { display: block; margin-top: 3px; font-size: 11.5px; font-weight: 800; color: var(--brand-text-muted, #555); }
/* Respuestas por alumno */
.enc-alumnos { display: grid; gap: 8px; }
.enc-alumno { background: var(--brand-white); border: 2px solid var(--brand-black); border-radius: 10px; }
.enc-alumno > summary { display: flex; align-items: center; gap: 10px; padding: 10px 14px; cursor: pointer; list-style: none; font-weight: 800; }
.enc-alumno > summary::-webkit-details-marker { display: none; }
.enc-alumno > summary small { color: var(--brand-text-muted, #555); font-weight: 700; font-family: 'JetBrains Mono', monospace; font-size: 11px; }
.enc-alumno > summary .adm-caret { margin-left: auto; transition: transform .15s; }
.enc-alumno[open] > summary { border-bottom: 2px solid var(--brand-black); background: #fffbe6; border-radius: 8px 8px 0 0; }
.enc-alumno[open] > summary .adm-caret { transform: rotate(180deg); }
.enc-alumno-cuerpo { padding: 6px 14px 12px; }
.enc-alumno-cuerpo h4 { margin: 12px 0 4px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--brand-text-muted, #555); }
.enc-r { display: flex; justify-content: space-between; gap: 14px; padding: 5px 0; border-bottom: 1px solid #eee; font-size: 13.5px; }
.enc-r-preg { min-width: 0; }
.enc-r-valor { flex: 0 0 auto; font-family: 'JetBrains Mono', monospace; font-weight: 800; padding: 1px 8px; border: 2px solid var(--brand-black); border-radius: 6px; max-width: 45%; text-align: right; }
.enc-r-valor small { color: var(--brand-text-muted, #555); }
.enc-r-texto { flex: 0 1 55%; font-style: italic; text-align: right; }
@media (max-width: 767px) {
    body.role-director .enc-stats, body.role-administrativo .enc-stats { grid-template-columns: repeat(2, 1fr) !important; }
    .enc-pregunta { grid-template-columns: 1fr; padding: 12px; }
    .enc-reparto { height: 66px; }
    .enc-opciones li { grid-template-columns: minmax(0, 1fr) 60px 30px 38px; }
    .enc-r { flex-direction: column; gap: 3px; }
    .enc-r-valor, .enc-r-texto { align-self: flex-start; text-align: left; max-width: 100%; }
    body.role-director .enc-pestanas, body.role-administrativo .enc-pestanas { display: flex !important; width: 100% !important; }
    body.role-director .enc-pestanas > button, body.role-administrativo .enc-pestanas > button { padding: 0 8px !important; font-size: 12px !important; }
}
/* Imprimir el resumen: solo las gráficas, sin menú ni botones */
@media print {
    .enc-no-imprimir, .enc-buscar, [data-enc-panel="comentarios"], [data-enc-panel="alumnos"] { display: none !important; }
    .enc-titulo-impresion { display: block; font-size: 16pt; margin: 0 0 10pt; }
    .enc-categoria { break-inside: auto; box-shadow: none !important; }
    .enc-pregunta { break-inside: avoid; }
    .enc-barra-v, .enc-si, .enc-no, .enc-barra-h i, body.role-director .enc-categoria > .adm-panel-title, body.role-administrativo .enc-categoria > .adm-panel-title { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
.enc-textos-resumen blockquote::before, .enc-textos-resumen blockquote::after { content: none !important; display: none !important; }
body.role-director .enc-textos-resumen blockquote, body.role-administrativo .enc-textos-resumen blockquote { margin: 6px 0 !important; padding: 6px 12px !important; border: 0 !important; border-left: 4px solid var(--brand-yellow) !important; background: #fffbe6 !important; font-size: 13.5px !important; font-style: italic !important; letter-spacing: 0 !important; box-shadow: none !important; }
.enc-filtros-com { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; margin: 0 0 14px; }
.enc-filtros-com .enc-buscar { margin: 0; flex: 1 1 300px; }
.enc-cortos { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-size: 13px; font-weight: 700; cursor: pointer; }
.enc-cortos input { width: 18px; height: 18px; accent-color: var(--brand-black); }
.enc-comentarios ul { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.enc-comentarios li { padding: 6px 10px; }
.enc-comentarios li[hidden] { display: none; }
@media (max-width: 767px) { .enc-comentarios ul { grid-template-columns: 1fr; } }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .headTitle .secinfo.enc-info { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; line-height: 1.5 !important; }
    body.role-director .enc-pestanas, body.role-administrativo .enc-pestanas { flex-wrap: wrap !important; }
    body.role-director .enc-pestanas > button, body.role-administrativo .enc-pestanas > button { flex: 1 1 auto !important; }
}

/* ===== Crear / editar formulario de registro ===== */
.fr-grid { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 20px; align-items: start; }
.fr-main { display: grid; gap: 18px; min-width: 0; }
.fr-aside { position: sticky; top: 16px; }
body.role-director .fr-seccion, body.role-administrativo .fr-seccion { padding: 18px 20px !important; margin: 0 !important; }
body.role-director .fr-seccion > .adm-panel-title, body.role-administrativo .fr-seccion > .adm-panel-title { display: flex !important; align-items: center !important; gap: 10px !important; margin: 0 0 16px !important; font-size: 17px !important; }
.fr-num { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; flex: 0 0 28px; border: 2px solid var(--brand-black); border-radius: 50%; background: var(--brand-yellow); font-size: 13px; font-weight: 900; }
.fr-fila { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; }
body.role-director .fr-form label, body.role-administrativo .fr-form label { font-weight: 800 !important; }
body.role-director .fr-form .form-group > label small, body.role-administrativo .fr-form .form-group > label small { font-weight: 600 !important; color: var(--brand-text-muted) !important; text-transform: none !important; letter-spacing: 0 !important; }
.fr-oblig { color: var(--brand-danger, #DC2626); }
.fr-ayuda { display: block; margin-top: 5px; font-size: 12.5px; color: var(--brand-text-muted, #555); font-weight: 600; }
.fr-ayuda code, .fr-url code { color: var(--brand-black); background: #fff3b0; padding: 1px 5px; border-radius: 4px; }
/* Casillas como tarjetas */
.fr-opciones { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
body.role-director label.fr-check, body.role-administrativo label.fr-check { display: flex !important; align-items: flex-start !important; gap: 10px !important; margin: 0 !important; padding: 10px 12px !important; border: 2px solid var(--brand-black) !important; border-radius: 10px !important; background: var(--brand-white) !important; cursor: pointer !important; font-family: 'Inter', sans-serif !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 14px !important; transition: background .12s, box-shadow .12s; }
body.role-director label.fr-check:has(input:checked), body.role-administrativo label.fr-check:has(input:checked) { background: #fffbe6 !important; box-shadow: 3px 3px 0 0 var(--brand-black) !important; }
.fr-check input { flex: 0 0 auto; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--brand-black); }
.fr-check span { display: flex; flex-direction: column; min-width: 0; }
.fr-check b { font-weight: 800; line-height: 1.25; }
.fr-check small { font-size: 12.5px; color: var(--brand-text-muted, #555); font-weight: 600; }
.fr-opciones-mini { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px; }
body.role-director .fr-opciones-mini label.fr-check, body.role-administrativo .fr-opciones-mini label.fr-check { padding: 7px 10px !important; font-size: 13px !important; }
.fr-asignaturas:empty { display: none; }
.fr-asignaturas { margin-top: 4px; padding-top: 14px; border-top: 2px dashed #d6d6d6; }
.fr-asignaturas-titulo { margin: 0 0 8px; font-weight: 800; font-size: 14px; }
.fr-asignaturas-titulo small { font-weight: 600; color: var(--brand-text-muted, #555); }
.fr-aviso { margin: 0; padding: 10px 12px; border: 2px solid var(--brand-cyan, #007b84); border-radius: 10px; background: #e8f6f7; font-size: 13.5px; font-weight: 600; }
.fr-euros { display: flex; align-items: stretch; }
.fr-euros input { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; }
.fr-euros span { display: flex; align-items: center; padding: 0 14px; border: 3px solid var(--brand-black); border-left: 0; border-radius: 0 10px 10px 0; background: var(--brand-yellow); font-weight: 900; }
/* Opciones avanzadas */
.fr-avanzadas > summary { display: flex; align-items: center; gap: 10px; cursor: pointer; list-style: none; font-size: 17px; font-weight: 900; }
.fr-avanzadas > summary::-webkit-details-marker { display: none; }
.fr-avanzadas > summary small { font-size: 12.5px; font-weight: 600; color: var(--brand-text-muted, #555); }
.fr-avanzadas > summary .adm-caret { margin-left: auto !important; transition: transform .15s; }
.fr-avanzadas[open] > summary { margin-bottom: 16px; padding-bottom: 12px; border-bottom: 2px solid var(--brand-black); }
.fr-avanzadas[open] > summary .adm-caret { transform: rotate(180deg); }
.fr-avanzadas .fr-num i { font-size: 12px; }
/* Campos personalizados (también los que añade el JS) */
body.role-director .campo-personalizado-item, body.role-administrativo .campo-personalizado-item { border: 2px solid var(--brand-black) !important; border-radius: 10px !important; background: #fafafa !important; padding: 12px !important; }
body.role-director .campo-personalizado-item .form-label, body.role-administrativo .campo-personalizado-item .form-label { font-size: 12px !important; }
.fr-agregar { margin-top: 4px; }
/* Guardar */
body.role-director .fr-guardar, body.role-administrativo .fr-guardar { padding: 16px !important; }
body.role-director .fr-guardar .btn, body.role-administrativo .fr-guardar .btn { width: 100% !important; justify-content: center !important; min-height: 46px !important; font-size: 15px !important; }
.fr-guardar .fr-ayuda { margin: 10px 0 0; }
.fr-url { margin: 10px 0 0; font-size: 12.5px; word-break: break-all; }
@media (max-width: 991px) {
    .fr-grid { grid-template-columns: 1fr; }
    .fr-aside { position: sticky; bottom: 0; top: auto; z-index: 5; }
    body.role-director .fr-guardar, body.role-administrativo .fr-guardar { padding: 10px !important; box-shadow: 0 -3px 0 0 var(--brand-black) !important; }
    .fr-guardar .fr-ayuda, .fr-url { display: none; }
}
@media (max-width: 767px) {
    .fr-fila { grid-template-columns: 1fr; }
    body.role-director .fr-seccion, body.role-administrativo .fr-seccion { padding: 14px !important; }
}
body.role-director .campo-personalizado-item .campo-requerido, body.role-administrativo .campo-personalizado-item .campo-requerido { position: static !important; width: 22px !important; height: 22px !important; margin: 8px 0 0 !important; accent-color: var(--brand-black); }
body.role-director .campo-personalizado-item .form-check, body.role-administrativo .campo-personalizado-item .form-check { padding-left: 0 !important; }
/* Altas del día: botón de calendario para saltar a un día */
.adm-altas-fecha { display: inline-flex; margin: 0; }
body.role-director .adm-altas-fecha label.btn, body.role-administrativo .adm-altas-fecha label.btn { position: relative !important; gap: 6px !important; padding: 0 8px 0 10px !important; cursor: pointer !important; text-transform: none !important; letter-spacing: 0 !important; }
.adm-altas-fecha input[type="date"] { border: 0; background: transparent; color: inherit; font: inherit; font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 700; width: 128px; padding: 0; outline: 0; cursor: pointer; }
.adm-altas-fecha input[type="date"]::-webkit-calendar-picker-indicator { display: none; }
@media (max-width: 767px) {
    body.role-director .adm-altas-nav, body.role-administrativo .adm-altas-nav { flex-wrap: wrap !important; }
}
body.role-director .adm-altas-fecha input[type="date"], body.role-administrativo .adm-altas-fecha input[type="date"] { border: 0 !important; box-shadow: none !important; background: transparent !important; height: auto !important; min-height: 0 !important; padding: 0 !important; margin: 0 !important; width: 104px !important; font-size: 13px !important; border-radius: 0 !important; color: var(--brand-black) !important; }
/* Calendario propio de las altas del día */
.adm-altas-fecha { position: relative; }
body.role-director .nb-fecha-texto, body.role-administrativo .nb-fecha-texto { font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 800; white-space: nowrap; text-transform: none; }
.adm-cal-fondo { position: fixed; inset: 0; z-index: 1040; background: transparent; }
.adm-cal { position: absolute; top: calc(100% + 8px); left: 0; z-index: 1050; width: 300px; padding: 12px; background: var(--brand-white); border: 3px solid var(--brand-black); border-radius: 14px; box-shadow: 6px 6px 0 0 var(--brand-black); font-family: 'Inter', sans-serif; }
.adm-cal-cab { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.adm-cal-cab b { font-size: 15px; font-weight: 900; text-transform: capitalize; }
.adm-cal button { font: inherit; color: var(--brand-black); cursor: pointer; }
.adm-cal-mes { width: 34px; height: 34px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-yellow); box-shadow: 2px 2px 0 0 var(--brand-black); }
.adm-cal-mes:disabled { opacity: .3; cursor: default; box-shadow: none; }
.adm-cal-rejilla { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.adm-cal-sem { text-align: center; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; color: var(--brand-text-muted, #555); padding-bottom: 2px; }
.adm-cal-dia { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border: 2px solid transparent; border-radius: 8px; background: transparent; font-weight: 700; font-size: 14px; }
.adm-cal-dia.es-finde { color: #8a8a8a; }
.adm-cal-dia:hover:not(:disabled) { border-color: var(--brand-black); background: #fffbe6; }
.adm-cal-dia.es-hoy { border-color: var(--brand-black); border-style: dashed; }
.adm-cal-dia.es-elegido { background: var(--brand-yellow); border: 2px solid var(--brand-black); border-style: solid; box-shadow: 2px 2px 0 0 var(--brand-black); font-weight: 900; color: var(--brand-black); }
.adm-cal-dia:disabled { color: #cfcfcf; cursor: default; }
.adm-cal-dia:focus-visible, .adm-cal-mes:focus-visible, .adm-cal-atajo:focus-visible { outline: 3px solid var(--brand-cyan, #007b84); outline-offset: 1px; }
.adm-cal-pie { display: flex; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 2px dashed #d6d6d6; }
.adm-cal-atajo { flex: 1; height: 34px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); font-weight: 800 !important; font-size: 13px !important; box-shadow: 2px 2px 0 0 var(--brand-black); }
.adm-cal-atajo:hover { background: #fffbe6; }
@media (max-width: 767px) {
    /* En móvil, panel desde abajo sobre un fondo oscurecido */
    .adm-cal-fondo { background: rgba(0, 0, 0, .45); }
    .adm-cal { position: fixed; top: auto; left: 0; right: 0; bottom: 0; width: auto; border-radius: 18px 18px 0 0; border-bottom: 0; box-shadow: 0 -4px 0 0 var(--brand-black); padding: 16px 16px calc(16px + env(safe-area-inset-bottom)); }
    .adm-cal-dia { font-size: 16px; }
    .adm-cal-atajo { height: 42px; }
    /* Barra de días en una fila: flecha, fecha, flecha, Hoy; estadísticas debajo */
    body.role-director .adm-altas-nav, body.role-administrativo .adm-altas-nav { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; width: 100% !important; }
    body.role-director .adm-altas-nav .adm-altas-flecha, body.role-administrativo .adm-altas-nav .adm-altas-flecha { flex: 0 0 42px !important; min-width: 42px !important; padding: 0 !important; }
    body.role-director .adm-altas-nav .adm-altas-fecha, body.role-administrativo .adm-altas-nav .adm-altas-fecha { position: static; flex: 1 1 0 !important; min-width: 0 !important; }
    body.role-director .adm-altas-nav .adm-altas-fecha label.btn, body.role-administrativo .adm-altas-nav .adm-altas-fecha label.btn { width: 100% !important; justify-content: center !important; padding: 0 6px !important; overflow: hidden !important; }
    body.role-director .adm-altas-nav .adm-altas-hoy, body.role-administrativo .adm-altas-nav .adm-altas-hoy { flex: 0 0 auto !important; padding: 0 12px !important; }
    body.role-director .adm-altas-nav .adm-altas-est, body.role-administrativo .adm-altas-nav .adm-altas-est { flex: 1 1 100% !important; justify-content: center !important; }
    /* Resumen: número arriba, los dos botones debajo a partes iguales */
    body.role-director .adm-altas-resumen, body.role-administrativo .adm-altas-resumen { flex-wrap: wrap !important; }
    body.role-director .adm-altas-resumen .adm-altas-toggle, body.role-administrativo .adm-altas-resumen .adm-altas-toggle,
    body.role-director .adm-altas-resumen .adm-altas-pdf, body.role-administrativo .adm-altas-resumen .adm-altas-pdf { margin: 0 !important; flex: 1 1 0 !important; min-width: 0 !important; justify-content: center !important; padding: 0 8px !important; white-space: nowrap !important; font-size: 12px !important; }
    body.role-director .adm-altas-resumen .adm-altas-toggle, body.role-administrativo .adm-altas-resumen .adm-altas-toggle { margin-left: 0 !important; }
    body.role-director .adm-altas-resumen > span:nth-child(2), body.role-administrativo .adm-altas-resumen > span:nth-child(2) { flex: 1 1 auto; }
    body.role-director .adm-altas-resumen .adm-altas-toggle, body.role-administrativo .adm-altas-resumen .adm-altas-toggle,
    body.role-director .adm-altas-resumen .adm-altas-pdf, body.role-administrativo .adm-altas-resumen .adm-altas-pdf { flex: 1 1 calc(50% - 5px) !important; height: 38px !important; display: inline-flex !important; align-items: center !important; }
    .adm-altas-anio { display: none; }
    body.role-director .adm-altas-resumen .adm-altas-toggle, body.role-administrativo .adm-altas-resumen .adm-altas-toggle,
    body.role-director .adm-altas-resumen .adm-altas-pdf, body.role-administrativo .adm-altas-resumen .adm-altas-pdf { font-size: 11.5px !important; letter-spacing: 0 !important; gap: 5px !important; }
    body.role-director .adm-altas-nav .adm-altas-est, body.role-administrativo .adm-altas-nav .adm-altas-est { margin: 0 !important; }
}
/* Calendario propio reutilizable (nb-calendario.js): botón que sustituye al campo de fecha */
.nb-fecha-ancla { position: relative; }
.nb-fecha-boton { display: flex; align-items: center; gap: 10px; width: 100%; height: 44px; padding: 0 14px; border: 3px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); color: var(--brand-black); font-family: 'JetBrains Mono', monospace; font-size: 14px; font-weight: 800; text-align: left; cursor: pointer; }
.nb-fecha-boton:hover { background: #fffbe6; }
.nb-fecha-boton[aria-expanded="true"] { box-shadow: 3px 3px 0 0 var(--brand-black); background: #fffbe6; }
.nb-fecha-boton .fa-calendar { color: var(--brand-black); }
.nb-fecha-boton .nb-fecha-texto { white-space: nowrap; }
.nb-fecha-boton .adm-altas-anio, .nb-fecha-boton .nb-fecha-anio { display: inline; }
/* Cajas: filtro de fechas */
.caj-fechas-fila { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
body.role-director .caj-fecha, body.role-administrativo .caj-fecha { display: flex !important; flex-direction: column; gap: 4px; margin: 0 !important; flex: 1 1 190px; max-width: 240px; }
.caj-fecha > span { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
body.role-director .caj-buscar, body.role-administrativo .caj-buscar { height: 44px !important; margin: 0 !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; }
.caj-atajos { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.caj-atajos:empty { display: none; }
.caj-atajo { height: 30px; padding: 0 12px; border: 2px solid var(--brand-black); border-radius: 999px; background: var(--brand-white); font-size: 12.5px; font-weight: 800; color: var(--brand-black); cursor: pointer; }
.caj-atajo:hover { background: #fffbe6; }
.caj-atajo.active { background: var(--brand-black); color: var(--brand-white); }
@media (max-width: 767px) {
    body.role-director .caj-fecha, body.role-administrativo .caj-fecha { flex: 1 1 calc(50% - 6px); max-width: none; }
    body.role-director .caj-buscar, body.role-administrativo .caj-buscar { flex: 1 1 100%; justify-content: center !important; }
    .nb-fecha-boton { padding: 0 10px; gap: 6px; font-size: 13px; }
    .nb-fecha-boton .adm-altas-anio, .nb-fecha-boton .nb-fecha-anio { display: none; }
    .caj-atajos { flex-wrap: wrap; }
    .caj-atajo { flex: 1 1 auto; }
}
body.role-director .adm-cal-cab b, body.role-administrativo .adm-cal-cab b { color: var(--brand-black) !important; }
/* Calendario: título pulsable y vistas de meses y años */
.adm-cal .adm-cal-titulo { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border: 2px solid transparent; border-radius: 8px; background: transparent; font-size: 15px; font-weight: 900; text-transform: capitalize; }
.adm-cal .adm-cal-titulo:hover { border-color: var(--brand-black); background: #fffbe6; }
.adm-cal .adm-cal-titulo .fa-caret-down { font-size: 12px; }
.adm-cal-rejilla-grande { grid-template-columns: repeat(3, 1fr); gap: 8px; }
.adm-cal .adm-cal-celda { height: 46px; border: 2px solid transparent; border-radius: 10px; background: transparent; font-weight: 800; font-size: 14px; text-transform: capitalize; }
.adm-cal .adm-cal-celda:hover:not(:disabled) { border-color: var(--brand-black); background: #fffbe6; }
.adm-cal .adm-cal-celda.es-hoy { border-color: var(--brand-black); border-style: dashed; }
.adm-cal .adm-cal-celda.es-elegido { background: var(--brand-yellow); border: 2px solid var(--brand-black); box-shadow: 2px 2px 0 0 var(--brand-black); }
.adm-cal .adm-cal-celda:disabled { color: #cfcfcf; cursor: default; }
@media (max-width: 767px) { .adm-cal .adm-cal-celda { height: 54px; font-size: 16px; } }
/* Móvil: menos margen lateral. Los 30px del contenedor antiguo más los 20px del
   área principal dejaban 50px por lado (un cuarto de la pantalla); ahora 12px. */
@media (max-width: 767px) {
    /* 12px por lado, pero el contenedor recorta lo que sobresale: a la derecha se dejan 4px
       dentro para que la sombra negra de botones y recuadros no quede cortada */
    body:is(.role-director, .role-administrativo) .dash-main { padding: 14px 8px 14px 12px !important; }
    body:is(.role-director, .role-administrativo) .dash-main .wrap-body { padding-left: 0 !important; padding-right: 4px !important; }
    body:is(.role-director, .role-administrativo) .adm-panel { padding: 12px !important; }
    /* El texto bajo el título (fechas, periodo...) baja de línea en vez de cortarse */
    body:is(.role-director, .role-administrativo) .headTitle .secinfo { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; line-height: 1.5 !important; }
}
/* Inicio: icono del momento del día junto al saludo */
body.role-director .adm-saludo, body.role-administrativo .adm-saludo { display: flex !important; align-items: center !important; gap: 12px !important; }
body.role-director .adm-saludo > i, body.role-administrativo .adm-saludo > i { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 40px; height: 40px; border: 2.5px solid var(--brand-black); border-radius: 50%; background: var(--brand-yellow); box-shadow: 2px 2px 0 0 var(--brand-black); font-size: 18px; color: var(--brand-black); }
body.role-director .adm-saludo > i.fa-moon, body.role-administrativo .adm-saludo > i.fa-moon { background: #2b2d42; color: #ffd824; }
/* El formulario que envuelve el buscador del menú (evita el autorrelleno de Chrome) no altera el diseño */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter form { display: contents; }
/* Alumnos en el móvil: el buscador delante y los filtros plegados tras el botón «Filtros» */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) #filter-students .fil-busqueda { order: -3 !important; }
    body:is(.role-director, .role-administrativo) #filter-students .fil-buscar { order: -2 !important; display: flex !important; gap: 8px !important; align-items: stretch !important; margin-top: 10px !important; }
    body:is(.role-director, .role-administrativo) #filter-students .fil-buscar .btn { flex: 1 1 0 !important; min-height: 44px !important; margin: 0 !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; }
    body:is(.role-director, .role-administrativo) #filter-students:not(.fil-abiertos) .fil-filtro { display: none !important; }
    body:is(.role-director, .role-administrativo) #filter-students:not(.fil-abiertos) #more-filters { display: none !important; }
    body:is(.role-director, .role-administrativo) #filter-students .fil-filtro { margin-top: 8px !important; }
    body:is(.role-director, .role-administrativo) #filter-students.fil-abiertos #filToggle .adm-caret { transform: rotate(180deg); }
}
/* Leyenda de colores en el móvil: una sola línea discreta, sin recuadro ni pastillas */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) #leyenda { margin: 8px 0 0 !important; }
    body:is(.role-director, .role-administrativo) #leyenda .legend { gap: 2px 12px !important; padding: 0 2px !important; background: none !important; border: none !important; }
    body:is(.role-director, .role-administrativo) #leyenda .legend::before { display: none !important; }
    body:is(.role-director, .role-administrativo) #leyenda .legend li { padding: 0 !important; background: none !important; border: none !important; font-size: 0.72rem !important; color: var(--brand-text-muted) !important; }
    body:is(.role-director, .role-administrativo) #leyenda .legend li span { width: 10px !important; height: 10px !important; }
}
/* Listados en el móvil (alumnos, asignaturas...): la botonera de la cabecera en rejilla
   de dos columnas iguales; si hay un número impar de botones, el primero (la acción
   principal) ocupa todo el ancho */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 8px !important;
        width: 100% !important;
        float: none !important;
        margin: 10px 0 0 !important;
    }
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar > :first-child:nth-last-child(odd) { grid-column: 1 / -1 !important; }
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar > *,
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar .nb-dd > .btn {
        width: 100% !important;
        min-width: 0 !important;
        margin: 0 !important;
    }
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar .btn {
        min-height: 42px !important;
        justify-content: center !important;
        padding: 0 10px !important;
        font-size: 12.5px !important;
        white-space: nowrap !important;
    }
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar .nb-dd-panel { left: 0 !important; right: auto !important; min-width: 100% !important; }
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar .nb-dd:last-child .nb-dd-panel { left: auto !important; right: 0 !important; }
}
/* Gestión de archivos: el formulario del buscador no altera el diseño (evita el autorrelleno) */
.carpeta-busca-form { display: contents; }
/* Gestión de archivos en el móvil (dirección y administración) */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .headTitle:has(#searchTerm) .filtros { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; width: 100% !important; margin: 0 !important; }
    /* Buscador a todo el ancho con la lupa al lado */
    body:is(.role-director, .role-administrativo) .headTitle:has(#searchTerm) #searchTerm { flex: 1 1 calc(100% - 58px) !important; width: auto !important; min-width: 0 !important; height: 44px !important; margin: 0 !important; }
    body:is(.role-director, .role-administrativo) .headTitle:has(#searchTerm) #searchBtn { flex: 0 0 50px !important; width: 50px !important; height: 44px !important; padding: 0 !important; font-size: 0 !important; justify-content: center !important; margin: 0 !important; }
    body:is(.role-director, .role-administrativo) .headTitle:has(#searchTerm) #searchBtn i { font-size: 16px !important; }
    /* Acciones: repartidas a partes iguales (las de la selección aparecen en la misma rejilla) */
    body:is(.role-director, .role-administrativo) .headTitle:has(#searchTerm) .filtros > .btn:not(#searchBtn) { flex: 1 1 calc(33.33% - 6px) !important; min-width: 0 !important; min-height: 42px !important; margin: 0 !important; padding: 0 6px !important; justify-content: center !important; font-size: 12px !important; white-space: nowrap !important; }
    /* Filtros de colores: una línea que se desliza de lado, más pequeños */
    /* Filtros de colores en rejilla de dos columnas (nada que se deslice de lado) */
    body:is(.role-director, .role-administrativo) #filter-badges { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 6px !important; margin: 10px 0 6px !important; }
    body:is(.role-director, .role-administrativo) #filter-badges .colorCodeFiles { display: flex !important; align-items: center !important; justify-content: center !important; text-align: center !important; font-size: 11px !important; line-height: 1.2 !important; padding: 5px 8px !important; white-space: normal !important; margin: 0 !important; min-height: 34px !important; }
    /* Árbol de carpetas más bajo */
    body:is(.role-director, .role-administrativo) .breadcrumb-nav > span:first-child { display: none !important; }
    /* Volver y orden en una sola fila; el orden solo con icono */
    body:is(.role-director, .role-administrativo) .styleSelector > div { gap: 8px !important; flex-wrap: nowrap !important; }
    body:is(.role-director, .role-administrativo) .styleSelector #back_btn { margin: 0 auto 0 0 !important; padding: 8px 14px !important; }
    body:is(.role-director, .role-administrativo) .styleSelector .carpeta-orden-txt { display: none !important; }
    body:is(.role-director, .role-administrativo) .styleSelector #btn_order_name,
    body:is(.role-director, .role-administrativo) .styleSelector #btn_order_date { width: 44px !important; height: 40px !important; padding: 0 !important; margin: 0 !important; justify-content: center !important; flex: 0 0 auto !important; }
    body:is(.role-director, .role-administrativo) .styleSelector #btn_order_name { margin-left: auto !important; }
}
.carpeta-txt-corto { display: none; }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .carpeta-txt-largo { display: none; }
    body:is(.role-director, .role-administrativo) .carpeta-txt-corto { display: inline; }
}

/* Móvil: ninguna fila de pestañas o botones se desliza de lado; bajan de línea */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .adm-tabs { flex-wrap: wrap !important; overflow: visible !important; padding: 0 !important; gap: 6px !important; }
    body:is(.role-director, .role-administrativo) .adm-tabs > * { flex: 1 1 auto !important; }
    body:is(.role-director, .role-administrativo) #subjectTab { flex-wrap: wrap !important; overflow: visible !important; margin-left: 0 !important; margin-right: 0 !important; padding: 0 0 8px !important; gap: 6px !important; }
    body:is(.role-director, .role-administrativo) #subjectTab > * { flex: 1 1 auto !important; }
    body:is(.role-director, .role-administrativo) #pestanas_salas { flex-wrap: wrap !important; overflow: visible !important; }
    body:is(.role-director, .role-administrativo) #pestanas_salas li { flex: 1 1 auto !important; }
    body:is(.role-director, .role-administrativo) .adm-conteo-dia { flex: 1 1 calc(50% - 8px) !important; justify-content: center !important; }
}
/* ===== Aulas ===== */
.aul-busca { display: flex; gap: 8px; margin: 4px 0 16px; max-width: 520px; }
.aul-busca input { flex: 1; min-width: 0; height: 44px !important; }
.aul-busca .btn { height: 44px !important; margin: 0 !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; }
.aul-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.aul-tarjeta { display: flex; flex-direction: column; gap: 10px; padding: 14px; background: var(--brand-white); border: 3px solid var(--brand-black); border-radius: 12px; box-shadow: 4px 4px 0 0 var(--brand-black); }
.aul-nombre { font-size: 22px; font-weight: 900; color: var(--brand-black) !important; text-decoration: none !important; line-height: 1.1; }
.aul-nombre:hover { text-decoration: underline !important; }
.aul-datos { display: flex; flex-wrap: wrap; gap: 6px; }
.aul-dato { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border: 2px solid var(--brand-black); border-radius: 999px; background: #fffbe6; font-size: 12.5px; font-weight: 600; color: var(--brand-black) !important; text-decoration: none !important; }
.aul-dato b { font-weight: 900; }
.aul-dato i { font-size: 11px; color: var(--brand-text-muted, #555); }
.aul-enlace { background: var(--brand-white); }
.aul-enlace:hover { background: var(--brand-yellow); }
.aul-acciones { display: flex; gap: 8px; margin-top: auto; }
.aul-acciones { justify-content: flex-end; }
@media (max-width: 767px) {
    .aul-busca { max-width: none; }
    .aul-busca .btn { width: 50px; justify-content: center; padding: 0 !important; }
    .aul-busca .aul-txt { display: none; }
    .aul-lista { grid-template-columns: 1fr; gap: 10px; }
    .aul-tarjeta { padding: 12px; }
}
/* ===== Periodos académicos ===== */
.per-ayuda { margin: 0 0 14px; font-size: 13px; font-weight: 600; color: var(--brand-text-muted, #555); }
.per-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.per-tarjeta { display: flex; flex-direction: column; gap: 10px; padding: 14px; background: var(--brand-white); border: 3px solid var(--brand-black); border-radius: 12px; box-shadow: 4px 4px 0 0 var(--brand-black); }
.per-tarjeta.per-predefinido { box-shadow: 4px 4px 0 0 var(--brand-yellow); border-color: var(--brand-black); background: #fffbe6; }
/* Oculto: solo se apagan nombre y fechas; con opacity en la tarjeta entera el menú ··· salía
   transparente y por detrás de la tarjeta siguiente */
.per-tarjeta.per-oculto .per-cab,
.per-tarjeta.per-oculto .per-fechas { opacity: .65; }
.per-tarjeta { position: relative; }
.per-tarjeta:has(.nb-dd.open) { z-index: 30; }
.per-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.per-nombre { flex: 1 1 100%; font-size: 18px; font-weight: 900; color: var(--brand-black) !important; text-decoration: none !important; line-height: 1.15; }
.per-nombre:hover { text-decoration: underline !important; }
.per-chip { display: none; align-items: center; gap: 5px; padding: 2px 9px; border: 2px solid var(--brand-black); border-radius: 999px; font-size: 11.5px; font-weight: 800; }
.per-predefinido .per-chip-pred { display: inline-flex; background: var(--brand-yellow); }
.per-oculto .per-chip-oculto { display: inline-flex; background: #eee; }
.per-fechas { font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 700; }
.per-fechas i { color: var(--brand-text-muted, #555); margin-right: 4px; }
.per-fechas span { color: var(--brand-text-muted, #555); margin: 0 4px; }
.per-switch { display: inline-flex !important; align-items: center; gap: 7px; margin: 0 auto 0 0 !important; font-weight: 700; font-size: 13px; cursor: pointer; }
.per-switch input { width: 20px; height: 20px; accent-color: var(--brand-black); margin: 0; }
.per-acciones { display: flex; justify-content: flex-end; gap: 8px; }
@media (max-width: 767px) {
    .per-lista { grid-template-columns: 1fr; gap: 10px; }
    .per-tarjeta { padding: 12px; }
}
/* Buscador del menú móvil: separado de los bordes del desplegable */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter.adm-nav-filter-movil { margin: 12px 12px 10px !important; }

/* Ficha en móvil: los menús Historial y Más se abren alineados a la derecha del botón,
   no centrados, para que no se salgan de la pantalla */
@media (max-width: 767.98px) {
    body:is(.role-director, .role-administrativo) .adm-ficha-head .nb-dd-panel {
        left: auto !important;
        right: 0 !important;
        transform: none !important;
        max-width: calc(100vw - 24px) !important;
    }
}

/* Móvil: la barra fija de Guardar deja sitio a la burbuja de fichaje (abajo a la derecha)
   y queda por debajo del panel de fichaje cuando está abierto */
@media (max-width: 767.98px) {
    body:is(.role-director, .role-administrativo):has(#fw-burbuja:not([hidden])) .adm-ficha-head .adm-toolbar > .btn-success {
        right: 78px !important;
    }
    body:is(.role-director, .role-administrativo):has(#fw-panel:not([hidden])) .adm-ficha-head .adm-toolbar > .btn-success {
        z-index: 1029 !important;
    }
}

/* Desplegables (select) con la lista de opciones en el estilo de la plataforma.
   Solo en navegadores que lo permiten (Chrome/Edge recientes); el resto sigue con el nativo. */
@supports (appearance: base-select) {
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker),
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker)::picker(select) {
        appearance: base-select !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) {
        display: flex !important;
        align-items: center !important;
        background-image: none !important;
        cursor: pointer !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker)::picker-icon {
        content: '' !important;
        width: 9px !important;
        height: 9px !important;
        margin-left: auto !important;
        border-right: 2.5px solid var(--brand-black) !important;
        border-bottom: 2.5px solid var(--brand-black) !important;
        transform: translateY(-2px) rotate(45deg) !important;
        transition: transform .15s ease !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker):open::picker-icon {
        transform: translateY(2px) rotate(-135deg) !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker)::picker(select) {
        margin-top: 6px !important;
        padding: 6px !important;
        max-height: min(360px, 60vh) !important;
        background: var(--brand-white) !important;
        border: 3px solid var(--brand-black) !important;
        border-radius: var(--apr-radius) !important;
        box-shadow: var(--apr-shadow) !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) option {
        display: flex !important;
        align-items: center !important;
        gap: 8px !important;
        padding: 9px 10px !important;
        border-radius: 8px !important;
        font-size: 14px !important;
        font-weight: 600 !important;
        color: var(--brand-black) !important;
        background: transparent !important;
        cursor: pointer !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) option:hover,
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) option:focus-visible {
        background: #fff6c7 !important;
        outline: none !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) option:checked {
        background: var(--brand-yellow) !important;
        font-weight: 800 !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) option::checkmark {
        content: '✓' !important;
        font-weight: 900 !important;
        order: 1 !important;
        margin-left: auto !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) option:disabled {
        color: #8a8a85 !important;
        cursor: default !important;
    }
    body:is(.role-director, .role-administrativo) select:not([multiple]):not([size]):not(.selectpicker) optgroup {
        font-family: 'JetBrains Mono', monospace !important;
        font-size: 11px !important;
        font-weight: 800 !important;
        letter-spacing: 1px !important;
        text-transform: uppercase !important;
        padding: 6px 4px 2px !important;
    }
}

/* Barra de botones de los listados en móvil: los enlaces (<a class="btn">) centran su texto
   igual que los botones, y el botón oculto de filtros no cuenta para repartir la rejilla */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar > a.btn {
        display: flex !important;
        align-items: center !important;
        gap: 6px !important;
    }
    body:is(.role-director, .role-administrativo) .headTitle:not(.adm-ficha-head) > .adm-toolbar > :first-child:nth-last-child(odd of :not(.showfiltros)) {
        grid-column: 1 / -1 !important;
    }
}

/* Asignaturas en emisión, móvil: todas las filas iguales, nombre arriba y Ver / Finalizar debajo a medias */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .adm-directo-fila {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 10px !important;
    }
    body:is(.role-director, .role-administrativo) .adm-directo-acciones {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
    }
    body:is(.role-director, .role-administrativo) .adm-directo-acciones .btn {
        width: 100% !important;
        justify-content: center !important;
        margin: 0 !important;
    }
}

/* Asignaturas: ventana "Fecha videos" (fecha, seleccionar todas y lista de asignaturas marcables) */
body:is(.role-director, .role-administrativo) .fv-cuerpo { padding: 16px !important; }
body:is(.role-director, .role-administrativo) .fv-cab {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    gap: 10px 16px !important;
    padding-bottom: 12px !important;
    margin-bottom: 12px !important;
    border-bottom: 2px dashed var(--brand-black) !important;
}
body:is(.role-director, .role-administrativo) .fv-fecha { flex: 1 1 220px !important; margin: 0 !important; font-size: 13px !important; }
body:is(.role-director, .role-administrativo) .fv-fecha input { margin-top: 4px !important; }
body:is(.role-director, .role-administrativo) .fv-todas,
body:is(.role-director, .role-administrativo) .fv-asg {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    margin: 0 !important;
    padding: 10px 12px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    background: #fff !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    line-height: 1.25 !important;
    text-align: left !important;
    cursor: pointer !important;
}
body:is(.role-director, .role-administrativo) .fv-todas { min-height: 44px !important; background: #fff6c7 !important; font-weight: 800 !important; }
body:is(.role-director, .role-administrativo) .fv-todas input,
body:is(.role-director, .role-administrativo) .fv-asg input { flex: 0 0 auto !important; width: 18px !important; height: 18px !important; margin: 0 !important; accent-color: var(--brand-black) !important; }
body:is(.role-director, .role-administrativo) .fv-asg span { min-width: 0 !important; overflow-wrap: anywhere !important; }
body:is(.role-director, .role-administrativo) .fv-asg:has(input:checked) { background: var(--brand-yellow) !important; }
body:is(.role-director, .role-administrativo) .fv-lista {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;
    gap: 8px !important;
    max-height: 55vh !important;
    overflow-y: auto !important;
    padding: 2px !important;
}
body:is(.role-director, .role-administrativo) .fv-pie { display: flex !important; gap: 8px !important; justify-content: flex-end !important; }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .fv-lista { grid-template-columns: minmax(0, 1fr) !important; }
    body:is(.role-director, .role-administrativo) .fv-todas { flex: 1 1 100% !important; }
    body:is(.role-director, .role-administrativo) .fv-pie { display: grid !important; grid-template-columns: 1fr 1fr !important; }
    body:is(.role-director, .role-administrativo) .fv-pie .btn { width: 100% !important; margin: 0 !important; justify-content: center !important; }
}

/* Evaluación predefinida (crear / editar): pruebas y habilidades en dos columnas, una fila por elemento */
body:is(.role-director, .role-administrativo) .ev-form { display: grid !important; gap: 18px !important; }
body:is(.role-director, .role-administrativo) .ev-columnas { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 18px !important; align-items: start !important; }
body:is(.role-director, .role-administrativo) .ev-cuenta { margin-left: auto !important; font-family: 'JetBrains Mono', monospace !important; font-size: 12px !important; font-weight: 800 !important; color: var(--brand-text-muted, #555) !important; }
body:is(.role-director, .role-administrativo) .ev-cuenta-aviso { color: #b45309 !important; }
body:is(.role-director, .role-administrativo) .ev-lista { display: grid !important; gap: 8px !important; }
body:is(.role-director, .role-administrativo) .ev-lista:empty { display: none !important; }
body:is(.role-director, .role-administrativo) .ev-fila { display: flex !important; align-items: center !important; gap: 8px !important; }
body:is(.role-director, .role-administrativo) .ev-fila > .form-control { flex: 1 1 auto !important; min-width: 0 !important; margin: 0 !important; }
body:is(.role-director, .role-administrativo) .ev-pct { position: relative !important; flex: 0 0 96px !important; margin: 0 !important; }
body:is(.role-director, .role-administrativo) .ev-pct .form-control { padding-right: 26px !important; margin: 0 !important; }
body:is(.role-director, .role-administrativo) .ev-pct span { position: absolute !important; right: 10px !important; top: 50% !important; transform: translateY(-50%) !important; font-weight: 800 !important; pointer-events: none !important; }
body:is(.role-director, .role-administrativo) .ev-quitar { flex: 0 0 44px !important; width: 44px !important; height: 44px !important; min-height: 44px !important; padding: 0 !important; margin: 0 !important; justify-content: center !important; }
body:is(.role-director, .role-administrativo) .ev-vacio { margin: 0 !important; font-size: 13px !important; font-weight: 600 !important; color: var(--brand-text-muted, #555) !important; }
body:is(.role-director, .role-administrativo) .ev-vacio[hidden] { display: none !important; }
body:is(.role-director, .role-administrativo) .ev-anadir { margin-top: 12px !important; width: 100% !important; justify-content: center !important; border-style: dashed !important; }
@media (max-width: 991px) {
    body:is(.role-director, .role-administrativo) .ev-columnas { grid-template-columns: minmax(0, 1fr) !important; }
}

/* Listado de cursos: tarjetas como Aulas, con color redondo y selección para color en lote */
.cur-busca { display: flex; gap: 8px; margin: 4px 0 12px; max-width: 720px; }
.cur-busca input { flex: 1 1 200px; min-width: 0; height: 44px !important; }
.cur-busca select { flex: 0 1 240px; min-width: 0; }
.cur-busca .btn { height: 44px !important; margin: 0 !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; }
.cur-todos { display: inline-flex; align-items: center; gap: 8px; margin: 0 0 12px; font-size: 13.5px; font-weight: 800; cursor: pointer; }
.cur-todos small { font-weight: 600; color: var(--brand-text-muted, #555); }
.cur-todos input, .cur-cab input[type=checkbox] { width: 18px; height: 18px; margin: 0; accent-color: var(--brand-black); }
.cur-cab { display: flex; align-items: center; gap: 10px; }
.cur-titulo { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cur-titulo .aul-nombre { font-size: 19px; overflow-wrap: anywhere; }
.cur-titulo small { font-size: 12px; font-weight: 600; color: var(--brand-text-muted, #555); }
.cur-color { flex: 0 0 auto; }
body:is(.role-director, .role-administrativo) .cur-color .color-picker-inline,
body:is(.role-director, .role-administrativo) .cur-color .fcolorpicker-curbox {
    width: 32px !important;
    height: 32px !important;
    border-radius: 50% !important;
    box-shadow: none !important;
    cursor: pointer !important;
}
body:is(.role-director, .role-administrativo) .cur-color .color-picker-inline { display: block !important; border: 2px solid var(--brand-black) !important; overflow: hidden !important; }
.cur-periodo { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 700; color: var(--brand-text-muted, #555) !important; text-decoration: none !important; }
.cur-periodo:hover { color: var(--brand-black) !important; text-decoration: underline !important; }
.cur-lote { position: fixed; left: 50%; bottom: 14px; transform: translateX(-50%); max-width: calc(100vw - 100px); z-index: 1035; display: flex; align-items: center; gap: 10px; padding: 8px 10px 8px 16px; background: var(--brand-white); border: 3px solid var(--brand-black); border-radius: 999px; box-shadow: 4px 4px 0 0 var(--brand-black); font-size: 13.5px; font-weight: 700; white-space: nowrap; }
.cur-lote[hidden] { display: none; }
body:is(.role-director, .role-administrativo) .cur-lote .btn { margin: 0 !important; }
@media (max-width: 767px) {
    .cur-busca { flex-wrap: wrap; max-width: none; }
    .cur-busca input { flex: 1 1 100%; }
    .cur-busca select { flex: 1 1 auto; }
    .cur-busca .btn { width: 50px; justify-content: center; padding: 0 !important; }
    .cur-lote { left: 78px; right: 12px; transform: none; justify-content: space-between; bottom: 12px; }
}
body:is(.role-director, .role-administrativo) .cur-periodo { color: var(--brand-text-muted, #555) !important; text-decoration: none !important; text-transform: none !important; font-family: inherit !important; letter-spacing: 0 !important; }
body:is(.role-director, .role-administrativo) .cur-periodo:hover { color: var(--brand-black) !important; text-decoration: underline !important; }
@media (max-width: 767px) {
    .cur-busca select { flex: 1 1 0; }
    .cur-busca .aul-txt { display: none; }
}

/* Ficha de curso (crear / editar) */
body:is(.role-director, .role-administrativo) .cf-form { display: grid !important; gap: 18px !important; }
.cf-rejilla { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; }
.cf-rejilla-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cf-color { display: flex; align-items: center; gap: 12px; min-height: 44px; }
.cf-color .fr-ayuda { margin: 0; }
.cf-fecha { display: flex; gap: 8px; }
.cf-fecha .nb-fecha-boton { flex: 1 1 auto; min-width: 0; }
.cf-import { display: flex; gap: 8px; flex-wrap: wrap; }
.cf-import select { flex: 1 1 220px; min-width: 0; }
body:is(.role-director, .role-administrativo) .cf-import .btn { margin: 0 !important; }
@media (max-width: 991px) {
    .cf-rejilla-3 { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
    .cf-rejilla { grid-template-columns: minmax(0, 1fr); }
    body:is(.role-director, .role-administrativo) .cf-import .btn { width: 100% !important; justify-content: center !important; }
}
/* En los formularios (curso, periodo) la fecha lleva siempre el año, también en el móvil */
body:is(.role-director, .role-administrativo) .cf-fecha :is(.adm-altas-anio, .nb-fecha-anio) { display: inline !important; }

/* Ficha del profesor: los campos van juntos en un solo panel (no una tarjeta por campo)
   y el botón Guardar está en la cabecera */
body:is(.role-director, .role-administrativo) .pf-ficha #profeForm {
    margin: 0 !important;
    padding: 14px 8px 4px !important;
    background: var(--brand-white) !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: var(--apr-radius) !important;
    box-shadow: var(--apr-shadow) !important;
}
body:is(.role-director, .role-administrativo) .pf-ficha #profeForm > div {
    margin: 0 0 12px !important;
    padding: 0 12px !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
body:is(.role-director, .role-administrativo) .pf-ficha #profeForm > div > div:not(.form-group):not(.bootstrap-select),
body:is(.role-director, .role-administrativo) .pf-ficha #periodos_div,
body:is(.role-director, .role-administrativo) .pf-ficha #asignaturas_div,
body:is(.role-director, .role-administrativo) .pf-ficha #funciones_div {
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
body:is(.role-director, .role-administrativo) .pf-ficha #register_submit { display: none !important; }
body:is(.role-director, .role-administrativo) .pf-ficha #proteccionDatos,
body:is(.role-director, .role-administrativo) .pf-ficha #acosoLaboral { font-size: 13px !important; font-weight: 600 !important; }
body:is(.role-director, .role-administrativo) .pf-ficha #teacherTab { margin: 0 0 14px !important; }

/* Cobrar un pago: botón en cada fila y ventana con lo pendiente */
body:is(.role-director, .role-administrativo) .cp-boton { white-space: nowrap !important; margin-right: 4px !important; }
body:is(.role-director, .role-administrativo) input.cp-bloqueado { background: #f3f0e6 !important; cursor: not-allowed !important; }
.cp-resumen { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-bottom: 16px; }
.cp-resumen > div { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 10px; background: #fff; }
.cp-resumen small { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--brand-text-muted, #555); }
.cp-resumen b { font-family: 'JetBrains Mono', monospace; font-size: 17px; }
.cp-resumen .cp-pendiente { background: var(--brand-yellow, #ffd824); }
.cp-campos { display: grid; gap: 6px; }
.cp-campos label { margin: 6px 0 0; font-weight: 800; font-size: 13px; }
.cp-importe { position: relative; }
.cp-importe input { font-size: 22px !important; font-weight: 800 !important; padding-right: 34px !important; height: 52px !important; }
.cp-importe span { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); font-weight: 800; font-size: 18px; pointer-events: none; }
.cp-nota { margin: 10px 0 0; min-height: 18px; font-size: 13px; font-weight: 600; color: var(--brand-text-muted, #555); }
.cp-error { margin: 6px 0 0; font-size: 13px; font-weight: 700; color: #c92a2a; }
.cp-corregir { margin-top: 12px; padding: 0; border: 0; background: none; font-size: 12.5px; font-weight: 600; color: var(--brand-text-muted, #555); text-decoration: underline; cursor: pointer; }
body:is(.role-director, .role-administrativo) .cp-modal .modal-footer { display: flex; gap: 8px; }
@media (max-width: 767px) {
    .cp-resumen b { font-size: 15px; }
    body:is(.role-director, .role-administrativo) .cp-modal .modal-footer { display: grid; grid-template-columns: 1fr 1fr; }
    body:is(.role-director, .role-administrativo) .cp-modal .modal-footer .btn { width: 100% !important; margin: 0 !important; justify-content: center !important; }
}
.cp-importe input { -moz-appearance: textfield; appearance: textfield; }
.cp-importe input::-webkit-inner-spin-button, .cp-importe input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
body:is(.role-director, .role-administrativo) .cp-boton-icono { padding: 0 12px !important; margin: 0 4px 0 0 !important; }
body:is(.role-director, .role-administrativo) .table-pagos-list td:has(> .cp-boton) { white-space: nowrap !important; }
body:is(.role-director, .role-administrativo) .table-pagos-list tr td .btn.cp-boton-icono, body:is(.role-director, .role-administrativo) #table-pagos tr td .btn.cp-boton { background: #16a34a !important; color: #fff !important; }
body:is(.role-director, .role-administrativo) .editForm #table-pagos tr > td:last-child .btn.cp-boton {
    width: auto !important;
    padding: 0 10px !important;
    gap: 5px !important;
    background: #16a34a !important;
    color: #fff !important;
    font-weight: 800 !important;
}
.cp-modos { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; }
.cp-modo { height: 40px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 10px; background: #fff; font-weight: 800; font-size: 13px; cursor: pointer; }
.cp-modo[aria-pressed="true"] { background: var(--brand-black, #1c1c1a); color: #fff; }
.cp-en-correccion .cp-resumen .cp-pendiente { background: #fff; }
body:is(.role-director, .role-administrativo) .cp-en-correccion #cpConfirmar { background: #c92a2a !important; border-color: var(--brand-black) !important; }

/* Ventana de pagos del listado en móvil: Cobrar grande a todo el ancho; Recibo y Borrar debajo, a medias */
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10):has(.cp-boton) {
        display: contents !important;
    }
    body:is(.role-director, .role-administrativo) .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10) .btn.cp-boton {
        grid-column: 1 / -1 !important;
        order: 90 !important;
        height: 48px !important;
        margin-top: 4px !important;
    }
    body:is(.role-director, .role-administrativo) .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10):has(.cp-boton) > .btn:not(.cp-boton) { order: 91 !important; grid-column: span 3 !important; width: 100% !important; }
    body:is(.role-director, .role-administrativo) .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10):has(.cp-boton) + td { order: 92 !important; }
    body:is(.role-director, .role-administrativo) .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10):has(.cp-boton) + td {
        border-top: 0 !important;
        padding-top: 0 !important;
    }
    body:is(.role-director, .role-administrativo) .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10) .btn.cp-boton::after {
        content: 'Cobrar' !important;
    }
    body:is(.role-director, .role-administrativo) .table-pagos-list tr[class^="filaPago"] > td:nth-of-type(10) .btn.cp-boton {
        margin: 0 !important;
    }
}

/* Ficha del alumno, Académico: asignaturas elegidas visibles y horario en tarjetas por día */
.acd-asignaturas { margin-top: 10px; }
.acd-titulo { margin: 0 0 6px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--brand-text-muted, #555); }
.acd-asg { display: flex; flex-direction: column; gap: 2px; padding: 8px 12px; margin-bottom: 6px; border: 2px solid var(--brand-black, #1c1c1a); border-left-width: 6px; border-radius: 10px; background: #fff; }
.acd-asg b { font-size: 14px; font-weight: 800; line-height: 1.25; }
.acd-asg small { font-size: 12.5px; font-weight: 600; color: var(--brand-text-muted, #555); }
.acd-vacio { margin: 6px 0 0; font-size: 13px; font-weight: 600; color: var(--brand-text-muted, #555); }
.acd-cursos { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 10px; }
.acd-cursos span { padding: 3px 10px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 999px; background: #fffbe6; font-size: 12px; font-weight: 700; }
.acd-semana { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.acd-dia { border: 2px solid var(--brand-black, #1c1c1a); border-radius: 12px; background: #fff; overflow: hidden; box-shadow: 3px 3px 0 0 var(--brand-black, #1c1c1a); }
.acd-dia-nombre { padding: 7px 12px; background: var(--brand-yellow, #ffd824); border-bottom: 2px solid var(--brand-black, #1c1c1a); font-weight: 900; font-size: 14px; }
.acd-clase { display: flex; flex-direction: column; gap: 1px; padding: 8px 12px; border-bottom: 1px dashed #d6d2c4; }
.acd-clase:last-child { border-bottom: 0; }
.acd-hora { font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 800; }
.acd-materia { font-size: 13.5px; font-weight: 700; line-height: 1.3; }
.acd-curso { font-size: 12px; color: var(--brand-text-muted, #555); }
.acd-sin-hora .acd-hora { color: #b45309; }
@media (max-width: 767px) { .acd-semana { grid-template-columns: minmax(0, 1fr); } }
.acd-asignaturas { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 6px; }
.acd-asignaturas .acd-titulo, .acd-asignaturas .acd-vacio { grid-column: 1 / -1; }
.acd-asignaturas .acd-asg { margin: 0; }
/* Desplegable de asignaturas de la ficha: las ya elegidas fijas arriba */
.acd-elegidas { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; max-height: 104px; overflow-y: auto; margin: 0 8px 6px; padding: 6px 8px; border: 2px dashed var(--brand-black, #1c1c1a); border-radius: 10px; background: #fffbe6; }
.acd-elegidas-titulo { width: 100%; font-family: 'JetBrains Mono', monospace; font-size: 10.5px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--brand-text-muted, #555); }
.acd-elegidas-vacio { font-size: 12.5px; color: var(--brand-text-muted, #555); }
.acd-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 999px; background: var(--brand-yellow, #ffd824); font-size: 12px; font-weight: 700; line-height: 1.2; cursor: pointer; }
.acd-chip span { font-size: 11px; }
.acd-chip:hover { background: #ffe0e0; }
.acd-chip b { font-weight: 800; }
.acd-chip small { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; font-weight: 700; opacity: .8; }
.acd-elegidas { max-height: 132px; }
/* Periodos: Editar y ⋯ siempre abajo y a la misma altura en todas las tarjetas */
.per-acciones { margin-top: auto; padding-top: 10px; border-top: 2px dashed #e0e0e0; }

/* Datos y conteos: dos columnas iguales y todos los campos con el mismo alto, letra y flecha */
body:is(.role-director, .role-administrativo) .adm-datos-form { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
body:is(.role-director, .role-administrativo) .adm-datos-form .form-control,
body:is(.role-director, .role-administrativo) .adm-datos-form .bootstrap-select > .dropdown-toggle {
    height: 44px !important;
    min-height: 44px !important;
    font-size: 14px !important;
    font-weight: 600 !important;
}
/* Desplegables con buscador (bootstrap-select): misma flecha que los demás desplegables */
body:is(.role-director, .role-administrativo) .bootstrap-select > .dropdown-toggle { position: relative !important; padding-right: 34px !important; }
body:is(.role-director, .role-administrativo) .bootstrap-select > .dropdown-toggle::after {
    content: '' !important;
    position: absolute !important;
    right: 14px !important;
    top: 50% !important;
    width: 9px !important;
    height: 9px !important;
    margin: -7px 0 0 0 !important;
    border: 0 !important;
    border-right: 2.5px solid var(--brand-black) !important;
    border-bottom: 2.5px solid var(--brand-black) !important;
    transform: rotate(45deg) !important;
    vertical-align: 0 !important;
}
body:is(.role-director, .role-administrativo) .bootstrap-select.show > .dropdown-toggle::after { margin-top: -2px !important; transform: rotate(-135deg) !important; }
body:is(.role-director, .role-administrativo) .bootstrap-select .filter-option-inner-inner { font-size: 14px !important; }
body:is(.role-director, .role-administrativo) .bootstrap-select > .dropdown-toggle .filter-option-inner { padding-right: 26px !important; }
body:is(.role-director, .role-administrativo) .bootstrap-select > .dropdown-toggle .filter-option-inner-inner { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
/* Filtros del listado de alumnos: Estado y Modalidad son columnas estrechas; flecha y márgenes más pequeños */
@supports (appearance: base-select) {
    body:is(.role-director, .role-administrativo) #filter-estado,
    body:is(.role-director, .role-administrativo) #filter-modalidad { padding-left: 8px !important; padding-right: 8px !important; gap: 4px !important; }
    body:is(.role-director, .role-administrativo) #filter-estado::picker-icon,
    body:is(.role-director, .role-administrativo) #filter-modalidad::picker-icon { width: 6px !important; height: 6px !important; border-width: 0 2px 2px 0 !important; }
}
/* Datos y conteos: periodo, curso y asignatura a todo el ancho para que su texto se lea entero */
body:is(.role-director, .role-administrativo) .adm-datos-form .adm-filtro:has(.bootstrap-select) { grid-column: 1 / -1 !important; }
body:is(.role-director, .role-administrativo) .adm-datos-form .adm-filtro-ancho { grid-column: 1 / -1 !important; }

/* Estadísticas de matrícula: la tarjeta Por modalidad no se sale de su caja */
body:is(.role-director, .role-administrativo) .adm-stat { min-width: 0 !important; overflow-wrap: anywhere !important; }
body:is(.role-director, .role-administrativo) .adm-est-md {
    grid-template-columns: minmax(0, 1fr) auto !important;
    gap: 0 8px !important;
    padding: 4px 0 !important;
    border-top: 1px dashed #e0dccb !important;
    text-align: left !important;
}
body:is(.role-director, .role-administrativo) .adm-est-md em { min-width: 0 !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
body:is(.role-director, .role-administrativo) .adm-est-md .adm-est-var { grid-column: 1 / -1 !important; justify-self: start !important; margin: 2px 0 0 !important; white-space: nowrap !important; font-size: 10.5px !important; }
body:is(.role-director, .role-administrativo) .adm-est-md { width: 100% !important; box-sizing: border-box !important; padding: 4px 6px !important; }

/* Calendario de la plataforma en cualquier campo de fecha (fechas-auto.js) */
.nb-fecha-auto { display: block; position: relative; width: 100%; min-width: 0; }
body:is(.role-director, .role-administrativo) .nb-fecha-auto :is(.adm-altas-anio, .nb-fecha-anio) { display: inline !important; }
.nb-fecha-boton.nb-fecha-vacia .nb-fecha-texto { color: var(--brand-text-muted, #666); font-weight: 600; }
.adm-cal-vaciar { color: #c92a2a !important; }

/* Campo de fecha que se puede escribir (dd/mm/aaaa) con el botón del calendario al lado */
.nb-fecha-campo { display: flex; align-items: stretch; width: 100%; min-width: 0; height: 44px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 8px; background: #fff; overflow: hidden; }
.nb-fecha-campo:focus-within { box-shadow: 3px 3px 0 0 var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .nb-fecha-escribir { flex: 1 1 auto; min-width: 0; width: auto !important; height: 100% !important; min-height: 0 !important; margin: 0 !important; padding: 0 10px !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important; font-family: 'JetBrains Mono', monospace !important; font-size: 14px !important; font-weight: 700 !important; outline: none !important; }
.nb-fecha-escribir::placeholder { color: #9a988f; font-weight: 600; }
.nb-fecha-escribir.nb-fecha-mal { color: #c92a2a !important; background: #fff1f1 !important; }
.nb-fecha-icono { flex: 0 0 42px; border: 0; border-left: 2px solid var(--brand-black, #1c1c1a); background: var(--brand-yellow, #ffd824); color: var(--brand-black, #1c1c1a); cursor: pointer; font-size: 15px; }
.nb-fecha-icono:hover, .nb-fecha-icono[aria-expanded="true"] { background: #ffe766; }
.nb-fecha-campo .nb-fecha-mal + .nb-fecha-icono { border-left-color: #c92a2a; }
/* Que ningún estilo general de los formularios le ponga borde o ancho al cuadro de texto de la fecha */
body:is(.role-director, .role-administrativo) .nb-fecha-campo > input.nb-fecha-escribir.nb-fecha-escribir {
    border: 0 !important; box-shadow: none !important; width: auto !important; max-width: none !important; height: 100% !important;
    font-family: Inter, system-ui, sans-serif !important; font-size: 14px !important; letter-spacing: 0 !important;
    padding: 0 6px 0 10px !important; min-width: 0 !important; text-overflow: clip !important;
}
/* En huecos estrechos (columnas del alta de alumno…) se compacta para que la fecha se lea entera */
.nb-fecha-auto, .cf-fecha { container-type: inline-size; }
/* Con container-type el campo no tiene ancho propio: sin mínimo se aplasta en filtros que se ajustan al contenido (Fichajes) */
.nb-fecha-auto { min-width: 150px; }
/* En columnas de Bootstrap el ancho ya viene dado: ahí no hace falta (y en columnas estrechas desbordaría) */
[class*="col-"] > .nb-fecha-auto, [class*="col-"] > label > .nb-fecha-auto { min-width: 0; }
@container (max-width: 170px) {
    body:is(.role-director, .role-administrativo) .nb-fecha-campo > input.nb-fecha-escribir.nb-fecha-escribir { padding: 0 3px 0 5px !important; font-size: 12px !important; letter-spacing: -.3px !important; }
    .nb-fecha-icono { flex-basis: 24px; font-size: 12px; }
}

/* Código postal: el campo y la lupa juntos, a la misma altura y dentro de su columna */
.cp-grupo { display: flex; align-items: stretch; gap: 8px; width: 100%; }
body:is(.role-director, .role-administrativo) .cp-grupo > .form-control { flex: 1 1 auto !important; min-width: 0 !important; width: auto !important; margin: 0 !important; }
body:is(.role-director, .role-administrativo) .cp-grupo > .cp-buscar { flex: 0 0 48px !important; width: 48px !important; min-width: 48px !important; height: auto !important; min-height: 44px !important; padding: 0 !important; margin: 0 !important; border-radius: 10px !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; }
form.caj-busca { display: contents; }

/* Filtros del listado de alumnos (escritorio): cada filtro con el ancho que necesita
   y saltando de línea, en vez de las columnas fijas de Bootstrap que lo apretaban */
body:is(.role-director, .role-administrativo) .buscador .nb-fecha-icono,
body:is(.role-director, .role-administrativo) #filter-students .btn { position: static !important; }
@media (min-width: 768px) {
    body:is(.role-director, .role-administrativo) #filter-students > .row,
    body:is(.role-director, .role-administrativo) #filter-students > #more-filters { margin: 10px 0 0 !important; gap: 12px !important; align-items: flex-end !important; flex-wrap: wrap !important; }
    body:is(.role-director, .role-administrativo) #filter-students > #more-filters[style*="none"] { display: none !important; }
    body:is(.role-director, .role-administrativo) #filter-students > .row > [class*="col-"],
    body:is(.role-director, .role-administrativo) #filter-students > #more-filters > [class*="col-"] { flex: 1 1 140px !important; max-width: none !important; width: auto !important; min-width: 0 !important; padding: 0 !important; margin: 0 !important; }
    body:is(.role-director, .role-administrativo) #filter-students label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; margin-bottom: 6px !important; }
    /* Estado y Modalidad: cortos */
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-filtro:nth-child(-n+2) { flex: 0 1 105px !important; }
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-busqueda { flex: 2 1 190px !important; }
    /* Botones de más filtros y buscar: a su tamaño, al final de la fila */
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-mas,
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-buscar { flex: 0 0 auto !important; }
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-buscar .btn,
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-mas .btn { height: 44px !important; min-height: 44px !important; margin: 0 !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; white-space: nowrap !important; }
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-mas .btn { width: 44px !important; padding: 0 !important; }
    body:is(.role-director, .role-administrativo) #filter-students > .row > .fil-mas .btn[style*="none"],
    body:is(.role-director, .role-administrativo) #filter-students #filToggle { display: none !important; }
    /* Más filtros: rejilla de columnas iguales, para que la última fila no se estire */
    body:is(.role-director, .role-administrativo) #filter-students > #more-filters:not([style*="none"]) { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(175px, 1fr)) !important; }
    body:is(.role-director, .role-administrativo) #more-filters > div:has(#proteccion-datos) { grid-column: span 2 !important; }
}
/* Protección de datos: casilla y texto en una línea, del alto de los demás campos */
body:is(.role-director, .role-administrativo) #more-filters > div:has(#proteccion-datos) { align-self: end !important; margin: 8px 10px 0 !important; max-width: calc(100% - 20px) !important; display: flex !important; flex-direction: row-reverse !important; align-items: center !important; justify-content: flex-end !important; gap: 8px !important; height: 44px !important; padding: 0 12px !important; border: 2px solid var(--brand-black, #1c1c1a) !important; border-radius: 8px !important; background: #fff !important; }
body:is(.role-director, .role-administrativo) #more-filters label[for="proteccion-datos"] { width: auto !important; margin: 0 !important; cursor: pointer !important; }
body:is(.role-director, .role-administrativo) #proteccion-datos { width: 18px !important; height: 18px !important; margin: 0 !important; accent-color: var(--brand-black, #1c1c1a); }

/* Borrar un pago con algo cobrado: dejar el dinero en caja o devolverlo hoy */
body:is(.role-director, .role-administrativo) .cpb-aviso { margin: 0 0 12px; font-size: 15px; }
body:is(.role-director, .role-administrativo) .cpb-opcion { display: flex !important; gap: 10px; align-items: flex-start; width: 100% !important; margin: 0 0 8px !important; padding: 10px 12px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 8px; background: #fff; cursor: pointer; font-weight: 400 !important; }
body:is(.role-director, .role-administrativo) .cpb-opcion:has(input:checked) { background: #fff6c2; box-shadow: 3px 3px 0 var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .cpb-opcion input { width: 18px !important; height: 18px !important; margin: 2px 0 0 !important; flex: 0 0 auto; accent-color: var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .cpb-opcion span { display: flex; flex-direction: column; gap: 2px; }
body:is(.role-director, .role-administrativo) .cpb-opcion small { font-size: 13px; color: #444; }
body:is(.role-director, .role-administrativo) #cpbCampos { margin-top: 10px; }

/* Cajas: devoluciones de mensualidades destacadas y desglose Cobrado / Devoluciones antes de los totales */
body:is(.role-director, .role-administrativo) tr.caj-devolucion > td { background: #fde7e4 !important; }
body:is(.role-director, .role-administrativo) .caj-dev-etiqueta { display: inline-block; margin-right: 4px; padding: 1px 8px; border: 2px solid #b3261e; border-radius: 999px; background: #fff; color: #b3261e; font-size: 11px; font-weight: 800; letter-spacing: .4px; text-transform: uppercase; vertical-align: 1px; }
body:is(.role-director, .role-administrativo) tr.caj-desglose-dev > td { color: #b3261e !important; font-weight: 700; }
body:is(.role-director, .role-administrativo) tr.caj-desglose-dev small { font-weight: 400; color: #555; }

/* Caja por días (cajas/_libro.html.twig): resumen arriba, movimientos con un solo importe y saldos aparte */
body:is(.role-director, .role-administrativo) .caj-libro { margin-top: 8px; }
body:is(.role-director, .role-administrativo) .caj-dia-titulo { font-size: 20px !important; font-weight: 900 !important; margin: 14px 0 12px !important; }
body:is(.role-director, .role-administrativo) .caj-resumen { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; margin-bottom: 18px; }
body:is(.role-director, .role-administrativo) .caj-tarjeta { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 12px; background: #fff; box-shadow: 4px 4px 0 var(--brand-black, #1c1c1a); min-width: 0; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-titulo { font-size: 12px; font-weight: 800; letter-spacing: .5px; text-transform: uppercase; color: #555; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-cifra { font-size: 26px; font-weight: 900; line-height: 1.1; font-variant-numeric: tabular-nums; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-cifra-peq { font-size: 18px; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-detalle { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 13px; color: #444; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-metodos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-metodos > span { display: flex; flex-direction: column; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-metodos small { font-size: 11px; color: #666; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-metodos b { font-size: 18px; font-variant-numeric: tabular-nums; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-dev { background: #fde7e4; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-dev .caj-tarjeta-cifra { color: #b3261e; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-caja { background: var(--brand-yellow, #ffd824); }
body:is(.role-director, .role-administrativo) .caj-tarjeta-caja .caj-tarjeta-titulo { color: var(--brand-black, #1c1c1a); }

body:is(.role-director, .role-administrativo) .caj-movs { border: 2px solid var(--brand-black, #1c1c1a); border-radius: 12px; overflow: hidden; background: #fff; margin-bottom: 18px; }
body:is(.role-director, .role-administrativo) .caj-movs-cab,
body:is(.role-director, .role-administrativo) .caj-mov { display: grid; grid-template-columns: 56px minmax(150px, 1.2fr) minmax(160px, 2fr) 96px 110px 110px 44px; gap: 10px; align-items: center; padding: 10px 14px; text-align: left; }
body:is(.role-director, .role-administrativo) .caj-movs-cab { background: var(--brand-yellow, #ffd824); border-bottom: 2px solid var(--brand-black, #1c1c1a); font-size: 12px; font-weight: 800; letter-spacing: .4px; text-transform: uppercase; }
body:is(.role-director, .role-administrativo) .caj-mov + .caj-mov { border-top: 1px solid #e3e0d0; }
body:is(.role-director, .role-administrativo) .caj-mov:hover { background: #fffbe6; }
body:is(.role-director, .role-administrativo) .caj-num { text-align: right; font-variant-numeric: tabular-nums; }
body:is(.role-director, .role-administrativo) .caj-hora { font-family: var(--font-mono, monospace); font-size: 13px; color: #666; }
body:is(.role-director, .role-administrativo) .caj-quien { font-weight: 700; min-width: 0; justify-self: start; text-align: left; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-metodos-2 { grid-template-columns: repeat(2, 1fr); }
body:is(.role-director, .role-administrativo) .caj-quien a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
body:is(.role-director, .role-administrativo) .caj-gestion { font-weight: 600; color: #555; }
body:is(.role-director, .role-administrativo) .caj-concepto { min-width: 0; font-size: 14px; color: #333; overflow-wrap: anywhere; }
body:is(.role-director, .role-administrativo) .caj-pill { display: inline-block; padding: 2px 8px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 999px; font-size: 11px; font-weight: 800; letter-spacing: .3px; text-transform: uppercase; background: #fff; }
body:is(.role-director, .role-administrativo) .caj-pill-efectivo { background: #d9f2d0; }
body:is(.role-director, .role-administrativo) .caj-pill-tarjeta { background: #dce8ff; }
body:is(.role-director, .role-administrativo) .caj-pill-banco { background: #efe3ff; }
body:is(.role-director, .role-administrativo) .caj-importe { font-size: 17px; font-weight: 900; color: #1f7a2e; }
body:is(.role-director, .role-administrativo) .caj-negativo .caj-importe { color: #b3261e; }
body:is(.role-director, .role-administrativo) .caj-saldo { color: #555; font-size: 14px; }
body:is(.role-director, .role-administrativo) .caj-mov.caj-devolucion { background: #fde7e4; }
body:is(.role-director, .role-administrativo) .caj-quitar { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 8px; background: #fff; color: #b3261e; cursor: pointer; }
body:is(.role-director, .role-administrativo) .caj-quitar:hover { background: #fde7e4; }
body:is(.role-director, .role-administrativo) .caj-vacio { padding: 16px; margin: 0; color: #555; }

body:is(.role-director, .role-administrativo) .caj-saldos { max-width: 640px; margin-bottom: 24px; }
body:is(.role-director, .role-administrativo) .caj-saldos h4 { font-size: 16px !important; font-weight: 900 !important; margin: 0 0 8px !important; }
body:is(.role-director, .role-administrativo) .caj-saldos table { width: 100%; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 12px; border-collapse: separate; border-spacing: 0; overflow: hidden; background: #fff; }
body:is(.role-director, .role-administrativo) .caj-saldos th,
body:is(.role-director, .role-administrativo) .caj-saldos td { padding: 8px 14px; text-align: left; border: 0 !important; }
body:is(.role-director, .role-administrativo) .caj-saldos th { background: #f1eee0; font-size: 12px; text-transform: uppercase; letter-spacing: .4px; }
body:is(.role-director, .role-administrativo) .caj-saldos tbody tr + tr td { border-top: 1px solid #e3e0d0 !important; }
body:is(.role-director, .role-administrativo) .caj-saldos tfoot td { border-top: 2px solid var(--brand-black, #1c1c1a) !important; font-weight: 900; }
body:is(.role-director, .role-administrativo) .caj-saldos .caj-num { text-align: right; }

@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .caj-resumen { grid-template-columns: 1fr 1fr; }
    body:is(.role-director, .role-administrativo) .caj-tarjeta-caja { grid-column: 1 / -1; order: -1; }
    body:is(.role-director, .role-administrativo) .caj-movs-cab { display: none; }
    body:is(.role-director, .role-administrativo) .caj-mov { grid-template-columns: auto auto 1fr auto; grid-template-areas: "quien quien quien importe" "concepto concepto concepto concepto" "hora metodo saldo accion"; gap: 6px 10px; padding: 12px; }
    body:is(.role-director, .role-administrativo) .caj-hora { grid-area: hora; }
    body:is(.role-director, .role-administrativo) .caj-quien { grid-area: quien; }
    body:is(.role-director, .role-administrativo) .caj-importe { grid-area: importe; }
    body:is(.role-director, .role-administrativo) .caj-concepto { grid-area: concepto; }
    body:is(.role-director, .role-administrativo) .caj-concepto:empty { display: none; }
    body:is(.role-director, .role-administrativo) .caj-metodo { grid-area: metodo; }
    body:is(.role-director, .role-administrativo) .caj-saldo { grid-area: saldo; font-size: 12px; }
    body:is(.role-director, .role-administrativo) .caj-saldo::before { content: "Saldo efectivo "; }
    body:is(.role-director, .role-administrativo) .caj-accion { grid-area: accion; }
}

/* Cajas: cuadre del efectivo en la tarjeta amarilla y buscador en todas las fechas */
body:is(.role-director, .role-administrativo) .caj-cuadre { margin: 4px 0 0; padding-top: 8px; border-top: 2px dashed rgba(0,0,0,.35); font-size: 13px; }
body:is(.role-director, .role-administrativo) .caj-cuadre > div { display: flex; justify-content: space-between; gap: 10px; line-height: 1.6; }
body:is(.role-director, .role-administrativo) .caj-cuadre dt { font-weight: 600; }
body:is(.role-director, .role-administrativo) .caj-cuadre dd { margin: 0; font-weight: 800; font-variant-numeric: tabular-nums; }
body:is(.role-director, .role-administrativo) .caj-cuadre-neg dd { color: #b3261e; }
body:is(.role-director, .role-administrativo) .caj-cuadre-total { margin-top: 2px; padding-top: 2px; border-top: 2px solid var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .caj-tarjeta-caja { grid-row: span 2; }
body:is(.role-director, .role-administrativo) form.caj-busca { display: flex; gap: 8px; align-items: stretch; }
body:is(.role-director, .role-administrativo) form.caj-busca .form-control { flex: 1 1 auto; min-width: 0; }
body:is(.role-director, .role-administrativo) form.caj-busca .caj-busca-boton { flex: 0 0 48px; width: 48px; min-height: 44px; padding: 0 !important; margin: 0 !important; display: inline-flex !important; align-items: center; justify-content: center; position: static !important; }
body:is(.role-director, .role-administrativo) .caj-busqueda-cab { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; font-weight: 700; }
body:is(.role-director, .role-administrativo) .caj-busqueda-aviso { margin: 0 0 10px; font-size: 13px; color: #555; }
body:is(.role-director, .role-administrativo) .caj-movs-busqueda .caj-mov { grid-template-columns: 130px minmax(140px, 1.2fr) minmax(160px, 2fr) 96px 110px; }
body:is(.role-director, .role-administrativo) .caj-mov-busqueda .caj-hora b { color: var(--brand-black, #1c1c1a); }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .caj-tarjeta-caja { grid-row: auto; }
    body:is(.role-director, .role-administrativo) .caj-movs-busqueda .caj-mov { grid-template-columns: auto auto 1fr; grid-template-areas: "quien quien importe" "concepto concepto concepto" "hora metodo metodo"; }
}

/* Cajas: barra de movimientos con el filtro por método de pago (mismo estilo que los atajos Hoy / Ayer) */
body:is(.role-director, .role-administrativo) .caj-movs-barra { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; padding: 12px 14px; border-bottom: 2px solid var(--brand-black, #1c1c1a); background: #fff; }
body:is(.role-director, .role-administrativo) .caj-movs-titulo { margin: 0 !important; font-size: 16px !important; font-weight: 900 !important; display: flex; align-items: center; gap: 8px; border: 0 !important; padding: 0 !important; }
body:is(.role-director, .role-administrativo) .caj-movs-titulo::after { display: none !important; }
body:is(.role-director, .role-administrativo) .caj-movs-num { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 24px; padding: 0 6px; border-radius: 999px; background: var(--brand-black, #1c1c1a); color: #fff; font-size: 12px; }
body:is(.role-director, .role-administrativo) .caj-metodos { display: flex; flex-wrap: wrap; gap: 6px; }
body:is(.role-director, .role-administrativo) .caj-metodo-btn { padding: 5px 14px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 999px; background: #fff; font-size: 13px; font-weight: 700; line-height: 1.3; cursor: pointer; color: var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .caj-metodo-btn:hover { background: #fff6c2; }
body:is(.role-director, .role-administrativo) .caj-metodo-btn[aria-pressed="true"] { background: var(--brand-black, #1c1c1a); color: #fff; }
body:is(.role-director, .role-administrativo) .caj-metodo-btn.caj-metodo-efectivo[aria-pressed="true"] { background: #d9f2d0; color: var(--brand-black, #1c1c1a); box-shadow: 2px 2px 0 var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .caj-metodo-btn.caj-metodo-tarjeta[aria-pressed="true"] { background: #dce8ff; color: var(--brand-black, #1c1c1a); box-shadow: 2px 2px 0 var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .caj-metodo-btn.caj-metodo-banco[aria-pressed="true"] { background: #efe3ff; color: var(--brand-black, #1c1c1a); box-shadow: 2px 2px 0 var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .caj-filtro-aviso { margin: 0; padding: 8px 14px; background: #fffbe6; border-bottom: 1px solid #e3e0d0; font-size: 13px; color: #555; }
body:is(.role-director, .role-administrativo) .caj-busqueda-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
body:is(.role-director, .role-administrativo) .caj-mov[hidden],
body:is(.role-director, .role-administrativo) .caj-vacio[hidden],
body:is(.role-director, .role-administrativo) .caj-filtro-aviso[hidden] { display: none !important; }
/* La tarjeta de efectivo en caja es más alta: el resto no se estira */
body:is(.role-director, .role-administrativo) .caj-resumen { align-items: start; }
body:is(.role-director, .role-administrativo) .caj-tarjeta-caja { grid-row: auto; }
body:is(.role-director, .role-administrativo) #pestanas_salas[hidden] { display: none !important; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-movs h4.caj-movs-titulo { border-bottom: 0 !important; padding-bottom: 0 !important; }

/* Cajas: tarjeta de saldos de cuentas; al comparar, dos columnas más (fecha elegida y diferencia) */
/* A la derecha, bajo la columna de saldos de los movimientos */
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos { max-width: 760px; margin: 0 0 24px auto; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 12px; background: #fff; box-shadow: 4px 4px 0 var(--brand-black, #1c1c1a); overflow: visible; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos.caj-comparando { max-width: none; }
body:is(.role-director, .role-administrativo) .caj-saldos-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; padding: 12px 14px; border-bottom: 2px solid var(--brand-black, #1c1c1a); }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos .caj-saldos-barra h4 { margin: 0 auto 0 0 !important; padding: 0 !important; border: 0 !important; font-size: 16px !important; font-weight: 900 !important; }
body:is(.role-director, .role-administrativo) .caj-comparar-abrir { display: inline-flex; align-items: center; gap: 6px; padding: 5px 14px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 999px; background: #fff; font-size: 13px; font-weight: 700; cursor: pointer; }
body:is(.role-director, .role-administrativo) .caj-comparar-abrir:hover { background: #fff6c2; }
body:is(.role-director, .role-administrativo) .caj-comparar-abrir[hidden],
body:is(.role-director, .role-administrativo) .caj-comparar-controles[hidden],
body:is(.role-director, .role-administrativo) .caj-comparar-nota[hidden] { display: none !important; }
body:is(.role-director, .role-administrativo) .caj-comparar-controles { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
body:is(.role-director, .role-administrativo) .caj-comparar-etiqueta { font-size: 13px; font-weight: 800; }
body:is(.role-director, .role-administrativo) .caj-comparar-controles .nb-fecha-auto, body:is(.role-director, .role-administrativo) .caj-comparar-controles > .form-control { width: 170px !important; flex: 0 0 170px; }
body:is(.role-director, .role-administrativo) .caj-comparar-controles .nb-fecha-campo { height: 36px; }
body:is(.role-director, .role-administrativo) .caj-comparar-atajos { display: flex; flex-wrap: wrap; gap: 6px; }
body:is(.role-director, .role-administrativo) .caj-comparar-atajos button { padding: 4px 12px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 999px; background: #fff; font-size: 12px; font-weight: 700; cursor: pointer; }
body:is(.role-director, .role-administrativo) .caj-comparar-atajos button:hover { background: #fff6c2; }
body:is(.role-director, .role-administrativo) .caj-comparar-atajos button[aria-pressed="true"] { background: var(--brand-black, #1c1c1a); color: #fff; }
body:is(.role-director, .role-administrativo) .caj-comparar-cerrar { width: 32px; height: 32px; padding: 0; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 8px; background: #fff; cursor: pointer; }
body:is(.role-director, .role-administrativo) .caj-comparar-cerrar:hover { background: #fde7e4; }
body:is(.role-director, .role-administrativo) .caj-comparar-nota { margin: 0; padding: 8px 14px; background: #fffbe6; border-bottom: 1px solid #e3e0d0; font-size: 12px; color: #555; }
/* Las esquinas redondeadas las recorta la tabla, no la tarjeta: así el calendario de "Comparar con" no se corta */
body:is(.role-director, .role-administrativo) .caj-saldos-tabla { overflow-x: auto; border-radius: 0 0 10px 10px; }
body:is(.role-director, .role-administrativo) .caj-saldos-barra { border-radius: 10px 10px 0 0; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos table { width: 100%; border: 0 !important; border-radius: 0; box-shadow: none; border-collapse: collapse; background: #fff; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos th,
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos td { padding: 9px 14px; border: 0 !important; white-space: nowrap; text-align: left; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos .caj-num { text-align: right; font-variant-numeric: tabular-nums; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos th { background: #f1eee0; font-size: 12px; text-transform: uppercase; letter-spacing: .4px; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos tbody tr + tr td { border-top: 1px solid #e3e0d0 !important; }
body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos tfoot td { border-top: 2px solid var(--brand-black, #1c1c1a) !important; font-weight: 900; }
/* Columnas de la comparación: ocultas hasta comparar, con fondo propio y separadas por una línea */
body:is(.role-director, .role-administrativo) .caj-saldos .caj-comp { display: none; }
body:is(.role-director, .role-administrativo) .caj-saldos.caj-comparando .caj-comp { display: table-cell; background: #fffbe6; }
body:is(.role-director, .role-administrativo) .caj-saldos.caj-comparando th.caj-comp { background: #fff1b3; }
body:is(.role-director, .role-administrativo) .caj-saldos.caj-comparando tr > .caj-comp:nth-last-child(2) { border-left: 2px solid var(--brand-black, #1c1c1a) !important; }
body:is(.role-director, .role-administrativo) .caj-saldos.caj-cargando .caj-comp { opacity: .45; }
body:is(.role-director, .role-administrativo) .caj-sube { color: #1f7a2e; font-weight: 800; }
body:is(.role-director, .role-administrativo) .caj-baja { color: #b3261e; font-weight: 800; }
@media (max-width: 767px) {
    /* En móvil, al comparar, se quita "Día anterior" para que quepa */
    body:is(.role-director, .role-administrativo) .caj-saldos.caj-comparando .caj-col-ayer { display: none; }
    body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos th, body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos td { padding: 8px 8px; font-size: 13px; white-space: normal; }
    body:is(.role-director, .role-administrativo) .caj-comparar-controles { width: 100%; }
    body:is(.role-director, .role-administrativo) .caj-saldos-barra { position: relative; }
    body:is(.role-director, .role-administrativo) .caj-comparar-cerrar { position: absolute; top: 10px; right: 12px; }
    body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos td.caj-comp { white-space: nowrap; }
    body:is(.role-director, .role-administrativo) .caj-libro .caj-saldos th.caj-comp { white-space: normal; }
}

/* Cajas en móvil: fechas, atajos y buscador plegados detrás de una barra (periodo + lupa) */
body:is(.role-director, .role-administrativo) .caj-movil-barra { display: none; }
@media (max-width: 767px) {
    body.caj-filtros-plegables:is(.role-director, .role-administrativo) .caj-movil-barra:not([hidden]) { display: flex; gap: 8px; margin: 4px 0 12px; }
    body:is(.role-director, .role-administrativo) .caj-movil-periodo { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 8px; height: 46px; padding: 0 14px; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 10px; background: #fff; font-weight: 800; font-size: 15px; text-align: left; box-shadow: 3px 3px 0 var(--brand-black, #1c1c1a); }
    body:is(.role-director, .role-administrativo) .caj-movil-periodo span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    body:is(.role-director, .role-administrativo) .caj-movil-periodo[aria-expanded="true"] .adm-caret { transform: rotate(180deg); }
    body:is(.role-director, .role-administrativo) .caj-movil-lupa { flex: 0 0 46px; width: 46px; height: 46px; padding: 0; border: 2px solid var(--brand-black, #1c1c1a); border-radius: 10px; background: var(--brand-yellow, #ffd824); box-shadow: 3px 3px 0 var(--brand-black, #1c1c1a); }
    body:is(.role-director, .role-administrativo) .caj-movil-periodo[aria-expanded="true"], body:is(.role-director, .role-administrativo) .caj-movil-lupa[aria-expanded="true"] { background: var(--brand-black, #1c1c1a); color: #fff; }
    body.caj-filtros-plegables:is(.role-director, .role-administrativo) .caj-filtros { margin-bottom: 8px !important; }
    body.caj-filtros-plegables:is(.role-director, .role-administrativo) .caj-filtros:not(.caj-ver-fechas) .caj-filtros-fechas,
    body.caj-filtros-plegables:is(.role-director, .role-administrativo) .caj-filtros:not(.caj-ver-buscar) .caj-filtros-buscar { display: none !important; }
    body.caj-filtros-plegables:is(.role-director, .role-administrativo) .caj-filtros-buscar > label { display: none; }
    body:is(.role-director, .role-administrativo) .caj-dia-titulo { margin: 4px 0 10px !important; font-size: 18px !important; }
    /* Con un solo día, la barra ya dice cuál es */
    body.caj-filtros-plegables:is(.role-director, .role-administrativo) .caj-libro:has(#pestanas_salas[hidden]) .caj-dia-titulo { display: none !important; }
}

/* Buscador del menú (Ctrl+K): al llamarlo se ve claro que ya se puede escribir */
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter:focus-within {
    background: #fff6c2 !important;
    border-width: 3px !important;
    box-shadow: 3px 3px 0 0 var(--brand-black) !important;
}
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter:focus-within i { color: var(--brand-black) !important; opacity: 1 !important; }
body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter-llamada { animation: adm-nav-filter-llamada .7s ease-out; }
@keyframes adm-nav-filter-llamada {
    0%   { transform: scale(1); box-shadow: 0 0 0 0 rgba(255, 216, 36, .9); }
    35%  { transform: scale(1.06); box-shadow: 0 0 0 8px rgba(255, 216, 36, .55); }
    100% { transform: scale(1); box-shadow: 3px 3px 0 0 var(--brand-black); }
}
@media (prefers-reduced-motion: reduce) {
    body:is(.role-director, .role-administrativo, .role-profesor, .role-alumno) .adm-nav-filter-llamada { animation: none; }
}
/* ============================================================
   "¿Cómo nos conoció?" (user/_como-conocio.html.twig): ficha, alta y
   modal del alumno. Dos columnas desde tablet, una en móvil
   ============================================================ */
body:is(.role-director, .role-administrativo, .role-alumno) .cc-campos {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 10px 18px;
}
@media (min-width: 576px) {
    body:is(.role-director, .role-administrativo, .role-alumno) .cc-campos {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
body:is(.role-director, .role-administrativo, .role-alumno) .cc-campos > .cc-campo {
    min-width: 0;
}
body:is(.role-director, .role-administrativo, .role-alumno) .cc-campos > .cc-campo[hidden] {
    display: none !important;
}
body:is(.role-director, .role-administrativo, .role-alumno) .cc-campos label {
    width: 100%;
}
body:is(.role-director, .role-administrativo, .role-alumno) .cc-campos .form-control {
    width: 100%;
    max-width: 100%;
    height: auto;
    min-height: 44px;
    text-overflow: ellipsis;
}

/* Profesor, ficha de asignatura > Alumnos: Evaluar y Asistencias a la vista, el resto en "Más" */
body.role-profesor .prof-al-acciones {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: center;
    gap: 8px;
}
body.role-profesor .prof-al-mas > summary {
    list-style: none;
    cursor: pointer;
    background: var(--brand-white) !important;
}
body.role-profesor .prof-al-mas > summary::-webkit-details-marker {
    display: none;
}
body.role-profesor .prof-al-mas[open] > summary {
    background: var(--brand-yellow) !important;
}
body.role-profesor .prof-al-mas-panel {
    display: grid;
    gap: 6px;
    margin-top: 8px;
    padding: 8px;
    border: 2px solid var(--brand-black);
    border-radius: 12px;
    background: var(--brand-white);
    box-shadow: 3px 3px 0 var(--brand-black);
}
body.role-profesor .prof-al-mas-panel .btn {
    width: 100%;
    justify-content: flex-start;
    background: var(--brand-white) !important;
}
body.role-profesor .prof-al-mas-panel .btn:hover:not(:disabled) {
    background: var(--brand-yellow) !important;
}
/* =====================================================
   Menú lateral del profesor y del alumno con el diseño del de
   administración (las reglas .adm-sidebar / .adm-mobile-nav de arriba
   ya cubren los cuatro roles). Aquí solo lo que no tiene administración.
   ============================================================ */
/* Filtro del menú móvil: fuera las opciones que no casan */
body:is(.role-profesor, .role-alumno) .adm-mobile-nav .mobile-nav-list .filter-hide { display: none !important; }
/* Alumno: cabecera con su nombre, en claro como el resto del menú */
body.role-alumno .adm-sidebar .sidebar-user-header {
    padding: 2px 4px 12px !important;
    margin-bottom: 10px !important;
    background: transparent !important;
    border-bottom: 2px dashed rgba(0, 0, 0, 0.2) !important;
}
body.role-alumno .adm-sidebar .sidebar-avatar {
    border-radius: 10px !important;
    box-shadow: 2px 2px 0 0 var(--brand-black) !important;
}
body.role-alumno .adm-sidebar .sidebar-user-name { color: var(--brand-text) !important; }
body.role-alumno .adm-sidebar .sidebar-user-role { color: var(--brand-text-muted) !important; }
/* Sin botón «Contraer», «Panel seguro» queda anclado abajo */
@media (min-width: 768px) {
    body:is(.role-profesor, .role-alumno) .adm-sidebar .sidebar-footer { margin-top: auto !important; }
}

/* Ficha de asignatura en el móvil: menos scroll */
body:is(.role-profesor, .role-director, .role-administrativo) .subj-tab-toggle {
    display: none;
}
@media (max-width: 767px) {
    /* Pestañas en un desplegable que muestra la abierta */
    body:is(.role-profesor, .role-director, .role-administrativo) .subj-tab-toggle {
        display: flex;
        align-items: center;
        gap: 8px;
        width: 100%;
        margin: 14px 0 0;
        padding: 10px 14px;
        background: var(--brand-yellow);
        color: var(--brand-black);
        border: 2px solid var(--brand-black);
        border-radius: 12px;
        box-shadow: 3px 3px 0 var(--brand-black);
        font-size: 0.9rem;
        font-weight: 800;
        text-align: left;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .subj-tab-toggle .badge {
        border-radius: 999px;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .subj-tab-caret {
        margin-left: auto;
        transition: transform .15s ease;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .subj-tab-toggle[aria-expanded="true"] .subj-tab-caret {
        transform: rotate(180deg);
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab:not(.is-open) {
        display: none !important;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) #subjectTab.is-open {
        margin-top: 10px !important;
    }
    /* Comunicado, Histórico e Invitación en una fila que se reparte */
    body.role-profesor #subjectTab ~ .tab-content .prof-com-btn {
        flex: 1 1 0 !important;
        width: auto !important;
        max-width: none !important;
        padding: 0 4px !important;
        margin-bottom: 8px !important;
    }
    body.role-profesor #subjectTab ~ .tab-content .prof-com-btn .btn {
        width: 100%;
        padding: 8px 6px !important;
        font-size: 0.68rem !important;
        line-height: 1.15 !important;
        white-space: normal !important;
    }
    /* Tarjeta de alumno: fuera la nota vacía */
    body.role-profesor table.prof-stack:has(.prof-al-acciones) td[data-label="Nota profesor" i]:not(:has(button)) {
        display: none !important;
    }
    /* Acciones en una sola fila a todo el ancho */
    body.role-profesor table.prof-stack tbody > tr > td:has(.prof-al-acciones) {
        display: block !important;
    }
    body.role-profesor table.prof-stack tbody > tr > td:has(.prof-al-acciones)::before {
        display: none !important;
    }
    body.role-profesor table.prof-stack tbody > tr > td > .prof-cell-value:has(> .prof-al-acciones) {
        display: block !important;
    }
    body.role-profesor .prof-al-acciones {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 6px;
    }
    body.role-profesor #subjectTab ~ .tab-content .prof-al-acciones > .btn,
    body.role-profesor #subjectTab ~ .tab-content .prof-al-acciones > .prof-al-mas > summary {
        width: 100%;
        padding: 8px 4px !important;
        font-size: 0.68rem !important;
        justify-content: center;
    }
    /* "Más" flota bajo su botón, alineado a la derecha, con ancho propio */
    body.role-profesor .prof-al-mas {
        position: relative;
    }
    body.role-profesor .prof-al-mas > summary {
        width: 100%;
    }
    body.role-profesor #subjectTab ~ .tab-content .prof-al-mas-panel {
        position: absolute;
        right: 0;
        top: calc(100% + 6px);
        z-index: 20;
        width: 230px;
        max-width: calc(100vw - 48px);
        margin-top: 0;
    }
}

/* Profesor, ficha de asignatura > Alumnos en escritorio: filas-tarjeta en vez de tabla */
body.role-profesor .prof-al-asigs > summary {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    background: var(--brand-white);
    font-size: 0.75rem;
    font-weight: 800;
    cursor: pointer;
    list-style: none;
}
body.role-profesor .prof-al-asigs > summary::-webkit-details-marker { display: none; }
body.role-profesor .prof-al-asigs > summary::after {
    content: "\f078";
    font-family: "Font Awesome 6 Free", "Font Awesome 5 Free";
    font-weight: 900;
    font-size: 0.6rem;
}
body.role-profesor .prof-al-asigs[open] > summary { background: var(--brand-yellow); }
body.role-profesor .prof-al-asigs ul {
    margin: 8px 0 0;
    padding: 0;
    list-style: none;
    font-size: 0.8rem;
    line-height: 1.5;
}
@media (min-width: 768px) {
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla,
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody {
        display: block !important;
        border: none !important;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla thead {
        display: none !important;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr {
        display: grid !important;
        grid-template-columns: minmax(200px, 1.4fr) minmax(150px, 1fr) minmax(130px, auto) auto auto;
        grid-template-areas: "nombre curso asigs nota acciones";
        align-items: center;
        gap: 6px 18px;
        margin: 0 0 10px !important;
        padding: 12px 16px !important;
        background: var(--brand-white) !important;
        border: 2px solid var(--brand-black) !important;
        border-radius: 14px !important;
        box-shadow: 3px 3px 0 var(--brand-black) !important;
        text-align: left !important;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr:hover {
        background: #fffbe6 !important;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td {
        display: block !important;
        padding: 0 !important;
        border: none !important;
        text-align: left !important;
        background: transparent !important;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td::before { content: none !important; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td:nth-child(1) { grid-area: nombre; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td:nth-child(2) { grid-area: nota; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td:nth-child(3) { grid-area: curso; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td:nth-child(4) { grid-area: asigs; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td:last-child { grid-area: acciones; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla .prof-cell-value { text-align: left !important; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td:nth-child(1) p {
        margin: 0 !important;
        font-weight: 900 !important;
        font-size: 1rem !important;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla tbody > tr > td:nth-child(3) {
        font-size: 0.78rem !important;
        line-height: 1.35 !important;
        color: var(--brand-text-muted) !important;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla .prof-al-acciones {
        flex-wrap: nowrap;
        justify-content: flex-end;
        align-items: center;
    }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla .prof-al-mas { position: relative; }
    body.role-profesor #subjectTab ~ .tab-content table.prof-al-tabla .prof-al-mas-panel {
        position: absolute;
        right: 0;
        top: 100%;
        z-index: 20;
        min-width: 210px;
    }
}
/* Opciones del menú "Más": lista alineada, sin sombra que se salga del panel */
body.role-profesor #subjectTab ~ .tab-content .prof-al-mas-panel {
    gap: 4px;
    padding: 6px;
}
body.role-profesor #subjectTab ~ .tab-content .prof-al-mas-panel .btn {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 8px 12px !important;
    border: none !important;
    border-radius: 8px !important;
    box-shadow: none !important;
    transform: none !important;
    text-align: left !important;
}
body.role-profesor #subjectTab ~ .tab-content .prof-al-mas-panel .btn i {
    width: 16px;
    text-align: center;
}

/* Últimas asistencias de un alumno (asistencia/subject_panel.html.twig) */
body:is(.role-profesor, .role-director, .role-administrativo) .asis-quien {
    margin: 0 0 12px;
    font-weight: 900;
    font-size: 1rem;
}
body:is(.role-profesor, .role-director, .role-administrativo) .asis-quien span {
    font-weight: 600;
    color: var(--brand-text-muted);
}
body:is(.role-profesor, .role-director, .role-administrativo) .asis-fila {
    display: grid;
    grid-template-columns: 110px minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px 18px;
    margin-bottom: 10px;
    padding: 12px 14px;
    background: var(--brand-white);
    border: 2px solid var(--brand-black);
    border-radius: 14px;
    box-shadow: 3px 3px 0 var(--brand-black);
}
body:is(.role-profesor, .role-director, .role-administrativo) .asis-fecha {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}
body:is(.role-profesor, .role-director, .role-administrativo) .asis-dia { font-weight: 900; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-hora {
    font-size: 0.78rem;
    color: var(--brand-text-muted);
}
body:is(.role-profesor, .role-director, .role-administrativo) .asis-etq {
    display: block;
    margin-bottom: 4px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.65rem;
    font-weight: 800;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: var(--brand-text-muted);
}
/* Botones unidos como un selector */
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg {
    display: inline-flex;
    flex-wrap: wrap;
    border: 2px solid var(--brand-black);
    border-radius: 10px;
    overflow: hidden;
    background: var(--brand-white);
}
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    margin: 0 !important;
    padding: 7px 12px !important;
    border: none !important;
    border-right: 2px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    font-size: 0.75rem !important;
    font-weight: 800 !important;
    text-transform: none !important;
    cursor: pointer;
}
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn:last-child { border-right: none !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn:hover { background: #fff6c2 !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn.btn-secondary.active { background: #e5e5e5 !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn.btn-success.active { background: #22c55e !important; color: #fff !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn.btn-primary.active { background: #3b82f6 !important; color: #fff !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn.btn-warning.active { background: var(--brand-yellow) !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn.btn-danger.active { background: #ef4444 !important; color: #fff !important; }
body:is(.role-profesor, .role-director, .role-administrativo) .asis-vacio {
    margin: 10px 0;
    text-align: center;
    color: var(--brand-text-muted);
}
@media (max-width: 767px) {
    body:is(.role-profesor, .role-director, .role-administrativo) .asis-fila {
        grid-template-columns: minmax(0, 1fr);
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .asis-fecha {
        flex-direction: row;
        gap: 10px;
        align-items: baseline;
    }
    body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg { display: flex; }
    body:is(.role-profesor, .role-director, .role-administrativo) .asis-seg .btn {
        flex: 1 1 0;
        justify-content: center;
    }
}

/* ============================================================
   Profesor, ficha de asignatura: Informes, Sesiones y Calificaciones
   con filas-tarjeta como la pestaña Alumnos
   ============================================================ */
/* Barra de cabecera común: contador a la izquierda, acción a la derecha */
body.role-profesor .prof-inf-toolbar,
body.role-profesor #sesiones .prof-ses-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px 12px;
    margin: 4px 0 14px;
}
body.role-profesor .prof-inf-count,
body.role-profesor .prof-ses-count {
    font-weight: 900;
    font-size: 0.85rem;
    text-transform: uppercase;
}
body.role-profesor #subjectTab ~ .tab-content .prof-ses-toolbar .btn,
body.role-profesor #subjectTab ~ .tab-content .prof-cal-head .btn {
    margin: 0 !important;
    font-size: 0.75rem !important;
    padding: 8px 16px !important;
}

/* ── Informes ── */
body.role-profesor #informes .mt-4 { margin-top: 0 !important; }
body.role-profesor .prof-inf-buscar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 1 300px;
    min-width: 0;
    margin: 0;
    padding: 0 12px;
    height: 40px;
    background: var(--brand-white);
    border: 2px solid var(--brand-black);
    border-radius: 10px;
    box-shadow: 2px 2px 0 var(--brand-black);
}
body.role-profesor .prof-inf-buscar:focus-within { background: #fff6c2; }
body.role-profesor .prof-inf-buscar input {
    flex: 1 1 auto;
    min-width: 0;
    border: 0;
    outline: 0;
    background: transparent;
    font-size: 0.9rem;
}
body.role-profesor #informes .mt-4 > .prof-inf[hidden],
body.role-profesor #informes .prof-inf-sin-resultados[hidden] { display: none !important; }
body.role-profesor #informes .mt-4 > .prof-inf {
    display: grid !important;
    grid-template-columns: minmax(170px, 240px) minmax(0, 1fr);
    grid-template-areas: "nombre texto" "meta texto";
    grid-template-rows: auto 1fr;
    align-items: start;
    gap: 4px 16px;
    margin: 0 0 10px !important;
    padding: 12px 14px !important;
    border-radius: 14px !important;
}
body.role-profesor #informes .mt-4 > .prof-inf:focus-within { background: #fffbe6 !important; }
body.role-profesor #informes .prof-inf-nombre {
    grid-area: nombre;
    font-weight: 900;
    font-size: 0.95rem;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
body.role-profesor #informes .prof-inf-nombre > i { display: none; }
body.role-profesor #informes .prof-inf-meta {
    grid-area: meta;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
body.role-profesor .prof-inf-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 9px;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    background: var(--brand-white);
    font-size: 0.7rem;
    font-weight: 800;
    white-space: nowrap;
}
body.role-profesor .prof-inf-chip-hoy { background: #bbf7d0; }
/* Texto y botones en la misma fila: el texto se estira y los botones van a su derecha */
body.role-profesor #informes .prof-inf .input-group {
    grid-area: texto;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: stretch;
    gap: 10px !important;
    margin: 0 !important;
}
body.role-profesor #informes .prof-inf .input-group > textarea {
    min-height: 74px !important;
    padding: 8px 10px !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    font-size: 0.9rem !important;
    line-height: 1.35 !important;
    resize: vertical;
}
body.role-profesor #informes .prof-inf .input-group > textarea:focus {
    background: var(--brand-white) !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
}
body.role-profesor #informes .prof-inf .input-group-text .text-left {
    flex-direction: column;
    flex-wrap: nowrap !important;
    gap: 6px !important;
    height: 100%;
    justify-content: center;
}
body.role-profesor #subjectTab ~ .tab-content #informes .prof-inf .input-group-text .btn {
    width: 100%;
    justify-content: center;
    font-size: 0.7rem !important;
    padding: 7px 14px !important;
}
body.role-profesor #subjectTab ~ .tab-content #informes .prof-inf .input-group-text .btn:first-child {
    background: var(--brand-white) !important;
}
/* Histórico de informes */
body.role-profesor #informes [id^="historico_inf_"] .modal-body > .row {
    display: grid !important;
    grid-template-columns: 110px minmax(0, 1fr);
    gap: 0;
    margin: 0 !important;
    text-align: left !important;
}
body.role-profesor #informes [id^="historico_inf_"] .modal-body > .row > .col-sm-6 {
    max-width: none;
    padding: 8px 10px;
    border-bottom: 1px dashed #d0d0d0;
    text-align: left !important;
}
body.role-profesor #informes [id^="historico_inf_"] .modal-body > .row > .col-sm-6:nth-child(odd) {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.78rem;
    font-weight: 800;
    color: var(--brand-text-muted);
}
body.role-profesor #informes [id^="historico_inf_"] .modal-body > .row > .col-sm-12 {
    grid-column: 1 / -1;
    max-width: none;
}
@media (max-width: 767px) {
    body.role-profesor .prof-inf-buscar { flex: 1 1 100%; }
    body.role-profesor #informes .mt-4 > .prof-inf {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas: "nombre" "meta" "texto";
        gap: 6px;
    }
    body.role-profesor #informes .prof-inf .input-group {
        grid-template-columns: minmax(0, 1fr);
        gap: 8px !important;
    }
    body.role-profesor #informes .prof-inf .input-group-text .text-left {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    body.role-profesor #subjectTab ~ .tab-content #informes .prof-inf .input-group-text .btn {
        padding: 8px 6px !important;
        white-space: normal !important;
        line-height: 1.15 !important;
    }
}

/* ── Sesiones ── */
body.role-profesor #subjectTab ~ .tab-content #sesiones #sesiones_asg { margin: 0; }
body.role-profesor #subjectTab ~ .tab-content #sesiones #sesiones_asg > .prof-ses-toolbar,
body.role-profesor #subjectTab ~ .tab-content #sesiones .editForm > .col-sm-12 > .col-sm-12 { padding: 0 !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones,
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody {
    display: block !important;
    width: 100% !important;
    border: none !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > thead { display: none !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion {
    display: grid !important;
    grid-template-columns: minmax(180px, 1fr) auto auto auto auto;
    grid-template-areas: "fecha ret fal det acc";
    align-items: center;
    gap: 8px 12px;
    width: 100% !important;
    margin: 0 0 10px !important;
    padding: 10px 14px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 14px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
    text-align: left !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion:hover { background: #fffbe6 !important; }
/* Sesión abierta: la tarjeta se une con su panel de alumnos */
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion:has(+ .sessionPanelRow:not([style*="none"])) {
    margin-bottom: 0 !important;
    border-radius: 14px 14px 0 0 !important;
    background: #fffbe6 !important;
    box-shadow: none !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td {
    display: block !important;
    width: auto !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
    text-align: left !important;
    font-weight: 400 !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td::before { content: none !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td:nth-child(1) { grid-area: fecha; }
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td:nth-child(2) { grid-area: ret; }
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td:nth-child(3) { grid-area: fal; }
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td:nth-child(4) { grid-area: det; }
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td:nth-child(5) { grid-area: acc; }
body.role-profesor #subjectTab ~ .tab-content #sesiones .adm-sesion-fecha {
    display: flex !important;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 2px 12px;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones .prof-ses-dia {
    font-weight: 900;
    font-size: 1rem;
    white-space: nowrap;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones .prof-ses-wd {
    display: inline-block;
    min-width: 2.6em;
    margin-right: 2px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--brand-text-muted);
}
body.role-profesor #subjectTab ~ .tab-content #sesiones .prof-ses-hora {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--brand-text-muted);
    white-space: nowrap;
}
body.role-profesor .prof-ses-badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 800;
    white-space: nowrap;
}
body.role-profesor .prof-ses-retrasos { background: var(--brand-yellow); }
body.role-profesor .prof-ses-faltas { background: #ef4444; color: #fff; }
body.role-profesor .prof-ses-badge.is-cero {
    background: transparent;
    color: var(--brand-text-muted);
    border-color: #c9c9c9;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones tr.adm-sesion .btn {
    margin: 0 !important;
    min-height: 0 !important;
    font-size: 0.72rem !important;
    padding: 7px 14px !important;
    white-space: nowrap !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones tr.adm-sesion .btn-info { background: var(--brand-white) !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones tr.adm-sesion:has(+ .sessionPanelRow:not([style*="none"])) .btn-info { background: var(--brand-yellow) !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones .adm-sesion-txt { display: none; }
body.role-profesor #subjectTab ~ .tab-content #sesiones tr.prof-ses-vacio,
body.role-profesor #subjectTab ~ .tab-content #sesiones tr.prof-ses-vacio > td {
    display: block !important;
    width: 100% !important;
    border: none !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones tr.prof-ses-vacio > td {
    padding: 28px !important;
    text-align: center !important;
    font-weight: 700 !important;
    border: 3px dashed var(--brand-black) !important;
    background: var(--brand-white) !important;
}
/* Panel de alumnos de la sesión, pegado bajo su tarjeta */
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.sessionPanelRow:not([style*="none"]) {
    display: block !important;
    width: 100% !important;
    margin: 0 0 12px !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.sessionPanelRow > td {
    display: block !important;
    width: 100% !important;
    padding: 8px 12px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-top: 2px dashed var(--brand-black) !important;
    border-radius: 0 0 14px 14px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="sessionAttendancePanel_"] {
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="sessionAttendancePanel_"] > .panel-header-title { display: none !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] {
    display: grid !important;
    grid-template-columns: minmax(160px, 1.2fr) auto auto minmax(0, 1fr);
    align-items: center !important;
    gap: 8px 14px !important;
    width: 100% !important;
    max-width: none !important;
    flex: none !important;
    margin: 0 !important;
    padding: 8px 4px !important;
    border-bottom: 1px dashed #d0d0d0 !important;
    background: transparent !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"]:last-child { border-bottom: none !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] > .panel-line-data {
    height: auto !important;
    width: auto !important;
    max-width: none !important;
    flex: none !important;
    min-height: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] > .alumno_nombre {
    justify-content: flex-start !important;
    text-align: left !important;
    font-weight: 800 !important;
    font-size: 0.85rem !important;
    overflow-wrap: anywhere;
}
/* Botones de asistencia unidos como un selector (igual que .asis-seg) */
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] > .botonera-radio {
    display: inline-flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    gap: 0 !important;
    justify-self: start;
    border: 2px solid var(--brand-black) !important;
    border-radius: 10px !important;
    overflow: hidden !important;
    background: var(--brand-white) !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: auto !important;
    margin: 0 !important;
    padding: 6px 11px !important;
    min-height: 0 !important;
    border: none !important;
    border-right: 2px solid var(--brand-black) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
    font-size: 0.7rem !important;
    font-weight: 800 !important;
    white-space: nowrap !important;
}
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn:last-child { border-right: none !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn:hover { background: #fff6c2 !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn.btn-secondary.active { background: #e5e5e5 !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn.btn-success.active { background: #22c55e !important; color: #fff !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn.btn-primary.active { background: #3b82f6 !important; color: #fff !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn.btn-warning.active { background: var(--brand-yellow) !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn.btn-danger.active { background: #ef4444 !important; color: #fff !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] > .panel-line-data:last-child { justify-self: end; text-align: right !important; }
body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .btn-carga-faltas {
    margin: 0 !important;
    padding: 6px 12px !important;
    font-size: 0.68rem !important;
    min-height: 0 !important;
    white-space: normal !important;
    text-align: center !important;
    box-shadow: 2px 2px 0 var(--brand-black) !important;
}
@media (max-width: 767px) {
    body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion {
        grid-template-columns: auto auto minmax(0, 1fr) auto;
        grid-template-areas: "fecha fecha fecha acc" "ret fal . det";
        gap: 10px 8px;
        padding: 10px 12px !important;
    }
    /* Hueco para la sombra, que si no se corta por la derecha */
    body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion,
    body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.sessionPanelRow,
    body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla > tbody > tr,
    body.role-profesor #calificaciones form.prof-cal-metodo {
        width: calc(100% - 3px) !important;
    }
    body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td:nth-child(4) { justify-self: end; }
    body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.adm-sesion > td:nth-child(5) { justify-self: end; align-self: start; }
    body.role-profesor #subjectTab ~ .tab-content #sesiones tr.adm-sesion .btn-danger { padding: 7px 11px !important; }
    body.role-profesor #subjectTab ~ .tab-content #sesiones table.adm-sesiones > tbody > tr.sessionPanelRow > td { padding: 4px 10px !important; }
    body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] {
        grid-template-columns: minmax(0, 1fr);
        gap: 8px !important;
        padding: 10px 0 !important;
    }
    body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio { display: flex !important; justify-self: stretch; }
    body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .botonera-radio .panel-button.btn { flex: 1 1 0; padding: 8px 4px !important; }
    body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] > .panel-line-data:last-child { justify-self: stretch; text-align: left !important; }
    body.role-profesor #subjectTab ~ .tab-content #sesiones [id^="fila_alumno_"] .btn-carga-faltas { width: 100%; }
}

/* ── Calificaciones ── */
body.role-profesor .prof-cal-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 10px;
    margin: 0 0 12px;
}
body.role-profesor .prof-cal-titulo {
    margin: 0 auto 0 0 !important;
    font-size: 1.1rem !important;
    font-weight: 900 !important;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
/* Título y resumen a la izquierda, acción a la derecha */
body.role-profesor .prof-cal-head:has(.prof-cal-chip) .prof-cal-titulo { margin-right: 4px !important; }
body.role-profesor #subjectTab ~ .tab-content .prof-cal-head .btn { margin-left: auto !important; }
body.role-profesor .prof-cal-chip {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    background: var(--brand-white);
    font-size: 0.72rem;
    font-weight: 800;
    white-space: nowrap;
}
body.role-profesor .prof-cal-chip-total { background: #fff6c2; }
body.role-profesor .prof-cal-chip-pct { background: var(--brand-yellow); font-size: 0.8rem; }
/* Método: tarjeta con el campo y Guardar en línea */
body.role-profesor #calificaciones form.prof-cal-metodo {
    margin: 0 0 6px;
    padding: 12px 14px;
    background: var(--brand-white);
    border: 2px solid var(--brand-black);
    border-radius: 14px;
    box-shadow: 3px 3px 0 var(--brand-black);
}
body.role-profesor #calificaciones form.prof-cal-metodo .row { margin: 0; }
body.role-profesor #calificaciones form.prof-cal-metodo .row > .col-sm-6 {
    flex: 1 1 100% !important;
    max-width: 100% !important;
    padding: 0 !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
}
body.role-profesor #calificaciones form.prof-cal-metodo label[for="method"] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
}
body.role-profesor #calificaciones form.prof-cal-metodo #method { flex: 1 1 auto !important; min-width: 0; }
body.role-profesor #subjectTab ~ .tab-content #calificaciones form.prof-cal-metodo .btn {
    margin: 0 !important;
    flex: 0 0 auto;
}
body.role-profesor #calificaciones > .editForm > .col-sm-12 > div[style*="margin-top"] { margin-top: 26px !important; }
/* Tablas como filas-tarjeta (profesor-tablas.js las deja sin apilar) */
body.role-profesor #calificaciones table.prof-cal-tabla,
body.role-profesor #calificaciones table.prof-cal-tabla > tbody {
    display: block !important;
    width: 100% !important;
    border: none !important;
}
body.role-profesor #calificaciones table.prof-cal-tabla > thead { display: none !important; }
body.role-profesor #calificaciones table.prof-cal-tabla > tbody > tr {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 8px 16px;
    margin: 0 0 10px !important;
    padding: 10px 14px !important;
    background: var(--brand-white) !important;
    border: 2px solid var(--brand-black) !important;
    border-radius: 14px !important;
    box-shadow: 3px 3px 0 var(--brand-black) !important;
    text-align: left !important;
}
body.role-profesor #calificaciones table.prof-cal-pruebas > tbody > tr { grid-template-columns: minmax(0, 1fr) auto; }
body.role-profesor #calificaciones table.prof-cal-tabla > tbody > tr:hover { background: #fffbe6 !important; }
body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla > tbody > tr > td {
    display: block !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
    text-align: left !important;
}
body.role-profesor #calificaciones table.prof-cal-tabla > tbody > tr > td:first-child {
    font-weight: 900;
    font-size: 0.95rem;
    overflow-wrap: anywhere;
}
body.role-profesor #calificaciones table.prof-cal-tabla > tbody > tr > td:last-child {
    display: flex !important;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 6px;
}
body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla .btn {
    margin: 0 !important;
    min-height: 0 !important;
    font-size: 0.72rem !important;
    padding: 7px 14px !important;
    white-space: nowrap !important;
}
body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla .btn-primary { background: var(--brand-white) !important; color: var(--brand-black) !important; }
body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla .btn-danger { padding: 7px 11px !important; }
body.role-profesor #calificaciones .prof-cal-txt { display: none; }
/* Vacío: caja discontinua como en Encargos y Vídeos */
body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla > tbody > tr.prof-cal-vacio {
    display: block !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
}
body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla > tbody > tr.prof-cal-vacio > td {
    padding: 28px !important;
    text-align: center !important;
    font-weight: 700 !important;
    border: 3px dashed var(--brand-black) !important;
    background: var(--brand-white) !important;
}
@media (max-width: 767px) {
    body.role-profesor .prof-cal-titulo { flex: 1 1 100%; font-size: 1rem !important; }
    body.role-profesor #subjectTab ~ .tab-content .prof-cal-head .btn { flex: 1 1 100%; justify-content: center; }
    body.role-profesor #calificaciones form.prof-cal-metodo .row > .col-sm-6 { flex-wrap: wrap !important; }
    body.role-profesor #calificaciones form.prof-cal-metodo #method { flex: 1 1 100% !important; }
    body.role-profesor #subjectTab ~ .tab-content #calificaciones form.prof-cal-metodo .btn { width: 100%; }
    body.role-profesor #calificaciones table.prof-cal-tabla > tbody > tr,
    body.role-profesor #calificaciones table.prof-cal-pruebas > tbody > tr {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 10px;
        padding: 10px 12px !important;
    }
    body.role-profesor #calificaciones table.prof-cal-tabla > tbody > tr > td:last-child {
        grid-column: 1 / -1;
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
    }
    body.role-profesor #subjectTab ~ .tab-content #calificaciones table.prof-cal-tabla .btn {
        width: 100%;
        justify-content: center;
        padding: 8px 6px !important;
    }
}

/* Alumno: campana de notificaciones en la cabecera y su ventana */
body:is(.role-alumno, .role-profesor) .almhead-right {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
}
body:is(.role-alumno, .role-profesor) .alm-campana {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 50px;
    height: 50px;
    background: var(--brand-white);
    color: var(--brand-black);
    border: 3px solid var(--brand-black);
    border-radius: 50%;
    box-shadow: 3px 3px 0 var(--brand-black);
    font-size: 1.15rem;
    cursor: pointer;
    transition: transform .1s ease, box-shadow .1s ease;
}
body:is(.role-alumno, .role-profesor) .alm-campana:hover {
    transform: translate(-1px, -1px);
    box-shadow: 4px 4px 0 var(--brand-black);
}
body:is(.role-alumno, .role-profesor) .alm-campana-num {
    position: absolute;
    top: -8px;
    right: -8px;
    min-width: 24px;
    height: 24px;
    padding: 0 6px;
    background: #e53935;
    color: #fff;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 900;
    line-height: 20px;
    text-align: center;
}
body:is(.role-alumno, .role-profesor) .notif-hist {
    margin-bottom: 10px;
    padding: 12px 14px;
    background: var(--brand-white);
    border: 2px solid var(--brand-black);
    border-radius: 12px;
    box-shadow: 3px 3px 0 var(--brand-black);
}
body:is(.role-alumno, .role-profesor) .notif-hist.is-nueva {
    background: #fff6c2;
}
body:is(.role-alumno, .role-profesor) .notif-hist-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
}
body:is(.role-alumno, .role-profesor) .notif-hist-chip {
    padding: 1px 8px;
    background: var(--brand-yellow);
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 900;
    text-transform: uppercase;
}
body:is(.role-alumno, .role-profesor) .notif-hist-fecha {
    margin-left: auto;
    font-size: 0.78rem;
    color: var(--brand-text-muted);
}
body:is(.role-alumno, .role-profesor) .notif-hist-msg {
    margin: 6px 0 0;
    white-space: pre-line;
}
body:is(.role-alumno, .role-profesor) .notif-hist-vacio {
    margin: 12px 0;
    text-align: center;
    color: var(--brand-text-muted);
}
@media (max-width: 860px) {
    body:is(.role-alumno, .role-profesor) .almhead-right {
        gap: 8px !important;
    }
    body:is(.role-alumno, .role-profesor) .alm-campana {
        width: 36px;
        height: 36px;
        border-width: 2px;
        box-shadow: 2px 2px 0 var(--brand-black);
        font-size: 0.9rem;
    }
    body:is(.role-alumno, .role-profesor) .alm-campana-num {
        top: -7px;
        right: -7px;
        min-width: 20px;
        height: 20px;
        font-size: 0.68rem;
        line-height: 16px;
    }
}
/* Alumno: el menú lateral llega hasta abajo (el hueco final va dentro del contenido, no debajo del menú) */
@media (min-width: 861px) {
    body.role-alumno .dashboard-wrapper {
        padding-bottom: 0 !important;
    }
    body.role-alumno .dash-main {
        padding-bottom: 80px !important;
    }
    body.role-alumno .dash-layout {
        min-height: calc(100vh - 116px);
    }
}

/* ══════════════════════════════════════════════════════════════════════
   Alumno: página de Inicio (tarjetas como el inicio del profesor) y
   panel de Asignaturas con una tarjeta por asignatura.
   ══════════════════════════════════════════════════════════════════════ */
body.role-alumno [data-accent="yellow"] { --alm-accent: var(--apr-color-yellow); --alm-accent-light: var(--apr-color-yellow-light); }
body.role-alumno [data-accent="orange"] { --alm-accent: var(--apr-color-orange); --alm-accent-light: var(--apr-color-orange-light); }
body.role-alumno [data-accent="teal"]   { --alm-accent: var(--apr-color-teal);   --alm-accent-light: var(--apr-color-teal-light); }
body.role-alumno [data-accent="pink"]   { --alm-accent: var(--apr-color-pink);   --alm-accent-light: var(--apr-color-pink-light); }

/* Los paneles de Inicio y Asignaturas van sin marco exterior: sus tarjetas ya lo llevan */
body.role-alumno #asignaturas.editForm {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
}
body.role-alumno .alm-inicio .apr-push-card {
    margin-bottom: 20px;
}

/* ── Inicio: rejilla de tarjetas ── */
body.role-alumno .alm-home-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    align-items: start;
}
body.role-alumno .alm-hub-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    background: var(--brand-white);
    border: 3px solid var(--brand-black);
    border-radius: var(--apr-radius);
    box-shadow: var(--apr-shadow);
    overflow: hidden;
}
body.role-alumno .alm-hub-card-head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: var(--alm-accent-light, var(--apr-color-yellow-light));
    border-bottom: 3px solid var(--brand-black);
}
body.role-alumno .alm-hub-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--alm-accent, var(--brand-yellow));
    color: var(--brand-black);
    border: 2px solid var(--brand-black);
    border-radius: 8px;
    box-shadow: 2px 2px 0 var(--brand-black);
    font-size: 1.05rem;
}
body.role-alumno [data-accent="teal"] .alm-hub-icon { color: var(--brand-white); }
body.role-alumno .alm-hub-card-head h2 {
    margin: 0 !important;
    font-size: 1.02rem !important;
    font-weight: 900 !important;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    line-height: 1.2 !important;
    color: var(--brand-black) !important;
}
body.role-alumno .alm-hub-card-body {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
body.role-alumno .alm-hub-desc {
    margin: 0;
    color: var(--brand-text-muted);
    font-size: 0.92rem;
    font-weight: 600;
}
body.role-alumno .alm-hub-desc i { color: var(--brand-success); margin-right: 4px; }
body.role-alumno .alm-muted {
    color: var(--brand-text-muted);
    font-size: 0.82rem;
    font-weight: 600;
}
body.role-alumno .alm-mono,
body.role-alumno .alm-time-badge,
body.role-alumno .alm-count {
    font-family: 'JetBrains Mono', monospace;
}

/* Enlaces de pie de tarjeta ("Ver mi horario", "Ver mis pagos"...) */
body.role-alumno .alm-hub-links {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    padding-top: 10px;
    border-top: 2px dashed #d0d0d0;
}
body.role-alumno .alm-hub-link {
    color: var(--brand-black) !important;
    font-weight: 800;
    font-size: 0.82rem;
    text-decoration: underline !important;
    text-underline-offset: 3px;
}
body.role-alumno .alm-hub-link i { margin-right: 4px; }
body.role-alumno .alm-hub-link:hover { color: var(--brand-cyan) !important; }

/* Clases de hoy */
body.role-alumno .alm-today-item,
body.role-alumno .alm-pago-item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 12px;
}
body.role-alumno .alm-today-item + .alm-today-item,
body.role-alumno .alm-pago-item + .alm-pago-item {
    padding-top: 12px;
    border-top: 2px dashed #d0d0d0;
}
body.role-alumno .alm-today-info {
    flex: 1 1 150px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
body.role-alumno .alm-today-info strong {
    font-weight: 900;
    font-size: 0.98rem;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
body.role-alumno .alm-time-badge {
    flex-shrink: 0;
    background: var(--brand-black);
    color: var(--brand-yellow);
    font-weight: 800;
    font-size: 0.8rem;
    padding: 4px 9px;
    border-radius: 4px;
}
body.role-alumno .alm-time-badge.is-live { background: var(--brand-danger); color: var(--brand-white); }

/* Botón rojo "EN DIRECTO · Entrar" (Inicio y Asignaturas) */
body.role-alumno .alm-live-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    background: var(--brand-danger);
    color: var(--brand-white);
    border: 3px solid var(--brand-black);
    border-radius: var(--apr-radius-pill);
    box-shadow: 3px 3px 0 var(--brand-black);
    font-weight: 800;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    line-height: 1.1;
    cursor: pointer;
    white-space: nowrap;
    transition: transform 0.12s ease, box-shadow 0.12s ease;
}
body.role-alumno .alm-live-btn b { font-weight: 900; }
body.role-alumno .alm-live-btn:hover { transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--brand-black); }
body.role-alumno .alm-live-btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--brand-black); }
body.role-alumno .alm-live-btn:focus-visible { outline: 3px solid var(--brand-yellow); outline-offset: 2px; }
body.role-alumno .alm-live-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--brand-white);
    box-shadow: 0 0 0 2px rgba(255,255,255,0.35);
    animation: alm-live-pulse 1.4s ease-in-out infinite;
}
@keyframes alm-live-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.35; }
}

/* Pendiente: lista con contadores */
body.role-alumno .alm-hub-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
body.role-alumno .alm-hub-list li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 9px 0;
    border-bottom: 2px dashed #d0d0d0;
    font-size: 0.9rem;
    font-weight: 700;
}
body.role-alumno .alm-hub-list li:first-child { padding-top: 0; }
body.role-alumno .alm-hub-list li:last-child { border-bottom: none; padding-bottom: 0; }
body.role-alumno .alm-hub-list a {
    color: var(--brand-black) !important;
    text-decoration: underline !important;
    text-underline-offset: 3px;
    min-width: 0;
}
body.role-alumno .alm-hub-list a i { width: 18px; text-align: center; margin-right: 4px; }
body.role-alumno .alm-hub-list li.is-alert a { color: #b42318 !important; }
body.role-alumno .alm-count {
    flex-shrink: 0;
    min-width: 32px;
    padding: 2px 8px;
    text-align: center;
    font-weight: 800;
    background: var(--brand-yellow);
    border: 2px solid var(--brand-black);
    border-radius: 6px;
}
body.role-alumno .alm-count.is-alert { background: var(--brand-danger); color: var(--brand-white); }

/* Mi asistencia */
body.role-alumno .alm-asis {
    display: flex;
    align-items: baseline;
    gap: 10px;
    flex-wrap: wrap;
}
body.role-alumno .alm-asis-value {
    font-size: 2.4rem;
    font-weight: 900;
    line-height: 1;
}
body.role-alumno .alm-asis-label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--brand-text-muted);
}
body.role-alumno .alm-asis-bar {
    height: 18px;
    background: var(--brand-bg);
    border: 3px solid var(--brand-black);
    border-radius: var(--apr-radius-pill);
    overflow: hidden;
}
body.role-alumno .alm-asis-fill {
    display: block;
    height: 100%;
    border-right: 3px solid var(--brand-black);
}
body.role-alumno .alm-asis-fill.is-ok { background: var(--brand-success); }
body.role-alumno .alm-asis-fill.is-warn { background: var(--brand-yellow); }
body.role-alumno .alm-asis-fill.is-bad { background: var(--brand-danger); }

/* Pagos */
body.role-alumno .alm-pago-importe { font-size: 1.35rem !important; }
body.role-alumno .alm-pago-item .btn {
    padding: 8px 14px !important;
    font-size: 0.75rem !important;
    text-decoration: none !important;
}
body.role-alumno .alm-pagos-ok {
    color: var(--brand-black);
    font-weight: 800;
    font-size: 1rem;
}

/* ── Asignaturas: una tarjeta por asignatura ── */
body.role-alumno .alm-asig {
    display: flex;
    flex-direction: column;
    gap: 28px;
}
body.role-alumno .alm-asig-curso-title {
    display: inline-block;
    margin: 0 0 14px !important;
    padding: 6px 14px;
    background: var(--brand-black);
    color: var(--brand-yellow) !important;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.8rem !important;
    font-weight: 800 !important;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    border-radius: 6px;
}
body.role-alumno .alm-asig-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
}
body.role-alumno .alm-asig-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    background: var(--brand-white);
    border: 3px solid var(--brand-black);
    border-radius: var(--apr-radius);
    box-shadow: var(--apr-shadow);
    overflow: hidden;
}
body.role-alumno .alm-asig-card.is-live {
    border-color: var(--brand-danger);
    box-shadow: 4px 4px 0 var(--brand-danger);
}
body.role-alumno .alm-asig-card-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 12px 16px;
    background: var(--apr-color-yellow-light);
    border-bottom: 3px solid var(--brand-black);
}
body.role-alumno .alm-asig-name {
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    font-size: 1.05rem !important;
    font-weight: 900 !important;
    line-height: 1.25 !important;
    color: var(--brand-black) !important;
    text-transform: none !important;
    overflow-wrap: anywhere;
    flex: 1 1 160px;
}
/* Escritorio: fila-tarjeta (horario y aula a la izquierda, botones a la derecha) */
body.role-alumno .alm-asig-body {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0 12px;
    flex: 1;
}
body.role-alumno .alm-asig-meta {
    flex: 1 1 260px;
    min-width: 0;
    padding: 12px 16px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: 1;
}
body.role-alumno .alm-asig-horas {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 0.88rem;
}
body.role-alumno .alm-asig-horas b { display: inline-block; min-width: 82px; font-weight: 800; }
body.role-alumno .alm-asig-aula,
body.role-alumno .alm-asig-sin {
    margin: 0;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--brand-text-muted);
}
body.role-alumno .alm-asig-aula i { margin-right: 4px; }
body.role-alumno .alm-asig-actions {
    display: grid;
    grid-template-columns: repeat(4, 126px);
    gap: 10px;
    padding: 12px 16px 16px;
}
body.role-alumno .alm-asig-btn {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 46px;
    padding: 8px 10px;
    background: var(--brand-white);
    color: var(--brand-black) !important;
    border: 2px solid var(--brand-black);
    border-radius: 10px;
    box-shadow: 3px 3px 0 var(--brand-black);
    font-weight: 800;
    font-size: 0.85rem;
    text-decoration: none !important;
    transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease;
}
body.role-alumno .alm-asig-btn i { font-size: 1.05rem; }
body.role-alumno .alm-asig-btn:hover {
    background: var(--brand-yellow);
    transform: translate(-1px, -1px);
    box-shadow: 4px 4px 0 var(--brand-black);
}
body.role-alumno .alm-asig-btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--brand-black); }
body.role-alumno .alm-asig-btn.is-pending { background: #fff0f0; border-color: var(--brand-danger); }
body.role-alumno .alm-asig-btn.is-pending i { color: var(--brand-danger); }
body.role-alumno .alm-asig-badge {
    position: absolute;
    top: -9px;
    right: -9px;
    min-width: 22px;
    height: 22px;
    padding: 0 5px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--brand-cyan);
    color: var(--brand-white);
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    font-weight: 800;
}
body.role-alumno .alm-asig-badge.is-alert { background: var(--brand-danger); }

@media (max-width: 991px) {
    body.role-alumno .alm-home-grid { grid-template-columns: minmax(0, 1fr); gap: 18px; }
    body.role-alumno .alm-asig-actions { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); flex: 1 1 100%; padding-top: 0; }
}
@media (max-width: 767px) {
    body.role-alumno .alm-asig-grid { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    body.role-alumno .alm-asig-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.role-alumno .alm-asis-value { font-size: 2rem; }
    body.role-alumno .alm-today-item .alm-live-btn,
    body.role-alumno .alm-pago-item .btn { width: 100%; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
    body.role-alumno .alm-live-dot { animation: none; }
    body.role-alumno .alm-live-btn,
    body.role-alumno .alm-asig-btn { transition: none; }
}

/* ══════════════════════════════════════════════════════════════════════
   Alumno: armazón fuera del Inicio (user/alumno/_shell.html.twig).
   Material didáctico, Vídeos, Consultas, Encargos, Biblioteca, Pago...
   llevan la misma cabecera y menú lateral que el Inicio, con la página
   en la columna de la derecha.
   ══════════════════════════════════════════════════════════════════════ */
body.role-alumno .alm-shell-main > .wrap-body {
    min-width: 0 !important;
}
/* Cabeceras de página con el botón Volver flotando a la derecha: que el
   recuadro lo contenga cuando no cabe al lado del título (columna estrecha) */
body.role-alumno .alm-shell-main .headTitle {
    display: flow-root !important;
}
/* Banner de asignatura (Vídeos): en la columna va como tarjeta, sin salirse */
body.role-alumno .alm-shell-main .asg-banner {
    margin: 0 0 24px 0 !important;
    width: auto !important;
    border: 3px solid var(--brand-black) !important;
    border-radius: 12px !important;
    box-shadow: 4px 4px 0 0 var(--brand-black) !important;
}
body.role-alumno .alm-shell-main .asg-banner > .container {
    max-width: none !important;
}

/* Pago de cuota con tarjeta (pago/pagar-redsys.html.twig) */
body.role-alumno .alm-pago-card {
    max-width: 480px;
    margin: 12px auto 0;
    background: #fff;
    border: 3px solid var(--brand-black);
    border-radius: 14px;
    box-shadow: 6px 6px 0 0 var(--brand-black);
    padding: 32px 28px;
    text-align: center;
    box-sizing: border-box;
}
body.role-alumno .alm-pago-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 1px;
    text-transform: uppercase;
    background: var(--brand-yellow);
    border: 2px solid var(--brand-black);
    padding: 3px 10px;
    margin-bottom: 12px;
}
body.role-alumno .alm-pago-card h2 {
    font-weight: 900;
    font-size: 1.6rem;
    margin: 0 0 6px;
}
body.role-alumno .alm-pago-concepto {
    color: #4a5568;
    font-weight: 600;
    margin-bottom: 20px;
    overflow-wrap: break-word;
}
body.role-alumno .alm-pago-importe {
    font-size: 2.4rem;
    font-weight: 900;
    color: #198754;
    margin: 0 0 18px;
}
body.role-alumno .alm-pago-btn {
    padding: 12px 28px !important;
    font-size: 1.05rem !important;
    max-width: 100%;
    white-space: normal !important;
}
body.role-alumno .alm-pago-btn i { margin-right: 8px; }
body.role-alumno .alm-pago-aviso {
    font-size: 0.8rem;
    color: #6c757d;
    margin: 18px 0 10px;
}
body.role-alumno .alm-pago-volver {
    font-weight: 800;
    color: var(--brand-black);
}
@media (max-width: 480px) {
    body.role-alumno .alm-pago-card { padding: 24px 16px; }
}

/* Manual del alumno dentro del armazón: sin el logo (ya está en la cabecera)
   y con el índice más estrecho para que quepa al lado del menú lateral */
body.role-alumno .manual-en-armazon {
    background: transparent;
    border: 3px solid var(--brand-black);
    border-radius: 12px;
    box-shadow: 4px 4px 0 0 var(--brand-black);
    overflow: hidden;
}
body.role-alumno .manual-en-armazon .manual-head-bar {
    grid-template-columns: minmax(0, 1fr) auto;
}
body.role-alumno .manual-en-armazon .manual-head-title {
    text-align: left;
}
body.role-alumno .manual-en-armazon .manual-head-title p {
    margin-left: 0;
}
body.role-alumno .manual-en-armazon .shell {
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 32px;
    padding: 28px 20px 40px;
    background: var(--paper);
}
@media (max-width: 1100px) {
    body.role-alumno .manual-en-armazon .shell { grid-template-columns: 1fr; }
    body.role-alumno .manual-en-armazon .toc { position: static; }
}
@media (max-width: 900px) {
    body.role-alumno .manual-en-armazon .manual-head-bar { grid-template-columns: 1fr; }
    body.role-alumno .manual-en-armazon .manual-head-title { text-align: center; }
    body.role-alumno .manual-en-armazon .manual-head-title p { margin-left: auto; }
}
@media (max-width: 767px) {
    body.role-alumno .manual-en-armazon .shell { padding: 20px 12px 32px; }
    body.role-alumno .manual-en-armazon .step-body { padding-left: 0; }
}

/* Alumno: al volver de Material, Consultas... se resalta la asignatura de la que venía */
body.role-alumno .alm-asig-card.alm-asig-card-vuelta {
    outline: 4px solid var(--brand-yellow);
    outline-offset: 3px;
    transition: outline-color .4s ease;
}
/* Al volver de la ficha de una asignatura, la lista baja hasta ella (#asg_ID) y la resalta */
body:is(.role-profesor, .role-director, .role-administrativo) [id^="asg_"] {
    scroll-margin-top: 140px;
}
body:is(.role-profesor, .role-director, .role-administrativo) [id^="asg_"]:target {
    outline: 4px solid var(--brand-yellow);
    outline-offset: 3px;
}

/* Biblioteca del alumno en el móvil: cabecera, buscador y filtros compactos; libros de dos en dos */
@media (max-width: 767px) {
    body.role-alumno .bib-cab {
        padding: 12px !important;
    }
    body.role-alumno .bib-cab .filtros {
        float: none !important;
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin: 8px 0 0 !important;
    }
    body.role-alumno .bib-cab .filtros .btn {
        margin: 0 !important;
        padding: 6px 12px !important;
        font-size: 0.75rem !important;
    }
    body.role-alumno .bib-cab .bib-largo { display: none; }
    body.role-alumno #filter-libros > .row {
        margin-top: 8px !important;
        row-gap: 8px;
    }
    body.role-alumno #filter-libros label { display: none; }
    body.role-alumno #filter-libros > .row > [class*="col-"]:first-child { flex: 1 1 0; max-width: none; }
    body.role-alumno #filter-libros > .row > [class*="col-"]:last-child { flex: 0 0 auto; width: auto; max-width: none; }
    body.role-alumno #filter-libros > .row > [class*="col-"][hidden] { display: none !important; }
    body.role-alumno #filter-libros > .row > [class*="col-"]:not(:first-child):not(:last-child) { flex: 0 0 100%; max-width: 100%; order: 4; }
    body.role-alumno #filter-libros .btn[type="submit"] { padding: 8px 12px !important; }
    body.role-alumno .bib-filtros-btn {
        order: 3;
        margin: 0 15px !important;
        padding: 5px 12px !important;
        font-size: 0.75rem !important;
    }
    body.role-alumno #filter-libros > .row > [class*="col-"]:last-child { order: 2; }
    body.role-alumno .contenedor-libro { padding: 0 6px; margin-bottom: 12px; }
    body.role-alumno .contenedor-libro .secfilarow { padding: 8px !important; }
    body.role-alumno .contenedor-libro .titulo h4 { font-size: 0.85rem !important; }
    body.role-alumno .contenedor-libro .bookImage { max-height: 150px; width: auto; max-width: 100%; }
    body.role-alumno .contenedor-libro .autor { font-size: 0.75rem !important; }
    body.role-alumno .contenedor-libro p { display: none; }
    body.role-alumno .contenedor-libro .btn { display: block; margin: 4px 0 0 !important; padding: 5px 6px !important; font-size: 0.7rem !important; }
}
@media (max-width: 767px) {
    body.role-alumno #filter-libros > .row { align-items: center; }
    body.role-alumno #filter-libros .btn[type="submit"] { margin: 0 !important; }
    body.role-alumno .bib-filtros-btn { flex: 0 0 auto; width: auto !important; }
    body.role-alumno .bib-cab .buscador { margin-top: 0 !important; }
}
@media (max-width: 767px) {
    body.role-alumno #filter-libros > .row > [class*="col-"]:first-child { flex: 0 0 100%; max-width: 100%; }
    body.role-alumno #filter-libros > .row > [class*="col-"]:last-child { padding-left: 15px; padding-right: 4px; }
    body.role-alumno .bib-filtros-btn { margin: 0 !important; }
    body.role-alumno .contenedor-libro .secfilarow { width: 100% !important; min-width: 0 !important; max-width: 100% !important; margin: 0 !important; }
    body.role-alumno .contenedor-libro .secfilarow > .row { margin-left: 0; margin-right: 0; }
}

/* Lista de profesores: buscador y filtro de estado en una barra, email bajo el nombre,
   asignaturas plegadas, estado visible y Horario como botón secundario */
body:is(.role-director, .role-administrativo) .prof-lista-barra {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 16px;
    margin-top: 14px;
}
body:is(.role-director, .role-administrativo) .prof-lista-buscar {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1 1 360px;
    max-width: 560px;
}
body:is(.role-director, .role-administrativo) .prof-lista-buscar > .fa-search {
    position: absolute;
    left: 14px;
    color: var(--brand-text-muted);
    pointer-events: none;
}
body:is(.role-director, .role-administrativo) .prof-lista-buscar .form-control {
    padding-left: 38px !important;
}
body:is(.role-director, .role-administrativo) .prof-lista-buscar .btn { margin: 0 !important; white-space: nowrap; }
body:is(.role-director, .role-administrativo) .prof-lista-estado {
    display: inline-flex;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    overflow: hidden;
    background: var(--brand-white);
}
body:is(.role-director, .role-administrativo) .prof-estado-chip {
    padding: 6px 14px;
    border: none;
    border-right: 2px solid var(--brand-black);
    background: transparent;
    font-size: 0.78rem;
    font-weight: 800;
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .prof-estado-chip:last-child { border-right: none; }
body:is(.role-director, .role-administrativo) .prof-estado-chip.is-activo { background: var(--brand-yellow); }
body:is(.role-director, .role-administrativo) .prof-lista-quien {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
body:is(.role-director, .role-administrativo) .prof-lista-email {
    font-size: 0.75rem;
    color: var(--brand-text-muted);
    word-break: break-all;
}
body:is(.role-director, .role-administrativo) .adm-fila-profe.is-inactivo .prof-lista-quien,
body:is(.role-director, .role-administrativo) .adm-fila-profe.is-inactivo .adm-fila-chips { opacity: .55; }
body:is(.role-director, .role-administrativo) .adm-fila-profe.is-inactivo .prof-estado-texto { color: #c62828; }
body:is(.role-director, .role-administrativo) .prof-chip-oculto { display: none !important; }
body:is(.role-director, .role-administrativo) .prof-chip-mas {
    padding: 2px 10px;
    border: 2px dashed var(--brand-black);
    border-radius: 6px;
    background: var(--brand-white);
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    font-weight: 800;
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .prof-lista-horario {
    background: var(--brand-white) !important;
}
/* El ".buscador button" antiguo pone los botones en absoluto: aquí van en su sitio */
body:is(.role-director, .role-administrativo) .prof-lista-barra button {
    position: static !important;
    width: auto !important;
}
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .prof-lista-buscar { flex: 1 1 100%; max-width: none; }
    body:is(.role-director, .role-administrativo) .adm-fila-profe {
        flex-wrap: wrap !important;
        gap: 8px !important;
    }
    body:is(.role-director, .role-administrativo) .adm-fila-profe > .prof-lista-quien,
    body:is(.role-director, .role-administrativo) .adm-fila-profe > .adm-fila-chips,
    body:is(.role-director, .role-administrativo) .adm-fila-profe > .adm-row-actions {
        flex: 1 1 100% !important;
        max-width: 100% !important;
        width: 100% !important;
    }
    body:is(.role-director, .role-administrativo) .adm-fila-profe > .adm-fila-chips {
        display: flex !important;
        flex-wrap: wrap;
        gap: 4px;
    }
    body:is(.role-director, .role-administrativo) .adm-fila-profe > .adm-row-actions {
        display: flex !important;
        align-items: center;
        justify-content: space-between;
    }
}

/* Lista de alojamientos: misma barra que Profesores (buscador + chips), fila con
   dirección y colaborador, estado como etiqueta y acciones secundarias en el menú */
body:is(.role-director, .role-administrativo) .aloj-btn-blanco {
    background: var(--brand-white) !important;
    color: var(--brand-black) !important;
}
body:is(.role-director, .role-administrativo) .aloj-barra .prof-lista-buscar { flex-basis: 300px; max-width: 420px; }
body:is(.role-director, .role-administrativo) .aloj-avanzado {
    padding: 6px 14px;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    background: var(--brand-white);
    font-size: 0.78rem;
    font-weight: 800;
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .aloj-avanzado:hover { background: var(--brand-yellow); }
body:is(.role-director, .role-administrativo) .aloj-cabecera,
body:is(.role-director, .role-administrativo) .secfila.aloj-fila {
    display: grid !important;
    grid-template-columns: minmax(0, 2.2fr) minmax(0, 1.2fr) minmax(90px, .8fr) 70px auto !important;
    gap: 14px !important;
    align-items: center !important;
    text-align: left !important;
}
body:is(.role-director, .role-administrativo) .secfila.aloj-fila { padding: 12px 16px !important; }
body:is(.role-director, .role-administrativo) .aloj-cabecera { padding: 0 18px !important; }
body:is(.role-director, .role-administrativo) .aloj-cabecera > div:last-child { text-align: right; min-width: 200px; }
body:is(.role-director, .role-administrativo) .aloj-quien,
body:is(.role-director, .role-administrativo) .aloj-estado {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    min-width: 0;
}
body:is(.role-director, .role-administrativo) .aloj-direccion {
    font-size: 16px;
    font-weight: 700;
    color: var(--brand-black) !important;
    text-decoration: none !important;
    line-height: 1.3;
}
body:is(.role-director, .role-administrativo) .aloj-direccion:hover { text-decoration: underline !important; }
body:is(.role-director, .role-administrativo) .aloj-detalle {
    font-size: 0.78rem;
    color: var(--brand-text-muted);
}
body:is(.role-director, .role-administrativo) .aloj-badge {
    padding: 2px 10px;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 800;
}
body:is(.role-director, .role-administrativo) .aloj-badge.is-libre { background: #c8f0c8; }
body:is(.role-director, .role-administrativo) .aloj-badge.is-ocupado { background: #eee; }
body:is(.role-director, .role-administrativo) .aloj-precio { font-weight: 700; white-space: nowrap; }
body:is(.role-director, .role-administrativo) .aloj-fotos a {
    color: var(--brand-black) !important;
    font-weight: 700;
    text-decoration: none !important;
    white-space: nowrap;
}
body:is(.role-director, .role-administrativo) .aloj-fotos a:hover { text-decoration: underline !important; }
body:is(.role-director, .role-administrativo) .aloj-fila .adm-row-actions .btn { white-space: nowrap; }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .aloj-barra .prof-lista-buscar { max-width: none; }
    body:is(.role-director, .role-administrativo) .aloj-cabecera { display: none !important; }
    body:is(.role-director, .role-administrativo) .secfila.aloj-fila {
        grid-template-columns: 1fr auto !important;
        gap: 8px 12px !important;
    }
    body:is(.role-director, .role-administrativo) .aloj-fila > .aloj-quien,
    body:is(.role-director, .role-administrativo) .aloj-fila > .adm-row-actions { grid-column: 1 / -1; }
    body:is(.role-director, .role-administrativo) .aloj-fila > .aloj-precio { text-align: right; }
    body:is(.role-director, .role-administrativo) .aloj-fila > .adm-row-actions { justify-content: flex-start !important; flex-wrap: wrap; }
}

/* Inicio de dirección: conteo de clases del día (datos/_conteo-dia.html.twig).
   Cuadrante de horas por aulas como el PDF del conteo; en el móvil, lista por horas */
body:is(.role-director, .role-administrativo) .cnt-dia-cab {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 16px;
    margin-bottom: 10px;
}
body:is(.role-director, .role-administrativo) .cnt-dia-cab .adm-panel-title { margin: 0 !important; }
body:is(.role-director, .role-administrativo) .cnt-dia-total {
    display: inline-block;
    min-width: 26px;
    margin-left: 6px;
    padding: 0 8px;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    background: var(--brand-yellow);
    font-size: 0.8rem;
    text-align: center;
}
body:is(.role-director, .role-administrativo) .cnt-dia-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
body:is(.role-director, .role-administrativo) .cnt-dia-btn {
    min-width: 34px;
    height: 32px;
    padding: 0 10px;
    border: 2px solid var(--brand-black);
    border-radius: 8px;
    background: var(--brand-white);
    font-weight: 800;
    font-size: 0.8rem;
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .cnt-dia-btn:hover { background: var(--brand-yellow); }
/* Día / Semana: dos botones unidos, el elegido en negro */
body:is(.role-director, .role-administrativo) .cnt-vista {
    display: inline-flex;
    border: 2px solid var(--brand-black);
    border-radius: 8px;
    overflow: hidden;
}
body:is(.role-director, .role-administrativo) .cnt-vista-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 28px;
    padding: 0 12px;
    border: 0;
    background: var(--brand-white);
    font-size: 0.8rem;
    font-weight: 800;
    color: var(--brand-black);
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .cnt-vista-btn + .cnt-vista-btn { border-left: 2px solid var(--brand-black); }
body:is(.role-director, .role-administrativo) .cnt-vista-btn:hover { background: var(--brand-yellow); }
body:is(.role-director, .role-administrativo) .cnt-vista-btn[aria-pressed="true"] { background: var(--brand-black); color: var(--brand-white); }
/* Vista de la semana: los días en columnas iguales (3 por fila en pantallas grandes),
   todos con las mismas horas para que midan lo mismo; letra pequeña para que quepa */
body:is(.role-director, .role-administrativo) .cnt-hoja { display: grid; grid-template-columns: 1fr; gap: 12px; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-semana-dia { display: flex; flex-direction: column; min-width: 0; margin: 0; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla-scroll { flex: 1 1 auto; display: flex; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla { height: 100%; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-semana-dia.is-vacio .cnt-dia-vacio {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px dashed #bbb;
    border-radius: 8px;
}
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla { font-size: 0.6rem; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla th,
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla td { min-width: 0; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla .cnt-hora { width: 34px; min-width: 34px; font-size: 0.58rem; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla thead th { padding: 2px 0; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla thead th small { font-size: 0.55rem; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-rejilla tbody tr { height: 17px; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-clase { padding: 1px 0; letter-spacing: -0.2px; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-n { font-size: 0.68rem; }
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-n small,
body:is(.role-director, .role-administrativo) .cnt-hoja .cnt-profe { font-size: 0.52rem; }
@media (min-width: 768px) {
    body:is(.role-director, .role-administrativo) .cnt-hoja { grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; }
}
@media (min-width: 1200px) {
    body:is(.role-director, .role-administrativo) .cnt-hoja { grid-template-columns: repeat(3, 1fr); }
}
body:is(.role-director, .role-administrativo) .cnt-semana-titulo {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin: 0 0 4px;
    font-size: 0.9rem;
    font-weight: 800;
}
body:is(.role-director, .role-administrativo) .cnt-semana-titulo button {
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    color: var(--brand-black);
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .cnt-semana-titulo .cnt-dia-total { margin-left: 0; }
/* Resumen de la semana: mismo tamaño que un día, con desplazamiento si no cabe */
body:is(.role-director, .role-administrativo) .cnt-resumen-cuerpo {
    flex: 1 1 0;
    min-height: 220px;
    overflow-y: auto;
    padding: 10px;
    border: 2px solid var(--brand-black);
    border-radius: 8px;
    background: var(--brand-white);
    font-size: 0.78rem;
}
body:is(.role-director, .role-administrativo) .cnt-resumen-bloque + .cnt-resumen-bloque { margin-top: 10px; padding-top: 8px; border-top: 1px dashed #bbb; }
body:is(.role-director, .role-administrativo) .cnt-resumen-bloque h4 { display: flex; align-items: center; gap: 6px; margin: 0 0 4px; font-size: 0.8rem; font-weight: 800; text-transform: uppercase; letter-spacing: .5px; }
body:is(.role-director, .role-administrativo) .cnt-resumen-bloque small { color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .cnt-resumen-alumnos { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 0 0 2px; }
body:is(.role-director, .role-administrativo) .cnt-resumen-alumnos b { font-size: 1.05rem; }
body:is(.role-director, .role-administrativo) .cnt-resumen-lista,
body:is(.role-director, .role-administrativo) .cnt-resumen-barras,
body:is(.role-director, .role-administrativo) .cnt-resumen-cursos { margin: 0; padding: 0; list-style: none; }
body:is(.role-director, .role-administrativo) .cnt-resumen-lista a {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    padding: 2px 4px;
    border-radius: 4px;
    color: var(--brand-black) !important;
    text-decoration: none !important;
}
body:is(.role-director, .role-administrativo) .cnt-resumen-lista a:hover { background: #fdecec; }
body:is(.role-director, .role-administrativo) .cnt-resumen-lista span { font-size: 0.78rem; font-weight: 400; }
body:is(.role-director, .role-administrativo) .cnt-resumen-lista .cnt-n { font-weight: 800; white-space: nowrap; }
body:is(.role-director, .role-administrativo) .cnt-resumen-barras li { display: grid; grid-template-columns: 64px 1fr 40px; align-items: center; gap: 6px; }
body:is(.role-director, .role-administrativo) .cnt-resumen-barras i {
    height: 8px;
    border: 1px solid var(--brand-black);
    border-radius: 999px;
    background: linear-gradient(90deg, var(--brand-yellow) var(--pct), #f2f2f2 var(--pct));
}
body:is(.role-director, .role-administrativo) .cnt-resumen-barras b { text-align: right; font-family: 'JetBrains Mono', monospace; }
body:is(.role-director, .role-administrativo) .cnt-resumen-cursos { columns: 2; column-gap: 14px; }
body:is(.role-director, .role-administrativo) .cnt-resumen-cursos li { display: flex; justify-content: space-between; gap: 6px; break-inside: avoid; padding-left: 8px; }
body:is(.role-director, .role-administrativo) .cnt-resumen-cursos li.cnt-resumen-cat { padding-left: 0; font-weight: 800; }
body:is(.role-director, .role-administrativo) .cnt-resumen-cursos b { font-family: 'JetBrains Mono', monospace; }
body:is(.role-director, .role-administrativo) .cnt-semana-rojo {
    padding: 0 8px;
    border: 2px solid #c62828;
    border-radius: 999px;
    color: #c62828;
    font-size: 0.72rem;
}
body:is(.role-director, .role-administrativo) .cnt-semana-dia.is-vacio .cnt-dia-vacio { margin: 0; }
body:is(.role-director, .role-administrativo) .cnt-solo-aforo .cnt-semana-dia:not(.con-exceso):not(.cnt-resumen) { display: none; }
body:is(.role-director, .role-administrativo) .cnt-dia-vacio { margin: 6px 0; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .cnt-dia-cuerpo[aria-busy] { opacity: .5; }
body:is(.role-director, .role-administrativo) .cnt-n.is-rojo { color: #c62828; }
body:is(.role-director, .role-administrativo) .cnt-rejilla-scroll {
    overflow-x: auto;
    border: 2px solid var(--brand-black);
    border-radius: 8px;
}
body:is(.role-director, .role-administrativo) .cnt-rejilla {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 0.72rem;
    background: var(--brand-white);
}
body:is(.role-director, .role-administrativo) .cnt-rejilla th,
body:is(.role-director, .role-administrativo) .cnt-rejilla td {
    border: 1px solid #c8c8c8;
    padding: 0;
    text-align: center;
    vertical-align: top;
    min-width: 56px;
}
body:is(.role-director, .role-administrativo) .cnt-rejilla thead th {
    position: sticky;
    top: 0;
    background: var(--brand-yellow);
    border-bottom: 2px solid var(--brand-black);
    padding: 3px 2px;
    font-weight: 800;
}
body:is(.role-director, .role-administrativo) .cnt-rejilla thead th small {
    display: block;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 400;
    font-size: 0.65rem;
}
body:is(.role-director, .role-administrativo) .cnt-rejilla .cnt-hora {
    width: 48px;
    min-width: 48px;
    background: #f5f5f5;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 400;
    font-size: 0.68rem;
    color: #444;
}
body:is(.role-director, .role-administrativo) .cnt-rejilla tbody tr { height: 26px; }
body:is(.role-director, .role-administrativo) .cnt-rejilla tbody tr:not(.cnt-media) > * { border-top: 1.5px solid #777; }
body:is(.role-director, .role-administrativo) .cnt-hueco > * {
    height: 8px;
    background: repeating-linear-gradient(45deg, #fff, #fff 3px, #e6e6e6 3px, #e6e6e6 6px) !important;
    font-size: 0 !important;
}
body:is(.role-director, .role-administrativo) .cnt-sigue { border-top: 0 !important; }
body:is(.role-director, .role-administrativo) .cnt-celda { border: 1.5px solid #444 !important; vertical-align: middle !important; }
body:is(.role-director, .role-administrativo) .cnt-celda.is-exceso .cnt-clase { box-shadow: inset 0 0 0 2px #c62828; }
body:is(.role-director, .role-administrativo) .cnt-clase {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 100%;
    padding: 2px 1px;
    line-height: 1.1;
    color: var(--brand-black) !important;
    text-decoration: none !important;
    word-break: break-word;
}
body:is(.role-director, .role-administrativo) .cnt-celda .cnt-clase + .cnt-clase { border-top: 1px dotted #777; }
body:is(.role-director, .role-administrativo) .cnt-clase:hover { filter: brightness(.93); box-shadow: inset 0 0 0 2px var(--brand-black); }
body:is(.role-director, .role-administrativo) .cnt-siglas { font-weight: 800; }
body:is(.role-director, .role-administrativo) .cnt-n { font-weight: 800; font-size: 0.85rem; white-space: nowrap; }
body:is(.role-director, .role-administrativo) .cnt-n small { font-weight: 400; font-size: 0.65rem; color: #555; margin-left: 1px; }
body:is(.role-director, .role-administrativo) .cnt-profe { font-size: 0.62rem; color: #444; }
body:is(.role-director, .role-administrativo) .cnt-lista { display: none; }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .cnt-rejilla-scroll { display: none; }
    body:is(.role-director, .role-administrativo) .cnt-lista { display: block; margin: 0; padding: 0; list-style: none; }
    body:is(.role-director, .role-administrativo) .cnt-lista-hora {
        margin: 10px 0 4px;
        font-family: 'JetBrains Mono', monospace;
        font-weight: 800;
        font-size: 0.8rem;
    }
    body:is(.role-director, .role-administrativo) .cnt-lista-clase {
        display: flex;
        align-items: center;
        gap: 10px;
        margin-bottom: 6px;
        padding: 8px 10px;
        border: 2px solid var(--brand-black);
        border-radius: 8px;
        background: var(--brand-white);
        color: var(--brand-black) !important;
        text-decoration: none !important;
    }
    body:is(.role-director, .role-administrativo) .cnt-lista-clase.is-exceso { border-color: #c62828; }
    body:is(.role-director, .role-administrativo) .cnt-lista-color { flex: 0 0 10px; align-self: stretch; border-radius: 4px; border: 1px solid #999; }
    body:is(.role-director, .role-administrativo) .cnt-lista-datos { flex: 1; min-width: 0; display: flex; flex-direction: column; }
    body:is(.role-director, .role-administrativo) .cnt-lista-datos small { color: var(--brand-text-muted); }
}

/* Conteo del día en el Inicio: barra con el filtro de cursos y botones-chip de lo que se
   ve; cifras del día en cajitas. En el móvil la barra va recogida tras "Opciones" */
body:is(.role-director, .role-administrativo) .cnt-barra {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 10px;
    margin-bottom: 12px;
}
body:is(.role-director, .role-administrativo) .cnt-grupo {
    position: relative;
    display: inline-flex;
    align-items: center;
    margin: 0;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    background: var(--brand-white);
    box-shadow: 2px 2px 0 var(--brand-black);
}
body:is(.role-director, .role-administrativo) .cnt-grupo > i { position: absolute; left: 12px; font-size: 0.75rem; pointer-events: none; }
body:is(.role-director, .role-administrativo) .cnt-dia-grupo {
    height: 34px !important;
    min-height: 0 !important;
    max-width: 260px;
    margin: 0 !important;
    padding: 0 30px 0 32px !important;
    border: 0 !important;
    border-radius: 999px !important;
    box-shadow: none !important;
    background-color: transparent !important;
    font-size: 0.8rem !important;
    font-weight: 800 !important;
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .cnt-chips {
    display: inline-flex;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    overflow: hidden;
    background: var(--brand-white);
    box-shadow: 2px 2px 0 var(--brand-black);
}
body:is(.role-director, .role-administrativo) .cnt-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 34px;
    padding: 0 14px;
    border: 0;
    background: var(--brand-white);
    font-size: 0.78rem;
    font-weight: 800;
    color: var(--brand-black);
    cursor: pointer;
}
body:is(.role-director, .role-administrativo) .cnt-chips .cnt-chip + .cnt-chip { border-left: 2px solid var(--brand-black); }
body:is(.role-director, .role-administrativo) .cnt-chip[aria-pressed="false"] { color: #777; }
body:is(.role-director, .role-administrativo) .cnt-chip[aria-pressed="false"] i { opacity: .5; }
body:is(.role-director, .role-administrativo) .cnt-chip[aria-pressed="true"] { background: var(--brand-yellow); }
body:is(.role-director, .role-administrativo) .cnt-chip-rojo[aria-pressed="true"] { background: #c62828; color: #fff; }
body:is(.role-director, .role-administrativo) .cnt-imprimir {
    margin-left: auto;
    border: 2px solid var(--brand-black);
    border-radius: 999px;
    box-shadow: 2px 2px 0 var(--brand-black);
}
body:is(.role-director, .role-administrativo) .cnt-imprimir:hover,
body:is(.role-director, .role-administrativo) .cnt-chip[aria-pressed="false"]:hover { background: #fff6c2; }
body:is(.role-director, .role-administrativo) .cnt-opciones-btn { display: none; }
body:is(.role-director, .role-administrativo) .cnt-cifras { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
body:is(.role-director, .role-administrativo) .cnt-cifra {
    display: flex;
    align-items: baseline;
    gap: 6px;
    padding: 4px 12px;
    border: 2px solid var(--brand-black);
    border-radius: 8px;
    background: var(--brand-bg);
}
body:is(.role-director, .role-administrativo) .cnt-cifra b { font-size: 1.1rem; font-weight: 900; }
body:is(.role-director, .role-administrativo) .cnt-cifra b small { font-size: 0.7rem; font-weight: 700; color: #555; margin-left: 2px; }
body:is(.role-director, .role-administrativo) .cnt-cifra > span {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.65rem;
    font-weight: 800;
    letter-spacing: .5px;
    text-transform: uppercase;
    color: #555;
}
body:is(.role-director, .role-administrativo) .cnt-cifra.is-rojo { border-color: #c62828; background: #fdecec; }
body:is(.role-director, .role-administrativo) .cnt-cifra.is-rojo b { color: #c62828; }
body:is(.role-director, .role-administrativo) .cnt-sin-profe .cnt-profe,
body:is(.role-director, .role-administrativo) .cnt-sin-online .cnt-on { display: none !important; }
body:is(.role-director, .role-administrativo) .cnt-solo-aforo .cnt-clase:not(.is-exceso) { opacity: .2; }
body:is(.role-director, .role-administrativo) .cnt-solo-aforo .cnt-lista-item:not(.is-exceso),
body:is(.role-director, .role-administrativo) .cnt-solo-aforo .cnt-lista-hora.is-vacia { display: none; }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .cnt-opciones-btn {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        height: 32px;
        padding: 0 12px;
        border: 2px solid var(--brand-black);
        border-radius: 999px;
        background: var(--brand-white);
        font-size: 0.78rem;
        font-weight: 800;
    }
    body:is(.role-director, .role-administrativo) .cnt-opciones-abiertas .cnt-opciones-btn { background: var(--brand-yellow); }
    body:is(.role-director, .role-administrativo) .cnt-opciones-marca {
        min-width: 18px;
        padding: 0 5px;
        border-radius: 999px;
        background: var(--brand-black);
        color: var(--brand-yellow);
        font-size: 0.65rem;
        text-align: center;
    }
    body:is(.role-director, .role-administrativo) .cnt-barra { display: none; }
    body:is(.role-director, .role-administrativo) .cnt-opciones-abiertas .cnt-barra { display: flex; }
    body:is(.role-director, .role-administrativo) .cnt-grupo,
    body:is(.role-director, .role-administrativo) .cnt-dia-grupo { width: 100%; max-width: none; }
    body:is(.role-director, .role-administrativo) .cnt-chips { flex: 1 1 auto; }
    body:is(.role-director, .role-administrativo) .cnt-chips .cnt-chip { flex: 1 1 0; justify-content: center; padding: 0 6px; font-size: 0.72rem; }
    body:is(.role-director, .role-administrativo) .cnt-imprimir { margin-left: 0; }
    body:is(.role-director, .role-administrativo) .cnt-cifras { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
    body:is(.role-director, .role-administrativo) .cnt-cifra { padding: 3px 8px; }
    body:is(.role-director, .role-administrativo) .cnt-cifra b { font-size: 1rem; }
    body:is(.role-director, .role-administrativo) .cnt-dia-cab { margin-bottom: 8px; }
}

/* Inicio de dirección en pantallas grandes: usa todo el ancho, con Recordatorios y
   Altas del día lado a lado; el resto (cifras, accesos, conteo del día) a lo ancho */
@media (min-width: 1500px) {
    body:is(.role-director, .role-administrativo) .adm-inicio {
        max-width: 2200px !important;
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        column-gap: 22px;
        align-items: start;
    }
    body:is(.role-director, .role-administrativo) .adm-inicio > * { grid-column: 1 / -1; }
    body:is(.role-director, .role-administrativo) .adm-inicio > .adm-panel { margin-top: 0 !important; margin-bottom: 18px !important; }
    body:is(.role-director, .role-administrativo) .adm-inicio > .adm-rec-inicio { grid-column: 1; }
    body:is(.role-director, .role-administrativo) .adm-inicio > .adm-altas-dia { grid-column: 2; }
    /* Los dos paneles de lado a lado, siempre de la misma altura */
    body:is(.role-director, .role-administrativo) .adm-inicio > :is(.adm-rec-inicio, .adm-altas-dia) { align-self: stretch; }
}

/* Permisos de un administrativo (ficha, solo la ve el director) */
body.role-director .adm-permisos { margin: 10px 0 0; padding: 12px 14px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); }
body.role-director .adm-permisos legend { width: auto; margin: 0; padding: 0 6px; font-size: 0.95rem; font-weight: 800; }
body.role-director .adm-permisos-ayuda { margin: 0 0 8px; font-size: 0.8rem; color: var(--brand-text-muted); }
body.role-director .adm-permiso { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; font-weight: 600; cursor: pointer; }
body.role-director .adm-permiso input { width: 18px; height: 18px; }
body.role-director .adm-permiso-total { margin-top: 8px; padding-top: 8px; border-top: 1px dashed #bbb; font-weight: 800; }

/* Forma de pago para las nóminas (ficha de profesor y de administrativo) */
body:is(.role-director, .role-administrativo) .forma-pago { margin: 10px 0 0; padding: 12px 14px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); }
body:is(.role-director, .role-administrativo) .forma-pago legend { width: auto; margin: 0; padding: 0 6px; font-size: 0.95rem; font-weight: 800; }
body:is(.role-director, .role-administrativo) .forma-pago .adm-permisos-ayuda { margin: 0 0 8px; font-size: 0.8rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .forma-pago-campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px 16px; margin-bottom: 8px; }
body:is(.role-director, .role-administrativo) .forma-pago label { display: flex; flex-direction: column; gap: 4px; margin: 0; font-weight: 700; }
body:is(.role-director, .role-administrativo) .forma-pago-grupos { margin-top: 6px; padding-top: 8px; border-top: 1px dashed #bbb; }
body:is(.role-director, .role-administrativo) :is(.forma-pago-tabla, .precios-grupos-tabla) { width: 100%; max-width: 460px; margin: 0 0 8px; border-collapse: collapse; }
body:is(.role-director, .role-administrativo) :is(.forma-pago-tabla, .precios-grupos-tabla) th { padding: 0 6px 4px; font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; color: var(--brand-text-muted); text-align: left; }
body:is(.role-director, .role-administrativo) :is(.forma-pago-tabla, .precios-grupos-tabla) td { padding: 3px 6px; font-weight: 700; vertical-align: middle; }
body:is(.role-director, .role-administrativo) :is(.forma-pago-tabla, .precios-grupos-tabla) .form-control { height: 36px; min-height: 36px; }
body:is(.role-director, .role-administrativo) .forma-pago-tabla td:nth-child(3) { width: 45%; }
body:is(.role-director, .role-administrativo) .precios-grupos-tabla td:last-child { width: 1%; }
body:is(.role-director, .role-administrativo) .precios-grupos-ayuda { margin: 0 0 10px; font-size: 0.85rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .precios-sala { display: flex; flex-direction: column; gap: 4px; max-width: 320px; margin: 0 0 14px; font-weight: 700; }
body:is(.role-director, .role-administrativo) .precios-grupos-titulo { margin: 0 0 2px; padding-top: 10px; border-top: 1px dashed #bbb; font-weight: 800; }

/* Pagos fijos de las nóminas (alquiler…) */
body:is(.role-director, .role-administrativo) .pagos-fijos-filas { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
body:is(.role-director, .role-administrativo) .pago-fijo { display: grid; grid-template-columns: 2fr 1fr 2fr 1fr 1fr 2fr auto auto; gap: 8px 12px; align-items: end; padding: 12px 14px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); }
body:is(.role-director, .role-administrativo) .pago-fijo label { display: flex; flex-direction: column; gap: 4px; margin: 0; font-weight: 700; font-size: 0.85rem; }
body:is(.role-director, .role-administrativo) .pago-fijo .pago-fijo-activo { flex-direction: row; align-items: center; gap: 6px; padding-bottom: 8px; }
body:is(.role-director, .role-administrativo) .pago-fijo-activo input { width: 18px; height: 18px; }
body:is(.role-director, .role-administrativo) .pago-fijo .btn-danger { margin-bottom: 4px; }
body:is(.role-director, .role-administrativo) .pagos-fijos-botones { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 991px) {
    body:is(.role-director, .role-administrativo) .pago-fijo { grid-template-columns: 1fr 1fr; }
}

/* Externos: listado y ficha */
body:is(.role-director, .role-administrativo) .ext-ayuda { margin: 6px 0 12px; font-size: 0.85rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .ext-ficha { max-width: 900px; padding: 14px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); }
body:is(.role-director, .role-administrativo) .ext-campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px 16px; margin-bottom: 12px; }
body:is(.role-director, .role-administrativo) .ext-campos label { display: flex; flex-direction: column; gap: 4px; margin: 0; font-weight: 700; }
body:is(.role-director, .role-administrativo) .ext-campos label small { font-weight: 400; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .nb-dd-panel form { margin: 0; }
body:is(.role-director, .role-administrativo) .nb-dd-panel form .nb-dd-item { width: 100%; text-align: left; }

/* Histórico de comunicados (listado de alumnos) */
body:is(.role-director, .role-administrativo) .hist-filtros { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; margin-bottom: 14px; }
body:is(.role-director, .role-administrativo) .hist-filtros label { display: flex; flex-direction: column; gap: 3px; margin: 0; flex: 0 1 170px; font-size: 0.78rem; font-weight: 800; }
body:is(.role-director, .role-administrativo) .hist-filtros label.hist-filtro-ancho { flex: 1 1 220px; }
body:is(.role-director, .role-administrativo) .hist-item { margin-bottom: 10px; padding: 10px 12px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); }
body:is(.role-director, .role-administrativo) .hist-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 4px; }
body:is(.role-director, .role-administrativo) .hist-fecha { font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; color: var(--brand-text-muted); margin-right: 4px; }
body:is(.role-director, .role-administrativo) .hist-canal { padding: 0 8px; border: 2px solid var(--brand-black); border-radius: 999px; font-size: 0.7rem; font-weight: 800; }
body:is(.role-director, .role-administrativo) .hist-canal-email { background: #DBEAFE; }
body:is(.role-director, .role-administrativo) .hist-canal-notificacion { background: var(--brand-yellow); }
body:is(.role-director, .role-administrativo) .hist-canal-whatsapp { background: #DCFCE7; }
body:is(.role-director, .role-administrativo) .hist-asunto { margin: 0 0 4px; font-size: 1rem; font-weight: 800; }
body:is(.role-director, .role-administrativo) .hist-mensaje { margin: 0 0 8px; color: #333; cursor: pointer; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
body:is(.role-director, .role-administrativo) .hist-mensaje.hist-abierto { display: block; -webkit-line-clamp: unset; white-space: pre-line; }
body:is(.role-director, .role-administrativo) .hist-acciones { display: flex; flex-wrap: wrap; gap: 6px; }
body:is(.role-director, .role-administrativo) .hist-vacio { margin: 10px 0; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .hist-acciones .btn { padding: 4px 12px; font-size: 0.78rem; }
/* Comunicado a alumnos, pestaña Notificación: aviso también por WhatsApp Business */
body:is(.role-director, .role-administrativo) .com-aviso-whatsapp { margin: 4px 0 12px; padding: 10px 12px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); }
body:is(.role-director, .role-administrativo) .com-aviso-whatsapp-check { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 8px; cursor: pointer; }
body:is(.role-director, .role-administrativo) .com-aviso-whatsapp-check small { font-weight: 400; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .com-aviso-whatsapp-plantilla { display: flex; flex-wrap: wrap; gap: 8px; }
body:is(.role-director, .role-administrativo) .com-aviso-whatsapp-plantilla select { flex: 1 1 240px; width: auto; }

/* Ficha del alumno: resultado del cobro y su recibo, tras guardar */
body:is(.role-director, .role-administrativo) .ficha-aviso-cobro { position: fixed; top: 16px; left: 50%; transform: translateX(-50%); z-index: 2000; width: min(560px, calc(100% - 32px)); margin: 0; padding: 12px 40px 12px 14px; border: 2px solid var(--brand-black); border-radius: 8px; box-shadow: 4px 4px 0 var(--brand-black); font-weight: 700; }
body:is(.role-director, .role-administrativo) .ficha-aviso-cobro .close { position: absolute; top: 8px; right: 12px; }

/* Inicio: cuando Recordatorios o Altas de hoy no tienen nada, un dibujo de línea muy suave
   de fondo para que no quede tan blanco (con contenido asomaría a trozos entre las filas) */
body:is(.role-director, .role-administrativo) .adm-inicio :is(.adm-rec-inicio, .adm-altas-dia) { position: relative; isolation: isolate; }
body:is(.role-director, .role-administrativo) .adm-inicio :is(.adm-rec-inicio, .adm-altas-dia) > * { position: relative; z-index: 1; }
body:is(.role-director, .role-administrativo) .adm-inicio .adm-rec-inicio:has(.adm-rec-vacio)::after,
body:is(.role-director, .role-administrativo) .adm-inicio .adm-altas-dia:has(.adm-altas-vacio)::after {
    content: "";
    position: absolute;
    right: 20px;
    bottom: 14px;
    z-index: 0;
    /* Siempre por debajo de la cabecera del panel: en uno bajo taparía «Ver todos» */
    height: min(170px, calc(100% - 70px));
    aspect-ratio: 1;
    background: center / contain no-repeat;
    opacity: .1;
    transform: rotate(-8deg);
    pointer-events: none;
}
body:is(.role-director, .role-administrativo) .adm-inicio .adm-rec-inicio:has(.adm-rec-vacio)::after { background-image: url("../images/inicio/recordatorios.svg"); }
body:is(.role-director, .role-administrativo) .adm-inicio .adm-altas-dia:has(.adm-altas-vacio)::after { background-image: url("../images/inicio/altas.svg?v=2"); }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .adm-inicio .adm-rec-inicio:has(.adm-rec-vacio)::after,
    body:is(.role-director, .role-administrativo) .adm-inicio .adm-altas-dia:has(.adm-altas-vacio)::after { height: min(100px, calc(100% - 64px)); right: 12px; bottom: 8px; }
}

/* Cajas: quién apuntó cada movimiento */
body:is(.role-director, .role-administrativo) .caj-por { display: block; margin-top: 1px; font-size: 11.5px; font-weight: 600; color: var(--brand-text-muted, #6b6b66); }

/* Registro de actividad */
body:is(.role-director, .role-administrativo) .act-ayuda { margin: 6px 0 12px; font-size: 0.85rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .act-filtro-alumno { margin: 0 0 12px; font-weight: 700; }
body:is(.role-director, .role-administrativo) .act-lista { margin: 12px 0 18px; }
body:is(.role-director, .role-administrativo) .act-dia { margin: 18px 0 6px !important; font-size: 0.95rem !important; font-weight: 900 !important; }
body:is(.role-director, .role-administrativo) .act-fila { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; gap: 10px; align-items: start; padding: 10px 14px; border: 2px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); margin-bottom: 6px; }
body:is(.role-director, .role-administrativo) .act-hora { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 0.85rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .act-texto p { margin: 0; font-size: 0.92rem; overflow-wrap: anywhere; }
body:is(.role-director, .role-administrativo) .act-cambios { margin: 4px 0 0; padding-left: 18px; font-size: 0.85rem; }
body:is(.role-director, .role-administrativo) .act-cambios s { color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .act-area { padding: 1px 9px; border: 2px solid var(--brand-black); border-radius: 999px; font-size: 0.72rem; font-weight: 800; white-space: nowrap; background: var(--brand-bg, #fffdeb); }
body:is(.role-director, .role-administrativo) .act-area-cobros { background: #DCFCE7; }
body:is(.role-director, .role-administrativo) .act-area-cajas,
body:is(.role-director, .role-administrativo) .act-area-nominas { background: #FEF3C7; }
body:is(.role-director, .role-administrativo) .act-area-alumnos { background: #DBEAFE; }
body:is(.role-director, .role-administrativo) .act-area-equipo { background: #FCE7F3; }
body:is(.role-director, .role-administrativo) .act-vacio { margin: 12px 0; color: var(--brand-text-muted); }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .act-fila { grid-template-columns: 44px minmax(0, 1fr); }
    body:is(.role-director, .role-administrativo) .act-area { grid-column: 2; justify-self: start; }
}

/* Nóminas: casilla «Añadir a caja» de cada persona y aviso de lo que ya está en caja */
body:is(.role-director, .role-administrativo) .nom-volcar { display: inline-flex; align-items: center; gap: 8px; margin: 6px 0; padding: 6px 12px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); font-weight: 800; cursor: pointer; }
body:is(.role-director, .role-administrativo) .nom-volcar input { width: 18px; height: 18px; }
body:is(.role-director, .role-administrativo) .nom-volcar:has(input:checked) { background: #FEF3C7; }
body:is(.role-director, .role-administrativo) .nom-redondeo.form-control { display: block; margin-top: 6px; border-color: #B91C1C !important; background: #FEE2E2 !important; color: #B91C1C !important; font-weight: 900; }
body:is(.role-director, .role-administrativo) .nom-redondeo[data-manual] { box-shadow: 0 0 0 2px #B91C1C; }
body:is(.role-director, .role-administrativo) .nom-en-caja { margin: 6px 0; font-weight: 800; color: #15803d; }

/* Profesor: el nombre del alumno abre su contacto (profesor-contacto-alumno.js) */
.prof-al-nombre { padding: 0; border: 0; background: none; font: inherit; font-weight: 700; text-align: left; color: inherit; cursor: pointer; text-decoration: underline dotted; text-underline-offset: 3px; }
.prof-al-nombre:hover, .prof-al-nombre:focus-visible { text-decoration-style: solid; }
.pca-ventana { width: min(420px, calc(100% - 32px)); padding: 0; border: 3px solid #1c1c1a; border-radius: 14px; box-shadow: 5px 5px 0 #1c1c1a; background: #fff; color: #1c1c1a; }
.pca-ventana::backdrop { background: rgba(28, 28, 26, .45); }
.pca-cabecera { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px; background: #FFD824; border-bottom: 3px solid #1c1c1a; }
.pca-cabecera h3 { margin: 0; font-size: 1.05rem; font-weight: 900; }
.pca-cerrar { width: 34px; height: 34px; border: 2px solid #1c1c1a; border-radius: 9px; background: #fff; font-size: 1.3rem; font-weight: 800; line-height: 1; cursor: pointer; }
.pca-fila { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid #e5e2d3; }
.pca-fila:last-child { border-bottom: 0; }
.pca-fila > i { width: 18px; text-align: center; color: #4a5568; }
.pca-fila > a:first-of-type { flex: 1; min-width: 0; font-weight: 700; color: #007B84; overflow-wrap: anywhere; }
.pca-vacio { color: #6b6b66; }
.pca-wa { flex: none; padding: 4px 10px; border: 2px solid #1c1c1a; border-radius: 999px; background: #DCFCE7; color: #1c1c1a; font-size: .8rem; font-weight: 800; text-decoration: none; white-space: nowrap; }
.pca-copiar { flex: none; width: 34px; height: 34px; border: 2px solid #1c1c1a; border-radius: 9px; background: #fff; cursor: pointer; }
@media (max-width: 767px) {
    /* En el móvil sube desde abajo, a todo lo ancho */
    .pca-ventana { width: 100%; max-width: none; margin: auto 0 0; border-radius: 16px 16px 0 0; border-bottom: 0; box-shadow: none; }
    .pca-fila { padding: 14px 16px; }
}

/* Pendiente de cobro: detalle de la cifra del inicio por alumno, mes y curso */
body:is(.role-director, .role-administrativo) .cob-ayuda { margin: 6px 0 12px; font-size: 0.85rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .cob-cifras { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
body:is(.role-director, .role-administrativo) .cob-cifra { padding: 10px 14px; border: 2px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); box-shadow: 3px 3px 0 var(--brand-black); }
body:is(.role-director, .role-administrativo) .cob-cifra b { display: block; font-size: 1.4rem; font-weight: 900; line-height: 1.2; }
body:is(.role-director, .role-administrativo) .cob-cifra span { font-size: 0.8rem; font-weight: 700; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .cob-cifra-total { background: #FEF3C7; }
body:is(.role-director, .role-administrativo) .cob-resumen { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; margin-bottom: 14px; }
body:is(.role-director, .role-administrativo) .cob-bloque { padding: 12px 14px; border: 2px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); }
body:is(.role-director, .role-administrativo) .cob-bloque h3 { margin: 0 0 8px !important; font-size: 0.95rem !important; font-weight: 900 !important; }
body:is(.role-director, .role-administrativo) .cob-barra { display: grid; grid-template-columns: 88px minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 3px 6px; border-radius: 6px; color: inherit !important; text-decoration: none !important; font-size: 0.85rem; }
body:is(.role-director, .role-administrativo) .cob-barra:hover, body:is(.role-director, .role-administrativo) .cob-barra.is-activo { background: var(--brand-bg); }
body:is(.role-director, .role-administrativo) .cob-barra.is-activo { outline: 2px solid var(--brand-black); }
body:is(.role-director, .role-administrativo) .cob-barra-nombre { font-weight: 700; }
body:is(.role-director, .role-administrativo) .cob-barra-pista { height: 12px; border: 2px solid var(--brand-black); border-radius: 4px; background: var(--brand-white); overflow: hidden; }
body:is(.role-director, .role-administrativo) .cob-barra-pista span { display: block; height: 100%; background: var(--brand-yellow); }
body:is(.role-director, .role-administrativo) .cob-barra-importe { font-family: 'JetBrains Mono', monospace; font-weight: 700; text-align: right; }
body:is(.role-director, .role-administrativo) .cob-cursos { margin: 0; padding: 0; list-style: none; }
body:is(.role-director, .role-administrativo) .cob-cursos li { border-bottom: 1px solid #e5e2d3; font-size: 0.85rem; }
body:is(.role-director, .role-administrativo) .cob-cursos a { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 10px; align-items: baseline; padding: 4px 6px; border-radius: 6px; color: inherit !important; text-decoration: none !important; }
body:is(.role-director, .role-administrativo) .cob-cursos a:hover, body:is(.role-director, .role-administrativo) .cob-cursos a.is-activo { background: var(--brand-bg); }
body:is(.role-director, .role-administrativo) .cob-cursos a.is-activo { outline: 2px solid var(--brand-black); }
body:is(.role-director, .role-administrativo) .cob-cursos li:last-child { border-bottom: 0; }
body:is(.role-director, .role-administrativo) .cob-cursos span { font-weight: 700; overflow-wrap: anywhere; }
body:is(.role-director, .role-administrativo) .cob-cursos small { color: var(--brand-text-muted); white-space: nowrap; }
body:is(.role-director, .role-administrativo) .cob-cursos b { font-family: 'JetBrains Mono', monospace; }
body:is(.role-director, .role-administrativo) .cob-nota { margin: 6px 0 0; font-size: 0.75rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .cob-check { display: inline-flex; align-items: center; gap: 6px; align-self: end; margin: 0 0 8px; font-weight: 700; font-size: 0.85rem; cursor: pointer; }
body:is(.role-director, .role-administrativo) .cob-check input { width: 18px; height: 18px; }
body:is(.role-director, .role-administrativo) .cob-lista { margin: 12px 0 18px; }
body:is(.role-director, .role-administrativo) .cob-fila { display: grid; grid-template-columns: auto minmax(180px, 280px) minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 10px 14px; border: 2px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); margin-bottom: 6px; }
body:is(.role-director, .role-administrativo) .cob-alumno { min-width: 0; }
body:is(.role-director, .role-administrativo) .cob-alumno > a { font-weight: 800; overflow-wrap: anywhere; }
body:is(.role-director, .role-administrativo) .cob-alumno small { display: block; font-size: 0.78rem; color: var(--brand-text-muted); overflow-wrap: anywhere; }
body:is(.role-director, .role-administrativo) .cob-tel { display: flex !important; flex-wrap: wrap; gap: 2px 10px; }
body:is(.role-director, .role-administrativo) .cob-tel a { color: inherit; }
body:is(.role-director, .role-administrativo) .cob-baja { margin-left: 6px; padding: 0 7px; border: 2px solid var(--brand-black); border-radius: 999px; background: #FEE2E2; font-size: 0.7rem; font-weight: 800; white-space: nowrap; }
body:is(.role-director, .role-administrativo) .cob-recibos { display: flex; flex-wrap: wrap; gap: 6px; }
body:is(.role-director, .role-administrativo) .cob-recibo { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 4px; padding: 2px 9px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-bg); font-size: 0.8rem; font-family: 'JetBrains Mono', monospace; }
body:is(.role-director, .role-administrativo) .cob-recibo em { font-family: inherit; font-style: normal; font-size: 0.72rem; color: var(--brand-text-muted); max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body:is(.role-director, .role-administrativo) .cob-total { font-family: 'JetBrains Mono', monospace; font-size: 1.05rem; font-weight: 900; white-space: nowrap; }
body:is(.role-director, .role-administrativo) .cob-marca { width: 20px; height: 20px; cursor: pointer; }
body:is(.role-director, .role-administrativo) .cob-sin-online { background: #E5E7EB; }
body:is(.role-director, .role-administrativo) .cob-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 12px 0 8px; padding: 8px 14px; border: 2px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); }
body:is(.role-director, .role-administrativo) .cob-acciones .cob-check { margin: 0; align-self: center; }
body:is(.role-director, .role-administrativo) .cob-marcados { font-size: 0.85rem; color: var(--brand-text-muted); margin-right: auto; }
body:is(.role-director, .role-administrativo) .cob-vacio { margin: 12px 0; color: var(--brand-text-muted); }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .cob-cifras { gap: 6px; }
    body:is(.role-director, .role-administrativo) .cob-cifra { padding: 8px 10px; }
    body:is(.role-director, .role-administrativo) .cob-cifra b { font-size: 1.05rem; }
    body:is(.role-director, .role-administrativo) .cob-resumen { grid-template-columns: minmax(0, 1fr); }
    body:is(.role-director, .role-administrativo) .cob-barra { grid-template-columns: 76px minmax(0, 1fr) auto; }
    body:is(.role-director, .role-administrativo) .cob-fila { grid-template-columns: auto minmax(0, 1fr) auto; }
    body:is(.role-director, .role-administrativo) .cob-recibos { grid-column: 1 / -1; grid-row: 2; }
}

/* Ajustes: casilla con explicación (Avisos a profesores) */
body:is(.role-director, .role-administrativo) .adm-ajuste-check { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; }
body:is(.role-director, .role-administrativo) .adm-ajuste-check input { width: 20px; height: 20px; margin-top: 2px; flex: none; }
body:is(.role-director, .role-administrativo) .adm-ajuste-check small { display: block; margin-top: 2px; font-size: 0.82rem; color: var(--brand-text-muted); }

/* Enviar notificación a profesores */
body:is(.role-director, .role-administrativo) .pn-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-bottom: 10px; }
body:is(.role-director, .role-administrativo) .pn-barra .cob-check { margin: 0; align-self: center; }
body:is(.role-director, .role-administrativo) .pn-buscar { max-width: 260px; }
body:is(.role-director, .role-administrativo) .pn-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 6px; max-height: 360px; overflow-y: auto; }
body:is(.role-director, .role-administrativo) .pn-profe { display: flex; align-items: center; gap: 8px; margin: 0; padding: 6px 10px; border: 2px solid var(--brand-black); border-radius: 8px; background: var(--brand-white); font-weight: 600; cursor: pointer; }
body:is(.role-director, .role-administrativo) .pn-profe[hidden] { display: none; }
body:is(.role-director, .role-administrativo) .pn-profe input { width: 18px; height: 18px; flex: none; }
body:is(.role-director, .role-administrativo) .pn-profe:has(input:checked) { background: #FEF9C3; }
body:is(.role-director, .role-administrativo) .pn-form textarea { min-height: 110px; }
body:is(.role-director, .role-administrativo) .pn-enviar { margin-top: 10px; }
body:is(.role-director, .role-administrativo) .pn-enviada { padding: 8px 0; border-bottom: 1px dashed var(--brand-black); }
body:is(.role-director, .role-administrativo) .pn-enviada:last-child { border-bottom: 0; }
body:is(.role-director, .role-administrativo) .pn-enviada-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 12px; }
body:is(.role-director, .role-administrativo) .pn-enviada-head span { font-size: 0.8rem; color: var(--brand-text-muted); }
body:is(.role-director, .role-administrativo) .pn-enviada p { margin: 4px 0 0; white-space: pre-line; font-size: 0.9rem; }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .pn-buscar { max-width: none; width: 100%; }
}

/* Cajas: ventana «Excel cajas» (días a incluir) */
body:is(.role-director, .role-administrativo) #excel_cajas .cx-dias { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; max-height: 55vh; overflow-y: auto; padding: 2px; }
body:is(.role-director, .role-administrativo) #excel_cajas .cx-dia { display: flex; align-items: center; gap: 8px; margin: 0; padding: 8px 10px; border: 2px solid var(--brand-black); border-radius: 10px; background: var(--brand-white); font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 0.9rem; white-space: nowrap; cursor: pointer; }
body:is(.role-director, .role-administrativo) #excel_cajas .cx-dia:has(input:checked) { background: #FEF9C3; }
body:is(.role-director, .role-administrativo) #excel_cajas .cx-dia input,
body:is(.role-director, .role-administrativo) #excel_cajas .cx-todos input { width: 18px; height: 18px; margin: 0; flex: none; }
body:is(.role-director, .role-administrativo) #excel_cajas .cx-pie { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: 14px; padding-top: 12px; border-top: 2px dashed var(--brand-black); }
body:is(.role-director, .role-administrativo) #excel_cajas .cx-todos { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-weight: 800; cursor: pointer; }

/* Estado de cada pago en la ficha: borde de color a la izquierda y casilla Debe teñida */
body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-cobrado .value_ano { border-left: 8px solid var(--brand-success) !important; }
body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-parcial .value_ano { border-left: 8px solid var(--brand-warning) !important; }
body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-vencido .value_ano { border-left: 8px solid var(--brand-danger) !important; }
body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-cobrado .value_debe { background: #DCFCE7 !important; border-color: var(--brand-success) !important; color: #166534 !important; }
body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-parcial .value_debe { background: #FEF3C7 !important; border-color: var(--brand-warning) !important; color: #92400E !important; font-weight: 800 !important; }
body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-vencido .value_debe { background: #FEE2E2 !important; border-color: var(--brand-danger) !important; color: #991B1B !important; font-weight: 800 !important; }
@media (max-width: 767px) {
    body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.filaPago .value_ano { border-left-width: 2px !important; border-left-color: var(--brand-black) !important; }
    body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-cobrado { border-left: 8px solid var(--brand-success) !important; }
    body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-parcial { border-left: 8px solid var(--brand-warning) !important; }
    body:is(.role-director, .role-administrativo) .editForm #table-pagos tr.pago-vencido { border-left: 8px solid var(--brand-danger) !important; }
}
