:root{--pale-sky:#bfd7ea;--cool-steel:#91aec1;--air-force-blue:#508ca4;--sea-green:#0a8754;--dark-spruce:#004f2d;--ink:#14201c;--muted:#64736f;--surface:#fff;--surface-alt:#f6f9f8;--line:#648477;--danger:#a63838;--warning:#d99f24;--shadow:0 18px 50px #004f2d1f;--radius:8px}[data-theme=dark]{--ink:#edf7f3;--muted:#abc0b9;--surface:#10201a;--surface-alt:#142a22;--line:#2c4b40;--shadow:0 18px 50px #00000047}*{box-sizing:border-box}body{background:var(--surface-alt);color:var(--ink);margin:0;font-family:Figtree,system-ui,sans-serif}body *{transition:background-color .18s,border-color .18s,color .18s,transform .18s,box-shadow .18s}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}svg{fill:currentColor;width:1.1rem;height:1.1rem}.icon{flex:none}main{gap:1.25rem;display:grid}.eyebrow{color:var(--sea-green);text-transform:uppercase;margin:0 0 .25rem;font-size:.78rem;font-weight:800}h1,h2,h3,p{margin-top:0}:focus-visible{outline:3px solid color-mix(in srgb, var(--sea-green), white 35%);outline-offset:2px}.app-shell{background:linear-gradient(180deg, color-mix(in srgb, var(--pale-sky), transparent 82%), transparent 18rem), var(--surface-alt);min-height:100vh}.content-shell{grid-template-rows:auto 1fr auto;min-width:0;min-height:100vh;display:grid}.topbar{background:color-mix(in srgb, var(--surface), transparent 4%);border-bottom:2px solid var(--line);position:static}.topbar-main{grid-template-columns:1fr;align-items:start;gap:1rem;padding:.95rem clamp(1rem,3vw,2rem);display:grid}.title-block{min-width:0}.topbar h1{margin:0;font-size:clamp(1.55rem,2.4vw,2.25rem);line-height:1.05}.page-actions,.top-actions,.toolbar,.actions{flex-wrap:wrap;align-items:stretch;gap:.65rem;width:100%;display:flex}.page-actions>*,.toolbar>*,.actions>*,.inline-form>*{flex:100%}.page-actions:empty{display:none}.command-bar{background:color-mix(in srgb, var(--surface-alt), var(--surface) 62%);border-top:2px solid var(--line);padding:.5rem clamp(1rem,3vw,2rem)}.page-actions{justify-content:flex-start;width:100%}.page-actions>.toolbar{width:100%}.toolbar{justify-content:flex-start}.top-actions{flex-wrap:wrap;justify-content:flex-start}.app-launcher-button{background:var(--dark-spruce);color:#fff}.app-launcher-button:hover{background:var(--sea-green)}.content-shell main{gap:1rem;padding:clamp(1rem,3vw,2rem);animation:.24s both content-in;display:grid}.footer{color:var(--muted);padding:1rem clamp(1rem,3vw,2rem)}.two-column{grid-template-columns:1fr;gap:1rem;display:grid}@keyframes content-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.narrow{max-width:760px}@media (width>=761px){.topbar{z-index:20;position:sticky;top:0}.page-actions,.toolbar,.inline-form{align-items:center;width:auto}.page-actions>*,.toolbar>*,.actions>*,.inline-form>*{flex:none}.command-bar{padding-block:.45rem}.two-column{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1081px){.topbar-main{grid-template-columns:minmax(220px,1fr) auto;align-items:center}.top-actions{flex-wrap:nowrap;justify-content:flex-end}}.panel,.item-card,.metric-card,.table-card,.auth-card{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.9rem}.card-grid,.metric-grid,.compact-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;display:grid}.compact-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.metric-card span{color:var(--muted);margin-bottom:.5rem;display:block}.metric-card strong{font-size:2rem}.metric-card small{color:var(--muted);margin-top:.35rem;display:block}.item-card{gap:.8rem;display:grid}.group-card{align-content:start;min-height:auto}.group-card header{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:.7rem;display:grid}.group-card h3,.group-card p{margin-bottom:.2rem}.group-card p{color:var(--muted)}.group-card footer{border-top:2px solid var(--line);margin-top:.25rem;padding-top:.75rem}.item-card:hover,.metric-card:hover,.panel:hover{transform:translateY(-2px)}.item-card footer,.section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.7rem;display:flex}.badge{background:var(--pale-sky);color:var(--dark-spruce);border-radius:999px;margin:.12rem;padding:.25rem .55rem;font-size:.8rem;display:inline-block}.current-class{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.current-class-panel{padding:.85rem 1rem}.empty-state{background:var(--surface);border:1px dashed var(--cool-steel);border-radius:var(--radius);color:var(--muted);text-align:center;place-items:center;gap:.6rem;padding:1.2rem;display:grid}.empty-state .icon{color:var(--air-force-blue);width:2rem;height:2rem}.empty-state.compact{box-shadow:none;padding:.8rem}.subtle-panel{box-shadow:none}.performance-card header{justify-content:space-between;align-items:center;display:flex}.group-detail-layout{grid-template-columns:1fr;align-items:start;gap:1rem;display:grid}.group-editor,.group-side-panel{gap:1rem;display:grid}.selected-list{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.student-chip,.status-badge{background:color-mix(in srgb, var(--pale-sky), transparent 28%);border:2px solid var(--line);color:var(--dark-spruce);border-radius:999px;padding:.28rem .6rem;font-size:.82rem;font-weight:800;display:inline-flex}.status-present,.status-late,.status-excused{background:color-mix(in srgb, var(--sea-green), transparent 84%);color:var(--dark-spruce)}.status-absent{background:color-mix(in srgb, var(--danger), transparent 84%);color:var(--danger)}.menu-hero{background:linear-gradient(135deg, color-mix(in srgb, var(--dark-spruce), transparent 8%), color-mix(in srgb, var(--air-force-blue), transparent 25%));border-radius:var(--radius);color:#fff;padding:clamp(1.25rem,4vw,2.5rem)}.menu-hero article{max-width:760px}.menu-hero .eyebrow{color:color-mix(in srgb, white, var(--pale-sky) 35%)}.menu-hero h2{margin:.25rem 0 .6rem;font-size:clamp(1.8rem,4vw,3rem);line-height:1.05}.menu-hero p:last-child{color:color-mix(in srgb, white, var(--pale-sky) 22%);max-width:58ch;margin:0}.menu-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem;display:grid}.menu-card{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--ink);gap:.7rem;min-height:170px;padding:1.15rem;display:grid;position:relative}.menu-card:after{background:var(--sea-green);content:"";opacity:0;border-radius:999px;width:.45rem;height:.45rem;transition:opacity .2s,transform .2s;position:absolute;top:1rem;right:1rem;transform:scale(.5)}.menu-card:hover,.menu-card:focus-visible{border-color:var(--air-force-blue);transform:translateY(-3px)}.menu-card:hover:after,.menu-card:focus-visible:after{opacity:1;transform:scale(1)}.menu-card-icon{background:color-mix(in srgb, var(--pale-sky), transparent 25%);border-radius:var(--radius);color:var(--dark-spruce);justify-content:center;align-items:center;width:3rem;height:3rem;display:inline-flex}.menu-card-icon .icon{width:1.5rem;height:1.5rem}.menu-card strong{font-size:1.15rem}.menu-card small{color:var(--muted);font-size:.92rem;line-height:1.45}.profile-layout{grid-template-columns:1fr;align-items:start;gap:1rem;max-width:none;display:grid}.profile-summary,.profile-panel{padding:clamp(1rem,2vw,1.35rem)}.profile-summary{align-content:start;gap:1rem;display:grid}.profile-avatar{background:linear-gradient(135deg, var(--dark-spruce), var(--sea-green));border-radius:var(--radius);color:#fff;justify-content:center;align-items:center;width:4.2rem;height:4.2rem;display:inline-flex}.profile-avatar .icon{width:2rem;height:2rem}.profile-summary h2,.profile-panel h2,.profile-security h3{margin-bottom:.25rem}.profile-summary p,.profile-security p{color:var(--muted);margin-bottom:0}.profile-meta{gap:.65rem;margin:.25rem 0 0;padding:0;list-style:none;display:grid}.profile-meta li{border:2px solid var(--line);border-radius:var(--radius);grid-template-columns:auto 1fr;align-items:start;gap:.15rem .55rem;padding:.75rem;display:grid}.profile-meta .icon{color:var(--sea-green);grid-row:span 2;margin-top:.1rem}.profile-meta span{color:var(--muted);font-size:.8rem;font-weight:800}.profile-meta strong{overflow-wrap:anywhere;font-size:.95rem}.profile-form{margin-top:1rem}.profile-security{background:color-mix(in srgb, var(--pale-sky), transparent 72%);border:2px solid var(--line);border-radius:var(--radius);padding:.9rem}.profile-security header{align-items:start;gap:.65rem;display:flex}.profile-security .icon{color:var(--dark-spruce);margin-top:.15rem}.compact-empty{margin-top:.5rem;padding:1rem}.schedule-board{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);grid-template-columns:4.75rem repeat(7,minmax(9.25rem,1fr));gap:0;display:grid;overflow-x:auto}.schedule-board-corner,.schedule-board-heading,.schedule-board-time,.schedule-cell{border-bottom:2px solid color-mix(in srgb, var(--line), var(--dark-spruce) 20%);border-right:2px solid color-mix(in srgb, var(--line), var(--dark-spruce) 20%);min-width:0;padding:.55rem}.schedule-board-corner,.schedule-board-heading,.schedule-board-time{background:color-mix(in srgb, var(--pale-sky), transparent 66%);color:var(--dark-spruce);font-size:.82rem;font-weight:900}.schedule-board-heading{z-index:1;position:sticky;top:0}.schedule-board-time{justify-content:center;align-items:start;display:flex}.schedule-cell{background:color-mix(in srgb, var(--surface), var(--pale-sky) 8%);align-content:start;gap:.45rem;min-height:6.5rem;display:grid}.schedule-slot-card{background:var(--surface);border:1px solid color-mix(in srgb, var(--sea-green), transparent 65%);border-left:.22rem solid var(--sea-green);border-radius:calc(var(--radius) - 2px);gap:.35rem;padding:.55rem;transition:box-shadow .2s,transform .2s,border-color .2s;display:grid;position:relative}.schedule-board.is-editing .schedule-slot-card{cursor:grab;border-style:dashed dashed dashed solid}.schedule-board.is-editing .schedule-slot-card:active{cursor:grabbing;opacity:.9;z-index:100!important}.schedule-board.is-editing .schedule-slot-card .slot-resize-handle,.schedule-board.is-editing .schedule-slot-card .slot-delete-form{display:block!important}.schedule-slot-card header{gap:.15rem;padding-right:2rem;display:grid}.schedule-slot-card header span,.schedule-slot-card small,.schedule-empty-cell{color:var(--muted);font-size:.78rem}.schedule-slot-card p{margin:0;font-weight:800}.schedule-slot-card form{position:absolute;top:.4rem;right:.4rem}.schedule-slot-card .icon-button{width:1.8rem;min-height:1.8rem;padding:.25rem}.schedule-empty-cell{place-self:center}.assignment-team-builder{background:color-mix(in srgb, var(--pale-sky), transparent 78%);border:2px solid var(--line);border-radius:var(--radius);gap:.8rem;padding:.85rem;display:grid}.assignment-team-builder[hidden]{display:none}.assignment-team-builder>header{align-items:stretch;gap:.75rem;display:grid}.assignment-team-builder h3,.assignment-team-builder p,.team-card h4{margin:0}.assignment-team-builder p{color:var(--muted);font-size:.88rem}.team-list{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.7rem;display:grid}.team-card{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);gap:.65rem;padding:.75rem;display:grid}.team-card header{justify-content:space-between;align-items:center;display:flex}.team-card .icon-button{width:2rem;min-height:2rem;padding:.3rem}@media (width>=901px){.group-detail-layout{grid-template-columns:minmax(0,1.45fr) minmax(280px,.8fr)}.profile-layout{grid-template-columns:minmax(260px,340px) minmax(0,760px);max-width:1120px}.schedule-board{grid-template-columns:5.5rem repeat(7,minmax(10rem,1fr))}.schedule-cell{min-height:7.25rem}.assignment-team-builder>header{justify-content:space-between;align-items:center;display:flex}}.table-card{overflow-x:auto}table,thead,tbody,tr,th,td{min-width:0;display:block}table{border-collapse:collapse;width:100%}thead{display:none}th,td{border-bottom:2px solid var(--line);text-align:left;vertical-align:top}th{color:var(--muted);text-transform:uppercase;font-size:.78rem}tr{border:2px solid var(--line);border-radius:var(--radius);margin-bottom:.75rem;padding:.6rem}td{white-space:normal;overflow-wrap:anywhere;border:0;grid-template-columns:110px minmax(0,1fr);align-items:center;gap:.5rem;padding:.4rem;display:grid}td:before{color:var(--muted);content:attr(data-label);font-weight:700}.dense-table th,.dense-table td{padding:.55rem .65rem}.pagination{justify-content:center;align-items:center;gap:.7rem;display:flex}.pagination a,.pagination span,.pagination strong{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);padding:.55rem .8rem}@media (width>=761px){table,thead,tbody,tr,th,td{display:revert}table{min-width:760px}tr{border:none;border-radius:0;margin-bottom:0;padding:0}td{border-bottom:2px solid var(--line);white-space:nowrap;overflow-wrap:normal;padding:.68rem .75rem;display:table-cell}td:before{content:none;display:none}}.form-grid,.form-stack{gap:.9rem;display:grid}.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}label,.inline-form{gap:.35rem;display:grid}.inline-form{flex-wrap:wrap;align-items:end;gap:.65rem;display:flex}label span{color:var(--muted);font-size:.85rem;font-weight:700}input,select,textarea{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);color:var(--ink);width:100%;min-height:2.55rem;padding:.65rem .75rem}select[multiple]{min-height:9rem;padding:.45rem}select[multiple] option{border-radius:calc(var(--radius) - 2px);padding:.35rem .45rem}input:hover,select:hover,textarea:hover{border-color:var(--air-force-blue)}input[type=checkbox],input[type=radio]{width:auto;min-height:auto}textarea{resize:vertical;min-height:7rem}.full{grid-column:1/-1}.check-row{align-items:center;gap:.5rem;display:flex}.form-actions{flex-wrap:wrap;justify-content:stretch;align-items:stretch;gap:.65rem;display:flex}.form-actions .button{flex:100%}.button,.icon-button{border-radius:var(--radius);cursor:pointer;border:0;justify-content:center;align-items:center;gap:.45rem;min-height:2.5rem;padding:.65rem .9rem;font-weight:800;display:inline-flex}.button:hover,.icon-button:hover{transform:translateY(-1px)}.icon-button{width:2.5rem}.primary{background:var(--sea-green);color:#fff}.secondary{background:var(--pale-sky);color:var(--dark-spruce)}.ghost{border:2px solid var(--line);color:var(--ink);background:0 0}.danger{background:var(--danger);color:#fff}.warning{background:var(--warning);color:var(--ink)}.disabled,.button:disabled{background:color-mix(in srgb, var(--muted), transparent 75%);color:var(--muted);cursor:not-allowed;transform:none}.file-picker{background:var(--surface);border:1px dashed var(--cool-steel);border-radius:var(--radius);cursor:pointer;min-width:220px;padding:.55rem .75rem}.file-picker input{opacity:0;inline-size:1px;position:absolute}.file-picker>span{color:var(--ink);align-items:center;gap:.45rem;display:flex}.file-picker small{color:var(--muted);margin-top:.25rem;display:block}.help-text{color:var(--muted);font-size:.85rem;display:block}.select-filter{gap:.4rem;min-width:min(240px,100%);display:grid}.select-filter input{min-height:2.2rem}.inline-form label,.command-bar label{min-width:min(260px,100%)}.command-bar .inline-form{align-items:center}.command-bar .button,.command-bar .file-picker{min-height:2.25rem}.command-bar .button,.command-bar .icon-button{padding:.45rem .75rem}.command-bar label{flex:0 auto;align-items:stretch;gap:.45rem;width:100%;display:grid}.command-bar label span{white-space:nowrap;margin:0;font-size:.78rem}.command-bar .select-filter{align-items:stretch;gap:.4rem;width:100%;min-width:0;display:grid}.command-bar .select-filter input,.command-bar .select-filter select{width:100%;max-width:none;min-height:2.25rem;padding:.45rem .65rem}.command-bar .file-picker{align-items:stretch;gap:.45rem;width:100%;min-width:220px;max-width:none;padding:.38rem .65rem;display:flex}.command-bar .file-picker>span,.command-bar .file-picker small{white-space:nowrap;min-width:0;margin:0}.command-bar .file-picker small{text-overflow:ellipsis;max-width:140px;overflow:hidden}.readiness-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.7rem;display:grid}.readiness-card{border:2px solid var(--line);border-radius:var(--radius);gap:.25rem;padding:.75rem;display:grid}.readiness-card span{color:var(--muted);font-size:.85rem}.readiness-card.ready{border-color:var(--sea-green)}@media (width>=761px){.form-actions{justify-content:flex-end;align-items:center}.form-actions .button{flex:none}.command-bar label,.command-bar .select-filter,.command-bar .file-picker{align-items:center;width:auto}.command-bar label,.command-bar .select-filter{display:flex}.command-bar .select-filter input{width:clamp(10rem,16vw,15rem)}.command-bar .select-filter select{width:clamp(9rem,13vw,13rem)}.command-bar .file-picker{max-width:320px}}.list{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.list li{border-bottom:2px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.55rem 0;display:flex}.compact-list{gap:.25rem}.compact-list li{padding:.42rem 0}.list span{color:var(--muted)}.modal{border-radius:var(--radius);box-shadow:var(--shadow);border:0;width:min(94vw,680px);max-width:680px;padding:0;animation:.18s both modal-in}.modal.large{width:min(96vw,880px);max-width:880px}.modal::backdrop{background:#00000073}.modal article{background:var(--surface);color:var(--ink);padding:1rem}.modal header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.modal header button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-family:monospace;font-size:1.5rem;line-height:1;transition:all .3s cubic-bezier(.34,1.56,.64,1);display:flex}.modal header button:hover,.modal header button:focus-visible{background:var(--surface-alt);color:var(--danger);outline:none;transform:rotate(90deg)scale(1.15)}.modal header button:active{transform:rotate(90deg)scale(.95)}.confirm-modal header{justify-content:flex-start}.modal-icon{border-radius:var(--radius);color:var(--danger);background:#a638381f;justify-content:center;align-items:center;width:3rem;height:3rem;display:inline-flex}.modal-icon.setup-icon{color:var(--primary);background:#1863dc1f}.first-setup-modal{max-width:580px}.first-setup-modal header{justify-content:flex-start}.first-setup-header-content{align-items:center;gap:1rem;display:flex}.first-setup-description{color:var(--muted);margin-bottom:1.25rem;font-size:.95rem;line-height:1.5}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:.7rem;margin-top:1.2rem;display:flex}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.alert{border:2px solid var(--line);border-radius:var(--radius);padding:.85rem 1rem}.alert.success{background:#0a87541f;border-color:#0a87544d}.alert.danger{background:#a638381f;border-color:#a638384d}.toast-container{pointer-events:none;z-index:9999;flex-direction:column;gap:1rem;display:flex;position:fixed;bottom:2rem;right:2rem}.toast{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow);pointer-events:auto;max-width:400px;margin:0;animation:.3s cubic-bezier(.16,1,.3,1) forwards toast-in}.toast.toast-closing{animation:.2s ease-in forwards toast-out}@keyframes toast-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{to{opacity:0;transform:translate(100%)}}canvas[data-chart]{width:100%;max-height:320px}.dashboard-grid{grid-template-columns:1fr;gap:1rem;display:grid}.chart-panel{min-height:360px}@media (width>=901px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.auth-shell{background:linear-gradient(135deg, var(--surface-alt), var(--pale-sky));place-items:center;min-height:100vh;padding:1rem;display:grid}.auth-card{width:100%;max-width:440px}
