/* ITSMT · Asistencias — tokens y componentes. Mobile first, contraste AA. */
:root{
  --itsmt-azul:#1b396a; --itsmt-azul-2:#2a5298; --itsmt-guinda:#9b1c31; --itsmt-dorado:#c9a227;
  --ok:#157347; --warn:#b26a00; --err:#b02a37; --fondo:#f3f5f9; --texto:#1f2937; --suave:#6b7280;
  --bs-primary:#1b396a; --bs-primary-rgb:27,57,106; --bs-link-color:#1b396a; --bs-link-hover-color:#0f2447;
}
body{background:var(--fondo);color:var(--texto);font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
.navbar-itsmt{background:linear-gradient(90deg,var(--itsmt-azul),var(--itsmt-azul-2));border-bottom:3px solid var(--itsmt-dorado)}
.navbar-itsmt .nav-link{color:rgba(255,255,255,.88);font-weight:500;border-radius:.5rem;padding:.45rem .75rem}
.navbar-itsmt .nav-link:hover,.navbar-itsmt .nav-link.active{color:#fff;background:rgba(255,255,255,.14)}
.brand-mark{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#fff;color:var(--itsmt-azul);font-weight:800;font-size:.8rem;letter-spacing:-.5px}
.page-title{font-weight:700;color:var(--itsmt-azul);letter-spacing:-.01em}
.card{border:0;box-shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);border-radius:.85rem}
.card-header{background:transparent;border-bottom:1px solid #eef0f4;font-weight:600}
.kpi{border-left:4px solid var(--itsmt-azul)}
.kpi .valor{font-size:1.9rem;font-weight:800;line-height:1.1;color:var(--itsmt-azul)}
.kpi .etiqueta{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--suave);font-weight:600}
.kpi.k-ok{border-color:var(--ok)}.kpi.k-warn{border-color:var(--warn)}.kpi.k-guinda{border-color:var(--itsmt-guinda)}
.btn-primary{--bs-btn-bg:var(--itsmt-azul);--bs-btn-border-color:var(--itsmt-azul);--bs-btn-hover-bg:#12285a;--bs-btn-hover-border-color:#12285a;--bs-btn-active-bg:#0f2447}
.btn-guinda{background:var(--itsmt-guinda);color:#fff;border-color:var(--itsmt-guinda)}.btn-guinda:hover{background:#7d1627;color:#fff}
.table thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--suave);white-space:nowrap}
.table-hover tbody tr:hover{background:#f7f9fd}
.form-label{font-weight:600;font-size:.88rem}
.req::after{content:" *";color:var(--err)}
:focus-visible{outline:3px solid #f2b705;outline-offset:2px}
.min-w-0{min-width:0}

/* ----- Login */
.auth-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(1200px 600px at 10% -10%,#2a5298 0,transparent 60%),linear-gradient(160deg,#102a52,#1b396a 60%,#25427a)}
.auth-card{width:min(420px,92vw);border-radius:1.1rem;overflow:hidden}
.auth-head{background:var(--itsmt-azul);color:#fff;padding:1.6rem 1.5rem 1.2rem;border-bottom:4px solid var(--itsmt-dorado);text-align:center}

/* ----- Portal del alumno */
.qr-box{background:#fff;border:2px solid var(--itsmt-azul);border-radius:1rem;padding:.9rem;max-width:320px;margin-inline:auto}
.qr-box svg{width:100%;height:auto;display:block}
.dato{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px dashed #e5e7eb;font-size:.95rem}
.dato:last-child{border:0}.dato span:first-child{color:var(--suave)}.dato span:last-child{font-weight:600;text-align:right}
.evento-card{border-left:4px solid var(--itsmt-azul)}
.evento-card.activo{border-left-color:var(--ok);background:#f4fbf7}

/* ----- Pasador (pantalla rápida) */
body.scanner-body{background:#0f172a;color:#e5e7eb}
.sc-top{background:#111c34;border-bottom:3px solid var(--itsmt-dorado)}
.sc-video{position:relative;border-radius:1rem;overflow:hidden;background:#000;aspect-ratio:1/1;max-width:520px;margin-inline:auto}
.sc-video video{width:100%;height:100%;object-fit:cover;display:block;background:#000}
.sc-frame{position:absolute;inset:12%;border:3px solid rgba(255,255,255,.75);border-radius:1rem;box-shadow:0 0 0 9999px rgba(0,0,0,.28);pointer-events:none}
.sc-result{border-radius:1rem;padding:1rem 1.1rem;min-height:128px;border:3px solid transparent;transition:background .15s,border-color .15s}
.sc-result.idle{background:#16213a;border-color:#243456;color:#94a3b8}
.sc-result.ok{background:#0d3b27;border-color:#22c55e;color:#eafff3}
.sc-result.warn{background:#4a3206;border-color:#f59e0b;color:#fff8e6}
.sc-result.error{background:#4a1118;border-color:#ef4444;color:#fff0f0}
.sc-result .icono{font-size:2.4rem;line-height:1}
.sc-result .titulo{font-size:1.15rem;font-weight:800;letter-spacing:.02em}
.sc-result .nombre{font-size:1.35rem;font-weight:700;line-height:1.2}
.sc-panel{background:#16213a;border:1px solid #243456;border-radius:1rem}
.sc-stat{text-align:center}.sc-stat .n{font-size:2rem;font-weight:800;line-height:1}.sc-stat .l{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8}
.sc-list{list-style:none;margin:0;padding:0}
.sc-list li{display:flex;justify-content:space-between;gap:.75rem;padding:.5rem 0;border-bottom:1px solid #243456;font-size:.9rem}
.sc-list li:last-child{border:0}
.sc-reloj{font-variant-numeric:tabular-nums;font-weight:800;font-size:1.25rem}
.pill{display:inline-block;padding:.12rem .55rem;border-radius:999px;font-size:.72rem;font-weight:700}
.pill.on{background:#14532d;color:#bbf7d0}.pill.off{background:#3f3f46;color:#d4d4d8}

/* ----- Impresión */
.print-only{display:none}
@media print{
  body{background:#fff!important;color:#000!important}
  .no-print,.navbar,.toast-container,.modal{display:none!important}
  .print-only{display:block}
  .card{box-shadow:none;border:1px solid #ccc}
  a[href]:after{content:none!important}
  table{font-size:10px}
}
#print-card{display:none}
@media print{
  body.printing-card > *:not(#print-card){display:none!important}
  body.printing-card #print-card{display:block!important;text-align:center;padding:20mm}
  body.printing-card #print-card img{width:120mm;height:auto}
}
.badge{font-weight:600}
@media (max-width:575.98px){.kpi .valor{font-size:1.5rem}.table-responsive{font-size:.85rem}}
