/* ---------- CONTENEDOR PRINCIPAL DEL CALENDARIO ---------- */
/* #calendar-view-wrapper (en index.html) no tenía ninguna regla CSS propia,
   por lo que no era un contenedor flex y no propagaba flex:1/min-height:0
   a sus hijos. Sin esto, .calendar-container nunca quedaba con una altura
   acotada y su overflow-y:auto no tenía efecto: el contenido se desbordaba
   del body (100vh) y terminaba scrolleando la página completa en vez del
   calendario, por lo que el navbar y la Zona de Espera se iban con el
   scroll, y calendarContainer.scrollTo() en scrollToDateRow() (usado por
   "Ir a Hoy" y las flechitas ▲▼) no hacía nada porque ese elemento nunca
   fue el que realmente scrollea. */
#calendar-view-wrapper {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    width: 100%;
}

#calendar-view-container {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    width: 100%;
}

.calendar-container {
    flex: 1;
    background: var(--card-bg); border-radius: 4px;
    border: 1px solid var(--border-color); position: relative;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
}
#calendar-grid { display: flex; flex-direction: column; width: 100%; min-width: 100%; }

/* ---------- ESTRUCTURA DE MESES Y DÍAS SIMÉTRICOS ---------- */
.month-group { display: flex; flex-direction: column; margin-bottom: 20px; width: 100%; }
.month-header-sticky {
    background: var(--month-header-bg); color: var(--primary-fg);
    padding: 8px 15px; font-size: 0.92em; font-weight: 800; text-transform: uppercase;
    letter-spacing: 2px; position: sticky; top: 0; left: 0; z-index: 90;
    box-shadow: 0 2px 6px rgba(0,0,0,0.2); width: 100%; box-sizing: border-box;
    display: flex; align-items: center; justify-content: center; gap: 14px;
}

.days-container { display: flex; flex-direction: column; width: 100%; }
.day-row { display: flex; border-bottom: 2px solid var(--calendar-border); width: 100%; }

.day-header { 
    flex: 0 0 100px; width: 100px; min-width: 100px; max-width: 100px;
    background: var(--turn-label-bg); color: var(--body-fg); 
    padding: 6px 4px; 
    display: flex; flex-direction: column; align-items: center; justify-content: flex-start; text-align: center; 
    border-right: 2px solid var(--border-color);
    box-sizing: border-box;
    gap: 4px;
    user-select: none;
    align-self: flex-start;
}
.day-nav-group {
    display: flex;
    gap: 5px;
    align-items: center;
    justify-content: center;
    margin-bottom: 2px;
}
.day-info {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    margin: 1px 0;
}
.btn-day-nav {
    background: var(--dropzone-hover, rgba(0, 45, 98, 0.08));
    color: var(--primary, #002D62);
    border: 1px solid var(--border-color, #cbd5e1);
    border-radius: 4px;
    width: 28px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.75em;
    font-weight: 900;
    cursor: pointer;
    transition: all 0.15s ease-in-out;
    padding: 0;
    line-height: 1;
}

.btn-day-nav:hover {
    background: var(--primary, #002D62);
    color: #ffffff;
    border-color: var(--primary, #002D62);
    transform: scale(1.15);
    box-shadow: 0 2px 6px rgba(0, 45, 98, 0.25);
}

.btn-day-nav:active {
    transform: scale(0.92);
}

[data-theme="dark"] .btn-day-nav {
    background: rgba(255, 255, 255, 0.08);
    color: var(--accent, #ffc300);
    border-color: rgba(255, 255, 255, 0.2);
}

[data-theme="dark"] .btn-day-nav:hover {
    background: var(--accent, #ffc300);
    color: #002D62;
    border-color: var(--accent, #ffc300);
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.35);
}

/* ---------- SELECTOR DE AÑO (multi-año) ----------
   CORRECCIÓN: antes era una barra propia (.year-selector-bar) sobre el
   calendario, ocupando una fila entera solo para "◀ 2026 ▶". Como el
   encabezado de cada mes (.month-header-sticky, más abajo) ya muestra
   "CRONOGRAMA DE {mes} {año}", las flechas de año ahora viven DENTRO de esa
   misma barra -- se gana toda la altura que ocupaba la barra separada, sin
   perder la función. Como esa barra se repite una vez por mes (12 al año,
   sticky), las flechas usan clases (.btn-year-nav-inline) en vez de un solo
   id: cada mes tiene su propio par de botones, pero todos disparan el mismo
   cambio de año (ver el listener delegado en script.js). */
.btn-year-nav-inline {
    background: rgba(255, 255, 255, 0.16);
    color: #ffffff;
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 6px;
    width: 26px;
    height: 24px;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.15s ease-in-out;
    padding: 0;
}

.btn-year-nav-inline:hover:not(:disabled) {
    background: var(--accent, #FFC300);
    color: var(--primary, #002D62);
    border-color: var(--accent, #FFC300);
    transform: scale(1.1);
}

.btn-year-nav-inline:active:not(:disabled) {
    transform: scale(0.92);
}

.btn-year-nav-inline:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

.month-header-text {
    white-space: nowrap;
}

.day-row-active-nav {
    animation: dayRowHighlight 2.5s ease-in-out;
}

.day-row-active-nav .day-header,
.day-row-active-nav .turn-label,
.day-row-active-nav .room-cell,
.day-row-active-nav .feriado-row {
    animation: dayChildHighlight 2.5s ease-in-out !important;
}

@keyframes dayRowHighlight {
    0% {
        box-shadow: 0 0 18px rgba(255, 195, 0, 0.95);
    }
    100% {
        box-shadow: none;
    }
}

@keyframes dayChildHighlight {
    0% {
        background-color: rgba(255, 195, 0, 0.75) !important;
    }
    30% {
        background-color: rgba(255, 195, 0, 0.65) !important;
    }
    100% {
        background-color: inherit;
    }
}

/* Destaca una tarjeta puntual del Horario cuando se llega a ella desde el
   botón "Ver en Horario" de Encuestas. */
.course-card-highlight-pulse {
    animation: courseCardHighlightPulse 2.5s ease-in-out;
    z-index: 5;
}
@keyframes courseCardHighlightPulse {
    0% { box-shadow: 0 0 0 4px rgba(255, 195, 0, 0.95), 0 4px 12px rgba(0, 0, 0, 0.3); }
    100% { box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); }
}

.day-name {
    font-size: 0.72em;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    opacity: 0.9;
    line-height: 1.1;
}
.day-num {
    font-size: 1.1em;
    font-weight: 900;
    color: var(--primary);
    line-height: 1;
    background: rgba(255, 195, 0, 0.2);
    padding: 2px 7px;
    border-radius: 4px;
    border: 1px solid var(--accent);
}
[data-theme="dark"] .day-num {
    color: var(--accent);
    background: rgba(255, 195, 0, 0.12);
}

.turns-container { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.turn-row { display: flex; border-bottom: 1px solid var(--border-color); min-height: 90px; width: 100%; }
.turn-row:last-child { border-bottom: none; }
.turn-label { 
    flex: 0 0 55px; width: 55px; min-width: 55px; max-width: 55px;
    background: var(--card-bg); color: var(--body-fg);
    font-weight: 800; font-size: 0.78em; display: flex; align-items: center; justify-content: center; 
    border-right: 1px solid var(--border-color); text-transform: uppercase;
    box-sizing: border-box;
    writing-mode: vertical-lr;
    transform: rotate(180deg);
    letter-spacing: 2px;
    text-align: center;
}

/* ---------- FERIADOS Y SUS BOTONES ---------- */
.feriado-row {
    flex: 1; display: flex; align-items: center; justify-content: center;
    background: repeating-linear-gradient(45deg, #fce4e4, #fce4e4 15px, #f9d6d6 15px, #f9d6d6 30px);
    color: #c0392b; font-size: 1.05em; font-weight: 900; letter-spacing: 1px; padding: 18px 14px;
    min-height: 70px;
    border-bottom: 1px solid var(--border-color); transition: 0.2s; width: 100%; box-sizing: border-box;
}
[data-theme="dark"] .feriado-row {
    background: repeating-linear-gradient(45deg, #4a0000, #4a0000 15px, #600000 15px, #600000 30px);
    color: #ff6b6b;
}

/* Efectos hover para los botones interactivos del feriado */
.btn-unlock-holiday:hover { background-color: #fce4e4 !important; transform: scale(1.02); }
.btn-lock-holiday:hover { background-color: #27ae60 !important; transform: scale(1.02); }

/* ---------- AULAS DINÁMICAS (AJUSTE PERFECTO EN PC) ---------- */
.room-cell {
    flex: 1 1 0; min-width: 110px;
    border-right: 1px solid var(--border-color); padding: 20px 4px 4px 4px;
    position: relative; background: var(--dropzone-bg);
    box-sizing: border-box;
}
/* CORRECCIÓN (rendimiento -- lag del recuadro punteado al arrastrar):
   `transition: background 0.1s` (que vivía en la regla de arriba) es lo
   único que usa esta clase -- ninguna otra regla del proyecto cambia el
   background de .room-cell fuera de .drag-over (verificado). Con el cursor
   pasando por muchas celdas por segundo durante un arrastre, cada
   entrada/salida programaba su propia animación de 100ms; el navegador
   terminaba con una cola de transiciones superpuestas sobre un documento de
   ~14.000 nodos, y el resaltado se veía "atrasado" respecto al cursor,
   alcanzándolo recién al soltar. Quitar la transición hace el resaltado
   INSTANTÁNEO -- sin cola que se acumule, sin importar qué tan rápido se
   arrastre. */
.room-cell:last-child { border-right: none; }
/* CORRECCIÓN (rendimiento -- arrastre de bloques): antes esta regla cambiaba
   `border` (de "sin borde" a "2px dashed"), lo que fuerza al navegador a
   recalcular el box model de la celda en cada entrada/salida del cursor
   durante un arrastre -- con el cursor pasando por decenas de celdas en un
   segundo, eso es un recálculo de layout constante. `outline` dibuja el
   mismo resaltado dashed SIN afectar el box model (no reserva espacio, no
   dispara layout), así que el resaltado se ve idéntico pero sin el costo. */
.room-cell.drag-over { background: var(--dropzone-hover); outline: 2px dashed var(--dropzone-border); outline-offset: -2px; }
.room-title { position: absolute; top: 2px; left: 0; width: 100%; text-align: center; font-size: 0.7em; color: var(--body-fg); font-weight: bold; opacity: 0.6; pointer-events: none;}

/* ---------- SCROLLBAR ----------
   CORRECCIÓN (B3 auditoría Horario): el selector iba SIN ámbito (::-webkit-scrollbar
   a secas), así que esta hoja de estilos de un solo módulo terminaba fijando el
   estilo de scroll de CUALQUIER contenedor con overflow de TODA la aplicación que no
   tuviera ya su propia regla más específica -- incluyendo módulos que nada tienen que
   ver con Horario. Se limita al contenedor que este módulo realmente controla,
   siguiendo el mismo patrón que ya usan el resto de módulos
   (.drawer-body::-webkit-scrollbar, .modal-midnight-body::-webkit-scrollbar, etc. en
   style.css). El scroll de html/body en general ya lo define style.css:45-66. */
.calendar-container::-webkit-scrollbar { width: 8px; height: 8px; }
.calendar-container::-webkit-scrollbar-track { background: var(--body-bg); border-radius: 4px; }
.calendar-container::-webkit-scrollbar-thumb { background: #bdc3c7; border-radius: 4px; }
.calendar-container::-webkit-scrollbar-thumb:hover { background: #95a5a6; }

/* =======================================================
   ESTILO DE BLOQUES CON PALETA DE COLORES ORGANIZADA
   ======================================================= */
.course-card {
    display: flex; 
    flex-direction: column; 
    border-radius: 6px; 
    overflow: hidden; 
    font-size: 0.75em; 
    margin-bottom: 5px; 
    cursor: grab; 
    position: relative; 
    text-align: center; 
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); 
    line-height: 1.25; 
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.course-card:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    transform: translateY(-1px);
}
[data-theme="dark"] .course-card { 
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
}
.course-card.dragging { opacity: 0.5; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }

/* BLOQUES FANTASMA (REPROGRAMADOS) */
.ghost-card {
    cursor: not-allowed !important; 
    border: 2px dashed #e74c3c !important;
    background: repeating-linear-gradient(
        45deg,
        rgba(231, 76, 60, 0.08),
        rgba(231, 76, 60, 0.08) 10px,
        transparent 10px,
        transparent 20px
    ) !important;
    opacity: 0.7;
    filter: grayscale(35%);
}
.ghost-card .row-nombre {
    text-decoration: line-through;
    color: #7f8c8d;
}

.row-reprogramado-banner {
    background: #e74c3c;
    color: #ffffff;
    font-weight: 900;
    font-size: 0.85em;
    padding: 5px 6px;
    letter-spacing: 0.5px;
}

/* Filas internas del bloque */
.course-card .row { 
    padding: 3px 4px; 
    border-bottom: 1px solid rgba(0, 0, 0, 0.08); 
    text-align: center;
}
.course-card .row:last-child { border-bottom: none; }

.course-card .row-codigo { 
    font-weight: 700; 
    font-size: 0.82em; 
    letter-spacing: 0.5px;
    padding: 3px 2px;
}
.course-card .row-nombre { 
    font-weight: 900; 
    font-size: 1.05em; 
    padding: 6px 4px; 
    line-height: 1.25;
}
.course-card .row-info { 
    font-style: italic; 
    font-size: 0.82em; 
    font-weight: 500; 
    padding: 3px 2px;
}
.course-card .row-separaciones { 
    font-weight: 700; 
    font-size: 0.85em;
    letter-spacing: 0.3px;
    padding: 3px 2px;
}
.course-card .row-docente { 
    font-weight: 600; 
    font-size: 0.82em;
    text-transform: uppercase; 
    padding: 3px 2px;
}
.course-card .row-asesora { 
    font-weight: 500; 
    font-size: 0.80em;
    text-transform: uppercase; 
    padding: 3px 2px;
}
.course-card .row-obs { 
    font-size: 0.82em; 
    font-weight: 600; 
    border-top: 1px dashed rgba(0, 0, 0, 0.2); 
    padding: 4px 2px;
}

/* BOTÓN "Ir a Sesión 1" ELEGANTE DENTRO DEL BLOQUE
   CORRECCIÓN (B4 auditoría Horario): ".row-goto-master" estaba definido dos veces en
   este archivo (aquí y otra vez, suelto, cerca de "NAVEGACIÓN Y BORRADO POR SESIÓN"),
   con propiedades distintas que el navegador terminaba MEZCLANDO entre las dos
   declaraciones (fondo, tamaño y peso de letra venían del segundo bloque; display y
   el resto de aquí) simplemente porque nadie se dio cuenta de que ya existía esta
   regla. Se fusionaron en una sola declaración, con el resultado visual IDÉNTICO al
   que ya se veía, para no tener que mirar en dos sitios distintos del archivo para
   saber cómo se ve este botón. */
.course-card .row-goto-master {
    display: none;
    cursor: pointer;
    text-align: center;
    padding: 4px 6px;
    font-weight: 900;
    font-size: 0.78em;
    background: rgba(0, 0, 0, 0.08);
}
.course-card .row-goto-master:hover {
    text-decoration: underline;
    background: rgba(0, 0, 0, 0.16);
}
.course-card .row-goto-master .goto-pill {
    display: inline-block;
    padding: 3px 12px;
    border-radius: 20px;
    font-weight: 900;
    font-size: 0.85em;
    letter-spacing: 0.3px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    transition: transform 0.15s ease, background-color 0.15s ease;
}
.course-card .row-goto-master:hover .goto-pill {
    transform: scale(1.04);
}
.course-card[data-es-curso="true"][data-es-master="false"]:not(.ghost-card) .row-goto-master {
    display: block !important;
}

/* MARCA VISUAL DE "CIERRE DE MÓDULO / CURSO / TALLER"
   (calculada por markModuleClosingCards() en script.js) -- permite
   reconocer de un vistazo qué tarjetas cierran módulo/curso/taller
   ese día, sin tener que abrir cada bloque. */
.course-card[data-cierre-modulo] {
    outline: 2px solid #f39c12;
    outline-offset: -2px;
}
.course-card[data-cierre-modulo]::after {
    content: 'CIERRE DE MÓDULO';
    position: absolute;
    top: 0;
    right: 0;
    background: #f39c12;
    color: #1a1200;
    font-size: 0.6em;
    font-weight: 900;
    letter-spacing: 0.3px;
    padding: 2px 7px 2px 9px;
    border-bottom-left-radius: 8px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
    z-index: 3;
    pointer-events: none;
    text-transform: uppercase;
    white-space: nowrap;
}
.course-card[data-cierre-modulo="taller"] {
    outline-color: #9b59b6;
}
.course-card[data-cierre-modulo="taller"]::after {
    content: 'TALLER · HOY';
    background: #9b59b6;
    color: #ffffff;
}
/* En la Zona de Espera las tarjetas son demasiado pequeñas para la cinta */
.dropzone-mini .course-card[data-cierre-modulo]::after {
    display: none;
}
.dropzone-mini .course-card[data-cierre-modulo] {
    outline-width: 2px;
}

/* PALETAS DE COLORES CON BORDES NOTORIOS Y FRANJAS ALTERNADAS */

/* 1. GREEN (VERDE - EN PROCESO) */
.green { border: 2px solid #0d542b !important; color: #003615; }
.green .row-goto-master { background-color: #00e676; }
.green .goto-pill { background-color: #0d542b; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.green .row-codigo { background-color: #0d542b; color: #ffffff; }
.green .row-nombre { background-color: #8ef0b3; color: #003615; }
.green .row-info { background-color: #38e084; color: #003615; }
.green .row-separaciones { background-color: #8ef0b3; color: #003615; }
.green .row-docente { background-color: #38e084; color: #003615; }
.green .row-asesora { background-color: #8ef0b3; color: #003615; }
.green .row-obs { background-color: #fff9c4; color: #b71c1c; }

/* 2. RED (ROJO - INICIO DE CURSO) */
.red { border: 2px solid #8b0000 !important; color: #4a0000; }
.red .row-goto-master { background-color: #ff5252; }
.red .goto-pill { background-color: #8b0000; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.red .row-codigo { background-color: #8b0000; color: #ffffff; }
.red .row-nombre { background-color: #ffcdd2; color: #4a0000; }
.red .row-info { background-color: #ef9a9a; color: #4a0000; }
.red .row-separaciones { background-color: #ffcdd2; color: #4a0000; }
.red .row-docente { background-color: #ef9a9a; color: #4a0000; }
.red .row-asesora { background-color: #ffcdd2; color: #4a0000; }
.red .row-obs { background-color: #212121; color: #ff8a80; }

/* 3. YELLOW (AMARILLO VIVO - CAMBIO DE MÓDULO) */
.yellow { border: 2px solid #d35400 !important; color: #3e2723; }
.yellow .row-goto-master { background-color: #ffea00; }
.yellow .goto-pill { background-color: #e65100; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.yellow .row-codigo { background-color: #e65100; color: #ffffff; }
.yellow .row-nombre { background-color: #fff59d; color: #3e2723; }
.yellow .row-info { background-color: #ffe082; color: #3e2723; }
.yellow .row-separaciones { background-color: #fff59d; color: #3e2723; }
.yellow .row-docente { background-color: #ffe082; color: #3e2723; }
.yellow .row-asesora { background-color: #fff59d; color: #3e2723; }
.yellow .row-obs { background-color: #3e2723; color: #ffd500; }

/* 4. PINK (ROSADO - TALLER CORTO) */
.pink { border: 2px solid #880e4f !important; color: #4a0021; }
.pink .row-goto-master { background-color: #ff80ab; }
.pink .goto-pill { background-color: #880e4f; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.pink .row-codigo { background-color: #880e4f; color: #ffffff; }
.pink .row-nombre { background-color: #f8bbd0; color: #4a0021; }
.pink .row-info { background-color: #f48fb1; color: #4a0021; }
.pink .row-separaciones { background-color: #f8bbd0; color: #4a0021; }
.pink .row-docente { background-color: #f48fb1; color: #4a0021; }
.pink .row-asesora { background-color: #f8bbd0; color: #4a0021; }
.pink .row-obs { background-color: #212121; color: #ff80ab; }

/* 5. CELESTE (CELESTE - TALLER GRATUITO) */
.celeste { border: 2px solid #006064 !important; color: #002f34; }
.celeste .row-goto-master { background-color: #00e5ff; }
.celeste .goto-pill { background-color: #006064; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.celeste .row-codigo { background-color: #006064; color: #ffffff; }
.celeste .row-nombre { background-color: #b2ebf2; color: #002f34; }
.celeste .row-info { background-color: #80deea; color: #002f34; }
.celeste .row-separaciones { background-color: #b2ebf2; color: #002f34; }
.celeste .row-docente { background-color: #80deea; color: #002f34; }
.celeste .row-asesora { background-color: #b2ebf2; color: #002f34; }
.celeste .row-obs { background-color: #212121; color: #80deea; }

/* 6. MAGENTA (MAGENTA / ROSADO CLARO - CLASE INTRODUCTORIA) */
.magenta { border: 2px solid #4a148c !important; color: #38004d; }
.magenta .row-goto-master { background-color: #f48fb1; }
.magenta .goto-pill { background-color: #4a148c; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.magenta .row-codigo { background-color: #4a148c; color: #ffffff; }
.magenta .row-nombre { background-color: #f3e5f5; color: #38004d; }
.magenta .row-info { background-color: #e1bee7; color: #38004d; }
.magenta .row-separaciones { background-color: #f3e5f5; color: #38004d; }
.magenta .row-docente { background-color: #e1bee7; color: #38004d; }
.magenta .row-asesora { background-color: #f3e5f5; color: #38004d; }
.magenta .row-obs { background-color: #212121; color: #ea80fc; }

/* 7. BLACK (NEGRO OSCURO - FINALIZACIÓN DE CURSO) */
.black { border: 2px solid #000000 !important; color: #ffffff; }
.black .row-goto-master { background-color: #424242; }
.black .goto-pill { background-color: #000000; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.black .row-codigo { background-color: #000000; color: #ffffff; }
.black .row-nombre { background-color: #1e1e1e; color: #ffffff; }
.black .row-info { background-color: #333333; color: #ffffff; }
.black .row-separaciones { background-color: #1e1e1e; color: #ffffff; }
.black .row-docente { background-color: #333333; color: #ffffff; }
.black .row-asesora { background-color: #1e1e1e; color: #ffffff; }
.black .row-obs { background-color: #000000; color: #ff8a80; border-top: 1px dashed #ff8a80; }

/* 8. ORANGE (NARANJA - SEMINARIOS Y EVENTOS ESPECIALES) */
.orange { border: 2px solid #e65100 !important; color: #3e2723; }
.orange .row-goto-master { background-color: #ff9800; }
.orange .goto-pill { background-color: #e65100; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.orange .row-codigo { background-color: #e65100; color: #ffffff; }
.orange .row-nombre { background-color: #ffe0b2; color: #3e2723; }
.orange .row-info { background-color: #ffcc80; color: #3e2723; }
.orange .row-separaciones { background-color: #ffe0b2; color: #3e2723; }
.orange .row-docente { background-color: #ffcc80; color: #3e2723; }
.orange .row-asesora { background-color: #ffe0b2; color: #3e2723; }
.orange .row-obs { background-color: #212121; color: #ffb74d; }

/* 9. PURPLE (PÚRPURA - ESPECIALIZACIONES Y DIPLOMADOS) */
.purple { border: 2px solid #4a148c !important; color: #1a0033; }
.purple .row-goto-master { background-color: #ab47bc; }
.purple .goto-pill { background-color: #4a148c; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.purple .row-codigo { background-color: #4a148c; color: #ffffff; }
.purple .row-nombre { background-color: #e1bee7; color: #1a0033; }
.purple .row-info { background-color: #ce93d8; color: #1a0033; }
.purple .row-separaciones { background-color: #e1bee7; color: #1a0033; }
.purple .row-docente { background-color: #ce93d8; color: #1a0033; }
.purple .row-asesora { background-color: #e1bee7; color: #1a0033; }
.purple .row-obs { background-color: #212121; color: #e1bee7; }

/* 10. BLUE (AZUL - PROGRAMAS Y TALLERES AVANZADOS) */
.blue { border: 2px solid #0d47a1 !important; color: #00102a; }
.blue .row-goto-master { background-color: #29b6f6; }
.blue .goto-pill { background-color: #0d47a1; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.blue .row-codigo { background-color: #0d47a1; color: #ffffff; }
.blue .row-nombre { background-color: #bbdefb; color: #00102a; }
.blue .row-info { background-color: #90caf9; color: #00102a; }
.blue .row-separaciones { background-color: #bbdefb; color: #00102a; }
.blue .row-docente { background-color: #90caf9; color: #00102a; }
.blue .row-asesora { background-color: #bbdefb; color: #00102a; }
.blue .row-obs { background-color: #212121; color: #90caf9; }

/* 8. PROYECTADO */
.proyectado { border: 2px dashed #1b4f72 !important; color: #0a2940; }
.proyectado .row-goto-master { background-color: #5dade2; }
.proyectado .goto-pill { background-color: #1b4f72; color: #ffffff; border: 1px solid rgba(255,255,255,0.5); }
.proyectado .row-codigo { background-color: #1b4f72; color: #ffffff; }
.proyectado .row-nombre { background-color: #d4e6f1; color: #0a2940; }
.proyectado .row-info { background-color: #a9cce3; color: #0a2940; }
.proyectado .row-separaciones { background-color: #d4e6f1; color: #0a2940; }
.proyectado .row-docente { background-color: #a9cce3; color: #0a2940; }
.proyectado .row-asesora { background-color: #d4e6f1; color: #0a2940; }
.proyectado .row-obs { background-color: #fff9c4; color: #c0392b; }

[data-theme="dark"] .proyectado {
    background-color: rgba(41, 128, 185, 0.5);
    color: #ffffff;
    border-color: #5dade2;
}
.course-card .row-proyectado {
    background: rgba(255, 255, 255, 0.55);
    color: #1b4f72;
    font-weight: 900;
    font-size: 0.8em;
    letter-spacing: 1px;
}

/* ALERTAS LOGÍSTICAS */
.alerta-turno, .alerta-aforo { background: #ffcccc; color: #c0392b; font-size: 0.85em; font-weight: 900; text-align: center; padding: 2px; border-bottom: 1px solid rgba(0,0,0,0.2); }

/* NAVEGACIÓN Y BORRADO POR SESIÓN */
.course-card[data-es-curso="true"][data-es-master="false"]:not(.ghost-card) .delete-btn {
    display: none;
}
/* La cuenta de Administrador puede ver y pulsar el botón X de eliminación en TODOS los bloques */
body.is-admin-user .course-card .delete-btn {
    display: inline-block !important;
}
/* CORRECCIÓN (B4 auditoría Horario): la segunda definición de ".row-goto-master" que
   estaba aquí se fusionó con la primera, más arriba, junto a "BOTÓN Ir a Sesión 1" --
   ver el comentario detallado ahí. */

/* CONTROLES DE ADMINISTRADOR OCULTOS POR DEFECTO */
body:not(.admin-mode-active) .admin-only { display: none !important; }

body.admin-mode-active div.day-room-controls { display: flex !important; }
body.admin-mode-active .btn-unlock-holiday, 
body.admin-mode-active .btn-lock-holiday { display: inline-block !important; }

/* Clic para editar (Solo admin) */
body.admin-mode-active .course-card:not(.ghost-card) { cursor: pointer; }
body.admin-mode-active .course-card:not(.ghost-card):hover { outline: 2px solid var(--accent); outline-offset: -2px; transform: translateY(-1px); }

/* Botones de acción flotantes */
.card-actions {
    display: none; position: absolute; top: 0; right: 0; background: rgba(255,255,255,0.85); 
    padding: 2px; border-bottom-left-radius: 4px; gap: 4px; z-index: 10;
    border-left: 1px solid rgba(0,0,0,0.1); border-bottom: 1px solid rgba(0,0,0,0.1);
}
body.admin-mode-active .course-card:hover .card-actions { display: flex; }

.delete-btn { background: none; border: none; cursor: pointer; font-size: 12px; padding: 2px; transition: 0.2s; border-radius: 2px; }
.delete-btn:hover { background: #e74c3c; transform: scale(1.1); }

.confirm-btn { display: none; background: none; border: none; cursor: pointer; font-size: 12px; padding: 2px; transition: 0.2s; border-radius: 2px; }
.confirm-btn:hover { background: #27ae60; transform: scale(1.1); }
.course-card.proyectado .confirm-btn { display: inline-block; }

