.react-island{min-width:0}.shell-empty-state{border:1px solid #dee2e6;border-radius:8px;background:#fff;padding:1.5rem}.app-nav{min-width:0}.app-nav .nav-link{border-radius:6px;color:#495057;font-weight:500;line-height:1.2;padding:.5rem .75rem}.app-nav .nav-link:hover,.app-nav .nav-link:focus{background:#f1f3f5;color:#212529}.app-nav .nav-link.active{background:var(--bs-primary-bg-subtle);color:var(--bs-primary)}.app-nav .dropdown-item.active,.app-nav .dropdown-item:active{background:var(--bs-primary);color:#fff}.navbar-account{margin-top:.75rem}.teacher-dashboard-shell{min-width:0}.student-status-list,.teacher-roster-list{display:grid;gap:.75rem}.student-status-row,.teacher-roster-row{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;padding:.75rem 0;border-top:1px solid #dee2e6}.student-status-row:first-child,.teacher-roster-row:first-child{border-top:0;padding-top:0}.teacher-roster-row{min-height:5.25rem;align-items:center}.teacher-roster-row.is-missing,.teacher-roster-row.is-missing .teacher-roster-name{color:#6c757d}.teacher-roster-row.is-flashing{animation:teacher-roster-flash 2.2s ease-out}.teacher-roster-name{color:#212529;font-size:1.35rem;font-weight:700;line-height:1.2}.teacher-roster-meta{color:#6c757d;font-size:.95rem;margin-top:.25rem}.student-status-actions{display:grid;gap:.5rem}.teacher-roster-actions{display:flex;flex-wrap:wrap;gap:.5rem}.teacher-roster-icon-button{display:inline-grid;width:2.75rem;min-width:2.75rem;place-items:center}.teacher-roster-sad-icon{width:1.35rem;height:1.35rem}.teacher-roster-sad-icon circle:first-child,.teacher-roster-sad-icon path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.teacher-roster-sad-icon circle:not(:first-child){fill:currentColor}.teacher-modal-backdrop{position:fixed;z-index:1080;inset:0;display:grid;place-items:center;padding:1rem;background:#2125298c}.teacher-modal{width:min(100%,34rem);border:1px solid #dee2e6;border-radius:8px;background:#fff;box-shadow:0 1rem 3rem #21252933;padding:1rem}.teacher-modal-header,.teacher-modal-footer{display:flex;align-items:start;justify-content:space-between;gap:1rem}.teacher-modal-header{margin-bottom:1rem}.teacher-modal-footer{justify-content:flex-end;margin-top:1rem}@keyframes teacher-roster-flash{0%{background:#d1e7dd;box-shadow:inset 4px 0 #198754}55%{background:#e9f7ef;box-shadow:inset 4px 0 #198754}to{background:transparent;box-shadow:inset 0 0 0 transparent}}.lesson-candidate-button.active .text-secondary{color:inherit!important}@media(min-width:768px){.student-status-row,.teacher-roster-row{grid-template-columns:minmax(0,1fr) minmax(20rem,24rem);align-items:center}.teacher-roster-actions{justify-content:flex-end}}@media(min-width:992px){.navbar-account{margin-top:0;margin-left:auto}}.student-checkin-page{min-height:calc(100vh - 57px)}.student-checkin-shell{padding:1rem 0 2rem}.student-qr-name{font-weight:600}.student-qr-preview{position:relative;display:grid;min-height:18rem;overflow:hidden;place-items:center;border:1px solid #dee2e6;border-radius:8px;background:#111827;color:#f8f9fa}.student-qr-preview.is-active{min-height:22rem}.student-qr-camera{width:100%}.student-qr-camera video{width:100%!important;min-height:22rem;object-fit:cover}.student-qr-preview-placeholder{color:#ced4da;font-weight:600}.student-qr-result{background:#fff}.student-qr-fallback{font-size:.925rem}.kiosk-page{min-height:100vh;background:#f5f7fb}.kiosk-app{min-height:100dvh;display:grid;grid-template-rows:50dvh 50dvh;background:#f5f7fb}.kiosk-half{min-height:0;padding:.5rem}.kiosk-qr-half{position:relative;display:flex;align-items:center;justify-content:center;border-bottom:1px solid #d7dde8;background:#fff}.kiosk-qr-content{display:grid;width:100%;height:100%;place-items:center}.kiosk-status-pills{position:absolute;top:1rem;right:1rem;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.kiosk-status-pills .badge{font-size:.95rem;padding:.55rem .7rem}.kiosk-qr-frame{display:grid;place-items:center;width:min(calc(50dvh - 1rem),calc(100vw - 1rem));max-width:100%;aspect-ratio:1;justify-self:center;border:1px solid #d7dde8;border-radius:8px;background:#fff;padding:.75rem}.kiosk-qr-frame img{width:100%;height:100%;object-fit:contain}.kiosk-qr-placeholder{display:grid;place-items:center;width:100%;height:100%;border:2px dashed #b7c0ce;border-radius:8px;color:#6c757d;font-weight:700;text-align:center}.kiosk-recent-half{display:grid;grid-template-rows:auto minmax(0,1fr);gap:1rem;width:min(100%,1180px);margin:0 auto}.kiosk-recent-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.kiosk-recent-header h2{margin:0;font-size:1.6rem}.kiosk-recent-header p{margin:.2rem 0 0;color:#6c757d}.kiosk-recent-list{display:grid;gap:.65rem;align-content:start;margin:0;padding:0;list-style:none}.kiosk-recent-list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:3.75rem;border:1px solid #d7dde8;border-radius:8px;background:#fff;padding:.75rem 1rem}.kiosk-recent-list li div{display:flex;align-items:center;gap:.5rem;min-width:0}.kiosk-recent-list strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.25rem}.kiosk-recent-list span{color:#6c757d;font-size:.95rem;white-space:nowrap}.kiosk-empty-recent{display:grid;place-items:center;min-height:12rem;border:1px dashed #b7c0ce;border-radius:8px;color:#6c757d;font-size:1.2rem;font-weight:600}@media(max-width:575.98px){.student-checkin-shell{padding-top:.5rem}.student-qr-preview,.student-qr-preview.is-active{min-height:19rem}.student-qr-camera video{min-height:19rem}}@media(min-width:992px){.kiosk-half{padding:.75rem}}@media(max-width:767.98px){.kiosk-qr-content{justify-items:center;text-align:center}.kiosk-qr-frame{width:min(calc(50dvh - 1rem),calc(100vw - 1rem))}.kiosk-recent-list strong{font-size:1rem}}
