:root{--blue:#174190;--blue2:#0f2e6b;--yellow:#fbb616;--bg:#f3f6fb;--text:#1c2a3a;--muted:#68768a;--green:#15803d;--red:#b42318;--line:#dce4ef}*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}.topbar{background:linear-gradient(120deg,var(--blue2),var(--blue));color:#fff;display:flex;align-items:center;justify-content:space-between;padding:10px max(20px,calc((100% - 1280px)/2));gap:20px;box-shadow:0 4px 18px #102d6726}.brand{display:flex;align-items:center;gap:10px}.brand img{width:54px;height:54px;object-fit:contain}.brand span{display:flex;flex-direction:column;font-size:19px}.brand small{font-size:11px;font-weight:400;opacity:.8}.topbar nav{display:flex;gap:6px;flex-wrap:wrap}.topbar nav a{padding:9px 12px;border-radius:8px}.topbar nav a:hover{background:#ffffff18}.container{max-width:1280px;margin:auto;padding:26px 20px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.page-head h1{margin:0;font-size:27px}.page-head p,.panel p{color:var(--muted);margin:.3rem 0}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.cards article,.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 6px 22px #233c5b0b}.cards article{border-top:4px solid var(--blue)}.cards article.warning{border-top-color:#d97706}.cards article.danger{border-top-color:var(--red)}.cards span{display:block;color:var(--muted)}.cards b{display:block;font-size:30px;margin-top:5px}.panel{margin-bottom:20px}.panel h2{margin-top:0}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap}th{color:#526174;font-size:12px;text-transform:uppercase;background:#f8fafc}label{display:grid;gap:6px;font-weight:600;margin-bottom:14px}input,select{width:100%;padding:11px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;font:inherit}button,.button{border:0;border-radius:8px;background:var(--blue);color:#fff;padding:10px 15px;font-weight:700;cursor:pointer;display:inline-block}button:hover,.button:hover{filter:brightness(1.08)}button:disabled{opacity:.55}.secondary{background:#e8eef8;color:var(--blue)}.inline{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.inline input{width:auto}.alert{padding:12px 15px;border-radius:9px;margin-bottom:18px}.success{background:#eaf8ef;color:#166534}.danger,.error{background:#fff0ef;color:#9f2118}.warning{background:#fff7e6;color:#8a4b09}.auth-wrap{min-height:80vh;display:grid;place-items:center}.auth-card{width:min(420px,100%);background:#fff;border-radius:18px;padding:32px;box-shadow:0 18px 50px #0f2e6b20;text-align:center}.auth-card img{width:130px;height:130px;object-fit:contain}.auth-card h1{color:var(--blue);margin:6px 0}.auth-card form{text-align:left;margin-top:22px}.auth-card button{width:100%}.badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#e8eef8;color:var(--blue);font-size:12px;font-weight:700;text-transform:capitalize}.badge.pending_late,.badge.sent_home{background:#fff0ef;color:var(--red)}.badge.present,.badge.tolerance,.badge.late_admitted{background:#eaf8ef;color:var(--green)}.scanner-grid{display:grid;grid-template-columns:minmax(300px,1fr) minmax(320px,1fr);gap:20px}.result-card{text-align:center;display:grid;place-content:center;min-height:430px}.result-card img{width:180px;height:180px;object-fit:contain;margin:auto}.result-card h2{font-size:27px;margin:12px 0 2px}.result-card.success{border:2px solid #8dd5a5}.result-card.error{border:2px solid #f1aaa4}#reader{margin-top:15px;overflow:hidden;border-radius:10px}dialog{border:0;border-radius:16px;padding:28px;box-shadow:0 25px 80px #0005;text-align:center}dialog::backdrop{background:#08162d99}.dialog-close{float:right;border-radius:50%;padding:4px 11px;background:#edf1f7;color:#234}@media(max-width:850px){.topbar{align-items:flex-start;flex-direction:column}.topbar nav{width:100%;overflow:auto;flex-wrap:nowrap}.cards{grid-template-columns:repeat(2,1fr)}.scanner-grid{grid-template-columns:1fr}}@media(max-width:520px){.cards{grid-template-columns:1fr}.container{padding:18px 12px}.page-head{align-items:flex-start;flex-direction:column}.brand small{display:none}}
