:root{--jade:#407f70;--ink:#593c26;--cream:#fff1d4;--honey:#dc9f54}*{box-sizing:border-box}body{margin:0;background:#213d35;font-family:'PingFang SC','Microsoft YaHei',sans-serif;color:var(--ink);overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;color:var(--ink);border:2px solid #d3ad78;border-radius:24px;background:linear-gradient(145deg,#fff9e9,#f7dfb6);box-shadow:inset 2px 3px 2px #fffc,0 5px 0 #b68850,0 9px 14px #492d2229;font-weight:650;touch-action:manipulation}button:hover{filter:brightness(1.04)}button:active{box-shadow:inset 1px 2px 5px #9b794b5c,0 2px 0 #b68850;transform:translateY(3px)}button:focus-visible{outline:5px solid #e6a238;outline-offset:5px}button:disabled{cursor:default;filter:saturate(.45);opacity:.6}button.jade{background:linear-gradient(135deg,#77b6a5,#3b8272);border-color:#397868;color:#fff7dd;box-shadow:inset 2px 3px 2px #d9fff18a,0 5px 0 #286454,0 9px 14px #492d2230}#frame{position:absolute;inset:0;display:grid;place-items:center}#stage{width:1600px;height:900px;position:relative;overflow:hidden;transform-origin:center center;flex-shrink:0;isolation:isolate;background:#ead3a6}.backdrop{position:absolute;inset:0;width:1600px;height:900px;object-fit:cover}#movie{display:none;pointer-events:none}#objects{position:absolute;inset:0;pointer-events:none}#objects>*{pointer-events:auto}#sceneUI,#math{position:absolute;inset:0;pointer-events:none}#sceneUI>*,#math>*{pointer-events:auto}.token,.core{position:absolute;border:0;padding:0;background:transparent;box-shadow:none;border-radius:12px;transition:left .55s ease,top .55s ease,transform .55s ease;overflow:hidden;touch-action:none}.token{width:72px;height:88px}.token.selected{outline:5px solid #d88628;outline-offset:2px}.token:not(:disabled):hover{filter:brightness(1.08)}.token:disabled{opacity:1;filter:none}.token:active{box-shadow:none}.sprite{display:block;width:100%;height:100%;overflow:hidden;pointer-events:none;position:relative;mix-blend-mode:multiply}.sprite img{position:absolute;max-width:none;pointer-events:none;user-select:none}.token .sprite img{width:1410px;left:-758px;top:-443px}.token.amber .sprite img{left:-842px}.core{width:33px;height:61px}.core .sprite img{width:903px;left:-603px;top:-286px}.woodBoard{position:absolute;left:225px;top:488px;width:470px;height:255px;border:5px solid #b88147;border-radius:32px;background:linear-gradient(135deg,#fff0cbf2,#e2b876f7);box-shadow:inset 3px 5px 5px #fffb,0 12px 24px #653b3e35}.sideMat{position:absolute;left:705px;top:488px;width:205px;height:306px;border-radius:30px;background:#fff0d5db;box-shadow:inset 2px 4px 6px #fff8,0 6px 20px #673a2523}.slot{position:absolute;width:82px;height:98px;border:2px solid #bb9658a3;border-radius:21px;background:linear-gradient(135deg,#ead1a6,#fff4d9);box-shadow:inset 2px 4px 6px #90612736}.slot.empty{border:3px dashed #739a78}.boardLabel{position:absolute;top:754px;left:247px;font-size:26px;color:#5c482c;max-width:450px;background:#fff2d3dd;border-radius:16px;padding:8px 18px}.sourceLabel{position:absolute;top:445px;left:242px;font-size:26px;background:#fff5dbee;border-radius:15px;padding:5px 18px}.sourceLabel.b{left:714px}.paper{position:absolute;left:947px;top:428px;width:603px;height:385px;background:linear-gradient(135deg,#fffaf0,#f8e7c9);border:4px solid #cfa366;border-radius:38px;box-shadow:inset 3px 4px 4px #fff,0 10px 28px #5d332b30}.paper h2{margin:16px 28px;font-size:24px;color:#806343}.mathSvg{position:absolute;left:0;top:0;width:603px;height:260px;pointer-events:none}.mathSvg path{fill:none;stroke:#b19a6d;stroke-width:4;stroke-linecap:round}.mathSvg path.active{stroke:#4d9a7f;stroke-width:6}.num{position:absolute;top:52px;font-size:45px;font-weight:800;text-align:center;width:75px}.field{position:absolute;width:72px;height:65px;font-size:39px;border-radius:18px;text-align:center;padding:0}.field.focus{outline:4px solid #eaa34e;outline-offset:2px}.field.wrong{border-color:#c8765e;background:#fbe0ce}.field.correct{border-color:#639f80;background:#e1efce}.field:disabled{opacity:1;filter:none}.diagramText{position:absolute;top:245px;left:28px;right:28px;margin:0;font-size:23px;line-height:1.5;color:#627855}.keypad{position:absolute;left:26px;bottom:18px;width:390px;display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.keypad button{height:47px;border-radius:14px;font-size:25px}.check{position:absolute;right:22px;bottom:18px;width:124px;height:101px;font-size:27px;border-radius:26px}.assist{position:absolute;left:225px;top:764px;width:290px;height:55px;font-size:24px}.issueTray{position:absolute;left:355px;top:522px;width:480px;height:212px;background:linear-gradient(145deg,#dca766,#f8d798);border:14px solid #c79762;border-radius:32px;box-shadow:inset 3px 5px 8px #91613655,0 14px 18px #4b281e44;transition:transform 2.4s ease}.packBand{position:absolute;width:250px;height:46px;border-radius:12px;background:linear-gradient(135deg,#c99355,#e8c182);border:2px solid #b4824c;text-align:center;font-size:25px;padding:4px;z-index:2}.materialLabel{position:absolute;left:347px;top:740px;width:530px;text-align:center;font-size:27px;background:#fff1d5;border-radius:22px;padding:12px;border:2px solid #c69d64}.cartCount{position:absolute;left:1170px;top:316px;border:3px solid #b38a52;background:#fff1d8ee;border-radius:19px;padding:12px 18px;font-size:22px;max-width:265px}.shelfCount{position:absolute;left:15px;top:235px;background:#fff1d8ee;border-radius:16px;padding:8px;font-size:20px;max-width:175px}#caption{position:absolute;left:232px;right:45px;bottom:18px;margin:0;min-height:60px;padding:10px 24px;font-size:27px;text-align:center;border-radius:24px;background:#fff7e7f5;border:2px solid #dbc49a;box-shadow:0 5px 16px #39271c22;z-index:8}#badge{position:absolute;left:22px;top:20px;border-radius:16px;background:#fff3dadd;padding:10px 16px;font-size:18px;max-width:520px;z-index:7}#teacher{position:absolute;left:15px;bottom:17px;width:187px;z-index:30}#toolToggle{width:187px;height:56px;font-size:23px}#toolPanel{position:absolute;bottom:76px;left:0;width:187px;padding:10px;background:#fff3dfed;border:2px solid #c4aa7a;border-radius:24px;box-shadow:0 10px 25px #543b2844}#toolPanel button{width:163px;height:43px;margin-bottom:9px;border-radius:14px;font-size:17px}#toolInfo{display:block;font-size:14px;line-height:1.4}#cover{position:absolute;inset:0;z-index:50}#cover>img{width:100%;height:100%}#start{position:absolute;left:34%;top:76%;width:32%;height:18%;border:0;background:transparent;box-shadow:none;color:transparent;border-radius:75px}#start:hover{box-shadow:0 0 0 6px #fff5,0 8px 25px #342b2330}#start:active{transform:scale(.98)}.reviewNote{position:absolute;left:18px;top:15px;padding:10px 15px;background:#fff4dbd9;font-size:18px;border-radius:17px}#resume{position:absolute;right:28px;bottom:23px;padding:13px 25px;font-size:21px}.small{font-size:20px}#paused{position:absolute;left:590px;top:30px;border-radius:26px;background:#fff3dae8;padding:20px 65px;font-size:34px;z-index:31;pointer-events:none}#modal{position:absolute;inset:0;background:#193c31a6;z-index:80;display:grid;place-items:center}#modal[hidden], [hidden]{display:none!important}.dialog{width:750px;padding:36px;background:#fff3df;border:5px solid #c39b65;border-radius:38px;box-shadow:inset 3px 4px 6px #fff,0 20px 80px #09261b66}.dialog h2{font-size:32px;margin-top:0}.dialog p{font-size:23px;line-height:1.7}.dialog button{padding:16px 23px;margin:12px;font-size:23px}.dialog input,.dialog select{font-size:29px;border:3px solid #c4ac80;background:#fffaf0;border-radius:16px;padding:14px;width:145px}.dialog select{width:225px}.dialog small{display:block;font-size:20px;line-height:1.5}.storyBox{position:absolute;left:300px;top:493px;width:1020px;background:#fff5e6f4;border-radius:35px;padding:30px 48px;box-shadow:inset 2px 4px 4px #fff,0 10px 30px #603c2933;border:3px solid #cfae79;font-size:32px;line-height:1.7}.storyBox h2{font-size:29px;color:#478572;margin:0 0 10px}.roadMap{position:absolute;left:236px;top:467px;width:1305px;height:337px;background:#fff3daf5;border:5px solid #b88b54;border-radius:38px;box-shadow:inset 2px 4px 3px #fff,0 9px 22px #39231e44}.roadMap h2{font-size:27px;margin:12px 24px}.roadRow{position:absolute;left:35px;width:1190px;height:64px;display:flex;align-items:center;gap:16px;font-size:23px}.roadRow .lamp{width:39px;height:51px;overflow:hidden;position:relative}.roadRow .lamp img{position:absolute;width:776px;left:-417px;top:-244px;mix-blend-mode:multiply}.roadRow .lamp.on{filter:drop-shadow(0 0 6px #f1ac2c)}.summaryBox{position:absolute;left:230px;top:460px;width:1320px;height:356px;background:#fff7e9f5;border-radius:34px;border:4px solid #caa779;padding:20px 32px;box-shadow:0 12px 25px #49312633}.summaryBox h2{margin:0 0 10px;font-size:31px;color:#3d816f}.summaryGrid{display:flex;gap:20px}.summaryItem{flex:1;font-size:27px;line-height:1.9}.summaryItem svg{width:280px;height:150px}.summaryItem svg text{font:26px sans-serif;fill:#5d412c}.summaryItem svg path{stroke:#609781;stroke-width:3;fill:none}.previewTag{position:absolute;right:26px;top:20px;font-size:18px;background:#fff1d7df;border-radius:14px;padding:10px 18px}.invisible{visibility:hidden}.liveCounter{position:absolute;left:360px;top:378px;background:#fff2ddf5;font-size:28px;padding:12px 30px;border-radius:22px}

#stage{position:absolute;left:50%;top:50%;transform-origin:center center}

/* 2026-09-22：先放大摆物，再收束到左侧后填分叉。两容器同高。 */
#countingGroup{position:absolute;inset:0;transform-origin:225px 488px;transition:none;pointer-events:none}#countUI{position:absolute;inset:0;pointer-events:none}#countUI>*{pointer-events:auto}#countingGroup.expanded{transform:translate(150px,-80px) scale(1.35)}.woodBoard,.sideMat{height:300px}.paper{animation:none}.keypad button{white-space:nowrap;font-size:23px}.summaryBox{top:608px;height:210px;padding:12px 27px}.summaryBox h2{font-size:25px;margin:0}.summaryItem{font-size:23px;line-height:1.7}.summaryItem svg{height:143px}.storyBox{top:638px;font-size:28px;padding:17px 35px}.storyBox h2{font-size:24px}@keyframes paperIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

.field[data-field="2"]{height:52px;font-size:34px}#materials{position:absolute;inset:0;pointer-events:none}.cartCount{left:1220px;top:173px}.sideMat{border:5px solid #b88147;border-radius:32px;background:linear-gradient(135deg,#fff0cbf2,#e2b876f7);box-shadow:inset 3px 5px 5px #fffb,0 12px 24px #653b3e35}

/* 分叉排版：顶行同基线；下方合十与余数相加；右侧独立键盘。 */
.mathSvg{height:385px}.num{top:66px;width:64px;height:64px;line-height:64px;font-size:43px}.field,.field[data-field="2"]{width:64px;height:64px;font-size:35px;line-height:60px}.sumEcho{position:absolute;width:48px;height:64px;line-height:64px;font-size:32px;font-weight:750;text-align:center}.keypad{left:405px;top:73px;bottom:auto;width:172px;grid-template-columns:repeat(3,1fr);gap:9px}.keypad button{height:48px;font-size:24px}.keypad button:nth-child(10),.keypad button:nth-child(12){font-size:19px}.check{left:405px;right:auto;top:307px;bottom:auto;width:172px;height:54px;font-size:25px;border-radius:19px}.diagramText{top:92px;left:411px;right:24px;font-size:23px;line-height:1.65}.paper:after{content:"";position:absolute;top:70px;bottom:22px;left:389px;width:2px;background:#d8c29b77;pointer-events:none}

/* 以完整舞台居中，教师抽屉作为浮层，不占课堂布局。 */
.paper{left:815px;width:705px}.keypad{left:445px;width:230px;gap:10px}.check{left:445px;width:230px}.paper:after{left:422px}.diagramText{left:447px;right:28px}#caption{left:230px;right:230px}.summaryBox{left:80px;width:1440px}.storyBox{left:200px;width:1200px}.roadMap{left:80px;width:1440px}

.practiceRecord{font-size:18px;line-height:1.5;margin-top:5px}

/* 总结为儿童远距观看：大图、大数，六张脸上方保留。 */
.summaryBox{top:470px;height:348px;padding:16px 30px}.summaryBox h2{font-size:40px;line-height:1.2;margin:0 0 10px}.summaryGrid{gap:26px;align-items:flex-start}.summaryItem{font-size:32px;line-height:1.65;min-width:0}.summaryItem svg{width:410px;height:220px;max-width:100%}.summaryItem svg text{font-size:30px}.practiceRecord{font-size:25px;line-height:1.6;margin-top:8px}.practiceDone{font-size:25px}.practiceEquations{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;white-space:nowrap}

.coreSteps{padding-left:8px}.coreStep{margin:0 0 10px;line-height:1.3}.coreStep strong{display:block;font-size:34px;color:#407f70}.coreStep span{display:block;font-size:27px;margin-top:3px;color:#593c26}

.coreStep{line-height:1.15;margin-bottom:8px}.coreStep strong{font-size:32px}

/* 互动返修：沿用已采用的面板，仅补总数提示、自动填写说明及教师浮层。 */
.totalLabel{position:absolute;width:125px;text-align:center;font-size:17px;color:#806343;pointer-events:none}
.inputHelp{position:absolute;left:445px;top:311px;width:230px;font-size:18px;line-height:1.5;text-align:center;white-space:nowrap;color:#407f70}
#toolPanel{width:550px;max-height:755px;overflow:auto;padding:18px}
.toolHeading{display:flex;align-items:center;justify-content:space-between;font-size:26px}
#toolPanel .toolHeading button{width:82px;margin:0}
#navigationMode{font-size:18px;line-height:1.5;margin:12px 0}
#toolPanel #returnLearning{width:100%;background:#dcefdc}
#lessonNavigation{max-height:390px;overflow:auto;overscroll-behavior:contain;padding:4px 5px 12px}
#lessonNavigation section{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
#lessonNavigation h3{grid-column:1/-1;font-size:20px;margin:4px 0}
#toolPanel #lessonNavigation button{width:100%;margin:0;font-size:18px;min-height:44px;height:auto;padding:9px}
#lessonNavigation [aria-current="step"]{background:#dcefdc;border-color:#407f70;outline:2px solid #407f70}
.toolUtilities{display:grid;grid-template-columns:1fr 1fr;gap:9px;border-top:1px solid #c4aa7a;padding-top:12px}
#toolPanel .toolUtilities button{width:100%;margin:0}
#toolInfo{margin-top:12px}

/* 原片内13个材料由媒体唯一绘制；准确标签叠在原空签上。 */
#caption:empty{display:none}.nativeLabel{position:absolute;left:282px;top:573px;width:98px;height:28px;line-height:28px;font-size:12px;color:#453425;text-align:center;background:#f4efe5;transform:rotate(-4deg);border-radius:2px}
.nativeTray{position:absolute;left:190px;top:550px;width:510px;height:190px;overflow:hidden;transform-origin:0 0;clip-path:polygon(0 36px,88px 27px,90px 16px,196px 7px,204px 29px,322px 8px,503px 63px,491px 134px,106px 181px,6px 124px)}.nativeTray>img{position:absolute;left:-190px;top:-550px;width:1600px;height:900px;max-width:none}.nativeTray .nativeLabel{left:92px;top:23px}

#movie.speakerInset,#speakerStill{position:absolute;inset:auto;left:480px;top:16px;width:640px;height:366px;object-fit:contain;border:3px solid #d3ad78;border-radius:26px;box-shadow:0 8px 20px #39271c44;pointer-events:none}

#stage[data-replay="true"] #countingGroup,#stage[data-replay="true"] #math,#stage[data-replay="true"] #materials,#stage[data-replay="true"] #sceneUI,#stage[data-replay="true"] #caption{visibility:hidden}

.repairAction{position:absolute;left:295px;right:295px;bottom:102px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 24px;border:3px solid #bc925c;border-radius:28px;background:#fff2dff0;box-shadow:0 12px 28px #39271c44;font-size:27px;z-index:10}.repairAction button{padding:15px 25px;font-size:26px;white-space:nowrap}

/* v005：原片 S00-C 的空桌由唯一程序计数图片层承接，原片与人物不改。 */
.openingDeskMat{position:absolute;left:200px;top:460px;width:920px;height:360px;border-radius:44px;border:5px solid #b98855;background:linear-gradient(145deg,#fff3d9ef,#eccb98ed);box-shadow:inset 4px 6px 9px #fffaf0,0 15px 30px #50351d55;pointer-events:none!important}
#stage[data-phase="opening"] .slot{pointer-events:none}

/* 课堂只显示孩子需要的信息；内部镜头、角色、任务标记留在记录里。 */
#badge,.previewTag,.reviewNote,.cartCount,.shelfCount{display:none!important}

/* 统一的大圆角、左上柔光与按下状态，维持封面图片入口热区。 */
button:not(#start):not(.token):not(.slot):not(.field){border-radius:26px;background:linear-gradient(145deg,#fff9e7 0%,#ffe8bf 56%,#edc889 100%);border:3px solid #c99d62;box-shadow:inset 3px 4px 5px #fffdf1,0 6px 0 #aa7945,0 12px 20px #53392336;transition:filter .15s,transform .15s,box-shadow .15s}
button.jade:not(#start){background:linear-gradient(145deg,#9ed3b8,#58a48b 58%,#347b68);border-color:#458b73;color:#fff9df;box-shadow:inset 3px 4px 5px #e6fff6c9,0 6px 0 #246652,0 12px 20px #244e3e55}
button:not(#start):not(.token):not(.slot):not(.field):active{transform:translateY(4px);box-shadow:inset 2px 4px 8px #8d633e77,0 2px 0 #aa7945,0 6px 12px #53392336}
button:not(#start):disabled{filter:saturate(.45);opacity:.62;box-shadow:inset 2px 3px 4px #fff8,0 3px 0 #a89c83}
#teacher{width:235px}#toolToggle{width:235px;height:72px;font-size:26px;border-radius:30px}#toolPanel{bottom:88px}#toolPanel button{min-height:54px;height:auto;padding:8px 12px;border-radius:22px;font-size:20px}#toolPanel #lessonNavigation button{min-height:57px;border-radius:20px}
.keypad button{border-radius:19px!important}
.field.correct{background:linear-gradient(145deg,#f5ffe9,#ccebbd);border-color:#639f80}.field.wrong{background:linear-gradient(145deg,#fff1e7,#f3c6b7);border-color:#c8765e}

/* v006：解码交接图仅在两段实际画面之间显示。 */
#handoff{pointer-events:none}

/* 分叉前先收好左侧实物板，再露出右侧公式，避免过渡时互相遮挡。 */
#stage[data-compact-ready="false"] #math{visibility:hidden}

/* v010：修灯按钮使用奶油底深棕字，避免通用按钮背景覆盖后出现浅底白字。 */
#sceneUI .repairAction button.jade{color:#4a301d;font-size:30px;font-weight:800;text-shadow:0 1px 0 #fff9;min-height:78px;line-height:1.35}
#sceneUI .repairAction button.jade:hover{color:#382110;filter:brightness(1.04)}
#sceneUI .repairAction button.jade:active{color:#382110;box-shadow:inset 2px 4px 7px #90643066,0 2px 0 #aa7945}
#sceneUI .repairAction button.jade:disabled{color:#594b39;opacity:1;filter:saturate(.3);cursor:default}
#sceneUI .repairAction{left:270px;right:270px;gap:18px}
#sceneUI .repairAction>span{flex:1;min-width:0;font-size:26px;line-height:1.45}

/* v012: exact local FangZheng rounded font, media-clock captions. */
@font-face{font-family:FZZhunYuan;src:url('assets/fonts/FZY3JW.TTF') format('truetype');font-weight:400;font-display:block}
#dialogueSubtitle{position:absolute;left:225px;right:125px;bottom:45px;margin:0;text-align:center;font:40px/1.45 FZZhunYuan,sans-serif;color:#fff8df;-webkit-text-stroke:1.5px #352a21;paint-order:stroke fill;text-shadow:0 2px 4px #000,2px 0 3px #000,-2px 0 3px #000;padding:8px 16px;pointer-events:none;z-index:8;background:linear-gradient(90deg,transparent,#241b1680 15%,#241b1680 85%,transparent);border-radius:20px}
.summaryBox h2{padding-right:300px}.extensionButton{position:absolute;right:30px;top:15px;font-size:30px;padding:12px 32px}.extensionButton:disabled{opacity:1;color:#5b503c;background:#e0d5b8}

#sceneUI .summaryBox button.extensionButton{color:#4a301d;font-weight:800;text-shadow:0 1px 0 #fff9}#sceneUI .summaryBox button.extensionButton:disabled{color:#594b39;opacity:1}

/* v013: teacher narration is heard, not subtitled. */
#caption:empty{visibility:hidden}

/* 填完后用原键盘位置展示本题算理，不改变分叉和实物几何。 */
.knowledgeNotes{position:absolute;left:445px;right:26px;top:24px;display:grid;gap:10px;pointer-events:none}
.knowledgeNotes h3{font-size:23px;line-height:30px;margin:0 0 2px;color:#407f70;font-weight:750}
.knowledgeStep{padding:9px 12px 10px;border:2px solid #dbc59a;border-radius:19px;background:linear-gradient(135deg,#fffdf4,#f6e8ca);box-shadow:inset 2px 3px 3px #fff9,0 3px 7px #73512a13}
.knowledgeLabel{display:block;font-size:20px;line-height:25px;color:#806343;font-weight:650}
.knowledgeFormula{display:block;font-size:28px;line-height:36px;white-space:nowrap;color:#4b6e55;font-variant-numeric:tabular-nums}
