:root{--bg:#f4f7f8;--paper:#fff;--ink:#1b2a33;--muted:#5b6b75;--line:#d6dfe4;--accent:#0f5e7a;--accent-soft:#e3f0f5;--ok:#1e7d46;--ok-soft:#e2f4ea;--warn:#b5600b;--warn-soft:#fcefdf;--bad:#b3261e;--bad-soft:#fbe5e3;
  --f:"Segoe UI",system-ui,-apple-system,Roboto,sans-serif}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15.5px/1.5 var(--f)}
.in{max-width:1180px;margin:0 auto;padding:0 16px}
main.in{padding-block:24px 60px;display:flex;flex-direction:column;gap:16px}
h1{font-size:26px;margin:0}h2{font-size:19px;margin:12px 0 0}
a{color:var(--accent)}
.top{background:var(--accent);color:#fff}
.top .in{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;padding-block:10px}
.top a{color:#fff;text-decoration:none;padding:4px 8px;border-radius:5px}
.top a[aria-current]{background:rgba(255,255,255,.18)}
.top nav{display:flex;flex-wrap:wrap;gap:4px;align-items:center;flex:1}
.who{margin-left:auto;font-size:14px;opacity:.9}
.brand{font-size:16px}
.muted{color:var(--muted)}
.msg{padding:10px 14px;border-radius:6px;background:var(--accent-soft);margin:0}
.msg.ok{background:var(--ok-soft);color:var(--ok)}.msg.err{background:var(--bad-soft);color:var(--bad)}
.card{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:16px}
.card summary{cursor:pointer;font-weight:600}
.login{max-width:380px;margin:8vh auto 0;display:flex;flex-direction:column;gap:8px}
.stack{display:flex;flex-direction:column;gap:8px;max-width:640px}
.row{display:flex;gap:8px;flex-wrap:wrap}
.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
form.inline{display:inline}
label{font-weight:600;font-size:14px}
input,select,textarea,button{font:inherit}
input,select,textarea{padding:7px 9px;border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--ink);max-width:100%}
textarea{width:100%}
input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button,.btn{background:var(--accent);color:#fff;border:0;border-radius:5px;padding:8px 16px;cursor:pointer;text-decoration:none;display:inline-block}
button.sec{background:var(--accent-soft);color:var(--accent)}
.sm{padding:4px 10px;font-size:14px}
.tbl{overflow-x:auto;background:var(--paper);border:1px solid var(--line);border-radius:8px}
table{border-collapse:collapse;width:100%}
th,td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{background:var(--accent-soft);font-size:14px;white-space:nowrap}
.num{text-align:center;font-variant-numeric:tabular-nums}
input.nota{width:4.5em;text-align:center}input.ind{width:100%;min-width:11em}
.ok{color:var(--ok)}
.chip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:13px;font-weight:600}
.chip.ok{background:var(--ok-soft);color:var(--ok)}.chip.warn{background:var(--warn-soft);color:var(--warn)}
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.tabs a{padding:7px 12px;text-decoration:none;border-radius:6px 6px 0 0}
.tabs a[aria-current]{background:var(--paper);border:1px solid var(--line);border-bottom-color:var(--paper);margin-bottom:-1px;font-weight:600}
.ck{font-weight:400}
code{background:var(--accent-soft);padding:1px 5px;border-radius:4px;font-size:.92em}
/* PM */
.pm{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:700;white-space:nowrap;padding:1px 7px 1px 4px;border-radius:999px}
.pm svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.pm.p{color:var(--warn);background:var(--warn-soft)}.pm.r{color:var(--ok);background:var(--ok-soft)}.pm.x{color:var(--bad);background:var(--bad-soft)}
/* Informe: dos hojas carta por estudiante (215.9 x 279.4 mm, márgenes de 10 mm) */
.informe{-webkit-print-color-adjust:exact;print-color-adjust:exact;--fs:1;display:flex;flex-direction:column;gap:18px;align-items:center;color:#111}
.hoja{-webkit-print-color-adjust:exact;print-color-adjust:exact;width:195.9mm;height:259.4mm;background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.18);padding:0;overflow:hidden;display:flex;flex-direction:column;font-size:calc(12.5px * var(--fs));line-height:1.32;box-sizing:content-box;border:10mm solid #fff}
.h1{justify-content:space-between}
.h2{gap:calc(8px * var(--fs))}.h2 .firmas{margin-top:auto}
.stage{width:195.9mm}
.enc{display:flex;gap:14px;align-items:center;text-align:center;justify-content:center;line-height:1.3;font-size:.95em}
.enc img{height:calc(66px * var(--fs))}
.datos{display:grid;grid-template-columns:3fr 1fr 1fr 1fr 1fr 2fr;border:1px solid #9aa}
.datos div{display:flex;flex-direction:column;padding:3px 7px;border-right:1px solid #9aa}.datos div:last-child{border:0}
.datos span{font-size:.82em;color:#556}
.tit{text-align:center;font-size:1.08em;margin:2px 0;letter-spacing:.03em}
.puesto{text-align:right;margin:0}
.tabla{font-size:.93em;width:100%}.tabla th,.tabla td{border:1px solid #9aa;padding:2px 4px;text-align:center}.tabla th{background:#e6eef1}.tabla td.l{text-align:left}
.tabla .pm{font-size:0;padding:0;background:none}.tabla .pm svg{width:1.3em;height:1.3em}
.conv{font-size:.85em;color:#556;margin:0}
.mat{border:1px solid #9aa;break-inside:avoid}
.mh{display:flex;gap:4px 14px;flex-wrap:wrap;background:#e6eef1;padding:3px 7px}.mh .pt{margin-left:auto;font-weight:700}
.mat ul{margin:4px 0;padding-left:20px}
.firmas{display:flex;justify-content:space-around;padding-top:34px;text-align:center}
.firmas span{display:block;width:200px;border-top:1px solid #333;margin-bottom:4px}
@media print{
    body{background:#fff}.top,.noprint{display:none}main.in{padding:0;max-width:none}
  @page{size:letter;margin:0}
  .informe{gap:0;display:block}
  .hoja{box-shadow:none;break-after:page}
  .informe:last-child .h2{break-after:auto}
}

.enc .cole{display:block;font-size:1.75em;letter-spacing:.06em;color:#0f5e7a;line-height:1.15;margin-bottom:2px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.grid3 .card{display:flex;flex-direction:column;gap:4px}.big{font-size:24px;font-variant-numeric:tabular-nums}
.matriz td.lv{padding:3px 2px}.matriz .lv input{width:2.1em;height:2.1em;text-align:center;font-weight:700;text-transform:uppercase;padding:0;caret-color:transparent}
.matriz .lv input[data-l=S]{background:#e2f4ea;color:#1e7d46}.matriz .lv input[data-l=A]{background:#e3f0f5;color:#0f5e7a}.matriz .lv input[data-l=B]{background:#fcefdf;color:#b5600b}.matriz .lv input[data-l=L]{background:#fbe5e3;color:#b3261e}
.matriz .lv input.auto{font-weight:400;opacity:.75}
.matriz th.tema{cursor:help;min-width:2.4em}.matriz td.nom{min-width:12em}
.matriz tr.alerta td{background:#fff8db}.aviso{display:block;color:#8a5a00;font-size:12px}
.guia{position:sticky;bottom:0;z-index:5;background:var(--paper);border:1px solid var(--line);border-radius:8px 8px 0 0;box-shadow:0 -4px 14px rgba(0,0,0,.12);padding:10px 12px;display:flex;flex-direction:column;gap:6px;margin-bottom:-60px;padding-bottom:max(10px,env(safe-area-inset-bottom))}
.guia #g-ops{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:6px}
.guia .op{display:flex;gap:8px;text-align:left;align-items:flex-start;background:var(--bg);color:var(--ink);border:2px solid transparent;border-radius:6px;padding:6px 8px;font-size:13.5px;line-height:1.35}
.guia .op b{font-size:15px;min-width:1.2em}
.guia .op[data-l=S] b{color:#1e7d46}.guia .op[data-l=A] b{color:#0f5e7a}.guia .op[data-l=B] b{color:#b5600b}.guia .op[data-l=L] b{color:#b3261e}
.guia .op.sel{border-color:var(--accent);background:var(--accent-soft)}
@media (max-width:700px){
  main.in{padding-block:14px 80px}
  .matriz .lv input{width:2.3em;height:2.3em;font-size:16px}
  .matriz input.nota{font-size:16px;width:3.6em}
  .matriz td.nom{min-width:8.5em;font-size:14px}
  .matriz th,.matriz td{padding:5px 4px}
  .guia{margin-inline:-16px;border-radius:0}
  .guia #g-ops{grid-template-columns:1fr}
  .guia .op{font-size:13px;padding:5px 7px}
  .top .in{gap:2px 8px}.top a{padding:3px 6px;font-size:14px}.brand{width:100%}
}
.ayuda summary{cursor:pointer;color:var(--accent);font-weight:600}
.guia{max-height:46vh;overflow:auto}
@media (max-width:700px){
  .matriz td.nom,.matriz th:nth-child(2){position:sticky;left:0;background:var(--paper);z-index:1;box-shadow:2px 0 4px rgba(0,0,0,.06)}
  .matriz th:nth-child(2){background:var(--accent-soft)}
  .matriz td:first-child,.matriz th:first-child{display:none}
}
