:root{--navy:#133555;--navy2:#1b476e;--ink:#182b40;--muted:#63778e;--bg:#f3f7fb;--white:#fff;--line:#e0e8f1;--blue:#2163a2;--aqua:#147c89;--green:#14805b;--orange:#a76b13;--red:#b53d4d;--shadow:0 8px 30px rgba(22,59,97,.06)}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}h1,h2,h3,p{margin-top:0}h1{font-size:26px;line-height:1.24;letter-spacing:-.03em}h2{font-size:16px;letter-spacing:-.01em;margin-bottom:13px}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}input,textarea,select{width:100%;border:1px solid #cbd8e5;border-radius:9px;background:#fff;color:var(--ink);padding:10px 12px;min-height:40px;outline:none}input:focus,select:focus,textarea:focus{border-color:#4a9ed9;box-shadow:0 0 0 3px #c1e5ff88}textarea{resize:vertical;min-height:85px}label{font-size:12px;font-weight:700;display:grid;gap:6px;line-height:1.3}table{border-collapse:collapse;width:100%;white-space:nowrap;font-size:12px}th{background:#eff4fa;color:#33516d;letter-spacing:.01em;position:sticky;top:0;z-index:1}td,th{border-bottom:1px solid #e8eef4;padding:10px 12px;text-align:left}td{vertical-align:middle}.table-scroll{width:100%;overflow:auto;max-height:560px;border-radius:10px;border:1px solid var(--line)}.table-scroll table{min-width:590px}.sidebar{position:fixed;width:252px;inset:0 auto 0 0;background:linear-gradient(180deg,#123759 0%,#122d48 100%);color:white;padding:20px 14px 18px;display:flex;flex-direction:column;z-index:7}.brand{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:900;letter-spacing:.01em;padding:8px 7px 13px}.brand strong{color:#80d4ca}.brand small{display:block;font-size:10px;font-weight:500;letter-spacing:.16em;color:#aec3d5}.brand-emblem,.logo-square{width:42px;height:42px;border-radius:12px;background:#fff;color:var(--navy);display:grid;place-items:center;font-size:23px;letter-spacing:-.1em;font-weight:900}.brand-emblem span,.logo-square span{font-size:13px;color:#178271}.school-chip{margin:8px 8px 22px;padding:10px 12px;border:1px solid #476582;border-radius:10px;font-size:12px;color:#d8e5f0;line-height:1.35}nav{display:grid;gap:5px}nav button{background:transparent;border:0;color:#d4e4f4;border-radius:10px;padding:11px 12px;text-align:left;display:flex;align-items:center;gap:11px;font-size:12px;font-weight:650}nav button span{font-size:21px;font-weight:700;line-height:1}nav button.active,nav button:hover{background:#2b5377;color:white}.side-footer{margin-top:auto;border-top:1px solid #355571;padding:17px 12px 0;display:grid;font-size:13px;font-weight:650}.side-footer small{font-size:11px;color:#a9c9de;margin-bottom:7px}.text-btn{background:transparent;border:0;color:#d6f0ee;text-align:left;padding:4px 0}.workspace{margin-left:252px;min-height:100vh;display:flex;flex-direction:column}.topbar{padding:26px 32px 20px;background:linear-gradient(110deg,#ffffff,#f7fbff);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:18px}.topbar h1{margin:4px 0 3px}.topbar p{margin:0;color:var(--muted);font-size:12px}.eyebrow{font-size:10px;letter-spacing:.13em;color:var(--aqua);font-weight:900}.top-right{display:flex;flex-direction:column;align-items:flex-end;gap:7px}.live-dot{color:var(--green);font-size:11px;font-weight:800}.date-pill{background:#eaf0f8;border:1px solid #dce6f0;padding:7px 11px;border-radius:8px;font-size:11px;color:#36536f}main{padding:23px 32px 40px;flex:1;min-width:0}.page{display:none}.page.active{display:block}.page-actions{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:16px;justify-content:space-between}.page-actions>label,.field-inline{max-width:220px;min-width:165px}.search-row,.button-line,.form-grid{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.search-row label{min-width:150px}.search-row label:first-child{min-width:220px}.button-line{align-items:center}.btn{border:0;padding:10px 14px;min-height:40px;border-radius:9px;font-size:12px;font-weight:800;display:inline-flex;justify-content:center;align-items:center;gap:7px;white-space:nowrap}.btn.primary{background:var(--blue);color:white;box-shadow:0 5px 15px #2163a21e}.btn.primary:hover{background:#19578f}.btn.outline{background:white;color:#1d5b95;border:1px solid #bbd2e9}.btn.ghost{background:#edf3fa;color:var(--navy)}.btn.small{padding:7px 10px;min-height:32px;font-size:11px}.btn.large{padding:14px 18px;font-size:14px;min-height:48px}.btn.red{background:#feecef;color:#a72a41}.panel{background:var(--white);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:20px;min-width:0}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:15px}.panel-title h2{margin:0}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:16px}.metric{border:1px solid var(--line);background:white;border-radius:13px;padding:18px;box-shadow:var(--shadow);position:relative;overflow:hidden}.metric:before{content:'';display:block;position:absolute;width:4px;left:0;top:0;bottom:0;background:#629dcc}.metric.good:before{background:#3ba279}.metric.warn:before{background:#e2a747}.metric.bad:before{background:#cd6876}.metric .metric-label{color:var(--muted);font-size:11px;font-weight:700}.metric strong{display:block;font-size:28px;line-height:1.3;letter-spacing:-.04em;margin:7px 0}.metric small{color:#8797a8;font-size:11px}.columns{display:grid;gap:16px}.cols-2{grid-template-columns:1.15fr .85fr}.lower{margin-top:15px}.muted{color:var(--muted)}.small{font-size:11px}.tiny{font-size:11px;color:var(--muted);line-height:1.5}.info-bar,.soft-warning{padding:12px 14px;background:#ecf5fa;border-left:3px solid #51a6bd;border-radius:8px;color:#41617b;font-size:12px;margin-top:16px}.soft-warning{background:#fff7e8;border-color:#e1ae50;color:#765f3c}.recent-list{display:grid;gap:9px}.recent-card{display:flex;gap:11px;align-items:center;border:1px solid #e9eff6;border-radius:10px;padding:10px}.avatar{display:grid;place-items:center;background:#e7f1fc;color:#28618e;border-radius:11px;width:41px;height:41px;flex:none;font-weight:800}.avatar img{width:41px;height:41px;object-fit:cover;border-radius:11px}.recent-card .recent-meta{flex:1;min-width:0}.recent-card strong{display:block;font-size:12px;white-space:normal}.recent-card small{color:var(--muted)}.tag{font-size:11px;font-weight:850;border-radius:7px;padding:4px 8px;display:inline-flex;justify-content:center;min-width:29px}.tag.present{background:#e3f7ed;color:#178358}.tag.late{background:#fff0db;color:#a96f13}.tag.absent{background:#ffeced;color:#b83d4a}.tag.just{background:#e9efff;color:#385fbc}.tag.pending{background:#eef1f5;color:#647286}.group-stat{margin-bottom:14px}.group-stat:last-child{margin-bottom:0}.progress{height:8px;border-radius:15px;background:#ecf1f6;overflow:hidden;margin:6px 0}.progress span{display:block;height:100%;background:#218b7c;border-radius:15px}.scanner-panel .scan-form{display:grid;gap:10px;margin:18px 0}.scan-form input{font-size:18px;border:2px solid #aac7df;padding:14px}.camera-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}#camera{display:none;width:100%;max-height:320px;object-fit:cover;border-radius:12px;margin-top:12px;background:#112338}.scan-placeholder{text-align:center;min-height:260px;padding:27px 10px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;color:#658096}.scan-placeholder strong{color:var(--ink);font-size:18px}.placeholder-icon{font-size:68px;line-height:1;color:#78a5cb}.scan-result{text-align:center;padding:15px;border-radius:12px}.scan-result.ok{background:#f0faf5}.scan-result.late{background:#fffaed}.scan-result.duplicate{background:#f3f6fc}.scan-result.error{background:#fff0f1}.scan-photo{height:115px;width:115px;object-fit:cover;border-radius:13px;margin:5px auto 11px;border:3px solid white;box-shadow:0 2px 10px #0001;display:block}.scan-identity{font-size:20px;font-weight:900}.scan-clock{font-size:28px;font-weight:900;color:var(--navy);margin:8px 0}.scan-caption{font-weight:750;font-size:12px}.pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding-top:14px;color:var(--muted);font-size:12px}.group-pills{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.group-pill{border:1px solid #cbdde8;border-radius:8px;padding:6px 9px;background:#f6fafd;font-size:11px;font-weight:750}.group-form{display:flex;gap:10px;align-items:end}.group-form input{flex:1}.stack{display:grid;gap:14px}.stack .form-grid{align-items:stretch}.form-grid>*{flex:1;min-width:150px}.matrix-wrap{max-height:68vh}.matrix-wrap table{font-size:10px;width:max-content;min-width:100%}.matrix-wrap td,.matrix-wrap th{padding:6px 8px;border-right:1px solid #e6ecf1;text-align:center}.matrix-wrap th:first-child,.matrix-wrap td:first-child,.matrix-wrap th:nth-child(2),.matrix-wrap td:nth-child(2){position:sticky;z-index:2;text-align:left;background:white}.matrix-wrap th:first-child,.matrix-wrap td:first-child{left:0;min-width:90px}.matrix-wrap th:nth-child(2),.matrix-wrap td:nth-child(2){left:90px;min-width:180px}.matrix-wrap th:first-child,.matrix-wrap th:nth-child(2){background:#eff4fa;z-index:3}.matrix-wrap thead th{top:0}.matrix-wrap td.status-cell{font-weight:900;font-size:14px}.status-cell.present{color:#1d945b;background:#f0fbf6}.status-cell.absent{color:#c34d59;background:#fff4f4}.status-cell.late{color:#b97813;background:#fffaed}.status-cell.just{color:#506dc0;background:#f1f5ff}.status-cell.pending{color:#96a5b4}.matrix-totals{font-weight:900;background:#e6f0f9}.selected-student{background:#eaf5fb;padding:11px;border-radius:9px;color:#204d70;font-weight:800;font-size:12px}.search-results{max-height:180px;overflow:auto}.search-results button{display:block;width:100%;text-align:left;background:white;padding:9px;border:1px solid var(--line);font-size:12px;border-radius:8px;margin-bottom:5px}.user-list,.audit-list{max-height:220px;overflow:auto;display:grid;gap:8px;margin-bottom:14px}.user-line,.audit-line{border:1px solid #e8eef6;border-radius:9px;padding:9px 11px;font-size:11px}.user-line strong{display:block}.user-line span{color:var(--muted)}.footer{border-top:1px solid var(--line);padding:17px 30px;color:#7f91a4;font-size:11px}.auth-cover{position:fixed;inset:0;background:radial-gradient(circle at top left,#2c6c92 0,#113556 52%,#0d243e 100%);z-index:25;display:grid;place-items:center;overflow:auto;padding:24px}.auth-cover[hidden],#app[hidden],#modalRoot[hidden],#loginForm[hidden],#setupPanel[hidden]{display:none!important}.auth-card{background:white;border-radius:20px;padding:34px;width:min(460px,100%);box-shadow:0 25px 100px #0003}.auth-card .logo-square{background:#ecf5ff;margin-bottom:14px}.auth-card h1{font-size:24px;margin:0 0 8px}.auth-card>p{color:var(--muted);font-size:13px}.auth-note{background:#f1f7fc;color:#35536f;border-left:3px solid #529cce;padding:11px;border-radius:7px;font-size:12px;margin:13px 0}.auth-card .stack{margin:20px 0}#modalRoot{position:fixed;z-index:35;inset:0;display:grid;place-items:center;padding:15px}.modal-backdrop{position:absolute;inset:0;background:#0c1a2bc2}.modal{position:relative;background:white;border-radius:15px;max-width:620px;width:100%;max-height:92vh;overflow:auto;padding:23px;box-shadow:0 14px 75px #0005}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:10px}.modal-header h2{font-size:20px;margin:0 0 17px}.icon-close{border:0;background:#edf3f9;border-radius:8px;font-size:25px;width:35px;height:35px}.credential{border:2px solid #c9dce9;border-radius:15px;padding:18px;max-width:380px;margin:auto;text-align:center}.credential h3{margin:6px 0 4px}.credential .qr-svg{width:204px;height:204px;display:block;margin:15px auto}.credential .cred-group{font-weight:850;color:var(--blue)}.credential .cred-foot{font-size:10px;color:var(--muted)}.modal-actions{display:flex;gap:8px;justify-content:center;margin-top:16px;flex-wrap:wrap}#toast{display:none;position:fixed;bottom:20px;right:20px;z-index:80;background:#173b5d;color:white;padding:14px 18px;border-radius:11px;max-width:390px;box-shadow:0 10px 50px #0004;font-size:13px}#toast.error{background:#923446}@media(max-width:1140px){.metrics{grid-template-columns:repeat(2,1fr)}.cols-2{grid-template-columns:1fr}.sidebar{width:214px}.workspace{margin-left:214px}.topbar{padding:21px}.topbar h1{font-size:22px}main{padding:18px}}@media(max-width:760px){.sidebar{position:relative;inset:auto;width:100%;height:auto;padding:10px 10px 5px}.brand{padding:2px 4px 8px;font-size:14px}.brand-emblem{width:34px;height:34px;font-size:19px}.school-chip,.side-footer{display:none}nav{display:flex;overflow:auto;gap:5px;padding-bottom:5px}nav button{flex:none;padding:9px;font-size:11px;white-space:nowrap}nav button span{font-size:17px}.workspace{margin-left:0}.topbar{padding:15px;align-items:start}.topbar h1{font-size:21px}.top-right{display:none}main{padding:14px}.page-actions{align-items:stretch}.search-row{width:100%;flex-wrap:wrap}.search-row label{min-width:calc(50% - 10px)!important;flex:1}.button-line{width:100%}.panel{padding:13px}.metric{padding:13px}.metric strong{font-size:24px}.footer{padding:14px}.auth-card{padding:23px}}@media print{body{background:white}.sidebar,.topbar,.page-actions,.footer,.info-bar,.soft-warning,.btn,.modal-backdrop,#toast,#auth,.page:not(.active){display:none!important}.workspace{margin:0}.panel{box-shadow:none;border:0}.printable{padding:0}main{padding:0}.matrix-wrap{max-height:none;overflow:visible}.matrix-wrap table{width:100%;min-width:0;font-size:8px}.matrix-wrap th,.matrix-wrap td{position:static!important;padding:4px}.matrix-wrap td:first-child,.matrix-wrap th:first-child{min-width:0}.matrix-wrap td:nth-child(2),.matrix-wrap th:nth-child(2){min-width:0}@page{size:A4 landscape;margin:8mm}}
@media print{body.printing-credential #app,body.printing-credential #auth{display:none!important}body.printing-credential #modalRoot{position:static;display:block;padding:0}body.printing-credential .modal{box-shadow:none;max-height:none;border:0;width:100%;padding:0}body.printing-credential .modal-header,body.printing-credential .modal-actions,body.printing-credential .modal .tiny,body.printing-credential #closeModal{display:none!important}body.printing-credential .credential{margin:30mm auto;width:90mm}}

.mobile-logout{display:none!important}@media(max-width:760px){.mobile-logout{display:inline-flex!important;padding:8px 10px;min-width:82px;white-space:normal;font-size:10px;flex-shrink:0}.topbar>div:first-child{min-width:0}.topbar h1{font-size:18px}}

.report-brand{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px;border-bottom:2px solid #295483;margin-bottom:18px;text-align:center}.report-brand>div{flex:1}.report-brand h2{font-size:19px;margin:0 0 7px;color:#173e62}.report-brand p{margin:3px;color:#3b5267;font-size:12px}.report-brand img{max-width:95px;max-height:90px;object-fit:contain}.report-brand img[hidden]{display:none}.logo-settings{margin-top:16px;display:grid;gap:10px}.logo-previews{display:flex;gap:15px}.logo-previews img{max-width:100px;height:75px;object-fit:contain;border:1px solid #cdd8e3;border-radius:8px;padding:5px}.logo-previews img[hidden]{display:none}@media print{.report-brand{padding:8px 0}.report-brand h2{font-size:15px}.report-brand img{max-height:60px}}

/* Filtro de estados y totales acumulados, también visibles en impresión. */
.filter-panel{background:#f3f8fd;border:1px solid #cbdce9;padding:15px 18px;border-radius:13px;margin:0 0 17px}
.filter-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;font-size:13px;color:#183e61}.filter-title span{font-size:11px;color:#53718a}
.filter-options{display:flex;gap:9px;flex-wrap:wrap;margin:11px 0 4px}.filter-options label{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #c8d9e7;border-radius:9px;padding:8px 11px;font-size:12px;font-weight:750;cursor:pointer}.filter-options input{width:17px;height:17px;margin:0;accent-color:#176b95}
.filter-note{margin:9px 0 0;color:#526b80}.report-total-panel{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:14px 0;border:1px solid #bed7e7;background:#ebf5fc;padding:11px 14px;border-radius:11px;font-size:12px;color:#183f61}
.report-total-panel strong{font-size:18px;color:#103e61}.report-total-panel .muted{font-size:11px}.matrix-wrap tr.matrix-totals td{background:#e4f2f5;color:#153956}.matrix-wrap tr.matrix-grand-total td{background:#183f61;color:white;font-weight:900;font-size:12px}.matrix-wrap tr.matrix-grand-total td:first-child,.matrix-wrap tr.matrix-grand-total td:nth-child(2){background:#183f61;color:white}
@media print{.filter-panel{display:none!important}.report-total-panel{border:1px solid #aaa;background:#f0f5f9;break-inside:avoid}}

/* V1.4 · Navegación inferior y panel de Control Escolar */
#app .sidebar{position:fixed!important;inset:auto 0 0 0!important;width:100%!important;height:auto!important;min-height:74px;padding:7px max(10px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:#fff;color:#33536c;box-shadow:0 -7px 36px #15395916;border-top:1px solid #deebf2;display:block;z-index:22}
#app .sidebar>.brand,#app .sidebar>.school-chip,#app .sidebar>.side-footer{display:none!important}
#app #navigation{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));width:min(720px,100%);margin:0 auto;gap:5px}
#app #navigation button{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:1px;font-size:11px;line-height:1.15;border-radius:12px;padding:9px 4px;min-height:52px;color:#5c7489;background:transparent;white-space:normal}
#app #navigation button[hidden]{display:none!important}
#app #navigation button span{font-size:23px;line-height:1.12;color:#477292}
#app #navigation button.active,#app #navigation button:hover{color:#fff;background:#174b76}
#app #navigation button.active span,#app #navigation button:hover span{color:#fff}
#app .workspace{margin-left:0!important;padding-bottom:calc(78px + env(safe-area-inset-bottom));min-height:100vh}
#app .topbar{padding:20px max(19px,calc((100vw - 1380px)/2)) 18px;background:#fff}
#app .topbar h1{font-size:29px;margin:1px 0 3px}
#app .topbar .welcome{color:#214562;font-weight:850;font-size:16px}
#app .top-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}
#app .bell-button{width:46px;height:46px;display:grid;place-items:center;border:1px solid #d4e4ee;border-radius:14px;background:#f5f9fc;color:#17527a;font-size:26px;position:relative}
#app .bell-button:before{content:'♧';display:none}
#app .bell-badge{position:absolute;right:-5px;top:-5px;background:#d75c4c;color:white;font-size:11px;border:2px solid white;border-radius:50%;min-width:22px;line-height:18px;text-align:center;font-weight:900}
#app .bell-badge[hidden]{display:none!important}
#app main{max-width:1500px;width:100%;margin:0 auto;padding:25px 32px 45px}
#app .home-hero{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:22px 26px;margin-bottom:20px;background:linear-gradient(122deg,#173b60,#276488);border-radius:18px;color:white;box-shadow:0 11px 30px #113a571f}
#app .home-hero .eyebrow{color:#bee6d8}#app .home-hero h2{font-size:23px;margin:6px 0}#app .home-hero p{font-size:12px;color:#daedf8;margin:0}
#app .hero-mark{display:grid;place-items:center;border-radius:18px;background:#ffffff26;width:68px;height:68px;font-size:34px;font-weight:900;flex:none}
#app .home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:25px}
#app .home-card{display:flex;align-items:center;gap:17px;min-height:139px;padding:21px;text-align:left;background:white;border:1px solid #d9e6f1;border-radius:17px;box-shadow:0 7px 23px #194a7220;transition:transform .12s,box-shadow .12s}
#app .home-card:hover{transform:translateY(-2px);box-shadow:0 15px 28px #194a7225}
#app .home-card[hidden]{display:none!important}
#app .home-card>span:nth-child(2){display:flex;flex:1;flex-direction:column;gap:5px;min-width:0}
#app .home-card b{font-size:17px;color:#183e5d;letter-spacing:.01em}#app .home-card small{font-size:12px;color:#677d91}#app .home-card em{font-style:normal;font-size:11px;color:#138272;font-weight:850}
#app .home-card-wide{grid-column:span 2;min-height:120px}
#app .card-icon{font-size:30px;width:66px;height:66px;flex:none;border-radius:15px;display:grid;place-items:center}
#app .card-icon.blue{background:#e7efff;color:#355eb5}#app .card-icon.teal{background:#e5f8f3;color:#147968}#app .card-icon.purple{background:#efeafb;color:#8661ba}#app .card-icon.coral{background:#fff0eb;color:#bd6555}#app .card-icon.gold{background:#fff6df;color:#ac832a}
#app .card-arrow{color:#7b93a6;font-size:35px}
#app .notice-panel{position:fixed;right:24px;top:91px;width:min(380px,calc(100vw - 30px));max-height:75vh;overflow:auto;border:1px solid #d6e5ef;background:white;border-radius:16px;z-index:26;box-shadow:0 18px 55px #1437533c;padding:19px}
#app .notice-panel[hidden]{display:none!important}
#app .notice-card{padding:13px;border:1px solid #deebf0;border-radius:12px;margin-bottom:9px}#app .notice-card.unread{background:#f1f7fe;border-color:#acd2eb}#app .notice-card p{font-size:12px;color:#4a6579;margin:6px 0}#app .notice-card small{font-size:10px;color:#7891a4}
#app .summary-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}
#app .metric.present:before{background:#269b6d}#app .metric.late:before{background:#d49a2c}#app .metric.absent:before{background:#d25b64}#app .metric.just:before{background:#6785d0}
#app .metric.excluded{background:#e8ebef;border-color:#d7dde3;color:#8a929c}#app .metric.excluded:before{background:#bdc7d0}#app .metric.excluded .metric-label,#app .metric.excluded small{color:#858e97}#app .metric.excluded strong{color:#9099a1}
#app .metric.emphasis-total{background:#e9f6fc;border:1px solid #b5d6e8}#app .metric.emphasis-total:before{background:#1774a3}
#app .student-summary{border:1px solid #c6dce9;border-radius:12px;background:#eef8fc;color:#244f69;padding:15px;display:grid;gap:5px;font-size:12px}
#app .student-summary[hidden],#app #correctTimeBlock[hidden],#app #justRegisteredFilters[hidden]{display:none!important}
#app .linklike{background:none;border:0;color:#1a5888;text-decoration:underline;padding:0;font-weight:850;font-size:16px}
#app .success-illustration{display:grid;place-items:center;margin:5px auto 18px;border-radius:50%;background:#dff8eb;color:#16835d;font-size:44px;width:75px;height:75px}
#app .form-inline-registration{display:grid;grid-template-columns:1fr 2fr .85fr 1fr 1.35fr auto;gap:10px;align-items:end}
#app .form-inline-registration .btn{height:40px}
#app .level-settings{padding:14px;border:1px solid #d5e6ef;border-radius:12px;background:#f5f9fd;display:grid;gap:10px}
#app .level-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
#app .level-checklist label{display:flex;align-items:center;gap:8px;background:white;border-radius:9px;border:1px solid #d7e3ee;padding:9px;font-size:12px}
#app .level-checklist input{width:17px;height:17px;min-height:17px;accent-color:#1c6e9c}
#app .group-setup{display:flex;align-items:end}
#app .group-setup label{flex:1;min-width:120px}
#app .chart-hold{width:100%;border-radius:13px;border:1px solid #e4ecf2;background:#fff;padding:13px;margin:16px 0}#app #statsChart{width:100%;height:auto;max-height:530px;display:block}
#app .search-label{margin:18px 0;max-width:420px}
#app .credential-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:15px;margin:16px 0}
#app .mini-credential{display:grid;gap:8px;border:1px solid #d7e5ed;border-radius:12px;padding:17px;background:#fbfdff;justify-items:center;text-align:center}
#app .mini-credential b{font-size:13px;color:#194c74}#app .mini-credential small,#app .mini-credential span{font-size:11px;color:#62768c}
#app .mini-qr{font-size:54px;line-height:1;color:#4b7999}
#app .batch-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
#app .batch-card{padding:10px;max-width:210px;width:100%;break-inside:avoid}#app .batch-card .qr-svg{max-width:150px;max-height:150px;margin:4px auto}#app .batch-card h3{font-size:10px}#app .batch-card p{font-size:10px;margin:4px 0}
@media(max-width:1100px){#app .summary-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}#app .form-inline-registration{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){#app .topbar{padding:14px 16px;align-items:flex-start;gap:12px}#app .topbar h1{font-size:22px}#app .topbar .welcome{font-size:13px}#app .top-actions{gap:7px;align-items:flex-start}#app .top-actions #enableNotices{font-size:10px;white-space:normal;padding:7px 8px;width:92px}#app .top-actions .date-pill{display:none}#app main{padding:15px 12px 25px}#app .home-hero{padding:18px 17px}#app .home-hero h2{font-size:19px}#app .hero-mark{width:45px;height:45px;font-size:24px}#app .home-grid{gap:10px}#app .home-card{padding:12px;min-height:140px;gap:10px;flex-direction:column;text-align:center}#app .home-card .card-icon{width:42px;height:42px;font-size:23px}#app .home-card b{font-size:12px}#app .home-card small{font-size:10px}#app .home-card em{font-size:9px}#app .home-card .card-arrow{display:none}#app .home-card-wide{flex-direction:row;min-height:95px;text-align:left}#app .home-card-wide>span:nth-child(2){align-items:flex-start}#app .summary-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}#app .form-inline-registration{grid-template-columns:repeat(2,minmax(0,1fr))}#app .form-inline-registration .btn{grid-column:span 2}#app .level-checklist{grid-template-columns:1fr}#app .group-setup label{min-width:calc(50% - 10px)}#app #navigation button{font-size:10px;padding:6px 2px}#app #navigation button span{font-size:21px}#app .notice-panel{top:75px;right:9px}#app .batch-grid{grid-template-columns:1fr}}
@media print{
  #app .sidebar,#app .topbar,#app .notice-panel,#app .home-grid,#app .home-hero,#app .footer,#app .level-settings,#app .search-label{display:none!important}
  #app .workspace{padding:0;margin:0}#app main{padding:0;width:100%;max-width:none}
  #app .page.active>:not(.printable){display:none!important}
  #app #page-estadistica.active .printable,#app #page-informe.active .printable,#app #page-matriz.active .printable{display:block!important}
  #app .chart-hold{break-inside:avoid}
  #app .metric{box-shadow:none;border:1px solid #d1dbe3}
  #app .metrics{grid-template-columns:repeat(4,1fr)}
  #app .table-scroll{max-height:none;overflow:visible;border:0}#app th{position:static}
  body.printing-credential .modal .batch-grid{display:none!important}
  body.printing-credential.printing-batch .modal .batch-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:5mm}
  body.printing-credential.printing-batch .modal .batch-card{margin:0;width:100%;max-width:none;padding:3mm;min-height:52mm;page-break-inside:avoid}
  body.printing-credential.printing-batch .modal .batch-card .qr-svg{max-width:37mm;height:37mm}
  body.printing-credential.printing-batch .modal>p{display:none!important}
}

/* V1.5 · Directorio restringido y listas imprimibles */
.institution-details{display:grid;gap:12px;padding:16px;border:1px solid #dbe5f0;border-radius:12px;background:#f8fbff}.institution-details>strong{color:#173b5d}.directory-list{display:grid;gap:12px}.directory-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:15px;border:1px solid #dce6f0;border-radius:12px}.directory-student{font-size:14px;font-weight:800;color:#143c60}.directory-meta{font-size:12px;color:#60768a;margin:4px 0 10px}.directory-counts{display:flex;gap:7px;flex-wrap:wrap}.directory-counts span{padding:5px 9px;border-radius:7px;background:#f1f5fa;font-size:12px}.directory-actions{display:flex;align-items:center;gap:7px}.contact-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px;border:1px solid #e2ecf4;border-radius:9px;margin:7px 0}.contact-row strong{font-size:13px}.contact-actions{display:flex;gap:8px}.contact-actions a{display:inline-flex;align-items:center;justify-content:center;border:1px solid #b5d3c4;border-radius:9px;padding:8px 10px;color:#13674a;text-decoration:none;font-weight:750;font-size:12px}.contact-actions a:hover{background:#e5f8ed}.contact-actions a[aria-disabled="true"]{pointer-events:none;opacity:.4}.history-list{display:grid;gap:7px;margin:12px 0}.history-line{border-left:3px solid #d0e5f5;padding:7px 10px;background:#f8fbff;font-size:12px}.list-foot{font-size:11px;color:#657b8e;border-top:1px solid #b9cddc;padding-top:10px;margin-top:18px}.list-total{font-size:12px;font-weight:800;color:#203f59}.attendance-list-table{border-collapse:collapse;width:100%;font-size:11px}.attendance-list-table th,.attendance-list-table td{padding:6px 7px;border:1px solid #cbd8e5;text-align:center}.attendance-list-table td:nth-child(3),.attendance-list-table th:nth-child(3){text-align:left;min-width:175px}.attendance-list-table th{background:#eef4f9}.attendance-list-table .row-number{font-weight:800}#listInstitutionData{font-size:11px;line-height:1.5}.list-month-title{margin:14px 0 6px;font-weight:800;color:#174466}.list-month-block{break-inside:avoid;margin-bottom:16px}.list-month-block+.list-month-block{page-break-before:auto}@media(max-width:760px){.directory-item{grid-template-columns:1fr}.directory-actions{justify-content:flex-start}.institution-details .form-grid{display:grid;grid-template-columns:1fr}}
@media print{body.printing-list #app .page:not(#page-listas),body.printing-list #app .sidebar,body.printing-list #app .topbar,body.printing-list #app .footer,body.printing-list #app #page-listas>.page-actions,body.printing-list #app #page-listas>.button-line{display:none!important}body.printing-list #app #page-listas{display:block!important}body.printing-list #app #listPrintable{display:block!important;border:0;box-shadow:none;padding:0}body.printing-list #app #listPrintable .table-scroll{overflow:visible}body.printing-list .attendance-list-table{font-size:8px}body.printing-list .attendance-list-table th,body.printing-list .attendance-list-table td{padding:3px}body.printing-list #listFooter{display:block!important}body.printing-list .list-month-block{page-break-inside:avoid}@page{size:letter landscape;margin:11mm}}

/* V1.5.1 · Lista alfabética en blanco para anotaciones: numeración, nombre y cuadrícula manuscrita. */
.blank-list{table-layout:fixed;width:100%;font-size:10px}
.blank-list th:first-child,.blank-list td:first-child{width:33px;min-width:33px}
.blank-list th:nth-child(2),.blank-list td:nth-child(2){width:205px;min-width:205px;text-align:left;white-space:normal;overflow-wrap:anywhere}
.blank-list th.blank-note-head,.blank-list td.blank-note-cell{min-width:23px;padding:3px 0}
.blank-list tbody tr{height:34px}
.blank-list td.blank-note-cell{background:#fff}
.blank-list thead{display:table-header-group}
@media print{
 body.printing-list #app #listFilterPanel,body.printing-list #listSummary{display:none!important}
 body.printing-list .list-month-block{break-inside:auto;page-break-inside:auto}
 body.printing-list .blank-list tbody tr{height:29px;break-inside:avoid;page-break-inside:avoid}
 body.printing-list .blank-list th,body.printing-list .blank-list td{border:1px solid #3e5364;padding:3px 2px}
 body.printing-list .blank-list th:nth-child(2),body.printing-list .blank-list td:nth-child(2){width:205px}
 body.printing-list .blank-list th.blank-note-head,body.printing-list .blank-list td.blank-note-cell{min-width:10px}
}

/* V1.6 · Lector de contingencia, separado de la sesión administrativa */
.offline-body{margin:0;background:#eef3f8;color:#17344f;min-height:100vh}.offline-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 4vw;background:#fff;border-bottom:1px solid #dce6ef}.offline-header h1{margin:5px 0;font-size:28px}.offline-header p{margin:4px 0;color:#587084}.offline-container{max-width:1150px;margin:24px auto;padding:0 16px}.offline-container .panel{padding:24px}.offline-container #offlineVideo{width:100%;max-height:270px;display:none;border-radius:12px;margin-top:12px}.offline-status{margin:0 0 16px;color:#174a69}.offline-container #offlineFeedback{font-weight:700;font-size:18px;line-height:1.5;min-height:130px;padding:22px;white-space:pre-wrap}.offline-container #offlineFeedback.error{color:#9e211c;background:#fff0ee}.offline-container #offlineFeedback.ok{color:#155c43;background:#eaf8ed}.calendar-import{border:1px solid #c3d7ee;border-radius:12px;background:#f8fbff;padding:14px;margin:12px 0}.calendar-import h3{margin:4px 0 8px}
@media(max-width:650px){.offline-header{flex-direction:column;align-items:flex-start}.offline-header h1{font-size:23px}}

/* V1.9 · Menú de cuenta / suscripción sin saturar el móvil. */
#logout,#logoutMobile{display:none!important}
.abp-menu-toggle{width:43px;height:43px;border:1px solid #d7e4f1;background:#fff;border-radius:11px;font-size:22px;color:#204969;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.abp-account-backdrop:not([hidden]){display:block;position:fixed;inset:0;background:rgba(12,34,58,.28);z-index:75}
.abp-account-menu:not([hidden]){position:fixed;top:75px;right:20px;width:min(340px,calc(100vw - 24px));border:1px solid #d7e4ee;box-shadow:0 20px 60px rgba(15,43,70,.23);background:#fff;z-index:76;padding:14px;border-radius:16px;display:flex;flex-direction:column;gap:6px}
.abp-menu-heading{display:flex;justify-content:space-between;align-items:center;padding:4px 3px 0;color:#1b405e}
.abp-menu-heading button{background:#eff4fa;border:0;border-radius:8px;font-size:22px;height:32px;width:32px;cursor:pointer}
.abp-menu-identity{font-size:12px;color:#637b90;margin:0 3px 6px}
.abp-account-menu>button{border:0;border-radius:10px;padding:13px;text-align:left;background:transparent;color:#183d60;font:inherit;font-weight:700;cursor:pointer;min-height:43px}
.abp-account-menu>button:hover{background:#eff5fa}
.abp-account-menu>button[hidden]{display:none!important}
.abp-account-menu>.abp-menu-logout{margin-top:10px;border-top:1px solid #e1eaf2;border-radius:0;color:#a13030}
.abp-subscription-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}
.abp-prices{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}
.abp-prices>div{border:1px solid #d7e5f1;border-radius:12px;padding:15px;background:#f8fbff}
.abp-prices small{display:block;color:#658097;font-size:11px;margin-bottom:8px}
.abp-prices strong{display:block;font-size:25px;color:#174d73}.abp-prices strong span{font-size:12px;color:#6a7e8e;font-weight:500}
.abp-due{display:flex;justify-content:space-between;gap:12px;border-block:1px solid #e3edf6;padding:15px 0;margin:12px 0;font-size:13px}
.abp-payment-instructions{background:#f2f7fc;padding:14px;border-radius:11px;font-size:13px}.abp-payment-instructions p{white-space:pre-wrap;margin:8px 0 0}
.abp-status-label,.abp-payment-status{background:#f7ede0;color:#955608;padding:6px 9px;border-radius:100px;font-size:11px;font-weight:750;white-space:nowrap}
.abp-status-label[data-status="activo"],.abp-payment-status.aprobado{background:#e4f5e8;color:#176042}
.abp-status-label[data-status="cancelado"],.abp-payment-status.rechazado{background:#ffeded;color:#a02d2d}
.abp-payment-row{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #e5ecf3;padding:12px 3px}
.abp-payment-row:last-child{border-bottom:none}.abp-payment-row>div{min-width:0}.abp-payment-row small{display:block;margin-top:3px;color:#617990;overflow-wrap:anywhere}
@media(max-width:760px){.abp-account-menu:not([hidden]){top:65px;right:10px}.abp-subscription-grid{grid-template-columns:1fr}.abp-prices{gap:7px}.abp-prices>div{padding:11px}.abp-prices strong{font-size:21px}.abp-due{display:block}.abp-due strong{display:block;margin-top:5px}}
@media print{#abpAccountMenu,#abpAccountBackdrop,#hamburgerButton{display:none!important}}

/* V1.9.1 · Panel bancario oculto hasta solicitarlo desde Enviar comprobante. */
#abpAccountMenu [data-menu-page="resumen"]{display:none!important}
#abpAccountMenu button.abp-menu-logout{order:99}
#subBankToggle{width:100%;margin:10px 0 8px;justify-content:center}
#subBankDetails[hidden]{display:none!important}
#subBankDetails{margin:0 0 14px;overflow-wrap:anywhere}
#subBankDetails p{white-space:pre-wrap}

/* V1.9.3: aviso comercial visible, sin bloquear consulta de datos escolares. */
.abp-service-banner{margin:12px 24px 0;padding:14px 18px;border:1px solid #b86666;border-left:5px solid #ae3e3e;border-radius:12px;background:#fff3f0;color:#7c2323;font-size:14px;line-height:1.45;font-weight:650}
.abp-service-banner.info{border-color:#dbaf4b;border-left-color:#b88121;background:#fffaea;color:#674b1a}
@media(max-width:650px){.abp-service-banner{margin:10px 12px 0;font-size:12px}}

/* V1.9.6: estado discreto del lector universal HID */
.reader-status{font-size:12px;color:#0b755c;background:#ecf8f3;border-left:3px solid #23896d;padding:7px 10px;margin:6px 0 8px;border-radius:7px}
.reader-status.reader-warning{color:#8b5513;background:#fff7e8;border-left-color:#df972c}

.reader-calibration{border:1px solid #c8dced;background:#f5f9fe;border-radius:12px;padding:14px;margin:10px 0}
.reader-calibration h3{margin:0 0 6px;font-size:15px}
.reader-calibration-qr{max-width:280px;margin:9px auto;display:flex;justify-content:center;background:#fff;border-radius:8px;padding:10px}
.reader-calibration-qr svg{width:100%;height:auto;max-width:230px}
.reader-calibration form{margin-bottom:8px}

/* V1.9.7: datos visibles en vivo y edición breve de agenda */
.scan-live-totals{border-radius:12px;padding:9px 12px;background:#e9f4ff;color:#174d78;font-weight:700;font-size:.84rem;margin:10px 0 12px;}
.calendar-event-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.calendar-event-row>div:first-child{min-width:190px;flex:1;}
.calendar-actions{display:flex;gap:7px;flex-wrap:wrap;}
#calendarEditNote:not(:empty){background:#eaf4ff;padding:9px 12px;border-left:3px solid #2475b3;border-radius:8px;}
@media(max-width:600px){.calendar-actions{width:100%;}.calendar-actions button{flex:1;}}
