/* gestion.css — Gestión escolar (Tiza)
   Usa las variables de color del sistema (paleta Tiza: --tiza-azul, --tiza-profundo… y los alias --teal, --blue, --ink, --muted, --line…). */

/* ---------- Ajustes generales que Gestión escolar necesita ---------- */
.contenido { min-width: 0; }                       /* evita que una tabla ancha estire toda la página */
.btn-chico { padding: 7px 12px; font-size: .84rem; border-radius: 9px; }
.btn-peligro-solido { background: var(--error); color: #fff; }
.btn-peligro-solido:hover { background: #a5301f; }
.btn-icono-g { padding: 9px 14px; font-size: 1.1rem; line-height: 1; }
.btn[disabled], .btn:disabled { opacity: .55; cursor: default; }
a.btn { display: inline-block; text-decoration: none; text-align: center; }
a.btn.btn-primario, a.btn.btn-teal { color: #fff; }
a.btn.btn-suave { color: var(--ink); }

/* En el celular, el menú lateral pasa a ser una barra horizontal que se desliza (antes ocupaba media pantalla). */
@media (max-width: 900px) {
  .app.visible { grid-template-rows: auto 1fr; }   /* la barra mide lo que necesita; el resto es para el contenido */
  .barra-lateral { flex-direction: row; align-items: center; gap: 4px; padding: 8px 10px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; border-right: 0; border-bottom: 1px solid var(--line); }
  .barra-lateral .logo-lateral { display: none; }
  .barra-lateral .logo-isotipo { display: block; width: 40px; height: auto; margin: 0 8px 0 2px; flex: 0 0 auto; }
  .nav-item { width: auto; flex: 0 0 auto; white-space: nowrap; padding: 9px 12px; font-size: .86rem; }
  .nav-separador { display: none; }
  .caja-usuario { border-top: 0; margin: 0 0 0 auto; padding: 0 0 0 6px; flex: 0 0 auto; }
  .caja-usuario .nombre, .caja-usuario .correo { display: none; }
  .btn-salir { width: auto; white-space: nowrap; }
}

/* ---------- Marco ---------- */
#pantalla-gestion .encabezado { margin-bottom: 16px; }
.ge-barra { display: flex; gap: 6px; overflow-x: auto; margin: 0 0 18px; padding: 4px; background: #fff; border: 1px solid var(--line); border-radius: 14px; scrollbar-width: none; }
.ge-barra::-webkit-scrollbar { display: none; }
.ge-tab { flex: 1 0 auto; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 16px; border: 0; background: transparent; color: var(--muted); font-size: .92rem; font-weight: 600; border-radius: 10px; cursor: pointer; white-space: nowrap; }
.ge-tab:hover { background: #F0F4F8; color: var(--ink); }
.ge-tab.activo { background: var(--blue); color: #fff; }
/* En el celular las cinco secciones caben siempre: icono arriba y nombre abajo. */
@media (max-width: 600px) {
  .ge-barra { gap: 2px; padding: 3px; }
  .ge-tab { flex: 1 1 0; min-width: 0; flex-direction: column; gap: 3px; padding: 8px 1px; font-size: clamp(.6rem, 2.7vw, .72rem); letter-spacing: -.01em; }
  .ge-tab span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
  .ge-tab i { font-size: 1.05rem; line-height: 1; }
}
.ge-cargando { color: var(--muted); font-size: .92rem; padding: 26px 4px; }

.ge-banner { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 13px 16px; border-radius: 12px; margin-bottom: 16px; font-size: .9rem; line-height: 1.5; border: 1px solid; }
.ge-banner a { color: inherit; font-weight: 600; }
.ge-banner-acc { display: flex; gap: 8px; flex-wrap: wrap; }
.ge-banner-bad { background: #fdecea; border-color: #f5c6cb; color: #8f2a1e; }
.ge-banner-warn { background: #fdf3e2; border-color: #f2dcae; color: #8a5a10; }
.ge-banner-info { background: #eef2fb; border-color: #cfdaf0; color: #0F4C9E; }
.ge-banner-ok { background: #e8f6ef; border-color: #b8e2cd; color: #17693f; }

.ge-miga { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: .84rem; color: var(--muted); margin-bottom: 8px; }
.ge-miga a { color: var(--blue); text-decoration: none; font-weight: 500; }
.ge-miga a:hover { text-decoration: underline; }
.ge-miga .actual { color: var(--ink); font-weight: 600; }
.ge-miga .sep { color: #A6B1C1; }

.ge-cab { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 16px; }
.ge-cab h2 { font-weight: 700; font-size: 1.35rem; letter-spacing: -.01em; color: var(--tiza-profundo); margin: 0 0 4px; }
.ge-sub { color: var(--muted); font-size: .88rem; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ge-cab-acc { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ge-fila-btn { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.ge-nada { color: var(--muted); font-size: .88rem; margin: 6px 0; }
.ge-nada-i { color: #B0BAC8; }
.ge-vacio-chico { color: var(--muted); font-size: .9rem; text-align: center; padding: 28px 12px; background: #fff; border: 1px dashed var(--line); border-radius: 12px; }
.ge-solo-lectura { padding: 11px 13px; border: 1.5px dashed var(--line); border-radius: 10px; color: var(--muted); font-size: .95rem; background: #fafcfc; }
.ge-input, input.ge-input { width: 100%; padding: 11px 13px; border: 1.5px solid var(--line); border-radius: 10px; font-family: inherit; font-size: .95rem; outline: none; background: #fff; color: var(--ink); transition: border-color .15s ease; }
.ge-input:focus, input.ge-input:focus { border-color: var(--teal); }

/* ---------- Chips ---------- */
.ge-chip { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: .72rem; font-weight: 700; letter-spacing: .02em; white-space: nowrap; vertical-align: middle; }
.ge-c-neutro { background: #EBF0F7; color: var(--muted); }
.ge-c-nee { background: #f1e9fb; color: #6b3fa0; }
.ge-c-curso { background: #eef2fb; color: var(--blue); max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.ge-c-curso.retirado { opacity: .6; text-decoration: line-through; }
.ge-e-ok { background: #e8f6ef; color: var(--ok); }
.ge-e-warn { background: #fdf3e2; color: var(--warn); }
.ge-e-bad { background: #fdecea; color: var(--error); }
.ge-n-dar { background: #e8f6ef; color: #17693f; }
.ge-n-aar { background: #eef2fb; color: #0F4C9E; }
.ge-n-paar { background: #fdf3e2; color: #8a5a10; }
.ge-n-naar { background: #fdecea; color: #a5301f; }
.ge-t-academico { background: #eef2fb; color: var(--blue); }
.ge-t-conductual { background: #fdecea; color: var(--error); }
.ge-t-asistencia { background: #fdf3e2; color: var(--warn); }
.ge-t-representante { background: #DFEBF9; color: var(--teal-dark); }
.ge-t-felicitacion { background: #e8f6ef; color: var(--ok); }
.ge-t-nee { background: #f1e9fb; color: #6b3fa0; }
.ge-t-otro { background: #EBF0F7; color: var(--muted); }

/* ---------- Menús "Más" ---------- */
.ge-menu-caja { position: relative; display: inline-block; }
.ge-menu { display: none; position: absolute; right: 0; top: calc(100% + 4px); min-width: 210px; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 10px 28px rgba(15, 45, 91, .16); padding: 6px; z-index: 40; text-align: left; }
.ge-menu.abierto { display: block; }
.ge-menu-item { display: block; width: 100%; text-align: left; border: 0; background: transparent; padding: 10px 12px; border-radius: 8px; font-size: .88rem; color: var(--ink); cursor: pointer; font-family: inherit; }
.ge-menu-item:hover { background: #F0F4F8; }
.ge-menu-item.peligro { color: var(--error); }
.ge-menu-item.peligro:hover { background: #fdecea; }

/* ---------- Inicio ---------- */
.ge-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; margin-bottom: 18px; }
.ge-stat { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 15px 18px; display: flex; align-items: center; gap: 14px; }
.ge-stat > i { width: 42px; height: 42px; display: flex; align-items: center; justify-content: center; border-radius: 12px; background: #E6EFFA; color: var(--teal-dark); font-size: 1.15rem; flex: 0 0 auto; }
.ge-stat b { display: block; font-size: 1.6rem; line-height: 1.05; }
.ge-stat span { color: var(--muted); font-size: .84rem; }

.ge-bienvenida { display: flex; gap: 26px; align-items: center; padding: 26px; }
.ge-bienvenida > img { width: 130px; height: auto; flex: 0 0 auto; }
.ge-pasos { list-style: none; margin: 0 0 14px; padding: 0; counter-reset: paso; display: flex; flex-direction: column; gap: 10px; }
.ge-pasos li { counter-increment: paso; display: flex; align-items: baseline; gap: 12px; font-size: .92rem; }
.ge-pasos li::before { content: counter(paso); flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; background: var(--blue); color: #fff; font-weight: 700; font-size: .8rem; display: flex; align-items: center; justify-content: center; align-self: center; }
.ge-pasos li b { margin-right: 4px; }
.ge-pasos li span { color: var(--muted); }
@media (max-width: 700px) { .ge-bienvenida { flex-direction: column; text-align: left; align-items: flex-start; } .ge-bienvenida > img { width: 96px; } }

.ge-rapido { border-top: 1px solid var(--line); padding: 12px 0 4px; }
.ge-rapido:first-of-type { border-top: 0; padding-top: 0; }
/* Con color de asignatura: una banda suave con franja a la izquierda, como la tarjeta de la asignatura. */
.ge-rapido[class*="ge-tono-"], .ge-rapido[class*="ge-tono-"]:first-of-type { background: var(--ge-tono-fondo); border: 1px solid var(--ge-tono-borde); border-left: 5px solid var(--ge-tono-franja); border-radius: 12px; padding: 12px 14px 6px; margin-top: 10px; }
.ge-rapido[class*="ge-tono-"]:first-of-type { margin-top: 0; }
.ge-rapido[class*="ge-tono-"] .ge-rapido-asig b, .ge-rapido[class*="ge-tono-"] .ge-rapido-nom small { color: var(--ge-tono-texto); }
.ge-rapido[class*="ge-tono-"] .ge-rapido-vacio { color: var(--ge-tono-texto); }
.ge-rapido-asig { font-size: .95rem; margin-bottom: 8px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ge-rapido-curso { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 8px 0; }
.ge-rapido-nom b { display: block; font-size: .92rem; }
.ge-rapido-nom small { color: var(--muted); font-size: .8rem; }
.ge-rapido-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.ge-rapido-vacio { color: var(--muted); font-size: .88rem; padding: 6px 0 10px; }

.ge-alertas { display: grid; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); gap: 16px; }
@media (max-width: 480px) { .ge-alertas { grid-template-columns: 1fr; } }
.ge-alerta { margin-bottom: 0; }
.ge-alerta h3 { margin-bottom: 10px; }
.ge-ic-bad { color: var(--error) !important; }
.ge-ic-warn { color: var(--warn) !important; }
.ge-ic-info { color: var(--blue) !important; }
.ge-li-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.ge-scroll-corto { max-height: 290px; overflow-y: auto; }
.ge-li { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; border: 0; background: transparent; padding: 9px 8px; border-radius: 9px; cursor: pointer; text-align: left; font-family: inherit; font-size: .9rem; color: var(--ink); }
.ge-li:hover { background: #F3F6FA; }
.ge-li-t b { display: block; font-weight: 600; }
.ge-li-t small { color: var(--muted); font-size: .78rem; }
.ge-li-doble { display: flex; align-items: center; gap: 6px; }
.ge-li-doble .ge-li { flex: 1; width: auto; }

/* ---------- Colores por asignatura ----------
   Diez tonos suaves de la familia azul de Tiza (con dos acentos fríos: aguamarina y violeta, para distinguir bien las asignaturas). Cada asignatura usa siempre el mismo (ver tonoDe en gestion.js).
   Variables: fondo (tinte muy claro), chip (fondo de las etiquetas), borde (línea suave), franja (borde izquierdo, más fuerte) y texto
   (variante oscura del mismo tono: contraste de al menos 7:1 sobre el fondo y el chip). Cualquier otra pantalla puede reutilizarlos. */
.ge-tono-0 { --ge-tono-fondo: #D7EAFF; --ge-tono-chip: #B7D9FF; --ge-tono-borde: #A0CDFF; --ge-tono-franja: #1E88FF; --ge-tono-texto: #003D82; }   /* azul Tiza */
.ge-tono-1 { --ge-tono-fondo: #DCF3F8; --ge-tono-chip: #AFE4EF; --ge-tono-borde: #94DAEA; --ge-tono-franja: #00A8CC; --ge-tono-texto: #004959; }   /* cian */
.ge-tono-2 { --ge-tono-fondo: #D7DCE4; --ge-tono-chip: #B2BCCB; --ge-tono-borde: #9AA7BA; --ge-tono-franja: #0F2D5B; --ge-tono-texto: #0E2B59; }   /* azul profundo */
.ge-tono-3 { --ge-tono-fondo: #E5E6FE; --ge-tono-chip: #C7C8FD; --ge-tono-borde: #B5B7FC; --ge-tono-franja: #4F53F9; --ge-tono-texto: #22259D; }   /* índigo */
.ge-tono-4 { --ge-tono-fondo: #DBE5F3; --ge-tono-chip: #BFD0E9; --ge-tono-borde: #ABC2E3; --ge-tono-franja: #366DBC; --ge-tono-texto: #143A71; }   /* cobalto */
.ge-tono-5 { --ge-tono-fondo: #E4F3FF; --ge-tono-chip: #CFEAFF; --ge-tono-borde: #BBE1FF; --ge-tono-franja: #5EB6FF; --ge-tono-texto: #1B4C74; }   /* celeste */
.ge-tono-6 { --ge-tono-fondo: #E6EBF1; --ge-tono-chip: #D0D8E3; --ge-tono-borde: #B7C4D5; --ge-tono-franja: #55739B; --ge-tono-texto: #2C415D; }   /* azul acero */
.ge-tono-7 { --ge-tono-fondo: #F5F7F8; --ge-tono-chip: #EBEDF2; --ge-tono-borde: #D4D9E2; --ge-tono-franja: #99A5BA; --ge-tono-texto: #464D59; }   /* pizarra */
.ge-tono-8 { --ge-tono-fondo: #DAF1ED; --ge-tono-chip: #CBECE6; --ge-tono-borde: #9EDBD0; --ge-tono-franja: #19A98F; --ge-tono-texto: #005243; }   /* aguamarina */
.ge-tono-9 { --ge-tono-fondo: #EEEBFA; --ge-tono-chip: #DAD4F4; --ge-tono-borde: #C7BDEF; --ge-tono-franja: #7A63D9; --ge-tono-texto: #423285; }   /* violeta */

/* ---------- Asignaturas ---------- */
.ge-filtros { display: flex; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.ge-filtros .campo { margin-bottom: 0; min-width: 190px; }
.ge-campo-buscar { flex: 1 1 260px; }
.ge-total { color: var(--muted); font-size: .86rem; padding-bottom: 12px; }
.ge-check { display: flex; align-items: center; gap: 8px; font-size: .9rem; font-weight: 400; margin: 0; cursor: pointer; }
.ge-check input { width: 17px; height: 17px; accent-color: var(--teal-dark); flex: 0 0 auto; }
.ge-filtros .ge-check { padding-bottom: 12px; }

.ge-asig { padding: 18px 20px; background: var(--ge-tono-fondo, #fff); border-color: var(--ge-tono-borde, var(--line)); border-left: 6px solid var(--ge-tono-franja, var(--line)); }
.ge-asig.archivada { filter: saturate(.35); opacity: .9; }
.ge-asig-cab { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.ge-asig-cab h3 { font-size: 1.1rem; margin: 0 0 6px; color: var(--ge-tono-texto, var(--ink)); }
.ge-asig .ge-sub { color: var(--ge-tono-texto, var(--muted)); }
.ge-asig .ge-chip.ge-c-neutro, .ge-rapido .ge-chip.ge-c-neutro, .ge-cab-asig .ge-chip.ge-c-neutro { background: var(--ge-tono-chip, #EBF0F7); color: var(--ge-tono-texto, var(--muted)); }
.ge-cursos { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.ge-curso { display: flex; flex-direction: column; gap: 3px; text-align: left; background: #f9fbfc; border: 1.5px solid var(--line); border-radius: 12px; padding: 13px 14px; cursor: pointer; font-family: inherit; transition: border-color .15s ease, box-shadow .15s ease; }
.ge-curso:hover { border-color: var(--teal); box-shadow: 0 4px 14px rgba(30, 136, 255, .14); }
.ge-asig .ge-curso { background: #fff; border-color: var(--ge-tono-borde, var(--line)); }
.ge-asig .ge-curso:hover, .ge-asig .ge-curso:focus-visible { border-color: var(--ge-tono-franja, var(--teal)); box-shadow: 0 4px 14px rgba(15, 45, 91, .10); }
.ge-curso-t { font-weight: 700; font-size: 1rem; color: var(--ink); }
.ge-curso-m { color: var(--ink); font-size: .84rem; }
.ge-curso-r { color: var(--muted); font-size: .76rem; }
.ge-asig .ge-curso-r { color: #4E5D71; }
.ge-cursos-vacio { color: var(--muted); font-size: .9rem; padding: 14px; border: 1.5px dashed var(--line); border-radius: 12px; text-align: center; }
.ge-asig .ge-cursos-vacio { color: var(--ge-tono-texto, var(--muted)); border-color: var(--ge-tono-borde, var(--line)); }

/* ---------- Curso: pestañas ---------- */
/* Encabezado del curso abierto, con el color de su asignatura */
.ge-cab-asig { background: var(--ge-tono-fondo, transparent); border: 1px solid var(--ge-tono-borde, transparent); border-left: 6px solid var(--ge-tono-franja, transparent); border-radius: 14px; padding: 14px 18px; }
.ge-cab-asig h2 { color: var(--ge-tono-texto, inherit); }
.ge-cab-asig .ge-sub, .ge-cab-asig .ge-cambiar label { color: var(--ge-tono-texto, var(--muted)); }
.ge-cambiar { min-width: 220px; }
.ge-cambiar label { font-size: .75rem; color: var(--muted); margin-bottom: 3px; }
.ge-cambiar select { padding: 8px 10px; font-size: .88rem; }
.ge-pestanas { display: flex; gap: 4px; overflow-x: auto; border-bottom: 2px solid var(--line); margin: 0 0 18px; scrollbar-width: none; }
.ge-pestanas::-webkit-scrollbar { display: none; }
.ge-pest { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; padding: 11px 16px; border: 0; background: transparent; color: var(--muted); font-size: .92rem; font-weight: 600; cursor: pointer; border-bottom: 3px solid transparent; margin-bottom: -2px; white-space: nowrap; font-family: inherit; }
.ge-pest:hover { color: var(--ink); }
.ge-pest.activo { color: var(--blue); border-bottom-color: var(--blue); }

/* ---------- Estudiantes del curso ---------- */
.ge-barra-acc { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 14px; }
.ge-buscar { flex: 1 1 220px; max-width: 340px; margin-left: auto; }
.ge-lista-est { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.ge-est { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.ge-est:last-child { border-bottom: 0; }
.ge-est.retirado { background: #fafbfb; color: var(--muted); }
.ge-est-num { flex: 0 0 26px; color: var(--muted); font-size: .8rem; text-align: right; }
.ge-est-nom { flex: 1 1 220px; min-width: 0; text-align: left; border: 0; background: transparent; padding: 8px 4px; font: inherit; font-size: .95rem; color: inherit; cursor: pointer; border-radius: 8px; }
.ge-est-nom:hover { color: var(--teal-dark); }
.ge-est-meta { flex: 1 1 180px; color: var(--muted); font-size: .82rem; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ge-est-acc { display: flex; align-items: center; gap: 6px; margin-left: auto; }
.ge-sep-lista { padding: 8px 14px; background: #F3F6FA; color: var(--muted); font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; border-bottom: 1px solid var(--line); }
.ge-sin-resultados { color: var(--muted); text-align: center; padding: 18px; }

/* ---------- Asistencia ---------- */
.ge-asis-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.ge-fecha { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ge-fecha .ge-input, .ge-fecha input.ge-input { width: auto; min-width: 150px; }
.ge-asis-fecha-larga { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; font-size: .95rem; }
.ge-guardado { font-size: .8rem; color: var(--muted); margin-left: auto; }
.ge-guardado.ok { color: var(--ok); }
.ge-guardado.guardando, .ge-guardado.pendiente { color: var(--warn); }
.ge-guardado.error, .ge-guardado.invalido { color: var(--error); font-weight: 600; }
.ge-dias { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.ge-dias-t { color: var(--muted); font-size: .8rem; margin-right: 4px; }
.ge-dia { min-width: 32px; height: 32px; padding: 0 6px; border: 1.5px solid var(--line); background: #fff; border-radius: 8px; font-size: .82rem; font-weight: 600; cursor: pointer; color: var(--ink); font-family: inherit; }
.ge-dia:hover { border-color: var(--teal); }
.ge-dia.on { background: var(--blue); border-color: var(--blue); color: #fff; }
.ge-asis-res { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 8px; }
.ge-r { padding: 5px 12px; border-radius: 999px; font-size: .8rem; background: #EBF0F7; color: var(--muted); }
.ge-r b { margin-left: 4px; color: var(--ink); }
.ge-r-p { background: #e8f6ef; color: #17693f; }
.ge-r-a { background: #fdf3e2; color: #8a5a10; }
.ge-r-f { background: #fdecea; color: #a5301f; }
.ge-r-j { background: #eef2fb; color: #0F4C9E; }
.ge-asis-leyenda { color: var(--muted); font-size: .78rem; margin: 0 0 10px; }
.ge-lista-asis { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; margin-bottom: 20px; }
.ge-asis-fila { display: grid; grid-template-columns: minmax(180px, 1fr) auto; gap: 8px 14px; align-items: center; padding: 8px 14px; border-bottom: 1px solid var(--line); }
.ge-asis-fila:last-child { border-bottom: 0; }
.ge-asis-nom { display: flex; align-items: center; gap: 6px; font-size: .95rem; min-width: 0; }
.ge-asis-btns { display: flex; gap: 6px; align-items: center; }
.ge-asis-nota { grid-column: 1 / -1; }
.ge-ab { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 66px; min-height: 48px; padding: 4px 6px; border: 1.5px solid var(--line); border-radius: 10px; background: #fff; cursor: pointer; font-family: inherit; line-height: 1.1; transition: background .1s ease, color .1s ease; }
.ge-ab b { font-size: 1.1rem; }
.ge-ab span { font-size: .66rem; letter-spacing: .02em; opacity: .85; }
.ge-ab-p { border-color: #b8e2cd; color: #1e8e5a; } .ge-ab-p.on { background: #1e8e5a; border-color: #1e8e5a; color: #fff; }
.ge-ab-a { border-color: #f2dcae; color: #b7791f; } .ge-ab-a.on { background: #d68a0d; border-color: #d68a0d; color: #fff; }
.ge-ab-f { border-color: #f5c6cb; color: #c0392b; } .ge-ab-f.on { background: #c0392b; border-color: #c0392b; color: #fff; }
.ge-ab-j { border-color: #cfdaf0; color: #1470E0; } .ge-ab-j.on { background: #1470E0; border-color: #1470E0; color: #fff; }
.ge-ab-nota { width: 42px; height: 48px; border: 1.5px solid var(--line); background: #fff; border-radius: 10px; cursor: pointer; font-size: 1rem; color: var(--muted); font-family: inherit; }
.ge-ab-nota.con { border-color: var(--teal); color: var(--teal-dark); background: #F2F6FB; }
.ge-periodo-ctl { display: flex; gap: 14px; flex-wrap: wrap; align-items: flex-end; }
.ge-periodo-ctl .campo { margin-bottom: 12px; }
@media (max-width: 640px) {
  .ge-asis-fila { grid-template-columns: 1fr; padding: 10px 12px; }
  .ge-asis-btns { display: grid; grid-template-columns: repeat(4, 1fr) 44px; width: 100%; }
  .ge-ab { min-width: 0; }
  .ge-fecha .ge-input, .ge-fecha input.ge-input { min-width: 0; flex: 1 1 130px; }
}

/* ---------- Calificaciones ---------- */
.ge-notas-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.ge-segs, .ge-filtro-tipos { display: flex; gap: 6px; flex-wrap: wrap; }
.ge-seg { padding: 8px 14px; border: 1.5px solid var(--line); background: #fff; color: var(--ink); border-radius: 999px; font-size: .85rem; font-weight: 600; cursor: pointer; font-family: inherit; white-space: nowrap; }
.ge-seg small { color: var(--muted); font-weight: 500; }
.ge-seg:hover { border-color: var(--teal); }
.ge-seg.on { background: var(--blue); border-color: var(--blue); color: #fff; }
.ge-seg.on small { color: rgba(255, 255, 255, .8); }
.ge-notas-acc { display: flex; gap: 8px; align-items: center; }
.ge-notas-sub { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }

.ge-scroll { overflow: auto; border: 1px solid var(--line); border-radius: 12px; background: #fff; -webkit-overflow-scrolling: touch; }
/* scroll-padding: cuando una celda recibe el foco (Tab, flechas, Enter) el navegador la deja a la vista
   sin quedar tapada por la columna de nombres ni por los encabezados/pie fijos. */
.ge-scroll-grid { max-height: 74vh; scroll-padding-left: 258px; scroll-padding-top: 96px; scroll-padding-bottom: 48px; }
.ge-grid { border-collapse: separate; border-spacing: 0; font-size: .88rem; min-width: 100%; }
.ge-grid th, .ge-grid td { border-bottom: 1px solid var(--line); border-right: 1px solid #EDF2F8; background: #fff; padding: 0; }
.ge-grid thead th { position: sticky; top: 0; z-index: 3; background: #F3F6FA; font-size: .76rem; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); text-align: center; padding: 8px 6px; vertical-align: middle; }
.ge-grid thead tr:first-child th { height: 36px; }
.ge-grid thead tr:nth-child(2) th { top: 36px; z-index: 3; text-transform: none; letter-spacing: 0; padding: 0; font-size: .82rem; }
.ge-grid thead th.ge-th-nom { left: 0; z-index: 5; text-align: left; padding-left: 14px; width: 250px; min-width: 250px; max-width: 250px; box-sizing: border-box; }
.ge-gh.f { background: #e8f6ef !important; color: #17693f !important; }
.ge-gh.s { background: #eef2fb !important; color: #0F4C9E !important; }
.ge-th-act.f { background: #f3faf6 !important; }
.ge-th-act.s { background: #f3f6fd !important; }
.ge-th-calc { min-width: 92px; }
/* Insumos: encabezado de tres niveles (Formativa/Sumativa → insumo → actividad) */
.ge-scroll-grid.ins { scroll-padding-top: 150px; }
.ge-grid-ins thead tr:nth-child(2) th { top: 36px; height: 42px; padding: 0; text-transform: none; letter-spacing: 0; font-size: .8rem; z-index: 3; }
.ge-grid-ins thead tr:nth-child(3) th { top: 78px; z-index: 3; text-transform: none; letter-spacing: 0; padding: 0; font-size: .82rem; }
.ge-th-ins.f { background: #dff1e8 !important; color: #17693f; }
.ge-th-ins.s { background: #e1e8f8 !important; color: #0F4C9E; }
.ge-ins-in { display: flex; align-items: stretch; justify-content: center; height: 42px; }
.ge-ins-btn { flex: 1 1 auto; display: flex; align-items: center; justify-content: center; min-width: 0; padding: 2px 8px; border: 0; background: transparent; cursor: pointer; font: inherit; font-weight: 700; color: inherit; line-height: 1.15; text-align: center; }
span.ge-ins-btn { cursor: default; }
button.ge-ins-btn:hover { background: rgba(30, 136, 255, .14); }
.ge-ins-nom { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; overflow-wrap: anywhere; }
.ge-ins-mas { flex: 0 0 28px; border: 0; border-left: 1px solid rgba(0, 0, 0, .09); background: transparent; cursor: pointer; font-size: 1.1rem; font-weight: 700; color: inherit; font-family: inherit; }
.ge-ins-mas:hover { background: rgba(30, 136, 255, .22); }
.ge-th-vacia .ge-act-btn { color: var(--teal-dark); }
.ge-th-vacia .ge-act-nom { font-weight: 700; }
.ge-grid td.ge-vacia { background: repeating-linear-gradient(135deg, #fbfdfd, #fbfdfd 6px, #F0F4F9 6px, #F0F4F9 12px); min-width: 92px; }
.ge-grid tfoot td.ge-vacia { background: #F3F6FA !important; }
.ge-act-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; min-width: 88px; max-width: 130px; margin: 0 auto; padding: 6px 6px; border: 0; background: transparent; cursor: pointer; color: var(--ink); font-family: inherit; }
.ge-act-btn:hover { background: rgba(30, 136, 255, .1); }
.ge-act-nom { font-weight: 600; font-size: .82rem; max-width: 118px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ge-act-meta { font-size: .7rem; color: var(--muted); }
.ge-grid .ge-nom { position: sticky; left: 0; z-index: 2; width: 250px; min-width: 250px; max-width: 250px; box-sizing: border-box; padding: 4px 10px; text-align: left; font-weight: 500; background: #fff; }
/* Nombre del estudiante: ocupa lo que haya (hasta 2 renglones; 3 en el celular) y se ve lo que alcanza; el nombre completo sale al pasar el cursor. */
.ge-nom-in { display: flex; align-items: center; gap: 6px; min-width: 0; }
.ge-nom-in .ge-num { flex: 0 0 auto; }
.ge-nom-btn { flex: 1 1 auto; min-width: 0; line-height: 1.22; }
.ge-nom-txt { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; overflow-wrap: anywhere; }
.ge-nom-in .ge-chip { flex: 0 0 auto; }
.ge-grid tr.retirado td, .ge-grid tr.retirado th { background: #fafbfb; color: var(--muted); }
.ge-num { display: inline-block; min-width: 24px; color: var(--muted); font-size: .76rem; }
.ge-enlace { background: none; border: 0; padding: 0; margin: 0; font: inherit; color: inherit; cursor: pointer; text-align: left; }
.ge-enlace:hover { color: var(--teal-dark); text-decoration: underline; }
.ge-grid input.ge-nota { display: block; width: 100%; min-width: 72px; max-width: 96px; margin: 0 auto; text-align: center; padding: 11px 4px; border: 2px solid transparent; border-radius: 0; background: transparent; font-size: .95rem; font-weight: 500; outline: none; }
.ge-grid input.ge-nota:hover { background: #F6F8FB; }
.ge-grid input.ge-nota:focus { border-color: var(--teal); background: #F2F6FB; }
.ge-grid input.ge-nota.mal { border-color: var(--error); background: #fdecea; color: var(--error); }
.ge-calc { text-align: center; font-weight: 600; padding: 6px 8px !important; min-width: 84px; font-variant-numeric: tabular-nums; }
.ge-calc.bajo { color: var(--error); background: #fff7f6 !important; }
.ge-calc[data-c="nt"] { background: #F6F8FB; font-size: .95rem; }
.ge-prov { color: var(--warn); font-weight: 800; margin-left: 2px; cursor: help; }
.ge-grid tfoot td, .ge-grid tfoot th { position: sticky; bottom: 0; z-index: 2; background: #F3F6FA !important; font-weight: 700; text-align: center; padding: 8px 6px; border-top: 2px solid var(--line); font-size: .85rem; }
.ge-grid tfoot th.ge-nom { z-index: 4; text-align: left; color: var(--muted); font-size: .76rem; text-transform: uppercase; letter-spacing: .03em; }
.ge-ayuda-grid { margin: 10px 2px 0; line-height: 1.5; }

@media (max-width: 600px) {
  /* En el celular la columna de nombres ocupa poco para que se vean las notas; el nombre puede ir en 2-3 renglones. */
  .ge-scroll-grid { scroll-padding-left: 134px; max-height: 70vh; }
  .ge-grid .ge-nom, .ge-grid thead th.ge-th-nom { width: 128px; min-width: 128px; max-width: 128px; padding: 6px 8px; }
  .ge-grid .ge-nom { font-size: .8rem; line-height: 1.2; }
  .ge-nom-in { flex-wrap: wrap; row-gap: 2px; }
  .ge-nom-txt { -webkit-line-clamp: 3; line-clamp: 3; }
  .ge-grid .ge-nom .ge-num { display: none; }
  .ge-scroll-grid.ins { scroll-padding-top: 140px; }
  .ge-grid tfoot th.ge-nom { font-size: .68rem; }
}
.ge-qcell { display: inline-flex; align-items: center; justify-content: center; min-width: 52px; height: 40px; padding: 0 10px; border: 1.5px solid var(--line); border-radius: 10px; background: #fff; cursor: pointer; font-weight: 800; font-size: .95rem; color: var(--muted); font-family: inherit; outline: none; }
.ge-grid .ge-qcell { margin: 4px auto; display: flex; }
.ge-qcell:focus { border-color: var(--teal); box-shadow: 0 0 0 2px rgba(30, 136, 255, .25); }
.ge-qcell.v3 { background: #e8f6ef; border-color: #b8e2cd; color: #17693f; }
.ge-qcell.v2 { background: #fdf3e2; border-color: #f2dcae; color: #8a5a10; }
.ge-qcell.v1 { background: #fdecea; border-color: #f5c6cb; color: #a5301f; }
.ge-qcell.v0 { background: #EBF0F7; border-color: #D2DCEB; color: var(--muted); }
.ge-qval { min-width: 64px; }
.ge-conteo { white-space: nowrap; }
.ge-ct { display: inline-block; padding: 1px 7px; margin: 1px 2px; border-radius: 999px; font-size: .72rem; font-weight: 700; }
.ge-ct.v3 { background: #e8f6ef; color: #17693f; } .ge-ct.v2 { background: #fdf3e2; color: #8a5a10; }
.ge-ct.v1 { background: #fdecea; color: #a5301f; } .ge-ct.v0 { background: #EBF0F7; color: var(--muted); }
.ge-conteo-mini { margin-top: 3px; }

/* Tablas simples (resumen anual, asistencia por período, ficha) */
.ge-tabla { width: 100%; border-collapse: collapse; font-size: .88rem; }
.ge-tabla th, .ge-tabla td { padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.ge-tabla thead th { font-size: .74rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); background: #F3F6FA; white-space: nowrap; }
.ge-tabla tbody th { font-weight: 500; }
.ge-tabla tr.retirado { color: var(--muted); background: #fafbfb; }
.ge-tabla td { font-variant-numeric: tabular-nums; }
.ge-anual td, .ge-anual th { }
.ge-anual thead th:not(:first-child) { text-align: center; }
.ge-centro { text-align: center !important; }
.ge-centro.bajo { color: var(--error); font-weight: 700; }
.ge-anual-n { font-weight: 800; font-size: .98rem; }
.ge-anual-n.ok { color: var(--ink); }
.ge-anual-n.bajo { color: var(--error); }

/* ---------- Reportes ---------- */
.ge-reportes { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 16px; }
.ge-reportes .tarjeta { margin-bottom: 0; }

/* ---------- Ajustes / datos ---------- */
.ge-ajustes { max-width: 760px; }
.ge-reglas { margin: 0; padding-left: 20px; line-height: 1.6; font-size: .9rem; }
.ge-datos { display: grid; grid-template-columns: 150px 1fr; gap: 8px 14px; margin: 0 0 16px; font-size: .92rem; }
.ge-datos dt { color: var(--muted); font-size: .84rem; }
.ge-datos dd { margin: 0; word-break: break-word; }
@media (max-width: 520px) { .ge-datos { grid-template-columns: 1fr; gap: 2px; } .ge-datos dd { margin-bottom: 8px; } }

/* ---------- Directorio y ficha ---------- */
.ge-dir { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.ge-dir-item { display: grid; grid-template-columns: minmax(180px, 1.1fr) minmax(160px, 1.4fr) auto; gap: 8px 14px; align-items: center; width: 100%; text-align: left; border: 0; border-bottom: 1px solid var(--line); background: #fff; padding: 11px 16px; cursor: pointer; font-family: inherit; font-size: .92rem; color: var(--ink); }
.ge-dir-item:last-child { border-bottom: 0; }
.ge-dir-item:hover { background: #F4F7FA; }
.ge-dir-cursos { display: flex; gap: 5px; flex-wrap: wrap; }
.ge-dir-ins { display: flex; gap: 6px; align-items: center; justify-content: flex-end; flex-wrap: wrap; color: var(--muted); }
@media (max-width: 760px) { .ge-dir-item { grid-template-columns: 1fr; } .ge-dir-ins { justify-content: flex-start; } }

.ge-volver { margin-bottom: 10px; }
.ge-ficha-cab { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.ge-avatar { width: 58px; height: 58px; border-radius: 50%; background: linear-gradient(140deg, var(--teal), var(--blue)); color: #fff; font-weight: 700; font-size: 1.25rem; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.ge-ficha-nom { flex: 1 1 220px; min-width: 0; }
.ge-ficha-nom h2 { font-weight: 700; font-size: 1.4rem; letter-spacing: -.01em; color: var(--tiza-profundo); margin: 0 0 4px; }
.ge-ficha-grid { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(0, 2fr); gap: 16px; align-items: start; }
.ge-ficha-grid .tarjeta { margin-bottom: 16px; }
@media (max-width: 960px) { .ge-ficha-grid { grid-template-columns: minmax(0, 1fr); } }   /* minmax(0, …): sin esto la tabla de rendimiento ensancha la columna más allá de la pantalla del celular */
.ge-filtro-tipos { margin-bottom: 14px; }
.ge-historial { display: flex; flex-direction: column; gap: 12px; }
.ge-inf { border: 1px solid var(--line); border-left: 5px solid #C6D3E6; border-radius: 12px; padding: 14px 16px; background: #fff; }
.ge-inf[data-tipo="academico"] { border-left-color: var(--blue); }
.ge-inf[data-tipo="conductual"] { border-left-color: var(--error); }
.ge-inf[data-tipo="asistencia"] { border-left-color: #d68a0d; }
.ge-inf[data-tipo="representante"] { border-left-color: var(--teal-dark); }
.ge-inf[data-tipo="felicitacion"] { border-left-color: var(--ok); }
.ge-inf[data-tipo="nee"] { border-left-color: #8a58c4; }
.ge-inf-cab { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.ge-inf-fecha { color: var(--muted); font-size: .82rem; }
.ge-inf-curso { color: var(--muted); font-size: .8rem; }
.ge-inf h4 { margin: 0 0 6px; font-size: 1rem; }
.ge-inf-detalle { margin: 0 0 8px; font-size: .9rem; line-height: 1.55; white-space: pre-wrap; }
.ge-inf-acu { background: #F3F6FA; border-radius: 8px; padding: 9px 12px; font-size: .86rem; line-height: 1.5; margin-bottom: 8px; white-space: pre-wrap; }
.ge-inf-seg { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: .86rem; margin-bottom: 8px; }
.ge-inf-acc { display: flex; gap: 8px; }

/* ---------- Ventanas, avisos, formularios ---------- */
.ge-fondo { position: fixed; inset: 0; background: rgba(15, 45, 91, .55); z-index: 60; display: flex; align-items: center; justify-content: center; padding: 20px; }
.ge-modal { background: #fff; border-radius: 16px; width: 100%; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 24px 60px rgba(15, 45, 91, .35); }
.ge-modal-cab { padding: 16px 22px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ge-modal-cab h3 { margin: 0; font-size: 1.08rem; }
.ge-modal-cuerpo { padding: 20px 22px; overflow-y: auto; flex: 1; }
.ge-modal-pie { padding: 14px 22px; border-top: 1px solid var(--line); display: flex; justify-content: flex-end; align-items: center; gap: 10px; flex-wrap: wrap; background: #fcfdfd; }
.ge-modal .btn-icono { font-size: 1rem; }
.ge-err:empty { display: none; }
.ge-err .mensaje { margin-bottom: 14px; }
.ge-impacto { margin: 0 0 8px; padding-left: 20px; line-height: 1.6; font-size: .92rem; }
.ge-impacto li.mal { color: var(--error); }
.ge-resultado { list-style: disc; }
@media (max-width: 600px) {
  .ge-fondo { padding: 0; align-items: flex-end; }
  .ge-modal { max-height: 94vh; border-radius: 18px 18px 0 0; }
  .ge-modal-cuerpo { padding: 16px; }
  .ge-modal-pie { padding: 12px 16px; }
  .ge-modal-pie .btn { flex: 1 1 auto; }
}

.ge-toast { position: fixed; left: 50%; bottom: 26px; transform: translate(-50%, 24px); background: #13243B; color: #fff; padding: 12px 20px; border-radius: 12px; font-size: .9rem; z-index: 80; opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .2s ease; max-width: min(92vw, 520px); text-align: center; box-shadow: 0 10px 30px rgba(15, 45, 91, .3); }
.ge-toast.visible { opacity: 1; transform: translate(-50%, 0); }
.ge-toast.error { background: #a5301f; }
.ge-toast.ok { background: #13243B; }

.ge-letras { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
.ge-letra { width: 34px; height: 34px; border: 1.5px solid var(--line); background: #fff; border-radius: 8px; font-weight: 700; cursor: pointer; font-family: inherit; color: var(--ink); }
.ge-letra:hover { border-color: var(--teal); background: #F2F6FB; }
.ge-regla-caja { background: #f9fbfc; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin-bottom: 8px; }
.ge-regla-t { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ge-radios-g { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@media (max-width: 520px) { .ge-radios-g { grid-template-columns: 1fr; } }
.ge-radio-c { display: flex; align-items: flex-start; gap: 10px; padding: 11px 12px; border: 1.5px solid var(--line); border-radius: 12px; cursor: pointer; margin: 0; font-weight: 400; }
.ge-radio-c:has(input:checked) { border-color: var(--blue); background: #f3f6fd; }
.ge-radio-c input { margin-top: 3px; accent-color: var(--blue); }
.ge-radio-c b { display: block; font-size: .92rem; }
.ge-radio-c small { color: var(--muted); font-size: .76rem; line-height: 1.35; display: block; }
.ge-checklista { max-height: 260px; overflow-y: auto; border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; margin-top: 8px; display: flex; flex-direction: column; gap: 8px; }

/* Importar lista: zona del archivo (Excel, Word, CSV) */
.ge-subir { border: 2px dashed #A9B9D0; border-radius: 14px; background: #F5F8FB; padding: 16px; text-align: center; transition: border-color .15s ease, background .15s ease; }
.ge-subir.arrastrando { border-color: var(--teal); background: #DFECFB; }
.ge-subir-ayuda { margin: 8px 0 0; color: #4E5D71; font-size: .82rem; }
.ge-subir-o { display: flex; align-items: center; gap: 10px; margin: 12px 0 8px; color: #4E5D71; font-size: .86rem; font-weight: 600; }
.ge-subir-o::before, .ge-subir-o::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.ge-arch-msg { margin: 10px 0 0; padding: 10px 14px; border-radius: 10px; border: 1px solid #cfdaf0; background: #eef2fb; color: #0F4C9E; font-size: .88rem; line-height: 1.45; }
.ge-arch-msg.ok { background: #e8f6ef; border-color: #b8e2cd; color: #17693f; }
#ge-i-paso2 > .ge-arch-msg { margin: 0 0 12px; }

/* Pegar lista */
.ge-opciones { background: #f9fbfc; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin: 12px 0 10px; display: flex; flex-direction: column; gap: 8px; }
.ge-opciones-t { font-size: .84rem; font-weight: 600; }
.ge-radio { display: flex; align-items: center; gap: 8px; margin: 0; font-weight: 400; font-size: .92rem; cursor: pointer; }
.ge-radio small { color: var(--muted); }
.ge-radio input { accent-color: var(--blue); }
.ge-scroll-previa { max-height: 46vh; }
.ge-tabla-previa { width: 100%; border-collapse: collapse; font-size: .86rem; }
.ge-tabla-previa th { position: sticky; top: 0; background: #F3F6FA; z-index: 1; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); padding: 8px; text-align: left; }
.ge-tabla-previa td { padding: 3px 4px; border-bottom: 1px solid var(--line); }
.ge-tabla-previa td.n { color: var(--muted); font-size: .76rem; text-align: right; padding-right: 8px; width: 34px; }
.ge-tabla-previa td.av { min-width: 110px; }
.ge-tabla-previa tr.mala { background: #fff7f6; }
.ge-tabla-previa input.ge-pv { width: 100%; padding: 7px 8px; border: 1.5px solid transparent; border-radius: 7px; background: transparent; font-size: .86rem; font-family: inherit; }
.ge-tabla-previa input.ge-pv:hover { background: #F3F6FA; }
.ge-tabla-previa input.ge-pv:focus { border-color: var(--teal); background: #fff; }
.ge-tabla-previa input.ge-pv.ced { max-width: 130px; }

/* ---------- Horario de clases ---------- */
.ge-hor-caja { overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 8px; -webkit-overflow-scrolling: touch; }
.ge-hor { border-collapse: separate; border-spacing: 4px; width: 100%; min-width: 660px; }
.ge-hor th, .ge-hor td { padding: 0; vertical-align: middle; }
.ge-hor thead th { font-size: .82rem; color: var(--muted); font-weight: 700; padding: 8px 4px; text-align: center; border-radius: 8px; }
.ge-hor thead th.hoy { background: var(--blue); color: #fff; }
.ge-hor th.ge-hor-h { width: 100px; min-width: 100px; text-align: left; padding: 6px 8px; position: sticky; left: 0; background: #fff; z-index: 2; }
.ge-hor tbody th.ge-hor-h b { display: block; font-size: .84rem; color: var(--ink); }
.ge-hor tbody th.ge-hor-h small { display: block; color: var(--muted); font-size: .72rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.ge-hor-celda { width: 100%; min-height: 58px; border: 1.5px solid transparent; border-radius: 10px; padding: 6px 8px; text-align: left; font-family: inherit; cursor: pointer; display: flex; flex-direction: column; justify-content: center; gap: 1px; }
.ge-hor-celda b { font-size: .84rem; line-height: 1.2; overflow-wrap: anywhere; }
.ge-hor-celda small { font-size: .74rem; opacity: .85; }
.ge-hor-celda:hover, .ge-hor-celda:focus-visible { border-color: currentColor; outline: none; }
.ge-hor-celda.vacia { background: #fafcfc; border: 1.5px dashed var(--line); color: #B0BAC8; align-items: center; font-size: 1.25rem; }
.ge-hor-celda.vacia:hover, .ge-hor-celda.vacia:focus-visible { border-color: var(--teal); color: var(--teal-dark); background: #F1F6FB; }
.ge-hor-receso td { background: #F2F5F9; text-align: center; color: var(--muted); font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; padding: 7px; border-radius: 8px; }
.ge-hor-pie { margin: 10px 2px 0; }
.campo input[type=time] { width: 100%; padding: 11px 13px; border: 1.5px solid var(--line); border-radius: 10px; font-family: inherit; font-size: .95rem; outline: none; background: #fff; color: var(--ink); }
.campo input[type=time]:focus { border-color: var(--teal); }
/* Cada curso tiene su color; las actividades escritas a mano van en gris. */
.ge-hc-0 { background: #E6EFFA; color: #083C77; }
.ge-hc-1 { background: #eef2fb; color: #0F4C9E; }
.ge-hc-2 { background: #fdf3e2; color: #8a5a10; }
.ge-hc-3 { background: #e8f6ef; color: #17693f; }
.ge-hc-4 { background: #f1e9fb; color: #6b3fa0; }
.ge-hc-5 { background: #fdecea; color: #a5301f; }
.ge-hc-6 { background: #fff1e6; color: #9a4a0a; }
.ge-hc-7 { background: #eaf4d9; color: #4a6a12; }
.ge-hc-act { background: #EBF0F7; color: #505F74; }

/* Ventana de una casilla */
.ge-hor-dias { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px 12px; margin-top: 4px; }
.ge-hor-dia { align-items: flex-start; }
.ge-hor-dia small { display: block; color: var(--muted); font-size: .72rem; line-height: 1.25; }

/* Ventana de las horas del día */
.ge-hor-gen { border: 1px solid var(--line); border-radius: 12px; padding: 10px 14px 12px; margin-bottom: 14px; background: #fafcfc; }
.ge-hor-gen summary { cursor: pointer; font-weight: 600; font-size: .92rem; padding: 2px 0; }
.ge-hor-gen[open] summary { margin-bottom: 10px; }
.ge-hr-lista { display: flex; flex-direction: column; gap: 2px; }
.ge-hr-fila { display: grid; grid-template-columns: minmax(130px, 1.6fr) 118px 118px auto 34px; gap: 8px; align-items: end; padding: 6px 8px; border-radius: 10px; }
.ge-hr-fila.es-receso { background: #fff8e8; }
.ge-hr-c { display: flex; flex-direction: column; gap: 3px; margin: 0; }
.ge-hr-c small { color: var(--muted); font-size: .7rem; font-weight: 600; }
.ge-hr-c input { width: 100%; padding: 8px 9px; border: 1.5px solid var(--line); border-radius: 9px; font-family: inherit; font-size: .9rem; background: #fff; color: var(--ink); }
.ge-hr-c input:focus { border-color: var(--teal); outline: none; }
.ge-hr-rec { padding-bottom: 9px; }
.ge-hr-quitar { align-self: end; margin-bottom: 3px; }
@media (max-width: 600px) {
  /* Cada hora en dos renglones: arriba el nombre y la ✕; abajo inicio, fin y «Receso». */
  .ge-hr-fila { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; column-gap: 6px; row-gap: 8px; align-items: end; padding: 6px 4px; }
  .ge-hr-nom { grid-column: 1 / 3; grid-row: 1; }
  .ge-hr-quitar { grid-column: 3; grid-row: 1; justify-self: end; margin-bottom: 3px; }
  .ge-hr-c input { padding: 8px 6px; font-size: .86rem; min-width: 0; }
  .ge-hr-rec { padding-bottom: 9px; padding-left: 2px; }
  .ge-hr-rec span { font-size: .82rem; }
}

/* Tarjeta «Tus clases de hoy» del Inicio */
.ge-hoy { gap: 0; }
.ge-hoy-fila { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 9px 2px; border-top: 1px solid var(--line); }
.ge-hoy-fila:first-child { border-top: 0; }
.ge-hoy-hora { font-variant-numeric: tabular-nums; font-weight: 700; font-size: .86rem; min-width: 108px; }
.ge-hoy-que { display: flex; flex-direction: column; padding: 5px 11px; border-radius: 9px; min-width: 150px; }
.ge-hoy-que b { font-size: .9rem; line-height: 1.25; }
.ge-hoy-que small { font-size: .76rem; opacity: .85; }
.ge-hoy-btns { margin-left: auto; display: flex; gap: 6px; flex-wrap: wrap; }
@media (max-width: 600px) { .ge-hoy-btns { margin-left: 0; width: 100%; } }
.ge-hoy-card a { color: var(--blue); font-weight: 600; text-decoration: none; }
.ge-hoy-card a:hover { text-decoration: underline; }

/* Poca vista: con «más contraste» los bordes de los colores de asignatura se refuerzan; con colores forzados se usa el borde del sistema. */
@media (prefers-contrast: more) {
  .ge-asig, .ge-rapido[class*="ge-tono-"], .ge-cab-asig { border-color: var(--ge-tono-texto, currentColor); }
  .ge-asig .ge-curso { border-color: var(--ge-tono-texto, currentColor); }
}
@media (forced-colors: active) {
  .ge-asig, .ge-rapido[class*="ge-tono-"], .ge-cab-asig { border: 1px solid CanvasText; border-left-width: 6px; }
}

/* ---------- Calificaciones: descargas, supletorio e importación ---------- */
.ge-notas-acc { flex-wrap: wrap; }
.ge-menu-ancho { min-width: 300px; max-width: min(360px, 88vw); }
a.ge-menu-item { text-decoration: none; box-sizing: border-box; }
.ge-menu-item small { display: block; margin-top: 2px; color: var(--muted); font-size: .75rem; line-height: 1.3; }
.ge-seg-sup small { color: #b4570e; font-weight: 700; }
.ge-seg-sup.on small { color: #fff; }
@media (max-width: 640px) {
  /* En el celular los menús de la barra (Descargar, Más) se abren a lo ancho de la barra, no desde el botón: así nunca se salen de la pantalla. */
  .ge-notas-acc { width: 100%; position: relative; }
  .ge-notas-acc .btn, .ge-notas-acc .ge-menu-caja .btn { padding: 8px 11px; }
  .ge-notas-acc .ge-menu-caja { position: static; }
  .ge-notas-acc .ge-menu { left: 0; right: 0; min-width: 0; max-width: none; }
}

.ge-sinsup { margin-top: 14px; }
.ge-sinsup .ge-check small { color: var(--muted); }

.ge-norma { background: #F5F8FB; border: 1px solid var(--line); border-radius: 12px; padding: 10px 14px; margin-bottom: 14px; font-size: .88rem; line-height: 1.5; }
.ge-norma summary { cursor: pointer; font-weight: 600; color: #0F4C9E; }
.ge-norma summary i { margin-right: 6px; }
.ge-norma ul { margin: 8px 0 0; padding-left: 20px; }
.ge-norma-t { margin: 10px 0 0; font-weight: 700; font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: #8a5a10; }
.ge-norma-pc li { color: #6a4a12; }
.ge-sup-datos { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.ge-sup-dato { padding: 7px 12px; border-radius: 999px; background: #EBF0F7; color: var(--ink); font-size: .85rem; }
.ge-sup-dato b { font-size: 1rem; }
.ge-sup-dato.warn { background: #fdf3e2; color: #8a5a10; }
.ge-sup-dato.ok { background: #e8f6ef; color: #17693f; }
.ge-sup-dato.bad { background: #fdecea; color: #8f2a1e; }
.ge-sup-tabla td.ge-acc { text-align: right; white-space: nowrap; }
.ge-sup-nota { font-weight: 700; }
.ge-sup-fecha { font-weight: 400; font-size: .74rem; color: var(--muted); }
.ge-sup-obs { max-width: 220px; margin-top: 3px; font-size: .78rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ge-sup-efecto { margin: 12px 0 0; padding: 10px 12px; border-radius: 10px; background: #eef2fb; color: #0F4C9E; font-size: .88rem; line-height: 1.45; }
.ge-sup-tabla .ge-nom { min-width: 160px; }
.ge-sup-tabla th, .ge-sup-tabla td { padding-left: 8px; padding-right: 8px; }
@media (max-width: 640px) {
  .ge-sup-tabla .ge-nom { min-width: 150px; }
  .ge-sup-tabla th, .ge-sup-tabla td { padding: 8px 8px; }
}

.ge-n-h { margin: 16px 0 8px; font-size: .95rem; }
.ge-n-h small { color: var(--muted); font-weight: 500; }
.ge-n-colcaja { max-height: 30vh; }
.ge-n-col { font-weight: 600; white-space: nowrap; max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.ge-n-cols td { padding: 6px 8px; }
.ge-n-cols select, .ge-n-cols input { padding: 6px 8px; border: 1.5px solid var(--line); border-radius: 8px; font: inherit; font-size: .86rem; background: #fff; max-width: 100%; }
.ge-n-dst { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.ge-n-nueva { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; font-size: .86rem; color: var(--muted); }
.ge-n-nueva.oculto { display: none; }
.ge-n-cols select.ge-n-dest { width: auto; min-width: 230px; }
.ge-n-cols select.ge-n-ins { width: auto; min-width: 190px; }
.ge-n-cols input.ge-n-max { width: 64px; text-align: center; }
.ge-n-resumen { margin: 0 0 10px; font-size: .9rem; line-height: 1.5; }
.ge-n-malo { color: var(--error); }
.ge-n-tabla th { white-space: nowrap; max-width: 130px; overflow: hidden; text-overflow: ellipsis; }
.ge-n-tabla td { text-align: center; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ge-n-tabla td.ge-n-est { text-align: left; white-space: normal; min-width: 190px; }
.ge-n-quien { font-weight: 600; font-size: .86rem; }
.ge-n-como { font-size: .76rem; color: var(--muted); }
.ge-n-como.parecido { color: #8a5a10; }
.ge-n-como.mal { color: var(--error); }
.ge-n-tabla td.mal { color: var(--error); font-weight: 700; background: #fdecea; }
.ge-n-tabla td.cambia { background: #fdf3e2; font-weight: 700; }
.ge-n-tabla td.cons { color: var(--muted); text-decoration: line-through; }
.ge-n-tabla td.igual { color: var(--muted); }
.ge-n-tabla tr.mala td { background: #fff7f6; }

/* =====================================================================================================================
   Casos e informes con debido proceso (gestion_casos.js). Todo lo del módulo lleva el prefijo «gc-».
   ===================================================================================================================== */
.gc-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.gc-aviso { display: flex; gap: 9px; align-items: flex-start; margin: 18px 0 4px; padding: 10px 14px; border-radius: 10px; background: #F3F6FA; border: 1px solid var(--line); color: #485568; font-size: .8rem; line-height: 1.45; }
.gc-aviso i { color: var(--blue); margin-top: 2px; }
/* ◐ ✔ ✖ ⚠ se ven bien aunque la fuente del sistema no los traiga */
.gc-gl { font-family: "Segoe UI Symbol", "Apple Symbols", "DejaVu Sans", "Noto Sans Symbols2", "Noto Sans Symbols", sans-serif; font-weight: 700; font-size: .95em; display: inline-block; min-width: 1.1em; text-align: center; }
.gc-gl-ok { color: var(--ok); } .gc-gl-parcial { color: #b7791f; } .gc-gl-no { color: var(--muted); } .gc-gl-confirmar { color: var(--error); }

/* Etiquetas de colores por categoría */
.gc-chip.gc-col-azul { background: #eef2fb; color: #0F4C9E; }
.gc-chip.gc-col-violeta { background: #f1e9fb; color: #6b3fa0; }
.gc-chip.gc-col-celeste { background: #DFEDFC; color: #084183; }
.gc-chip.gc-col-ambar { background: #fdf3e2; color: #8a5a10; }
.gc-chip.gc-col-verde { background: #e8f6ef; color: #17693f; }
.gc-chip.gc-col-rojo { background: #fdecea; color: #a5301f; }
.gc-conf { background: #394352; color: #fff; }
.gc-anulado { text-decoration: line-through; }
.gc-sub-f { color: var(--muted); font-size: .84rem; margin-left: 4px; }
.gc-cab { margin-bottom: 12px; }
.gc-cab h2 { overflow-wrap: anywhere; }

/* Pestaña «Casos» de la ficha: línea de tiempo */
.gc-tab-cab { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.gc-tab-t { margin: 0; font-size: 1.02rem; display: flex; align-items: center; gap: 8px; }
.gc-tab-t i { color: var(--blue); }
.gc-vacio { text-align: center; padding: 22px 12px; color: var(--muted); background: #fafcfc; border: 1px dashed var(--line); border-radius: 12px; }
.gc-vacio p { margin: 0 0 6px; }
.gc-lt-t { margin: 18px 0 10px; font-size: .86rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.gc-lt { list-style: none; margin: 0 0 8px; padding: 0 0 0 20px; border-left: 2px solid var(--line); display: flex; flex-direction: column; gap: 12px; }
.gc-lt-item { position: relative; --gc-punto: #1470E0; }
.gc-lt-item.gc-col-violeta { --gc-punto: #8a58c4; }
.gc-lt-item.gc-col-celeste { --gc-punto: #1763B9; }
.gc-lt-item.gc-col-ambar { --gc-punto: #d68a0d; }
.gc-lt-item.gc-col-verde { --gc-punto: #1e8e5a; }
.gc-lt-item.gc-col-rojo { --gc-punto: #c0392b; }
.gc-lt-punto { position: absolute; left: -29px; top: 17px; width: 14px; height: 14px; border-radius: 50%; background: var(--gc-punto); border: 3px solid #fff; box-shadow: 0 0 0 1px var(--line); }
.gc-lt-card { width: 100%; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; text-align: left; border: 1px solid var(--line); border-left: 5px solid var(--gc-punto); border-radius: 12px; background: #fff; padding: 12px 14px; cursor: pointer; font-family: inherit; font-size: .9rem; color: var(--ink); }
.gc-lt-card:hover { background: #fafcfc; border-color: #C6D3E6; border-left-color: var(--gc-punto); }
.gc-lt-item.cerrado .gc-lt-card { background: #fafcfc; }
.gc-lt-item.cerrado .gc-lt-txt { color: var(--muted); }
.gc-lt-f1 { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.gc-lt-cod { font-weight: 700; letter-spacing: .02em; }
.gc-lt-fecha { color: var(--muted); font-size: .82rem; }
.gc-lt-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.gc-lt-txt { line-height: 1.45; overflow-wrap: anywhere; }
.gc-lt-prox, .gc-lt-docs { font-size: .83rem; color: #485568; line-height: 1.45; }

/* Asistente: pasos */
.gc-pasos { list-style: none; display: flex; gap: 6px; margin: 0 0 16px; padding: 4px; background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow-x: auto; scrollbar-width: none; }
.gc-pasos::-webkit-scrollbar { display: none; }
.gc-pasos li { flex: 1 1 0; min-width: 0; }
.gc-paso-b { width: 100%; display: flex; align-items: center; gap: 8px; padding: 9px 10px; border: 0; border-radius: 10px; background: transparent; color: var(--muted); font-family: inherit; font-size: .84rem; font-weight: 600; cursor: pointer; text-align: left; min-height: 44px; }
.gc-paso-b:hover:not(:disabled) { background: #F0F4F8; color: var(--ink); }
.gc-n { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; background: #EBF0F7; color: var(--muted); display: flex; align-items: center; justify-content: center; font-size: .78rem; font-weight: 700; }
.gc-nt { line-height: 1.2; }
.gc-paso-b.on { background: var(--blue); color: #fff; }
.gc-paso-b.on .gc-n { background: #fff; color: var(--blue); }
.gc-paso-b.pasado .gc-n { background: #e8f6ef; color: var(--ok); }
.gc-paso-b.bloq { opacity: .5; cursor: default; }
@media (max-width: 760px) {
  .gc-pasos li { flex: 0 0 auto; }
  .gc-pasos li:has(.on) { flex: 1 1 auto; }
  .gc-paso-b { padding: 8px; }
  .gc-nt { display: none; }
  .gc-paso-b.on .gc-nt { display: inline; }
}

/* Alertas (las rojas van primero) */
.gc-alertas { display: flex; flex-direction: column; gap: 10px; margin-bottom: 14px; }
.gc-alertas:empty { display: none; }
.gc-alerta { border-radius: 12px; padding: 12px 14px; border: 1px solid; border-left-width: 6px; font-size: .9rem; line-height: 1.5; }
.gc-alerta p { margin: 6px 0 0; }
.gc-alerta ul { margin: 8px 0 0; padding-left: 20px; }
.gc-alerta li { margin-bottom: 3px; }
.gc-al-roja { background: #fdecea; border-color: #e8a79f; border-left-color: #c0392b; color: #7d2216; }
.gc-al-ambar { background: #fdf3e2; border-color: #f2dcae; border-left-color: #d68a0d; color: #6f4609; }
.gc-al-info { background: #eef2fb; border-color: #cfdaf0; border-left-color: var(--blue); color: #0F4C9E; }
.gc-al-verde { background: #e8f6ef; border-color: #b8e2cd; border-left-color: var(--ok); color: #17693f; }
.gc-al-t { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; }
.gc-al-etq { font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 1px 8px; border-radius: 999px; background: rgba(0, 0, 0, .09); }

/* Preguntas del triaje */
.gc-bloque-fecha { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 12px 16px; margin-bottom: 12px; max-width: 360px; }
.gc-bloque-fecha label { margin-bottom: 6px; }
.gc-preg { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; margin-bottom: 12px; }
.gc-preg-0 { border-color: #e8c9c5; background: #fffaf9; }
.gc-preg-t { font-weight: 600; font-size: .98rem; margin-bottom: 8px; line-height: 1.4; }
.gc-cero { display: inline-flex; width: 22px; height: 22px; border-radius: 50%; background: var(--error); color: #fff; align-items: center; justify-content: center; font-size: .75rem; margin-right: 6px; vertical-align: middle; }
.gc-preg-ayuda { color: var(--muted); font-size: .82rem; margin: -2px 0 10px; line-height: 1.45; }
.gc-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.gc-pill { min-height: 44px; padding: 9px 20px; border: 1.5px solid var(--line); background: #fff; border-radius: 999px; font-family: inherit; font-size: .92rem; font-weight: 600; color: var(--ink); cursor: pointer; }
.gc-pill:hover { border-color: var(--blue); }
.gc-pill.on { background: var(--blue); border-color: var(--blue); color: #fff; }
.gc-fam-g { margin-bottom: 8px; }
.gc-fam-gt { font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin: 10px 0 6px; }
.gc-fam { display: block; width: 100%; text-align: left; padding: 11px 14px; margin-bottom: 6px; border: 1.5px solid var(--line); border-radius: 12px; background: #fff; font-family: inherit; font-size: .92rem; color: var(--ink); cursor: pointer; line-height: 1.4; min-height: 44px; }
.gc-fam:hover { border-color: var(--blue); }
.gc-fam.on { border-color: var(--blue); background: #f3f6fd; font-weight: 600; box-shadow: inset 4px 0 0 var(--blue); }
.gc-radios { display: flex; flex-direction: column; gap: 8px; }
.gc-radios .ge-radio-c { margin: 0; }
.gc-sec { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; margin-bottom: 12px; }
.gc-sec-t { margin: 0 0 10px; font-size: 1rem; }
.gc-pend { color: var(--muted); font-size: .9rem; margin: 0; line-height: 1.5; }
.gc-motivos { margin: 0 0 10px; padding-left: 20px; font-size: .88rem; color: #485568; }
.gc-cat-det { margin-top: 10px; padding: 10px 12px; background: #f9fbfc; border: 1px solid var(--line); border-radius: 10px; font-size: .86rem; line-height: 1.5; }
.gc-cat-det p { margin: 0 0 6px; }
.gc-base-t { font-size: .74rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); margin: 4px 0 2px; }
.gc-base { list-style: none; margin: 0; padding: 0; font-size: .84rem; }
.gc-base li { margin-bottom: 2px; }
.gc-bloq { margin-top: 10px; font-size: .84rem; color: #485568; }
.gc-bloq summary { cursor: pointer; font-weight: 600; }
.gc-bloq ul { margin: 8px 0 0; padding-left: 20px; }
.gc-pie { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 16px 0 8px; padding-top: 12px; border-top: 1px solid var(--line); }
.gc-pie-nota { color: var(--muted); font-size: .84rem; flex: 1 1 200px; line-height: 1.4; }
@media (max-width: 600px) { .gc-pie .btn { flex: 1 1 100%; } .gc-pie .btn + .btn { margin-top: 0; } }

/* Paso 2: datos */
.gc-resumen-1 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; font-size: .9rem; }
.gc-nohacer { background: #fff7f6; border: 1px solid #f0c9c4; border-left: 6px solid var(--error); border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; font-size: .88rem; color: #7d2216; }
.gc-nh-t { font-weight: 700; margin-bottom: 4px; }
.gc-nohacer ul { margin: 0; padding-left: 20px; line-height: 1.5; }
.gc-sec .campo:last-child { margin-bottom: 0; }
.gc-cuenta { float: right; color: var(--muted); }
.gc-chk { display: flex; align-items: center; gap: 10px; font-size: .92rem; font-weight: 500; margin: 0 0 4px; cursor: pointer; }
.gc-chk input { width: 18px; height: 18px; accent-color: var(--blue); }
.gc-det { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 12px 16px; margin-bottom: 12px; }
.gc-det summary { cursor: pointer; font-weight: 600; }
.gc-det[open] summary { margin-bottom: 8px; }
.gc-det-mini, .gc-det-mas { padding: 10px 14px; }
.gc-det-mini > summary, .gc-det-mas > summary { font-size: .92rem; }
.gc-det-mini > summary small, .gc-det-mas > summary small { font-weight: 400; color: var(--muted); font-size: .8rem; }
.gc-det-mini .gc-cambiar { color: var(--blue); font-weight: 600; }
.gc-det-mini[open] .gc-cambiar { display: none; }
.gc-det-mini .campo, .gc-det-mas .campo { margin-bottom: 12px; }
.gc-sec-conf { margin-top: 4px; }
.gc-antecedentes:empty { display: none; }
.gc-previos { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: .88rem; }
.gc-previos li { padding: 9px 12px; background: #f9fbfc; border: 1px solid var(--line); border-radius: 10px; line-height: 1.45; }
.gc-prev-t { color: #485568; }
.gc-nota { font-size: .86rem; color: #485568; margin: 10px 0; line-height: 1.5; }
.gc-err:empty { display: none; }
.gc-err .mensaje { margin-bottom: 10px; }
.gc-resp-l { display: grid; grid-template-columns: minmax(180px, 1fr) 2fr; gap: 6px 14px; font-size: .88rem; margin: 0; }
.gc-resp-l dt { color: var(--muted); }
.gc-resp-l dd { margin: 0; font-weight: 600; }
@media (max-width: 600px) { .gc-resp-l { grid-template-columns: 1fr; gap: 2px; } .gc-resp-l dd { margin-bottom: 8px; } }
.gc-resumen-cat { padding: 12px 14px; background: #f9fbfc; border: 1px solid var(--line); border-radius: 12px; font-size: .88rem; line-height: 1.5; }
.gc-rc-t { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.gc-rc-tipo { color: var(--muted); margin: 0 0 6px; }
.gc-previo { font-size: .88rem; margin: 10px 0; }
.gc-cuerpo { min-width: 0; }

/* Pasos 3 a 5: ruta, documentos y cierre */
.gc-abrir-l { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.gc-abrir-l li { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 0; }
.gc-escalera p { margin: 0 0 8px; font-size: .9rem; line-height: 1.5; }
.gc-escalera p:last-child { margin-bottom: 0; }
.gc-escalera .gc-art212 { padding: 9px 12px; background: #f9fbfc; border: 1px solid var(--line); border-radius: 10px; color: #485568; font-size: .86rem; }
.gc-escala { color: #485568; }
.gc-progreso { margin-bottom: 14px; }
.gc-prog-f1 { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: .92rem; margin-bottom: 8px; }
.gc-barra { height: 8px; border-radius: 999px; background: #E3EAF3; overflow: hidden; }
.gc-barra span { display: block; height: 100%; background: var(--ok); border-radius: 999px; transition: width .3s; }
.gc-prog-n { margin: 8px 0 0; color: var(--muted); font-size: .8rem; line-height: 1.45; }
.gc-nota i { color: var(--blue); margin-right: 4px; }
.gc-ruta { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.gc-pa { display: flex; gap: 12px; padding: 12px 14px; border: 1px solid var(--line); border-left: 5px solid #B8C3CF; border-radius: 12px; background: #fff; }
.gc-pa-n { flex: 0 0 auto; width: 28px; height: 28px; border-radius: 50%; background: #EBF0F7; color: var(--muted); display: flex; align-items: center; justify-content: center; font-size: .8rem; font-weight: 700; margin-top: 1px; }
.gc-pa-c { flex: 1 1 auto; min-width: 0; }
.gc-pa-f1 { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-bottom: 4px; }
.gc-pa-actor { font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--blue); }
.gc-pa-t { margin: 0 0 6px; font-size: .92rem; line-height: 1.5; overflow-wrap: anywhere; }
.gc-pa-meta { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; font-size: .82rem; color: #485568; margin-bottom: 8px; line-height: 1.45; }
.gc-pa-meta .ge-chip { margin-left: 6px; }
.gc-pa-doc { border: 0; background: none; padding: 0; font: inherit; color: var(--blue); cursor: pointer; text-align: left; line-height: 1.45; }
.gc-pa-doc:hover { text-decoration: underline; }
.gc-pa-doc.falta { color: #8a5a10; }
.gc-pa-btn { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.gc-pa-hecho { border-left-color: var(--ok); }
.gc-pa-hecho .gc-pa-n { background: #e8f6ef; color: var(--ok); }
.gc-pa-hecho .gc-pa-t { color: #485568; }
.gc-pa-vencido { border-left-color: var(--error); background: #fffaf9; }
.gc-pa-vencido .gc-pa-n { background: var(--error); color: #fff; }
.gc-pa-hoy { border-left-color: #d68a0d; }
.gc-pa-hoy .gc-pa-n { background: #fdf3e2; color: #8a5a10; }
.gc-pa-pendiente { border-left-color: var(--blue); }
.gc-pa-pendiente .gc-pa-n { background: #eef2fb; color: var(--blue); }
.gc-pa-omitido, .gc-pa-inactivo { background: #fafcfc; border-style: dashed; border-left-style: solid; }
.gc-pa-omitido .gc-pa-t, .gc-pa-inactivo .gc-pa-t { color: var(--muted); }
.gc-pa-aviso { background: #f3f6fd; border-left-color: var(--blue); }
.gc-pa-aviso .gc-pa-n { background: #dfe8f8; color: var(--blue); }
.gc-acuse { display: grid; grid-template-columns: max-content 1fr; gap: 3px 12px; margin: 0 0 8px; padding: 9px 12px; background: #f9fbfc; border: 1px solid var(--line); border-radius: 10px; font-size: .84rem; line-height: 1.45; }
.gc-acuse dt { color: var(--muted); }
.gc-acuse dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 480px) {
  .gc-pa { padding: 11px 11px; gap: 9px; }
  .gc-acuse { grid-template-columns: 1fr; gap: 0; }
  .gc-acuse dd { margin-bottom: 5px; }
}
.gc-m-paso { margin: 0 0 12px; padding: 9px 12px; background: #F3F6FA; border-radius: 10px; font-size: .88rem; line-height: 1.45; }
.gc-det-acuse { margin: 4px 0 12px; padding: 10px 14px; }
.gc-det-acuse summary { font-size: .9rem; }
.gc-cuerpo input[type="date"], .gc-cuerpo input[type="time"], .ge-modal input[type="date"], .ge-modal input[type="time"] { min-height: 44px; box-sizing: border-box; }
.gc-det-acuse .campo { margin-bottom: 10px; }

/* Paso 4: documentos */
.gc-docs-intro { margin-bottom: 12px; font-size: .9rem; line-height: 1.5; color: #485568; }
.gc-docs-intro p { margin: 0 0 8px; }
.gc-doc { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; margin-bottom: 12px; transition: box-shadow .3s, border-color .3s; }
.gc-doc.conf { border-left: 5px solid #394352; }
.gc-doc.resalta { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(20, 112, 224, .2); }
.gc-doc-cab { margin-bottom: 10px; }
.gc-doc-t { margin: 0 0 6px; font-size: .98rem; line-height: 1.35; }
.gc-doc-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.gc-doc-campos { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 0 14px; margin-bottom: 10px; padding: 10px 12px 2px; background: #f9fbfc; border: 1px solid var(--line); border-radius: 10px; }
.gc-doc-campos .campo { margin-bottom: 10px; min-width: 0; }
.gc-doc-campos .campo.gc-ancho { grid-column: 1 / -1; }
.gc-doc-btn { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.gc-doc-btn a.btn { text-decoration: none; }
.gc-doc-hist { margin-top: 10px; font-size: .84rem; color: #485568; }
.gc-doc-hist summary { cursor: pointer; font-weight: 600; }
.gc-doc-hist ul { margin: 8px 0 0; padding-left: 20px; line-height: 1.6; }
.gc-em-num { margin: 0 0 8px; font-size: .95rem; line-height: 1.5; }

/* Paso 5: seguimiento y cierre */
.gc-estado { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0; }
.gc-log { list-style: none; margin: 0; padding: 0; max-height: 360px; overflow-y: auto; border: 1px solid var(--line); border-radius: 10px; }
.gc-log li { display: flex; gap: 12px; padding: 8px 12px; border-bottom: 1px solid #EBF0F7; font-size: .84rem; line-height: 1.45; }
.gc-log li:last-child { border-bottom: 0; }
.gc-log-f { flex: 0 0 auto; color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
.gc-log-t { min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 480px) { .gc-log li { flex-direction: column; gap: 2px; } }
.gc-zona { border-color: #f0d9d6; background: #fffdfc; }

/* Tablero «Casos» del curso */
.gc-tb-filtros .campo { min-width: 170px; }
.gc-tb-filtros .gc-tb-q { flex: 1 1 220px; min-width: 190px; }
.gc-tb-q input[type="search"] { width: 100%; box-sizing: border-box; min-height: 46px; padding: 11px 13px; border: 1.5px solid var(--line); border-radius: 10px; font-family: inherit; font-size: .95rem; outline: none; background: #fff; color: var(--ink); }
.gc-tb-q input[type="search"]:focus { border-color: var(--teal); }
.gc-tb-chk { display: flex; flex-wrap: wrap; gap: 6px 18px; padding-bottom: 12px; }
.gc-tb-filtros .gc-tb-chk .ge-check { padding-bottom: 0; }
.gc-tb-tot { margin: 0 0 12px; font-size: .88rem; color: #485568; display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; }
.gc-tb-l { list-style: none; margin: 0 0 8px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 12px; }
.gc-tb-n { font-weight: 700; font-size: .98rem; line-height: 1.3; overflow-wrap: anywhere; }
.gc-tb-curso { font-size: .8rem; line-height: 1.3; color: var(--muted); overflow-wrap: anywhere; }
.gc-mis-acc { margin: 0 0 12px; }
@media (max-width: 480px) { .gc-tb-l { grid-template-columns: 1fr; } .gc-tb-filtros .campo { min-width: 0; flex: 1 1 100%; } }

/* Inicio: casos pendientes y plazos */
.gc-in-sub { margin: 6px 0 6px; font-size: .76rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.gc-in-sub:not(:first-of-type) { margin-top: 16px; }
.gc-in-venc .ge-li { box-shadow: inset 3px 0 0 var(--error); background: #fff8f7; }
.gc-in .gc-tb-tot { margin-bottom: 8px; }
.gc-in-acc { margin: 10px 0 2px; }

/* Ajustes: casos e informes */
.gc-aj { display: block; }
.gc-leyenda { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 0 0 12px; font-size: .8rem; color: #485568; }
.gc-inst { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; padding: 12px 0 2px; border-top: 1px solid var(--line); }
.gc-inst:first-of-type { border-top: 0; }
.gc-inst-rol { grid-column: 1 / -1; font-weight: 700; font-size: .9rem; margin-bottom: 6px; }
.gc-inst .campo { margin-bottom: 10px; min-width: 0; }
.gc-inst .campo label { font-size: .78rem; }
@media (max-width: 640px) { .gc-inst { grid-template-columns: 1fr; } }
.gc-par-g { border: 1px solid var(--line); border-radius: 12px; margin: 0 0 10px; background: #fff; overflow: hidden; }
.gc-par-g > summary { cursor: pointer; padding: 10px 14px; font-weight: 700; font-size: .92rem; list-style: none; display: flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; min-height: 44px; box-sizing: border-box; }
.gc-par-g > summary::-webkit-details-marker { display: none; }
.gc-par-g > summary::after { content: '▾'; margin-left: auto; color: var(--muted); font-size: .9rem; }
.gc-par-g[open] > summary::after { content: '▴'; }
.gc-par-g[open] > summary { background: #F3F6FA; }
.gc-par-cnt { color: var(--muted); font-weight: 400; font-size: .8rem; }
.gc-par { padding: 12px 14px; border-top: 1px solid var(--line); display: grid; gap: 6px; }
.gc-par-t { font-size: .88rem; font-weight: 600; line-height: 1.4; }
.gc-par-c { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.gc-par-c input.ge-input { width: 120px; }
.gc-par-c select.ge-input { width: auto; max-width: 100%; }
.gc-par-c textarea.ge-input { width: 100%; max-width: 360px; }
.gc-par-u { color: var(--muted); font-size: .85rem; }
.gc-par-m { font-size: .78rem; color: var(--muted); line-height: 1.5; display: flex; flex-wrap: wrap; gap: 2px 12px; align-items: center; }
.gc-par-est { color: #485568; font-weight: 600; }
.gc-par-n { font-size: .8rem; color: #485568; margin: 0; line-height: 1.45; }
.gc-link { border: 0; background: none; padding: 4px 0; color: var(--blue); font-family: inherit; font-size: inherit; text-decoration: underline; cursor: pointer; min-height: 32px; }
.gc-link:hover { color: #0F4C9E; }

/* Sugerencias en Asistencia y Calificaciones */
.gc-sug { margin: 0 0 14px; border: 1px solid #f0dcae; background: #fffaf0; border-radius: 12px; }
.gc-sug > details > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; padding: 10px 14px; min-height: 44px; box-sizing: border-box; font-size: .92rem; }
.gc-sug > details > summary::-webkit-details-marker { display: none; }
.gc-sug > details > summary i { color: #c98a0b; }
.gc-sug-ver { margin-left: auto; color: var(--blue); font-weight: 600; font-size: .84rem; text-decoration: underline; }
.gc-sug-nota { margin: 0; padding: 0 14px 8px; font-size: .8rem; line-height: 1.5; color: #5d5236; }
.gc-sug-l { list-style: none; margin: 0; padding: 0; border-top: 1px solid #f0dcae; }
.gc-sug-it { display: flex; align-items: center; justify-content: space-between; gap: 10px 14px; flex-wrap: wrap; padding: 10px 14px; border-bottom: 1px solid #f6e8c6; }
.gc-sug-it:last-child { border-bottom: 0; }
.gc-sug-it.hecho { background: #fffdf8; }
.gc-sug-tx { flex: 1 1 260px; min-width: 0; font-size: .9rem; line-height: 1.4; overflow-wrap: anywhere; }
.gc-sug-tx small { display: block; color: #5d5236; font-size: .8rem; margin-top: 2px; }
.gc-sug-b { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.gc-sug-mas { padding: 6px 14px; }

/* Pestaña «Casos»: acciones del encabezado (curso y estudiante) */
.gc-tab-acc { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
@media (max-width: 600px) { .gc-tab-acc { width: 100%; } .gc-tab-acc .btn { flex: 1 1 100%; } }
a.btn.desactivado { opacity: .5; pointer-events: none; }

/* Informe consolidado del estudiante */
.gc-ice-l { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.gc-ice-it { border: 1px solid var(--line); border-radius: 12px; background: #fff; padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; }
.gc-ice-f1 { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.gc-ice-t { font-size: .86rem; color: #485568; line-height: 1.45; overflow-wrap: anywhere; }
.gc-ice-b { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.gc-ice-masa { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 4px 12px; margin: 0 0 6px; font-size: .86rem; color: var(--muted); }
.gc-ice-casos { list-style: none; margin: 0 0 12px; padding: 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.gc-ice-c { border-bottom: 1px solid #EBF0F7; background: #fff; }
.gc-ice-c:last-child { border-bottom: 0; }
.gc-ice-c.sel { background: #f7fbfd; }
.gc-ice-c.off { background: #fafcfc; color: var(--muted); }
.gc-ice-cl { display: flex; gap: 12px; align-items: flex-start; padding: 10px 12px; cursor: pointer; }
.gc-ice-c.off .gc-ice-cl { cursor: default; }
.gc-ice-cl input { width: 18px; height: 18px; margin-top: 2px; flex: 0 0 auto; accent-color: var(--teal-dark); }
.gc-ice-cx { display: flex; flex-direction: column; gap: 5px; min-width: 0; font-size: .9rem; line-height: 1.4; }
.gc-ice-c1 { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; overflow-wrap: anywhere; }
.gc-ice-no { font-size: .82rem; color: var(--muted); }
.gc-ice-conf { margin: 0 0 12px; padding: 10px 12px; border: 1px solid #D0DBEB; border-left: 4px solid #394352; border-radius: 10px; background: #F4F7FB; font-size: .88rem; }
.gc-ice-conf p { margin: 0 0 8px; line-height: 1.45; }
.gc-ice-conf i { color: #394352; margin-right: 4px; }

/* Generar avisos del curso */
.gc-mas-filtros { display: flex; flex-wrap: wrap; gap: 0 14px; align-items: flex-end; }
.gc-mas-filtros .campo { flex: 1 1 220px; min-width: 0; }
.gc-mas-res { margin: 0 0 10px; font-size: .9rem; color: #485568; display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; }
.gc-mas-masa { display: flex; gap: 16px; margin: 0 0 6px; font-size: .86rem; }
.gc-mas-lista { list-style: none; margin: 0 0 14px; padding: 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.gc-mas-f { padding: 10px 12px; border-bottom: 1px solid #EBF0F7; background: #fff; }
.gc-mas-f:last-child { border-bottom: 0; }
.gc-mas-f.sel { background: #f7fbfd; }
.gc-mas-f.off { background: #fafcfc; color: var(--muted); }
.gc-mas-l { display: grid; grid-template-columns: auto minmax(0, 1fr) minmax(0, 1.5fr); gap: 4px 12px; align-items: start; cursor: pointer; }
.gc-mas-f.off .gc-mas-l { cursor: default; }
.gc-mas-l input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--teal-dark); }
.gc-mas-n { font-weight: 700; line-height: 1.3; overflow-wrap: anywhere; }
.gc-mas-q { display: flex; flex-direction: column; gap: 2px; font-size: .88rem; line-height: 1.4; overflow-wrap: anywhere; }
.gc-mas-q small { color: #485568; font-size: .82rem; }
.gc-mas-f.off .gc-mas-q small { color: var(--muted); }
.gc-mas-extra:empty { display: none; }
.gc-mas-no { margin: 6px 0 0 30px; font-size: .82rem; color: var(--muted); line-height: 1.4; }
.gc-mas-re { margin: 8px 0 0 30px; padding: 10px 12px; border: 1px solid #f0dcae; background: #fffaf0; border-radius: 10px; font-size: .86rem; }
.gc-mas-re.falta { border-color: var(--error); background: #fff7f6; }
.gc-mas-re-t { margin: 0 0 4px; }
.gc-mas-re-t i { color: #c98a0b; margin-right: 4px; }
.gc-mas-re-l { margin: 0 0 8px; padding-left: 18px; color: #5d5236; line-height: 1.45; }
.gc-mas-re-r { border: 0; margin: 0 0 6px; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 18px; }
.gc-mas-re-r legend { float: left; margin: 0 6px 0 0; padding: 0; font-weight: 600; }
.gc-mas-re .campo { margin: 8px 0 0; }
.gc-mas-re .campo input[type="text"], .gc-mas-re .campo select { width: 100%; box-sizing: border-box; min-height: 42px; padding: 8px 10px; border: 1.5px solid var(--line); border-radius: 9px; font-family: inherit; font-size: .9rem; background: #fff; color: var(--ink); }
.gc-mas-cuenta { margin-right: auto; font-size: .86rem; color: #485568; }
.gc-mas-lotes { margin: 12px 0 0; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.gc-mas-lotes > summary { cursor: pointer; padding: 10px 14px; font-weight: 600; font-size: .9rem; min-height: 44px; box-sizing: border-box; display: flex; align-items: center; }
.gc-mas-lotes ul { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.gc-mas-lotes li { display: flex; flex-wrap: wrap; gap: 2px 14px; align-items: baseline; padding: 8px 14px; border-bottom: 1px solid #EBF0F7; font-size: .86rem; }
.gc-mas-lotes li:last-child { border-bottom: 0; }
.gc-mas-lote-d { flex: 1 1 200px; color: #485568; min-width: 0; overflow-wrap: anywhere; }
.gc-mas-om { margin: 6px 0 0; padding-left: 18px; line-height: 1.5; font-size: .88rem; }
.gc-mas-res-l { list-style: none; margin: 14px 0 10px; padding: 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.gc-mas-res-l li { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto; gap: 4px 12px; align-items: baseline; padding: 9px 12px; border-bottom: 1px solid #EBF0F7; font-size: .88rem; }
.gc-mas-res-l li:last-child { border-bottom: 0; }
.gc-mas-rf { color: #485568; overflow-wrap: anywhere; }
.gc-mas-rb { white-space: nowrap; }
.gc-sug-masivo { padding: 0 14px 10px; }
@media (max-width: 600px) {
  .gc-mas-l { grid-template-columns: auto minmax(0, 1fr); }
  .gc-mas-q { grid-column: 2; }
  .gc-mas-no, .gc-mas-re { margin-left: 0; }
  .gc-mas-res-l li { grid-template-columns: minmax(0, 1fr); }
  .gc-mas-rb { white-space: normal; }
  .gc-mas-cuenta { flex: 1 1 100%; margin-right: 0; }
}

/* Registro rápido de casos: elegir qué pasó y marcar casillas en lugar de redactar */
.gc-rap-quien { margin: 0 0 14px; font-size: .98rem; line-height: 1.45; }
.gc-rap-quien span { display: block; margin-top: 3px; color: var(--muted); font-size: .85rem; }
.gc-rap-bor { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 0 0 12px; padding: 10px 12px; background: #fdf3e2; border: 1px solid #f2dcae; border-radius: 12px; font-size: .88rem; color: #6f4609; }
.gc-tiles { display: flex; flex-direction: column; gap: 10px; }
.gc-tile { display: flex; align-items: center; gap: 14px; width: 100%; min-height: 64px; padding: 13px 16px; text-align: left; border: 1.5px solid var(--line); border-radius: 14px; background: #fff; font-family: inherit; color: var(--ink); cursor: pointer; }
.gc-tile:hover, .gc-tile:focus-visible { border-color: var(--blue); background: #f7faff; outline: none; }
.gc-tile-ic { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 12px; background: #eaf1fc; color: var(--blue); display: flex; align-items: center; justify-content: center; font-size: 1.15rem; }
.gc-tile-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gc-tile-tx b { font-size: .98rem; }
.gc-tile-tx small { color: var(--muted); font-size: .82rem; line-height: 1.4; }
.gc-tile-otro { margin-top: 4px; border-style: dashed; }
.gc-tile-otro .gc-tile-ic { background: #f1f3f6; color: #485568; }

.gc-rap { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.gc-rap-est { margin: 0; font-size: .95rem; }
.gc-rap-est i { color: var(--blue); margin-right: 4px; }
.gc-rap-est-c { color: var(--muted); font-size: .88rem; }
.gc-rap-ctx { display: flex; gap: 8px; align-items: flex-start; margin: 0; padding: 10px 12px; background: #eef2fb; border: 1px solid #cfdaf0; border-radius: 12px; color: #0F4C9E; font-size: .86rem; line-height: 1.45; }
.gc-rap-ctx i { margin-top: 2px; }
.gc-rap-sec { border: 0; margin: 0; padding: 0; min-width: 0; }
.gc-rap-sec > legend { padding: 0; margin: 0 0 8px; font-weight: 700; font-size: .95rem; }
.gc-rap-sec > legend small { display: block; margin-top: 2px; font-weight: 400; font-size: .8rem; color: var(--muted); }
.gc-rap-sec .campo { margin-bottom: 0; }
.gc-rap-sec .fila { gap: 12px; }
.gc-rap input[type="time"] { width: 100%; box-sizing: border-box; min-height: 44px; padding: 10px 12px; border: 1.5px solid var(--line); border-radius: 10px; font-family: inherit; font-size: .95rem; background: #fff; color: var(--ink); }
.gc-opts { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; }
.gc-opt { display: flex; align-items: center; gap: 10px; min-height: 44px; margin: 0; padding: 8px 12px; border: 1.5px solid var(--line); border-radius: 12px; background: #fff; font-size: .92rem; font-weight: 500; line-height: 1.35; cursor: pointer; }
.gc-opt input { flex: 0 0 auto; width: 20px; height: 20px; accent-color: var(--blue); }
.gc-opt:hover { border-color: var(--blue); }
.gc-opt.on { border-color: var(--blue); background: #f3f6fd; font-weight: 600; }
.gc-opts-chips { flex-direction: row; flex-wrap: wrap; margin-bottom: 12px; }
.gc-opts-chips .gc-opt { min-height: 40px; padding: 6px 14px; border-radius: 999px; font-size: .88rem; }
.gc-rap-mas .gc-opts-chips { margin-bottom: 0; }
.gc-rap .gc-pills { gap: 6px; }
.gc-rap .gc-pill { min-height: 40px; padding: 7px 14px; font-size: .88rem; text-align: left; }
.gc-rap-caja { margin-top: 8px; }
.gc-rap-caja[hidden] { display: none; }
.gc-rap .gc-chk { margin-top: 8px; }
.gc-rap-mas { margin: 0; background: #f8fafd; }
.gc-rap-mas > summary { font-size: .92rem; min-height: 24px; }
.gc-rap-mas > summary small { font-weight: 400; color: var(--muted); font-size: .8rem; }
.gc-rap-mas-c { display: flex; flex-direction: column; gap: 16px; padding-top: 4px; }
.gc-rap-mas .campo { margin-bottom: 0; }
.gc-rap-mas .gc-chk { margin-top: 0; }
.gc-rap-mas .ayuda { margin: -8px 0 0; }
.gc-rap .gc-alerta { margin-top: 0; }
.gc-rap .gc-previos { margin: 8px 0 10px; }
#gc-rap-avisos:empty, #gc-rap-err:empty { display: none; }
#gc-rap-avisos { display: flex; flex-direction: column; gap: 10px; }
#gc-rap-err .mensaje { margin: 0; }

.gc-rap-ok { display: flex; align-items: flex-start; gap: 12px; padding: 12px 14px; background: #e8f6ef; border: 1px solid #b8e2cd; border-radius: 14px; }
.gc-rap-ok-ic { color: var(--ok); font-size: 1.5rem; line-height: 1; }
.gc-rap-ok b { display: block; color: #17693f; }
.gc-rap-ok small { display: block; margin-top: 2px; color: #3f6f55; font-size: .84rem; }
.gc-rap-prox { display: flex; gap: 8px; align-items: flex-start; margin: 0; font-size: .9rem; line-height: 1.5; }
.gc-rap-prox i { margin-top: 3px; color: var(--blue); }
.gc-rap-aviso { padding: 14px 16px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.gc-rap-aviso h4 { margin: 0 0 6px; font-size: .98rem; }
.gc-rap-aviso .ayuda { margin: 0 0 10px; line-height: 1.45; }
.gc-rap-emit, .gc-rap-entr { margin: 0 0 10px; }
.gc-rap-aviso a.btn { text-decoration: none; }
@media (max-width: 600px) {
  .gc-rap-sec .fila { grid-template-columns: 1fr; }
  .gc-tile { padding: 12px 12px; gap: 12px; }
}
