:root{--navy:#17324d;--blue:#245a7a;--teal:#2b7a78;--paper:#f7f5ef;--white:#fff;--ink:#1f2937;--muted:#667085;--line:#cad4dd;--soft:#eaf2f7;--danger:#9b1c1c;--warn:#8a6200;--ok:#256d4a;--shadow:0 6px 20px rgba(23,50,77,.12);--radius:14px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;width:100%;max-width:100%;overflow-x:hidden;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.file-input-native{position:fixed!important;width:1px!important;height:1px!important;padding:0!important;margin:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;opacity:.01!important}.file-picker-label{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.app-shell{min-height:100vh;width:100%;min-width:0;overflow-x:clip;display:grid;grid-template-columns:230px minmax(0,1fr);grid-template-rows:68px 1fr;grid-template-areas:"top top" "side main"}
.topbar{grid-area:top;min-width:0;max-width:100vw;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 18px;position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand>div:last-child{min-width:0}.brand strong{display:block;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand small{display:block;opacity:.78;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.app-mark{width:42px;height:42px;border-radius:11px;background:#fff;color:var(--navy);display:grid;place-items:center;font-weight:900;border:2px solid rgba(255,255,255,.7)}
.app-mark.large{width:72px;height:72px;font-size:1.35rem;margin:auto}
.top-actions{display:flex;align-items:center;gap:8px}.icon-btn{min-width:44px;height:44px;border:1px solid rgba(255,255,255,.45);border-radius:10px;background:transparent;color:#fff;font-size:1.2rem}.status-pill{font-size:.78rem;padding:7px 10px;border-radius:999px;background:rgba(255,255,255,.16)}
.sidebar{grid-area:side;background:#fff;border-right:1px solid var(--line);padding:16px 10px;display:flex;flex-direction:column;justify-content:space-between;position:sticky;top:68px;height:calc(100vh - 68px)}
#main-nav{display:grid;gap:6px}.nav-btn{border:0;background:transparent;border-radius:10px;padding:12px;color:var(--muted);display:flex;align-items:center;gap:12px;text-align:left;min-height:48px}.nav-btn[hidden]{display:none!important}.nav-btn span{font-size:1.25rem;width:26px;text-align:center}.nav-btn.active{background:var(--soft);color:var(--navy)}.nav-btn b{font-size:.92rem}
.sidebar-foot{border-top:1px solid var(--line);padding:14px 10px}.sidebar-foot strong,.sidebar-foot small{display:block}.sidebar-foot small{color:var(--muted);margin-top:4px}
.content{grid-area:main;min-width:0;padding:24px;max-width:1250px;width:100%;margin:0 auto;outline:none;padding-bottom:90px}
.bottom-nav{display:none}
.page-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:20px}.page-head h1{margin:0;color:var(--navy);font-size:1.7rem}.page-head p{margin:6px 0 0;color:var(--muted)}.actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 14px;min-height:44px;font-weight:700}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.secondary{background:var(--teal);border-color:var(--teal);color:#fff}.btn.danger{color:var(--danger);border-color:#dcb6b6}.btn:disabled{background:#e5e7eb;border-color:#cbd5e1;color:#94a3b8;opacity:.82;cursor:not-allowed;filter:none}.btn.block{width:100%}.btn.small{min-height:38px;padding:7px 10px;font-size:.86rem}.btn:active,.nav-btn:active{filter:contrast(1.25)}
.archive-action-field{justify-content:flex-end}.archive-action-field .btn{width:100%}.archive-year-list{display:grid;gap:9px;margin-top:14px}.archive-year-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.archive-year-item strong,.archive-year-item small{display:block}.archive-year-item small{margin-top:3px;color:var(--muted);overflow-wrap:anywhere}.archive-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.archive-preview strong{grid-column:1/-1;color:var(--navy)}.archive-preview span{padding:7px;border-radius:8px;background:#fff;font-weight:700}
.grid{display:grid;gap:16px;min-width:0}.grid>*{min-width:0}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card h2,.card h3{margin:0 0 12px;color:var(--navy)}.card p:last-child{margin-bottom:0}
.stat{display:flex;justify-content:space-between;align-items:flex-start}.stat strong{display:block;font-size:1.9rem;color:var(--navy)}.stat span{color:var(--muted);font-size:.86rem}.stat .stat-icon{font-size:1.65rem;color:var(--teal)}
.dashboard-classes-heading{margin:0 0 10px}.dashboard-summary-heading{margin:15px 0 10px}.dashboard-class-grid{display:flex;gap:9px;overflow-x:auto;padding:2px 2px 7px;scrollbar-width:thin}.dashboard-class-card{display:flex;align-items:stretch;min-width:245px;border:1px solid var(--line);border-left:5px solid var(--class-color);border-radius:11px;background:#fff;overflow:hidden}.dashboard-class-card.selected-class{box-shadow:inset 0 0 0 1px var(--class-color)}.dashboard-class-select{display:flex;align-items:center;gap:9px;min-width:0;flex:1;border:0;background:transparent;padding:10px;text-align:left}.dashboard-class-select>span:last-child{min-width:0}.dashboard-class-select strong,.dashboard-class-select small{display:block}.dashboard-class-select strong{color:var(--navy)}.dashboard-class-select small{color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.72rem}.dashboard-class-actions{display:flex;align-items:center;gap:4px;padding:6px;border-left:1px solid var(--line)}.dashboard-class-actions .btn{min-height:36px;padding:6px 8px}.dashboard-all-classes{display:grid;align-content:center;min-width:105px;padding:8px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;text-align:left}.dashboard-all-classes strong,.dashboard-all-classes small{display:block}.dashboard-all-classes strong{color:var(--navy)}.dashboard-all-classes small{color:var(--muted);margin-top:3px;font-size:.7rem}.dashboard-all-classes.selected-class{border:2px solid var(--navy);background:var(--soft)}.class-color-dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--class-color);border:1px solid rgba(0,0,0,.16);flex:0 0 auto}.class-color-edit{display:flex;align-items:center;gap:5px}.class-marker{display:inline-flex;align-items:center;gap:4px;margin-left:5px;padding:1px 6px;border:1px solid var(--class-color);border-radius:999px;color:var(--ink);font-size:.7rem;font-weight:800;vertical-align:middle}.class-marker i{width:7px;height:7px;border-radius:50%;background:var(--class-color);flex:0 0 auto}.section-title>div>small{display:block;color:var(--muted);margin-top:3px;font-size:.76rem}.dashboard-support-alerts{margin-top:16px}.dashboard-support-alerts>.section-title{margin-top:0}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:24px 0 10px}.section-title h2{margin:0;color:var(--navy);font-size:1.15rem}
.list{display:grid;gap:9px;min-width:0}.list-item{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);background:#fff;border-radius:11px;padding:12px}.list-main{min-width:0}.list-main strong{display:block}.list-main small{display:block;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-actions{display:flex;gap:6px;flex-shrink:0}.event-item{display:grid;grid-template-columns:minmax(0,1fr) auto}.event-item .list-actions{flex-wrap:wrap;justify-content:flex-end}
.class-colored-item{border:2px solid var(--class-color);box-shadow:inset 4px 0 0 var(--class-color)}
.badge{display:inline-block;border-radius:999px;padding:4px 8px;background:var(--soft);color:var(--blue);font-size:.76rem;font-weight:800}.badge.warn{background:#fff4ce;color:var(--warn)}.badge.danger{background:#fdecec;color:var(--danger)}.badge.ok{background:#e8f4f2;color:var(--ok)}
.empty{padding:28px;text-align:center;color:var(--muted);border:2px dashed var(--line);border-radius:var(--radius);background:rgba(255,255,255,.5)}.empty strong{display:block;color:var(--navy);margin-bottom:6px}
.alert{border:1px solid #dfc873;border-left:5px solid var(--warn);background:#fff7da;border-radius:10px;padding:12px 14px;margin:0 0 16px}.alert.info{border-color:#9fc3d6;border-left-color:var(--blue);background:var(--soft)}.alert strong{display:block;margin-bottom:3px}
.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar input[type=search],.toolbar select{min-width:190px;flex:1}.field{display:grid;gap:6px;margin-bottom:14px}.field label{font-weight:800;font-size:.86rem;color:var(--navy)}.field small{color:var(--muted)}
input,select,textarea{width:100%;border:1.5px solid var(--line);background:#fff;border-radius:9px;padding:11px 12px;min-height:44px}textarea{resize:vertical;min-height:100px}input:focus,select:focus,textarea:focus{outline:3px solid rgba(43,122,120,.18);border-color:var(--teal)}
.student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.student-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:15px;text-align:left;min-height:118px}.student-card:hover{border-color:var(--teal)}.student-card strong{font-size:1rem;color:var(--navy)}.student-card small{display:block;color:var(--muted);margin-top:6px}.student-card footer{display:flex;justify-content:space-between;margin-top:15px}
.avatar{width:42px;height:42px;border-radius:50%;background:var(--soft);color:var(--navy);display:grid;place-items:center;font-weight:900;flex-shrink:0;overflow:hidden}.avatar img{display:block;width:100%;height:100%;object-fit:cover}.avatar.has-photo{border:1px solid var(--line);background:#fff}.student-header{display:flex;gap:13px;align-items:center}.student-header .avatar{width:58px;height:58px;font-size:1.1rem}
.student-flags{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}.student-flag-icon{display:inline-block;margin-right:4px;font-size:.96rem;line-height:1}.student-identity-flags{margin-top:14px}.student-profile{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}.student-profile small,.student-profile strong{display:block}.student-profile small{color:var(--muted);margin-bottom:4px}.student-profile strong{color:var(--navy);overflow-wrap:anywhere}
.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:18px 0 15px;overflow:auto}.tab{border:0;background:transparent;padding:10px 12px;border-bottom:3px solid transparent;white-space:nowrap;font-weight:800;color:var(--muted)}.tab.active{color:var(--navy);border-bottom-color:var(--teal)}
.timeline{border-left:3px solid var(--line);margin-left:9px;padding-left:18px;display:grid;gap:12px}.timeline-item{position:relative;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px}.timeline-item:before{content:"";position:absolute;width:11px;height:11px;border-radius:50%;background:var(--teal);left:-25px;top:17px;border:2px solid var(--paper)}.timeline-item time{font-size:.78rem;color:var(--muted)}
.timeline-openable{cursor:pointer}.timeline-openable:hover,.timeline-openable:focus-visible{border-color:var(--teal);outline:3px solid rgba(43,122,120,.16)}.timeline-open-hint{display:block;margin-top:9px;color:var(--blue);font-weight:800}.note-readonly small{display:block;color:var(--muted);margin-bottom:12px}.note-readonly p{white-space:normal;overflow-wrap:anywhere;line-height:1.55;margin:0}
.student-item-focus{border:3px solid var(--teal)!important;background:var(--soft)!important;box-shadow:0 0 0 5px rgba(43,122,120,.16)!important;scroll-margin-top:150px}.student-item-focus .list-main>strong{color:var(--blue)}
.check-row{display:flex;align-items:flex-start;gap:10px;min-width:0}.check-row input{width:22px;min-height:22px;margin-top:2px;flex:0 0 22px}.task-item .check-row{flex:1}.task-item .list-main{flex:1;min-width:0}.task-item .list-main small{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.35}.task-item>.badge{flex-shrink:0}.task-done{text-decoration:line-through;opacity:.55}
.modal{border:0;border-radius:16px;padding:0;width:min(650px,calc(100vw - 24px));max-height:92vh;box-shadow:0 18px 55px rgba(0,0,0,.28)}.modal::backdrop{background:rgba(15,23,42,.58)}.modal form>header,.exit-sync-dialog>div>header,.draw-shell>header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;background:var(--navy);color:#fff}.modal h2{margin:0;font-size:1.2rem}.dialog-close{width:42px;height:42px;border:0;background:transparent;color:inherit;font-size:1.8rem}.modal-body{padding:18px;overflow:auto;max-height:68vh}.modal footer,.draw-shell>footer{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding:14px 18px;border-top:1px solid var(--line);background:#f8fafc}
.form-error{color:var(--danger);min-height:18px;font-size:.83rem}.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.help{font-size:.82rem;color:var(--muted)}
.draw-modal{width:min(1000px,calc(100vw - 16px));height:min(92vh,850px)}.draw-shell{height:100%;display:flex;flex-direction:column}.draw-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:9px;border-bottom:1px solid var(--line)}.draw-tools label{display:flex;align-items:center;gap:6px}.draw-tools input{width:130px;padding:0}.tool{border:2px solid var(--line);background:#fff;border-radius:8px;padding:7px 10px;font-weight:700}.tool.active{border-color:var(--teal)}.canvas-wrap{flex:1;min-height:300px;overflow:hidden;background:#fff}.canvas-wrap canvas{display:block;width:100%;height:100%;touch-action:none;background-color:#fff;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 30px,#d7dde3 31px)}.canvas-wrap canvas.erasing{cursor:cell}
.drawing-thumb{width:160px;height:100px;border:1px solid var(--line);background:#fff;object-fit:contain;border-radius:8px}
.drawing-open{display:grid;justify-items:start;gap:4px;margin-top:8px;padding:0;border:0;background:transparent;text-align:left}.drawing-open small{color:var(--blue);font-weight:700}.drawing-open:focus-visible{outline:3px solid var(--teal);outline-offset:3px}
.report-stylus{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:18px;padding:14px;border:2px solid var(--teal);border-radius:12px;background:var(--soft)}.report-stylus>div strong,.report-stylus>div small{display:block}.report-stylus>div small{margin-top:4px;color:var(--muted)}.report-stylus .drawing-open{grid-column:1/-1}.report-stylus .drawing-thumb{width:min(260px,100%);height:150px}
.report-tnote{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:12px;margin-bottom:18px;padding:14px;border:2px solid var(--blue);border-radius:12px;background:var(--soft);min-width:0}.report-tnote>div{min-width:0}.report-tnote strong,.report-tnote small{display:block;overflow-wrap:anywhere}.report-tnote small{margin-top:4px;color:var(--muted);line-height:1.35}.report-tnote-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;width:100%}.report-tnote-actions .btn{width:100%;white-space:normal;line-height:1.2}.report-tnote-actions .btn:first-child{grid-column:1/-1}.report-tnote-documents{display:flex;gap:8px;flex-wrap:wrap}.report-tnote-documents .btn{min-height:38px}
.cloud-file-list{display:grid;gap:9px;max-height:52vh;overflow:auto}.cloud-file-choice{display:flex;align-items:flex-start;gap:11px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}.cloud-file-choice input{width:22px;min-height:22px;flex:0 0 22px;margin-top:1px}.cloud-file-choice strong,.cloud-file-choice small{display:block;overflow-wrap:anywhere}.cloud-file-choice small{margin-top:4px;color:var(--muted)}.cloud-file-choice:has(input:checked){border:2px solid var(--teal);background:var(--soft)}
.document-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto}.document-icon{width:48px;height:48px;display:grid;place-items:center;border:2px solid var(--danger);border-radius:9px;color:var(--danger);font-weight:900;font-size:.78rem}
.student-delete-bar{display:flex;justify-content:flex-end;margin-top:24px;padding-top:14px;border-top:1px solid var(--line)}
.orientation-card{display:grid;gap:14px}.orientation-card .section-title{margin:0}.orientation-card .section-title>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.orientation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.orientation-grid>div{padding:13px;border:1px solid var(--line);border-radius:11px;background:var(--paper);min-width:0}.orientation-grid small{display:block;color:var(--muted);font-weight:700}.orientation-grid p{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45}
.student-tab-content{display:grid;gap:14px}.student-tab-content>.section-title{margin:0}.student-tab-content>.section-title>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.profile-edit-flags{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:8px 0 16px}.profile-edit-flags label{display:flex;align-items:flex-start;gap:9px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.profile-edit-flags input{width:22px;min-height:22px;flex:0 0 22px;margin:1px 0}.profile-edit-flags strong,.profile-edit-flags small{display:block}.profile-edit-flags small{margin-top:3px;color:var(--muted);font-size:.75rem}
.support-device-choice{grid-template-columns:repeat(2,minmax(0,1fr))}.support-task-choice{margin:8px 0 16px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.support-task-choice small{margin-top:4px}.support-alert-list{display:grid;gap:8px}.support-alert-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px;border:1px solid var(--line);border-radius:10px;background:#fff;text-align:left}.support-alert-item:hover,.support-alert-item:focus-visible{border-color:var(--teal);outline:3px solid rgba(43,122,120,.14)}.support-alert-item>span:first-child{min-width:0}.support-alert-item strong,.support-alert-item small{display:block}.support-alert-item>span:first-child small{margin-top:4px;color:var(--muted);overflow-wrap:anywhere}.support-alert-item .badge{text-align:center;flex:0 0 auto}.support-alert-item .badge small{margin-top:2px;font-size:.68rem;color:inherit}
.bulk-document-list{display:grid;gap:10px;max-height:46vh;overflow:auto;padding-right:4px}.bulk-document-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.8fr);gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.bulk-document-row strong,.bulk-document-row small{display:block;overflow-wrap:anywhere}.bulk-document-row small{color:var(--muted);margin-top:4px}@media(max-width:620px){.bulk-document-row{grid-template-columns:1fr}}
.trombi-import-list{display:grid;gap:10px;max-height:52vh;overflow:auto;padding-right:4px}.trombi-import-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.8fr);gap:12px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.trombi-preview{display:grid;grid-template-columns:24px 54px minmax(0,1fr);gap:10px;align-items:center;min-width:0}.trombi-preview input{width:22px;min-height:22px}.trombi-preview img{width:54px;height:68px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#fff}.trombi-preview strong,.trombi-preview small{display:block;overflow-wrap:anywhere}.trombi-preview small{margin-top:4px;color:var(--muted)}@media(max-width:620px){.trombi-import-row{grid-template-columns:1fr}}
.note-viewer{width:100vw;height:100vh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#111}.note-viewer::backdrop{background:#111}.note-viewer>header{height:64px;padding:8px 16px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:12px}.viewer-tools{display:flex;align-items:center;gap:7px}.viewer-tools .btn{color:var(--navy);background:#fff}.note-viewer .dialog-close{color:#fff}.note-viewer-stage{height:calc(100vh - 64px);overflow:auto;display:flex;align-items:center;justify-content:center;padding:12px;background:#222}.note-viewer-stage img{display:block;max-width:100%;max-height:100%;object-fit:contain;background:#fff}.note-viewer-stage img.zoomed{max-width:none;max-height:none;height:auto;align-self:flex-start}.note-viewer-stage.zoom-active{align-items:flex-start;justify-content:flex-start}
.pdf-viewer{width:100vw;height:100vh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#252525}.pdf-viewer::backdrop{background:#111}.pdf-viewer>header{height:58px;padding:7px 14px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:12px}.pdf-viewer>header strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdf-viewer .dialog-close{color:#fff;flex:0 0 auto}.pdf-viewer-toolbar{height:62px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#eef3f5;border-bottom:1px solid #cbd5e1;overflow-x:auto}.pdf-viewer-toolbar .viewer-tools,.pdf-viewer-actions{display:flex;align-items:center;gap:7px;flex:0 0 auto}.pdf-viewer-toolbar .viewer-tools .btn{min-width:44px;min-height:42px}.pdf-viewer-toolbar .viewer-tools #pdf-viewer-fit{min-width:88px}.pdf-viewer-actions .btn{min-height:42px;white-space:nowrap}.pdf-viewer-stage{height:calc(100vh - 120px);overflow:auto;padding:16px;background:#333;text-align:center}.pdf-page{width:max-content;max-width:100%;margin:0 auto 16px;background:#fff;box-shadow:0 3px 14px rgba(0,0,0,.35)}.pdf-page canvas{display:block;max-width:none;background:#fff}.pdf-page-label{padding:7px;background:#f3f4f6;color:#334155;font-size:.82rem;border-top:1px solid #d1d5db}.pdf-loading{display:inline-block;margin:28px auto;padding:14px 18px;border-radius:10px;background:#fff;color:#173955;font-weight:700}
.pdf-viewer-stage{touch-action:pan-x pan-y;overscroll-behavior:contain}
.lock-screen{position:fixed;inset:0;z-index:100;background:var(--navy);color:#fff;display:grid;place-items:center;text-align:center;padding:20px}.lock-card{width:min(380px,100%);background:#fff;color:var(--ink);padding:28px;border-radius:18px}.lock-card h1{color:var(--navy)}
.toast{position:fixed;z-index:200;left:50%;bottom:24px;transform:translateX(-50%);background:#111827;color:#fff;padding:12px 18px;border-radius:10px;box-shadow:var(--shadow);max-width:90vw}
.rentree-legend{margin:0 0 14px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--muted);font-size:.84rem}.rentree-legend strong{color:var(--navy);margin-right:4px}
.rentree-grid{margin-top:4px}
.rentree-card{border-width:2px;transition:border-color .15s,background .15s}
.rentree-card.rentree-empty{border-color:#e3b8b8;background:#fff8f8}
.rentree-card.rentree-partial{border-color:#e6c775;background:#fffaf0}
.rentree-card.rentree-complete{border-color:var(--ok);background:#f1f9f5}
.rentree-check-list{display:grid;gap:11px}
.rentree-check-row{display:flex;align-items:center;gap:11px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.rentree-check-row input{width:22px;min-height:22px;flex:0 0 22px}
.rentree-item-list{display:grid;gap:10px}
.rentree-item-row{display:flex;align-items:center;gap:8px}
.rentree-item-row input{flex:1;min-width:0;border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:#fff}
.rentree-table-wrap{width:100%;max-width:100%;min-width:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;touch-action:pan-x pan-y;margin-top:4px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow)}
.rentree-table{min-width:100%;border:0;border-spacing:0;table-layout:fixed;background:#fff}
.rentree-table-student-column{width:230px}.rentree-table-item-column{width:130px}
.rentree-table th,.rentree-table td{box-sizing:border-box;padding:0;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:middle}
.rentree-table tr:last-child th,.rentree-table tr:last-child td{border-bottom:0}.rentree-table th:last-child,.rentree-table td:last-child{border-right:0}
.rentree-table thead th{position:sticky;top:0;z-index:4;height:66px;padding:10px;background:var(--navy);color:#fff;font-size:.82rem;font-weight:800;text-align:center;overflow-wrap:anywhere}
.rentree-table thead .rentree-table-student-head{left:0;z-index:6;padding-left:16px;text-align:left}
.rentree-table tbody th{position:sticky;left:0;z-index:3;background:#fff}
.rentree-table-student{display:flex;width:100%;min-height:76px;gap:10px;align-items:center;padding:12px;border:0;background:#fff;color:var(--ink);text-align:left}
.rentree-table-student:hover,.rentree-table-student:focus-visible{background:var(--soft);outline:3px solid rgba(43,122,120,.16);outline-offset:-3px}
.rentree-table-student .avatar{width:48px;height:48px}
.rentree-table-student strong,.rentree-table-student small{display:block;overflow:hidden;text-overflow:ellipsis}
.rentree-table-student strong{white-space:normal}.rentree-table-student small{margin-top:4px;color:var(--muted)}
.rentree-table-cell{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:76px;background:#fff;cursor:pointer;user-select:none}
.rentree-table-cell:hover{background:var(--soft)}
.rentree-table-cell input{position:absolute;inline-size:1px;block-size:1px;opacity:0;pointer-events:none}
.rentree-table-cell span{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:2px solid var(--teal);border-radius:6px;background:#fff;color:transparent;font-size:1.15rem;font-weight:900;transition:background .15s,color .15s,transform .15s}
.rentree-table-cell input:checked+span{background:var(--teal);color:#fff}
.rentree-table-cell input:focus-visible+span{outline:3px solid rgba(43,122,120,.3);outline-offset:3px}
.rentree-table-cell:active span{transform:scale(.92)}
.rentree-table-help{margin-top:12px;padding:11px 14px;border:1px solid #e8c45e;border-radius:10px;background:#fff6d8;color:var(--navy);font-size:.86rem;font-weight:700}
.class-tracking-trombi{margin-top:14px}.class-tracking-card{min-height:132px;cursor:pointer}.class-tracking-card .avatar{width:64px;height:64px}.class-tracking-card footer{align-items:flex-end}.class-tracking-student-head{display:flex;align-items:center;gap:14px;margin-bottom:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.class-tracking-student-head .avatar{width:72px;height:72px;flex:0 0 72px}.class-tracking-student-head strong,.class-tracking-student-head small{display:block}.class-tracking-student-head strong{font-size:1.05rem;color:var(--navy)}.class-tracking-student-head small{margin-top:5px;color:var(--muted)}.class-tracking-rubrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:16px 0}.class-tracking-rubric{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:center;gap:8px;min-height:116px;padding:16px;border:2px solid var(--teal);border-radius:14px;background:#fff;text-align:left;color:var(--navy);cursor:pointer}.class-tracking-rubric:hover{background:var(--soft)}.class-tracking-rubric:active{transform:scale(.97)}.class-tracking-rubric strong{padding-right:35px;line-height:1.25}.class-tracking-rubric output{grid-column:2;grid-row:1/3;font-size:2rem;font-weight:900;color:var(--teal)}.class-tracking-rubric small{color:var(--muted)}.class-tracking-rubric-plus{position:absolute;right:10px;top:9px;padding:3px 7px;border-radius:999px;background:var(--teal);color:#fff;font-size:.78rem;font-weight:900}.class-tracking-modal-actions{display:flex;justify-content:flex-end;margin:14px 0}.class-tracking-history{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.class-tracking-editor-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto}.class-tracking-order{display:flex;gap:5px}.class-tracking-order .btn{min-width:36px;padding-inline:7px}
body.eink .rentree-card.rentree-empty,body.eink .rentree-card.rentree-partial,body.eink .rentree-card.rentree-complete{background:#fff}
body.eink .rentree-table-wrap{box-shadow:none;border-width:2px}body.eink .rentree-table thead th{background:#000}body.eink .rentree-table-cell span{border-color:#000}body.eink .rentree-table-cell input:checked+span{background:#000}
body.eink .class-tracking-rubric{border-color:#000;background:#fff;color:#000}body.eink .class-tracking-rubric output{color:#000}body.eink .class-tracking-rubric-plus{background:#000;color:#fff}
.danger-zone{border:1px solid #e5b6b6;background:#fff8f8}.settings-list{display:grid;gap:16px}.switch-line{display:flex;justify-content:space-between;align-items:center;gap:16px}.switch-line input{width:24px;min-height:24px}
.class-management-list{display:grid;gap:9px;margin-top:14px}.class-management-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.class-management-item.is-archived{opacity:.88}.class-management-order{display:grid;gap:5px}.class-order-button{width:38px;min-width:38px;padding:5px}.class-order-placeholder{display:grid;place-items:center;width:38px;color:var(--muted)}.class-management-content{min-width:0}.class-management-rename{display:grid;grid-template-columns:minmax(120px,1fr) auto auto;align-items:center;gap:8px}.class-management-rename input{min-width:0}.class-management-item small{display:block;margin-top:5px;color:var(--muted);overflow-wrap:anywhere}.class-delete-confirm{display:flex;align-items:flex-start;gap:10px;margin-top:14px;padding:12px;border:1px solid #e5b6b6;border-radius:10px;background:#fff8f8}.class-delete-confirm input{width:22px;min-height:22px;flex:0 0 22px;margin-top:1px}.class-delete-confirm strong,.class-delete-confirm small{display:block}.class-delete-confirm small{margin-top:4px;color:var(--muted)}
.report-model-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 10px}.report-model-heading strong,.report-model-heading small{display:block}.report-model-heading small{margin-top:3px;color:var(--muted)}.report-model-fields{display:grid;gap:12px}.report-model-field{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.report-model-field>header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.report-model-field>header>div{display:flex;gap:6px;flex-wrap:wrap}.report-model-required{display:flex;align-items:flex-start;gap:9px}.report-model-required input{width:22px;min-height:22px;flex:0 0 22px}.report-model-required strong,.report-model-required small{display:block}.report-model-required small{margin-top:2px;color:var(--muted)}.report-model-background{display:grid;gap:12px;margin-top:18px;padding:14px;border:2px solid var(--teal);border-radius:12px;background:var(--soft)}.report-model-background>div>strong,.report-model-background>div>small{display:block}.report-model-background>div>small{margin-top:3px;color:var(--muted)}.report-model-background img{width:min(260px,100%);max-height:330px;object-fit:contain;border:1px solid var(--line);border-radius:9px;background:#fff}.model-reset-row{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.about-card{display:flex;align-items:center;gap:16px}.about-card h2,.about-card p{margin:0}.about-card p{margin-top:6px}
body.eink{--paper:#fff;--soft:#fff;--shadow:none;--line:#111;--navy:#000;--blue:#000;--teal:#000;--muted:#333}body.eink *{animation:none!important;transition:none!important}body.eink .card,body.eink .student-card,body.eink .list-item{box-shadow:none;border-width:2px}body.eink .badge{border:1px solid #000;background:#fff;color:#000}body.eink .class-color-dot,body.eink .class-marker i{background:#111}body.eink .class-marker,body.eink .class-colored-item{border-color:#111}body.eink .dashboard-class-card{border-left-color:#111}body.eink .class-colored-item{box-shadow:inset 4px 0 0 #111}
.dashboard-report-tracking{margin-top:16px}.dashboard-report-tracking>.section-title{margin-top:0}.report-tracking-list{display:grid;gap:8px}.report-tracking-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:11px;border:1px solid var(--line);border-radius:10px;background:#fff;text-align:left}.report-tracking-item:hover,.report-tracking-item:focus-visible{border-color:var(--teal);outline:3px solid rgba(43,122,120,.14)}.report-tracking-item strong,.report-tracking-item small{display:block}.report-tracking-item small{margin-top:4px;color:var(--muted)}
.global-search-results{display:grid;gap:8px;max-height:54vh;overflow:auto}.global-search-item{display:block;width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;text-align:left}.global-search-item:hover,.global-search-item:focus-visible{border-color:var(--teal);background:var(--soft);outline:3px solid rgba(43,122,120,.14)}.global-search-item strong,.global-search-item small{display:block}.global-search-item small{margin-top:4px;color:var(--muted)}
.report-family-export{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:18px;padding:14px;border:2px solid var(--teal);border-radius:12px;background:#f0f8f5}.report-family-export strong,.report-family-export small{display:block}.report-family-export small{margin-top:4px;color:var(--muted);line-height:1.4}.family-field-list{display:grid;gap:9px}.family-field-list label{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.family-field-list input{width:22px;min-height:22px;flex:0 0 22px;margin-top:1px}.family-field-list strong,.family-field-list small{display:block}.family-field-list small{margin-top:4px;color:var(--muted);line-height:1.35}
.report-history-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:18px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.report-history-card strong,.report-history-card small{display:block}.report-history-card small{margin-top:4px;color:var(--muted)}.report-history-list{display:grid;gap:10px}.report-history-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}.report-history-item strong,.report-history-item small{display:block}.report-history-item small{margin-top:5px;color:var(--muted);line-height:1.4;overflow-wrap:anywhere}
@media(max-width:900px){.app-shell{grid-template-columns:1fr;grid-template-rows:64px 1fr 68px;grid-template-areas:"top" "main" "bottom"}.sidebar{display:none}.topbar{min-height:64px}.content{padding:16px;padding-bottom:86px}.bottom-nav{grid-area:bottom;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);position:fixed;z-index:30;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav .nav-btn{display:grid;place-items:center;gap:2px;padding:6px 2px;border-radius:0;min-height:62px;min-width:0}.bottom-nav .nav-btn span{width:auto;font-size:1.2rem}.bottom-nav .nav-btn b{font-size:.67rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grid.cols-4{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:1fr 1fr}.page-head{display:block}.page-head .actions{justify-content:flex-start;margin-top:12px}.brand small,.status-pill{display:none}}
@media(max-width:560px){.content{padding:12px;padding-bottom:86px}.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.grid.cols-3,.grid.cols-2,.row{grid-template-columns:1fr}.topbar{padding:8px 10px}.top-actions{flex-shrink:0}.page-head h1{font-size:1.45rem}.card{padding:12px}.stat{min-height:88px}.stat strong{font-size:1.65rem}.stat .stat-icon{font-size:1.35rem}.list-item{align-items:flex-start}.list-actions{flex-direction:column}.event-item{grid-template-columns:1fr}.event-item .list-actions{width:100%;flex-direction:row;justify-content:flex-start}.event-item .list-actions .btn{flex:1}.drawing-thumb{width:110px;height:80px}.report-stylus,.report-tnote{grid-template-columns:1fr}.report-stylus .drawing-open{grid-column:auto}.report-tnote-actions{display:grid;grid-template-columns:1fr;width:100%}.report-stylus .btn,.report-tnote .btn{width:100%}.report-tnote-documents{grid-column:auto}.document-item{grid-template-columns:auto minmax(0,1fr)}.document-item .list-actions{grid-column:1/-1;width:100%;flex-direction:row}.document-item .list-actions .btn{flex:1}.about-card{align-items:flex-start}}
@media(max-width:560px){.class-management-item{grid-template-columns:auto minmax(0,1fr);align-items:start}.class-management-order{padding-top:2px}.class-management-rename{grid-template-columns:minmax(0,1fr) auto}.class-management-rename .badge{grid-column:1/-1;justify-self:start}.class-management-delete{grid-column:1/-1;width:100%}.class-delete-impact{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.student-profile,.orientation-grid,.profile-edit-flags{grid-template-columns:1fr}.support-alert-item{align-items:flex-start}.support-alert-item .badge{max-width:44%;white-space:normal}}
@media(max-width:560px){.report-model-heading,.report-model-field>header{align-items:stretch;flex-direction:column}.report-model-heading .btn{width:100%}.report-model-field>header>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.report-model-field>header>div .danger{grid-column:1/-1}}
@media(max-width:560px){.dashboard-class-card{min-width:210px}.dashboard-class-actions .color-label{display:none}.dashboard-class-actions .class-color-edit{width:36px;justify-content:center}.dashboard-all-classes{min-width:92px}.dashboard-daily-grid{gap:12px}}
@media(orientation:landscape) and (min-width:901px){.content{padding:20px 28px}}
@media(max-width:560px){.top-actions{gap:5px}.icon-btn{min-width:40px;width:40px}.report-family-export,.report-history-card,.report-history-item{grid-template-columns:1fr}.report-family-export .btn,.report-history-card .btn,.report-history-item .btn{width:100%}.report-tracking-item{align-items:flex-start}.report-tracking-item .badge{max-width:44%;white-space:normal}}
@media(max-width:560px){.class-tracking-rubrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.class-tracking-rubric{min-height:122px;padding:12px}.class-tracking-rubric strong{padding-right:25px;font-size:.9rem}.class-tracking-rubric output{grid-column:1/-1;grid-row:auto;font-size:1.65rem}.class-tracking-rubric small{grid-column:1/-1;font-size:.72rem}.class-tracking-modal-actions .btn{width:100%}}

.restore-progress{display:block;width:100%;height:12px;margin:10px 0;accent-color:var(--primary,#0b3b68)}

.restore-progress{display:block;width:100%;height:12px;margin:10px 0;accent-color:var(--primary,#0b3b68)}

.restore-progress{display:block;width:100%;height:12px;margin:10px 0;accent-color:var(--primary,#0b3b68)}

.nc-setup{width:min(560px,94vw);max-height:88vh;overflow:auto;padding:20px;border:1px solid var(--muted);border-radius:14px;background:var(--surface,#fff);color:var(--text,#172033)}
.nc-setup::backdrop{background:rgba(0,0,0,.48)}
.nc-setup header{display:flex;align-items:center;justify-content:space-between;gap:12px}.nc-setup h2{font-size:1.2rem;margin:0}.nc-setup li{margin:10px 0}.nc-setup .actions{display:flex;flex-wrap:wrap;gap:8px}.nc-setup input{box-sizing:border-box;max-width:100%}.nc-setup #nc-status{overflow-wrap:anywhere}

/* Desktop: do not turn the body into a non-scrolling sticky ancestor.
   Keep the document scroll, with persistent header and independently scrollable navigation. */
@media(min-width:901px){
  html,body{overflow-x:clip}
  .sidebar{align-self:start;min-height:0;overflow-y:auto;overscroll-behavior-y:contain}
  .sidebar>#main-nav,.sidebar>.sidebar-foot{flex-shrink:0}
}

.image-note-picker{display:grid;gap:12px}.image-note-preview{min-height:150px;padding:10px;border:1px dashed var(--line);border-radius:12px;background:var(--paper)}.image-note-preview>img{display:block;width:min(100%,520px);max-height:360px;object-fit:contain;margin:0 auto 10px;border-radius:10px;background:#fff}.note-image-thumb{object-fit:cover;background:#f4f6f7}.image-note-preview .btn{margin-top:8px}
@media(max-width:560px){.image-note-picker .actions{display:grid;grid-template-columns:1fr}.image-note-picker .actions .btn{width:100%}}
