:root{--nav:#073d78;--nav2:#052f60;--azul:#0877f9;--amarillo:#ffbf18;--fondo:#f3f7fc;--blanco:#fff;--texto:#12213a;--suave:#718096;--borde:#e0e8f1;--rojo:#b91c1c;--ancho:230px;--sombra:0 5px 18px rgba(34,74,120,.08)}
*{box-sizing:border-box}html{min-height:100%}body{min-height:100vh;margin:0;background:var(--fondo);color:var(--texto);font-family:Arial,Helvetica,sans-serif}button,input,select,textarea{font:inherit}
.barra-lateral{position:fixed;inset:0 auto 0 0;z-index:1000;width:var(--ancho);padding:20px 14px;background:linear-gradient(180deg,var(--nav),var(--nav2));overflow-y:auto}.marca{display:flex;height:66px;align-items:center;margin:0 7px 20px}.marca img{display:block;width:190px;height:65px;object-fit:contain}.barra-lateral nav{display:flex;flex-direction:column;gap:5px}.barra-lateral nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:7px;color:#d7e8fa;text-decoration:none;font-size:14px}.barra-lateral nav a span{display:grid;width:20px;place-items:center;font-size:17px}.barra-lateral nav a:hover,.barra-lateral nav a.activo{background:var(--azul);color:#fff}
.grupo-menu{border-radius:9px}.grupo-menu summary{display:flex;align-items:center;gap:11px;padding:12px 14px;border-radius:7px;color:#fff;cursor:pointer;list-style:none;user-select:none}.grupo-menu summary::-webkit-details-marker{display:none}.grupo-menu summary>span{display:grid;width:20px;place-items:center;font-size:17px}.grupo-menu summary b{font-size:14px}.grupo-menu summary i{margin-left:auto;font-style:normal;transition:transform .2s}.grupo-menu[open] summary{background:rgba(255,255,255,.1)}.grupo-menu[open] summary i{transform:rotate(180deg)}.grupo-menu summary:hover{background:rgba(255,255,255,.13)}.submenu{display:grid;gap:3px;padding:5px 0 7px 13px;border-left:1px solid rgba(255,255,255,.18);margin-left:24px}.barra-lateral nav .submenu a{padding:9px 10px;font-size:13px}.barra-lateral nav .submenu a span{width:17px;font-size:14px}
.estado-soporte{padding:7px 11px;border-radius:999px;text-decoration:none;font-size:12px;font-weight:800;white-space:nowrap}.estado-soporte.lectura{background:#e2e8f0;color:#475569}.estado-soporte.activo{background:#dcfce7;color:#15803d}.aviso-modo{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-bottom:18px;padding:12px 15px;border-radius:9px;font-size:13px}.aviso-modo.lectura{border:1px solid #cbd5e1;background:#f1f5f9;color:#334155}.aviso-modo.soporte{border:1px solid #86efac;background:#f0fdf4;color:#166534}.aviso-modo a{font-weight:800;color:inherit}.soporte-panel{border-left:5px solid #64748b}.soporte-panel.activo{border-left-color:#16a34a}@media(max-width:900px){.aviso-modo{grid-template-columns:1fr}.estado-soporte{display:none}}
.area-principal{min-height:100vh;margin-left:var(--ancho)}.encabezado{position:sticky;top:0;z-index:900;display:flex;min-height:68px;align-items:center;gap:22px;padding:10px 30px;border-bottom:1px solid var(--borde);background:rgba(255,255,255,.97);box-shadow:0 2px 10px rgba(35,66,105,.05)}.boton-menu{display:none;border:0;border-radius:7px;padding:9px;background:#eaf4ff;color:var(--nav);cursor:pointer}.buscador{display:flex;width:min(430px,48%);align-items:center;gap:10px;padding:9px 13px;border:1px solid var(--borde);border-radius:7px;background:#f9fbfd;color:var(--suave)}.buscador input{width:100%;border:0;outline:0;background:transparent}.usuario{display:flex;align-items:center;gap:10px;margin-left:auto}.avatar{display:grid;width:39px;height:39px;place-items:center;border-radius:50%;background:var(--azul);color:#fff;font-size:13px;font-weight:bold}.usuario strong,.usuario small{display:block}.usuario strong{font-size:13px}.usuario small{margin-top:3px;color:var(--suave);font-size:11px}
.contenido{width:min(1400px,100%);margin:auto;padding:28px 32px 45px}.titulo-pagina{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.titulo-pagina h1{margin:0 0 6px;font-size:26px}.titulo-pagina p{margin:0;color:var(--suave);font-size:14px}.titulo-pagina>strong{color:var(--azul);font-size:13px}.panel{margin-bottom:20px;padding:20px;border:1px solid var(--borde);border-radius:11px;background:#fff;box-shadow:var(--sombra)}.panel h2{margin:0 0 16px;font-size:16px}.panel-titulo{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.panel-titulo h2{margin:0}.panel-titulo p{margin:5px 0 0;color:var(--suave);font-size:12px}
.resumen{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.tarjeta-contador{display:flex;align-items:center;gap:14px;padding:18px;border:1px solid var(--borde);border-radius:10px;background:#fff;box-shadow:var(--sombra)}.tarjeta-contador>span{display:grid;width:47px;height:47px;place-items:center;border-radius:50%;background:#e7f2ff;color:var(--azul);font-size:20px}.tarjeta-contador small,.tarjeta-contador b{display:block}.tarjeta-contador small{color:var(--suave);font-size:12px}.tarjeta-contador b{margin-top:5px;font-size:24px}.rejilla-inicio{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(480px,1.4fr);gap:20px}.accesos{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.accesos a{padding:13px;border:1px solid var(--borde);border-radius:8px;color:var(--texto);font-size:13px;font-weight:bold;text-decoration:none}.accesos a:hover{border-color:#9ccaff;background:#f8fbff}
.panel-titulo button{width:28px;height:28px;border:1px solid var(--borde);border-radius:6px;background:#fff;color:var(--azul);cursor:pointer}.panel-titulo b{display:inline-block;min-width:120px;text-align:center;font-size:12px}.semana,.fechas{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.semana span{color:var(--suave);font-size:10px;font-weight:bold;text-align:center}.fecha{display:grid;min-height:34px;place-items:center;border-radius:7px;font-size:11px}.fecha.hoy{background:var(--azul);color:#fff;font-weight:bold}.fecha.evento{box-shadow:inset 0 -4px var(--amarillo)}
.formulario{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:18px;margin-top:15px}.formulario.tres{grid-template-columns:repeat(3,minmax(160px,1fr))}.formulario.cuatro{grid-template-columns:repeat(4,minmax(140px,1fr))}.formulario label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:bold}.formulario input,.formulario select,.formulario textarea{width:100%;min-height:42px;padding:10px 12px;border:1px solid var(--borde);border-radius:7px;outline:0;background:#fff}.formulario input:focus,.formulario select:focus,.formulario textarea:focus{border-color:var(--azul);box-shadow:0 0 0 3px rgba(8,119,249,.12)}.formulario textarea{resize:vertical}.acciones{display:flex;grid-column:1/-1;align-items:center;gap:10px}.acciones button,.panel>form>button,.boton{border:0;border-radius:7px;padding:10px 16px;background:var(--azul);color:#fff;font-size:13px;font-weight:bold;text-decoration:none;cursor:pointer}.acciones a{padding:9px 15px;border:1px solid var(--borde);border-radius:7px;color:var(--texto);text-decoration:none}.horas{display:grid;grid-template-columns:1fr 1fr;gap:10px}fieldset{grid-column:1/-1;border:1px solid var(--borde);border-radius:8px}legend{font-size:13px;font-weight:bold}.dias-check{display:flex;flex-wrap:wrap;gap:15px}.dias-check label{display:block}.dias-check input{width:auto;min-height:auto}
.tabla{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:11px 10px;border-bottom:1px solid var(--borde);font-size:12px;text-align:left;white-space:nowrap}th{background:#f7fafe;color:var(--suave);font-size:11px}.vacio{height:100px;color:var(--suave);text-align:center}.acciones-tabla{display:flex;align-items:center;gap:8px}.acciones-tabla>a{padding:8px 12px;border-radius:6px;background:#eaf4ff;color:var(--azul);font-weight:bold;text-decoration:none}.acciones-tabla form{margin:0}.peligro{border:0;border-radius:6px;padding:8px 12px;background:#fee2e2;color:var(--rojo);font-weight:bold;cursor:pointer}.estado{padding:5px 8px;border-radius:20px;background:#e8f8ee;color:#15803d;font-weight:bold}.alerta{margin-bottom:16px;padding:12px 15px;border-radius:7px;font-size:13px;font-weight:bold}.alerta.exito{background:#dcfce7;color:#15803d}.alerta.error,.aviso{padding:12px 15px;border-radius:7px;background:#fee2e2;color:var(--rojo);font-size:13px;font-weight:bold}
@media(max-width:1050px){.resumen{grid-template-columns:repeat(2,1fr)}.rejilla-inicio{grid-template-columns:1fr}.accesos{grid-template-columns:repeat(2,1fr)}.formulario.cuatro,.formulario.tres{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.barra-lateral{transform:translateX(-100%);transition:.25s}.menu-abierto .barra-lateral{transform:translateX(0)}.area-principal{margin-left:0}.boton-menu{display:block}.encabezado{padding:10px 16px}.buscador{width:auto;flex:1}.usuario>div:last-child{display:none}.contenido{padding:22px 16px}.formulario,.formulario.tres,.formulario.cuatro{grid-template-columns:1fr}.titulo-pagina{align-items:flex-start;flex-direction:column}}
@media(max-width:520px){.resumen,.accesos{grid-template-columns:1fr}.buscador{display:none}}
/* Horarios por periodo y calendario de ocupación */
.bloques-campo { padding: 16px; border: 1px solid #dbe5f1; border-radius: 10px; }
.bloques-horario { display: grid; gap: 10px; }
.bloque-horario { display: grid; grid-template-columns: 1.2fr 1fr 1fr auto; align-items: end; gap: 10px; padding: 12px; border-radius: 8px; background: #f6f9fd; }
.bloque-horario label { display: grid; gap: 7px; }
.boton-agregar { display: inline-block; margin-top: 12px; padding: 9px 12px; border: 1px solid #bcd5f4; border-radius: 7px; background: #fff; cursor: pointer; }
.enlaces-vistas { display: flex; gap: 14px; }
.filtros-aulas { display: grid; grid-template-columns: repeat(6, minmax(130px, 1fr)) auto; align-items: end; gap: 12px; }
.filtros-aulas label { display: grid; gap: 7px; font-size: 13px; font-weight: 700; }
.contador-clases { padding: 7px 11px; border-radius: 999px; background: #eaf4ff; color: #0877f9; font-weight: 800; font-size: 12px; }
.aula-grupo { margin-bottom: 18px; }
.aviso-seguro { margin-bottom: 16px; padding: 12px 15px; border-radius: 8px; background: #eaf4ff; color: #0756a8; font-size: 13px; font-weight: 700; }
.datos-curso { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.datos-curso span { padding: 12px; border-radius: 8px; background: #f6f9fd; }
.datos-curso small, .datos-curso strong { display: block; }
.datos-curso small { margin-bottom: 5px; color: #718096; }
.filtros-carga { display: grid; grid-template-columns: repeat(3, minmax(170px, 1fr)) auto; align-items: end; gap: 12px; }
.filtros-carga label { display: grid; gap: 7px; font-size: 13px; font-weight: 700; }
.nota-corte { margin: 13px 0 0; color: #718096; font-size: 12px; }
.tarjetas-carga { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 20px; }
.tarjetas-carga article { padding: 19px; border: 1px solid #dbe5f1; border-top: 4px solid #0877f9; border-radius: 10px; background: #fff; box-shadow: var(--sombra); }
.tarjetas-carga article.dadas { border-top-color: #16a34a; }
.tarjetas-carga article.pendientes { border-top-color: #f59e0b; }
.tarjetas-carga small, .tarjetas-carga strong, .tarjetas-carga span { display: block; }
.tarjetas-carga strong { margin: 7px 0; font-size: 29px; }
.tarjetas-carga span, .tarjetas-carga small { color: #718096; }
.resumen-horas { display: flex; flex-wrap: wrap; gap: 8px; }
.resumen-horas span { padding: 7px 10px; border-radius: 7px; background: #eaf4ff; color: #0756a8; font-size: 12px; }
.resumen-horas .verde { background: #dcfce7; color: #15803d; }
.resumen-horas .naranja { background: #fef3c7; color: #a16207; }
.resumen-horas b { margin-right: 3px; }
.etiqueta-reserva { display: inline-block; padding: 4px 7px; border-radius: 999px; background: #fff1c2; color: #986300; font-size: 10px; font-weight: 800; }
.clase-calendario.es-reserva { border-left-color: #f59e0b; background: #fff8df; }
.fila-reserva td { background: #fffcf1; }
.selector-alcance { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.selector-alcance label { display: flex; flex-direction: row; align-items: flex-start; padding: 15px; border: 1px solid #dbe5f1; border-radius: 9px; cursor: pointer; }
.selector-alcance input { width: auto; min-height: auto; margin-top: 3px; }
.selector-alcance span, .selector-alcance strong, .selector-alcance small { display: block; }
.selector-alcance small { margin-top: 5px; color: #718096; line-height: 1.4; }
.subformulario { padding: 16px; border-radius: 9px; background: #f8fbff; }
.subformulario h3 { margin: 0 0 14px; font-size: 15px; }
.rejilla-tres { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.fila-seleccionada td { background: #eaf4ff; }
.clase-calendario { border-left-color: var(--color-espacio, #0877f9); background: color-mix(in srgb, var(--color-espacio, #0877f9) 14%, white); }
.clase-calendario.es-reserva { border-left-color: var(--color-espacio, #f59e0b); background: color-mix(in srgb, var(--color-espacio, #f59e0b) 14%, white); outline: 1px dashed #a16207; }
.punto-espacio, .muestra-color { display: inline-block; width: 13px; height: 13px; margin-right: 7px; border-radius: 50%; background: var(--color-espacio); vertical-align: -2px; box-shadow: 0 0 0 1px rgba(0,0,0,.12); }
.muestra-color { width: 20px; height: 20px; vertical-align: -6px; }
.aula-grupo { border-top: 5px solid var(--color-espacio, #0877f9); }
.selector-color { display: flex; align-items: center; gap: 10px; }
.selector-color input[type="color"] { width: 70px; height: 44px; padding: 3px; cursor: pointer; }
.selector-color span { color: #718096; font-family: monospace; }
.materias-profesor { padding: 15px; }
.lista-materias { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; }
.lista-materias label { display: flex; flex-direction: row; align-items: center; gap: 7px; padding: 9px; border-radius: 7px; background: #f6f9fd; }
.lista-materias input { width: auto; min-height: auto; }
.leyenda-espacios { display: flex; flex-wrap: wrap; align-items: center; gap: 9px 16px; margin: 6px 0 16px; padding: 11px; border-radius: 8px; background: #f6f9fd; font-size: 12px; }
.leyenda-espacios span { display: inline-flex; align-items: center; gap: 6px; }
.leyenda-espacios i { display: inline-block; width: 15px; height: 15px; border-radius: 4px; box-shadow: 0 0 0 1px rgba(0,0,0,.12); }
#aviso-materias { color: #47729f; font-weight: normal; }
.celda-notas { min-width: 180px; max-width: 320px; white-space: normal; line-height: 1.4; }
.nota-calendario { margin-top: 3px; padding-top: 3px; border-top: 1px solid rgba(0,0,0,.1); font-style: italic; white-space: normal; }
.actividades-reagenda { display: grid; gap: 12px; }
.actividad-reagenda { padding: 16px; border: 1px solid var(--borde); border-radius: 9px; background: #f8fbff; }
.actividad-reagenda header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.actividad-reagenda h3 { display: inline-block; margin: 0 0 5px 8px; font-size: 15px; }
.actividad-reagenda p { margin: 3px 0; color: var(--suave); font-size: 12px; }
.campos-reagenda { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; margin-top: 14px; }
.nota-reagenda { padding-top: 8px; border-top: 1px solid var(--borde); }
.boton-cancelar { border: 1px solid var(--borde) !important; background: #fff !important; color: var(--texto) !important; }
@media(max-width:900px){.campos-reagenda{grid-template-columns:repeat(2,1fr)}.actividad-reagenda header{flex-direction:column}}
.boton-asistencia,.boton-tabla{background:#dcfce7!important;color:#15803d!important;padding:8px 12px;border-radius:6px;font-weight:bold;text-decoration:none}.entrada-tabla{width:100%;min-width:180px;padding:8px;border:1px solid var(--borde);border-radius:6px}.estado-alumno{min-width:125px;padding:8px;border:1px solid var(--borde);border-radius:6px}.acciones-rapidas{display:flex;gap:8px}.acciones-rapidas button,.boton-imprimir{padding:8px 12px;border:1px solid #bcd5f4;border-radius:6px;background:#fff;color:var(--azul);font-weight:bold;cursor:pointer}.acciones-guardar{margin-top:18px}.filtros-asistencia{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr)) auto;align-items:end;gap:12px}.filtros-asistencia label{display:grid;gap:7px;font-size:13px;font-weight:bold}.filtros-asistencia input,.filtros-asistencia select{width:100%;padding:9px;border:1px solid var(--borde);border-radius:6px}.porcentaje-asistencia{display:inline-block;padding:5px 9px;border-radius:999px;background:#dcfce7;color:#15803d}.porcentaje-asistencia.bajo{background:#fee2e2;color:#b91c1c}@media(max-width:1000px){.filtros-asistencia{grid-template-columns:repeat(2,1fr)}}@media print{.barra-lateral,.encabezado,.no-imprimir,.boton-imprimir{display:none!important}.area-principal{margin-left:0}.contenido{padding:0}.panel{box-shadow:none}}
@media (max-width: 760px) { .selector-alcance, .rejilla-tres { grid-template-columns: 1fr; } }
@media (max-width: 760px) { .lista-materias { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .filtros-carga, .tarjetas-carga { grid-template-columns: 1fr; } .datos-curso { grid-template-columns: repeat(2, 1fr); } }
.ancho-completo { grid-column: 1 / -1; }
.ayuda { margin: 0 0 10px; color: #64748b; font-size: 13px; }
.panel-encabezado, .navegacion-mes { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.boton-secundario, .navegacion-mes a { color: #0877f9; font-weight: 700; text-decoration: none; }
.filtros-ocupacion { display: grid; grid-template-columns: repeat(5, minmax(140px, 1fr)) auto; align-items: end; gap: 12px; }
.filtros-ocupacion label { display: grid; gap: 7px; font-size: 13px; font-weight: 700; }
.filtros-ocupacion select, .filtros-ocupacion input { width: 100%; }
.calendario-scroll { overflow-x: auto; }
.calendario-ocupacion { min-width: 980px; display: grid; grid-template-columns: repeat(7, 1fr); border-top: 1px solid #dbe5f1; border-left: 1px solid #dbe5f1; }
.cabecera-dia { padding: 10px; text-align: center; font-size: 12px; font-weight: 800; color: #64748b; background: #f6f9fd; border-right: 1px solid #dbe5f1; border-bottom: 1px solid #dbe5f1; }
.dia-ocupacion { min-height: 145px; padding: 8px; background: #fff; border-right: 1px solid #dbe5f1; border-bottom: 1px solid #dbe5f1; }
.dia-ocupacion.fuera-mes { background: #f8fafc; opacity: .45; }
.numero-dia { display: block; margin-bottom: 7px; color: #0b2345; font-weight: 800; }
.clase-calendario { display: grid; gap: 2px; margin-bottom: 6px; padding: 7px; border-left: 4px solid #0877f9; border-radius: 6px; background: #eaf4ff; color: #0b2345; font-size: 11px; }
.clase-calendario small { color: #52657e; }
@media (max-width: 1100px) { .filtros-ocupacion { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 1100px) { .filtros-aulas { grid-template-columns: repeat(2, 1fr); } .bloque-horario { grid-template-columns: 1fr 1fr; } }
.tarjetas-auditoria { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 18px; }
.tarjetas-auditoria article { padding: 17px; border: 1px solid var(--borde); border-top: 4px solid var(--azul); border-radius: 9px; background: #fff; box-shadow: var(--sombra); }
.tarjetas-auditoria article.correcto { border-top-color: #16a34a; }
.tarjetas-auditoria article.fallido { border-top-color: #dc2626; }
.tarjetas-auditoria small, .tarjetas-auditoria strong { display: block; }
.tarjetas-auditoria small { color: var(--suave); }
.tarjetas-auditoria strong { margin-top: 5px; font-size: 26px; }
.filtros-bitacora { display: grid; grid-template-columns: repeat(3, minmax(145px, 1fr)) auto auto; align-items: end; gap: 12px; }
.filtros-bitacora label { display: grid; gap: 7px; font-size: 13px; font-weight: 700; }
.filtros-bitacora input, .filtros-bitacora select { width: 100%; }
.boton-limpiar { min-height: 42px; display: grid; place-items: center; padding: 0 14px; border: 1px solid var(--borde); border-radius: 7px; color: var(--texto); text-decoration: none; }
.tabla-bitacora td { vertical-align: top; }
.tabla-bitacora td small { display: block; margin-top: 4px; color: var(--suave); }
.estado-auditoria { display: inline-block; padding: 5px 9px; border-radius: 999px; font-size: 11px; font-weight: 800; }
.estado-auditoria.ok { background: #dcfce7; color: #15803d; }
.estado-auditoria.error { background: #fee2e2; color: #b91c1c; }
.tabla-bitacora details { margin-top: 6px; }
.tabla-bitacora summary { color: var(--azul); font-size: 12px; font-weight: 700; cursor: pointer; }
.tabla-bitacora pre { max-width: 420px; overflow: auto; margin: 7px 0 0; padding: 8px; border-radius: 6px; background: #f6f9fd; white-space: pre-wrap; overflow-wrap: anywhere; font: 11px/1.4 monospace; }
@media (max-width: 1000px) { .filtros-bitacora { grid-template-columns: repeat(2, 1fr); } .tarjetas-auditoria { grid-template-columns: 1fr; } }
.foto-tabla { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid #dbe5f1; }
.foto-vacia { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 50%; background: #eaf4ff; color: var(--azul); font-size: 18px; font-weight: 800; }
.foto-actual img { width: 110px; height: 110px; border-radius: 10px; object-fit: cover; border: 1px solid var(--borde); }
.ficha-medica { padding: 16px; background: #fffdf5; border-color: #f3dfaa; }
.ficha-medica .formulario { margin-top: 8px; }
.detalle-medico { min-width: 260px; max-width: 380px; margin-top: 7px; padding: 10px; border-radius: 7px; background: #fffdf5; line-height: 1.6; white-space: normal; }
.estado.fuera-servicio { background: #fee2e2; color: #b91c1c; }
.hoja-asistencia { color: #111; }
.hoja-asistencia > header { display: flex; justify-content: space-between; align-items: flex-start; padding-bottom: 15px; border-bottom: 2px solid #0b2345; }
.hoja-asistencia h1, .hoja-asistencia p { margin: 0 0 5px; }
.datos-lista { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin: 16px 0; }
.datos-lista span { padding: 10px; border: 1px solid #cbd5e1; }
.datos-lista small, .datos-lista b { display: block; }
.datos-lista small { margin-bottom: 4px; color: #64748b; }
.notas-lista { padding: 10px; background: #f8fafc; }
.lista-imprimible th, .lista-imprimible td { height: 42px; border: 1px solid #94a3b8; color: #111; }
.lista-imprimible th { background: #eaf0f7; }
.lista-imprimible th:first-child, .lista-imprimible td:first-child { width: 48px; text-align: center; }
.lista-imprimible th:last-child, .lista-imprimible td:last-child { min-width: 150px; }
.firma-docente { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; margin-top: 65px; }
.firma-docente span { padding-top: 8px; border-top: 1px solid #111; text-align: center; }
@media print { .hoja-asistencia { border: 0; padding: 0; } .lista-imprimible { page-break-inside: auto; } .lista-imprimible tr { page-break-inside: avoid; } }
@media (max-width: 760px) { .datos-lista { grid-template-columns: 1fr; } }
.alerta.aviso { background:#fff7d6; color:#725400; border:1px solid #f4d56a; }
.panel-reprobados{border-top:4px solid #dc2626}.panel-encabezado{display:flex;align-items:center;justify-content:space-between;gap:12px}.contador-reprobados{display:grid;width:38px;height:38px;place-items:center;border-radius:50%;background:#fee2e2;color:#b91c1c;font-weight:900}.fila-reprobada td{background:#fff5f5}.fila-reprobada td:first-child{border-left:4px solid #dc2626}.fila-reprobada td strong{color:#b91c1c}
.acciones-bienvenida{display:flex;align-items:center;gap:12px;margin-left:auto}.acciones-bienvenida .estado{margin-left:0}.centro-inmediato{border-top:4px solid var(--azul)}.navegacion-semana{display:flex;flex-wrap:wrap;gap:7px}.navegacion-semana a,.boton-secundario{padding:8px 11px;border-radius:7px;background:#eaf4ff;color:var(--azul);font-size:12px;font-weight:800;text-decoration:none}.alerta-academica{display:flex;align-items:center;gap:12px;margin:14px 0;padding:14px;border:1px solid #fecaca;border-left:5px solid #dc2626;border-radius:9px;background:#fff5f5;color:#991b1b}.alerta-academica>span{display:grid;width:32px;height:32px;flex:0 0 32px;place-items:center;border-radius:50%;background:#dc2626;color:#fff;font-weight:900}.alerta-academica p{margin:3px 0}.alerta-academica a{margin-left:auto;color:#b91c1c;font-weight:900}.alertas-inmediatas{display:grid;gap:8px;margin:14px 0}.tabla-semanal{margin-top:14px}.tabla-semanal table{min-width:1050px;table-layout:fixed}.tabla-semanal th:first-child{width:95px}.tabla-semanal th small,.hora-semanal small{display:block;margin-top:3px;color:#789}.tabla-semanal .dia-hoy{background:#dbeafe;color:#075ebc}.celda-semanal{height:92px;padding:6px;vertical-align:top;white-space:normal}.celda-semanal article{display:grid;gap:2px;margin-bottom:5px;padding:8px;border-left:4px solid var(--color-clase);border-radius:6px;background:#f4f8fd}.celda-semanal article strong{color:#17314d;font-size:11px}.celda-semanal article span,.celda-semanal article small{color:#52657e;font-size:10px}.sin-clase{display:block;padding-top:22px;color:#b5c0cc;text-align:center}.hora-semanal{vertical-align:top}.hora-semanal b,.hora-semanal small{display:block}#calificaciones{scroll-margin-top:18px}@media(max-width:760px){.acciones-bienvenida{width:100%;margin-left:0}.centro-inmediato .panel-encabezado{align-items:flex-start;flex-direction:column}.alerta-academica{align-items:flex-start;flex-wrap:wrap}.alerta-academica a{width:100%;margin-left:44px}}
.opcion-aviso { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid #d6e2f1; border-radius:10px; background:#f7fbff; }
.opcion-aviso input { width:auto; flex:0 0 auto; }
.opcion-aviso span { display:grid; gap:3px; }
.estado-correo { display:inline-block; padding:5px 9px; border-radius:999px; font-weight:700; font-size:12px; background:#edf2f7; }
.estado-enviado { color:#176b3a; background:#dff7e8; }
.estado-error { color:#a51d1d; background:#ffe2e2; }
.estado-pendiente { color:#765700; background:#fff2bf; }
.fondo-login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#052f60,#0b5fab);padding:24px}.tarjeta-login{width:min(430px,100%);background:#fff;border-radius:18px;padding:34px;box-shadow:0 24px 70px #001c3e66}.tarjeta-login>img{display:block;width:190px;max-height:70px;object-fit:contain;margin:0 auto 24px}.tarjeta-login h1{text-align:center;margin-bottom:6px}.tarjeta-login>p{text-align:center;color:var(--suave);margin-bottom:22px}.credenciales-demo{margin-top:24px;padding:14px;border-radius:10px;background:#eff6ff;display:grid;gap:5px;font-size:12px}.credenciales-demo code{font-weight:700}.rejilla-escuelas{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.rejilla-escuelas article{border:1px solid var(--borde);border-radius:12px;padding:18px}.boton{display:inline-block;background:var(--azul);color:#fff;text-decoration:none;padding:10px 14px;border-radius:8px;font-weight:700}.salir{margin-left:10px;color:var(--rojo);font-size:12px}.portal-fondo{background:#f2f7fd;min-height:100vh}.portal-cabecera{height:76px;background:#fff;border-bottom:1px solid var(--borde);display:flex;align-items:center;padding:12px 5vw;gap:24px}.portal-cabecera img{width:155px;max-height:52px;object-fit:contain}.portal-cabecera>div{display:grid;gap:3px}.portal-cabecera span{color:var(--suave);font-size:13px}.portal-cabecera nav{margin-left:auto;display:flex;gap:15px}.portal-cabecera a{color:var(--azul);font-weight:700;text-decoration:none}.portal-contenido{width:min(1200px,92vw);margin:28px auto}.punto-color{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px}.calificacion-grande{font-size:18px;color:var(--azul)}@media(max-width:700px){.portal-cabecera{height:auto;flex-wrap:wrap}.portal-cabecera nav{width:100%;margin:0}.portal-contenido{width:94vw}.tarjeta-login{padding:24px}}
.rejilla-escuelas article .boton,.rejilla-escuelas article .boton-secundario{margin:8px 8px 0 0}.rejilla-escuelas article .boton-secundario{display:inline-block;padding:9px 12px;border:1px solid #bcd5f4;border-radius:8px;background:#eff6ff}
.rejilla-escuelas article form{display:inline-block;margin-top:8px}.rejilla-escuelas article form .peligro{padding:9px 12px}
.cambiar-clave{margin-left:12px;color:var(--azul);font-size:12px;font-weight:700;text-decoration:none;white-space:nowrap}.cambiar-clave:hover{text-decoration:underline}
.lista-recuadros th,.lista-recuadros td{white-space:normal}.casilla-asistencia{text-align:center;width:72px}.recuadro-marca{display:inline-grid;place-items:center;width:24px;height:24px;border:2px solid #172033;border-radius:3px;font-size:20px;font-weight:900}.ayuda-impresion{text-align:right;font-size:12px}.dialogo-confirmacion{width:min(430px,90vw);border:0;border-radius:16px;padding:28px;box-shadow:0 24px 70px #001c3e55}.dialogo-confirmacion::backdrop{background:#07182a99;backdrop-filter:blur(2px)}.dialogo-confirmacion form{text-align:center}.dialogo-confirmacion h2{margin:8px 0}.dialogo-confirmacion p{color:var(--suave);line-height:1.5}.icono-confirmacion{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;margin:auto;background:#e7f2ff;color:var(--azul);font-size:28px;font-weight:800}.acciones-dialogo{display:flex;justify-content:center;gap:10px;margin-top:22px}.acciones-dialogo button{min-width:130px}
.tarjetas-finanzas{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px}.tarjetas-finanzas article{padding:16px;border:1px solid var(--borde);border-top:4px solid var(--azul);border-radius:10px;background:#fff;box-shadow:var(--sombra)}.tarjetas-finanzas article.verde{border-top-color:#16a34a}.tarjetas-finanzas article.naranja{border-top-color:#f59e0b}.tarjetas-finanzas article.rojo{border-top-color:#dc2626}.tarjetas-finanzas article.morado{border-top-color:#8b5cf6}.tarjetas-finanzas small,.tarjetas-finanzas strong{display:block}.tarjetas-finanzas small{color:var(--suave);font-size:11px}.tarjetas-finanzas strong{margin-top:5px;font-size:21px}.pestanas-finanzas{position:sticky;top:76px;z-index:4;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;padding:10px;border:1px solid var(--borde);border-radius:10px;background:#fff}.pestanas-finanzas a{padding:8px 13px;border-radius:7px;background:#edf5ff;color:var(--azul);font-weight:800;text-decoration:none}.estado-finanza{display:inline-block;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800}.estado-finanza.pagado{background:#dcfce7;color:#15803d}.estado-finanza.pendiente{background:#fef3c7;color:#a16207}.estado-finanza.vencido{background:#fee2e2;color:#b91c1c}.acciones-tabla{display:flex;align-items:center;gap:8px}.acciones-tabla form{margin:0}.factura-documento{max-width:1000px;margin:auto;background:#fff}.factura-documento>header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid var(--azul);padding-bottom:18px}.factura-documento header h1,.factura-documento header p{margin:0}.factura-documento header div:last-child{display:grid;text-align:right;gap:4px}.marca-no-fiscal{margin:20px 0;padding:12px;border:2px dashed #dc2626;color:#b91c1c;text-align:center;font-weight:900;letter-spacing:1px}.datos-factura{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.datos-factura>div{display:grid;gap:4px;padding:14px;background:#f8fafc}.datos-factura small{color:var(--suave)}.detalle-factura{width:100%;border-collapse:collapse}.detalle-factura th,.detalle-factura td{padding:14px;border:1px solid var(--borde);text-align:left}.pie-factura{margin-top:24px;color:var(--suave);font-size:12px}.panel[id]{scroll-margin-top:145px}@media(max-width:1200px){.tarjetas-finanzas{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.tarjetas-finanzas,.datos-factura{grid-template-columns:1fr}.pestanas-finanzas{position:static}}@media print{.factura-documento{box-shadow:none;border:0}.marca-no-fiscal{display:block}}
.portal-moderno{max-width:1440px}.bienvenida-portal{display:flex;align-items:center;gap:18px;margin-bottom:18px;padding:22px 26px;border:1px solid var(--borde);border-radius:14px;background:linear-gradient(110deg,#fff 60%,#eaf4ff);box-shadow:var(--sombra)}.bienvenida-portal h1{margin:3px 0;font-size:28px}.bienvenida-portal p{margin:0;color:var(--suave)}.bienvenida-portal>.estado{margin-left:auto}.avatar-grande{display:grid;width:68px;height:68px;flex:0 0 68px;place-items:center;overflow:hidden;border-radius:50%;background:linear-gradient(145deg,#0877f9,#0556b5);color:#fff;font-size:28px;font-weight:900}.avatar-grande img{width:100%;height:100%;object-fit:cover}.etiqueta-portal{color:var(--azul);font-size:10px;font-weight:900;letter-spacing:1.4px}.tarjetas-portal{display:grid;gap:12px;margin-bottom:18px}.tarjetas-portal.seis{grid-template-columns:repeat(6,1fr)}.tarjetas-portal.cuatro{grid-template-columns:repeat(4,1fr);margin-bottom:0}.tarjetas-portal article{min-height:108px;padding:15px 17px;border:1px solid var(--borde);border-top:4px solid var(--azul);border-radius:11px;background:#fff;box-shadow:0 5px 16px #14375b0a}.tarjetas-portal article.verde{border-top-color:#16a34a}.tarjetas-portal article.naranja{border-top-color:#f59e0b}.tarjetas-portal article.rojo{border-top-color:#dc2626}.tarjetas-portal article.morado{border-top-color:#8b5cf6}.tarjetas-portal article.turquesa{border-top-color:#06b6d4}.tarjetas-portal small,.tarjetas-portal strong,.tarjetas-portal article>span{display:block}.tarjetas-portal small{color:var(--suave)}.tarjetas-portal strong{margin:5px 0 3px;font-size:25px}.tarjetas-portal .texto-tarjeta{overflow:hidden;font-size:17px;text-overflow:ellipsis;white-space:nowrap}.tarjetas-portal article>span{color:var(--suave);font-size:11px}.rejilla-grupos{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}.rejilla-grupos article{display:flex;gap:14px;padding:17px;border:1px solid var(--borde);border-radius:10px;background:#f8fbff}.rejilla-grupos h3,.rejilla-grupos p{margin:2px 0}.rejilla-grupos small,.rejilla-grupos div>span{color:var(--suave);font-size:11px}.icono-grupo{display:grid;width:42px;height:42px;flex:0 0 42px;place-items:center;border-radius:10px;background:#e2efff;color:var(--azul);font-size:21px}.accion-portal{display:inline-block;padding:7px 10px;border-radius:7px;background:#e4f4ea;color:#15803d!important;font-weight:800;text-decoration:none;white-space:nowrap}.accion-portal.secundario{background:#eaf4ff;color:var(--azul)!important}.panel-avisos{border-top:4px solid #f59e0b}.contador-aviso{display:grid;width:30px;height:30px;place-items:center;border-radius:50%;background:#fff0c7;color:#9a6200;font-weight:900}.lista-avisos{display:grid;gap:10px}.aviso-portal{display:flex;gap:13px;padding:14px;border:1px solid #dbe5f1;border-left:5px solid #3b82f6;border-radius:8px;background:#f8fbff}.aviso-portal>span{display:grid;width:28px;height:28px;flex:0 0 28px;place-items:center;border-radius:50%;background:#dbeafe;color:#1d4ed8;font-weight:900}.aviso-portal h3,.aviso-portal p{margin:2px 0}.aviso-portal p{color:#52657e;line-height:1.45;white-space:pre-line}.aviso-portal small{color:#64748b}.aviso-portal.importante{border-left-color:#f59e0b;background:#fffaf0}.aviso-portal.urgente{border-left-color:#dc2626;background:#fff5f5}.sin-avisos{display:flex;align-items:center;gap:12px;padding:18px;border-radius:9px;background:#f0fdf4;color:#166534}.sin-avisos>span{font-size:25px}.sin-avisos p{margin:3px 0 0}.prioridad-aviso{display:inline-block;padding:5px 8px;border-radius:999px;background:#eaf4ff;color:#1d4ed8;font-size:11px;font-weight:800}.prioridad-aviso.importante{background:#fef3c7;color:#a16207}.prioridad-aviso.urgente{background:#fee2e2;color:#b91c1c}@media(max-width:1150px){.tarjetas-portal.seis{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.tarjetas-portal.seis,.tarjetas-portal.cuatro{grid-template-columns:repeat(2,1fr)}.bienvenida-portal{align-items:flex-start}.bienvenida-portal>.estado{margin-left:0}.portal-cabecera nav{flex-wrap:wrap}}@media(max-width:480px){.tarjetas-portal.seis,.tarjetas-portal.cuatro{grid-template-columns:1fr}.bienvenida-portal{flex-wrap:wrap}}
.dialogo-alerta{width:min(540px,92vw);border:0;border-radius:16px;padding:0;box-shadow:0 24px 70px #001c3e66}.dialogo-alerta::backdrop{background:#07182aa6;backdrop-filter:blur(2px)}.contenido-dialogo-alerta{padding:28px;text-align:center}.contenido-dialogo-alerta h2{margin:10px 0 8px}.contenido-dialogo-alerta p{margin:9px 0;color:#52657e;line-height:1.55}.contenido-dialogo-alerta button{min-width:145px;margin-top:18px}.icono-alerta{display:grid;width:54px;height:54px;margin:auto;place-items:center;border-radius:50%;background:#dcfce7;color:#15803d;font-size:30px;font-weight:900}.dialogo-alerta.error .icono-alerta{background:#fee2e2;color:#b91c1c}.dialogo-alerta.aviso .icono-alerta{background:#fef3c7;color:#a16207}
.nombre-marca-escuela{display:block;padding:8px 12px;color:#fff;font-size:17px;line-height:1.2;text-align:center}.identidad-documento{display:flex;align-items:center;gap:14px}.identidad-documento>img{width:auto;height:58px;max-width:180px;object-fit:contain}.vista-logo-escuela{display:flex;align-items:center;gap:18px;margin-top:22px;padding:18px;border:1px solid var(--borde);border-radius:10px;background:#f8fbff}.vista-logo-escuela small{color:var(--suave)}.vista-logo-escuela img{width:auto;height:80px;max-width:240px;object-fit:contain}
