@font-face{font-family:Geist;src:url(/fonts/geist-regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-medium.ttf)format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-semibold.ttf)format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-bold.ttf)format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--surface:#fff;--surface-muted:#fafafa;--ink:#0a0a0a;--muted:#737373;--line:#e5e5e5;--accent:#171717;--accent-soft:#f5f5f5;--warn:#a16207;--warn-strong:#b45309;--danger:#991b1b;--danger-bg:#fef2f2;--danger-line:#fecaca;--success:#166534;--shadow-soft:#0000000f;--on-accent:#fff;--font-regular:400;--font-medium:500;--font-semibold:600;--font-bold:700;--app-wordmark-offset:28px;--sticky-header-top-gap:max(0px, calc(var(--app-wordmark-offset) - 14px));font-family:Geist,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#101010;--surface:#181818;--surface-muted:#202020;--ink:#f5f5f5;--muted:#a3a3a3;--line:#333;--accent:#f5f5f5;--accent-soft:#262626;--warn:#facc15;--warn-strong:#fbbf24;--danger:#fca5a5;--danger-bg:#2b1717;--danger-line:#5f2525;--success:#86efac;--shadow-soft:#00000052;--on-accent:#0a0a0a}*{box-sizing:border-box}html{scrollbar-gutter:stable;font-size:18px}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}main{width:min(720px,100% - 40px);margin:0 auto;padding:96px 0 120px}h1,h2,h3,h4,p{margin:0}h1{font-size:clamp(2rem,4vw,3.25rem);line-height:1.1;font-weight:var(--font-bold);letter-spacing:-.02em}.app-wordmark{top:var(--app-wordmark-offset);left:var(--app-wordmark-offset);z-index:60;font-family:Gill Sans,Gill Sans MT,Calibri,sans-serif;font-size:1.2rem;line-height:1.05;font-weight:var(--font-semibold);letter-spacing:.025em;color:var(--ink);pointer-events:none;align-items:baseline;gap:3px;display:inline-flex;position:fixed}.app-wordmark-inline{margin-bottom:16px;position:static}.app-wordmark-measure{visibility:hidden;pointer-events:none}.app-wordmark-accent,.landing-title-accent{font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-style:italic;font-weight:var(--font-semibold);letter-spacing:.025em;color:var(--ink);font-size:1em}.row-title{font-weight:var(--font-semibold);color:inherit;white-space:nowrap;text-overflow:ellipsis;display:inline-block;overflow:hidden}.row-title-with-warning{vertical-align:bottom;align-items:center;gap:6px;min-width:0;max-width:100%;display:inline-flex}.row-title-with-warning>span:first-child{text-overflow:ellipsis;min-width:0;overflow:hidden}.grade-warning-icon{color:var(--warn-strong);flex:none;justify-content:center;align-items:center;display:inline-flex}.grade-warning-icon svg{width:14px;height:14px}.row-meta{font-weight:var(--font-regular);color:inherit;white-space:nowrap}.header-dropdown-wrapper{position:relative}.header-row{cursor:default;grid-template-columns:minmax(0,1fr) auto;gap:16px}.header-trigger{min-height:0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;min-width:0;padding:0;display:inline-flex}.header-trigger-left{text-align:left;justify-content:flex-start}.header-trigger-right{text-align:right;justify-content:flex-end}.row .header-trigger:disabled{cursor:default;opacity:1}.dropdown-menu{z-index:10;background:var(--surface);border:1px solid var(--line);box-shadow:0 4px 12px var(--shadow-soft);border-radius:6px;min-width:140px;padding:4px;animation:.2s cubic-bezier(.4,0,.2,1) dropdown-enter;position:absolute;top:calc(100% + 4px)}.dropdown-left{min-width:190px;left:0}.dropdown-right{right:0}@keyframes dropdown-enter{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{width:100%;font-size:.85rem;font-weight:var(--font-medium);color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;padding:8px 12px;font-family:inherit;text-decoration:none;transition:background .1s;display:flex}.dropdown-item:hover{background:var(--accent-soft)}.dropdown-item:active{opacity:.7}.theme-toggle-item{justify-content:space-between;gap:16px}.theme-toggle-track{background:var(--line);border-radius:999px;flex:none;width:34px;height:20px;transition:background .15s;position:relative}.theme-toggle-thumb{background:var(--surface);width:14px;height:14px;box-shadow:0 1px 3px var(--shadow-soft);border-radius:50%;transition:transform .15s,background .15s;position:absolute;top:3px;left:3px}.theme-toggle-item[aria-checked=true] .theme-toggle-track{background:var(--accent)}.theme-toggle-item[aria-checked=true] .theme-toggle-thumb{background:var(--bg);transform:translate(14px)}.row-value{font-weight:var(--font-medium);color:inherit;white-space:nowrap;text-align:right;display:inline-block}.rounded-grade-value{font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:baseline;gap:4px;display:inline-flex}.rounded-grade-raw,.rounded-grade-arrow,.rounded-grade-final{color:inherit}.row-value.rounded-grade-value .animated-number,.row-value.rounded-grade-value .animated-grade-value,.row-value.rounded-grade-value .rounded-grade-final .animated-number,.row-value.rounded-grade-value .rounded-grade-letter{min-width:auto}.grade-comparison-values{flex-direction:column;align-items:flex-end;gap:2px;font-size:.78rem;line-height:1.25;display:flex}.row{border:none;border-bottom:1px solid var(--line);font-family:inherit;font-size:.9rem;line-height:1.4;font-weight:var(--font-medium);text-align:left;width:100%;color:var(--muted);cursor:pointer;background:0 0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;min-height:44px;padding:14px 0;display:grid;position:relative}.row:after{content:"";background:var(--ink);transform-origin:0;height:1.5px;transition:transform .35s cubic-bezier(.4,0,.2,1);position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.row.active:after{transform:scaleX(1)}@keyframes loading-bounce{0%{transform:translate(0)}50%{transform:translate(400%)}to{transform:translate(0)}}.row.loading:after{width:20%;animation:2.5s ease-in-out infinite loading-bounce;right:auto;transform:scaleX(1)}.row.todo-progress:after{transform:scaleX(var(--progress,0));background:var(--ink)}.row.todo-progress.active:after{transform:scaleX(var(--progress,0))}html[data-theme=dark] .row.todo-progress:after,html[data-theme=dark] .row.todo-progress.active:after{background:#fff}.row.todo-progress.loading:after{width:20%;animation:2.5s ease-in-out infinite loading-bounce;right:auto;transform:scaleX(1)}@media (prefers-reduced-motion:reduce){.row.todo-progress.loading:after{width:100%;animation:none}}.row:hover,.row.active{color:var(--ink)}.row:active{opacity:.7}.header-row.todo-progress,.header-row.todo-progress .header-trigger,.todo-group .row.todo-progress{color:var(--ink)}html[data-theme=dark] .header-row.todo-progress,html[data-theme=dark] .header-row.todo-progress .header-trigger,html[data-theme=dark] .todo-group .row.todo-progress{color:#fff}.row button{appearance:none;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}.row button:disabled{cursor:default;opacity:.5}.empty{padding:24px 0;font-size:.9rem}.error{color:var(--danger);background:var(--danger-bg);border:1px solid var(--danger-line);max-width:500px;font-size:.9rem;font-weight:var(--font-medium);border-radius:6px;margin-bottom:8px;padding:12px 18px}.sticky-header-wrapper{margin-top:calc(-1 * var(--sticky-header-top-gap));padding-top:var(--sticky-header-top-gap);background:var(--bg);z-index:40;position:sticky;top:0}.sticky-section-row,.sticky-category-row{background:var(--bg);position:sticky}.sticky-section-row{top:calc(var(--sticky-header-top-gap) + var(--sticky-header-height,52px));z-index:39}.sticky-category-row{top:calc(var(--sticky-header-top-gap) + var(--sticky-header-height,52px) + var(--sticky-section-height,52px));z-index:38}.sticky-section-row:active,.sticky-category-row:active{opacity:1}.filter-row{display:contents}.filter-row-anchor{height:36px}.assignment-panel{margin-top:36px}.row.section-row>.row-title{min-width:0;max-width:100%}.row>.row-title:has(.graph-indicator){overflow:visible}.row .row-title-text:has(.graph-indicator){overflow:visible}.row-title-with-warning:has(.graph-indicator){overflow:visible}.row-title-with-warning>span:first-child:has(.graph-indicator){overflow:visible}.section-title-with-indicators{vertical-align:bottom;align-items:center;gap:6px;width:auto;min-width:0;max-width:100%;display:inline-flex}.section-title-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:inherit;flex:0 auto;display:block;position:relative;overflow:hidden}.section-title-placeholder{vertical-align:middle;background:linear-gradient(90deg, var(--surface-muted) 25%, var(--accent-soft) 50%, var(--surface-muted) 75%);background-size:200% 100%;border-radius:999px;width:clamp(7rem,20vw,12rem);height:.85em;animation:1.5s ease-in-out infinite section-title-loading;display:inline-block}@keyframes section-title-loading{to{background-position:-200% 0}}.section-title-with-indicators-editing{max-width:none}.section-title-with-indicators-editing .section-title-label{text-overflow:clip;flex:none;max-width:none;overflow:visible}:is(.row:has(.section-title-with-indicators-editing)>.row-title,.row:has(.section-title-with-indicators-editing) .row-title-text){text-overflow:clip;max-width:none;overflow:visible}.grade-title-indicator{width:18px;height:18px;color:var(--muted);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.row:hover .grade-title-indicator,.row.active .grade-title-indicator{color:inherit}.grade-title-indicator>svg{width:14px;height:14px}.row button.section-title-edit-trigger{box-sizing:border-box;max-width:100%;font:inherit;line-height:inherit;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;border:none;padding:0;display:inline-block;overflow:hidden}.section-title-editor{vertical-align:bottom;max-width:100%;display:inline-block;position:relative}.section-title-with-indicators-editing .section-title-editor{max-width:none}.section-title-editor-measure{visibility:hidden;white-space:pre;font:inherit;line-height:inherit;display:inline-block}.row.assignment-row{min-height:56px;padding:6px 0}.row.assignment-row>.row-title{min-width:0;max-width:100%;display:block}.row.assignment-row>.row-title,.row.assignment-row>.row-right{min-height:28px;line-height:28px}.row.assignment-row>.row-title:has(.assignment-title-indicator){overflow:visible}.row.assignment-row>.row-title,.row.assignment-row .row-value{position:relative}.row.assignment-row .row-value{display:inline-block}.row.assignment-row .row-title-text,.row.assignment-row .row-value-text{white-space:nowrap;text-overflow:ellipsis;vertical-align:bottom;min-width:0;max-width:100%;display:inline-block;position:relative;overflow:hidden}.row.assignment-row .row-title-text:has(.assignment-title-with-indicators){overflow:visible}.assignment-title-with-indicators{vertical-align:bottom;align-items:center;gap:6px;width:auto;min-width:0;max-width:100%;display:inline-flex}.assignment-title-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:inherit;flex:0 auto;display:block;position:relative;overflow:hidden}.assignment-title-indicator{width:18px;height:18px;color:var(--muted);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.row:hover .assignment-title-indicator,.row.active .assignment-title-indicator{color:inherit}.assignment-title-indicator svg{width:14px;height:14px}.link-indicator{text-decoration:none}.comment-indicator,.rubric-indicator,.graph-indicator{--tooltip-hover-bridge-width:280px}.rubric-indicator{--tooltip-hover-bridge-width:520px}.graph-indicator{--tooltip-hover-bridge-width:300px}.comment-indicator:after,.rubric-indicator:after,.graph-indicator:after{content:"";z-index:49;width:min(var(--tooltip-hover-bridge-width), calc(100vw - 48px));height:8px;display:none;position:absolute;top:100%;left:50%;transform:translate(-50%)}.comment-modal,.rubric-modal,.graph-modal{z-index:50;background:var(--surface);border:1px solid var(--line);width:min(280px,100vw - 48px);box-shadow:0 4px 12px var(--shadow-soft);color:var(--ink);font-weight:var(--font-regular);white-space:normal;border-radius:6px;padding:10px 12px;line-height:1.35;animation:.2s cubic-bezier(.4,0,.2,1) comment-modal-enter;display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}.rubric-modal{width:min(520px,100vw - 48px);max-height:min(480px,100vh - 120px);overflow:auto}.graph-modal{width:min(300px,100vw - 48px)}.comment-indicator:hover .comment-modal,.comment-indicator:focus-within .comment-modal,.rubric-indicator:hover .rubric-modal,.graph-indicator:hover .graph-modal{gap:4px;display:grid}.comment-indicator:hover:after,.comment-indicator:focus-within:after,.rubric-indicator:hover:after,.graph-indicator:hover:after{display:block}.comment-modal-text{font-size:.85rem}.graph-content{gap:7px;width:100%;display:grid}.graph-empty{font-size:.85rem}.graph-header,.graph-range{justify-content:space-between;align-items:center;gap:12px;display:flex}.graph-header{font-size:.85rem;font-weight:var(--font-semibold)}.graph-latest{font-variant-numeric:tabular-nums;white-space:nowrap}.graph-range{color:var(--muted);font-size:.72rem;font-weight:var(--font-regular)}.graph-range span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.graph-chart{width:100%;height:auto;display:block;overflow:visible}.graph-axis-label{fill:var(--muted);font-size:.56rem;font-weight:var(--font-medium);font-variant-numeric:tabular-nums}.graph-chart-axis{stroke:var(--line);stroke-width:1px;opacity:.8}.graph-cutoff line{stroke:var(--line);stroke-width:1px;stroke-dasharray:4 6;opacity:.7}.graph-cutoff text{fill:var(--muted);font-size:.56rem;font-weight:var(--font-semibold)}.graph-chart-line{fill:none;stroke:var(--ink);stroke-width:2.35px;stroke-linecap:round;stroke-linejoin:round}.graph-chart-endpoint{fill:var(--surface);stroke:var(--ink);stroke-width:2px}.graph-chart-start{opacity:.55}.graph-point-group{outline:none}.graph-point-guide,.graph-point-callout{opacity:0;pointer-events:none;transition:opacity .14s}.graph-point-guide{stroke:var(--muted);stroke-width:1px;stroke-dasharray:2 3}.graph-point-hit{fill:#0000;pointer-events:all}.graph-point-dot{fill:#0000;stroke:var(--ink);stroke-width:1.75px;opacity:0;transition:r .14s}.graph-point-callout rect{fill:var(--surface);stroke:var(--line);stroke-width:1px;filter:drop-shadow(0 2px 6px var(--shadow-soft))}.graph-point-title{fill:var(--ink);font-size:.58rem;font-weight:var(--font-semibold)}.graph-point-meta{fill:var(--muted);font-size:.52rem;font-weight:var(--font-medium);font-variant-numeric:tabular-nums}.graph-point-group:hover .graph-point-guide,.graph-point-group:hover .graph-point-callout,.graph-point-group:focus .graph-point-guide,.graph-point-group:focus .graph-point-callout{opacity:1}.graph-point-group:hover .graph-point-dot,.graph-point-group:focus .graph-point-dot{r:4;fill:var(--ink);opacity:1}.rubric-content{flex-direction:column;gap:10px;display:flex}.rubric-loading,.rubric-error{font-size:.85rem}.rubric-error{color:var(--danger)}.rubric-header{font-size:.9rem;font-weight:var(--font-semibold);justify-content:space-between;align-items:center;gap:16px;display:flex}.rubric-total{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink)}.rubric-table-wrap{border-radius:6px;overflow-x:auto}.rubric-table{border-collapse:collapse;border:1px solid var(--line);width:100%;font-size:.8rem;line-height:1.4}.rubric-table th,.rubric-table td{border:1px solid var(--line);vertical-align:top;padding:8px 10px}.rubric-table th{background:var(--surface-muted);color:var(--muted);font-weight:var(--font-semibold);text-align:center;white-space:nowrap}.rubric-table td{background:var(--bg);color:var(--ink)}.rubric-table td.earned{background:var(--accent-soft);color:var(--ink)}.rubric-table-criteria{min-width:120px;max-width:200px}.rubric-criterion-title{font-weight:var(--font-semibold);display:block}.rubric-criterion-description{color:var(--muted);margin-top:3px;font-size:.75rem;line-height:1.4;display:block}.rubric-rating-description{color:var(--muted);font-size:.75rem;line-height:1.4;display:block}.rubric-rating-empty{color:var(--muted);text-align:center;font-size:.75rem;display:block}.rubric-table-earned{white-space:nowrap;min-width:80px}.rubric-earned-points{font-weight:var(--font-semibold);font-variant-numeric:tabular-nums;display:block}.rubric-comment{color:var(--warn-strong);white-space:normal;margin-top:4px;font-size:.75rem;line-height:1.4;display:block}@keyframes comment-modal-enter{0%{opacity:0;transform:translate(-50%)translateY(-4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.row.assignment-row .row-title-text:after,.row.assignment-row .row-value-text:after{content:"";transform-origin:0;background:currentColor;width:100%;height:1px;transition:transform .35s cubic-bezier(.4,0,.2,1);position:absolute;top:50%;left:0;transform:scaleX(0)}.row.assignment-row .assignment-title-with-indicators:after{display:none}.row.assignment-row .row-title-text:has(.assignment-title-with-indicators):after{display:none}.row.assignment-row .assignment-title-label:after{content:"";transform-origin:0;background:currentColor;width:100%;height:1px;transition:transform .35s cubic-bezier(.4,0,.2,1);position:absolute;top:50%;left:0;transform:scaleX(0)}.row.assignment-row.dropped>.row-title,.row.assignment-row.dropped .row-value{color:var(--muted)}.row.assignment-row.dropped .row-title-text:after,.row.assignment-row.dropped .row-value-text:after,.row.assignment-row.dropped .assignment-title-label:after{transform:scaleX(1)}.todo-page .row.assignment-row.dropped .row-value-text:after{transform:scaleX(0)}.row-right{align-items:center;gap:6px;min-width:0;max-width:100%;display:inline-flex}.reset-icon-button{width:22px;height:22px;color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:opacity .15s,background .15s;display:inline-flex}.row:hover .reset-icon-button,.row.active .reset-icon-button{opacity:1}.todo-page .row.assignment-row.active .reset-icon-button{opacity:0}.todo-page .row.assignment-row.active:hover .reset-icon-button,.todo-page .row.assignment-row.active:focus-within .reset-icon-button{opacity:1}.reset-icon-button.active{color:var(--ink)}.reset-icon-button:hover{background:var(--accent-soft);color:var(--ink)}.reset-icon-button:focus-visible{opacity:1;outline:2px solid var(--ink);outline-offset:1px}.todo-page .row.assignment-row.active .reset-icon-button:focus-visible{opacity:1}.reset-icon-button svg{width:14px;height:14px}.row-editor{align-items:center;gap:4px;display:inline-flex}.row-editor-input{border:1px solid var(--line);background:var(--surface);width:52px;height:28px;color:var(--ink);font:inherit;text-align:center;-moz-appearance:textfield;border-radius:4px;padding:2px 6px;font-size:.85rem}.row-editor-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.row-editor-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.row-editor-input:focus{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}.row-editor-input.section-title-input{box-sizing:border-box;width:100%;min-width:0;font:inherit;font-size:inherit;font-weight:inherit;text-align:left;background:0 0;border:none;border-radius:0;padding:0;line-height:normal;position:absolute;top:50%;left:0;transform:translateY(-50%)}.row-editor-input.section-title-input:focus{border-color:#0000;outline:none}.row-editor-separator{color:var(--muted);-webkit-user-select:none;user-select:none;font-size:.85rem}.grade-diff{color:var(--muted);font-weight:var(--font-medium);white-space:nowrap;align-items:baseline;gap:4px;font-size:.85rem;display:inline-flex}.grade-diff.positive{color:var(--success)}.grade-diff.negative{color:var(--danger)}.grade-diff.neutral{color:var(--muted)}.animated-number{font-variant-numeric:tabular-nums;text-align:right;min-width:3.5em;display:inline-block}.animated-text{text-align:right;min-width:1.8em;display:inline-block}.row-value .animated-number{min-width:4.2em}.row-right .grade-diff .animated-number,.row-right .row-value .animated-number{min-width:auto}.animated-grade-value{font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:baseline;display:inline-flex}.animated-grade-letter,.animated-grade-number,.animated-grade-space{display:inline-block}.animated-grade-space{width:.35em}.slot-string{display:inline-block}.slot-cell{display:inline-block;position:relative}.slot-anchor{color:#0000}.slot-viewport{position:absolute;inset:0;overflow:hidden}.slot-track{will-change:transform;width:100%;height:2lh;display:block}.slot-face{height:1lh;line-height:inherit;text-align:inherit;display:block}@media (prefers-reduced-motion:reduce){.slot-track{transition:none!important}}@media (max-width:560px){main{width:min(100% - 28px,720px);padding-top:64px}.app-wordmark-inline{font-size:1.1rem}}@media (prefers-reduced-motion:reduce){.row,.row:after{transition:none}.row.loading:after{width:100%;animation:none}.dropdown-menu{animation:none}.row.assignment-row .row-title-text:after,.row.assignment-row .row-value-text:after,.row.assignment-row>.row-title,.row.assignment-row .row-value,.theme-toggle-track,.theme-toggle-thumb{transition:none}}.landing-hero{flex-direction:column;align-items:flex-start;gap:24px;max-width:720px;margin:0 auto;padding:96px 20px;display:flex}.landing-title{font-family:Gill Sans,Gill Sans MT,Calibri,sans-serif;font-size:clamp(2rem,12vw,4.25rem);line-height:1.05;font-weight:var(--font-semibold);letter-spacing:.025em;color:var(--ink);white-space:nowrap;flex-wrap:nowrap;align-items:baseline;gap:0 12px;margin:0;display:flex}.landing-subtitle{color:var(--muted);max-width:520px;margin:0;font-size:clamp(1rem,1.6vw,1.2rem);line-height:1.5}.school-domain-entry{flex-direction:column;gap:10px;width:min(100%,520px);display:flex}.school-domain-label{font-size:.88rem;font-weight:var(--font-semibold);color:var(--ink);align-items:baseline;gap:8px;display:flex}.school-domain-label span{color:var(--muted);font-weight:var(--font-regular)}.school-domain-input-wrap{border:1px solid var(--line);background:var(--surface);width:100%;height:44px;color:var(--ink);border-radius:6px;grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid;overflow:hidden}.school-domain-input{min-width:0;height:100%;color:var(--ink);font:inherit;background:0 0;border:none;padding:0 14px;font-size:.95rem}.school-domain-input:focus{outline:none}.school-domain-input-wrap:focus-within{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}.school-domain-suffix,.school-domain-message{color:var(--muted);font-size:.85rem;line-height:1.45}.school-domain-suffix{white-space:nowrap;border-left:1px solid var(--line);align-items:center;height:100%;padding:0 14px 0 8px;display:inline-flex}.landing-cta{border:1px solid var(--line);background:var(--surface);max-width:100%;color:var(--ink);font-weight:var(--font-medium);border-radius:6px;align-items:center;gap:8px;padding:10px 18px;font-size:.9rem;text-decoration:none;transition:background .15s;display:inline-flex}.landing-cta span{min-width:0}.landing-cta svg{flex:none}.landing-cta:hover{border-color:var(--accent);background:var(--accent-soft)}@media (max-width:480px){.landing-hero{gap:20px;padding:48px 0}}.analytics-page{width:min(1180px,100% - 40px);padding:48px 0 96px}.analytics-header{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px;display:flex}.analytics-kicker,.analytics-updated,.analytics-muted,.analytics-section-heading p{color:var(--muted);font-size:.82rem;line-height:1.45}.analytics-kicker{font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.analytics-updated{white-space:nowrap}.analytics-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.analytics-metric,.analytics-section,.analytics-empty{border:1px solid var(--line);background:var(--surface);border-radius:8px}.analytics-metric{flex-direction:column;gap:8px;min-width:0;padding:16px;display:flex}.analytics-metric span{color:var(--muted);font-size:.78rem}.analytics-metric strong{letter-spacing:-.02em;font-size:1.65rem;line-height:1}.analytics-section,.analytics-empty{margin-bottom:16px;padding:18px}.analytics-empty{flex-direction:column;gap:8px;display:flex}.analytics-section-heading{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:16px;display:flex}.analytics-section-heading h2,.analytics-empty h2{font-size:1rem;line-height:1.25}.analytics-grid{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:16px;display:grid}.analytics-chart{grid-template-columns:repeat(14,minmax(0,1fr));align-items:end;gap:8px;height:220px;padding-top:12px;display:grid}.analytics-bar-column{flex-direction:column;justify-content:flex-end;gap:8px;min-width:0;height:100%;display:flex}.analytics-bar-wrap{border-bottom:1px solid var(--line);flex:1;align-items:flex-end;display:flex}.analytics-bar{background:var(--accent);border-radius:5px 5px 0 0;width:100%;min-height:4px}.analytics-bar-column span{color:var(--muted);text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.analytics-list{flex-direction:column;gap:2px;display:flex}.analytics-list-row,.analytics-user-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:10px 0;display:flex}.analytics-list-row:first-child,.analytics-user-row:first-child{border-top:none}.analytics-list-row span,.analytics-user-row span{color:var(--muted);font-size:.78rem}.analytics-list-row span,.analytics-user-row div{min-width:0}.analytics-user-row div{flex-direction:column;gap:3px;display:flex}.analytics-user-row div:last-child{flex:none;align-items:flex-end}.analytics-user-row strong,.analytics-user-row span,.analytics-list-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.analytics-table-wrap{overflow-x:auto}.analytics-table{border-collapse:collapse;width:100%;font-size:.82rem}.analytics-table th,.analytics-table td{border-top:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap;padding:10px 12px}.analytics-table th{color:var(--muted);font-weight:var(--font-medium);border-top:none}.analytics-table td{text-overflow:ellipsis;max-width:240px;overflow:hidden}@media (max-width:860px){.analytics-header,.analytics-section-heading{flex-direction:column;align-items:flex-start;gap:8px}.analytics-metrics,.analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.analytics-page{width:min(100% - 28px,720px);padding-top:32px}.analytics-metrics,.analytics-grid{grid-template-columns:1fr}.analytics-chart{gap:4px;height:180px}.analytics-bar-column span{font-size:.58rem}}.gradebook-nav{gap:24px;margin:22px 0 8px;font-size:.85rem;display:flex}.gradebook-nav a{color:var(--muted);border-bottom:1.5px solid #0000;padding:8px 0;text-decoration:none}.gradebook-nav a[aria-current=page]{color:var(--ink);border-color:var(--ink)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.todo-action{color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;padding:6px 0;font-size:.8rem;display:inline-flex}.todo-action svg{width:15px;height:15px}.todo-page button:disabled,.todo-page input:disabled,.todo-page select:disabled{opacity:.5;cursor:not-allowed}.todo-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:20px;display:flex}.todo-filters{gap:20px;display:flex}.todo-filters button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:8px 0;font-size:.8rem}.todo-filters button[aria-pressed=true]{color:var(--ink)}.todo-filters button span{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:5px}.todo-toolbar select{border:1px solid var(--line);background:var(--bg);max-width:240px;color:var(--muted);font:inherit;border-radius:4px;padding:8px;font-size:.75rem}.todo-save-status{min-height:24px;color:var(--muted);padding-top:6px;font-size:.72rem}.todo-save-status:empty{min-height:0;padding-top:0;display:none}.todo-group+.todo-group{margin-top:36px}.row.todo-overdue{color:var(--warn-strong)}.todo-assignment{color:var(--ink);grid-template-columns:18px minmax(0,1fr) auto;gap:14px;padding:17px 0}.todo-assignment input{width:17px;height:17px;accent-color:var(--ink);cursor:pointer;margin:0}.todo-assignment-copy{flex-direction:column;gap:4px;min-width:0;display:flex}.todo-assignment-title{font-size:.87rem;font-weight:var(--font-medium);overflow-wrap:anywhere}.todo-assignment-meta{color:var(--muted);font-size:.7rem;font-weight:var(--font-regular);overflow-wrap:anywhere}.todo-due{color:var(--muted);white-space:nowrap;font-size:.75rem;font-weight:var(--font-regular)}.todo-completed .todo-assignment-title{color:var(--muted);text-decoration:line-through}.todo-form{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding:22px 0;display:grid}.todo-form label{color:var(--muted);flex-direction:column;gap:8px;font-size:.75rem;display:flex}.todo-form .todo-title-field{grid-column:1/-1}.todo-form input,.todo-form select{border:1px solid var(--line);background:var(--bg);width:100%;min-width:0;color:var(--ink);font:inherit;border-radius:4px;padding:10px 12px;font-size:.85rem}.todo-optional{font-size:.7rem}.todo-form-actions{grid-column:1/-1;justify-content:flex-end;align-items:center;gap:20px;display:flex}.todo-submit{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);cursor:pointer;border-radius:4px;padding:9px 14px;font-size:.8rem}.todo-notice{color:var(--muted);margin:16px 0;font-size:.8rem;line-height:1.5}.todo-notice.error{color:var(--danger)}.todo-page :is(button,input,select):focus-visible,.gradebook-nav a:focus-visible{outline:2px solid var(--ink);outline-offset:4px}@media (max-width:520px){.todo-toolbar{flex-direction:column;align-items:flex-start;gap:6px}.todo-toolbar select{max-width:100%}.todo-form{grid-template-columns:minmax(0,1fr)}.todo-assignment{gap:10px}}
