.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.theme.earned{--tile:#f0d476}.theme.needs-correction,.theme.pending{--tile:#deded8}
.result-star{position:absolute;bottom:14%;font-size:clamp(16px,3vh,26px);color:#8a691e}
.calculation-screen{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;width:100%}
.calc-toolbar{display:flex;align-items:center;gap:10px;align-self:stretch;flex:none;font-family:Marelle;font-size:28px;height:42px}
.initial-calculation{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(18px,4vh,40px);width:100%}
.expression{font-family:Baton,sans-serif;font-size:clamp(24px,4.5vw,46px);text-align:center}
.answer-label{width:min(380px,85%)}#initial-answer{font-family:Baton,sans-serif;text-align:center;font-size:32px;width:100%;min-height:65px}
.correction-screen{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(6px,1.4vh,14px)}
.calc-feedback{min-height:2.8em;max-width:760px;text-align:center;font-size:clamp(15px,2.4vh,19px);line-height:1.35;padding:3px 8px}
.correction-screen>.btn{flex:none;min-height:44px;padding:9px 18px}
.placement-area{--digits:4;--cell:min(58px,7.5vh,calc((100vw - 72px) / (var(--digits) * 3)));width:calc(var(--digits)*var(--cell));margin:0 auto;font-family:Baton,sans-serif;user-select:none}
.position-labels,.place-cells{display:grid;grid-template-columns:repeat(var(--digits),var(--cell))}
.position-labels span{text-align:center;font-size:12px;color:var(--muted)}
.place-row{position:relative;height:var(--cell);margin-top:12px}
.place-cells span{height:var(--cell);border:1px solid #c8cebf;border-radius:5px;background:#fffdf8}
.number-block{position:absolute;top:0;left:calc(var(--start)*var(--cell));height:var(--cell);display:flex;align-items:stretch;border-radius:8px;background:#e7def5;touch-action:none;cursor:grab;box-shadow:0 3px 0 #cfc5df;z-index:1}
.number-block span{display:grid;place-items:center;flex:none;width:var(--cell);font-size:clamp(15px,4vh,30px)}
.number-block .last-digit{outline:2px solid #7d778c;outline-offset:-4px;border-radius:7px}
.number-block.dragging{cursor:grabbing;box-shadow:0 7px 18px #30483f26;z-index:2}
.number-block.position-error .last-digit{background:#f4d599}
.compute-layout{display:flex;align-items:center;justify-content:center;gap:clamp(16px,4vw,48px);width:100%;min-height:0}
.written-operation{--columns:4;--cell:min(59px,7.2vh,calc((100vw - 260px)/7));font-family:Baton,sans-serif;flex:none;margin-left:20px}
.math-row{position:relative;display:grid;grid-template-columns:repeat(var(--columns),var(--cell));align-items:center;text-align:center}
.labels-row{font-size:11px;color:var(--muted);margin-bottom:4px}
.operands>span:not(.operator){height:var(--cell);display:grid;place-items:center;font-size:clamp(18px,4vh,31px)}
.operator{position:absolute;left:-25px;font-size:30px}
.carry-row{height:calc(var(--cell)*.7);margin-bottom:4px}
.math-cell{height:var(--cell);min-height:0;min-width:0;width:calc(var(--cell) - 4px);border:1px solid #cdd1c5;background:#fffef9;border-radius:8px;font-family:Baton,sans-serif;font-size:clamp(17px,4vh,30px);padding:0;justify-self:center}
.carry-cell{height:calc(var(--cell)*.65);width:calc(var(--cell)*.7);font-size:clamp(14px,3vh,23px)}
.math-cell.selected{outline:2px solid #77688c;outline-offset:1px;background:#f4edf9}
.result-row{border-top:2px solid var(--ink);padding-top:8px;margin-top:5px}
.compensation-row{height:calc(var(--cell)*.6)}
.compensation{min-height:0;height:calc(var(--cell)*.55);border:1px solid #d7d9cf;border-radius:6px;justify-self:center;width:calc(var(--cell)*.8);padding:0;font-family:Baton,sans-serif;font-size:clamp(11px,2.1vh,17px);background:#f6f4ed;color:#717c70}
.compensation.active{background:#e0e8cd;color:#30483f;border-color:#809467}
.column-focus{background:#f8edcb;border-radius:6px}.issue{outline:2px solid #bd943a!important;background:#fff0c9!important}
.numeric-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;width:clamp(135px,19vw,205px);flex:none}
.numeric-pad button{min-height:0;height:clamp(32px,6.5vh,57px);border:1px solid #d8dacd;background:#fffdf8;border-radius:12px;font-family:Baton,sans-serif;font-size:clamp(19px,3vh,26px);padding:0;box-shadow:0 2px 0 #e0e0d4}
.numeric-pad button:active{background:#e7def5}
#app.activity-open .student-bar{margin-bottom:5px}
.calculation-levels{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}
.badge-choice{display:flex;align-items:center;gap:10px;margin:10px 0}.badge-choice input{width:22px;min-height:22px;accent-color:var(--green)}
.level-catalog{margin:18px 0;font-size:15px}.level-catalog summary,.pupil-history summary{cursor:pointer;min-height:44px;padding:9px 0}
.operation-choice{margin-top:20px;max-width:300px}.saved-dates{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.pupil-history{border-bottom:1px solid var(--line);padding:8px 0}.history-row{display:flex;gap:15px;flex-wrap:wrap;padding:12px 0;font-size:15px;border-top:1px solid #e9e8df}
@media(max-width:560px){.calculation-levels{grid-template-columns:1fr}.compute-layout{gap:15px;flex-direction:column}.written-operation{--cell:min(44px,5.5vh,calc((100vw - 48px)/7))}.numeric-pad{width:min(270px,90%);grid-template-columns:repeat(6,1fr);gap:6px}.numeric-pad button{height:38px}.calc-feedback{font-size:14px;min-height:2.6em}.calc-toolbar{font-size:23px;height:34px}}
@media(max-height:550px) and (min-width:561px){.calc-toolbar{height:26px}.correction-screen{gap:3px}.written-operation{--cell:min(48px,6.5vh,calc((100vw - 260px)/7))}.calc-feedback{min-height:2.2em;font-size:14px}.numeric-pad button{height:clamp(28px,6vh,42px)}#app.pupil-session main.student-main{padding-top:8px}.correction-screen>.btn{min-height:36px;padding:5px 14px}}

/* The operands begin above an empty grid, and can be moved between rows. */
.position-instruction{text-align:center;line-height:1.35;font-size:16px;flex:none}
.position-expression{font-family:Baton,sans-serif;font-size:clamp(21px,3.4vh,30px);margin-bottom:4px}
.placement-workspace{--digits:4;--cell:min(54px,6vh,calc((100vw - 72px)/(var(--digits)*3 + 2)));width:100%;font-family:Baton,sans-serif;user-select:none}
.placement-workspace .placement-area{--digits:inherit;--cell:inherit;width:calc(var(--digits)*var(--cell));margin:0 auto}
.number-bank{display:flex;align-items:center;justify-content:center;gap:14px;min-height:calc(var(--cell) + 12px);margin-bottom:8px}
.number-bank .number-block{position:relative;left:auto;top:auto;flex:none}
.placement-workspace .place-row{margin-top:8px}
.placement-sign{position:absolute;right:calc(100% + 10px);height:var(--cell);display:grid;place-items:center;font-size:clamp(22px,4vh,30px)}
.placement-rule{height:2px;background:var(--ink);margin-top:12px;margin-left:-28px}
.placement-workspace .number-block.dragging{z-index:10;pointer-events:none;opacity:.8}
.drop-outline{position:absolute;top:0;height:var(--cell);border:2px dashed #80768e;border-radius:7px;background:#e7def526;pointer-events:none}
.drop-outline[hidden]{display:none}

.observed-errors{flex-basis:100%;font-size:14px;color:var(--muted);line-height:1.6}

/* A small symbol, with a larger touch target for selecting the compensation. */
.compensation-row{height:max(34px,calc(var(--cell)*.6))}
.compensation{display:grid;place-items:center;width:calc(var(--cell) - 2px);height:100%;border:0;background:transparent;color:#81897c;border-radius:8px}
.compensation-symbol{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;font-family:Arial,sans-serif;font-size:18px;line-height:1}
.compensation.active{background:transparent;color:#30483f}
.compensation.active .compensation-symbol{background:#e0e8cd;box-shadow:inset 0 0 0 1px #a5b496}

.calculation-choices{display:flex;justify-content:center;align-items:center;gap:1.5rem;flex-wrap:wrap;min-height:40vh}.calculation-choices .btn{min-width:180px;min-height:90px;border-radius:50%;}

/* Teacher progression: symbols and labels remain readable without color. */
.progress-result{display:inline-flex;align-items:center;justify-content:center;width:1.35em;height:1.35em;border-radius:50%;font-family:Arial,sans-serif;font-size:16px;font-weight:700;vertical-align:middle;margin-right:3px}
.progress-result.is-success{color:#237443;background:#e7f2e9}
.progress-result.is-error{color:#b33036;background:#fbeaec}
.observed-errors .error-type{font-weight:700;color:#525f69}
.observed-errors.no-identified-error,.error-separator{color:#717171}
.error-type[data-error-type="number_not_placed"]{color:#715b29}
.error-type[data-error-type="overlapping_rows"]{color:#875333}
.error-type[data-error-type="reversed_subtraction"]{color:#a23b51}
.error-type[data-error-type="misaligned_units"]{color:#315b98}
.error-type[data-error-type="missing_top_compensation"]{color:#7c4588}
.error-type[data-error-type="unneeded_top_compensation"]{color:#8e3970}
.error-type[data-error-type="missing_bottom_compensation"]{color:#58509b}
.error-type[data-error-type="unneeded_bottom_compensation"]{color:#79553e}
.error-type[data-error-type="unneeded_carry"]{color:#9a4c26}
.error-type[data-error-type="missing_carry"]{color:#a36114}
.error-type[data-error-type="wrong_carry"]{color:#a23e29}
.error-type[data-error-type="missing_digit"]{color:#52677c}
.error-type[data-error-type="wrong_leading_digit"]{color:#4657a2}
.error-type[data-error-type="unneeded_leading_digit"]{color:#7e4250}
.error-type[data-error-type="incoming_carry_not_added"]{color:#06727c}
.error-type[data-error-type="incoming_compensation_not_added"]{color:#3e6b55}
.error-type[data-error-type="column_arithmetic"]{color:#9c315e}

.progress-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;margin-top:10px}
.progress-column{min-width:0}
.progress-column+ .progress-column{border-left:1px solid var(--line);padding-left:24px}
.progress-column h3{font-size:21px;font-weight:400;margin:0 0 12px}
.progress-column .history-row{gap:8px 12px;align-items:center;overflow-wrap:anywhere}
.progress-column .history-row>.observed-errors{margin-top:2px}
@media(max-width:560px){.progress-columns{gap:10px}.progress-column+ .progress-column{padding-left:10px}.progress-column .history-row{font-size:14px}.progress-column .observed-errors{font-size:13px}}

.pupil-monitor-link{width:100%;text-align:left;background:transparent;color:inherit;font:inherit;cursor:pointer;border:0;border-bottom:1px solid var(--line);gap:12px}
.pupil-monitor-link:hover{background:#eeeee6}.pupil-monitor-link:focus-visible,.monitor-petal:focus-visible{outline:3px solid #386250;outline-offset:3px}
.monitor-legend{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;font-size:15px}.monitor-legend span{padding:6px 12px;border-radius:16px}
.state-wrong{background:#f8dddd;color:#983039}.state-right{background:#dceedd;color:#23633b}.state-todo{background:#e6e6e4;color:#606060}.state-working{background:#e8dafa;color:#663b91}
.monitor-flower{position:relative;width:min(100%,760px);height:min(58vh,530px);min-height:320px;margin:16px auto;container-type:size}
.monitor-petal{position:absolute;transform:translate(-50%,-50%);width:35cqw;height:23cqh;border:1px solid #0001;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font:inherit;cursor:pointer;padding:8px}
.monitor-petal:disabled{opacity:1;cursor:default}.monitor-petal>span{font-size:clamp(14px,3.5cqw,26px)}.monitor-petal small{font-size:clamp(11px,2cqw,15px)}
.monitor-petal:nth-child(1){left:50%;top:14%}.monitor-petal:nth-child(2){left:81%;top:32%}.monitor-petal:nth-child(3){left:81%;top:68%}.monitor-petal:nth-child(4){left:50%;top:86%}.monitor-petal:nth-child(5){left:19%;top:68%}.monitor-petal:nth-child(6){left:19%;top:32%}
.monitor-calculations{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}.monitor-calculations .panel{min-width:0;overflow-wrap:anywhere}.monitor-expression{font-size:28px}.no-identified-error{color:#717171}
.pupil-call{position:fixed;z-index:20;top:16px;left:50%;transform:translateX(-50%);width:min(560px,calc(100vw - 32px));padding:20px;text-align:center;border:2px solid #71548a;background:#f3eafa;color:#48325d;border-radius:20px;box-shadow:0 6px 24px #0002}.pupil-call[hidden]{display:none}.pupil-call p{margin:0 0 12px;font-size:24px}

/* Paper notation: keep the original digit until the pupil simplifies it. */
.compensation-symbol{border:1px solid #c7c0b5;background:#f7f4ee;color:#666052;box-sizing:border-box}
.compensation.active .compensation-symbol{background:#eee8df;border-color:#8c8271;box-shadow:none}
.operands>span:not(.operator){position:relative}
.paper-top-carry{position:absolute;right:calc(50% + .32em);top:0;height:100%;display:grid;place-items:center;font-size:1em;line-height:inherit;color:inherit}
.paper-compound{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:0;padding:0;border:1px solid #d6cec1;border-radius:10px;background:#f7f4ee;color:inherit;font:inherit;cursor:pointer}
.paper-bottom-carry{position:absolute;right:-3px;top:-7px;z-index:2;width:22px;height:22px;min-height:0;padding:0;border:1px solid #9583a5;border-radius:50%;background:#f7f4ee;color:#67537d;font-family:Baton,sans-serif;font-size:16px;line-height:1;display:grid;place-items:center;cursor:pointer}
.paper-compound:focus-visible{outline:2px solid #77688c;outline-offset:1px}



.bottom-compensation-row{margin-top:0;margin-bottom:2px}

.error-type[data-error-type="initial_column_reversal"]{color:#85439b}

.pupil-monitor-link{display:flex;align-items:center;flex-wrap:wrap;min-height:58px;padding:12px 8px}.pupil-monitor-link .status{margin-left:auto}.monitor-open-label{font-size:15px;padding:7px 12px;border:1px solid #a9b7a3;background:#edf2e7;border-radius:14px;color:#355240;white-space:nowrap}

.bottom-side-plus{position:absolute;left:calc(50% - .4em - 22px);bottom:7px;z-index:2;width:22px;height:22px;min-height:0;padding:0;border:1px solid #c7c0b5;border-radius:50%;background:#f7f4ee;color:#666052;font:18px/1 Arial,sans-serif;display:grid;place-items:center;cursor:pointer}.paper-bottom-cell{overflow:visible}.paper-bottom-carry:focus-visible,.bottom-side-plus:focus-visible{outline:2px solid #77688c;outline-offset:2px}

.global-flower{position:relative;container-type:inline-size;width:100%;max-width:1100px;height:780px;margin:20px auto}
.global-petal{position:absolute;transform:translate(-50%,-50%);width:36%;height:235px;border:1px solid #d9d9cf;border-radius:42%;background:var(--tile,#f5f1e9);padding:22px 22px 26px;display:flex;flex-direction:column;min-width:0}
.global-petal:nth-child(1){left:50%;top:16%}.global-petal:nth-child(2){left:81%;top:34%}.global-petal:nth-child(3){left:81%;top:66%}.global-petal:nth-child(4){left:50%;top:84%}.global-petal:nth-child(5){left:19%;top:66%}.global-petal:nth-child(6){left:19%;top:34%}
.global-petal h3{text-align:center;font-size:23px;margin:0 0 8px}.global-results{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;min-height:0;flex:1}.global-results h4{font-size:15px;font-weight:400;margin:0 0 6px;text-align:center}.global-right{color:#23633b}.global-wrong{color:#983039;border-left:1px solid #0002;padding-left:8px}.global-right,.global-wrong{min-height:0;display:flex;flex-direction:column}.global-names{overflow-y:auto;min-height:0;text-align:center}.global-pupil{display:block;font:inherit;font-size:16px;color:inherit;border:0;background:transparent;width:100%;padding:5px 2px;overflow-wrap:anywhere;cursor:pointer}.global-pupil:hover{text-decoration:underline}.global-empty{color:#777}
@media(max-width:650px){.global-flower{height:1030px}.global-petal{width:44%;height:225px;padding:20px 10px}.global-petal:nth-child(2),.global-petal:nth-child(3){left:77%}.global-petal:nth-child(5),.global-petal:nth-child(6){left:23%}.global-petal h3{font-size:18px}.global-pupil{font-size:14px}}

.global-petal{background:linear-gradient(to right,#dceedd 0%,#dceedd 50%,#f8dddd 50%,#f8dddd 100%);border-color:#c4cbbf;box-shadow:0 3px 0 #0000000a}.global-petal h3{color:#30483f}.global-results{gap:0}.global-right{padding-right:8px}.global-wrong{padding-left:8px;border-left:1px solid #8e9d8955}.global-pupil:focus-visible{outline:2px solid currentColor;outline-offset:-2px;border-radius:6px}

.progress-chart-stack{display:grid;gap:26px}.progress-plot-scroll{overflow-x:auto}.progress-plot{width:100%;min-width:760px;display:block;font:14px Baton,sans-serif;fill:var(--ink)}.progress-name{font:16px Baton,sans-serif;border:0;background:transparent;cursor:pointer;text-align:left;white-space:nowrap;width:100%;overflow:hidden;text-overflow:ellipsis;padding:2px}.progress-name:hover{text-decoration:underline}.progress-name:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.progress-legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:14px}.progress-detail-scroll{max-height:40vh;overflow:auto;margin-bottom:16px}.progress-detail-scroll table{border-collapse:collapse;font-size:14px;width:100%}.progress-detail-scroll th,.progress-detail-scroll td{text-align:left;padding:8px;border-bottom:1px solid #ddd;vertical-align:top}.progress-detail-scroll td:first-child{white-space:nowrap}

.pupil-badges{display:inline-flex;gap:5px;align-items:center;justify-content:center;flex-wrap:wrap;vertical-align:middle;line-height:1;flex-shrink:0}.pupil-medal{display:inline-flex;width:34px;height:38px;flex:none}.pupil-medal svg{width:100%;height:100%;display:block}.student .pupil-badges{max-width:100%}.student{flex-wrap:wrap}.name-pill .pupil-badges{margin-left:10px}.name-pill .pupil-medal{width:28px;height:32px}.teacher-pupil-name{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.teacher-pupil-name .pupil-medal{width:24px;height:28px}

/* Explicit chart metrics override the global 48px minimum button height. */
.progress-plot text{font:14px Arial,sans-serif}.progress-plot .point-count{fill:white;font:bold 12px Arial,sans-serif}.progress-name{min-height:0;height:36px;line-height:28px;font-family:Arial,sans-serif;font-size:15px;padding:4px 2px}.progress-plot{overflow:visible}.medal-options{display:flex;gap:14px;flex-wrap:wrap;border:0;padding:16px 0;margin:12px 0}.medal-option{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:14px;cursor:pointer}.medal-option input{min-height:0;width:20px;height:20px}.medal-option .pupil-medal{width:42px;height:46px}.medal-option:has(input:checked){background:#eee8f4;border-color:#89749d}.custom-badge-list{margin-top:20px}

.badge-category-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid var(--line)}dialog:has(#edit-badge){max-width:620px;max-height:90vh;overflow:auto}

.medal-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;max-height:390px;overflow-y:auto;padding:12px 4px}.medal-option{margin:0;min-width:0;font-size:15px}.medal-option .pupil-badges{flex-shrink:0}.medal-options legend{font-size:18px}

.medal-option.unavailable{filter:grayscale(1);opacity:.48;cursor:not-allowed;background:#e9e9e5}.medal-option.unavailable input{cursor:not-allowed}.medal-used{display:block;font-size:12px;color:#555}

.badge-pupil-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 20px;margin:16px 0}.badge-pupil-grid .badge-choice{flex-wrap:wrap;padding:8px;border:1px solid var(--line);border-radius:12px}.badge-pupil-grid .badge-choice:has(input:disabled){background:#f1f1eb}.badge-pupil-grid small{font-size:12px}

.calc-success>p{font-size:clamp(40px,8vh,72px);color:#426b47;margin:0}

/* v64: reserve space for cursive capitals and descenders on every return link. */
#app .calc-toolbar,#app .phrase-toolbar{height:auto!important;min-height:64px;line-height:1.9;padding:8px 0;overflow:visible;flex-shrink:0}
#app .calc-toolbar .btn.quiet,#app .phrase-toolbar .btn.quiet{height:auto;min-height:52px;line-height:1.9;padding:8px 14px;overflow:visible}
