:root{--brand:#0b2a5b;--brand-2:#143d85;--ok:#198754;--bad:#dc3545}
body{background:#fff;color:#1b2430;font-size:1rem}
.app-nav{background:var(--brand)}
.btn-primary{background:var(--brand);border-color:var(--brand)}
.btn-primary:hover,.btn-primary:focus{background:var(--brand-2);border-color:var(--brand-2)}
.btn-lg{min-height:56px}
.form-control,.form-select{min-height:48px}
.auth-card{max-width:440px;margin:6vh auto 0}
.auth-card .card{border:1px solid #e3e8ef;border-radius:16px;box-shadow:0 6px 24px rgba(11,42,91,.08)}
.badge-inside{background:var(--ok)}.badge-outside{background:var(--brand)}.badge-unknown{background:#6c757d}
.qr-card{max-width:360px;margin:0 auto;border:2px solid var(--brand);border-radius:18px;padding:1.25rem;text-align:center}
.qr-card img{width:100%;max-width:300px;image-rendering:pixelated}
.student-photo{width:120px;height:120px;object-fit:cover;border-radius:50%;border:3px solid #e3e8ef}
@media print{.app-nav,.no-print,.alert{display:none!important}.qr-card{border:1px solid #000}}
.scan-root{max-width:520px}
.scan-btn{min-height:68px;font-size:1.4rem;border-radius:16px}
.scan-viewport{position:relative;border-radius:18px;overflow:hidden;background:#000;aspect-ratio:1/1}
.scan-viewport video{width:100%;height:100%;object-fit:cover}
.scan-frame{position:absolute;inset:14%;border:4px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.35);pointer-events:none}
.done-icon{width:96px;height:96px;margin:0 auto 12px;border-radius:50%;background:var(--ok);color:#fff;font-size:3.5rem;line-height:96px}
.done-list{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;text-align:left;max-width:360px;margin:0 auto 1.5rem}
.done-list dt{color:#6c757d;font-weight:500}.done-list dd{margin:0;font-weight:600}
