:root{--bg:#0b1226;--panel:#0f172a;--card:#172036;--text:#e5e7eb;--muted:#9ca3af;--accent:#22d3ee;--ok:#34d399;--warn:#f59e0b;--danger:#f87171;--surface-0: var(--bg);--surface-1: var(--panel);--surface-2: var(--card);--surface-3: color-mix(in oklab, var(--panel) 70%, var(--bg));--border-1: #415068;--border-2: #4c5d78;--input-bg: var(--surface-3);--input-border: var(--border-1);--seat-bg: var(--surface-3);--seat-border: var(--border-2);--ui-color-scheme: dark;--btn-bg: transparent;--brand: #f59e0b;--line-1: #3d4b62;--line-2: #4c5d78;--focus-outline: color-mix(in oklab, var(--accent) 72%, #ffffff);--focus-ring: color-mix(in oklab, var(--accent) 18%, transparent);--focus-ring-strong: color-mix(in oklab, var(--accent) 24%, transparent);--date-icon-filter: invert(1) saturate(0) brightness(1.05);--table-width: 320px;--table-height: 220px;--present-table-width: var(--table-width);--present-table-height: var(--table-height);--present-stage-padding: 24px}*{box-sizing:border-box}html,body{height:100dvh}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;display:flex;flex-direction:column;overflow:hidden}.topbar-wrap{flex:0 0 auto}footer{flex:0 0 auto}main{flex:1 1 auto;min-height:0}h1,h2,h3{margin:0 0 8px}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}.bar{position:sticky;top:0;z-index:20;background:color-mix(in oklab,var(--panel) 92%,transparent);-webkit-backdrop-filter:saturate(120%) blur(10px);backdrop-filter:saturate(120%) blur(10px);border-bottom:1px solid var(--line-1);padding:10px 12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.topbar-wrap{display:block}.topbar{display:grid;grid-template-columns:auto auto 1fr;gap:12px;align-items:center}.topbar h2{margin:0;white-space:nowrap}.topbar-identity h2{color:var(--brand)}.topbar-zone{display:flex;align-items:center;gap:8px;min-width:0}.topbar-context{justify-content:flex-start;flex-wrap:wrap}.topbar-actions{justify-content:flex-end;flex-wrap:wrap}.topbar-field{display:flex;align-items:center;gap:6px;min-width:0}.topbar-field select{min-width:180px;max-width:260px}.ctx-actions{display:none;align-items:center;gap:8px}.ctx-bar-group{display:flex;align-items:center;gap:8px}body.layout-mode #ctxBarLayout{display:inline-flex}body.annotate:not(.layout-mode) #ctxBarAnnotate{display:inline-flex}body.anno-log-mode #ctxBarAnnotate{display:inline-flex}.topbar-layout-actions{display:flex;align-items:center;gap:8px}.layout-zoom-controls{display:inline-flex;align-items:center;gap:6px;padding:4px 6px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface-2)}.layout-zoom-controls[hidden]{display:none}.layout-zoom-controls button{min-width:34px;padding-inline:9px}.layout-zoom-label{min-width:44px;text-align:center;font-weight:700}.topbar-overflow{order:40}#classActionsMenu>summary{padding:5px 8px;font-size:18px;line-height:1;letter-spacing:1px}body.layout-mode .topbar-primary-action,#btnLayoutDone[data-layout-active="0"]{display:none!important}#btnLayoutDone[data-layout-active="1"]{display:inline-flex!important}.layout-selected{outline:2px solid var(--accent);outline-offset:2px}body.annotate:not(.layout-mode) .topbar-primary-action{display:none!important}body.annotate:not(.layout-mode) #btnAnnotations{display:inline-flex!important;order:0}body.evaluate-mode .topbar-primary-action{display:none!important}body.evaluate-mode #btnEvaluate{display:inline-flex!important}body.insights-mode .topbar-primary-action{display:none!important}body.insights-mode #btnInsightsDone{display:inline-flex!important}body.annotate:not(.layout-mode) #btnLayoutMode{display:none}.top-menu{position:relative;display:inline-flex;align-items:center}.top-menu>summary{list-style:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;border:1px solid var(--btn-border);color:var(--text);padding:var(--btn-pad-y) var(--btn-pad-x);border-radius:var(--btn-radius);font-weight:var(--btn-font-weight);cursor:pointer;-webkit-user-select:none;user-select:none}.top-menu>summary::-webkit-details-marker{display:none}.top-menu>summary:hover{background:var(--btn-surface-hover);box-shadow:0 0 0 2px var(--focus-ring)}.top-menu>summary:focus-visible{outline:2px solid var(--focus-outline);outline-offset:2px}.top-menu-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:50;display:grid;gap:6px;min-width:210px;padding:8px;background:var(--panel);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 18px 40px #00000047}.topbar-layout-actions .top-menu-panel{left:0;right:auto}.top-menu-panel button,.top-menu-panel select{width:100%}.top-menu-panel button{text-align:left}.top-menu-field{display:grid;gap:4px}@media (max-width:900px){.topbar{grid-template-columns:1fr;align-items:stretch}.topbar-context,.topbar-actions{justify-content:flex-start}}:root{--btn-font-weight: 600;--btn-radius: 10px;--btn-pad-y: 8px;--btn-pad-x: 14px;--btn-surface: color-mix(in oklab, var(--panel) 88%, transparent);--btn-surface-hover: color-mix(in oklab, var(--panel) 82%, transparent);--btn-border: color-mix(in oklab, var(--accent) 30%, #334)}button,.btn{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--btn-surface);border:1px solid var(--btn-border);color:var(--text);font-size:13px;padding:var(--btn-pad-y) var(--btn-pad-x);border-radius:var(--btn-radius);font-weight:var(--btn-font-weight);cursor:pointer;transition:box-shadow .15s ease,filter .15s ease,background-color .15s ease,border-color .15s ease}.topbar-actions button,.topbar-actions .btn{min-height:36px}.ctx-actions button,.ctx-actions .btn{min-height:32px;padding:6px 12px;font-size:13px}.ctx-actions select{min-height:32px;font-size:13px}button:hover,.btn:hover{background:var(--btn-surface-hover);box-shadow:0 0 0 2px var(--focus-ring)}button:focus-visible,.btn:focus-visible{outline:2px solid var(--focus-outline);outline-offset:2px}button:disabled,.btn:disabled{opacity:.55;cursor:not-allowed;filter:none;box-shadow:none}.btn.sm{padding:4px 8px;border-radius:8px;font-weight:700}.btn.ghost{background:transparent}.btn.primary,.btn.ok,.btn.warn,.btn.danger,.btn.themeful{background:var(--btn-surface);border-color:var(--btn-border);color:var(--text)}.btn.danger,.roster-danger-button{background:color-mix(in oklab,var(--danger) 14%,var(--btn-surface));border-color:color-mix(in oklab,var(--danger) 62%,var(--btn-border));color:color-mix(in oklab,var(--danger) 82%,var(--text))}.btn.danger:hover,.roster-danger-button:hover{background:color-mix(in oklab,var(--danger) 20%,var(--btn-surface-hover));border-color:color-mix(in oklab,var(--danger) 76%,var(--btn-border))}input,select,textarea{background:var(--input-bg);border:1px solid var(--input-border);color:var(--text);padding:8px 10px;border-radius:10px;outline:none}input[type=checkbox]{width:18px;height:18px;vertical-align:middle}input[type=date]{cursor:pointer;padding:10px 12px;min-height:40px}input[type=date]::-webkit-calendar-picker-indicator{opacity:.95;filter:var(--date-icon-filter);cursor:pointer}input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}main{display:grid;grid-template-columns:340px 1fr;gap:14px;padding:14px}@media (min-width:1101px){main{grid-template-rows:minmax(0,1fr);overflow:hidden}}@media (max-width:1100px){main{grid-template-columns:1fr;overflow:auto}}section{min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px}section>.toolbar,#sessionObjectiveStrip{flex:0 0 auto}body.aside-collapsed main{grid-template-columns:1fr}body.aside-collapsed aside{display:none}.panel-toggle{font-size:16px;line-height:1;padding:6px 10px;min-height:32px}.panel-toggle[aria-pressed=true]{background:var(--btn-surface-hover)}aside{background:var(--panel);border:1px solid var(--line-2);border-radius:14px;padding:14px}@media (min-width:1101px){aside{min-height:0;overflow:auto}#layoutViewport,body.insights-mode #insightsView,body.anno-log-mode #annoLogView{min-height:0}}.section+.section{margin-top:14px}.section h3{font-size:14px;color:color-mix(in oklab,var(--muted) 92%,var(--text));letter-spacing:.3px;margin-bottom:6px}.tiny{font-size:12px;color:var(--muted)}.list{display:grid;gap:8px}.item{display:flex;align-items:center;gap:8px;padding:8px;background:var(--card);border:1px solid var(--line-2);border-radius:12px}.item input{padding:6px 8px}.item .btn.sm{padding:4px 8px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:6px 0}.backup-panel{display:grid;gap:12px}.backup-primary{justify-self:start;background:color-mix(in oklab,var(--accent) 20%,var(--btn-surface));border-color:color-mix(in oklab,var(--accent) 52%,var(--btn-border));box-shadow:0 0 0 1px var(--focus-ring)}.backup-import{display:grid;gap:8px;padding:10px;border:1px solid var(--line-2);border-radius:14px;background:color-mix(in oklab,var(--card) 72%,transparent)}.backup-import-head{display:grid;gap:2px}.backup-warning{font-weight:700}.backup-file-button{justify-self:start}.backup-file-status{color:var(--muted)}.backup-file-input{display:none}.backup-info{margin-top:8px}.card{background:var(--panel);border:1px solid var(--line-2);border-radius:16px;padding:12px}.head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-weight:800;border-bottom:1px dashed var(--line-1);padding-bottom:6px}#layoutZoomBar{position:absolute;top:8px;right:12px;z-index:10;display:flex;align-items:center;gap:0;background:color-mix(in oklab,var(--panel) 90%,transparent);border:1px solid var(--line-2);border-radius:999px;padding:2px 4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 2px 8px #0003;pointer-events:auto}#layoutZoomBar button{background:transparent;border:none;padding:4px 8px;border-radius:999px;font-size:13px;min-width:28px;line-height:1;box-shadow:none}#layoutZoomBar button:hover{background:color-mix(in oklab,var(--accent) 15%,transparent);box-shadow:none}.layout-zoom-pct{font-size:12px;min-width:44px;text-align:center;font-variant-numeric:tabular-nums;letter-spacing:-.02em}#layoutViewport{position:relative;flex:1 1 auto;min-height:420px;overflow:auto;padding:44px 12px 12px;border:1px solid var(--line-2);border-radius:16px;background:color-mix(in oklab,var(--panel) 88%,transparent)}#layoutCanvas{position:relative;min-width:100%;min-height:100%;transform-origin:top left}#insightsView,body.insights-mode #layoutViewport{display:none}body.insights-mode #insightsView{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--line-2);border-radius:16px;background:color-mix(in oklab,var(--panel) 88%,transparent);flex:1 1 auto;min-height:420px;overflow:auto}#annoLogView,body.anno-log-mode #layoutViewport{display:none}body.anno-log-mode #annoLogView{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--line-2);border-radius:16px;background:color-mix(in oklab,var(--panel) 88%,transparent);flex:1 1 auto;min-height:420px;overflow:auto}.anno-log-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding-bottom:8px;border-bottom:1px dashed var(--line-1);flex-shrink:0}#groupsGrid{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,var(--table-width)));grid-auto-flow:row;justify-content:start;gap:12px;align-items:stretch;align-content:start;grid-auto-rows:auto;min-width:100%;min-height:100%;transform-origin:top left}#groupsGrid .card{min-height:120px;display:flex;flex-direction:column}.insights-panel{display:flex;flex-direction:column;gap:14px;padding:16px;border:1px solid var(--line-2);border-radius:18px;background:color-mix(in oklab,var(--panel) 92%,transparent)}.insights-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border-bottom:1px dashed var(--line-1);padding-bottom:10px}.insights-header h2{margin:0 0 2px}.insights-kicker{color:var(--muted);font-size:.9rem;font-weight:700;text-align:right}.insights-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.insights-metric,.insights-card{border:1px solid var(--line-1);border-radius:14px;background:var(--surface-2)}.insights-metric{display:flex;flex-direction:column;gap:4px;padding:12px}.insights-metric strong{font-size:1.55rem;line-height:1.1}.insights-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.insights-card{padding:12px}.insights-card h3{margin:0 0 10px;font-size:1rem}.insights-card-wide{grid-column:1 / -1}.insights-list{display:flex;flex-direction:column;gap:8px}.insights-student{display:flex;flex-direction:column;gap:5px;padding:10px;border-radius:12px;background:color-mix(in oklab,var(--panel) 82%,transparent);box-shadow:inset 0 0 0 1px var(--line-1)}.insights-reasons{display:flex;flex-wrap:wrap;gap:6px}.insights-reasons span{padding:3px 7px;border-radius:999px;color:var(--muted);background:var(--surface-3);font-size:.82rem}.insights-empty,.insights-trend-line{color:var(--muted);font-size:.92rem}.insights-trend-line{padding:6px 0}@media (max-width: 760px){.insights-header{flex-direction:column}.insights-kicker{text-align:left}.insights-metrics,.insights-grid{grid-template-columns:1fr}}.insights-sp-tabs{display:flex;gap:4px;flex:1;min-width:0}#insightsView>.insights-sp-tabs{flex:0 0 auto}.insights-sp-tab{flex:1;padding:6px 8px;font-size:12px;font-weight:700;border-radius:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.insights-sp-panel{padding:4px 0;overscroll-behavior:contain}.insights-sp-panel[hidden]{display:none}.engagement-bar{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--line-1);width:100%}.engagement-bar-mini{height:8px;border-radius:4px;width:100%}.eng-seg{flex:0 0 auto}.seg-meeting{background:#22c55e}.seg-approaching{background:#eab308}.seg-developing{background:#f97316}.seg-none{background:var(--line-1)}.insights-week-dots{display:flex;gap:6px;align-items:center;margin:10px 0}.day-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.dot-meeting{background:#22c55e}.dot-approaching{background:#eab308}.dot-developing{background:#f97316}.dot-none{background:var(--line-1);border:1px solid var(--btn-border)}.insights-subtabs{display:flex;gap:4px;justify-content:center;margin-bottom:10px}.insights-subtab{flex:0 1 auto;padding:5px 16px;font-size:12px;font-weight:700;border-radius:8px;border:1px solid var(--btn-border);background:var(--btn-surface);color:var(--text-1);cursor:pointer}.insights-subpanel{padding:2px 0}.insights-subpanel[hidden]{display:none}.insights-bar-wrap{margin-bottom:12px}.insights-level-sec{margin-bottom:8px}.insights-level-card{border-radius:8px;padding:8px 12px;margin-bottom:8px;border-left:4px solid transparent}.insights-level-card-meeting{border-left-color:#16a34a;background:color-mix(in oklab,#16a34a 8%,transparent)}.insights-level-card-approaching{border-left-color:#a16207;background:color-mix(in oklab,#a16207 8%,transparent)}.insights-level-card-developing{border-left-color:#ea580c;background:color-mix(in oklab,#ea580c 8%,transparent)}.insights-level-card-none{border-left-color:var(--line-2);background:color-mix(in oklab,var(--line-2) 30%,transparent)}.insights-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.insights-name-chip{font-size:12px;padding:2px 10px;border-radius:999px;cursor:pointer;background:color-mix(in oklab,var(--panel) 80%,transparent);border:1px solid var(--line-2)}.insights-name-chip:hover{background:var(--surface-2)}.insights-level-label{font-size:12px;font-weight:700;margin-bottom:2px}.level-meeting{color:#16a34a}.level-approaching{color:#a16207}.level-developing{color:#ea580c}.level-none{color:var(--text-2)}.insights-level-names{color:var(--text-2);line-height:1.4}.insights-days-row{display:flex;gap:6px;margin-bottom:12px;align-items:flex-end}.insights-day-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.insights-day-label{font-size:10px;color:var(--text-2);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.insights-trend-wrap{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.insights-trend-headline{font-size:13px;font-weight:600;color:var(--text)}.insights-trend-badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 10px;border-radius:999px;width:fit-content}.trend-improving{background:color-mix(in oklab,#22c55e 14%,transparent);color:#15803d}.trend-stable{background:color-mix(in oklab,#94a3b8 16%,transparent);color:var(--text-2)}.trend-declining{background:color-mix(in oklab,#94a3b8 16%,transparent);color:#b45309}.insights-obj-row{display:flex;gap:6px;align-items:baseline;margin-bottom:10px;font-size:13px;padding:6px 8px;background:var(--surface-3);border-radius:8px;border:1px solid var(--line-1)}.insights-obj-label{font-weight:700;color:var(--text-2);flex-shrink:0}.insights-obj-text{color:var(--text-1)}.insights-student-select-wrap{margin-bottom:12px}.insights-student-select{width:100%;padding:6px 10px;border-radius:8px;border:1px solid var(--btn-border);background:var(--surface-3);color:var(--text-1);font-size:13px;cursor:pointer}.insights-student-detail{display:flex;flex-direction:column;gap:8px}.eng-today-badge{display:inline-block;font-size:14px;font-weight:700;padding:6px 16px;border-radius:10px;width:fit-content}.eng-badge-meeting{background:color-mix(in oklab,#22c55e 20%,transparent);color:#15803d}.eng-badge-approaching{background:color-mix(in oklab,#eab308 20%,transparent);color:#a16207}.eng-badge-developing{background:color-mix(in oklab,#f97316 20%,transparent);color:#c2410c}.eng-badge-none{background:var(--surface-3);color:var(--text-2);border:1px solid var(--line-1)}.insights-student-trend{font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;width:fit-content}.insights-level-selector{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.insights-level-btn{font-size:12px;padding:4px 10px}.insights-level-btn.active{background:color-mix(in oklab,var(--accent) 22%,var(--btn-surface));border-color:color-mix(in oklab,var(--accent) 60%,var(--btn-border));font-weight:700}.seatgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;background:var(--surface-3);border-radius:12px;padding:10px;box-shadow:inset 0 0 0 1px var(--line-1);flex:1;overflow:visible}.seat{min-height:40px;text-align:center;line-height:1.1;padding:4px 6px;word-break:break-word;white-space:normal;overflow-wrap:anywhere;background:var(--seat-bg);border:1px solid var(--seat-border);border-radius:10px;display:flex;align-items:center;justify-content:center}.seatgrid.shape-grid{display:grid;grid-template-columns:repeat(2,1fr)}.seatgrid.shape-row{display:grid;grid-auto-flow:column}.seatgrid.shape-round{display:flex;flex-wrap:wrap;justify-content:center;align-content:center;gap:8px;border-radius:9999px}.seatgrid.shape-u{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding-bottom:26px}body.hi-contrast{font-size:18px}body.hi-contrast .head{border-bottom-color:#9ae6ff}body.hi-contrast .seat{min-height:64px;font-size:18px;border-color:#7dd3fc}body.hi-contrast .card,body.hi-contrast .section,body.hi-contrast .bar,body.hi-contrast .modal-overlay .card{border-color:#7dd3fc}body.hi-contrast .tiny{font-size:14px}body.hi-contrast .section h3{font-size:16px}body.hi-contrast button,body.hi-contrast input,body.hi-contrast select,body.hi-contrast textarea,body.hi-contrast .btn{font-size:1rem}body.hi-contrast .btn{border-color:var(--accent);font-weight:800}body.hi-contrast #present .head{font-size:20px}.seat.selected{outline:2px solid var(--focus-outline);outline-offset:2px;box-shadow:0 0 0 3px var(--focus-ring)}.seat.empty{color:#7a8799;font-style:italic}.annotate .seat{outline:1px dashed color-mix(in oklab,var(--accent) 35%,transparent)}#annoModeHint{display:none}body.annotate:not(.layout-mode) #annoModeHint{display:inline-flex}#evalModeHint{display:none}body.evaluate-mode:not(.layout-mode) #evalModeHint{display:inline-flex}.subheader-objective{display:inline-flex;align-items:baseline;gap:6px;min-width:0;flex:1 1 auto;font-size:13px;color:var(--muted)}.subheader-objective[hidden]{display:none}.session-objective-strip-label{font-weight:700;flex-shrink:0}#sessionObjectiveLabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.evaluate-mode .seat{cursor:pointer;outline:1px dashed color-mix(in oklab,var(--ok) 40%,transparent)}body.evaluate-mode .seat:not(.empty):hover{background:color-mix(in oklab,var(--ok) 8%,var(--seat-bg))}.seat-eval-badge{position:absolute;top:3px;right:4px;width:14px;height:14px;border-radius:50%;border:2px solid var(--surface-2);pointer-events:none}.seat{position:relative}.eval-popover{position:absolute;z-index:500;background:var(--panel);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 12px 32px #00000059;padding:8px;display:flex;flex-direction:column;gap:4px;min-width:170px}.eval-popover button{text-align:left;border-radius:8px;font-size:13px;padding:6px 10px}.eval-popover button.active{background:color-mix(in oklab,var(--accent) 16%,var(--btn-surface));border-color:color-mix(in oklab,var(--accent) 42%,var(--btn-border))}#present{background:var(--bg);padding-top:0}#present,#present .head{font-size:16px}#present .seat{font-size:16px;line-height:1.25}#present .modal-content{width:min(96vw,1200px);height:min(96vh,90vh);overflow:auto}#present .head{padding:12px;border-bottom:1px solid #23324b}#presentGrid{position:relative;min-height:400px;overflow:auto;max-height:calc(90vh - 64px)}#presentGrid .stage{position:relative;transform-origin:top left;will-change:transform}#present .card{width:var(--present-table-width);height:var(--present-table-height);box-sizing:border-box;display:flex;flex-direction:column}#present .seatgrid{flex:1;overflow:visible}.overlay-panel{position:fixed;left:50%;transform:translate(-50%);background:var(--panel);border:1px solid var(--line-1);color:var(--text);border-radius:14px;padding:14px;box-shadow:0 10px 30px #00000059;z-index:2000;width:min(900px,92vw)}#messagePanel{top:76px;display:none}#timerPanel{top:76px;display:none;max-width:480px}#messageText{width:100%;min-height:90px}#messageDisplay{position:fixed;left:24px;right:24px;bottom:24px;background:color-mix(in oklab,var(--bg) 86%,transparent);border:2px solid var(--accent);border-radius:16px;padding:14px;color:var(--text);font-size:22px;line-height:1.35;display:none;z-index:1650}#bigTimer{position:fixed;right:24px;top:96px;background:color-mix(in oklab,var(--bg) 86%,transparent);color:var(--text);z-index:1650;border:2px solid var(--accent);border-radius:16px;padding:10px 14px;font-size:28px;display:none}@media print{body{background:#fff;color:#000}.bar,aside,#present,footer,#printChoice{display:none!important}main{padding:0}section{margin:0}#groupsGrid .card{break-inside:avoid;page-break-inside:avoid}}footer{padding:12px;text-align:center;color:#9ca3af}.attendance-flash{animation:attendanceFlash 1.2s ease-out}@keyframes attendanceFlash{0%{box-shadow:0 0 color-mix(in oklab,var(--focus-ring) 42%,transparent);background:color-mix(in oklab,var(--card) 80%,var(--focus-ring) 20%)}to{box-shadow:0 0 0 0 transparent;background:transparent}}#annoViewer .anno-filterbar,#annoLogView .anno-filterbar{align-items:flex-end;gap:10px}#annoViewer .anno-observed-range,#annoLogView .anno-observed-range{margin-top:4px;color:var(--muted);font-weight:600}#annoViewer .anno-filter-field,#annoLogView .anno-filter-field{display:flex;flex-direction:column;gap:4px}#annoViewer .anno-custom-range-field,#annoLogView .anno-custom-range-field{display:none}#annoViewer .anno-filter-field span,#annoLogView .anno-filter-field span{font-size:12px;color:var(--muted)}#annoViewer .anno-searchbar,#annoLogView .anno-searchbar{align-items:center;gap:10px;padding-top:8px;border-top:1px solid var(--line-1)}#annoViewer .anno-searchbar #annoSearch,#annoLogView .anno-searchbar #annoSearch{flex:1;min-width:220px}#annoViewer .anno-exportbar,#annoLogView .anno-exportbar{justify-content:flex-end;gap:10px;align-items:center}.anno-academic{background:var(--surface-2);border-left:4px solid #3b82f6}.anno-conduct{background:var(--surface-2);border-left:4px solid #f97316}.anno-attendance{background:var(--surface-2);border-left:4px solid #f59e0b}.anno-support{background:var(--surface-2);border-left:4px solid #10b981}.anno-latest{border-color:color-mix(in oklab,var(--line-2) 45%,var(--focus-ring) 55%);box-shadow:0 0 0 1px color-mix(in oklab,var(--focus-ring) 40%,transparent)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;font-size:12px;border-radius:999px;border:1px solid var(--line-2);line-height:1;-webkit-user-select:none;user-select:none;white-space:nowrap}.badge-academic{background:color-mix(in oklab,var(--card) 86%,#3b82f6 14%);border-color:var(--line-2)}.badge-conduct{background:color-mix(in oklab,var(--card) 86%,#f97316 14%);border-color:var(--line-2)}.badge-attendance{background:color-mix(in oklab,var(--card) 86%,#f59e0b 14%);border-color:var(--line-2)}.badge-support{background:color-mix(in oklab,var(--card) 86%,#10b981 14%);border-color:var(--line-2)}.dash-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0}.metric{background:var(--card);border:1px solid var(--line-2);border-radius:12px;padding:10px;text-align:center}.metric b{font-size:18px;display:block;margin-top:4px}.sparkline{width:100%;height:52px;background:var(--surface-3);border:1px solid var(--input-border);border-radius:8px}.insights-today-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0}@media (max-width:600px){.insights-today-grid{grid-template-columns:repeat(2,1fr)}}.insights-today-col{background:var(--card);border:1px solid var(--line-2);border-radius:10px;padding:10px 8px;display:flex;flex-direction:column;gap:4px}.insights-today-count{font-size:26px;font-weight:700;line-height:1}.insights-today-count.level-meeting{color:#22c55e}.insights-today-count.level-approaching{color:#f59e0b}.insights-today-count.level-developing{color:#ef4444}.insights-today-count.level-none{color:var(--muted)}.insights-today-col-label{opacity:.75}.insights-today-minibar{height:6px;border-radius:3px;background:var(--surface-3);margin:2px 0;overflow:hidden}.insights-today-minibar-fill{height:100%;border-radius:3px}.insights-today-names{display:flex;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;gap:4px 6px;margin-top:4px}.insights-objectives-2col{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 16px;margin-top:6px}.objective-row{display:flex;align-items:center;gap:6px;min-width:0}.objective-name{font-size:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.objective-dots{display:flex;gap:3px;align-items:center;flex-shrink:0}.insights-obj-grid{display:flex;flex-direction:column;gap:2px;margin-top:6px}.insights-obj-row{display:flex;align-items:center;gap:4px}.insights-obj-header .insights-obj-day-col{font-size:10px;opacity:.65}.insights-obj-student-col{min-width:100px;max-width:140px;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.insights-obj-day-col{width:28px;display:flex;justify-content:center;align-items:center}.insights-obj-dot{width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.12)}.insights-student-view-wrap{max-width:640px;margin:0 auto;width:100%}#tourBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:none;background:#00000059;z-index:1700;pointer-events:none}body.tour-on #tourBackdrop,#tourBubble,#tourBubble *{pointer-events:auto}#tourBubble{position:fixed;display:none;max-width:min(420px,92vw);background:var(--panel);color:var(--text);border:1px solid var(--line-1);border-radius:12px;padding:12px;box-shadow:0 12px 30px #00000073;z-index:1701}#tourBubble .t-head{font-weight:700;margin-bottom:6px}#tourBubble .t-body{font-size:14px;color:var(--muted);line-height:1.35}#tourBubble .t-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}#tourBubble .btn{padding:6px 10px;border-radius:8px}.tour-highlight{outline:none!important;box-shadow:none!important;border-radius:10px}.tour-highlight[data-tour-focus="1"],.tour-focus{position:relative;z-index:1100!important;outline:3px solid var(--focus-outline);outline-offset:4px;border-radius:10px;box-shadow:0 0 0 6px var(--focus-ring-strong);transition:box-shadow .2s ease,outline-color .2s ease}@media (prefers-reduced-motion:no-preference){body.tour-on .tour-highlight[data-tour-focus="1"],body.tour-on .tour-focus{animation:tourPulse 1.4s ease-in-out infinite}@keyframes tourPulse{0%,to{box-shadow:0 0 0 6px var(--focus-ring-strong)}50%{box-shadow:0 0 0 10px var(--focus-ring)}}}[data-tour-focus="1"]{outline:2px solid var(--focus-outline);outline-offset:2px}.section-header-btn{min-width:64px;min-height:32px;font-size:12px;text-align:center;flex-shrink:0;padding:4px 10px}#bulkNames{width:100%}[hidden],[style*="display:none"],[style*="display: none"]{pointer-events:none!important}#onboard,#helpModal,#settingsModal,#annoModal,#annoViewer,#annoLogView,#weeklyModal,#historyModal,#printChoice,#moveModal,#bulkModal,#messagePanel,#timerPanel{pointer-events:auto}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;background:#0006;z-index:2000}.modal-overlay .card,.modal-overlay .box{position:relative;max-height:90dvh;overflow:auto;overscroll-behavior:contain}@supports not (height: 100dvh){.modal-overlay .card,.modal-overlay .box{max-height:90vh}}#helpModal,#settingsModal,#aboutModal,#rosterViewer,#annoModal,#annoViewer,#bulkModal,#moveModal,#printChoice,#appPrompt,#appConfirm,#appError{position:fixed;top:0;right:0;bottom:0;left:0}#annoModal,#annoViewer,#bulkModal,#moveModal,#printChoice,#appPrompt,#appConfirm,#appError{z-index:2000}#settingsModal .card,#settingsModal .box,#helpModal .card,#helpModal .box,#aboutModal .card,#aboutModal .box,#rosterViewer .card,#rosterViewer .box{z-index:auto}#settingsModal{z-index:2100}#helpModal,#aboutModal,#rosterViewer{z-index:2200}#snack{position:fixed;left:24px;bottom:24px;display:none;align-items:center;gap:12px;background:var(--panel,#0f172a);color:var(--text,#e5e7eb);border:1px solid var(--line-1);border-radius:12px;padding:10px 12px;box-shadow:0 8px 24px #00000059;z-index:3000}#snack.show{display:flex}#snack .msg{font-size:14px}#snack .actions{display:flex;gap:8px;margin-left:8px}#snack .btn{padding:4px 8px}.roster-edit-layout{display:grid;grid-template-columns:minmax(220px,1fr) minmax(260px,1fr);gap:18px;align-items:start}.roster-student-list{max-height:48vh;overflow:auto;gap:10px}.roster-edit-form{display:grid;gap:14px;padding:12px;border:1px solid var(--line-2);border-radius:14px;background:color-mix(in oklab,var(--card) 78%,transparent)}.roster-editing-label{display:grid;gap:4px;padding-bottom:10px;border-bottom:1px solid var(--line-1)}.roster-editing-label strong{font-size:18px}.roster-name-field{display:grid;gap:6px}.roster-name-field input{width:100%}.roster-rename-actions{justify-content:flex-end;margin:0}.roster-save-button{background:color-mix(in oklab,var(--accent) 24%,var(--btn-surface));border-color:color-mix(in oklab,var(--accent) 56%,var(--btn-border));box-shadow:0 0 0 1px var(--focus-ring)}.roster-actions-section{display:grid;gap:8px}.roster-actions-section h3{margin:0;font-size:.95rem}.roster-actions-divider{height:1px;background:var(--line-1);margin:2px 0 4px}.roster-action-button{width:100%;justify-content:flex-start}.roster-move-body{display:grid;gap:14px;margin-bottom:12px}@media (max-width:720px){.roster-edit-layout{grid-template-columns:1fr}}#moveList [data-sid],#moveList [role=option]{position:relative;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease,transform .12s ease}#moveList .selected,#moveList [aria-selected=true]{background:color-mix(in oklab,var(--accent) 18%,var(--card));border-color:var(--focus-outline);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--focus-outline) 60%,transparent),0 0 0 3px var(--focus-ring-strong);transform:translate(2px)}#moveList .selected:before,#moveList [aria-selected=true]:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:4px;border-radius:8px;background:var(--accent)}#moveList [data-sid]:focus-visible,#moveList [role=option]:focus-visible{outline:2px solid var(--focus-outline);outline-offset:2px}body.theme-light{--bg:#f9fafb;--panel:#ffffff;--card:#f3f4f6;--text:#111827;--muted:#6b7280;--accent:#22d3ee;--border-1:#cbd5e1;--border-2:#b8c4d4;--line-1:#d6dee8;--line-2:#cfd8e3;--focus-outline: color-mix(in oklab, var(--accent) 42%, #0f172a);--focus-ring: color-mix(in oklab, var(--focus-outline) 18%, transparent);--focus-ring-strong: color-mix(in oklab, var(--focus-outline) 28%, transparent);--surface-3: #ffffff;--input-bg: var(--surface-3);--seat-bg: var(--surface-3);--btn-surface: #ffffff;--btn-surface-hover: #f3f4f6;--btn-border: #cbd5e1;--ui-color-scheme: light;--date-icon-filter: none;--brand: #f59e0b}body.theme-darkslate{--bg:#0f172a;--panel:#0b1226;--card:#172036;--text:#e5e7eb;--muted:#9ca3af;--accent:#22d3ee;--border-1:#405168;--border-2:#4c5d78;--line-1:#3d4b62;--line-2:#4c5d78;--focus-outline: color-mix(in oklab, var(--accent) 72%, #ffffff);--focus-ring: color-mix(in oklab, var(--accent) 18%, transparent);--focus-ring-strong: color-mix(in oklab, var(--accent) 24%, transparent);--surface-3: color-mix(in oklab, var(--panel) 68%, var(--bg));--input-bg: var(--surface-3);--seat-bg: var(--surface-3);--ui-color-scheme: dark;--date-icon-filter: invert(1) brightness(1.2);--brand: #f59e0b}body.theme-darkslate input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1) brightness(2) contrast(1.2);opacity:1;cursor:pointer}body.layout-mode #groupsGrid .card{cursor:move}#templateControls{display:none;gap:8px;align-items:center}body.layout-mode #templateControls{display:flex}.tour-layer{position:fixed;left:0;right:0;bottom:12px;z-index:2100;display:flex;justify-content:center;pointer-events:none}.tour-bubble{background:var(--panel, #0c1b29);border:1px solid var(--outline, #12324a);border-radius:14px;padding:14px 16px;max-width:min(560px,92vw);box-shadow:0 10px 28px #00000047;pointer-events:auto;z-index:2101}.tour-title{font:600 20px/1.2 system-ui,Segoe UI,Roboto;margin-bottom:6px}.tour-body{font:15px/1.5 system-ui,Segoe UI,Roboto;opacity:.95}.tour-actions{margin-top:12px;display:flex;gap:10px;justify-content:flex-end}.tour-focus{outline:3px solid var(--focus-outline);outline-offset:4px;border-radius:10px}.tour-spot{position:absolute;pointer-events:none;z-index:2099;border:3px solid var(--focus-outline);box-shadow:0 0 0 4px var(--focus-ring);border-radius:10px}#themeGallery .btn,#themeGallery button{background:var(--btn-surface);color:var(--text);border:1px solid var(--btn-border)}#themeGallery .btn:hover,#themeGallery button:hover{background:var(--btn-surface-hover)}#themeGallery button.selected,#themeGallery .btn.selected,#themeGallery button[aria-pressed=true]{border-color:var(--focus-outline)!important;box-shadow:0 0 0 3px var(--focus-ring)!important}#helpModal,#settingsModal,#aboutModal,#rosterViewer,#annoModal,#annoViewer,#bulkModal,#moveModal,#printChoice,#appPrompt,#appConfirm,#appError,.modal,.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0}#appError{z-index:9998!important}#appPrompt,#appConfirm{z-index:9997!important}#helpModal,#aboutModal,#rosterViewer{z-index:9996!important}#settingsModal{z-index:9995!important}#annoViewer,#annoModal,#bulkModal,#moveModal,#printChoice{z-index:9994!important}#helpModal .card,#settingsModal .card,#aboutModal .card,#rosterViewer .card,#annoModal .card,#annoViewer .card,#bulkModal .card,#moveModal .card,#printChoice .card,#appPrompt .card,#appConfirm .card,#appError .card,.modal-overlay .card,.modal .card,.modal-overlay .box,.modal .box{position:relative;z-index:1}.modal-overlay[aria-hidden=false],.modal[aria-hidden=false],#helpModal[aria-hidden=false],#settingsModal[aria-hidden=false],#aboutModal[aria-hidden=false],#rosterViewer[aria-hidden=false],#annoModal[aria-hidden=false],#annoViewer[aria-hidden=false],#bulkModal[aria-hidden=false],#moveModal[aria-hidden=false],#printChoice[aria-hidden=false],#appPrompt[aria-hidden=false],#appConfirm[aria-hidden=false],#appError[aria-hidden=false]{pointer-events:auto!important}#snack{z-index:9999!important}aside,.section,.card,.item{background:var(--panel);color:var(--text);border-color:var(--line-2)}input,select,textarea,.seat,.seatgrid,.metric,.sparkline{background:var(--input-bg);color:var(--text);border-color:var(--input-border)}.bar button,.bar .btn,button,.btn{background:var(--btn-surface)!important;color:var(--text)!important;border-color:var(--btn-border)!important;font-weight:var(--btn-font-weight)!important}.btn.ghost{background:transparent!important}a.btn,a.button,a.tab,a.pill,a.chip,a.segment,a.toggle,a.action,a[role=button],[role=button],input[type=button],input[type=submit],input[type=reset]{background:var(--btn-surface)!important;color:var(--text)!important;border:1px solid var(--btn-border)!important;border-radius:var(--btn-radius)!important;font-weight:var(--btn-font-weight)!important;text-decoration:none!important;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.btn:hover,a.button:hover,a.tab:hover,a.pill:hover,a.chip:hover,a.segment:hover,a.toggle:hover,a.action:hover,a[role=button]:hover,[role=button]:hover,input[type=button]:hover,input[type=submit]:hover,input[type=reset]:hover{background:var(--btn-surface-hover)!important;box-shadow:0 0 0 2px var(--focus-ring)!important}a.btn:focus-visible,a.button:focus-visible,a.tab:focus-visible,a.pill:focus-visible,a.chip:focus-visible,a.segment:focus-visible,a.toggle:focus-visible,a.action:focus-visible,a[role=button]:focus-visible,[role=button]:focus-visible,input[type=button]:focus-visible,input[type=submit]:focus-visible,input[type=reset]:focus-visible{outline:2px solid var(--focus-outline)!important;outline-offset:2px!important}button.active,.btn.active,button[aria-pressed=true],.btn[aria-pressed=true],.insights-sp-tab[aria-selected=true],.insights-subtab[aria-selected=true],a.active,a[aria-current=page],[role=button][aria-pressed=true],[role=button][aria-selected=true],[aria-selected=true].tab,[aria-selected=true].pill,.selected.tab,.selected.pill{background:color-mix(in oklab,var(--accent) 18%,var(--btn-surface))!important;border-color:color-mix(in oklab,var(--accent) 45%,var(--btn-border))!important;color:var(--text)!important;font-weight:700!important}#appTitle,.bar .brand,.bar .app-title,.bar .app-name,.bar h1{color:var(--brand)!important}.empty-state{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:24px}.empty-state-card{max-width:440px;text-align:center;background:var(--card);border:1px solid var(--line-1);border-radius:14px;padding:32px 28px}.empty-state-card h2{margin:0 0 10px;color:var(--text);font-size:20px}.empty-state-card p{margin:0 0 20px;color:var(--muted);font-size:14px;line-height:1.5}.empty-state-card .btn{min-height:40px;padding:10px 20px;font-size:14px;font-weight:700}
