.page-header-tool{max-width:none;margin-bottom:var(--s-4)}.page-header-tool h1{margin-bottom:var(--s-2)}.page-header-tool .lede{max-width:var(--measure);font-size:1rem;line-height:1.5}.builder{min-width:0}.tool-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2) var(--s-4);min-height:var(--toolbar-h);padding:var(--s-1) 0;background:var(--paper);box-shadow:var(--shadow-1);margin:0 0 var(--s-2)}@media (min-width:48rem){.tool-bar{position:-webkit-sticky;position:sticky;top:var(--header-h);z-index:20}}.tool-record{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--s-3);margin:0;min-width:0}.tool-kicker{font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--graphite)}.tool-name{font-weight:700;overflow-wrap:anywhere}.tool-count{font-size:.875rem;font-weight:600;color:var(--graphite)}.changed{display:inline-flex;align-items:center;gap:var(--s-1);margin-left:var(--s-3);color:var(--warn)}.tool-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-left:auto}.more-wide{display:none;gap:var(--s-2)}@media (min-width:48rem){.more-wide{display:inline-flex}.more-narrow{display:none}}.tool-hint{flex-basis:100%;margin:0;font-size:.875rem;color:var(--muted);text-align:right}.build-status{margin:0 0 var(--s-2);color:var(--graphite);font-size:.875rem}.storage-alert{margin-bottom:var(--s-3)}.storage-note{margin:0 0 var(--s-3);color:var(--graphite);font-size:.875rem}.read-failure-title{font-size:1rem;line-height:1.4;margin:0 0 var(--s-2)}.step-tabs-wrap{margin:0 0 var(--s-4);border-bottom:1px solid var(--line-soft)}.step-tabs{display:flex;gap:var(--s-1);overflow-x:auto;scrollbar-width:none}.step-tabs::-webkit-scrollbar{display:none}@media (max-width:47.99rem){.step-tabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:0;gap:0;overflow:visible}.step-tabs .tab{grid-column:span 2;justify-content:center;padding:0 var(--s-2)}.step-tabs .tab:nth-child(-n+2){grid-column:span 3}.tab-long{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.tab{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 var(--s-3);border:0;border-bottom:3px solid transparent;background:none;color:var(--graphite);font:inherit;font-weight:600;cursor:pointer;white-space:nowrap}.tab:disabled{color:var(--muted);cursor:default}.tab:hover:not(:disabled){color:var(--ink);border-bottom-color:var(--line)}.tab.active{color:var(--ink);border-bottom-color:var(--accent)}.tab-count{font-size:.875rem;font-weight:500;color:var(--muted)}.tab-panel{min-width:0}.loading-panel{min-height:100vh}.loading-line{color:var(--muted);margin:0 0 var(--s-3)}.readonly-scope{border:0;margin:0;padding:0;min-width:0}.empty-panel{border-left:4px solid var(--line);border-radius:0 var(--r-card) var(--r-card) 0}.empty-panel h2{font-size:1.25rem;margin-bottom:var(--s-2)}.how-builder{margin:0 0 var(--s-3);font-size:.875rem;color:var(--graphite)}.how-builder summary{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--accent);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.how-builder p{max-width:var(--measure);margin:0 0 var(--s-2)}@media (min-width:48rem){.review-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--s-5);margin:0 0 var(--s-2)}.review-meta .build-status,.review-meta .how-builder{margin:0}.review-meta .how-builder[open]{flex-basis:100%}}.review{display:flex;flex-direction:column;gap:var(--s-3);min-width:0}.review>*{margin-bottom:0}.unmet-panel{border-top:2px solid var(--ink);padding-top:var(--s-2)}.unmet-head{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-5);font-size:1.25rem;line-height:1.4;font-weight:650;margin:0 0 var(--s-2)}.status{display:inline-flex;align-items:center;gap:var(--s-2)}.status.ok{color:var(--ok)}.status.bad{color:var(--bad)}.status.warn{color:var(--warn)}.report-group{margin:0 0 var(--s-3)}.report-group-head{font-size:1rem;line-height:1.4;font-weight:700;margin:var(--s-2) 0 var(--s-1)}.report-group.bad .report-group-head{color:var(--bad)}.report-group.warn .report-group-head{color:var(--warn)}.report-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft)}.report-row{display:flex;align-items:flex-start;gap:var(--s-2);min-height:56px;padding:var(--s-2) 0;border-bottom:1px solid var(--line-soft)}.report-glyph{flex:none;width:1.25rem;padding-top:3px}.report-group.bad .report-glyph{color:var(--bad)}.report-group.warn .report-glyph{color:var(--warn)}.report-body{flex:1 1;min-width:0}.report-reason,.report-title{margin:0}.report-title strong{font-weight:600}.report-reason,.report-shortfall{color:var(--graphite);font-size:.875rem}.report-reason{max-width:60ch}@media (max-width:47.99rem){.report-rows:not(.show-all) .report-row:nth-child(n+4){display:none}}@media (min-width:48rem){.show-all-button{display:none}}.stale-note{display:flex;gap:var(--s-2);align-items:flex-start}.stale-note .mark-glyph{margin-top:4px}.grid-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s-2) var(--s-5)}.find-field{flex:1 1 16rem;max-width:28rem;margin-bottom:0}@media (min-width:48rem){.grid-tools{display:none}}.unmet-top{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:0 var(--s-5)}.unmet-top .unmet-head{flex:1 1 auto}.unmet-top .find-field{flex:1 1 100%;margin-bottom:var(--s-3)}@media (min-width:62.5rem){.unmet-top .find-field{flex:0 1 26rem;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;grid-column-gap:var(--s-3);column-gap:var(--s-3);margin-bottom:var(--s-2)}.unmet-top .find-field .hint{grid-column:2}}.class-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--s-5) var(--s-4);gap:var(--s-5) var(--s-4);align-items:start;transition:opacity var(--t-fast) var(--ease-out)}.class-grid.dragging{-webkit-user-select:none;-moz-user-select:none;user-select:none}.class-grid.is-solving{opacity:.6}@media (min-width:48rem){.class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:80rem){.class-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}}.class-col{min-width:0;border-top:2px solid var(--ink);padding-top:var(--s-2)}.class-col.is-target{outline:2px dashed var(--accent);outline-offset:4px}.class-col.is-target.is-bad{outline-color:var(--bad)}.unplaced-col{border-top-color:var(--warn)}.col-over,.drag-preview{margin:var(--s-1) 0;font-size:.875rem;font-weight:600}.col-over,.drag-preview.bad{color:var(--bad)}.drag-preview.ok{color:var(--ok)}.drag-preview-float{position:fixed;left:var(--gutter);right:var(--gutter);bottom:var(--s-4);z-index:40;max-width:32rem;margin:0 auto;padding:var(--s-3) var(--s-4);border-radius:var(--r-control);background:var(--ink);color:var(--paper);box-shadow:var(--shadow-2);font-weight:600}.balance-line{margin:var(--s-1) 0;font-size:.875rem;color:var(--graphite)}.balance-details{margin:0 0 var(--s-2);font-size:.875rem}.balance-details summary{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--accent);cursor:pointer}.balance{display:grid;grid-template-columns:minmax(0,1fr);margin:var(--s-2) 0 var(--s-3);font-size:.875rem}.balance div{display:flex;justify-content:space-between;gap:var(--s-3);padding:2px 0;border-bottom:1px solid var(--line-soft)}.balance dt{color:var(--graphite)}.balance dd{margin:0;font-weight:600;white-space:nowrap}.drag-handle{flex:none;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--r-control);background:none;color:var(--muted);cursor:-webkit-grab;cursor:grab;touch-action:none}.drag-handle svg{fill:currentColor}.student-row.is-locked .drag-handle{cursor:not-allowed;opacity:.55}.row-warnings{list-style:none;margin:var(--s-1) 0 0;padding:0;font-size:.875rem;line-height:1.45}.row-warnings li{display:flex;gap:var(--s-1);align-items:flex-start}.row-warnings .mark-glyph{margin-top:3px}.warn-hard{color:var(--bad);font-weight:600}.warn-soft{color:var(--warn)}.grid-help{margin:0}.classes-setup,.drafts-setup,.students-setup{display:flex;flex-direction:column;gap:var(--s-4);min-width:0}.classes-setup>.card,.drafts-setup>.card,.students-setup>.card{margin-bottom:0}.fold>summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--s-3);min-height:44px;cursor:pointer;list-style:none}.fold>summary::-webkit-details-marker{display:none}.fold>summary:before{content:"+";align-self:center;flex:none;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:var(--r-box);font-weight:700;color:var(--graphite)}.fold[open]>summary:before{content:"\2212"}.fold[open]>summary{margin-bottom:var(--s-3)}.fold-title{font-size:1.25rem;line-height:1.4;font-weight:650;margin:0}.fold-meta{font-size:.875rem;color:var(--muted);min-width:0}.student-panes{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--s-4);gap:var(--s-4);align-items:start}.student-panes>.card{margin-bottom:0}.student-panes.is-editing .pane-work{order:-1}@media (min-width:80rem){.student-panes{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.student-panes.is-editing .pane-work{order:0;position:-webkit-sticky;position:sticky;top:calc(var(--header-h) + var(--toolbar-h) + var(--s-3));max-height:calc(100vh - var(--header-h) - var(--toolbar-h) - var(--s-5));overflow-y:auto}}.pane-hint{margin:0;padding:var(--s-4) 0}.table-fit{width:100%;margin:0 0 var(--s-4)}.students-table td,.students-table th{vertical-align:middle}.students-table tbody tr[aria-current=true] td,.students-table tbody tr[aria-current=true] th{background:var(--raised)}.students-table tbody tr[aria-current=true] th{box-shadow:inset 4px 0 0 var(--accent)}.cell-action{text-align:right;width:1%}.phone-meta{display:block;color:var(--muted);font-size:.8rem}@media (max-width:47.99rem){.students-table .col-wide{display:none}}@media (min-width:48rem){.phone-meta{display:none}}.add-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:0 var(--s-3)}.add-row .field{flex:1 1 16rem;margin-bottom:var(--s-2)}.add-row .button{margin-top:26px}.student-form h2{font-size:1.25rem}.form-actions{position:-webkit-sticky;position:sticky;bottom:0;z-index:2;margin:var(--s-3) calc(var(--s-4) * -1) calc(var(--s-5) * -1);padding:var(--s-3) var(--s-4);background:var(--card);border-top:1px solid var(--line-soft)}@media (min-width:48rem){.form-actions{margin:var(--s-3) calc(var(--s-5) * -1) calc(var(--s-5) * -1);padding:var(--s-3) var(--s-5)}}.paste-preview{margin:0 0 var(--s-3);padding:var(--s-3) var(--s-4);border-left:4px solid var(--line);background:var(--raised);border-radius:0 var(--r-card) var(--r-card) 0}.paste-preview>:last-child{margin-bottom:0}.paste-notes{margin:0 0 var(--s-3)}.paste-notes summary{display:inline-flex;align-items:center;min-height:44px;font-weight:600;cursor:pointer}.warning-list{list-style:none;margin:0 0 var(--s-3);padding:0;font-size:.875rem}.warning-list li{padding:var(--s-2) 0 var(--s-2) var(--s-3);border-bottom:1px solid var(--line-soft);border-left:4px solid var(--warn)}.status-line{min-height:1.45em;margin:0;font-weight:600}.status-line:empty{display:none}.class-list{list-style:none;margin:0 0 var(--s-3);padding:0}.class-item{border:0;border-top:1px solid var(--line-soft);border-radius:0;padding:var(--s-3) 0;margin:0}.class-item legend{padding:0;font-size:1rem;font-weight:700;color:var(--ink)}.checks-column{flex-direction:column}.checks-column .check-field{margin-bottom:var(--s-1)}.pair-list{list-style:none;margin:0 0 var(--s-4);padding:0;border-top:1px solid var(--line-soft)}.pair-row{display:flex;align-items:center;gap:var(--s-3);min-height:56px;padding:var(--s-1) 0;border-bottom:1px solid var(--line-soft)}.pair-main{flex:1 1;min-width:0}.pair-kind,.pair-names{margin:0}.pair-names{font-weight:600}.pair-kind{font-size:.875rem;color:var(--muted)}.report-picker{border:0;padding:0;margin:0 0 var(--s-3);min-width:0}.report-picker legend{font-size:1.25rem;font-weight:650;color:var(--ink);margin-bottom:var(--s-2);padding:0}.report-rows-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft)}.output-row{display:flex;align-items:center;gap:var(--s-3);min-height:56px;padding:var(--s-1) 0;border-bottom:1px solid var(--line-soft)}.output-row.is-open{background:var(--raised);box-shadow:inset 4px 0 0 var(--accent)}.output-pick{flex:1 1;min-width:0;display:flex;align-items:flex-start;gap:var(--s-3);min-height:44px;padding:var(--s-2) 0 var(--s-2) var(--s-3);cursor:pointer}.output-pick input{flex:none;width:1.25rem;height:1.25rem;margin:2px 0 0;accent-color:var(--accent)}.output-body{display:flex;flex-direction:column;min-width:0}.output-body strong{font-weight:600}.output-note{font-size:.875rem;color:var(--muted)}.output-row .button{flex:none;margin-right:var(--s-2);transition:none}.report-options-line{margin:0 0 var(--s-3)}.cards-year-field input{max-width:22rem}.report-actions{margin-bottom:var(--s-4)}.print-area{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--r-card);padding:var(--s-5);min-width:0}@media (max-width:47.99rem){.print-area{padding:var(--s-4) var(--s-3)}}.report-head{border-bottom:2px solid var(--ink);margin-bottom:var(--s-4);padding-bottom:var(--s-2)}.report-head p{margin:0}.report-summary .badge{margin-right:var(--s-1)}.sheet-page+.sheet-page{margin-top:var(--s-6);padding-top:var(--s-5);border-top:1px solid var(--line-soft)}.sheet-page h3{font-size:1.25rem}.card-label,.sheet-label{display:inline-block;padding:0 var(--s-2);border:1px solid var(--ink);border-radius:var(--r-label)}.sheet-balance{margin:var(--s-3) 0 0;padding-top:var(--s-2);border-top:1px solid var(--line);font-size:.875rem;color:var(--graphite)}.sheet-footer{margin:var(--s-3) 0 0;font-size:.8rem;color:var(--muted)}.names-list{columns:12rem 2;column-gap:var(--s-6);padding-left:1.5rem}.names-list li{page-break-inside:avoid;break-inside:avoid;padding:2px 0;border-bottom:1px solid var(--line-soft)}.total-row td,.total-row th{border-top:2px solid var(--ink);font-weight:700}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));grid-gap:var(--s-3);gap:var(--s-3)}.card-sheet+.card-sheet{margin-top:var(--s-3)}.card-sheet .sheet-footer{grid-column:1/-1}.placement-card{border:1px dashed var(--line);border-radius:var(--r-box);padding:var(--s-3) var(--s-4);break-inside:avoid;page-break-inside:avoid;min-width:0}.placement-card p{margin:0 0 var(--s-1)}.placement-card .card-year{font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--graphite)}.card-name{font-weight:650;line-height:1.3}.card-class strong,.card-name{font-size:1.25rem}.block,.hint.block{display:block}.draft-name{font-weight:600}.draft-meta{display:block;font-size:.8rem;font-weight:400;color:var(--muted)}.rename-form{display:flex;flex-wrap:wrap;gap:var(--s-1)}.new-draft input,.rename-form input{min-height:44px;min-width:0;border:1px solid var(--line);border-radius:var(--r-control);background:var(--card);color:var(--ink);font:inherit;padding:0 var(--s-2)}.new-draft{align-items:flex-end;margin-top:var(--s-2)}.new-draft .field{margin-bottom:0;flex:1 1 16rem}.compare-table td.is-better{font-weight:700}.import-status{min-height:1.45em;margin-top:var(--s-3)}.import-status:empty{display:none}@media print{.build-status,.how-builder,.page-header,.report-actions,.report-options-line,.report-picker,.step-tabs-wrap,.tool-bar{display:none!important}.print-area{border:none;padding:0}.data-table,.report-head p{font-size:9.5pt}.data-table thead th{background:#ffffff;border-bottom:1px solid #1a1b2e}.data-table td,.data-table th{border-bottom:.5pt solid #6f7088;page-break-inside:avoid;break-inside:avoid}.table-scroll{overflow:visible}.sheet-page+.sheet-page{break-before:page;page-break-before:always;border-top:none;margin-top:0;padding-top:0}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.placement-card{border:.5pt dashed #1a1b2e;border-radius:0;height:60mm;padding:7mm 8mm}.card-sheet+.card-sheet{break-before:page;page-break-before:always;margin-top:0}.card-sheet .sheet-footer{margin-top:2mm}.sheet-footer{font-size:8pt}}