/* =====================================================================
   SICEA · Hoja de estilo única
   Un solo diseño para director, profesor, alumno y padre de familia.
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');

:root{
  /* ---- Colores institucionales UBJ: negro y naranja ---- */
  --naranja:#e86c16;
  --naranja-osc:#c25709;
  --naranja-bg:#fde8d6;
  --negro:#141414;
  --negro2:#232323;

  /* El resto del sistema usa estos nombres; apuntan al naranja
     para que toda la interfaz sea del color de la escuela.       */
  --azul:#e86c16;         /* color principal de botones y acentos */
  --azul-osc:#c25709;
  --azul-claro:#fde8d6;
  --marino:#141414;       /* menú lateral */
  --marino2:#232323;      /* encabezados de tabla y títulos */

  /* Azul de apoyo, para datos informativos */
  --acento:#1565c0;
  --acento-claro:#e3f0fc;
  --acento-osc:#0d47a1;

  --bg:#f5f6f7;
  --borde:#e3e3e5;
  --texto:#4a4a4f;
  --tenue:#95959d;
  --verde:#2e7d32;
  --verde-bg:#e8f5e9;
  --rojo:#c62828;
  --rojo-bg:#fde8e8;
  --morado:#6a1b9a;
  --amarillo:#f57f17;
  --sombra:0 2px 8px rgba(0,0,0,.08);
  --sombra-alta:0 6px 22px rgba(0,0,0,.15);
  --radio:9px;
  --barra:250px;
  --alto-top:58px;
}

*{box-sizing:border-box;margin:0;padding:0}

body{
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  background:var(--bg);
  color:var(--texto);
  font-size:14px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

a{color:var(--azul);text-decoration:none}
a:hover{text-decoration:none}

/* ─────────── BARRA SUPERIOR ─────────── */
.sicea-topbar{
  position:fixed;top:0;left:0;right:0;z-index:1100;
  height:var(--alto-top);
  background:var(--negro);
  border-bottom:3px solid var(--naranja);
  display:flex;align-items:center;gap:14px;
  padding:0 18px 0 calc(var(--barra) + 20px);
  box-shadow:0 2px 10px rgba(0,0,0,.18);
}
.topbar-brand{
  font-size:15px;font-weight:700;color:#fff;letter-spacing:.2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}

.btn-menu{
  display:none;background:rgba(255,255,255,.15);border:none;color:#fff;
  width:36px;height:36px;border-radius:8px;cursor:pointer;font-size:16px;
}

/* Selector de ciclo escolar */
.ciclo-selector{
  display:flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);
  border-radius:20px;padding:4px 12px;color:#fff;
}
.ciclo-selector i{font-size:12px;opacity:.85}
.ciclo-selector select{
  background:transparent;border:none;color:#fff;font-family:inherit;
  font-size:12.5px;font-weight:600;cursor:pointer;outline:none;
}
.ciclo-selector select option{color:#1a2744;background:#fff}

/* Usuario */
.topbar-user{
  display:flex;align-items:center;gap:10px;position:relative;cursor:pointer;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);
  border-radius:30px;padding:4px 14px 4px 5px;color:#fff;transition:background .2s;
}
.topbar-user:hover{background:rgba(255,255,255,.22)}
.t-avatar{
  width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.25);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;
  flex-shrink:0;
}
.t-info{display:flex;flex-direction:column;line-height:1.2}
.t-name{font-size:12.5px;font-weight:600;white-space:nowrap}
.t-role{font-size:10.5px;opacity:.8}
.t-dropdown{
  display:none;position:absolute;top:calc(100% + 8px);right:0;
  background:#fff;min-width:200px;border-radius:var(--radio);
  box-shadow:0 10px 34px rgba(0,0,0,.18);border:1px solid var(--borde);
  overflow:hidden;z-index:1200;
}
.topbar-user:hover .t-dropdown{display:block}
.t-dropdown a{
  display:flex;align-items:center;gap:10px;padding:11px 16px;
  color:var(--texto);font-size:13px;font-weight:500;
}
.t-dropdown a:hover{background:var(--azul-claro);color:var(--azul)}
.t-div{height:1px;background:var(--borde)}
.t-logout{color:var(--rojo)!important}
.t-logout:hover{background:var(--rojo-bg)!important}

/* ─────────── MENÚ LATERAL ─────────── */
.sicea-sidebar{
  position:fixed;top:0;left:0;bottom:0;z-index:1150;
  width:var(--barra);background:var(--marino);
  overflow-y:auto;overflow-x:hidden;padding-bottom:24px;
  box-shadow:2px 0 14px rgba(0,0,0,.18);
  scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent;
  transition:transform .25s ease;
}
.sicea-sidebar::-webkit-scrollbar{width:5px}
.sicea-sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:4px}

.sidebar-logo{
  padding:16px 20px 14px;border-bottom:1px solid rgba(255,255,255,.07);text-align:center;
}
.sidebar-logo img{width:105px;filter:brightness(0) invert(1);opacity:.92}
.s-inst{color:rgba(255,255,255,.5);font-size:9.5px;letter-spacing:1.6px;
  text-transform:uppercase;margin-top:6px}
.s-portal{color:#fff;font-size:12.5px;font-weight:700;margin-top:2px}

.sidebar-section{
  color:rgba(255,255,255,.32);font-size:9.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:1.6px;padding:16px 20px 5px;
}
.sidebar-nav a{
  display:flex;align-items:center;gap:11px;padding:9px 20px;
  color:rgba(255,255,255,.62);font-size:13px;font-weight:500;
  border-left:3px solid transparent;transition:all .16s;
}
.sidebar-nav a i{width:17px;text-align:center;font-size:14px;flex-shrink:0}
.sidebar-nav a:hover{background:rgba(255,255,255,.07);color:#fff;border-left-color:rgba(255,255,255,.35)}
.sidebar-nav a.active{background:rgba(232,108,22,.22);color:#fff;border-left-color:var(--naranja)}
.sidebar-nav a.active i{color:var(--naranja)}
.sidebar-nav a.salir{color:rgba(239,154,154,.85)}
.sidebar-nav a.salir:hover{background:rgba(198,40,40,.25);color:#ef9a9a}

.sidebar-fondo{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1120}
.sidebar-fondo.visible{display:block}

/* ─────────── CONTENIDO ─────────── */
.sicea-content{
  margin-left:var(--barra);margin-top:var(--alto-top);
  padding:24px 28px;min-height:calc(100vh - var(--alto-top) - 44px);
}
.sicea-footer{
  margin-left:var(--barra);padding:14px 28px;
  color:var(--tenue);font-size:11.5px;border-top:1px solid var(--borde);
  background:#fff;
}

/* Encabezado de página */
.page-header{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:14px;flex-wrap:wrap;margin-bottom:20px;
}
.page-header h1{font-size:21px;font-weight:800;color:var(--marino2);line-height:1.2}
.page-header p{color:var(--tenue);font-size:13px;margin-top:3px}
.page-ciclo{
  background:#fff;border:1px solid var(--borde);border-radius:20px;
  padding:6px 15px;font-size:12px;font-weight:700;color:var(--azul);
  display:flex;align-items:center;gap:7px;white-space:nowrap;
}

/* ─────────── TARJETAS ─────────── */
.sicea-card{
  background:#fff;border-radius:var(--radio);border:1px solid var(--borde);
  box-shadow:var(--sombra);margin-bottom:20px;
}
.card-header{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 20px;border-bottom:2px solid var(--naranja);
  background:#faf8f6;border-radius:var(--radio) var(--radio) 0 0;flex-wrap:wrap;
}
.card-header h5{
  font-size:14px;font-weight:700;color:var(--marino2);
  display:flex;align-items:center;gap:8px;
}
.card-header h5 i{color:var(--azul)}
.card-body{padding:20px}
.card-body.sin-padding{padding:0}
.tabla-scroll{overflow-x:auto}

/* Rejilla de 2 columnas */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;align-items:start}

/* ─────────── ESTADÍSTICAS ─────────── */
.stat-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));
  gap:16px;margin-bottom:22px;
}
.stat-card{
  background:#fff;border-radius:var(--radio);padding:17px 19px;
  box-shadow:var(--sombra);display:flex;align-items:center;gap:14px;
  border-top:3px solid var(--naranja);
}
.stat-icon{
  width:45px;height:45px;border-radius:11px;display:flex;
  align-items:center;justify-content:center;font-size:19px;color:#fff;flex-shrink:0;
  background:linear-gradient(135deg,var(--negro),var(--naranja));
}
.stat-num{font-size:25px;font-weight:800;color:var(--marino2);line-height:1}
.stat-lbl{font-size:11.5px;color:var(--tenue);font-weight:600;margin-top:3px}

.stat-card.verde{border-top-color:var(--verde)}
.stat-card.verde .stat-icon{background:linear-gradient(135deg,#1b5e20,#66bb6a)}
.stat-card.rojo{border-top-color:var(--rojo)}
.stat-card.rojo .stat-icon{background:linear-gradient(135deg,#b71c1c,#ef5350)}
.stat-card.naranja{border-top-color:var(--naranja)}
.stat-card.naranja .stat-icon{background:linear-gradient(135deg,#e65100,#ffa726)}
.stat-card.morado{border-top-color:var(--morado)}
.stat-card.morado .stat-icon{background:linear-gradient(135deg,#4a148c,#ab47bc)}
.stat-card.amarillo{border-top-color:var(--amarillo)}
.stat-card.amarillo .stat-icon{background:linear-gradient(135deg,#f57f17,#ffd54f)}

/* ─────────── TABLAS ─────────── */
.sicea-table{width:100%;border-collapse:collapse}
.sicea-table thead th{
  background:var(--marino2);color:#fff;padding:11px 14px;
  font-size:12px;font-weight:600;text-align:left;white-space:nowrap;
}
.sicea-table thead th.c{text-align:center}
.sicea-table tbody td{
  padding:10px 14px;border-bottom:1px solid #f0f4f8;
  vertical-align:middle;font-size:13.5px;
}
.sicea-table tbody td.c{text-align:center}
.sicea-table tbody tr:hover td{background:#fdf8f4}
.sicea-table tbody tr:last-child td{border-bottom:none}
.sicea-table .nombre-fuerte{font-weight:600;color:var(--marino2)}
.sicea-table .sub{font-size:11.5px;color:var(--tenue);display:block}

/* ─────────── CALIFICACIONES ─────────── */
.cal-num{
  display:inline-block;min-width:44px;text-align:center;
  padding:4px 10px;border-radius:6px;font-weight:700;font-size:13.5px;
}
.cal-num.ex{background:var(--acento-claro);color:var(--acento-osc)}
.cal-num.ap{background:var(--verde-bg);color:#1b5e20}
.cal-num.rep{background:var(--rojo-bg);color:#b71c1c}
.cal-num.nd{background:#f0f4f8;color:var(--tenue)}

.cal-banner{
  background:linear-gradient(120deg,var(--negro) 0%,var(--negro2) 55%,var(--naranja) 140%);
  color:#fff;border-radius:12px;padding:22px 28px;
  display:flex;align-items:center;gap:24px;margin-bottom:20px;flex-wrap:wrap;
}
.cal-banner-num{font-size:52px;font-weight:900;line-height:1}
.cal-banner-num.ex{color:#ffb26b}
.cal-banner-num.ap{color:#ffd54f}
.cal-banner-num.rep{color:#ef9a9a}
.cal-banner-num.nd{color:rgba(255,255,255,.5)}
.cal-banner .txt{flex:1;min-width:200px}
.cal-banner .txt strong{font-size:15px;display:block}
.cal-banner .txt span{opacity:.8;font-size:12.5px}
.cal-barra-bg{height:11px;background:rgba(255,255,255,.18);border-radius:6px;overflow:hidden;margin-top:10px}
.cal-barra-fill{height:100%;border-radius:6px;background:var(--naranja)}

/* ─────────── BADGES ─────────── */
.badge{padding:3px 11px;border-radius:20px;font-size:11.5px;font-weight:700;
  display:inline-block;white-space:nowrap}
.badge.verde{background:var(--verde-bg);color:#1b5e20}
.badge.rojo{background:var(--rojo-bg);color:#b71c1c}
.badge.azul{background:var(--acento-claro);color:var(--acento-osc)}
.badge.naranja{background:var(--naranja-bg);color:var(--naranja)}
.badge.gris{background:#f0f4f8;color:#64748b}
.badge.morado{background:#f3e5f5;color:var(--morado)}

/* ─────────── BOTONES ─────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 17px;border-radius:7px;border:none;cursor:pointer;
  font-size:13px;font-weight:600;font-family:inherit;transition:.16s;
  text-decoration:none;line-height:1.3;
}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primario{background:var(--azul);color:#fff}
.btn-primario:hover{background:var(--azul-osc);color:#fff}
.btn-exito{background:var(--verde);color:#fff}
.btn-exito:hover{background:#1b5e20;color:#fff}
.btn-peligro{background:var(--rojo);color:#fff}
.btn-peligro:hover{background:#8e0000;color:#fff}
.btn-linea{background:transparent;color:var(--azul);border:1.5px solid var(--azul)}
.btn-linea:hover{background:var(--azul-claro)}
.btn-gris{background:#eef2f7;color:#475569}
.btn-gris:hover{background:#e2e8f0}
.btn-chico{padding:5px 11px;font-size:11.5px;border-radius:6px}
.btn-icono{
  width:32px;height:32px;padding:0;border-radius:7px;font-size:12.5px;
  display:inline-flex;align-items:center;justify-content:center;
}
.acciones{display:flex;gap:6px;flex-wrap:wrap}

/* ─────────── FORMULARIOS ─────────── */
.campo{margin-bottom:15px}
.etiqueta{
  display:block;font-size:11px;font-weight:700;color:#64748b;
  margin-bottom:5px;text-transform:uppercase;letter-spacing:.5px;
}
.entrada,select.entrada,textarea.entrada{
  width:100%;padding:9px 12px;border:1.5px solid var(--borde);border-radius:7px;
  font-size:13.5px;font-family:inherit;color:var(--texto);background:#fff;
  transition:border .18s,box-shadow .18s;
}
.entrada:focus{outline:none;border-color:var(--azul);box-shadow:0 0 0 3px rgba(21,101,192,.13)}
.entrada:disabled,.entrada[readonly]{background:#f8fafc;color:var(--tenue)}
textarea.entrada{resize:vertical;min-height:80px}
.ayuda{font-size:11.5px;color:var(--tenue);margin-top:4px;display:block}
.fila-campos{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}

/* Barra de filtros */
.filtros{
  background:#fff;border:1px solid var(--borde);border-radius:var(--radio);
  padding:15px 18px;margin-bottom:20px;box-shadow:var(--sombra);
}
.filtros form{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
.filtros .campo{margin-bottom:0;min-width:170px;flex:1}

/* ─────────── ALERTAS ─────────── */
.sicea-alert{
  padding:12px 16px;border-radius:var(--radio);margin-bottom:16px;
  font-size:13.5px;font-weight:500;display:flex;align-items:center;gap:10px;
}
.sicea-alert.success{background:var(--verde-bg);color:#1b5e20;border:1px solid #a5d6a7}
.sicea-alert.danger{background:var(--rojo-bg);color:#b71c1c;border:1px solid #ef9a9a}
.sicea-alert.info{background:var(--azul-claro);color:var(--azul-osc);border:1px solid #90caf9}
.sicea-alert.warning{background:var(--naranja-bg);color:var(--naranja);border:1px solid #ffcc80}

/* ─────────── ESTADO VACÍO ─────────── */
.empty-state{text-align:center;padding:46px 20px;color:var(--tenue)}
.empty-state i{font-size:40px;margin-bottom:12px;display:block;opacity:.55}
.empty-state h5{font-size:15px;font-weight:700;margin-bottom:6px;color:#64748b}
.empty-state p{font-size:13px;max-width:420px;margin:0 auto}

/* ─────────── BANNER DE IDENTIDAD ─────────── */
.id-card{
  background:linear-gradient(120deg,var(--negro) 0%,var(--negro2) 55%,var(--naranja) 140%);
  color:#fff;border-radius:12px;padding:22px 26px;
  display:flex;align-items:center;gap:18px;margin-bottom:22px;flex-wrap:wrap;
}
.id-avatar{
  width:62px;height:62px;border-radius:50%;background:rgba(255,255,255,.2);
  display:flex;align-items:center;justify-content:center;font-size:23px;font-weight:800;
  border:2px solid rgba(255,255,255,.4);flex-shrink:0;
}
.id-nombre{font-size:18px;font-weight:800}
.id-sub{opacity:.85;font-size:13px;margin-top:3px}
.id-date{opacity:.65;font-size:11.5px;margin-top:4px}
.id-tags{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}
.id-tag{
  font-size:11px;font-weight:700;padding:3px 11px;border-radius:20px;
  background:rgba(255,255,255,.2);color:#fff;
}

/* ─────────── FILAS DE DATOS ─────────── */
.dato{display:flex;padding:9px 0;border-bottom:1px solid #f0f4f8;align-items:center;gap:10px}
.dato:last-child{border-bottom:none}
.dato-lbl{
  font-size:11px;color:var(--tenue);font-weight:700;width:160px;flex-shrink:0;
  text-transform:uppercase;letter-spacing:.4px;
}
.dato-val{font-size:13.5px;font-weight:600;color:var(--marino2)}

/* ─────────── ACCESOS RÁPIDOS ─────────── */
.quick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:12px;padding:16px}
.quick-btn{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:17px 10px;background:#fff;border-radius:var(--radio);
  color:var(--marino2);font-weight:600;font-size:12.5px;text-align:center;
  transition:.15s;border:2px solid var(--borde);
}
.quick-btn:hover{border-color:var(--azul);color:var(--azul);transform:translateY(-2px);
  box-shadow:var(--sombra-alta)}
.quick-btn i{font-size:22px}

/* ─────────── HORARIO ─────────── */
.hor-item{
  display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:8px;
  background:#f8fafd;margin-bottom:7px;border-left:4px solid var(--azul);flex-wrap:wrap;
}
.hor-hora{font-size:11.5px;font-weight:700;color:var(--azul);min-width:92px}
.hor-dia{
  font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:1px;
  color:var(--tenue);margin:14px 0 8px;
}
.tabla-horario td{vertical-align:top}
.bloque-clase{
  background:var(--azul-claro);border-left:3px solid var(--azul);
  border-radius:6px;padding:7px 9px;margin-bottom:5px;font-size:12px;
}
.bloque-clase strong{display:block;color:var(--marino2);font-size:12.5px}
.bloque-clase span{color:var(--tenue);font-size:11px}

/* ─────────── PESTAÑAS ─────────── */
.tabs{display:flex;gap:4px;border-bottom:2px solid var(--borde);margin-bottom:20px;
  flex-wrap:wrap}
.tabs a{
  padding:10px 18px;font-size:13px;font-weight:600;color:var(--tenue);
  border-bottom:3px solid transparent;margin-bottom:-2px;
}
.tabs a:hover{color:var(--azul)}
.tabs a.active{color:var(--azul);border-bottom-color:var(--azul)}

/* ─────────── VENTANA MODAL ─────────── */
.modal{
  display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);
  z-index:1300;padding:24px;overflow-y:auto;
}
.modal.abierto{display:flex;align-items:flex-start;justify-content:center}
.modal-caja{
  background:#fff;border-radius:12px;width:100%;max-width:620px;
  margin:auto;box-shadow:0 20px 60px rgba(0,0,0,.3);
}
.modal-cab{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 22px;border-bottom:1px solid var(--borde);
}
.modal-cab h5{font-size:15px;font-weight:700;color:var(--marino2);
  display:flex;align-items:center;gap:9px}
.modal-cab h5 i{color:var(--azul)}
.modal-cerrar{background:none;border:none;font-size:20px;color:var(--tenue);cursor:pointer;
  line-height:1;padding:0 4px}
.modal-cuerpo{padding:22px}
.modal-pie{
  padding:14px 22px;border-top:1px solid var(--borde);background:#f8fafd;
  display:flex;justify-content:flex-end;gap:10px;border-radius:0 0 12px 12px;
}

/* ─────────── LOGIN ─────────── */
.login-body{min-height:100vh}
.login-caja{
  background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(0,0,0,.35);
  width:100%;max-width:410px;padding:36px 34px;
}
.login-logo{text-align:center;margin-bottom:24px}
.login-logo img{width:135px}
.login-logo h1{font-size:17px;font-weight:800;color:var(--marino2);margin-top:12px}
.login-logo p{font-size:12.5px;color:var(--tenue);margin-top:3px}
.login-caja .btn{width:100%;padding:11px;font-size:14px;margin-top:6px}
.login-pie{
  text-align:center;margin-top:22px;padding-top:18px;border-top:1px solid var(--borde);
  font-size:11.5px;color:var(--tenue);
}
.login-input-icono{position:relative}
.login-input-icono i{
  position:absolute;left:13px;top:50%;transform:translateY(-50%);
  color:var(--tenue);font-size:13px;
}
.login-input-icono .entrada{padding-left:38px}

/* ─────────── IMPRESIÓN ─────────── */
@media print{
  .sicea-sidebar,.sicea-topbar,.sicea-footer,.btn,.filtros,.no-imprimir{display:none!important}
  .sicea-content{margin:0;padding:0}
  .sicea-card{box-shadow:none;border:1px solid #ccc}
  body{background:#fff}
}

/* ─────────── RESPONSIVO ─────────── */
@media(max-width:1000px){
  .grid-2{grid-template-columns:1fr}
}
@media(max-width:860px){
  .sicea-sidebar{transform:translateX(-100%)}
  .sicea-sidebar.abierta{transform:translateX(0)}
  .sicea-content,.sicea-footer{margin-left:0}
  .sicea-topbar{padding-left:14px}
  .btn-menu{display:flex;align-items:center;justify-content:center}
  .topbar-brand{display:none}
  .t-info{display:none}
  .sicea-content{padding:18px 15px}
  .ciclo-selector{padding:4px 9px}
  .dato{flex-direction:column;align-items:flex-start;gap:2px}
  .dato-lbl{width:auto}
}
@media(max-width:520px){
  .page-header h1{font-size:18px}
  .cal-banner-num{font-size:40px}
  .stat-grid{grid-template-columns:1fr 1fr;gap:11px}
  .stat-card{padding:13px}
  .stat-num{font-size:20px}
  .stat-icon{width:38px;height:38px;font-size:16px}
}

/* ─────────── PESTAÑAS DE PARCIAL (captura del profesor) ─────────── */
.parciales{
  display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px;
}
.parcial{
  flex:1 1 140px;min-width:130px;
  display:flex;flex-direction:column;align-items:center;gap:5px;
  background:#fff;border:2px solid var(--borde);border-radius:var(--radio);
  padding:14px 10px;color:var(--texto);transition:.16s;box-shadow:var(--sombra);
}
.parcial:hover{border-color:var(--azul);transform:translateY(-2px);box-shadow:var(--sombra-alta)}
.parcial .p-num{
  width:40px;height:40px;border-radius:50%;background:var(--azul-claro);color:var(--azul);
  display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800;
  flex:0 0 auto;
}
.parcial .p-txt{font-size:12.5px;font-weight:700;color:var(--marino2);
  flex:0 0 auto;text-align:center}
.parcial .p-estado{font-size:11px;font-weight:700;padding:2px 10px;border-radius:20px;
  flex:0 0 auto;align-self:center;line-height:1.4}
.parcial .p-estado.listo{background:var(--verde-bg);color:#1b5e20}
.parcial .p-estado.parcial{background:var(--naranja-bg);color:var(--naranja)}
.parcial .p-estado.vacio{background:#f0f4f8;color:var(--tenue)}
.parcial.activo{
  border-color:var(--naranja);background:#fdf1e6;
  box-shadow:0 0 0 3px rgba(21,101,192,.12);
}
.parcial.activo .p-num{background:var(--azul);color:#fff}

.casilla-cal{
  text-align:center;font-weight:800;font-size:17px;padding:8px 6px;
  border-width:2px;letter-spacing:1px;
}
.casilla-cal:focus{border-color:var(--verde);box-shadow:0 0 0 3px rgba(46,125,50,.15)}
/* Quita las flechitas del campo numérico */
.casilla-cal::-webkit-outer-spin-button,
.casilla-cal::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.casilla-cal{-moz-appearance:textfield}

/* ─────────── TABLA DE CAPTURA CON DESPLEGABLES ─────────── */
.sub-th{
  display:block;font-size:9.5px;font-weight:500;opacity:.75;
  text-transform:none;letter-spacing:0;margin-top:1px;
}
.select-cal,.select-final{
  text-align:center;text-align-last:center;font-weight:700;font-size:15px;
  padding:7px 4px;border-width:2px;cursor:pointer;
}
.select-final{font-size:13px}
.select-cal:focus,.select-final:focus{
  border-color:var(--verde);box-shadow:0 0 0 3px rgba(46,125,50,.15);
}
.select-final.fijo{border-color:var(--naranja);background:var(--naranja-bg)}

.tabla-captura td.destacada{background:#fdf1e6 !important}
.tabla-captura th.destacada{background:var(--naranja) !important}

.final-auto{
  display:inline-block;min-width:46px;padding:6px 10px;border-radius:6px;
  font-weight:800;font-size:16px;
}
.final-auto.ex{background:var(--acento-claro);color:var(--acento-osc)}
.final-auto.ap{background:var(--verde-bg);color:#1b5e20}
.final-auto.rep{background:var(--rojo-bg);color:#b71c1c}
.final-auto.nd{background:#f0f4f8;color:var(--tenue)}

.parcial.calculado{background:#fafbfd}
.parcial.calculado .p-num{background:#eef2f7;color:var(--tenue)}
.calculado-nota{font-size:10.5px;color:var(--tenue);margin-top:3px;display:block}

/* ─────────── TABLA DE EVALUACIÓN DOCENTE ─────────── */
.tabla-eval thead th{background:var(--marino2)}
.tabla-eval td{padding:9px 12px}
.tabla-eval tbody tr:hover td{background:#fdf1e6}
.tabla-eval input[type=radio]{accent-color:var(--azul)}

/* Ficha de trámite */
.tramite-caja{
  border:2px solid var(--borde);border-radius:var(--radio);padding:18px;background:#fff;
  transition:.16s;
}
.tramite-caja:hover{border-color:var(--azul);box-shadow:var(--sombra-alta)}

/* ─────────── LECTOR DE CREDENCIALES (RFID) ─────────── */
.lector-panel{
  border:3px dashed var(--borde);border-radius:14px;
  padding:30px 20px;text-align:center;background:#fafafa;
  transition:.25s;
}
.lector-panel .lector-icono{font-size:46px;color:var(--tenue);margin-bottom:12px}
.lector-panel .lector-titulo{
  font-size:19px;font-weight:800;color:var(--marino2);line-height:1.25;
}
.lector-panel .lector-sub{font-size:13.5px;color:var(--texto);margin-top:6px}
.lector-panel .lector-uid{
  font-family:'Courier New',monospace;font-size:12px;color:var(--tenue);
  margin-top:10px;letter-spacing:1.5px;
}

.lector-panel.leyendo{border-color:var(--naranja);background:#fdf3ea}
.lector-panel.leyendo .lector-icono{color:var(--naranja)}

.lector-panel.ok{
  border-style:solid;border-color:var(--verde);background:var(--verde-bg);
}
.lector-panel.ok .lector-icono{color:var(--verde)}
.lector-panel.ok .lector-titulo{color:#1b5e20}

.lector-panel.aviso{
  border-style:solid;border-color:var(--naranja);background:var(--naranja-bg);
}
.lector-panel.aviso .lector-icono{color:var(--naranja-osc)}
.lector-panel.aviso .lector-titulo{color:var(--naranja-osc)}

.lector-panel.error{
  border-style:solid;border-color:var(--rojo);background:var(--rojo-bg);
}
.lector-panel.error .lector-icono{color:var(--rojo)}
.lector-panel.error .lector-titulo{color:#b71c1c}

/* Bitácora de lecturas */
.bitacora{max-height:340px;overflow-y:auto;padding:6px 0}
.bitacora-vacia{
  text-align:center;color:var(--tenue);font-size:13px;padding:36px 16px;
}
.bitacora-fila{
  display:flex;gap:11px;align-items:flex-start;
  padding:9px 18px;border-bottom:1px solid #f0f0f2;font-size:13px;
}
.bitacora-fila .hora{
  font-family:'Courier New',monospace;font-size:11.5px;color:var(--tenue);
  flex-shrink:0;padding-top:1px;
}
.bitacora-fila.ok    .texto{color:#1b5e20;font-weight:600}
.bitacora-fila.aviso .texto{color:var(--naranja-osc);font-weight:600}
.bitacora-fila.error .texto{color:#b71c1c;font-weight:600}
.bitacora-fila.info  .texto{color:var(--texto)}
