.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}.lesson-now-panel{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem .75rem;padding-block:.55rem}.lesson-now-panel .dashboard-panel-header{flex:1 1 24rem;gap:.5rem;margin-bottom:0}.lesson-now-panel h2{font-size:1rem;line-height:1.15}.teacher-dashboard-metrics .metric-card{min-height:3.125rem}.teacher-dashboard-metric{display:grid;grid-template-columns:2rem minmax(0,1fr) auto;align-items:center;gap:.5rem;padding:.45rem .65rem}.teacher-dashboard-metric .metric-label{font-size:.82rem;line-height:1.1}.teacher-dashboard-metric .metric-value{font-size:1.45rem;line-height:1}.teacher-dashboard-metric-icon{display:grid;width:1.75rem;height:1.75rem;border-radius:999px;place-items:center}.teacher-dashboard-metric-icon svg{width:1.05rem;height:1.05rem}.teacher-dashboard-metric-icon svg,.teacher-roster-sad-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.teacher-dashboard-metric-success .teacher-dashboard-metric-icon{background:#d1e7dd;color:#0f5132}.teacher-dashboard-metric-warning .teacher-dashboard-metric-icon{background:#fff3cd;color:#664d03}.teacher-dashboard-metric-info .teacher-dashboard-metric-icon{background:#cff4fc;color:#055160}.teacher-roster-search{flex:1 1 16rem;max-width:24rem}.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-lesson-details-modal{width:min(100%,84rem);max-height:calc(100vh - 2rem);overflow:auto}.teacher-lesson-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem}.teacher-lesson-summary-item{border:1px solid #dee2e6;border-radius:6px;background:#f8f9fa;padding:.5rem}.teacher-lesson-status-list{display:grid;gap:.35rem;max-height:24rem;overflow:auto}.teacher-lesson-status-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid #dee2e6;border-radius:6px;padding:.55rem .65rem}.teacher-lesson-status-row.needs-attention{background:#fff3cd;border-color:#ffda6a}.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}.teacher-lessons-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.teacher-lessons-class-name{color:#495057;font-size:.95rem;font-weight:600}.teacher-lessons-class-name .form-select{min-width:12rem}.teacher-weekly-timetable{overflow-x:auto}.teacher-weekly-grid{display:grid;min-width:48rem;border:1px solid #dee2e6;border-radius:8px;overflow:hidden}.teacher-weekly-grid>.contents{display:contents}.teacher-weekly-corner,.teacher-weekly-day,.teacher-weekly-time,.teacher-weekly-cell{border-right:1px solid #dee2e6;border-bottom:1px solid #dee2e6;background:#fff}.teacher-weekly-day,.teacher-weekly-time{padding:.55rem;background:#f8f9fa;font-weight:600}.teacher-weekly-day{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.teacher-weekly-day-add,.teacher-weekly-lesson-edit-button{display:inline-grid;place-items:center;width:1.75rem;height:1.75rem;border:1px solid #ced4da;border-radius:6px;background:#fff;color:#212529;line-height:1}.teacher-weekly-day-add:hover,.teacher-weekly-day-add:focus,.teacher-weekly-lesson-edit-button:hover,.teacher-weekly-lesson-edit-button:focus{border-color:var(--bs-primary);color:var(--bs-primary)}.teacher-weekly-time{color:#495057;font-size:.85rem}.teacher-weekly-cell{display:grid;align-content:start;gap:.35rem;min-height:5rem;padding:.35rem}.teacher-weekly-cell.is-drop-target{background:#fcfcfd}.teacher-weekly-cell.is-drop-preview{background:#e7f1ff;outline:2px solid rgba(13,110,253,.35);outline-offset:-2px}.teacher-weekly-lesson{position:relative;display:grid;width:100%;min-height:4.2rem;border:1px solid #ced4da;border-radius:6px;background:#fff;color:#212529;padding:.45rem .5rem;text-align:left}.teacher-weekly-lesson.is-editable{cursor:grab;padding-right:2.4rem}.teacher-weekly-lesson.is-editable:active{cursor:grabbing}.teacher-weekly-lesson.is-locked{opacity:.68}.teacher-weekly-lesson-edit-button{position:absolute;top:.35rem;right:.35rem;width:1.55rem;height:1.55rem;font-size:.9rem}.teacher-weekly-drop-message{border:1px dashed #86b7fe;border-radius:6px;background:#fff;color:#0d6efd;font-size:.8rem;padding:.35rem .45rem}.teacher-weekly-lesson:hover,.teacher-weekly-lesson:focus{border-color:var(--bs-primary)}.teacher-weekly-lesson.is-selected{border-color:var(--bs-primary);box-shadow:inset 0 0 0 1px var(--bs-primary)}.teacher-weekly-lesson.is-current{border-color:#198754;background:#d1e7dd}.teacher-timetable-edit-modal{width:min(100%,32rem)}@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(max-width:767.98px){.teacher-lesson-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lesson-now-panel{display:block}.teacher-roster-search{max-width:none;width:100%}}@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}}.admin-crud-shell{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:1rem}.admin-crud-nav{align-self:start;display:grid;gap:1rem}.admin-crud-content{min-width:0}@media(max-width:991.98px){.admin-crud-shell{grid-template-columns:1fr}}
