:root{--ink:#273b36;--green:#365e50;--soft:#e9eee6;--paper:#f5f4ee;--line:#dce0d5;--muted:#6d7870;--gold:#b69156;--shadow:0 10px 32px #26362a09}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:16px}button,select{font:inherit;color:inherit}button{border:1px solid var(--line);background:#fffdf6;border-radius:8px;padding:10px 15px;cursor:pointer;transition:background .15s,box-shadow .15s}button:hover{background:#e7ede2}button:focus-visible,select:focus-visible{outline:3px solid #7f9c8c;outline-offset:2px}button.active{background:var(--green);color:white;border-color:var(--green)}button:disabled{opacity:.4;cursor:default}button[hidden],[hidden]{display:none!important}h1,h2,h3,p{margin:0}header{height:94px;padding:18px 32px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#faf9f3;gap:18px}.brand{display:flex;gap:12px;align-items:center}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border:1px solid #a3b29c;border-radius:50%;font-size:32px;color:#6f8768}.brand h1{font-family:Georgia,"Microsoft YaHei",serif;font-size:25px;letter-spacing:4px;font-weight:600}.brand p{font-size:12px;letter-spacing:2px;color:var(--muted);margin-top:5px}.seg{display:flex;padding:4px;background:#e9ece3;border:1px solid #dfe4d8;border-radius:11px;gap:3px}.seg button{border:0;background:transparent;padding:9px 20px;border-radius:7px;white-space:nowrap}.seg button.active{background:var(--green);box-shadow:0 2px 5px #273b3615;color:white}.seg.small button{padding:8px 15px}.header-right{display:flex;align-items:center;gap:18px}.icon{border-radius:50%;width:34px;height:34px;padding:0;font-family:Georgia,serif;font-weight:bold}main{display:grid;grid-template-columns:minmax(0,1fr) 342px;height:calc(100dvh - 131px);min-height:590px}.workspace{position:relative;min-width:0;background:radial-gradient(ellipse at 45% 44%,#fdfcf5 0,#efefe5 56%,#e5e8dd 100%);overflow:hidden}.scene-heading{position:absolute;z-index:2;top:25px;left:32px;right:26px;display:flex;justify-content:space-between;pointer-events:none;gap:16px}.eyebrow{font-family:Arial,"Microsoft YaHei",sans-serif;font-size:11px;letter-spacing:2px;color:#879080;font-weight:600;margin-bottom:10px}.scene-heading h2{font-size:27px;font-weight:500;letter-spacing:1px}.scene-heading p:not(.eyebrow){font-size:14px;color:var(--muted);margin-top:8px}.badge{align-self:flex-start;border:1px solid #cbd3c3;color:#5b745f;background:#f6f7eecc;font-size:12px;padding:7px 10px;border-radius:20px;white-space:nowrap}.specimen-bar{position:absolute;z-index:3;top:132px;left:32px;display:flex;align-items:center;gap:8px;font-size:14px}.specimen-bar label{background:#f9faf2d9;border:1px solid var(--line);border-radius:8px;padding:0 10px;color:var(--muted)}select{border:0;background:transparent;padding:10px 6px;max-width:100%;outline-offset:0}.specimen-bar button{padding:10px 12px;background:#fafbf6d9}.specimen-bar button.active{background:var(--green)}#stage{position:absolute;inset:167px 0 92px}#stage canvas{display:block;width:100%;height:100%;touch-action:none}#loading{position:absolute;inset:40%;white-space:nowrap;color:var(--muted)}#labels{position:absolute;inset:0;pointer-events:none}.model-label{position:absolute;font-size:13px;color:#415348;background:#fcfcf0e6;border:1px solid #cbd7c1;padding:5px 9px;border-radius:5px;white-space:nowrap;transform:translate(-50%,-100%);box-shadow:var(--shadow)}#cellCaptions{position:absolute;bottom:4px;left:0;right:0;display:flex;justify-content:space-around;pointer-events:none}.cell-caption{padding:6px 14px;border-radius:20px;background:#fafbf2cc;font-size:13px;color:#63775f}.selection-tag{position:absolute;right:20px;bottom:100px;display:flex;align-items:center;gap:8px;font-size:13px;border-radius:20px;background:#fffef7d9;padding:8px 15px;box-shadow:var(--shadow)}.dot{background:var(--gold);border-radius:50%;width:7px;height:7px}.view-tools{position:absolute;bottom:34px;left:0;right:0;display:flex;gap:6px;align-items:center;justify-content:center}.view-tools>button{padding:10px 12px;background:#fffef7d9}.view-tools .seg button{padding:8px 12px;font-size:14px}.canvas-hint{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:12px;color:#7b8878;letter-spacing:1px}aside{background:#fbfaf5;border-left:1px solid var(--line);overflow-y:auto;scrollbar-width:thin;padding:0 23px}aside>section{padding:24px 0;border-bottom:1px solid var(--line)}aside h2{font-size:22px;line-height:1.6;font-weight:600}aside h3{font-size:16px;font-weight:600}aside p{line-height:1.8;font-size:15px;margin-top:10px}aside .eyebrow{margin-top:0;font-size:10px;line-height:1.3}aside .muted{color:var(--muted);font-size:13px;line-height:1.7}.mini{font-size:12px!important}.row{display:flex;gap:6px;margin-top:16px}.row button{font-size:14px;padding:8px 11px;flex:1;white-space:nowrap}.wide{width:100%;margin-top:12px;font-size:14px;background:#e7ecdf}.section-heading{display:flex;align-items:center;justify-content:space-between}.text-button{border:0;background:none;font-size:12px;padding:0;color:#65815c}#partList{display:grid;gap:4px;margin-top:13px}.part-row{display:flex;align-items:center;border:1px solid transparent;border-radius:8px}.part-row.selected{background:#e7eee2;border-color:#bccdb0}.part-row.dim{opacity:.45}.part-select{flex:1;display:flex;align-items:center;gap:10px;background:none;border:0;text-align:left;font-size:14px;padding:9px}.part-select:hover{background:#e7ede2}.part-select .swatch{width:12px;height:12px;border-radius:4px;box-shadow:inset 0 0 0 1px #0001}.part-row.sub{margin-left:16px}.visibility{border:0;background:transparent;font-size:16px;color:#8c9985;padding:5px 9px}.part-status{font-size:10px;margin-left:auto;color:#7a8872}.lesson-label{font-size:12px;color:#72806b;display:block}.lesson-label select{display:block;width:100%;border:1px solid #cfd8c6;border-radius:7px;background:#eef1e6;margin:7px 0 15px;font-size:14px}.progress{display:flex;gap:5px;margin:16px 0 8px}.progress span{height:4px;flex:1;background:#dfe5d8;border-radius:8px}.progress span.done{background:#6b8c5e}.instruction{font-size:13px!important;color:#627256}#feedback{font-size:14px;line-height:1.7;padding:12px;background:#ecefe4;border-left:3px solid #92a780;border-radius:0 6px 6px 0;margin-top:14px}#feedback.wrong{background:#f4eadc;border-color:#c69b63}#answer{padding:12px;background:#f1eee1;border-radius:8px;font-size:14px}#lessonActions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}#lessonActions button{font-size:13px;padding:8px}#comparisonContent{font-size:13px;line-height:1.8;padding-top:10px}footer{height:37px;background:#f9f8f1;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;font-size:11px;letter-spacing:.5px;color:#7b8777}footer i{display:inline-block;width:6px;height:6px;background:#8a9d76;border-radius:50%;margin-right:6px}dialog{max-width:620px;width:calc(100% - 32px);padding:35px;border:1px solid #d3dacb;background:#fbfaf2;border-radius:18px;color:var(--ink);box-shadow:0 24px 90px #15291533}dialog::backdrop{background:#24392f66;backdrop-filter:blur(5px)}dialog p{font-size:15px;line-height:1.85;margin:14px 0}dialog h2{font-size:25px}dialog .close{float:right;padding:0;border:0;background:none;font-size:28px}dialog #understood{background:var(--green);color:white;margin-top:8px}.focus-mode .scene-heading h2{font-size:24px}@media(min-width:1700px){main{grid-template-columns:minmax(0,1fr) 382px}aside{padding:0 28px}aside h2{font-size:25px}aside p{font-size:17px}.part-select{font-size:16px;padding:10px}.scene-heading h2{font-size:32px}.scene-heading p:not(.eyebrow){font-size:16px}.view-tools .seg button{font-size:16px}}
@media(max-width:1000px){header{padding:14px 20px;height:85px}.brand p{font-size:10px;letter-spacing:0}.brand h1{font-size:22px}.brand-mark{display:none}.header-right{gap:7px}.seg button{padding:9px 12px}main{height:calc(100dvh - 121px);grid-template-columns:minmax(0,1fr) 290px}aside{padding:0 17px}.scene-heading{left:22px}.scene-heading h2{font-size:23px}.specimen-bar{left:22px;gap:5px;flex-wrap:wrap;top:136px}.badge{display:none}.view-tools{flex-wrap:wrap;bottom:33px;gap:5px}.view-tools .seg{flex-basis:80%;justify-content:center}.view-tools>button{padding:7px 12px}#stage{inset:195px 0 124px}.selection-tag{bottom:132px}.scene-heading p:not(.eyebrow){font-size:12px}footer{padding:0 14px}footer span:last-child{display:none}}
@media(max-width:700px){header{height:auto;min-height:112px;flex-wrap:wrap;padding:14px 16px;gap:10px}.brand{flex:1}.brand h1{font-size:22px}.brand p{font-size:10px}.header-right{order:1}header>nav{order:2;flex-basis:100%;justify-content:center}header>nav button{flex:1}.seg.small button{padding:6px 11px}.icon{width:30px;height:30px}main{height:auto;display:flex;flex-direction:column;min-height:0}.workspace{height:665px;min-height:570px}.scene-heading{top:23px;left:20px;right:16px}.scene-heading h2{font-size:24px}.scene-heading p:not(.eyebrow){font-size:12px}.specimen-bar{top:125px;left:16px;right:10px;font-size:12px}.specimen-bar button{font-size:12px;padding:10px}.specimen-bar select{max-width:180px;font-size:12px}.specimen-bar label{padding:0 7px}#stage{inset:175px 0 127px}.view-tools .seg{flex-basis:auto}.view-tools .seg button{font-size:13px}.view-tools{padding:0 20px;bottom:34px}.view-tools>button{font-size:13px}.selection-tag{bottom:136px}.cell-caption{font-size:11px;padding:5px 9px}aside{border:0;border-top:1px solid var(--line);overflow:visible;padding:0 22px}aside>section{padding:22px 0}#partList{grid-template-columns:1fr 1fr;column-gap:5px}.part-row.sub{margin-left:0}.part-select{font-size:13px;gap:7px;padding:9px 5px}.part-status{display:none}.visibility{padding:5px}.part-row.selected{border-color:#bccdb0}footer{height:auto;min-height:44px;gap:8px;flex-wrap:wrap;padding:10px 17px;font-size:10px}.workspace.compare-mode{height:590px}.compare-mode #stage{inset:180px 0 122px}#teaching{order:0}dialog{padding:24px}dialog p{font-size:14px}}
@media(min-width:1001px) and (max-height:820px){.specimen-bar{top:32px;left:auto;right:24px}.scene-heading .badge{display:none}#stage{inset:112px 0 79px}.scene-heading p:not(.eyebrow){font-size:13px}}
