*{box-sizing:border-box}html,body{margin:0;height:100%;font-family:ui-rounded,'Trebuchet MS',Arial,sans-serif;color:#071b69}button,a{font:inherit;font-weight:900;touch-action:manipulation}button{cursor:pointer;min-height:44px;border:2px solid #80cbff;border-radius:20px;color:#073a9b;background:linear-gradient(#fff,#a5dfff);box-shadow:inset 0 2px 2px #fff,0 4px 0 #70b8eb;padding:10px 16px}button:hover{filter:brightness(1.05)}button:focus-visible,a:focus-visible{outline:4px solid #ffbd00;outline-offset:3px}button:disabled{cursor:default;opacity:.45}.game{height:100dvh;overflow:hidden;background:#75d4e9 url('assets/classroom.webp') center/cover;display:flex;flex-direction:column}header{display:flex;align-items:center;gap:12px;background:linear-gradient(110deg,#008eff,#004ce4);color:white;padding:10px 20px;min-height:78px}header a{color:#fff;text-decoration:none;padding:10px;border-radius:15px;background:#0060d4}h1{flex:1;text-align:center;font-size:clamp(24px,3.5vw,52px);line-height:1;margin:0;text-shadow:0 3px #003595,2px 0 #003595,-2px 0 #003595}h1 span{color:#ffe332}header button{font-size:15px}.layout{display:grid;grid-template-columns:minmax(130px,20%) minmax(0,1fr) minmax(180px,22%);gap:16px;padding:18px;flex:1;min-height:0}.guide{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:0}.guide img{width:100%;max-height:43dvh;object-fit:contain;filter:drop-shadow(0 8px 3px #00529a30)}.guide p{background:#fff;border:3px solid #9cddff;border-radius:22px;padding:16px;font-size:clamp(17px,1.7vw,25px);font-weight:900;margin:0;text-align:center}.guide button{width:100%;font-size:15px}.play{display:flex;flex-direction:column;gap:12px;min-height:0;min-width:0}nav{display:flex;justify-content:center;gap:12px}nav button{min-width:40%;font-size:20px}nav .active,.levels .active{background:linear-gradient(#fff578,#ffcb16);border-color:#ffc000;box-shadow:inset 0 3px #fff,0 4px #ff9b00}.board,.tray,.levels{background:linear-gradient(#fff,#e4f3ff);border:3px solid #8bd5ff;border-radius:30px;box-shadow:inset 0 2px white,0 7px 0 #4c9fda,0 12px 15px #0068a233}.board{flex:1;min-height:0;padding:12px;display:flex;flex-direction:column}h2{margin:0;text-align:center;font-size:clamp(20px,2.1vw,32px)}#question{display:flex;align-items:center;justify-content:center;gap:15px;min-height:65px}#question strong{font-size:clamp(38px,5vw,68px);color:#007cff;text-shadow:0 3px #a4deff}#columns{display:flex;gap:10px;flex:1;min-height:0}.column{flex:1;min-width:0;border-radius:25px;padding:8px;background:var(--color);border:3px solid color-mix(in srgb,var(--color),#fff 20%);box-shadow:inset 0 3px 2px #ffffff99,0 4px 0 color-mix(in srgb,var(--color),#062a77 30%);display:flex;flex-direction:column;text-align:center}.column h3{color:#fff;font-size:clamp(30px,4vw,54px);margin:0;text-shadow:0 2px #0003}.column small{color:white;font-weight:900;font-size:clamp(13px,1.4vw,20px);margin-bottom:8px}.drop{flex:1;min-height:0;position:relative;border:3px dashed color-mix(in srgb,var(--color),white 55%);border-radius:19px;background:color-mix(in srgb,var(--color),white 86%);display:flex;align-content:center;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px;padding:6px}.drop.over{background:#fff7a3;outline:4px solid #ffd321}.drop>button{padding:0;min-width:0;min-height:0;border:0;box-shadow:none;background:none}.count{font-size:26px;font-weight:900;color:#354c87}.tray{min-height:105px;height:21dvh;max-height:160px;display:flex;justify-content:space-evenly;align-items:center;padding:12px;gap:10px}.piece-source{height:100%;flex:1;min-width:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;background:transparent;border:0;box-shadow:none;padding:5px;touch-action:none}.piece-source.selected{outline:4px solid #ffbf00;border-radius:15px}.piece-label{font-size:16px}.block{display:inline-block;pointer-events:none;border-radius:5px;background-color:var(--color);border:2px solid color-mix(in srgb,var(--color),#123 30%);box-shadow:inset 3px 3px 2px #ffffff88,3px 4px 0 color-mix(in srgb,var(--color),#123 40%),5px 7px 4px #19325c22;flex-shrink:0}.block.U{width:25px;height:25px}.block.D{width:18px;height:88px;background-image:repeating-linear-gradient(0deg,transparent 0 7px,#00652a80 7px 9px)}.block.C{width:85px;height:85px;background-image:repeating-linear-gradient(0deg,transparent 0 7px,#a0003055 7px 8.5px),repeating-linear-gradient(90deg,transparent 0 7px,#a0003055 7px 8.5px)}.block.UM{width:76px;height:76px;background-image:repeating-linear-gradient(0deg,transparent 0 7px,#a0760055 7px 8px),repeating-linear-gradient(90deg,transparent 0 7px,#a0760055 7px 8px);transform:skewY(-6deg);border-right-width:10px;border-top-width:8px}.drop .block.U{width:18px;height:18px}.drop .block.D{height:50px;width:12px}.drop .block.C,.drop .block.UM{width:42px;height:42px}.levels{padding:14px;display:flex;flex-direction:column;gap:12px;min-height:0}.levels h2{font-size:21px}#levels{display:flex;flex-direction:column;gap:10px}#levels button{width:100%;text-align:left;padding:10px 14px;display:flex;align-items:center;gap:12px}#levels b{font-size:26px;color:#ffbb00;text-shadow:0 2px #f18c00}#levels small{display:block;font-size:14px}.progress{display:flex;flex-direction:column;text-align:center;gap:8px;margin:auto 0}#stars{font-size:36px;color:#ffbf00;text-shadow:0 2px #ee8700}#round{font-weight:900}.check{background:linear-gradient(#38ef52,#00c92b);border-color:#00b929;color:white;font-size:clamp(19px,2vw,30px);text-shadow:0 2px #008324;box-shadow:inset 0 3px #a5ffa1,0 5px #009c32}#next{font-size:23px}#reset{font-size:14px}#feedback{margin:0;min-height:36px;text-align:center;font-weight:900;background:#ffffffee;border-radius:16px;padding:8px;font-size:17px}#equation{text-align:center;font-size:clamp(17px,2vw,27px);font-weight:900;padding-top:10px;min-height:38px}.digit-options{display:flex;flex-wrap:wrap;gap:6px;align-content:center;justify-content:center}.digit-options button{width:44px;min-height:44px;padding:4px;font-size:24px;border-radius:12px}.digit-options button.chosen{background:#ffe343;border-color:#ffd000}.ghost{position:fixed;pointer-events:none;z-index:20;transform:translate(-50%,-50%);opacity:.85}.confetti{position:fixed;inset:0;pointer-events:none;background:repeating-conic-gradient(from 0deg at 50% 50%,transparent 0 12deg,#ffdf0044 13deg 15deg,transparent 16deg 30deg);animation:celebrate 1s ease-out forwards;z-index:10}@keyframes celebrate{to{opacity:0;transform:scale(1.5)}}dialog{border:4px solid #83d7ff;border-radius:30px;padding:30px;max-width:min(90vw,500px);color:#092a77;text-align:center;background:#f3fbff}dialog::backdrop{background:#00285e99}dialog button{margin:8px}#full{font-size:24px}body:has(dialog[open]) .layout{filter:blur(2px)}@media(max-height:650px) and (orientation:landscape){header{min-height:64px;padding:6px 14px}.layout{padding:10px;gap:10px}.levels{gap:8px;padding:10px}#levels{gap:7px}#levels button{padding:5px 10px}.guide{gap:8px}.guide img{max-height:32dvh}.guide p{padding:10px}.board{padding:8px}#question{min-height:50px}.tray{min-height:90px;padding:7px}.block.D{height:62px}.block.C,.block.UM{height:62px;width:62px}.column small{margin-bottom:3px}#equation{padding-top:4px;min-height:27px}.progress{gap:1px}#stars{font-size:28px}#next{font-size:19px}.play{gap:8px}}@media(orientation:portrait),(max-width:700px){.game{height:auto;min-height:100dvh;overflow:visible}header{flex-wrap:wrap;padding:10px;gap:8px}h1{order:-1;flex-basis:100%;font-size:34px}.layout{grid-template-columns:minmax(0,1fr);padding:12px;gap:12px}.guide{flex-direction:row}.guide img{width:80px;height:90px}.guide p{flex:1;font-size:16px}.guide button{width:auto;font-size:13px;padding:8px}.guide #clear{display:none}.play{min-height:530px}.board{min-height:330px}.levels{gap:10px}#levels{flex-direction:row;flex-wrap:wrap}#levels button{width:calc(50% - 5px)}.progress{flex-direction:row;align-items:center;justify-content:center}.tray{height:120px}.column{padding:5px}.drop{padding:3px;gap:4px}.column h3{font-size:32px}.column small{font-size:12px}.digit-options button{width:38px;min-height:44px}.drop .block.C,.drop .block.UM{width:30px;height:30px}.drop .block.D{height:40px}.guide #help{max-width:80px}#question{font-size:20px}#question strong{font-size:46px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Ten divisions remain exact at every rendered block size. */
.block.C,.block.UM{background-image:linear-gradient(0deg,#8b194955 1px,transparent 1px),linear-gradient(90deg,#8b194955 1px,transparent 1px);background-size:10% 10%}
.block.D{background-image:linear-gradient(0deg,#00652a80 1px,transparent 1px);background-size:100% 10%}
.title-art{display:block;width:min(100%,660px);height:106px;object-fit:contain;margin:auto;filter:drop-shadow(0 4px 0 #0052b1);position:relative;z-index:2}
header:has(.title-art){min-height:102px;padding-top:2px;padding-bottom:2px}
@media(max-height:650px) and (orientation:landscape){.title-art{height:76px}header:has(.title-art){min-height:78px}.layout{padding-top:10px}}
@media(orientation:portrait),(max-width:700px){.title-art{height:90px}header:has(.title-art){min-height:120px}}
@media(max-height:650px) and (orientation:landscape){.levels>h2{display:none}#levels{display:grid;grid-template-columns:1fr 1fr;gap:7px}#levels button{min-height:48px;font-size:14px;justify-content:center;text-align:center;padding:5px 2px}#levels button b{display:none}#levels small{font-size:11px}.progress{flex-direction:row;align-items:center;justify-content:center;gap:10px}#stars{font-size:27px}#round{font-size:12px}}
/* Larger manipulatives and six place-value levels. */
#levels{display:grid;grid-template-columns:1fr 1fr;gap:10px}#levels button{padding:8px;gap:6px;min-height:62px}#levels b{font-size:22px}#levels small{font-size:12px}.levels h2{font-size:19px}.column{background:linear-gradient(150deg,color-mix(in srgb,var(--color),white 18%),var(--color) 58%,color-mix(in srgb,var(--color),#00365c 12%));box-shadow:inset 0 3px 2px #fff9,inset 0 -4px 0 #0002,0 5px 0 color-mix(in srgb,var(--color),#062a77 35%)}.column h3{font-size:clamp(28px,3.2vw,46px)}.column small{font-size:clamp(12px,1.3vw,18px)}.column .drop{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));grid-template-rows:repeat(var(--rows),minmax(0,1fr));gap:8px;container-type:size;border-style:solid;border-color:#ffffffb0;background:linear-gradient(145deg,#ffffffef,color-mix(in srgb,var(--color),white 86%));box-shadow:inset 0 4px 7px #15265312}.drop .remove{display:grid;place-items:center;width:100%;height:100%;padding:0!important;outline-offset:-2px}.column .drop .block{width:min(calc(82cqw / var(--cols)),calc(82cqh / var(--rows)),160px);height:min(calc(82cqw / var(--cols)),calc(82cqh / var(--rows)),160px);border-radius:9px;box-shadow:inset 4px 4px 3px #ffffff99,4px 5px 0 color-mix(in srgb,var(--color),#102741 35%),6px 9px 5px #00174230}.column[data-place=U] .drop .block{width:min(calc(78cqw / var(--cols)),calc(78cqh / var(--rows)),74px);height:min(calc(78cqw / var(--cols)),calc(78cqh / var(--rows)),74px)}.column[data-place=D] .drop{grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:1fr;gap:4px}.column[data-place=D] .drop .block{width:min(calc(70cqw / var(--n)),38px);height:min(78cqh,235px);border-radius:6px}.column-total{display:block;flex:none;margin-top:8px;border:2px solid #ffffffad;border-radius:100px;background:#ffffffa8;box-shadow:inset 0 2px white;padding:3px;font-size:clamp(17px,1.8vw,26px);font-weight:900;color:color-mix(in srgb,var(--color),#00164e 55%)}.tray{gap:12px;padding:12px}.tray>.piece-source{border:2px solid #8fd7ff;background:linear-gradient(#ffffffed,#cde9ff);border-radius:23px;box-shadow:inset 0 3px #fff,0 4px #8fb6d8;flex-direction:row;gap:15px}.tray .piece-label{font-size:clamp(19px,2vw,30px)}.tray .block.U{height:48px;width:48px}.tray .block.D{height:90px;width:24px}.tray .block.C{height:95px;width:95px}.block.UM,.block.DM,.block.CM{display:flex;flex-direction:column;align-items:center;justify-content:center;background-image:linear-gradient(145deg,#ffffff55,transparent 55%),linear-gradient(0deg,#513b0040 1px,transparent 1px),linear-gradient(90deg,#513b0040 1px,transparent 1px);background-size:100% 100%,10% 10%,10% 10%;border-radius:10px;border-right-width:8px;border-top-width:5px;transform:none;width:86px;height:86px}.block-symbol{font-size:clamp(15px,2vw,30px);font-weight:900;color:#fff;text-shadow:0 2px #173a6580}.block-value{font-size:12px;font-weight:900;color:#07276d;background:#ffffffc9;border-radius:7px;padding:2px 4px}.column .drop .block-symbol{font-size:clamp(11px,13cqw,25px)}.column .drop .block-value{font-size:clamp(8px,7cqw,13px);padding:1px 2px}.count{display:flex;flex-direction:column;align-items:center;gap:8px;grid-area:1/1/-1/-1}.count b{font-size:clamp(38px,27cqw,86px);color:var(--color);text-shadow:0 3px #fff,0 5px #0002}.count small{font-size:clamp(16px,10cqw,26px);color:#17396b;margin:0}.digit-options{width:100%;justify-content:center;gap:10px}.digit-options button{height:70px;width:56px;flex:0 1 56px;border:2px solid #56b8fc;background:linear-gradient(#fff,#aadfff);border-radius:16px;box-shadow:inset 0 3px white,0 5px #4d9ee0;font-size:32px;touch-action:none}.digit-options button.chosen{box-shadow:inset 0 3px #fff8,0 5px #d7a100}.wide-level .layout{grid-template-columns:minmax(0,1fr) 205px;grid-template-rows:minmax(0,1fr) 56px;padding:10px;gap:10px}.wide-level .play{grid-column:1;grid-row:1}.wide-level .levels{grid-column:2;grid-row:1/3}.wide-level .guide{grid-column:1;grid-row:2;flex-direction:row;gap:10px}.wide-level .guide img{width:54px;height:56px}.wide-level .guide p{font-size:13px;padding:7px;flex:1}.wide-level .guide button{width:auto;font-size:13px;padding:7px}.wide-level header .title-art{height:80px}.wide-level header{min-height:84px}.wide-level .column{padding:6px;min-width:0;border-radius:20px}.wide-level .column h3{font-size:clamp(23px,2.4vw,36px)}.wide-level .column small{font-size:11px;min-height:26px;display:grid;place-items:center}.wide-level .column-total{font-size:17px}.wide-level .column .drop{gap:4px;padding:4px;border-radius:14px}.wide-level #columns{gap:6px}.wide-level .tray{height:112px;min-height:95px;padding:8px;gap:8px}.wide-level .tray>.piece-source{flex-direction:column;gap:5px;padding:5px;border-radius:15px}.wide-level .tray .piece-label{font-size:15px}.wide-level .tray .block.C,.wide-level .tray .block.UM,.wide-level .tray .block.DM,.wide-level .tray .block.CM{height:52px;width:52px}.wide-level .tray .block.U{height:32px;width:32px}.wide-level .tray .block.D{height:58px;width:16px}.wide-level .tray .block-symbol{font-size:17px}.wide-level .tray .block-value{font-size:9px}.wide-level #question strong{font-size:clamp(37px,4.5vw,60px)}.wide-level #question{font-size:clamp(18px,2vw,28px)}.wide-level #equation{font-size:clamp(14px,1.5vw,22px)}
@media(max-height:650px) and (orientation:landscape){#levels button{min-height:48px;padding:5px 2px}#levels small{font-size:11px}.column-total{font-size:17px;padding:1px;margin-top:4px}.column h3{font-size:29px}.tray .block.C{height:65px;width:65px}.tray .block.D{height:65px;width:20px}.tray .block.U{height:38px;width:38px}.digit-options button{height:48px;font-size:26px}.wide-level .layout{grid-template-rows:minmax(0,1fr) 44px}.wide-level .guide img{height:44px;width:44px}.wide-level .guide p{font-size:12px}.wide-level .guide button{font-size:12px;padding:6px}.wide-level .tray{height:92px;min-height:80px}.wide-level header .title-art{height:64px}.wide-level header{min-height:68px}.wide-level .column small{min-height:18px;font-size:10px}.wide-level .column h3{font-size:24px}.wide-level .column-total{font-size:15px}}
@media(orientation:portrait),(max-width:700px){#levels{grid-template-columns:repeat(3,minmax(0,1fr))}#levels button{width:100%;padding:6px;min-height:60px;text-align:center;justify-content:center}#levels b{display:none}#levels small{font-size:11px}.tray>.piece-source{gap:8px}.tray .block.C{width:65px;height:65px}.tray .block.D{height:70px}.tray .block.U{width:38px;height:38px}.tray .piece-label{font-size:19px}.column-total{font-size:18px}.digit-options{gap:6px}.digit-options button{height:48px;flex:0 0 44px;width:44px;font-size:25px}.wide-level .layout{display:flex;flex-direction:column;padding:10px}.wide-level .guide{order:0}.wide-level .play{order:1;min-height:700px}.wide-level .levels{order:2}.wide-level #columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:8px}.wide-level .board{min-height:480px}.wide-level .column h3{font-size:27px}.wide-level .column small{min-height:15px;font-size:11px}.wide-level .column-total{font-size:16px}.wide-level #question{flex-wrap:wrap;gap:5px;min-height:60px}.wide-level .tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));height:180px;max-height:none;min-height:180px}.wide-level .tray>.piece-source{flex-direction:row}.wide-level .tray:has(.digit-options){display:flex;min-height:120px;height:120px}.wide-level .guide #clear{display:block}.wide-level .guide p{font-size:12px}.wide-level .guide button{max-width:80px}.wide-level .column .drop .block{border-right-width:4px;border-top-width:3px}}
.wide-level #levels{grid-template-columns:repeat(2,minmax(0,1fr))}.wide-level #levels button{min-width:0;display:block;text-align:center;font-size:14px;padding:6px 2px}.wide-level #levels button b{display:none}.wide-level #levels button small{font-size:11px;overflow-wrap:anywhere}.wide-level #check{font-size:20px;padding:10px 6px;white-space:nowrap}.wide-level #next{font-size:18px;padding:10px 5px}.wide-level .levels{min-width:0}.count{font-size:clamp(38px,27cqw,86px)}
@media(orientation:portrait),(max-width:700px){.wide-level #levels{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Readable decomposition multipliers, including the six-column layout. */
.column .drop .count small{font-size:clamp(20px,12cqw,30px);font-weight:900;line-height:1.25;letter-spacing:-.025em;color:#17396b;min-height:0;display:block;white-space:nowrap;margin:0}
.column .drop .count{gap:14px}
/* Four practice modes and a classroom-friendly number entry. */
nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}nav button{min-width:0;width:100%;font-size:clamp(14px,1.5vw,20px);padding:10px 4px;line-height:1.15}
.game.guess-mode .tray{display:grid;grid-template-columns:minmax(130px,.85fr) minmax(0,1.6fr);gap:14px;height:148px;min-height:138px;max-height:none;padding:12px}
.answer-area{display:flex;flex-direction:column;gap:7px;min-width:0;text-align:center}.answer-area label{font-size:clamp(14px,1.5vw,20px);font-weight:900}.answer-area input{width:100%;min-width:0;height:70px;border:3px solid #6cc7ff;border-radius:18px;background:#fff;color:#073a9b;font:900 clamp(28px,3vw,43px) ui-rounded,'Trebuchet MS',sans-serif;text-align:center;letter-spacing:.07em;box-shadow:inset 0 3px 6px #00539b16;outline-offset:3px}.answer-area input:focus{outline:3px solid #ffd321}
.number-keys{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(2,44px);gap:8px;align-content:center}.number-keys button{padding:3px;min-width:0;min-height:44px;border-radius:13px;font-size:25px;background:linear-gradient(#fff,#bce5ff)}.number-keys button[data-key=clear],.number-keys button[data-key=back]{background:linear-gradient(#fff4b1,#ffd63c)}.guess-mode #equation:empty{display:none}.guess-mode #question{font-size:clamp(19px,2vw,29px);min-height:54px}.static-piece{pointer-events:none}.column .drop .block-symbol{font-size:clamp(9px,calc(18cqw / var(--cols)),25px)}.drop:is([data-count='4'],[data-count='5'],[data-count='6'],[data-count='7'],[data-count='8'],[data-count='9']) .block-value{display:none}
@media(max-height:650px) and (orientation:landscape){nav button{font-size:13px;padding:6px 2px}.game.guess-mode .tray{height:122px;min-height:118px;padding:8px;gap:10px}.answer-area input{height:58px;font-size:30px}.answer-area label{font-size:14px}.number-keys{gap:6px;grid-template-rows:repeat(2,44px)}.number-keys button{font-size:22px}}
@media(orientation:portrait),(max-width:700px){nav{grid-template-columns:repeat(2,minmax(0,1fr))}nav button{font-size:16px;min-height:44px}.game.guess-mode .tray{display:grid;grid-template-columns:1fr;height:220px;min-height:220px}.answer-area{flex-direction:row;align-items:center}.answer-area label{flex:1}.answer-area input{flex:1;height:58px;min-width:0;font-size:30px}.number-keys{grid-template-rows:repeat(2,48px)}.game.guess-mode .play{min-height:660px}.game.guess-mode.wide-level .play{min-height:820px}}
