:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#1d2939;background:#f8f9fb;font-synthesis:none;--page: #f8f9fb;--surface: #ffffff;--surface-subtle: #fafbfc;--text: #1d2939;--text-strong: #101828;--text-muted: #667085;--primary: #174a7e;--primary-hover: #123d69;--danger: #b42318;--danger-hover: #912018;--border: #e3e7ec;--border-strong: #cbd3dc;--table-grid: #e2e7ec;--table-grid-vertical: #edf0f3;--editor-border: #d8dfe6;--focus-ring: rgb(52 119 183 / 28%);--table-header: #f7f8fa;--table-hover: #fbfcfd;--space-1: .35rem;--space-2: .65rem;--space-3: 1rem;--space-4: 1.5rem;--radius-sm: 5px;--radius-md: 8px;--control-height: 2.25rem;--compact-control-height: 1.85rem;--workspace-max-width: 1560px;--workspace-gutter: 24px}*{box-sizing:border-box}body{min-width:320px;margin:0;background:var(--page);color:var(--text);font-size:.9375rem;line-height:1.45}button,input,select,textarea{font:inherit}main.workspace{width:min(calc(100% - (var(--workspace-gutter) * 2)),var(--workspace-max-width));margin:0 auto;padding:var(--space-3) 0 var(--space-4);overflow-x:clip}main.auth-page{width:min(calc(100% - (var(--workspace-gutter) * 2)),28rem);margin:5rem auto 0}h1,h2,h3{color:var(--text-strong);line-height:1.25}h1{margin:0 0 var(--space-3);font-size:1.45rem;font-weight:700;letter-spacing:-.015em}h2{margin:var(--space-4) 0 var(--space-2);font-size:1.125rem;font-weight:600}h3{margin:var(--space-3) 0 var(--space-2);font-size:.9375rem;font-weight:600}p{margin:var(--space-1) 0}small,.muted,.page-meta{color:var(--text-muted)}section,form,table{margin-top:var(--space-3)}section{padding-top:var(--space-2);border-top:1px solid var(--border)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}button{min-height:var(--control-height);padding:.38rem .72rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:#344054;font-weight:500;line-height:1.2;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}button:hover:not(:disabled){border-color:#9cabbc;background:#f2f5f8;color:var(--text-strong)}button:active:not(:disabled){background:#e9eef3}button:disabled{cursor:not-allowed;opacity:.52}.button-primary{border-color:var(--primary);background:var(--primary);color:#fff}.button-primary:hover:not(:disabled),.button-primary:active:not(:disabled){border-color:var(--primary-hover);background:var(--primary-hover);color:#fff}.button-danger{border-color:#e3b8b4;background:var(--surface);color:#a62b22}.button-danger:hover:not(:disabled){border-color:#d99d97;background:#fff6f5;color:var(--danger-hover)}.button-danger:active:not(:disabled){background:#fee9e7}.button-danger:focus-visible{border-color:var(--danger);box-shadow:0 0 0 3px #b4231829}.button-ghost{border-color:transparent;background:transparent;color:var(--text-muted)}.button-ghost:hover:not(:disabled){border-color:transparent;background:#e9eef4;color:var(--text)}.button-compact{min-height:var(--compact-control-height);padding:.24rem .5rem;font-size:.8125rem}form{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-subtle)}form h3{width:100%;margin:0 0 .1rem}label{display:grid;gap:.3rem;color:#475467;font-size:.8125rem;font-weight:500}input:not([type=checkbox]),select,textarea{min-height:var(--control-height);padding:.4rem .58rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);outline:0;background:var(--surface);color:var(--text);line-height:1.25;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}input:not([type=checkbox]):hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:#9dacbd}input::placeholder,textarea::placeholder{color:#98a2b3}input:disabled,select:disabled,textarea:disabled{background:#eef1f5;color:var(--text-muted);cursor:not-allowed}textarea{min-height:5.25rem;resize:vertical}input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--primary)}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{border-color:var(--primary);outline:2px solid transparent;box-shadow:0 0 0 3px var(--focus-ring)}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--danger);background:#fff8f7}input[aria-invalid=true]:focus-visible,select[aria-invalid=true]:focus-visible,textarea[aria-invalid=true]:focus-visible{box-shadow:0 0 0 3px #b423182e}.auth-page h1{margin-bottom:var(--space-2)}.auth-form{display:grid;align-items:stretch}.auth-form button{justify-self:start}.lesson-editor,.assignment-editor{position:relative;margin-top:var(--space-2);padding:.85rem var(--space-3);border-left:3px solid #8eaeca}.field-with-error{display:inline-flex;max-width:100%;flex-direction:column;align-items:flex-start}.field-control{display:flex;align-items:center;gap:.15rem}.field-error{display:block;max-width:7.5rem;margin-top:.2rem;color:var(--danger);font-size:.75rem;font-weight:400;line-height:1.2}.app-header{display:flex;min-height:3.25rem;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2);border-bottom:1px solid var(--border)}.app-header h1{margin:0}.app-header-actions{display:flex;align-items:center;gap:.15rem}.lesson-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-2);margin:0;padding:.8rem;border:1px solid #e2e6eb;border-radius:6px;background:#fbfcfd}.lesson-toolbar label{min-width:min(100%,12rem)}.lesson-toolbar label:nth-of-type(2){flex:1 1 18rem}.date-navigation{display:flex;align-items:end;gap:.3rem}.date-navigation label{min-width:9.5rem}.date-navigation input,.lesson-toolbar select{width:100%}.date-navigation>button{width:var(--control-height);min-height:var(--control-height);padding:0;color:var(--primary);font-size:1.2rem}.lesson-empty-state{align-self:end;margin:0}.page-meta{margin:.6rem 0 0;font-size:.8125rem;font-weight:500}.notes-compact,.assignments-section{margin-top:var(--space-2);padding-top:var(--space-2)}.notes-compact h3,.assignments-section h2{margin-top:0}.notes-compact h3{margin-bottom:var(--space-1)}.notes-textarea{width:100%;min-height:5.25rem;border-color:var(--border);background:var(--surface)}.section-header-action,.admin-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2)}.section-header-action h2,.admin-heading h2{margin:0}.status-area{display:inline-block;min-width:7rem;min-height:1.2rem;margin-left:var(--space-1);color:var(--text-muted);font-size:.75rem;font-weight:400;vertical-align:middle}.status-area [role=status]{margin:0}[role=alert]{color:var(--danger);font-size:.8125rem;font-weight:500}.autosave-error{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);margin-top:var(--space-1)}.autosave-error p{margin:0}.empty-state{margin-top:var(--space-2);padding:.55rem .75rem;border-left:3px solid #9db3c8;background:var(--surface-subtle);color:var(--text-muted);font-size:.875rem}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{padding:.44rem .55rem;border:1px solid var(--table-grid);border-inline-color:var(--table-grid-vertical);text-align:left;vertical-align:middle}th{background:var(--table-header);color:#2d3a4d;font-size:.8125rem;font-weight:600}thead th{border-bottom-color:var(--border-strong)}tbody tr:hover>th,tbody tr:hover>td{background:var(--table-hover)}td input:not([type=checkbox]){width:min(100%,6rem)}.table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}.gradebook-table-scroll{margin-top:0;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface)}.gradebook-table-scroll table{min-width:max-content;margin:0}.gradebook-table th:first-child,.gradebook-table td:first-child{position:sticky;left:0;z-index:1;min-width:14rem;max-width:19rem;background:var(--surface);box-shadow:1px 0 2px #1d293912}.gradebook-table thead th{position:sticky;top:0;z-index:2;min-width:7.5rem;background:var(--table-header);text-align:center}.gradebook-table thead th:first-child{z-index:3;background:var(--table-header);text-align:left}.gradebook-table td{min-width:7.5rem;text-align:center}.gradebook-table td input:not([type=checkbox]){width:4.75rem;min-height:2rem;padding-block:.28rem;text-align:center;font-variant-numeric:tabular-nums}.gradebook-table td input:not([type=checkbox]),.task-editor-table input:not([type=checkbox]),.task-editor-table select,.task-grading-grid td input:not([type=checkbox]){border-color:var(--editor-border);background:#ffffffb8}.gradebook-table td input:not([type=checkbox]):hover:not(:disabled),.task-editor-table input:not([type=checkbox]):hover:not(:disabled),.task-editor-table select:hover:not(:disabled),.task-grading-grid td input:not([type=checkbox]):hover:not(:disabled){border-color:#bbc6d1;background:var(--surface)}.gradebook-table td input[aria-invalid=true],.task-grading-grid td input[aria-invalid=true]{border-color:var(--danger);background:#fff8f7}.gradebook-table .field-with-error{align-items:center}.attendance-row th,.attendance-row td,.attendance-row:hover th,.attendance-row:hover td{background:#f8fafb}.attendance-row th{color:#27445f;font-weight:600}.attendance-cell input[type=checkbox]{display:block;margin:0 auto}.assignment-header{display:grid;gap:.08rem;margin-bottom:var(--space-1);font-size:.875rem}.assignment-header strong{color:var(--text-strong);font-size:.9rem;font-weight:600}.assignment-header small{font-size:.75rem;font-weight:400}.assignment-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.assignment-actions .status-area{min-width:5rem;margin-left:0}.assignment-actions .status-area:empty{display:none}.assignment-actions .button-danger{margin-left:auto}.assignments-empty-row td{padding:var(--space-3);color:var(--text-muted);text-align:left}.task-page-header{display:grid;gap:.75rem;margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.task-page-header h1,.task-page-header h2{margin:0}.task-page-header h2{font-size:1.35rem;letter-spacing:-.01em}.task-back-button{border-color:transparent;background:transparent;color:var(--primary)}.task-back-button:hover:not(:disabled){border-color:transparent;background:#eaf0f6;color:var(--primary-hover)}.task-assignment-summary{display:grid;gap:.12rem}.task-assignment-summary>p:not(.page-meta){margin:0;color:#344054;font-size:1rem;font-weight:500}.task-assignment-summary .page-meta{margin-top:.2rem;font-weight:400}.assignment-mode-switch{display:inline-flex;align-self:start;width:fit-content;gap:0;padding:0;border-bottom:1px solid var(--border-strong)}.assignment-mode-tab{min-height:2.1rem;margin-bottom:-1px;padding:.3rem .8rem;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--text-muted);cursor:pointer}.assignment-mode-tab:hover:not(:disabled){border-bottom-color:#9db3c8;background:var(--surface-subtle);color:var(--text)}.assignment-mode-tab[aria-selected=true],.assignment-mode-tab[aria-selected=true]:hover:not(:disabled){border-bottom-color:var(--primary);background:transparent;color:var(--primary)}.tasks-workspace{margin-top:var(--space-2)}.tasks-workspace h2,.task-assignments-section h2{margin-top:0}.tasks-workspace .section-header-action,.task-assignment-heading{justify-content:flex-start;gap:var(--space-3)}.task-assignment-toolbar,.table-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.task-bulk-action,.assignment-bulk-action,.task-row-action{min-height:2rem;padding:.3rem .6rem;font-size:.8125rem}.task-bulk-action,.assignment-bulk-action,.matrix-action{border-color:var(--border);background:transparent;color:#526174;font-weight:500}.task-bulk-action:hover:not(:disabled),.assignment-bulk-action:hover:not(:disabled),.matrix-action:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface)}.auto-number{display:inline-flex;width:fit-content;align-items:center;gap:.45rem;margin:.25rem 0 .45rem;color:var(--text-muted);font-weight:500}.task-editor-table{margin:0;border:1px solid var(--border-strong)}.task-editor-table th{background:var(--table-header)}.task-editor-table td{padding:.35rem .4rem;vertical-align:middle}.task-editor-table th:nth-child(1),.task-editor-table td:nth-child(1){width:14rem}.task-editor-table th:nth-child(2),.task-editor-table td:nth-child(2){width:7rem}.task-editor-table th:nth-child(3),.task-editor-table td:nth-child(3){width:auto}.task-editor-table th:nth-child(4),.task-editor-table td:nth-child(4){width:7rem}.task-editor-table th:nth-child(5),.task-editor-table td:nth-child(5){width:8.5rem}.task-editor-table input:not([type=checkbox]),.task-editor-table select{width:100%;min-width:5rem;min-height:2rem;padding-block:.28rem}.editing-row td{background:var(--surface)}.editing-row:focus-within td{background:#fcfdfe}.task-draft-row td,.task-draft-row:hover td{background:#fdfefe;border-top-color:var(--border-strong)}.task-draft-row td:first-child{box-shadow:inset 2px 0 #b8c5d1}.task-row-actions{min-height:2rem;justify-content:flex-start;white-space:nowrap}.task-form-error{margin:0}.task-assignments-section{margin-top:var(--space-4);padding-top:var(--space-3)}.task-grid{margin-top:var(--space-2);border:1px solid var(--border-strong);border-collapse:separate;border-spacing:0;background:var(--surface)}.task-assignment-grid{margin-top:0}.task-grid th,.task-grid td{padding:.46rem .55rem;border-width:0 0 1px;border-color:var(--table-grid);vertical-align:middle}.task-grid thead th{background:var(--table-header);border-bottom:1px solid var(--border-strong);text-align:center}.task-grid tbody tr:hover>th,.task-grid tbody tr:hover>td{background:var(--table-hover)}.task-grid .student-column{position:sticky;left:0;z-index:2;min-width:10.5rem;background:var(--surface);box-shadow:1px 0 2px #1d29390f;color:var(--text);font-weight:600;text-align:left}.task-grid thead .student-column{z-index:3;background:var(--table-header)}.task-grid tbody tr:hover>.student-column{background:var(--table-hover)}.task-assignment-grid .task-column,.task-grading-grid thead th:not(.student-column):not(.summary-column){min-width:6.5rem}.task-assignment-header{display:grid;justify-items:center;gap:.22rem}.task-assignment-header>span{color:var(--text-strong);font-size:.875rem;font-weight:600}.task-assignment-header small{font-variant-numeric:tabular-nums}.task-assignment-header .matrix-action{min-width:3.3rem;min-height:1.7rem;padding:.18rem .4rem;font-size:.75rem;font-weight:400}.task-assignments-section tbody th{font-weight:600}.task-assignments-section tbody td{text-align:center}.task-assignments-section tbody input[type=checkbox]{display:block;margin:.15rem auto}.protected-assignment{color:#52718c;font-size:.9rem;font-weight:600}.task-grading-grid td{min-width:6.5rem;text-align:center}.task-grading-grid .summary-column{background:#fcfcfd;border-left:1px solid var(--table-grid);font-size:.8125rem;font-variant-numeric:tabular-nums}.task-grading-grid thead .summary-column{color:#344054}.task-grading-grid .summary-start-column{border-left-color:var(--border-strong)}.task-grading-grid .overall-grade-column,.task-grading-grid tbody tr:hover .summary-column{background:#fafbfc}.task-grading-grid tbody tr:hover .overall-grade-column{background:#f8fafb}.task-grading-grid .field-with-error{align-items:center}.task-grading-header__title{color:var(--text);font-weight:600}.task-grading-header__meta{color:var(--text-muted);font-size:.72rem;font-weight:400}.percentage-input{display:flex;width:5.65rem;height:2rem;overflow:hidden;border:1px solid var(--editor-border);border-radius:var(--radius-sm);background:#ffffffb8;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.percentage-input:hover{border-color:#bbc6d1;background:var(--surface)}.percentage-input:focus-within{border-color:var(--primary);background:var(--surface);box-shadow:0 0 0 3px var(--focus-ring)}.percentage-input--invalid{border-color:var(--danger);background:#fff8f7}.percentage-input--invalid:focus-within{box-shadow:0 0 0 3px #b423182e}.task-grading-grid td .percentage-input__field{width:auto;min-width:0;min-height:0;flex:1 1 auto;padding:.25rem .38rem;border:0;border-radius:0;outline:0;background:transparent;box-shadow:none;text-align:right;font-variant-numeric:tabular-nums}.task-grading-grid td .percentage-input__field:hover:not(:disabled),.task-grading-grid td .percentage-input__field:focus-visible,.task-grading-grid td .percentage-input__field[aria-invalid=true]{border:0;background:transparent;box-shadow:none}.percentage-input__suffix{display:grid;width:1.35rem;flex:0 0 1.35rem;place-items:center;border-left:1px solid #e6eaee;background:#fafbfc;color:var(--text-muted);font-size:.75rem;line-height:1}.task-grading-grid .overall-grade-column input{width:4.5rem;min-height:2rem;text-align:center;font-variant-numeric:tabular-nums}.admin-tabs{display:flex;flex-wrap:wrap;gap:0;margin:var(--space-2) 0 var(--space-4);border-bottom:1px solid var(--border-strong)}.admin-tabs button{margin-bottom:-1px;border-color:transparent;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--text-muted)}.admin-tabs button:hover,.admin-tabs button:focus-visible{background:var(--surface-subtle);color:var(--text)}.admin-tabs button[aria-current=page]{border-bottom-color:var(--primary);background:transparent;color:var(--primary)}.admin-section{margin-top:0;padding-top:0;border-top:0}.admin-heading+.admin-row{border-top:1px solid var(--border)}.admin-row{display:flex;min-height:3rem;align-items:center;gap:var(--space-2);padding:.45rem var(--space-2);border-bottom:1px solid var(--border);background:var(--surface)}.admin-row:hover{background:var(--table-hover)}.admin-row strong{margin-right:auto;font-weight:600}.admin-row button{min-height:var(--compact-control-height);padding:.24rem .5rem;font-size:.8125rem}.admin-row-actions{flex:0 0 auto;margin-left:var(--space-1)}.dialog-backdrop{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--space-3);background:#1018287a}.confirmation-dialog{width:min(100%,30rem);padding:var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);box-shadow:0 18px 48px #1018283d}.confirmation-dialog h2{margin:0 0 var(--space-2);font-size:1.125rem}.confirmation-dialog-content{color:#475467}.confirmation-dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-3)}.admin-form-dialog{display:flex;width:min(100%,26rem);flex-direction:column;align-items:stretch;gap:var(--space-3)}.admin-form-dialog label,.admin-form-dialog input{width:100%}.admin-form-dialog .confirmation-dialog-actions{margin-top:0}@media (max-width: 640px){:root{--workspace-gutter: 16px}main.workspace,main.auth-page{padding:var(--space-3) 0}form{display:grid}label{width:100%}.lesson-toolbar{align-items:stretch}.lesson-toolbar label,.lesson-toolbar label:nth-of-type(2){flex-basis:100%}}
