/* Estilos propios de colegio_v2 (la plantilla base está en Resources/template) */
#dv_espera { display: none; position: fixed; z-index: 1800; top: 0; left: 0; height: 100%; width: 100%;
    background: rgba(255, 255, 255, .8) url('../images/ajax-loader.gif') 50% 50% no-repeat; background-size: 110px auto; }
.text-muted-header { opacity: .75; }

/* Inicio: tarjetas de módulos */
.inicio-bienvenida h2 { margin-top: 5px; }
.modulo-tarjeta { display: block; border: 1px solid #e3e6ea; border-radius: 6px; padding: 18px 12px; margin-bottom: 15px;
    text-align: center; color: #333; background: #fff; transition: box-shadow .15s, transform .15s; min-height: 140px; }
.modulo-tarjeta:hover, .modulo-tarjeta:focus { color: #333; text-decoration: none; box-shadow: 0 3px 12px rgba(0, 0, 0, .12); transform: translateY(-2px); }
.modulo-tarjeta .fa { font-size: 34px; margin-bottom: 8px; }
.modulo-tarjeta h4 { margin: 4px 0; font-weight: bold; }
.modulo-tarjeta p { font-size: 12px; color: #777; margin: 0; }

/* Etiquetas de tipo de rol */
.tipo-rol { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: bold; color: #fff; white-space: nowrap; }
.tipo-administracion { background: #3c8dbc; }
.tipo-estudiantes { background: #00a65a; }
.tipo-catedraticos { background: #f39c12; }
.tipo-padres { background: #8e44ad; }

/* Módulos en el formulario de roles */
.modulos-rol label { font-weight: normal; display: block; padding: 6px 8px; border: 1px solid #eee; border-radius: 4px; margin-bottom: 6px; cursor: pointer; }
.modulos-rol label input { margin-right: 8px; }
.modulos-rol label.deshabilitado { opacity: .45; cursor: not-allowed; }
.modulos-rol small { color: #888; display: block; margin-left: 22px; }

.table > tbody > tr > td { vertical-align: middle; }
.acciones-tabla { white-space: nowrap; }

/* Pantallas sin menú (ingreso, recuperar y cambiar contraseña): tarjeta minimalista centrada */
.login-page { min-height: 100vh; background: #f4f6f8; flex-direction: column; padding: 24px 16px 56px; }
.login-page .login-box { width: 380px; max-width: 100%; margin: 0; transform: none; }
.login-page .login-box-body { padding: 34px 32px 28px; border: 1px solid #e3e6ea; border-radius: 14px; box-shadow: 0 6px 24px rgba(16, 42, 67, .06); color: #555; }
.login-titulo { text-align: center; margin-bottom: 22px; }
.login-titulo .login-logo-img { display: block; margin: 0 auto 16px; max-width: 100%; max-height: 150px; object-fit: contain; }
.login-titulo .login-logo-sistema { width: 80px; height: 80px; }
.login-titulo > .fa { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin-bottom: 12px; border-radius: 50%; background: #eaf2fa; color: #0f5298; font-size: 24px; }
.login-titulo h3 { margin: 0; font-size: 21px; font-weight: 600; line-height: 1.3; color: #22313f; }
.login-titulo p { margin: 4px 0 0; font-size: 14px; }
.login-indicacion { margin: 0 0 14px; text-align: center; font-size: 13px; color: #8a94a0; }
.login-page .form-control { height: 44px; border-radius: 8px; border-color: #dfe3e8; box-shadow: none; font-size: 15px; }
.login-page .form-control:focus { border-color: #0f5298; box-shadow: 0 0 0 3px rgba(15, 82, 152, .12); }
.login-page .has-feedback .form-control { padding-right: 40px; }
.login-page .form-control-feedback { line-height: 44px; height: 44px; color: #9aa4ae; }
.login-page label { font-weight: 600; font-size: 13px; color: #555; }
.login-page .btn-block { height: 44px; border-radius: 8px; font-size: 15px; font-weight: 600; }
.login-page .btn-primary { background: #0f5298; border-color: #0f5298; }
.login-page .btn-primary:hover, .login-page .btn-primary:focus { background: #0c4580; border-color: #0c4580; }
.login-page .btn-default.btn-block { border-color: #dfe3e8; color: #555; background: #fff; }
.login-page .alert { border-radius: 8px; font-size: 13px; }
.login-page .alert-info { background: #eef5fb; border-color: #d6e6f3; color: #31597a; }
.login-enlace { margin: 16px 0 0; text-align: center; font-size: 13px; }
.login-enlace a { color: #0f5298; }
.login-pie { position: fixed; left: 0; right: 0; bottom: 14px; text-align: center; font-size: 12px; color: #9aa4ae; }
@media (max-width: 480px) {
    .login-page { justify-content: flex-start; padding-top: 32px; }
    .login-page .login-box-body { padding: 26px 20px 22px; }
    .login-titulo .login-logo-img { max-height: 120px; }
    .login-pie { position: static; margin-top: 18px; }
}

/* Select2 con la altura de los campos de Bootstrap */
.select2-container .select2-selection--single { height: 34px; border-color: #ccc; }
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 32px; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 32px; }
.select2-container--open .select2-dropdown { z-index: 2100; }
.fila-padre .panel-body { background: #fafbfc; }

/* Fotos de estudiantes y portal de padres */
.foto-estudiante-xs { width: 32px; height: 32px; object-fit: cover; border: 1px solid #ddd; }
.foto-estudiante-md { width: 96px; height: 96px; object-fit: cover; border: 3px solid #eef1f4; }
.foto-estudiante-lg { width: 130px; height: 130px; object-fit: cover; border: 4px solid #eef1f4; margin-top: 6px; }
.foto-estudiante-form { width: 120px; height: 120px; object-fit: cover; border: 3px solid #eef1f4; }
.progress-asistencia { height: 24px; border-radius: 12px; }
.progress-asistencia .progress-bar { line-height: 24px; font-weight: bold; font-size: 13px; }
a.enlace-asistencia { display: block; text-decoration: none; }
a.enlace-asistencia:hover .progress-asistencia { box-shadow: 0 0 0 2px rgba(60, 141, 188, .35); }
.resumen-asistencia h3 { margin: 4px 0 0; font-weight: bold; }

/* Unidades: zona + evaluación (100 puntos) */
.unidad-tareas .panel-heading { background: #f7f9fb; }
.puntos-unidad { margin-top: 4px; font-size: 13px; }
.tabla-notas-unidad th, .tabla-notas-unidad td { vertical-align: middle !important; }
.tabla-notas-unidad .bg-zona { background: #eaf2fb !important; }
.tabla-notas-unidad .bg-evaluacion { background: #eaf7ee !important; }
.resumen-unidad { border: 1px solid #e3e6ea; border-radius: 5px; padding: 10px 12px; margin-bottom: 12px; background: #fff; }
.resumen-unidad h4 { margin: 0 0 6px; font-weight: bold; }
.resumen-unidad .cifra { font-size: 20px; font-weight: bold; line-height: 1.1; }
/* Nueva inscripción: datos del estudiante bloqueados hasta elegirlo */
#ins_datos_estudiante.datos-bloqueados label { color: #999; }
#ins_datos_estudiante.datos-bloqueados .form-control[disabled], #ins_datos_estudiante.datos-bloqueados .select2-container--disabled .select2-selection { background-color: #f4f4f4; cursor: not-allowed; }
/* Buscador select2 con un botón pegado a la derecha (ej. padre + Nuevo) */
.buscador-con-boton { display: flex; align-items: stretch; }
.buscador-con-boton .select2-container { flex: 1 1 auto; width: auto !important; min-width: 0; }
.buscador-con-boton .select2-container .select2-selection { border-top-right-radius: 0; border-bottom-right-radius: 0; height: 34px; }
.buscador-con-boton > .btn { flex: 0 0 auto; border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: -1px; white-space: nowrap; }
/* Botón en medio (ej. editar entre el buscador y Nuevo): sin esquinas redondeadas */
.buscador-con-boton > .btn:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
/* Entrega con varios archivos */
.lista-archivos-entrega { margin-bottom: 6px; }
.lista-archivos-entrega li { padding: 3px 0; border-bottom: 1px dashed #e3e6ea; }
.lista-archivos-entrega li a { margin-left: 8px; font-size: 12px; }
.lista-archivos-entrega li.quitado .nombre { text-decoration: line-through; color: #999; }
/* Mis calificaciones */

/* ---------- Finanzas ---------- */
.fila-nivel td { background: #f4f6f8 !important; color: #555; font-size: 12px; text-transform: uppercase; }
.meses-costo { display: flex; flex-wrap: wrap; gap: 4px 0; border: 1px solid #ddd; border-radius: 4px; padding: 6px 8px; }
.meses-costo .mes-costo { flex: 0 0 25%; font-weight: normal; margin: 0; padding: 3px 0; cursor: pointer; }
@media (max-width: 767px) { .meses-costo .mes-costo { flex-basis: 50%; } }
.tarjetas-caja > div { margin-bottom: 10px; }
.tarjeta-caja { border: 1px solid #e3e3e3; border-radius: 4px; padding: 8px 10px; background: #fafafa; height: 100%; }
.tarjeta-caja small { display: block; color: #777; font-size: 11px; text-transform: uppercase; }
.tarjeta-caja b { font-size: 16px; }
.tarjeta-caja.tarjeta-total { background: #eaf4fb; border-color: #bcdff1; }
.tarjeta-caja.tarjeta-efectivo { background: #eef8ee; border-color: #c3e6c3; }
.tarjeta-caja.tarjeta-pagada b { color: #00a65a; }
.tarjeta-caja.tarjeta-vencida { background: #fdf0ef; border-color: #f1c2bd; }
.tarjeta-caja.tarjeta-vencida b { color: #c0392b; }
.fila-anulada td { color: #aaa; }
.fila-anulada td:nth-child(-n+5) { text-decoration: line-through; }
.tabla-pendientes .fila-cargo { cursor: pointer; }
.tabla-pendientes .fila-cargo.seleccionada td { background: #eaf6ea !important; }
.panel-cobro .total-cobro { text-align: center; background: #f4f6f8; border-radius: 4px; padding: 8px; margin-bottom: 12px; }
.panel-cobro .total-cobro b { display: block; font-size: 26px; color: #00a65a; }
.panel-cobro .total-cobro small { color: #777; }
.metodos-pago .fila-metodo { border: 1px solid #e5e5e5; border-radius: 4px; padding: 6px; margin-bottom: 6px; background: #fff; }
.metodos-pago .fila-metodo-principal, .metodos-pago .fila-metodo-banco { display: flex; gap: 6px; align-items: center; }
.metodos-pago .fila-metodo-banco { margin-top: 6px; }
.metodos-pago .sel-metodo { flex: 1 1 50%; }
.metodos-pago .txt-monto { flex: 1 1 40%; }
.metodos-pago .sel-banco, .metodos-pago .txt-referencia { flex: 1 1 50%; }
.metodos-pago .btn-quitar-metodo { flex: 0 0 auto; padding: 2px 6px; }
.metodos-pago .vuelto-metodos { margin-top: 8px; }
.metodos-pago .vuelto-metodos .txt-recibido { width: 120px; display: inline-block; }
.resumen-turno h4 .label { font-size: 11px; vertical-align: middle; }
/* Pago en la nueva inscripción */
#ins_pago .lista-cargos-ins { max-height: 260px; overflow-y: auto; border: 1px solid #e5e5e5; border-radius: 4px; }
#ins_pago .lista-cargos-ins table { margin-bottom: 0; }
#ins_pago .total-cobro-ins { text-align: center; background: #f4f6f8; border-radius: 4px; padding: 8px; }
#ins_pago .total-cobro-ins b { display: block; font-size: 24px; color: #00a65a; }
#ins_pago .fila-cargo-ins { cursor: pointer; }
#ins_pago .fila-cargo-ins.seleccionada td { background: #eaf6ea; }

/* Filtros en columnas parejas: etiquetas del mismo ancho para que los campos queden uno sobre otro */
.filtros-alineados .input-group-addon { min-width: 112px; text-align: left; }

/* Imagen en los formularios de comunicados y eventos */
.imagen-publicacion-vista { margin: 4px 0 8px; }
.imagen-publicacion-vista img { max-width: 100%; max-height: 220px; border-radius: 6px; border: 1px solid #e3e6ea; }

/* Filas de tarjetas de tareas sin huecos cuando tienen distinto alto (las de una fila se igualan) */
.fila-tarjetas { display: flex; flex-wrap: wrap; }
.fila-tarjetas::before, .fila-tarjetas::after { display: none; }
.fila-tarjetas > [class*="col-"] { display: flex; }

/* Calificaciones del estudiante: un bloque por curso (toda la cabecera abre el detalle) */
.explicacion-notas { max-width: 980px; margin: 0 auto 16px; font-size: 13px; color: #888; }
.lista-notas-cursos { max-width: 980px; margin: 0 auto; }
.nota-curso { background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; margin-bottom: 10px; overflow: hidden; }
.nota-curso.abierto { border-color: #c9dceb; }
.nota-curso-cabecera { display: flex; align-items: center; gap: 14px; padding: 12px 16px 8px; }
.nota-curso-cabecera[role="button"] { cursor: pointer; }
.nota-curso-cabecera[role="button"]:hover { background: #f7fafd; }
.nota-curso-cabecera[role="button"]:focus { outline: 2px solid #3c8dbc; outline-offset: -2px; }
.nota-curso-nombre { flex: 1 1 30%; min-width: 0; }
.nota-curso-nombre strong { display: block; font-size: 15px; font-weight: 600; color: #333; }
.nota-curso-nombre small { display: block; }
.nota-curso-partes { flex: 1 1 45%; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.nota-parte { border-left: 3px solid #e3e6ea; padding-left: 10px; line-height: 1.35; }
.nota-parte-titulo { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: #888; }
.nota-parte-valor { display: block; font-size: 15px; }
.nota-parte-valor b { font-size: 18px; }
.nota-parte small { display: block; color: #888; }
.nota-curso-total { flex: 0 0 110px; text-align: center; line-height: 1.1; }
.nota-total-valor { display: block; font-size: 26px; font-weight: 600; color: #333; }
.nota-total-texto { font-size: 11px; color: #888; }
.nota-curso-flecha { color: #999; transition: transform .15s; }
.nota-curso.abierto .nota-curso-flecha { transform: rotate(180deg); }
.barra-unidad { position: relative; height: 8px; margin: 0 16px; border-radius: 4px; background: #eef0f2; overflow: hidden; }
.barra-unidad .barra-asignado { position: absolute; top: 0; bottom: 0; left: 0; background: #d6e4ef; }
.barra-unidad .barra-ganado { position: absolute; top: 0; bottom: 0; left: 0; background: #3c8dbc; }
.barra-unidad .barra-minimo { position: absolute; top: -2px; bottom: -2px; width: 2px; background: #333; opacity: .45; }
.barra-unidad-texto { padding: 4px 16px 10px; font-size: 12px; color: #777; }
.nota-curso-detalle { border-top: 1px solid #eef0f2; padding: 4px 16px 10px; }
.nota-detalle-grupo { margin: 10px 0 4px; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: #888; font-weight: 700; }
.nota-item { display: flex; align-items: center; gap: 12px; padding: 9px 2px; border-bottom: 1px solid #f1f3f5; color: #555; }
.nota-item:last-child { border-bottom: 0; }
a.nota-item:hover, a.nota-item:focus { background: #fafbfc; color: #555; text-decoration: none; }
.nota-item-info { flex: 1 1 auto; min-width: 0; }
.nota-item-info strong { display: block; font-weight: 600; color: #333; }
.nota-item-info small { display: block; }
.nota-item-obs { margin-top: 3px; font-size: 12px; color: #666; font-style: italic; }
.nota-item-estado { flex: 0 0 auto; font-size: 12px; font-weight: 600; padding: 3px 8px; border-radius: 12px; white-space: nowrap; }
.estado-calificada { background: #e6f6ea; color: #23803f; }
.estado-por-calificar { background: #eef1f4; color: #5c6670; }
.estado-pendiente { background: #fff4de; color: #9a6400; }
.estado-no-entregada { background: #fdeceb; color: #c0392b; }
.nota-item-puntos { flex: 0 0 90px; text-align: right; font-size: 14px; }
.nota-item-puntos b { font-size: 17px; }
.nota-detalle-pie { text-align: right; padding-top: 4px; }
.promedio-unidad { max-width: 980px; margin: 4px auto 0; text-align: right; font-size: 15px; }
@media (max-width: 767px) {
    .nota-curso-cabecera { flex-wrap: wrap; }
    .nota-curso-nombre { flex-basis: calc(100% - 140px); }
    .nota-curso-partes { order: 3; flex-basis: 100%; }
    .nota-item { flex-wrap: wrap; }
    .nota-item-info { flex-basis: 100%; }
}
.nota-curso-flecha { flex: 0 0 14px; }

/* ===== Inicio del estudiante ===== */
/* Encabezado: foto del colegio oscurecida (capa en el style) con foto, nombre y datos de inscripción en una línea */
.cabecera-estudiante { display: flex; align-items: center; gap: 18px; padding: 28px 28px; margin-bottom: 20px; min-height: 170px; border-radius: 8px;
    background: #1f5f80 center / cover no-repeat; color: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.12); }
.cabecera-estudiante.sin-imagen { background-image: linear-gradient(120deg, #1f5f80 0%, #2a87b0 100%); }
.cabecera-estudiante-foto { flex: 0 0 auto; width: 92px; height: 92px; object-fit: cover; border: 3px solid rgba(255,255,255,.9); background: #fff; }
.cabecera-estudiante-texto { flex: 1 1 auto; min-width: 0; }
.cabecera-estudiante-nombre { margin: 0 0 6px; font-size: 26px; font-weight: 600; line-height: 1.2; text-shadow: 0 1px 2px rgba(0,0,0,.3); }
.cabecera-estudiante-datos { display: flex; flex-wrap: wrap; gap: 4px 0; font-size: 15px; opacity: .95; }
.cabecera-estudiante-datos > span + span::before { content: "·"; margin: 0 9px; opacity: .7; }
.cabecera-estudiante-acciones { flex: 0 0 auto; display: flex; flex-direction: column; gap: 6px; }
.cabecera-estudiante-acciones a { display: inline-block; padding: 6px 12px; border-radius: 16px; background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.35); color: #fff; font-size: 13px; white-space: nowrap; }
.cabecera-estudiante-acciones a:hover, .cabecera-estudiante-acciones a:focus { background: rgba(255,255,255,.28); color: #fff; text-decoration: none; }
/* Celular: sin foto del colegio, solo color; todo centrado y apilado */
@media (max-width: 767px) {
    .cabecera-estudiante, .cabecera-estudiante.sin-imagen { background-image: linear-gradient(120deg, #1f5f80 0%, #2a87b0 100%) !important; flex-direction: column; text-align: center; padding: 20px 14px; min-height: 0; gap: 10px; }
    .cabecera-estudiante-nombre { font-size: 20px; }
    .cabecera-estudiante-datos { justify-content: center; font-size: 14px; }
    .cabecera-estudiante-acciones { flex-direction: row; flex-wrap: wrap; justify-content: center; }
}

/* Paneles de la columna lateral (tareas pendientes y próximos eventos) */
.panel-inicio { background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; margin-bottom: 20px; overflow: hidden; }
.panel-inicio-titulo { display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; font-size: 15px; font-weight: 600; color: #333; border-bottom: 1px solid #eef0f2; }
.panel-inicio-titulo .fa { color: #3c8dbc; margin-right: 4px; }
.aviso-tareas-pendientes { border-top: 3px solid #f39c12; }
.aviso-tareas-pendientes .panel-inicio-titulo .fa { color: #f39c12; }
.aviso-tareas-pendientes.al-dia { border-top-color: #00a65a; }
.aviso-tareas-numero { min-width: 24px; padding: 2px 7px; border-radius: 12px; background: #f39c12; color: #fff; font-size: 13px; text-align: center; }
.panel-inicio-vacio { padding: 16px 15px; color: #555; }
.al-dia .panel-inicio-vacio .fa { color: #00a65a; font-size: 18px; vertical-align: -2px; margin-right: 4px; }
.lista-inicio { list-style: none; margin: 0; padding: 0; }
.lista-inicio > li { border-bottom: 1px solid #f1f3f5; }
.lista-inicio > li:last-child { border-bottom: 0; }
.lista-inicio > li > a { display: block; padding: 10px 15px; color: #333; }
.lista-inicio > li > a:hover, .lista-inicio > li > a:focus { background: #f7f9fb; text-decoration: none; }
.lista-inicio strong { display: block; font-weight: 600; line-height: 1.35; }
.lista-inicio small { display: block; color: #777; margin-top: 2px; }
.panel-inicio-pie { display: block; padding: 9px 15px; border-top: 1px solid #eef0f2; font-weight: 600; text-align: right; }
.panel-inicio-pie:hover, .panel-inicio-pie:focus { background: #f7f9fb; text-decoration: none; }
.evento-inicio { display: flex; gap: 12px; padding: 10px 15px; }
.evento-chip { flex: 0 0 46px; height: 48px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 6px; background: #ecf4fa; color: #3c8dbc; font-size: 11px; font-weight: 700; letter-spacing: .04em; line-height: 1.1; }
.evento-chip b { font-size: 19px; letter-spacing: 0; }
.evento-inicio-texto { flex: 1 1 auto; min-width: 0; }
.evento-inicio-descripcion { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.evento-inicio-imagen { display: block; margin-top: 6px; }
.evento-inicio-imagen img { display: block; width: 100%; max-height: 140px; object-fit: cover; border-radius: 6px; }

/* Muro de avisos */
.muro-publicaciones { margin-bottom: 20px; }
.muro-titulo { margin: 0 0 12px; font-size: 17px; font-weight: 600; color: #333; }
.muro-titulo .fa { color: #3c8dbc; margin-right: 2px; }
.muro-sin-leer { margin-left: 6px; padding: 2px 8px; border-radius: 10px; background: #fdecea; color: #c0392b; font-size: 12px; font-weight: 600; vertical-align: 2px; }
.publicacion { background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; margin-bottom: 14px; overflow: hidden; }
.publicacion-nueva { border-left: 4px solid #3c8dbc; }
.publicacion-vacia { padding: 30px 15px; }
.publicacion-vacia .fa { font-size: 32px; margin-bottom: 8px; }
.publicacion-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding: 14px 18px 0; font-size: 13px; color: #777; }
.publicacion-marca-nuevo { margin-left: auto; color: #3c8dbc; font-weight: 700; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
.publicacion-marca-nuevo::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #3c8dbc; margin-right: 5px; vertical-align: 1px; }
.publicacion-titulo { font-size: 18px; font-weight: 600; margin: 8px 18px 6px; line-height: 1.3; }
.publicacion-texto { padding: 0 18px 14px; font-size: 15px; line-height: 1.6; color: #444; overflow-wrap: anywhere; }
.publicacion-texto.recortado { max-height: 8em; overflow: hidden; -webkit-mask-image: linear-gradient(#000 65%, transparent); mask-image: linear-gradient(#000 65%, transparent); }
.publicacion-ver-mas { display: inline-block; padding: 0 18px 12px; font-weight: 600; }
.publicacion-imagen { display: block; background: #f4f6f8; border-top: 1px solid #eef0f2; }
.publicacion-imagen img { display: block; width: 100%; max-height: 480px; object-fit: contain; }
.publicacion-pie { padding: 4px 10px; border-top: 1px solid #eef0f2; }
.muro-ver-todos { display: inline-block; font-weight: 600; margin-top: 2px; }
.lista-inicio small.text-danger { color: #dd4b39; }

/* ===== Asistencia del estudiante (minimalista) ===== */
.subtitulo-pagina { margin: 4px 0 0; }
.asistencia-estudiante { max-width: 900px; margin: 0 auto; }
.resumen-ciclo-asistencia { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; padding: 18px 22px; margin-bottom: 18px; background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; }
.resumen-ciclo-principal strong { font-size: 32px; font-weight: 600; line-height: 1; color: #333; margin-right: 8px; }
.resumen-ciclo-principal span { color: #777; }
.resumen-ciclo-datos { display: flex; flex-wrap: wrap; gap: 6px 20px; color: #666; }
.resumen-ciclo-datos b { color: #333; margin-right: 3px; }
.punto { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; }
.punto-presente { background: #2e9d5b; }
.punto-ausente { background: #d9534f; }
.punto-permiso { background: #3c8dbc; }
.selector-vista { display: inline-flex; padding: 3px; margin-bottom: 14px; background: #e9edf1; border-radius: 8px; }
.selector-vista > li > a { padding: 7px 18px; border-radius: 6px; color: #555; font-weight: 600; }
.selector-vista > li > a:hover, .selector-vista > li > a:focus { background: transparent; color: #333; }
.selector-vista > li.active > a, .selector-vista > li.active > a:hover { background: #fff; color: #333; box-shadow: 0 1px 2px rgba(0,0,0,.1); }
.selector-vista-numero { margin-left: 4px; padding: 1px 7px; border-radius: 10px; background: #fdecea; color: #c0392b; font-size: 12px; }
.panel-asistencia { background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; padding: 16px 18px; margin-bottom: 20px; }
.barra-calendario { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.barra-calendario #filtro_curso { width: auto; max-width: 100%; }
.navegar-mes { display: flex; align-items: center; gap: 4px; }
.navegar-mes a { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; color: #555; font-size: 18px; }
.navegar-mes a:hover { background: #f1f3f5; color: #333; }
.navegar-mes a.deshabilitado { color: #ccc; pointer-events: none; }
.navegar-mes select { border: 0; background: transparent; font-size: 17px; font-weight: 600; color: #333; cursor: pointer; padding: 2px 4px; }
.calendario-asistencia { width: 100%; table-layout: fixed; border-collapse: collapse; }
.calendario-asistencia th { padding: 6px 0; text-align: center; font-size: 12px; font-weight: 600; color: #999; text-transform: uppercase; }
.calendario-asistencia td { height: 50px; text-align: center; vertical-align: middle; }
.calendario-asistencia .numero-dia { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; font-size: 14px; color: #555; }
.calendario-asistencia .dia-presente { background: #e6f4ea; color: #1e7b45; font-weight: 600; }
.calendario-asistencia .dia-ausente { background: #fdecea; color: #c0392b; font-weight: 600; }
.calendario-asistencia .dia-permiso { background: #e6f1fa; color: #2a6f9b; font-weight: 600; }
.calendario-asistencia .dia-hoy { box-shadow: 0 0 0 2px #3c8dbc; }
.leyenda-asistencia { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 22px; margin-top: 12px; font-size: 13px; color: #666; }
.nota-calendario { margin: 8px 0 0; text-align: center; font-size: 12px; color: #999; }
.asistencia-vacia { margin: 0; padding: 26px 0; text-align: center; color: #2e9d5b; font-size: 15px; }
.asistencia-vacia .fa { font-size: 20px; vertical-align: -2px; margin-right: 4px; }
.grupo-inasistencia + .grupo-inasistencia { margin-top: 16px; }
.grupo-inasistencia-fecha { display: flex; justify-content: space-between; padding-bottom: 6px; margin-bottom: 2px; border-bottom: 1px solid #eef0f2; font-weight: 600; color: #333; }
.grupo-inasistencia-fecha span { font-weight: 400; font-size: 13px; color: #999; }
.fila-inasistencia { display: flex; gap: 14px; padding: 8px 0; border-bottom: 1px solid #f5f6f7; }
.fila-inasistencia:last-child { border-bottom: 0; }
.fila-inasistencia-hora { flex: 0 0 96px; color: #888; font-size: 13px; padding-top: 1px; }
.fila-inasistencia-curso { flex: 1 1 auto; min-width: 0; }
.fila-inasistencia-curso strong { font-weight: 600; color: #333; }
.fila-inasistencia-curso small { display: block; color: #888; }
.fila-inasistencia-obs { font-style: italic; }
@media (max-width: 480px) {
    .calendario-asistencia td { height: 42px; }
    .calendario-asistencia .numero-dia { width: 30px; height: 30px; font-size: 13px; }
    .fila-inasistencia-hora { flex-basis: 78px; font-size: 12px; }
    .resumen-ciclo-asistencia { padding: 14px 16px; }
}

/* ===== Calendario escolar (minimalista, compartido por todos los roles) ===== */
.calendario-escolar { max-width: 1100px; margin: 0 auto; }
/* Colores por tipo de evento: --c fuerte (punto/borde/texto) y --f suave (fondo) */
.ev-danger { --c: #c0392b; --f: #fdecea; }
.ev-primary { --c: #2a6f9b; --f: #e6f1fa; }
.ev-warning { --c: #b9770e; --f: #fdf3e1; }
.ev-success { --c: #1e7b45; --f: #e6f4ea; }
.ev-info { --c: #117a8b; --f: #e3f5f8; }
.ev-default { --c: #666; --f: #f1f3f5; }
.punto[class*="ev-"] { background: var(--c); }
.punto-sin-clases { background: #f6c6c1; }
.barra-calendario-escolar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin-bottom: 14px; }
.barra-calendario-escolar #filtro_ciclo { width: auto; min-width: 180px; }
.barra-calendario-escolar .dias-lectivos { flex: 1 1 auto; font-size: 13px; }
.etiqueta-mes { min-width: 170px; text-align: center; font-size: 17px; font-weight: 600; color: #333; }
.enlace-hoy { font-weight: 600; }
.calendario-mes { width: 100%; table-layout: fixed; border-collapse: collapse; }
.calendario-mes th { padding: 6px 0; text-align: center; font-size: 12px; font-weight: 600; color: #999; text-transform: uppercase; }
.calendario-mes td { height: 96px; vertical-align: top; padding: 4px 5px; border-top: 1px solid #f0f2f4; font-size: 12px; }
.calendario-mes td + td { border-left: 1px solid #f5f6f7; }
.calendario-mes td.fuera .dia-num { color: #ccc; }
.calendario-mes td.sin-clases { background: #fff6f5; }
.calendario-mes td.editable { cursor: pointer; }
.calendario-mes td.editable:hover { background: #f7f9fb; }
.calendario-mes .dia-num { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; margin-bottom: 3px; border-radius: 50%; font-size: 13px; color: #555; }
.calendario-mes .dia-num.hoy { background: #3c8dbc; color: #fff; font-weight: 600; }
.calendario-mes .evento { display: block; margin-bottom: 3px; padding: 2px 6px; border-left: 3px solid var(--c); border-radius: 3px; background: var(--f); color: var(--c); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.calendario-mes .evento:hover { filter: brightness(.96); }
.evento-chip[class*="ev-"] { background: var(--f); color: var(--c); }
.fila-evento { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid #f5f6f7; color: #333; }
.fila-evento:last-child { border-bottom: 0; }
.fila-evento:hover, .fila-evento:focus { color: #333; text-decoration: none; background: #fafbfc; }
.fila-evento.pasado { opacity: .55; }
.fila-evento-texto { flex: 1 1 auto; min-width: 0; }
.fila-evento-texto strong { display: block; font-weight: 600; }
.fila-evento-texto small { display: block; color: #888; }
.fila-evento-descripcion { display: -webkit-box !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* Celular: los eventos del mes se vuelven puntos de color bajo el número (el detalle se ve en la lista o al tocar) */
@media (max-width: 767px) {
    .calendario-mes td { height: 54px; padding: 3px 2px; text-align: center; }
    .calendario-mes .evento { display: inline-block; width: 7px; height: 7px; margin: 0 1px; padding: 0; border: 0; border-radius: 50%; background: var(--c); font-size: 0; }
    .barra-calendario-escolar .dias-lectivos { flex-basis: 100%; order: 3; }
}

/* ===== Avisos del colegio (lectura, minimalista) ===== */
.avisos-colegio { max-width: 900px; margin: 0 auto; }
.lista-avisos { padding: 4px 0; }
.lista-avisos .asistencia-vacia { padding: 26px 15px; }
.aviso-item { display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px; border-bottom: 1px solid #f1f3f5; color: #555; }
.aviso-item:last-child { border-bottom: 0; }
.aviso-item:hover, .aviso-item:focus { background: #f7f9fb; color: #555; text-decoration: none; }
.aviso-item-marca { flex: 0 0 8px; height: 8px; margin-top: 7px; border-radius: 50%; }
.aviso-no-leido .aviso-item-marca { background: #3c8dbc; }
.aviso-item-texto { flex: 1 1 auto; min-width: 0; }
.aviso-item-titulo { display: block; font-size: 15px; color: #333; }
.aviso-no-leido .aviso-item-titulo { font-weight: 700; }
.aviso-item-resumen { display: block; margin-top: 2px; color: #777; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aviso-item-meta { display: block; margin-top: 4px; font-size: 12px; color: #999; }
.aviso-item-meta [class*="ev-"] { color: var(--c); font-weight: 600; }
.aviso-item-meta .punto { background: var(--c); width: 7px; height: 7px; margin-right: 4px; }
.aviso-item-fecha { flex: 0 0 auto; font-size: 12px; color: #999; white-space: nowrap; padding-top: 2px; }
.aviso-no-leido .aviso-item-fecha { color: #3c8dbc; font-weight: 600; }
.aviso-detalle-titulo { margin: 8px 0 12px; font-size: 20px; font-weight: 600; line-height: 1.3; }
.aviso-detalle-texto { white-space: pre-wrap; font-size: 15px; line-height: 1.6; color: #444; overflow-wrap: anywhere; }
.aviso-detalle-imagen { display: block; margin-top: 14px; }
.aviso-detalle-imagen img { display: block; max-width: 100%; max-height: 480px; margin: 0 auto; border-radius: 6px; }

/* ===== Portal del estudiante: Cursos, Tareas y Calificaciones (minimalista) ===== */
.pagina-estudiante { max-width: 980px; margin: 0 auto; }
.pagina-estudiante.pagina-ancha { max-width: 1200px; }
.enlace-volver { display: inline-block; margin-bottom: 4px; font-weight: 600; }
.titulo-seccion-est { margin: 4px 0 10px; font-size: 15px; font-weight: 600; color: #333; }
/* Horario semanal: un panel con una columna por día */
.panel-horario { padding: 12px; }
.calendario-cursos { display: grid; grid-template-columns: repeat(var(--dias, 5), minmax(0, 1fr)); gap: 10px; }
.calendario-dia { min-width: 0; }
.calendario-dia-titulo { padding: 4px 0 10px; text-align: center; font-size: 12px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: .04em; }
.calendario-hoy .calendario-dia-titulo { color: #3c8dbc; }
.calendario-dia-titulo small { margin-left: 4px; padding: 1px 6px; border-radius: 8px; background: #3c8dbc; color: #fff; font-size: 10px; text-transform: none; }
.calendario-vacio { padding: 18px 0; text-align: center; font-size: 12px; color: #bbb; }
a.tarjeta-curso { position: relative; display: block; margin-bottom: 8px; padding: 8px 10px 8px 12px; border: 1px solid #eef0f2; border-left: 3px solid var(--color-curso, #3c8dbc); border-radius: 6px; background: #fff; color: #555; font-size: 12px; text-decoration: none; transition: background .15s; }
a.tarjeta-curso:hover, a.tarjeta-curso:focus { background: #f7f9fb; color: #555; text-decoration: none; }
.tarjeta-curso-hora { display: block; color: #999; font-size: 11px; }
.tarjeta-curso-nombre { display: block; margin: 1px 0; font-size: 13px; font-weight: 600; line-height: 1.3; color: #333; padding-right: 18px; }
.tarjeta-curso-dato { display: block; color: #888; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tarjeta-curso-pendientes { position: absolute; top: 7px; right: 7px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: #f39c12; color: #fff; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; }
.cursos-sin-horario { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.cursos-sin-horario a.tarjeta-curso { margin-bottom: 0; }
@media (max-width: 991px) { .calendario-cursos { grid-template-columns: 1fr; } .calendario-dia-titulo { text-align: left; padding-top: 8px; } }
/* Filas de tareas pendientes (Tareas y curso) */
.lista-tareas { padding: 4px 18px; }
.tarjeta-tarea { display: flex; align-items: flex-start; gap: 14px; padding: 14px 0; border-bottom: 1px solid #f1f3f5; }
.tarjeta-tarea:last-child { border-bottom: 0; }
.tarjeta-tarea .evento-chip { margin-top: 2px; }
.tarjeta-tarea-texto { flex: 1 1 auto; min-width: 0; }
.tarjeta-tarea-texto small { display: block; color: #888; margin-top: 2px; }
.tarjeta-tarea-curso { display: block; font-size: 12px; font-weight: 600; color: #3c8dbc; }
.tarjeta-tarea-titulo { display: block; font-size: 15px; font-weight: 600; color: #333; }
.tarjeta-tarea-tipo { margin-left: 4px; padding: 1px 7px; border-radius: 8px; background: #e6f4ea; color: #1e7b45; font-size: 11px; vertical-align: 2px; }
.tarjeta-tarea-falta { color: #b9770e; }
.tarjeta-tarea-descripcion { color: #999 !important; }
.tarjeta-tarea > .btn { flex: 0 0 auto; align-self: center; }
@media (max-width: 480px) { .tarjeta-tarea { flex-wrap: wrap; } .tarjeta-tarea > .btn { margin-left: 60px; } }
/* Detalle del curso */
.horario-curso { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 0; }
.horario-curso > span { padding: 2px 9px; border-radius: 10px; background: #e9edf1; color: #555; font-size: 12px; }
.unidad-curso { padding: 6px 18px 10px; }
.unidad-curso-cabecera { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; padding: 8px 0 10px; border-bottom: 1px solid #eef0f2; }
.unidad-curso-cabecera > strong { font-size: 15px; color: #333; }
.unidad-curso-cifras { display: flex; flex-wrap: wrap; gap: 4px 18px; font-size: 13px; color: #888; }
.unidad-curso-cifras b { color: #333; font-size: 15px; }
.unidad-curso-total b { color: #3c8dbc; font-size: 17px; }
.unidad-curso-pie { margin: 6px 0 0; font-size: 12px; color: #999; }
.fila-asistencia-fecha { flex-basis: 150px; }
/* Detalle de una tarea (modal) */
.tarea-detalle-cabecera { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.tarea-detalle-titulo { margin: 2px 0 6px; font-size: 20px; font-weight: 600; }
.tarea-detalle-meta { color: #777; margin-bottom: 6px; }
.tarea-detalle-meta b { color: #333; }
.tarea-detalle-modalidad { color: #555; }
.tarea-detalle-descripcion { margin-bottom: 14px; padding: 12px 14px; border-left: 3px solid #e3e6ea; background: #fafbfc; white-space: pre-wrap; color: #444; line-height: 1.55; }
/* Calificaciones: unidades y boleta */
.barra-unidades { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; max-width: 980px; margin: 0 auto 6px; }
.barra-unidades .selector-vista { margin-bottom: 0; flex-wrap: wrap; }
.enlace-boleta { font-weight: 600; }
.barra-calendario-escolar select.form-control { width: auto; min-width: 220px; max-width: 100%; }
.asistencia-vacia.text-muted { color: #999; }

/* ===== Portal de padres (minimalista): inicio, asistencia, boletas y estado de cuenta ===== */
.tarjeta-hijo { background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; margin-bottom: 16px; overflow: hidden; }
.tarjeta-hijo-cabecera { display: flex; align-items: center; gap: 14px; padding: 16px 18px; }
.tarjeta-hijo-cabecera img { flex: 0 0 auto; width: 64px; height: 64px; object-fit: cover; border: 2px solid #eef1f4; }
.tarjeta-hijo-nombre { margin: 0 0 3px; font-size: 18px; font-weight: 600; color: #333; }
.tarjeta-hijo-datos { margin: 0; font-size: 13px; color: #888; }
.tarjeta-hijo-cifras { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); border-top: 1px solid #eef0f2; }
.cifra-hijo { display: block; padding: 12px 18px; color: #555; }
.cifra-hijo + .cifra-hijo { border-left: 1px solid #eef0f2; }
a.cifra-hijo:hover, a.cifra-hijo:focus { background: #f7f9fb; color: #555; text-decoration: none; }
.cifra-hijo-titulo { display: block; font-size: 11px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: .04em; }
.cifra-hijo b { display: block; margin: 2px 0; font-size: 21px; font-weight: 600; color: #333; line-height: 1.2; }
.cifra-hijo b.text-success { color: #2e9d5b; }
.cifra-hijo b.text-warning { color: #b9770e; }
.cifra-hijo b.text-danger { color: #c0392b; }
.cifra-hijo small { display: block; font-size: 12px; color: #999; }
.tarjeta-hijo-pie { display: flex; flex-wrap: wrap; gap: 6px 16px; padding: 9px 18px; border-top: 1px solid #eef0f2; font-size: 13px; }
@media (max-width: 480px) { .cifra-hijo + .cifra-hijo { border-left: 0; border-top: 1px solid #eef0f2; } }
/* Selector de hijo (pestañas con foto) */
.selector-hijos { flex-wrap: wrap; }
.selector-hijos > li > a { display: flex; align-items: center; gap: 7px; padding: 5px 14px 5px 6px; }
.selector-hijos img { width: 26px; height: 26px; object-fit: cover; }
.filtros-asistencia-hijos > span { display: inline-block; }
.cabecera-hijo-reporte { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.cabecera-hijo-reporte img { width: 44px; height: 44px; object-fit: cover; }
.cabecera-hijo-reporte strong { display: block; font-size: 16px; color: #333; }
.cabecera-hijo-reporte small { display: block; color: #888; }
.fila-inasistencia .nota-item-estado { align-self: center; }
/* Estado de cuenta */
.resumen-cuenta { position: relative; padding-bottom: 24px; }
.resumen-cuenta .resumen-ciclo-principal strong { font-size: 28px; }
.barra-pagado { position: absolute; left: 22px; right: 22px; bottom: 12px; height: 6px; border-radius: 3px; background: #f3e3c3; overflow: hidden; }
.barra-pagado > div { height: 100%; background: #2e9d5b; }
.nota-vencido { margin: -8px 0 16px; padding: 8px 12px; border-radius: 6px; background: #fdecea; color: #c0392b; font-size: 13px; }
.numero-gris { background: #e9edf1 !important; color: #666 !important; }
.fila-cargo { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid #f1f3f5; }
.fila-cargo:last-child { border-bottom: 0; }
.fila-cargo-texto { flex: 1 1 auto; min-width: 0; }
.fila-cargo-texto strong { display: block; font-weight: 600; color: #333; }
.fila-cargo-texto small { display: block; color: #888; }
.fila-cargo-monto { flex: 0 0 110px; text-align: right; font-size: 15px; font-weight: 600; color: #333; }
@media (max-width: 480px) { .fila-cargo { flex-wrap: wrap; } .fila-cargo-texto { flex-basis: calc(100% - 70px); } .fila-cargo-monto { flex-basis: auto; margin-left: auto; } }
/* Boletas */
.tabla-boleta { width: 100%; border-collapse: collapse; }
.tabla-boleta th { padding: 6px 8px; font-size: 12px; font-weight: 600; color: #999; text-transform: uppercase; text-align: center; border-bottom: 1px solid #eef0f2; }
.tabla-boleta th:first-child, .tabla-boleta td:first-child { text-align: left; }
.tabla-boleta td { padding: 9px 8px; text-align: center; border-bottom: 1px solid #f5f6f7; color: #444; }
.tabla-boleta tr:last-child td { border-bottom: 0; }
.tabla-boleta td:first-child { color: #333; font-weight: 600; }
.tabla-boleta .nota-final { font-weight: 700; color: #3c8dbc; }
.tabla-boleta .sin-nota { color: #ccc; }
.resumen-ciclo-principal strong.text-danger { color: #c0392b; } .resumen-ciclo-principal strong.text-success { color: #2e9d5b; } .resumen-ciclo-principal strong.text-warning { color: #b9770e; }

/* ===== Inicio de la administración: indicadores del tablero (minimalista) ===== */
.fila-indicadores { margin-bottom: 4px; }
.indicador { display: block; min-height: 108px; margin-bottom: 16px; padding: 14px 18px; background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; color: #555; }
a.indicador:hover, a.indicador:focus { background: #f7f9fb; color: #555; text-decoration: none; }
.indicador-titulo { display: block; font-size: 12px; font-weight: 600; color: #888; }
.indicador-valor { display: block; margin: 4px 0 2px; font-size: 26px; font-weight: 600; color: #333; line-height: 1.2; }
.indicador small { display: block; font-size: 12px; color: #999; }
.indicador-neutro { background: #3c8dbc; }
.indicador-bien { background: #2e9d5b; }
.indicador-atencion { background: #f39c12; }
.indicador-mal { background: #d9534f; }
.niveles-tablero { padding: 8px 15px 12px; }
.nivel-tablero { margin-bottom: 10px; }
.nivel-tablero:last-child { margin-bottom: 0; }
.nivel-tablero-texto { display: flex; justify-content: space-between; font-size: 13px; color: #555; }
.nivel-tablero-texto b { color: #333; }
.nivel-tablero-texto small { color: #999; }
.nivel-tablero-barra { height: 6px; margin-top: 3px; border-radius: 3px; background: #eef0f2; overflow: hidden; }
.nivel-tablero-barra > div { height: 100%; background: #3c8dbc; border-radius: 3px; }
#dv_tablero .fila-indicadores { margin-top: 4px; }

/* ===== Asistencia (tomar asistencia por curso, minimalista) ===== */
.barra-asistencia { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-bottom: 14px; }
.barra-asistencia > select.form-control { width: auto; min-width: 160px; max-width: 100%; }
.barra-asistencia .barra-asistencia-curso { flex: 1 1 320px; }
.barra-asistencia-fecha input.form-control { width: 150px; }
.cabecera-lista-asistencia { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 8px 20px; margin-bottom: 10px; }
.cabecera-lista-curso { font-size: 17px; font-weight: 600; color: #333; margin-right: 6px; }
.cabecera-lista-fecha { margin: 4px 0 0; color: #666; }
.cabecera-lista-fecha b { color: #333; }
.chip-gris { display: inline-block; padding: 1px 8px; border-radius: 10px; background: #e9edf1; color: #666; font-size: 12px; }
.contadores-asistencia { display: flex; flex-wrap: wrap; gap: 4px 16px; color: #666; padding-top: 3px; }
.contadores-asistencia b { color: #333; margin-right: 3px; }
.nota-suave { margin: 0 0 10px; padding: 8px 12px; border-radius: 6px; background: #eef5fb; color: #31566f; font-size: 13px; }
.nota-suave.nota-bloqueo { background: #fdf3e1; color: #8a5a00; }
.acciones-lista-asistencia { margin: 4px 0 8px; font-size: 13px; }
.acciones-lista-asistencia a { font-weight: 600; }
.tabla-asistencia-min { width: 100%; border-collapse: collapse; }
.tabla-asistencia-min th { padding: 8px 8px; font-size: 12px; font-weight: 600; color: #999; text-transform: uppercase; border-bottom: 1px solid #eef0f2; }
.tabla-asistencia-min td { padding: 8px 8px; border-bottom: 1px solid #f3f4f6; vertical-align: middle; }
.tabla-asistencia-min tr:last-child td { border-bottom: 0; }
.tabla-asistencia-min .nombre-asistencia strong { display: block; font-weight: 600; color: #333; }
.tabla-asistencia-min .nombre-asistencia small { color: #999; }
.tabla-asistencia-min tr.fila-ausente td { background: #fff7f6; }
.tabla-asistencia-min tr.fila-permiso td { background: #f5f9fd; }
.tabla-asistencia-min .obs { border-color: #eef0f2; box-shadow: none; }
.marcas { display: inline-flex; padding: 3px; border-radius: 8px; background: #f1f3f5; }
.marca { padding: 4px 12px; border: 0; border-radius: 6px; background: transparent; color: #777; font-size: 13px; font-weight: 600; }
.marca:hover { color: #333; }
.marca[disabled] { cursor: default; }
.marca.marca-presente { background: #e6f4ea; color: #1e7b45; }
.marca.marca-ausente { background: #fdecea; color: #c0392b; }
.marca.marca-permiso { background: #e6f1fa; color: #2a6f9b; }
.pie-lista-asistencia { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px solid #eef0f2; }
.pie-lista-asistencia input { flex: 1 1 300px; }
.lista-clases-tomadas { max-height: 460px; overflow-y: auto; }
.lista-clases-tomadas small .punto { margin-right: 3px; }
@media (max-width: 480px) { .marca { padding: 4px 9px; } .barra-asistencia-fecha input.form-control { width: 140px; } }

/* ===== Actividades (catedráticos, minimalista) ===== */
.unidad-tareas { padding-top: 12px; }
.unidad-tareas-cabecera { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 6px 14px; }
.unidad-tareas-cabecera strong { font-size: 15px; color: #333; margin-right: 4px; }
.unidad-tareas .puntos-unidad { margin: 6px 0 4px; font-size: 13px; color: #555; }
.barra-puntos-unidad { display: flex; height: 6px; margin-top: 6px; border-radius: 3px; background: #eef0f2; overflow: hidden; }
.barra-puntos-unidad .barra-zona { background: #3c8dbc; }
.barra-puntos-unidad .barra-evaluacion { background: #2e9d5b; }
.fila-actividad { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; padding: 12px 0; border-top: 1px solid #f1f3f5; }
.unidad-tareas .puntos-unidad + .fila-actividad { margin-top: 8px; }
.fila-actividad-texto { flex: 1 1 280px; min-width: 0; }
.fila-actividad-texto .aviso-item-meta { margin: 0 0 1px; }
.fila-actividad-texto strong { display: block; font-weight: 600; color: #333; }
.fila-actividad-texto small { display: block; color: #888; }
.fila-actividad-cifras { display: flex; gap: 4px 16px; flex-wrap: wrap; font-size: 13px; color: #888; }
.fila-actividad-cifras b { color: #333; }
.fila-actividad-acciones { display: flex; align-items: center; gap: 6px; }
.accion-icono { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; color: #888; }
.accion-icono:hover, .accion-icono:focus { background: #f1f3f5; color: #333; }
.accion-icono.accion-eliminar:hover { color: #c0392b; }

/* ===== Cuadros de notas (minimalista) ===== */
#dv_final:empty { display: none; }
.cabecera-cuadro { margin-bottom: 10px; }
.cabecera-cuadro .selector-vista { margin-bottom: 6px; flex-wrap: wrap; }
.cabecera-cuadro p { margin: 0; font-size: 13px; }
.chip-cerrada { display: inline-block; padding: 1px 8px; border-radius: 10px; background: #e6f4ea; color: #1e7b45; font-size: 11px; font-weight: 600; }
.tabla-cuadro { margin-bottom: 8px; border-collapse: collapse; }
.tabla-cuadro > thead > tr > th { padding: 6px 8px; border-bottom: 1px solid #eef0f2 !important; border-top: 0 !important; font-size: 12px; font-weight: 600; color: #888; white-space: nowrap; vertical-align: bottom; }
.tabla-cuadro > tbody > tr > td { padding: 7px 8px; border-top: 1px solid #f3f4f6 !important; font-size: 13px; color: #444; white-space: nowrap; }
.tabla-cuadro > tbody > tr:hover > td { background: #f7f9fb; }
.tabla-cuadro th.curso { writing-mode: vertical-rl; transform: rotate(180deg); max-height: 160px; vertical-align: bottom; text-align: left; }
.tabla-cuadro td.nota { text-align: center; }
.tabla-cuadro .en-curso { color: #999; font-style: italic; }
.tabla-cuadro .reprobado { color: #c0392b; font-weight: 600; }
.tabla-cuadro .aprobado { color: #1e7b45; }
.tabla-cuadro .label { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; }
.tabla-cuadro .label-success { background: #e6f4ea; color: #1e7b45; }
.tabla-cuadro .label-danger { background: #fdecea; color: #c0392b; }
.tabla-cuadro .label-info { background: #e6f1fa; color: #2a6f9b; }
.tabla-cuadro .label-warning { background: #fdf3e1; color: #9a6400; }
.tabla-cuadro th a, .tabla-cuadro td a { color: #888; margin-left: 2px; }
.tabla-cuadro th a:hover, .tabla-cuadro td a:hover { color: #3c8dbc; }

/* ===== Comunicados (minimalista) ===== */
.buscador-suave { position: relative; }
.buscador-suave .fa { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: #aaa; }
.buscador-suave input.form-control { padding-left: 30px; width: 100%; }
.fila-comunicado { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 13px 18px; border-bottom: 1px solid #f1f3f5; }
.fila-comunicado:last-child { border-bottom: 0; }
.fila-comunicado-fecha { flex: 0 0 48px; padding-top: 0; }
.fila-comunicado-texto { flex: 1 1 300px; min-width: 0; }
.fila-comunicado-titulo { display: block; font-size: 15px; font-weight: 600; color: #333; }
.fila-comunicado-titulo:hover { color: #3c8dbc; text-decoration: none; }
.fila-comunicado .aviso-item-meta { margin-top: 2px; }

/* ===== Conducta (minimalista) ===== */
#dv_notas:empty { display: none; }
.fila-conducta-descripcion { display: block; margin-top: 1px; color: #555; font-size: 13px; overflow-wrap: anywhere; }
.chip-conducta { display: inline-block; margin: 1px 2px; padding: 1px 8px; border-radius: 10px; background: var(--f); color: var(--c); font-size: 11px; font-weight: 600; }
#frm_conducta .tabla-asistencia-min input.form-control { border-color: #eef0f2; box-shadow: none; }

/* ===== Listas de personas (catedráticos y similares) ===== */
.fila-persona { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding: 12px 18px; border-bottom: 1px solid #f1f3f5; }
.fila-persona:last-child { border-bottom: 0; }
.avatar-iniciales { flex: 0 0 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: #e6f1fa; color: #2a6f9b; font-weight: 700; font-size: 14px; }
.fila-persona-texto { flex: 1 1 300px; min-width: 0; }
.fila-persona-texto small { display: block; color: #888; margin-top: 1px; }
.icono-acceso { margin-left: 4px; color: #2e9d5b; font-size: 12px; }
.avatar-iniciales.avatar-personal { background: #efeefa; color: #605ca8; }
/* Estudiantes */
.barra-filtros-estudiantes { margin-bottom: 8px; }
.barra-filtros-estudiantes + .panel-asistencia { margin-top: 6px; }
.fila-persona .foto-fila { flex: 0 0 40px; width: 40px; height: 40px; object-fit: cover; border: 1px solid #eef0f2; }
.icono-salud { margin-left: 4px; color: #d9534f; font-size: 12px; }
.fila-estudiante-grado, .fila-estudiante-encargado { flex: 0 0 170px; font-size: 13px; color: #555; line-height: 1.35; }
.fila-estudiante-grado b { display: block; font-weight: 600; color: #333; }
.fila-estudiante-grado small, .fila-estudiante-encargado small { display: block; color: #999; }
.fila-estudiante-encargado span { display: block; }
.fila-actividad-cifras a.nota-item-estado:hover { text-decoration: none; filter: brightness(.96); }
.estado-graduado { background: #e6f1fa; color: #2a6f9b; }
.accion-con-numero { width: auto; padding: 0 8px; border-radius: 15px; gap: 4px; }
.accion-con-numero small { font-weight: 700; }

/* ===== Seguridad: usuarios, roles, respaldos y bitácora ===== */
.icono-cambiar { margin-left: 4px; color: #f39c12; font-size: 12px; }
.avatar-tipo-administracion { background: #e6f1fa; color: #2a6f9b; }
.avatar-tipo-estudiantes { background: #e6f4ea; color: #1e7b45; }
.avatar-tipo-catedraticos { background: #efeefa; color: #605ca8; }
.avatar-tipo-padres { background: #fdf3e1; color: #9a6400; }
.fila-rol-modulos { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 560px; }
.barra-asistencia input[type="date"].form-control { width: 150px; }
.fila-bitacora { display: flex; gap: 14px; padding: 9px 18px; border-bottom: 1px solid #f3f4f6; }
.fila-bitacora:last-child { border-bottom: 0; }
.fila-bitacora-fecha { flex: 0 0 120px; font-size: 12px; color: #999; padding-top: 2px; }
.fila-bitacora-texto { flex: 1 1 auto; min-width: 0; color: #444; overflow-wrap: anywhere; }
.fila-bitacora-texto small { display: block; margin-top: 2px; color: #999; }
.fila-bitacora-texto .chip-gris { margin-right: 4px; }
.barra-asistencia .buscador-suave.barra-asistencia-curso { flex: 1 1 220px; }
/* Tipo de rol como chip suave dentro de las listas */
.fila-actividad-cifras .tipo-rol { padding: 2px 9px; border-radius: 10px; font-size: 11px; font-weight: 600; background: #eef1f4 !important; color: #555 !important; }
.fila-actividad-cifras .tipo-administracion { background: #e6f1fa !important; color: #2a6f9b !important; }
.fila-actividad-cifras .tipo-estudiantes { background: #e6f4ea !important; color: #1e7b45 !important; }
.fila-actividad-cifras .tipo-catedraticos { background: #fdf3e1 !important; color: #9a6400 !important; }
.fila-actividad-cifras .tipo-padres { background: #f3ecf8 !important; color: #7b3fa0 !important; }

/* ===== Configuración del colegio (minimalista) ===== */
.selector-configuracion { flex-wrap: wrap; }
.configuracion-colegio .tab-content > .tab-pane { padding: 18px 20px; margin-bottom: 20px; background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; }
.configuracion-colegio .tab-pane > form > p.text-muted:first-child, .configuracion-colegio .tab-pane > .row > div > p.text-muted { font-size: 13px; }
.configuracion-colegio label { font-weight: 600; color: #555; font-size: 13px; }
.caja-logo { margin-bottom: 10px; padding: 12px; border: 1px dashed #dfe3e8; border-radius: 8px; background: #fafbfc; }
.caja-favicon { display: flex; align-items: center; gap: 12px; margin-top: 18px; padding: 10px 12px; border: 1px dashed #dfe3e8; border-radius: 8px; background: #fafbfc; text-align: left; }
.caja-favicon img { flex: 0 0 auto; width: 40px; height: 40px; object-fit: contain; }
.caja-favicon-texto { display: flex; flex-direction: column; line-height: 1.3; font-size: 13px; }
.caja-favicon-texto .text-muted { font-size: 12px; }
.configuracion-colegio .lista-sedes { margin: 4px -20px -18px; border-top: 1px solid #f1f3f5; }

/* ===== Módulo Estudiantes: padres, inscripciones, útiles y promoción ===== */
.fila-padre-hijos { color: #666 !important; }
.fila-padre-hijos .fa { color: #2e9d5b; margin-right: 2px; }
.motivo-baja { color: #c0392b !important; }
.fila-utiles-grado { flex: 1 1 200px; }
.fila-utiles-lista { flex: 1 1 280px; display: flex; flex-wrap: wrap; align-items: center; gap: 2px 8px; font-size: 13px; }
.fila-utiles-lista .cifra-hijo-titulo { flex-basis: 100%; }
.fila-utiles-lista .accion-icono { width: 26px; height: 26px; }
.enlace-crear-lista { color: #888; font-size: 12px; }
.enlace-crear-lista:hover { color: #3c8dbc; }
.enlaces-promocion { margin: -4px 0 12px; font-size: 13px; color: #aaa; }
#tbl_promocion .fila-inscrito td { background: #fafbfc; color: #999; }
#tbl_promocion td .nota-item-estado { display: inline-block; }

/* Facturación electrónica: receptor en Cobros y estado en las listas de recibos */
.factura-cobro { margin-top: 10px; padding: 8px 10px; border: 1px dashed #c9d3dd; border-radius: 6px; background: #fafcfe; }
.factura-cobro label { font-size: 12px; margin-bottom: 4px; }
.factura-cobro #cb_fel_nombre { margin-top: 6px; }
.factura-cobro small { display: block; margin-top: 4px; font-size: 11px; }
.chip-fel { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; white-space: nowrap; }
.chip-fel-ok { background: #e3f4ea; color: #1e7b45; }
.chip-fel-pendiente { background: #fff3d6; color: #9a6700; cursor: help; }
.chip-fel-anulada { background: #f1f1f1; color: #888; text-decoration: line-through; }

/* Rediseño Estructura académica (catálogos, secciones, períodos y sus ventanas) */
.avatar-catalogo { background: #eef1f4; color: #5b6b7b; font-size: 15px; }
.avatar-seccion { background: #e6f4ea; color: #1e7b45; }
.avatar-periodo { background: #fdf3e1; color: #9a6400; }
.subtitulo-modal { margin: 0 0 12px; }
.subtitulo-modal .nota-item-estado { margin-left: 6px; }
.barra-modal { margin-bottom: 10px; }
.input-horas-min { width: 110px !important; flex: 0 0 110px; }
.check-pensum { display: block; font-weight: normal; margin: 0 0 12px; }
.check-pensum input { margin-right: 6px; }
.tabla-asistencia-min .input-sm { height: 30px; }
.acciones-min { white-space: nowrap; }
.titulo-modal-min { margin: 4px 0 2px; font-weight: 600; }
.form-horario-min { margin-top: 14px; padding-bottom: 6px; }
.encabezado-grupo-min { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; padding: 4px 18px 10px; border-bottom: 1px solid #f1f3f5; }
.encabezado-grupo-min h4 { margin: 6px 0 0; font-size: 15px; font-weight: 600; color: #333; }

/* Rediseño Control de personal y Reportes */
.campo-fecha.form-control { width: 150px; }
.selector-reportes { flex-wrap: wrap; margin-bottom: 0; }
.selector-control-personal { flex-wrap: wrap; }
.tabla-control td, .tabla-informe td { font-size: 13px; }
.tabla-control .nombre-asistencia a:hover strong { color: #3c8dbc; }
.tabla-control td .nota-item-estado, .tabla-informe td .nota-item-estado { display: inline-block; }
.tabla-control select.estado { min-width: 140px; }
.nota-tabla { margin: 10px 0 0; font-size: 12px; }
.pie-asistencia-personal { justify-content: flex-end; }
.expediente-encabezado { padding: 0 0 12px; margin-bottom: 4px; border-bottom: 1px solid #eef0f2 !important; }
.lista-expediente { margin: 0 -18px; }
.lista-expediente .fila-comunicado-fecha { text-align: center; line-height: 1.2; }
.lista-expediente .fila-comunicado-fecha small { font-size: 11px; color: #bbb; }
.titulo-seccion-expediente { margin: 14px 0 6px; padding-top: 12px; border-top: 1px solid #eef0f2; font-size: 12px; font-weight: 600; color: #999; text-transform: uppercase; }
.encabezado-informe { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; }
.encabezado-informe strong { display: block; font-size: 15px; color: #333; }
.encabezado-informe small { display: block; color: #999; }
.panel-asistencia .indicador { min-height: 0; }
.tabla-desercion { margin-bottom: 16px; }
.fila-total-informe td { font-weight: 700; color: #333; border-top: 1px solid #e3e6ea; }
@media (max-width: 767px) { .campo-fecha.form-control { width: 140px; } }
.tabla-informe td:first-child, .tabla-informe td.text-right { white-space: nowrap; }

/* Rediseño Finanzas (Cobros, Cajas, Costos, Reporte de pagos) */
.tarjetas-caja { margin-bottom: 6px; }
.tarjeta-caja { background: #fff; border: 1px solid #e3e6ea; border-radius: 8px; padding: 10px 14px; }
.tarjeta-caja small { font-size: 11px; font-weight: 600; color: #999; letter-spacing: .02em; }
.tarjeta-caja b { display: block; margin-top: 2px; font-size: 18px; font-weight: 600; color: #333; }
.tarjeta-caja.tarjeta-total { background: #f2f8fc; border-color: #d4e7f4; }
.tarjeta-caja.tarjeta-efectivo { background: #f1f9f3; border-color: #d3ecd9; }
.tarjeta-caja.tarjeta-vencida { background: #fdf4f3; border-color: #f3d3cf; }
.encabezado-panel-min { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 10px; margin-bottom: 10px; }
.encabezado-panel-min strong { font-weight: 600; color: #333; }
.panel-asistencia .tabla-asistencia-min tr.fila-nivel td { background: #f7f8fa !important; color: #888; font-size: 11px; font-weight: 600; text-transform: uppercase; padding: 5px 8px; }
.tabla-pendientes tr.fila-cargo { display: table-row; }
.tabla-pendientes tr.fila-cargo td { padding: 9px 8px; }
.tabla-pendientes tr.fila-cargo.seleccionada td { background: #eef8f1 !important; }
.tabla-asistencia-min .nota-item-estado { display: inline-block; }
.buscador-cobro .select2-container .select2-selection--single { height: 36px; border-radius: 18px; border-color: #dfe3e8; }
.buscador-cobro .select2-container .select2-selection__rendered { line-height: 34px; padding-left: 16px; }
.buscador-cobro .select2-container .select2-selection__arrow { height: 34px; right: 8px; }
.cobro-estudiante { padding: 4px 0; }
.cobro-estudiante .fila-persona { border-bottom: 0; }
.saldos-cobro { display: flex; gap: 10px; margin-left: auto; }
.saldos-cobro .tarjeta-caja { min-width: 150px; }
.panel-cobro .total-cobro { background: #f7f8fa; border-radius: 8px; padding: 10px; }
.panel-cobro .total-cobro b { font-weight: 600; }
.accion-facturar { color: #c98a00; }
.avatar-caja { background: #f1f3f5; color: #777; }
.abrir-caja { max-width: 460px; margin: 0 auto 20px; }
.abrir-caja-icono { font-size: 40px; color: #c9cfd6; }
.titulo-turno { font-size: 16px; font-weight: 600; color: #333; margin-right: 6px; }
.resumen-turno .barra-asistencia { align-items: flex-start; }
.nota-suave.nota-bien { background: #eaf6ee; color: #1e6b3d; }
@media (max-width: 767px) { .saldos-cobro { margin-left: 0; width: 100%; } .saldos-cobro .tarjeta-caja { flex: 1 1 0; min-width: 0; } }
