:root{--bg:#fff;--text:#101010;--muted:#555;--line:#d9d9d9;--line-strong:#767676;--surface:#f7f7f7;--focus:#0047ff;--danger:#9b1c1c;--success:#116329}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--text);margin:0;font-family:Arial,Helvetica,sans-serif}body{min-height:100vh;font-size:17px;line-height:1.45}h1{margin:0 0 .4rem;font-size:clamp(2rem,4vw,2.75rem);line-height:1.1}h2{margin-block:.2rem;font-size:1.5rem;line-height:1.2}h3{font-size:1.15rem}a{color:inherit}button,input,select,textarea{font:inherit}button,.button{border:2px solid var(--text);background:var(--text);color:#fff;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:.45rem;min-height:44px;padding:.6rem 1rem;font-weight:700;text-decoration:none;display:inline-flex}button.secondary,.button.secondary{color:var(--text);background:#fff}button.danger{border-color:var(--danger);background:var(--danger)}button:disabled{opacity:.55;cursor:not-allowed}:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.page{width:min(1240px,100vw - 2rem);margin:0 auto;padding:2rem 0}.narrow{width:min(680px,100vw - 2rem)}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;display:flex}.topbar nav{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.muted{color:var(--muted)}.stack,.grid{gap:1rem;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field{gap:.4rem;display:grid}.field label{font-weight:700}.field-help{color:var(--muted);margin:0;font-size:.95rem}.field input,.field select,.field textarea{border:2px solid var(--line-strong);width:100%;min-height:44px;color:var(--text);background:#fff;border-radius:6px;padding:.55rem .7rem}.input-with-action{align-items:stretch;gap:.5rem;display:flex}.input-with-action input{flex:1;min-width:0}.password-toggle{white-space:nowrap}.field input[type=checkbox],.field input[type=radio]{width:auto;min-height:0}.panel{border:1px solid var(--line);background:#fff;border-radius:8px;padding:1rem}.section-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.section-head h2,.section-head p{margin:0}.config-card{border:1px solid var(--line);background:#fff;border-radius:8px;padding:0;overflow:hidden}.config-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;list-style:none;display:flex}.config-summary::-webkit-details-marker{display:none}.config-summary h2{margin:0}.config-summary p{margin:.35rem 0 0}.config-card-body{border-top:1px solid var(--line);padding:1rem}details>summary{cursor:pointer;font-weight:700}.expand-pill{border:2px solid var(--text);color:var(--text);white-space:nowrap;background:#fff;border-radius:999px;padding:.45rem .8rem}.expand-open,.config-accordion[open] .expand-closed{display:none}.config-accordion[open] .expand-open{display:inline}.adaptivity-control{border:1px solid var(--line);border-radius:8px;grid-column:1/-1;gap:.75rem;padding:1rem;display:grid}.adaptivity-control legend{padding:0 .35rem;font-weight:700}.preset-grid{gap:.5rem;display:grid}.preset-option{border:1px solid var(--line);border-radius:8px;grid-template-columns:auto 1fr;align-items:start;gap:.6rem;padding:.75rem;display:grid}.preset-option span{gap:.2rem;display:grid}.preset-option small{color:var(--muted);line-height:1.35}.debug-config-option{border:1px dashed var(--line);border-radius:8px;padding:.75rem}.advanced-grid{margin-top:1rem}.adaptive-formula{border-left:4px solid var(--text);margin-top:.75rem;padding-left:.75rem}.insight-card{border:1px solid var(--line);background:#fff;border-radius:8px;gap:.35rem;padding:1rem;display:grid}.insight-card strong{font-size:2rem;line-height:1}.insight-card span{color:var(--muted)}.chart-list{gap:.75rem;display:grid}.chart-row{grid-template-columns:minmax(9rem,14rem) 1fr auto;align-items:center;gap:.75rem;display:grid}.bar-track{border:1px solid var(--line);background:var(--surface);border-radius:999px;min-height:1rem;overflow:hidden}.bar-fill{background:var(--text);min-height:1rem}.bar-fill.good{background:var(--success)}.bar-fill.bad{background:var(--danger)}.item-trace{grid-template-columns:repeat(auto-fit,minmax(4rem,1fr));align-items:end;gap:.5rem;min-height:11rem;display:grid}.trace-bar{text-align:center;align-content:end;gap:.35rem;min-height:10rem;font-size:.85rem;display:grid}.trace-bar span{display:block}.trace-fill{background:var(--muted);border-radius:6px 6px 0 0;min-height:.3rem}.inline-confirm{border:2px solid var(--text);background:#fff;border-radius:8px;width:min(30rem,100%);margin:0 auto;padding:1rem}.metric-chart{width:100%;min-width:0}.chart-stack{gap:1.75rem;min-width:0;display:grid}.metric-chart-panel,.chart-frame{min-width:0;max-width:100%}.metric-chart-panel+.metric-chart-panel{border-top:1px solid var(--line);padding-top:1.5rem}.metric-chart-heading{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:.75rem;display:flex}.metric-chart-heading h3,.metric-chart-heading p{margin:0}.chart-frame{position:relative}.chart-scroll{overscroll-behavior-inline:contain;width:100%;min-width:0;max-width:100%;padding-bottom:.25rem;overflow-x:auto}.chart-canvas{width:100%;position:relative}.series-toggles{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;min-width:0;display:flex}.series-toggles label{align-items:center;gap:.4rem;font-weight:700;display:inline-flex}.legend-swatch{border:1px solid var(--text);border-radius:999px;width:1rem;height:1rem}.line-chart{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;min-height:18rem;display:block}.split-line-chart{min-height:12.5rem}.chart-hover-line{stroke:var(--text);stroke-width:1.5px;stroke-dasharray:5 5}.chart-hover-band{fill:#0000;cursor:crosshair}.chart-hover-band:focus,.chart-hover-band:focus-visible{outline:none}.chart-tooltip{z-index:2;border:2px solid var(--text);pointer-events:none;background:#fff;border-radius:8px;gap:.35rem;min-width:15rem;max-width:min(22rem,100vw - 3rem);padding:.8rem;display:grid;position:absolute;top:.75rem;box-shadow:0 10px 28px #00000029}.chart-tooltip dl{gap:.35rem;margin:.35rem 0 0;display:grid}.chart-tooltip dl div{grid-template-columns:1fr auto;align-items:center;gap:.75rem;display:grid}.chart-tooltip dt{align-items:center;gap:.4rem;font-weight:700;display:inline-flex}.chart-tooltip dd{margin:0}.chart-grid-line{stroke:#e7e7e7;stroke-width:1px}.chart-axis-line{stroke:#777;stroke-width:1.2px}.chart-axis-label{fill:var(--muted);font-size:.8rem}.playback-overlay{z-index:20;background:#00000073;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.playback-dialog{border:2px solid var(--text);background:#fff;border-radius:8px;width:min(1120px,100%);max-height:min(900px,100vh - 2rem);padding:1rem;overflow:auto}.playback-layout{grid-template-columns:minmax(0,1fr) minmax(18rem,24rem);align-items:stretch;gap:1rem;display:grid}.playback-stage{border:1px solid var(--line);background:#fff;border-radius:8px;position:relative;overflow:hidden}.playback-topbar{border-bottom:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;min-height:3rem;padding:.75rem 1rem;display:flex}.playback-viewport-shell{background:#f8f8f8;place-items:center;padding:.75rem;display:grid}.playback-viewport{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;position:relative;overflow:hidden}.playback-frame{text-align:center;z-index:1;place-items:center;padding:clamp(.75rem,2vw,2rem);display:grid;position:absolute;inset:0}.playback-test-panel{justify-items:center;gap:clamp(.55rem,1.4vw,1.5rem);width:min(78%,48rem);display:grid}.playback-test-panel p{margin:0}.playback-problem{flex-wrap:wrap;justify-content:center;align-items:center;gap:clamp(.35rem,1.2vw,1rem);font-size:clamp(1.7rem,4.5vw,4.5rem);font-weight:800;line-height:1.15;display:flex}.playback-answer{border:4px solid var(--text);text-align:left;border-radius:8px;min-width:clamp(4.5rem,11vw,9rem);min-height:clamp(2.5rem,6vw,4.75rem);padding:.25rem .75rem}.playback-choices{grid-template-columns:repeat(2,minmax(7rem,1fr));gap:clamp(.45rem,1vw,1rem);width:min(42rem,100%);display:grid}.playback-choices span{border:2px solid var(--line);background:#fff;border-radius:8px;padding:clamp(.55rem,1.4vw,1rem);font-weight:800}.playback-choices .selected{border-color:var(--text);background:var(--surface)}.playback-actions{flex-wrap:wrap;justify-content:center;gap:.65rem;display:flex}.playback-button{border:2px solid var(--text);background:var(--text);color:#fff;border-radius:8px;justify-content:center;align-items:center;min-height:2.75rem;padding:.55rem .9rem;font-weight:800;display:inline-flex}.playback-button.secondary{color:var(--text);background:#fff}.playback-button.active{box-shadow:0 0 0 4px #0047ff2e}.playback-inline-confirm{border:2px solid var(--text);background:#fff;border-radius:8px;gap:.65rem;width:min(26rem,100%);padding:.8rem;display:grid}.playback-instructions,.playback-completed{justify-items:center;gap:clamp(.6rem,1.5vw,1.1rem);display:grid}.playback-instructions h3,.playback-completed h3{margin:0;font-size:clamp(1.6rem,4vw,3.2rem)}.playback-instructions p,.playback-completed p{margin:0;font-size:clamp(1rem,2vw,1.35rem);line-height:1.35}.playback-countdown strong{font-size:clamp(4rem,18vw,10rem);line-height:1;display:block}.playback-cursor{border:3px solid var(--text);pointer-events:none;z-index:2;background:#fff;border-radius:999px;width:1.1rem;height:1.1rem;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 5px #0047ff2e}.playback-away-warning{z-index:3;text-align:center;color:#fff;pointer-events:none;background:#9b1c1cd1;place-items:center;gap:.85rem;padding:2rem;display:grid;position:absolute;inset:0}.playback-away-warning span{aspect-ratio:1;border:4px solid #fff;border-radius:999px;place-items:center;width:clamp(3rem,9vw,5rem);font-size:clamp(2rem,6vw,3.8rem);font-weight:900;line-height:1;display:inline-grid}.playback-away-warning strong{max-width:34rem;font-size:clamp(1.2rem,3vw,2rem);line-height:1.2}.playback-events{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:1rem;overflow:auto}.playback-events h3{margin-top:0}.playback-events ol{gap:.7rem;margin:0;padding-left:1.2rem;display:grid}.playback-events li{gap:.15rem;display:grid}.playback-events span,.playback-events small{color:var(--muted)}.playback-controls{grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;display:grid}.playback-controls input[type=range]{width:100%}.table-wrap{border:1px solid var(--line);border-radius:8px;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:720px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.65rem}th{background:var(--surface);font-size:.95rem}.teacher-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.teacher-action{border:2px solid var(--text);background:#fff;border-radius:8px;gap:.45rem;padding:1.25rem;text-decoration:none;display:grid}.teacher-action:hover{background:var(--surface)}.teacher-action strong{font-size:1.2rem}.teacher-action span,.classroom-row small,.deployment-summary small{color:var(--muted)}.credential-result{border-top:2px solid var(--line);padding-top:1rem}.credential-table{max-height:24rem}.credential-table code{-webkit-user-select:all;user-select:all;font-size:1rem}.empty-state{border:1px dashed var(--line);color:var(--muted);border-radius:8px;padding:1rem}.classroom-list{border:1px solid var(--line);border-radius:8px;display:grid;overflow:hidden}.classroom-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(18rem,1fr) 8rem 8rem auto;align-items:center;gap:1rem;padding:1rem;text-decoration:none;display:grid}.classroom-row:last-child{border-bottom:0}.classroom-row:hover{background:var(--surface)}.classroom-row>span,.deployment-summary>span{gap:.15rem;display:grid}.row-action{color:var(--focus);white-space:nowrap;font-weight:700}.deployment-card{border:1px solid var(--line);background:#fff;border-radius:8px;overflow:hidden}.deployment-summary{cursor:pointer;grid-template-columns:minmax(18rem,1fr) repeat(3,minmax(7rem,auto)) auto;align-items:center;gap:1rem;padding:1rem;list-style:none;display:grid}.deployment-summary::-webkit-details-marker{display:none}.deployment-card[open] .deployment-summary{border-bottom:1px solid var(--line);background:var(--surface)}.deployment-body{padding:1rem}.inline-control{flex-wrap:wrap;align-items:center;gap:.45rem;display:inline-flex}.compact-button{min-height:36px;padding:.35rem .6rem;font-size:.92rem}.test-shell{place-items:center;min-height:calc(100vh - 2rem);padding:1rem;display:grid}.test-panel{text-align:center;gap:2rem;width:min(960px,100%);display:grid}.debug-answer{border:2px solid var(--text);color:var(--text);text-align:left;background:#fff;border-radius:8px;gap:.2rem;max-width:min(18rem,100vw - 2rem);padding:.6rem .8rem;display:grid;position:fixed;bottom:1rem;right:1rem;box-shadow:0 8px 24px #00000029}.debug-answer span{color:var(--muted);font-size:.8rem}.problem-line{flex-wrap:wrap;justify-content:center;align-items:center;gap:clamp(.5rem,2vw,1rem);font-size:clamp(2.4rem,6vw,5rem);font-weight:700;line-height:1.15;display:flex}.expression{flex-wrap:wrap;justify-content:center;align-items:center;gap:.28em;display:inline-flex}.frac{vertical-align:middle;flex-direction:column;align-items:center;line-height:1;display:inline-flex}.frac-num,.frac-den{padding:0 .12em;line-height:1.1;display:block}.frac-bar{background:currentColor;border-radius:999px;align-self:stretch;height:clamp(4px,.07em,6px);margin:.06em 0;display:block}.answer-input{border:4px solid var(--text);text-align:center;border-radius:8px;width:min(14rem,80vw);min-height:4.75rem;padding:.25rem .5rem;font-size:clamp(2rem,5vw,4rem)}.fraction-entry{flex-direction:column;align-items:center;gap:.45rem;display:inline-flex}.fraction-entry .fraction-input{border:4px solid var(--text);text-align:center;border-radius:8px;width:min(9rem,60vw);min-height:3.5rem;padding:.2rem .4rem;font-size:clamp(1.8rem,4vw,3rem)}.fraction-entry .fraction-bar{background:var(--text);border-radius:999px;width:min(10rem,66vw);height:.375rem}.choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;width:min(720px,100%);margin:0 auto;display:grid}.choice-button{color:var(--text);background:#fff;min-height:88px;font-size:clamp(1.4rem,4vw,2.5rem)}.choice-button.selected{background:var(--text);color:#fff}.test-panel h1{font-size:clamp(2.5rem,5vw,3.25rem)}.test-panel p{font-size:1.35rem;line-height:1.5}.test-panel .test-progress{color:#333;font-size:1.4rem;font-weight:700}.test-panel button,.test-panel .button{min-height:56px;font-size:1.25rem}.test-panel .choice-button{min-height:88px;font-size:clamp(1.4rem,4vw,2.5rem)}.answer-keypad{grid-template-columns:repeat(4,minmax(3.5rem,5rem));justify-content:center;gap:.75rem;display:grid}.test-panel .answer-keypad button{border:2px solid var(--text);min-width:3.5rem;min-height:3.75rem;color:var(--text);touch-action:manipulation;-webkit-user-select:none;user-select:none;background:#fff;border-radius:10px;padding:.25rem;font-size:1.6rem;font-weight:700}.test-panel .answer-keypad button:active{background:var(--text);color:#fff;transform:translateY(1px)}.test-panel .answer-keypad .keypad-zero{grid-column:1/span 3}.actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.danger-zone{border-top:1px solid var(--line);padding-top:1rem}.danger-zone h3{margin:0 0 .35rem}.error{color:var(--danger);font-weight:700}.success{color:var(--success);font-weight:700}@media (max-width:720px){.grid.two,.grid.three,.choice-grid,.teacher-actions{grid-template-columns:1fr}.page{padding:1rem 0}.chart-row{grid-template-columns:1fr}.config-summary{align-items:start;display:grid}.section-head,.metric-chart-heading,.playback-controls{grid-template-columns:1fr;justify-items:stretch;display:grid}.playback-layout{grid-template-columns:1fr}.playback-stage{min-height:24rem}.classroom-row,.deployment-summary{grid-template-columns:1fr 1fr}.classroom-row>span:first-child,.deployment-summary>span:first-child{grid-column:1/-1}}.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}.breadcrumb{margin:0}.field-label{font-weight:700}.status-pill{border:1px solid var(--line-strong);white-space:nowrap;background:#fff;border-radius:999px;padding:.15rem .65rem;font-size:.85rem;font-weight:700;display:inline-block}.status-pill.archived{color:var(--muted);border-color:var(--line);background:var(--surface)}.bank-table .row-archived td{color:var(--muted);background:var(--surface)}.bank-name-link{font-weight:700}.source-choice{gap:1rem;display:grid}.file-chip{border:2px solid var(--line-strong);background:var(--surface);border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .7rem;display:flex}.preview-card{border:2px solid var(--text);background:var(--surface);border-radius:8px;padding:1rem}.preview-card h3{margin:0 0 .35rem}.preview-card .table-wrap{background:#fff}.preview-summary{flex-wrap:wrap;align-items:baseline;gap:.35rem .6rem;margin:0;display:flex}.compact-table{min-width:0}.compact-table caption{caption-side:top;text-align:left;color:var(--muted);padding:.5rem .65rem;font-size:.95rem}.compact-table th,.compact-table td{padding:.45rem .65rem}.warning-list,.error-list{margin:.35rem 0 0;padding-left:1.3rem}.error-list{color:var(--danger)}.error-list li{margin-bottom:.25rem}.form-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.step-hint{color:var(--muted)}.bank-meta{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin:0;display:grid}.bank-meta div{align-content:start;gap:.2rem;display:grid}.bank-meta dt{color:var(--muted);font-size:.95rem;font-weight:700}.bank-meta dd{overflow-wrap:anywhere;margin:0}.bank-meta ul{margin:.25rem 0 0;padding-left:1.2rem}.actions-left{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.inline-edit{gap:.75rem;max-width:36rem;display:grid}.inline-confirm-block{border:2px solid var(--text);background:#fff;border-radius:8px;max-width:40rem;padding:1rem}.inline-confirm-block p{margin:0}.problems-table td{vertical-align:middle}.problem-text{white-space:nowrap;font-size:1.15rem;font-weight:700}.problems-table .row-inactive .problem-text{color:var(--muted);font-weight:400}.table-input{border:2px solid var(--line-strong);width:6.5rem;min-height:40px;color:var(--text);background:#fff;border-radius:6px;padding:.35rem .5rem}.problems-table input[type=checkbox]{width:1.3rem;height:1.3rem}.cell-actions{gap:.35rem;min-width:7rem;display:grid}.cell-actions .error,.cell-actions .success{font-size:.9rem}.pager{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.pager .current{font-weight:700}.save-bar{border:1px solid var(--line);background:#fff;border-radius:8px;gap:.5rem;padding:.75rem 1rem;display:grid}.save-bar.sticky{z-index:2;position:sticky;top:0;box-shadow:0 2px 6px #00000014}.save-bar p{margin:0}.save-bar .error-list{margin-top:.25rem}.problems-table .row-dirty td{background:#fff7dc}.problems-table .row-dirty td:first-child{box-shadow:inset 4px 0 #c98a00}.problems-table .row-invalid td{background:#fdecec}.problems-table .row-invalid td:first-child{box-shadow:inset 4px 0 0 var(--danger)}.problems-table .table-input[aria-invalid=true]{border-color:var(--danger)}
