:root {
    --marino: #1e3a66;
    --azul: #2457a7;
    --azul-suave: #eaf1fb;
    --fondo: #f5f8fc;
    --superficie: #ffffff;
    --texto: #243247;
    --texto-secundario: #506079;
    --borde: #cbd7e7;
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    background: var(--fondo);
    color: var(--texto);
    font-family: Arial, sans-serif;
    line-height: 1.6;
}

.container {
    width: min(100% - 40px, 1000px);
    margin-inline: auto;
}

.header {
    padding: 20px 0;
    background: var(--marino);
    color: #fff;
}

.header p {
    margin: 0;
}

.brand {
    font-size: 28px;
    font-weight: 700;
    letter-spacing: 1px;
}

.intro {
    padding: 48px 0 32px;
}

.label {
    color: var(--marino);
    font-weight: 700;
}

h1 {
    max-width: 800px;
    font-size: clamp(28px, 4vw, 42px);
    line-height: 1.2;
}

h2 {
    font-size: 22px;
}

.state {
    color: var(--texto-secundario);
    font-size: 14px;
}

.categories {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 16px;
    padding: 0;
    list-style: none;
}

.categories li {
    padding: 20px;
    background: #fff;
    border: 1px solid var(--borde);
    border-radius: 8px;
    font-weight: 700;
}

.footer {
    padding: 30px 0;
    color: var(--texto-secundario);
    font-size: 13px;
}
.tarjeta { background:#fff; border:1px solid var(--borde); border-radius:10px; padding:24px; margin-bottom:24px; }
.acceso { max-width:460px; display:grid; gap:12px; }
label { font-weight:700; }
input, button { font:inherit; padding:12px; border-radius:6px; }
input { width:100%; border:1px solid #8b929e; }
button { border:0; background:var(--azul); color:white; cursor:pointer; }
button:hover { background:var(--marino); }
input:focus-visible, button:focus-visible { outline:3px solid var(--azul); outline-offset:3px; }
.error { color:#8b1223; margin:0 0 12px; }
.navegacion { display:flex; flex-wrap:wrap; gap:12px 24px; padding-top:24px; }
a { color:var(--azul); text-underline-offset:3px; }
.navegacion [aria-current="page"] { font-weight:700; }
.catalogo-grid { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(300px,1fr); gap:24px; align-items:start; }
.formulario { display:grid; gap:12px; }
textarea, select { max-width:100%; width:100%; font:inherit; padding:12px; border:1px solid #8b929e; border-radius:6px; }
.casilla { display:flex; gap:10px; align-items:center; }.casilla input { width:auto; }
.ayuda { font-size:14px; color:var(--texto-secundario); margin:0 0 8px; }.aviso { background:#eaf4ec; padding:16px; border-radius:6px; }
.tabla-scroll { overflow-x:auto; }table { width:100%; border-collapse:collapse; }th,td { padding:12px 8px; text-align:left; border-bottom:1px solid var(--borde); overflow-wrap:anywhere; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@media(max-width:800px) { .catalogo-grid { grid-template-columns:1fr; } }

/* Estado personal de cada convocatoria: texto e icono además del color. */
.convocatoria { padding:20px; margin:20px 0; border:1px solid var(--borde); border-radius:10px; overflow-wrap:anywhere; }
.convocatoria > h3 { margin-top:0; }
.convocatoria--solicitada { border-left:4px solid #35679b; background:#f8fbff; }
.convocatoria--aceptada { border-left:4px solid #287345; background:#f7fcf8; }
.convocatoria--rechazada { border-left:4px solid #a13b46; background:#fffafb; }
.convocatoria-confirmacion { border-top:1px solid var(--borde); padding-top:16px; margin-top:16px; }
.inscripcion-estado { display:inline-flex; align-items:center; gap:9px; min-height:44px; padding:10px 16px; margin:0; border:1px solid; border-radius:8px; font-weight:700; line-height:1.4; }
.inscripcion-estado--solicitada { color:#214f7b; background:#e8f1fc; border-color:#b2cce7; }
.inscripcion-estado--aceptada { color:#205e37; background:#e7f5eb; border-color:#abd2b7; }
.inscripcion-estado--rechazada { color:#8b2937; background:#fcecef; border-color:#e5bac2; }
.inscripcion-estado--lleno { color:#485363; background:#eef0f3; border-color:#cbd1d9; }
.convocatoria-ayuda { margin:10px 0 8px; color:#485363; font-size:15px; }
.convocatoria-confirmacion a { display:inline-block; padding:6px 0; }
@media(max-width:600px) { .convocatoria { padding:16px; }.inscripcion-estado { max-width:100%; } }

/* Acceso institucional: estilos limitados a esta pantalla. */
.login-page {
    background-color:#102748;
    background-image:linear-gradient(90deg,rgba(10,28,53,.88),rgba(10,28,53,.68)),url('/assets/img/campus-cuautla-login.jpg');
    background-size:cover;
    background-position:center;
    color:var(--texto); line-height:1.5;
}
.login-width { width:min(1120px, calc(100% - 64px)); margin-inline:auto; }
.login-header { background:#fff; border-top:5px solid var(--azul); border-bottom:1px solid var(--borde); }
.login-identity { display:flex; align-items:center; gap:24px; min-height:88px; }
.login-brand { color:var(--azul); font-size:28px; font-weight:800; letter-spacing:1px; text-decoration:none; }
.login-institution { border-left:1px solid #d7dce3; padding-left:24px; color:var(--texto-secundario); font-size:14px; }
.login-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,440px); align-items:center; gap:80px; padding-block:72px; min-height:calc(100svh - 180px); }
.login-intro { color:#fff; }
.login-intro h1 { margin:0 0 24px; font-size:clamp(34px,4vw,52px); line-height:1.12; letter-spacing:-.03em; text-wrap:balance; }
.login-description { max-width:440px; margin:0 0 16px; font-size:20px; line-height:1.5; }
.login-context { max-width:440px; color:#e7effa; margin:0; }
.login-process { margin-top:36px; padding-top:20px; border-top:1px solid #ffffff55; }
.login-process p { margin:0; color:#e7effa; font-size:14px; }
.login-process .login-process-title { color:#fff; font-weight:700; margin-bottom:8px; }
.login-process span { margin-inline:8px; color:#fff; }
.login-card { background:#fff; padding:36px; border-radius:16px; box-shadow:0 16px 48px #07132633; }
.login-card h2 { margin:0 0 8px; font-size:28px; line-height:1.2; letter-spacing:-.5px; }
.login-card-description { margin:0 0 28px; color:var(--texto-secundario); }
.login-form { display:grid; gap:22px; }
.login-field { display:grid; gap:8px; }
.login-field label { font-size:14px; }
.login-field input { min-width:0; min-height:48px; background:#fff; color:var(--texto); border:1px solid #929caa; border-radius:8px; }
.login-help { margin:0; color:var(--texto-secundario); font-size:13px; line-height:1.5; }
.login-submit { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:48px; padding:12px 18px; border-radius:8px; font-weight:700; }
.login-register { border-top:1px solid var(--borde); padding-top:24px; margin-top:28px; font-size:14px; }
.login-register p { color:var(--texto-secundario); margin:0 0 8px; }
.login-register a { display:inline-block; font-weight:700; padding-block:4px; }
.login-error { margin:0; padding:14px; color:#8b1223; background:#fff2f3; border:1px solid #e2b8bf; border-radius:8px; font-size:14px; overflow-wrap:anywhere; }
.login-footer { display:flex; justify-content:space-between; gap:16px; border-top:1px solid #ffffff55; padding-block:22px; color:#e7effa; font-size:12px; }
.login-footer p { margin:0; }
.login-skip { position:absolute; top:-100px; left:16px; z-index:1; padding:12px 16px; background:#fff; border:2px solid var(--azul); }
.login-skip:focus { top:12px; }
.login-page :is(a,input,button):focus-visible { outline:3px solid var(--azul); outline-offset:4px; }
.login-page .login-skip:focus-visible { outline-color:#fff; }
@media(max-width:900px) { .login-layout { gap:36px; grid-template-columns:minmax(0,1fr) minmax(0,400px); }.login-card { padding:28px; } }
@media(max-width:700px) {
    .login-page { background-image:linear-gradient(rgba(10,28,53,.78),rgba(10,28,53,.88)),url('/assets/img/campus-cuautla-login.jpg'); background-position:42% top; }
    .login-width { width:calc(100% - 40px); }
    .login-identity { min-height:80px; gap:16px; }
    .login-institution { padding-left:16px; font-size:12px; }
    .login-layout { grid-template-columns:1fr; gap:28px; padding-block:32px; min-height:auto; }
    .login-intro h1 { font-size:34px; margin-bottom:16px; }
    .login-description { font-size:17px; margin-bottom:12px; }
    .login-context { font-size:14px; }
    .login-process { display:none; }
    .login-card { padding:24px; }
    .login-footer { flex-direction:column; gap:6px; }
}

/* Espacio de gestión: identidad institucional y tareas visibles. */
.gestion-main { padding-bottom:40px; }
.jefatura-nav { display:flex; flex-wrap:wrap; gap:8px; padding:20px 0; border-bottom:1px solid var(--borde); }
.jefatura-nav a { display:flex; align-items:center; min-height:44px; padding:10px 14px; border-radius:6px; text-decoration:none; font-size:14px; }
.jefatura-nav a[aria-current="page"] { background:var(--azul-suave); color:var(--marino); font-weight:700; }
.jefatura-nav a:hover { text-decoration:underline; }
.pendientes-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.pendiente-card { display:flex; flex-direction:column; padding:24px; background:#fff; border:1px solid var(--borde); border-top:3px solid var(--azul); border-radius:8px; text-decoration:none; color:var(--texto); }
.pendiente-card strong { font-size:36px; line-height:1.2; color:var(--azul); }
.pendiente-card span { margin-top:12px; }
.pendiente-card:hover span { text-decoration:underline; }
.accion-principal { display:inline-flex; align-items:center; min-height:48px; padding:12px 20px; background:var(--azul); color:#fff; border-radius:6px; font-weight:700; text-decoration:none; }
.acciones-linea { display:flex; flex-wrap:wrap; gap:12px 24px; }
.acciones-linea a,.gestion-main .tabla-scroll a { display:inline-block; min-height:44px; padding-block:10px; }
.filtros-gestion { display:flex; flex-wrap:wrap; align-items:end; gap:16px; }
.filtros-gestion label { display:grid; gap:8px; flex:1 1 180px; font-size:14px; }
.filtros-acciones { display:flex; align-items:center; flex-wrap:wrap; gap:16px; }
.filtros-acciones a { padding-block:10px; }
.filtros-gestion .ayuda { flex-basis:100%; margin:0; }
.decision-previa { margin-top:12px; border:1px solid #c5cbd4; border-radius:6px; }
.decision-previa summary { padding:12px 16px; min-height:48px; cursor:pointer; color:var(--azul); font-weight:700; }
.decision-previa[open] summary { border-bottom:1px solid var(--borde); }
.decision-resumen { padding:16px; background:#f7f8fa; }
.decision-resumen h3 { margin-top:0; }
.gestion-main :is(a,button,input,select,textarea,summary):focus-visible { outline:3px solid var(--azul); outline-offset:3px; }
@media(max-width:700px) { .pendientes-grid { grid-template-columns:1fr; }.pendiente-card { flex-direction:row; align-items:center; gap:20px; padding:18px; }.pendiente-card span { margin:0; }.jefatura-nav a { flex:1 1 140px; }.filtros-gestion { padding:18px; } }

/* Panel estudiantil: categorías, solicitudes y siguiente paso. */
.alumno-main { padding-bottom:40px; }
.alumno-nav { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:18px 0; border-bottom:1px solid var(--borde); }
.alumno-nav a { display:inline-flex; align-items:center; min-height:44px; padding:10px 12px; text-decoration:none; border-radius:6px; font-size:14px; }
.alumno-nav a[aria-current] { background:var(--azul-suave); color:var(--marino); font-weight:700; }
.alumno-nav form { margin-left:auto; }
.alumno-nav button { font-size:14px; }
.alumno-resumen { font-size:20px; }.alumno-resumen strong { font-size:32px; color:var(--azul); }
.alumno-categorias { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; padding:0; list-style:none; }
.alumno-categorias li { display:flex; flex-direction:column; gap:10px; padding:18px; border:1px solid var(--borde); border-radius:8px; background:var(--azul-suave); }
.alumno-filtros { display:flex; flex-wrap:wrap; align-items:end; gap:16px; padding-block:12px; }
.alumno-filtros label { display:grid; gap:8px; flex:1 1 180px; font-size:14px; }
.alumno-filtros a { display:inline-block; padding-block:10px; min-height:44px; }
.alumno-inscripcion { border-top:1px solid var(--borde); padding-block:20px; overflow-wrap:anywhere; }
.alumno-inscripcion a,.alumno-avisos a,#constancias a { display:inline-block; min-height:44px; padding-block:10px; }
.alumno-avisos { padding-left:20px; }.alumno-avisos li { padding-block:12px; }.alumno-avisos p { margin-block:8px; }
.alumno-page :is(a,input,select,button,summary):focus-visible { outline:3px solid var(--azul); outline-offset:3px; }
.alumno-main :is(section,article) { scroll-margin-top:20px; }
@media(max-width:600px) { .alumno-main .tarjeta { padding:18px; }.alumno-categorias { grid-template-columns:1fr; }.alumno-nav a { flex:1 1 130px; }.alumno-nav form { margin-left:0; width:100%; }.alumno-filtros { flex-direction:column; align-items:stretch; }.alumno-filtros label { flex:auto; } }

/* Entrada estudiantil de /panel: espacios y jerarquía propios. */
.estudiante-bienvenida { padding-block:32px; }
.estudiante-bienvenida h1 { margin:12px 0 20px; font-size:clamp(28px,3vw,36px); }
.estudiante-bienvenida p { margin:12px 0; }
.estudiante-saludo { font-size:18px; overflow-wrap:anywhere; }
.estudiante-accesos { padding:32px; }
.estudiante-accesos h2 { margin:0 0 16px; }
.estudiante-descripcion { margin:0; color:var(--texto-secundario); }
.estudiante-accion { margin:24px 0 32px; }
.estudiante-atajos { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; padding-top:24px; border-top:1px solid var(--borde); }
.estudiante-atajos a { display:flex; align-items:center; min-height:52px; padding:14px 18px; background:var(--azul-suave); border:1px solid var(--borde); border-radius:6px; font-weight:700; text-decoration:none; }
.estudiante-atajos a:hover { text-decoration:underline; border-color:var(--azul); }
@media(max-width:600px) { .estudiante-accesos { padding:24px; }.estudiante-atajos { grid-template-columns:1fr; }.estudiante-bienvenida { padding-block:24px; } }

/* Administración: navegación común y tareas diferenciadas. */
.admin-nav { display:flex; flex-wrap:wrap; gap:8px; padding:18px 0; border-bottom:1px solid var(--borde); }
.admin-nav a,.admin-enlaces a { display:inline-flex; align-items:center; min-height:44px; padding:10px 14px; text-decoration:none; border-radius:6px; }
.admin-nav a[aria-current] { background:var(--azul-suave); color:var(--marino); font-weight:700; }
.admin-nav a:hover,.admin-enlaces a:hover { text-decoration:underline; }
.admin-tareas { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.admin-enlaces { display:grid; gap:12px; }.admin-enlaces a { border:1px solid var(--borde); }
.revision-cuenta { width:min(600px,calc(100% - 40px)); max-height:85svh; overflow:auto; border:1px solid #c5cbd4; border-radius:10px; padding:28px; color:var(--texto); }
.revision-cuenta::backdrop { background:#22293680; }.revision-cuenta button { margin:8px 12px 0 0; }.revision-cuenta li { padding-block:6px; overflow-wrap:anywhere; }
.revision-cuenta :focus-visible { outline:3px solid var(--azul); outline-offset:3px; }
@media(max-width:700px) { .admin-tareas { grid-template-columns:1fr; }.admin-nav a { flex:1 1 130px; } }

/* Superficies y estados de interacción de la identidad azul. */
.accion-principal:hover { background:var(--marino); }
:is(a,input,select,textarea,button,summary):focus-visible { outline:3px solid var(--azul); outline-offset:3px; }
::selection { background:#c6dcfa; color:var(--marino); }
input,textarea { caret-color:var(--azul); }

/* Avisos personales: divulgación nativa, sin dependencia de JavaScript. */
.header:has(.notificaciones) .container { display:flex; flex-wrap:wrap; align-items:center; gap:8px 20px; }
.header:has(.notificaciones) .container>p { margin:0; }
.notificaciones { position:relative; margin-left:auto; color:var(--texto); }
.notificaciones summary { display:flex; align-items:center; gap:8px; min-height:44px; padding:8px 12px; border:1px solid #ffffff80; border-radius:6px; color:#fff; cursor:pointer; list-style:none; }
.notificaciones summary::-webkit-details-marker { display:none; }
.notificaciones summary:hover,.notificaciones[open] summary { background:var(--azul); }
.notificaciones summary:focus-visible { outline:3px solid #fff; outline-offset:3px; }
.notificaciones-contador { padding:0 7px; background:#fff; color:var(--marino); border-radius:12px; font-weight:700; font-variant-numeric:tabular-nums; }
.notificaciones-contenido { position:absolute; top:calc(100% + 12px); right:0; z-index:5; width:min(420px,calc(100vw - 40px)); max-height:70svh; overflow-y:auto; padding:24px; background:#fff; border-radius:12px; box-shadow:0 12px 36px #10274833; }
.notificaciones-contenido h2 { margin:0 0 8px; font-size:20px; }
.notificaciones-contenido>p { margin:8px 0 16px; }
.notificaciones-contenido ul { list-style:none; padding:0; margin:0; }
.notificacion-item { padding:16px 0; border-bottom:1px solid var(--borde); overflow-wrap:anywhere; }
.notificacion-item p { margin:8px 0; }
.notificacion-item--pendiente>strong { color:var(--azul); }
.notificacion-item .ayuda { color:var(--texto-secundario); font-size:13px; }
.notificacion-item a,.notificaciones-todos { display:inline-flex; align-items:center; min-height:44px; padding-block:8px; }
.notificacion-item form { margin:4px 0 0; }
.notificacion-item button { min-height:44px; padding:8px 12px; font-size:14px; }
.notificaciones-todos { margin-top:12px; font-weight:700; }
@media(max-width:600px) { .notificaciones { width:100%; margin-left:0; }.notificaciones summary { width:fit-content; }.notificaciones-contenido { left:0; right:auto; padding:20px; } }

.acceso-estudiante { max-width:760px; padding-block:32px; }
.correo-generado { display:block; padding:12px 16px; background:var(--azul-suave); color:var(--marino); border-radius:6px; overflow-wrap:anywhere; }
.confirmar-correo { display:flex!important; align-items:flex-start; gap:12px; padding-block:12px; }
.confirmar-correo input { width:20px; min-height:20px; margin-top:4px; }

/* Evaluación y mensajes: controles explícitos dentro de la inscripción autorizada. */
.retroalimentacion-form { display:grid; gap:12px; }
.retroalimentacion-form label { display:grid; gap:8px; font-weight:700; }
.retroalimentacion-form textarea { width:100%; min-height:112px; padding:12px; resize:vertical; font:inherit; color:var(--texto); background:#fff; border:1px solid #929caa; border-radius:6px; }
.retroalimentacion-form select { width:100%; min-height:44px; }
.retroalimentacion-form .ayuda { margin:0; font-weight:400; }
.retroalimentacion-form button { min-height:44px; justify-self:start; }
.retroalimentacion-historial { padding-block:16px; border-top:1px solid var(--borde); }
.retroalimentacion-historial h3 { margin:0 0 8px; }
.retroalimentacion-historial li { padding-block:12px; overflow-wrap:anywhere; }
.retroalimentacion-historial p { margin-block:8px; }
.retroalimentacion-form textarea,.retroalimentacion-form select { font-weight:400; }

#expediente-actual { scroll-margin-top:24px; }

.estado-envio-documentos:empty { display:none; }
.estado-envio-documentos { padding:16px; background:var(--azul-suave); color:var(--marino); border-radius:8px; }
form[data-envio-documento] button:disabled { opacity:.7; cursor:wait; }

.expediente-volver { display:flex; align-items:center; flex-wrap:wrap; gap:12px 24px; margin:20px 0; }
.expediente-volver a { display:inline-flex; align-items:center; min-height:44px; padding:10px 0; }
.expediente-volver span { color:var(--texto-secundario); font-size:14px; }
.expediente-datos { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 32px; padding:24px 0; margin:24px 0; border-block:1px solid var(--borde); }
.expediente-datos dt { color:var(--texto-secundario); font-size:14px; margin-bottom:6px; }
.expediente-datos dd { margin:0; font-weight:700; overflow-wrap:anywhere; }
@media(max-width:600px) { .expediente-datos { grid-template-columns:1fr; gap:16px; } }

.creditos-lista { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin:24px 0; padding:0; list-style:none; }
.credito-resumen { display:flex; flex-direction:column; padding:24px; border:1px solid var(--borde); border-radius:14px; background:linear-gradient(135deg,var(--superficie) 35%,var(--azul-suave)); overflow-wrap:anywhere; }
.credito-resumen-cabecera { display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.credito-resumen h2 { font-size:20px; line-height:1.35; margin:0; }
.credito-resumen-estado { display:inline-block; padding:6px 10px; border:1px solid var(--borde); border-radius:6px; color:var(--marino); font-size:13px; background:var(--superficie); }
.credito-resumen-control { color:var(--texto-secundario); font-size:14px; margin:12px 0 0; }
.credito-resumen-datos { display:grid; gap:16px; margin:24px 0; }
.credito-resumen-datos dt { color:var(--texto-secundario); font-size:14px; margin-bottom:4px; }
.credito-resumen-datos dd { margin:0; font-weight:600; }
.credito-resumen-accion { display:inline-flex; align-items:center; min-height:44px; align-self:flex-start; margin-top:auto; font-weight:700; padding:10px 0; }
.creditos-paginacion { display:flex; flex-wrap:wrap; align-items:center; gap:16px; padding:20px 0; }
.creditos-paginacion a { display:inline-flex; align-items:center; min-height:44px; padding:10px 12px; border:1px solid var(--borde); border-radius:6px; }
@media(max-width:700px) { .creditos-lista { grid-template-columns:1fr; gap:20px; }.credito-resumen { padding:20px; } }

.firma-distribucion { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:24px; align-items:start; }
.firma-distribucion .tarjeta { margin:0; min-width:0; }
.firma-imagen { display:flex; align-items:center; justify-content:center; min-height:160px; margin:24px 0; padding:20px; background:var(--fondo); border:1px solid var(--borde); border-radius:8px; }
.firma-imagen img { max-width:100%; max-height:160px; object-fit:contain; }
.firma-formulario input { font-weight:400; }
.firma-formulario .ayuda { margin:0 0 12px; }
.firma-retirar { margin:24px 0; }
.firma-retirar-contenido { padding:20px; }
@media(max-width:800px) { .firma-distribucion { grid-template-columns:1fr; } }


.alumno-descargar-constancia {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:44px;
    max-width:100%;
    padding:12px 18px;
    border-radius:6px;
    background:var(--azul);
    color:#fff;
    text-align:center;
    text-decoration:none;
    overflow-wrap:anywhere;
}
.alumno-descargar-constancia:hover { background:var(--marino); color:#fff; }


.escolares-error { margin:0; }
#escolares-control[aria-invalid="true"] { border-color:#a3182c; }
#escolares-consultar:disabled { opacity:.7; cursor:wait; }
#escolares-estado:empty { display:none; }
.escolares-resultados { width:100%; table-layout:fixed; border-collapse:collapse; font-size:14px; }
.escolares-resultados caption { text-align:left; font-weight:700; padding:16px 0; }
.escolares-resultados :is(th,td) { text-align:left; vertical-align:top; padding:12px 8px; overflow-wrap:anywhere; }
.escolares-resultados th { background:var(--azul-suave); color:var(--marino); }
.escolares-resultados td { border-bottom:1px solid var(--borde); }
.escolares-resultados :is(th,td):first-child { width:21%; }
.escolares-resultados td p { font-size:12px; margin:8px 0 0; }
@media(max-width:760px) {
    .escolares-resultados { display:block; table-layout:auto; font-size:16px; }
    .escolares-resultados caption { display:block; }
    .escolares-resultados thead { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
    .escolares-resultados tbody { display:grid; gap:20px; }
    .escolares-resultados tr { display:grid; gap:12px; padding:16px; border:1px solid var(--borde); border-radius:12px; }
    .escolares-resultados td { display:block; width:auto; padding:0; border:0; }
    .escolares-resultados td:first-child { width:auto; }
    .escolares-resultados td::before { content:attr(data-label); display:block; color:var(--texto-secundario); font-size:14px; margin-bottom:4px; }
}

/* Búsqueda departamental: ayuda cercana y controles alineados sin desbordamiento. */
.buscador-departamental { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; }
.buscador-departamental label { min-width:0; }
.buscador-campo { display:grid; gap:8px; min-width:0; }
.buscador-departamental :is(input,select) { min-width:0; min-height:44px; }
.buscador-departamental > .ayuda { grid-column:1 / -1; }
.buscador-departamental label .ayuda { font-weight:400; line-height:1.5; }
.buscador-departamental .filtros-acciones { align-self:end; }
@media(max-width:1000px) { .buscador-departamental { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px) { .buscador-departamental { grid-template-columns:minmax(0,1fr); } }

/* Selección de solicitudes: revisión explícita y casillas accesibles en cada ficha. */
.lote-seleccion h2 { margin-top:0; }
.lote-seleccion .casilla,.solicitud-seleccion { min-height:44px; padding-block:10px; align-items:center; }
.lote-seleccion [hidden] { display:none; }
.solicitud-seleccion { font-weight:700; color:var(--marino); }
.casilla:has([data-lote-solicitud]:checked) { background:var(--azul-suave); }
.lote-alumnos { padding-left:24px; }
.lote-alumnos li { padding-block:12px; overflow-wrap:anywhere; }
.lote-alumnos span { display:block; }
.lote-confirmacion { display:flex; flex-wrap:wrap; gap:16px; margin-block:20px; }
button.lote-cancelar { color:var(--azul); background:var(--superficie); border:1px solid var(--azul); }
button.lote-cancelar:hover { color:var(--marino); background:var(--azul-suave); }
@media(max-width:600px) { .lote-confirmacion button { width:100%; } }

.lote-seleccion-final { display:flex; flex-wrap:wrap; align-items:center; gap:16px; }
.lote-seleccion-final .ayuda { flex-basis:100%; }
#seleccion-solicitudes { scroll-margin-top:24px; }

/* Configuración de formatos: mismos controles y foco que los formularios del sistema. */
.configurador-medidas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1rem 0}
.configurador-bloque{margin-block:.75rem}
.configurador-bloque summary{padding:.75rem;cursor:pointer;color:var(--azul)}
[data-firmantes] [hidden]{display:none}
@media(max-width:600px){.configurador-medidas{grid-template-columns:1fr}}

/* Participantes: decisiones individuales y revisión de convocatoria. */
.participante-acciones { display:flex; flex-wrap:wrap; justify-content:flex-start; gap:12px; margin-top:20px; }
.participante-acciones button { width:auto; min-width:112px; min-height:48px; margin:0; }
.participante-acciones [hidden] { display:none; }
.participante-acciones .boton-rechazar { background:var(--azul-suave); color:var(--marino); border:1px solid var(--azul); }
.participante-acciones .boton-rechazar:hover { background:#d8e6f8; }
.decision-con-boton:not([open]) { display:none; }
.decision-con-boton > summary { display:none; }
.aceptar-todas h2 { margin-top:0; }
.aceptar-todas button { width:auto; min-height:48px; }
@media(max-width:540px) { .participante-acciones button { flex:1; } .aceptar-todas button { width:100%; } }

.gestion-aceptacion h2 { margin-top:0; }
/* Barra compacta de solicitudes: controles antes de las acciones. */
.barra-seleccion { display:flex; flex-wrap:wrap; align-items:center; gap:8px 24px; margin:0 0 16px; }
.barra-seleccion .casilla,.barra-seleccion .ayuda { margin:0; }
.barra-aceptacion { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-start; gap:12px; }
.barra-aceptacion form { margin:0; }
.barra-aceptacion button { width:auto; min-height:48px; margin:0; }
.barra-aceptacion [data-lote-aceptar-todas],.barra-aceptacion [data-conclusion-aceptar-todas] { background:var(--marino); }
.barra-aceptacion [data-lote-aceptar-todas]:hover,.barra-aceptacion [data-conclusion-aceptar-todas]:hover { background:#152c50; }
@media(max-width:540px) { .barra-aceptacion { align-items:stretch; } .barra-aceptacion form,.barra-aceptacion > button { flex:1 1 100%; } .barra-aceptacion button { width:100%; } }

/* Créditos: selección y datos compactos, sin reducir áreas de interacción. */
.credito-resumen { padding:20px; background:var(--superficie); }
.credito-resumen-datos { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 20px; margin:14px 0; font-size:14px; }
.credito-resumen-datos > div:first-child { grid-column:1/-1; }
.credito-resumen-datos dt { margin-bottom:2px; }
.credito-seleccion { font-size:14px; min-height:44px; margin:0 0 8px; }
#seleccion-autorizacion { margin-bottom:12px; }
.gestion-aceptacion:has(#seleccion-autorizacion) .barra-aceptacion { justify-content:flex-start; }
.gestion-aceptacion:has(#seleccion-autorizacion) .barra-aceptacion form button { background:var(--marino); }
@media(max-width:500px) { .credito-resumen-datos { grid-template-columns:1fr; } }

/* Un botón bloqueado debe distinguirse de una acción disponible. */
.gestion-aceptacion:has(#seleccion-autorizacion) .barra-aceptacion button:disabled {
 background:var(--azul-suave); color:var(--texto-secundario); border:1px solid var(--borde); cursor:not-allowed;
}

.consulta-constancias-form { display:flex; flex-wrap:wrap; align-items:flex-start; gap:16px; }
.consulta-constancias-form > div:first-child { flex:1 1 320px; min-width:0; }
.consulta-constancias-form label { display:block; font-weight:700; margin-bottom:8px; }
.consulta-constancias-form input { width:100%; min-height:48px; }
.consulta-constancias-acciones { display:flex; align-items:center; flex-wrap:wrap; gap:16px; padding-top:30px; }
.consulta-constancias-acciones :is(button,a) { min-height:48px; display:inline-flex; align-items:center; }
.consulta-constancias-lista { list-style:none; padding:0; margin:20px 0 0; }
.consulta-constancias-lista > li { padding:20px 0; border-top:1px solid var(--borde); overflow-wrap:anywhere; }
.consulta-constancias-lista p { margin:10px 0; }
.consulta-constancia-cabecera { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; align-items:center; }
.consulta-constancia-cabecera h3 { margin:0; font-size:18px; }
.consulta-constancia-enlaces { display:flex; align-items:center; flex-wrap:wrap; gap:16px; }
.consulta-constancia-enlaces a { min-height:44px; display:inline-flex; align-items:center; }
@media(max-width:600px) { .consulta-constancias-acciones { padding-top:0; } }
