/*! BIO-ORIGIN project=locomotion-system-lab; version=1.3.1-web.4; source=e4240b9762d078cb; official=https://bio2077.cn/; third-party licenses unchanged */
:root{--bg:#f3f1e9;--ink:#283c37;--muted:#61716c;--teal:#22695f;--line:#d5ddd2;--white:#fffdf7;--rust:#a54e43}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:'Microsoft YaHei','PingFang SC',sans-serif;background:var(--bg);color:var(--ink)}body{height:100dvh;display:flex;flex-direction:column;font-size:18px}button,input,select{font:inherit}button{min-height:44px;min-width:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);color:var(--ink);padding:7px 13px;cursor:pointer;white-space:nowrap}button:hover{background:#e5ece1;border-color:#9bb9ab}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #daa952;outline-offset:3px}button.active,button.primary{background:var(--teal);color:white;border-color:var(--teal)}button[aria-pressed=true]:not(.active){border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}button:disabled{opacity:.5;cursor:default}a{color:var(--teal)}.masthead{flex:none;display:flex;align-items:center;justify-content:space-between;padding:12px 24px;border-bottom:1px solid var(--line);gap:12px}.brand{text-decoration:none;font-weight:bold;font-size:22px}.brand span{font-size:18px;font-weight:normal;color:var(--muted)}.top-actions{display:flex;gap:8px}.tabs{flex:none;display:flex;gap:9px;padding:10px 24px 12px}.tabs button{flex:1;text-align:left;max-width:430px}.tabs span{font-family:Georgia,serif;margin-right:10px;opacity:.65}.workspace{min-height:0;flex:1;display:grid;grid-template-columns:clamp(330px,24vw,465px) 1fr;gap:20px;padding:0 24px 14px}.lesson-panel{min-height:0;padding:14px 16px;background:#e9ede2;border:1px solid #d6decf;border-radius:14px}.eyebrow{font-size:18px;color:var(--muted)}h1{font-size:30px;line-height:1.25;margin:8px 0 10px;letter-spacing:-.8px}h2{font-size:21px;margin:4px 0 7px}.intro{font-size:20px;line-height:1.5;margin:0 0 15px}.control-block{margin:11px 0}.control-label{display:flex;justify-content:space-between;align-items:center;font-weight:bold;margin-bottom:7px;gap:8px}.control-label output{font-size:24px;color:var(--teal)}input[type=range]{width:100%;min-height:44px;accent-color:var(--teal);margin:0}.row{display:flex;gap:7px;flex-wrap:wrap}.row button{flex:1;padding:6px 10px}.switch-row{display:flex;align-items:center;gap:10px;min-height:44px;line-height:1.35}.switch-row input{width:24px;height:24px;accent-color:var(--teal)}.muscle-state{display:grid;grid-template-columns:1fr 1fr;gap:8px}.muscle-state div{background:var(--white);border-radius:10px;padding:9px 10px}.muscle-state strong{display:block;font-size:20px;margin:4px 0;color:var(--rust)}.muscle-state small{font-size:18px;color:var(--muted)}.selection-card{border-top:1px solid #cbd7c7;margin-top:14px;padding-top:12px}.selection-card p{font-size:18px;line-height:1.55;margin:0}.structure-buttons{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}.structure-buttons button{padding:5px 10px}.stage{min-height:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:16px;background:#faf8f0;overflow:hidden}.stage-head{height:52px;flex:none;display:flex;align-items:center;gap:8px;padding:4px 14px;border-bottom:1px solid #e1e5da}.stage-head>span{flex:1;color:var(--muted)}.stage-head button{background:transparent;min-height:44px;padding:4px 10px}.canvas-wrap{position:relative;flex:1;min-height:0;background:radial-gradient(ellipse at 48% 38%,#fffefa 0%,#f2efe3 64%,#e3e8dc 100%)}#model{display:block;width:100%;height:100%;touch-action:none}.model-note{position:absolute;left:18px;bottom:14px;font-size:18px;color:#697669;pointer-events:none}.camera-tools{position:absolute;right:12px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:7px}.camera-tools button{width:46px;padding:0;font-size:24px;box-shadow:0 2px 6px #223a3610}.action-dock{min-height:72px;flex:none;display:flex;align-items:center;justify-content:center;gap:9px;padding:10px;background:#eef0e6;border-top:1px solid var(--line)}.action-dock button{min-width:86px}.explanation{flex:none;padding:9px 24px 13px;background:#fffdf5;border-top:1px solid var(--line);min-height:98px}.chain{display:flex;align-items:center;gap:16px;font-size:22px}.chain b{color:#9bada0;font-weight:normal}.chain span{border-radius:7px;padding:3px 8px}.chain .current{background:#d6e9dd;color:#145b4c;font-weight:bold}.explanation p{font-size:22px;margin:7px 8px 0;line-height:1.35}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#f7f5eb;color:var(--teal)}.loading[hidden]{display:none}.tag{position:absolute;transform:translate(-50%,-50%);font-size:18px;font-weight:bold;padding:5px 8px;border:1px solid #becdbd;border-radius:7px;background:#fffff3ee;pointer-events:none;white-space:nowrap;box-shadow:0 2px 6px #2222}.tag.anchor{color:#126d5a;font-size:18px;background:#f4fff0f2;border-color:#64a58f}.tag.choice{font-size:24px;background:#fffff8}.tag.selected{border-color:#12866f;color:#156751;background:#e8fae8}dialog{width:min(850px,94vw);max-height:88dvh;border:1px solid #aebeb0;border-radius:18px;padding:22px;color:var(--ink);background:var(--white);font-size:18px;line-height:1.65}dialog::backdrop{background:#182c2866}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{font-size:25px}.cover{width:220px;float:right;margin:10px 0 14px 20px;border-radius:12px}.question{padding:10px;background:#fffdf7;border-radius:10px}.question p{margin:4px 0 9px}.question-feedback{color:var(--teal);min-height:26px;margin:8px 0;font-size:18px}.error-banner{position:fixed;bottom:10px;left:10px;right:10px;background:#fff3ec;border:2px solid #b95f44;padding:16px;border-radius:10px;z-index:90}.error-banner[hidden]{display:none}.help{font-size:18px;color:var(--muted);line-height:1.4;margin:8px 0}.experiment-numbers{display:flex;gap:12px;margin:8px 0}.experiment-numbers div{background:var(--white);padding:8px 12px;border-radius:10px;flex:1}.experiment-numbers strong{display:block;color:var(--teal);font-size:26px}.btn-small{font-size:18px}body.focus .workspace,body.immersive .workspace{grid-template-columns:1fr}body.focus .lesson-panel,body.immersive .lesson-panel{display:none}body.focus .explanation{display:none}body.focus .stage-head{display:none}body.focus .workspace{padding:0 14px 14px}body.immersive .masthead,body.immersive .tabs,body.immersive .explanation,body.immersive .stage-head{display:none}body.immersive .workspace{padding:0;gap:0}body.immersive .stage{border:0;border-radius:0}body.immersive .action-dock{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:15;border:1px solid #c7d5c4;border-radius:15px;box-shadow:0 7px 25px #23463122;max-width:95vw}body.immersive .model-note{bottom:92px}body.immersive .canvas-wrap{min-height:100%}body.immersive #exit-mode{display:block}body.focus #exit-mode{display:block}body.immersive #labels-layer .tag{font-size:22px}body.focus #canvas-wrap{min-height:0}
.chain[hidden]{display:none}.selection-card{display:none}.stage>.structure-buttons{margin:0;padding:6px 12px;flex:none;border-bottom:1px solid #dbe1d4;background:#f5f6ed;gap:6px}.stage>.structure-buttons button{min-height:44px}.focus .stage>.structure-buttons,.immersive .stage>.structure-buttons{display:none}.explanation p{max-width:100%;overflow-wrap:anywhere}
@media(max-height:820px) and (min-width:1000px){.masthead{padding:8px 20px}.tabs{padding:8px 20px}.workspace{padding:0 20px 10px;gap:14px}.lesson-panel{padding:10px 13px}.intro{margin-bottom:8px}.control-block{margin:6px 0}.selection-card{margin-top:10px;padding-top:9px}h1{font-size:27px}.selection-card p{line-height:1.38}.muscle-state div{padding:6px 8px}.explanation{min-height:92px;padding:7px 20px 9px}.stage-head{height:48px}.action-dock{min-height:66px;padding:8px}.chain{gap:9px}.control-label{margin-bottom:0}.help{margin:6px 0}.lesson-panel .question-feedback{display:none}.lesson-panel:has(#contraction) .help{display:none}.experiment-numbers{margin:5px 0}.experiment-numbers div{padding:5px 9px}.lesson-panel:has(#contraction) .intro{margin-bottom:6px}}
@media(max-width:999px){body{height:auto;min-height:100dvh}.masthead{padding:9px 12px;flex-wrap:wrap}.brand{font-size:20px}.top-actions{gap:6px}.top-actions button{padding:5px 9px}.tabs{padding:10px 12px;display:grid;grid-template-columns:1fr 1fr;gap:7px}.tabs button{font-size:18px;padding:7px}.tabs span{margin-right:5px}.workspace{display:flex;flex-direction:column-reverse;padding:0 12px 12px;gap:12px;flex:none}.stage{height:520px}.lesson-panel{padding:15px}.stage-head{font-size:18px;padding:4px 8px}.stage-head>span{font-size:18px}.stage-head button{padding:4px 7px}.action-dock{flex-wrap:wrap;gap:6px;min-height:112px}.action-dock button{min-width:70px;padding:7px 9px}.model-note{font-size:18px;left:10px;bottom:10px;max-width:75%}.explanation{padding:12px;order:0}.chain{font-size:18px;gap:4px;flex-wrap:wrap}.chain span{padding:3px 5px}.explanation p{font-size:22px}.cover{width:100%;float:none;margin:10px 0}.camera-tools{right:8px}.camera-tools button{width:44px;height:44px}.tag{font-size:18px;padding:3px 6px}body.focus,body.immersive{height:100dvh;min-height:0}body.focus .workspace,body.immersive .workspace{flex:1;min-height:0;flex-direction:column}body.focus .stage,body.immersive .stage{height:100%;flex:1}body.focus .tabs{display:none}body.immersive .action-dock{min-width:90vw;min-height:100px}body.immersive .model-note{bottom:125px}}
@media(max-width:450px){.brand span{display:none}.top-actions button{font-size:18px}.masthead{gap:7px}.tabs button{white-space:normal;min-width:0;line-height:1.35}.stage-head>span{max-width:95px;line-height:1.2}.stage{height:490px}.explanation p{margin-left:0}.tag.anchor{font-size:18px}}

/* Dark classroom canvas. Gold marks tendons and their bony attachment sites. */
:root{color-scheme:dark;--bg:#101c25;--ink:#edf3f3;--muted:#b7c9ce;--teal:#6cd3ba;--line:#354b58;--white:#20333e;--rust:#ffa68e;--gold:#ffd16b}
button:hover{background:#2c4552;border-color:#779ba5}
button.active,button.primary{background:#267a69;border-color:#38947f;color:#fff}
.masthead{background:#14242e}.lesson-panel{background:#1a2c36;border-color:var(--line)}
.stage{background:#152630}.stage-head{background:#192c36;border-color:var(--line)}
.canvas-wrap{background:radial-gradient(ellipse at 48% 38%,#2b424d 0%,#162832 65%,#101d26 100%)}
.stage>.structure-buttons{background:#182b35;border-color:var(--line)}
.action-dock,.explanation{background:#162731}.chain b{color:#90a7b0}
.chain .current{background:#2b564c;color:#d8fff2}.selection-card{border-color:var(--line)}
.model-note{color:#cfdee1;padding:5px 8px;background:#14242ed9;border-radius:6px;max-width:calc(100% - 88px)}
.camera-tools button{background:#223844e8;box-shadow:0 3px 12px #0004}
.tag{width:max-content;color:#eaf1f2;background:#1c313def;border-color:#597582;box-shadow:0 3px 10px #0005}
.tag.selected{color:#b6ffe5;background:#194a40ee;border-color:#71d8b5}
.tag.anchor{color:#ffda88;background:#342d1bf2;border-color:#dfb758}
.tag.anchor.wrong{color:#ffb7a4;background:#402721ef;border-color:#ff8568}
.tag.choice{background:#213641ef;color:#eff7f7}.loading{background:#14242e}
.question{background:#213742}.error-banner{background:#432c27;color:#ffdbcd}
dialog{border-color:#577281}dialog::backdrop{background:#020a10b3}
body.immersive .action-dock{border-color:var(--line);box-shadow:0 7px 25px #0006}
#tendon-color{color:var(--gold);border-color:#a88949;background:#302b1b}
#tendon-color[aria-pressed=false]{color:var(--ink);border-color:var(--line);background:transparent;box-shadow:none}
#tendon-color[hidden]{display:none}
#attachment-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}
#attachment-lines line{stroke:#ffcf64;stroke-width:1.6;opacity:.95;filter:drop-shadow(0 1px 2px #000)}
#attachment-lines line.wrong{stroke:#ff8568}
@media(max-width:999px){.stage-head{height:auto;min-height:96px;flex-wrap:wrap;align-content:center;justify-content:flex-end;gap:6px;padding:6px 8px}.stage-head>span{flex-basis:100%;max-width:none}.stage{height:660px}.model-note{max-width:calc(100% - 72px);line-height:1.3}.tag.anchor{white-space:normal;max-width:220px;text-align:center}}
@media(max-width:450px){.stage{height:700px}.stage-head>span{max-width:none}.stage-head button{flex:1;min-width:0;font-size:18px;padding:4px}.tag.anchor{max-width:190px}}

/* One adjacent result, shared by all classroom layouts. */
.workspace{grid-template-columns:clamp(330px,24vw,465px) minmax(0,1fr)}.stage,.lesson-panel{min-width:0}
.feedback-panel{flex:none;padding:10px 18px;border-top:1px solid var(--line);border-left:4px solid #63cdb4;background:#182d37;min-height:86px}
.feedback-panel h2{font-size:22px;line-height:1.3;margin:0 0 4px;color:#b8f5e2}
.feedback-panel p{font-size:18px;line-height:1.4;margin:0;color:#dce8eb}
.feedback-panel[data-kind=blocked]{border-left-color:#ff8c71;background:#3a2727}
.feedback-panel[data-kind=blocked] h2{color:#ffc2aa}
.feedback-panel[data-kind=success]{border-left-color:#87dcc0}
.motion-legend{display:flex;gap:9px;flex-wrap:wrap;margin-top:6px}.motion-legend[hidden]{display:none}
.muscle-chip{border-radius:6px;padding:3px 8px;font-size:18px;background:#283940;color:#c7bdba}
.muscle-chip.contracting{color:#ffbe9f;background:#58382c;border:1px solid #b77350}.muscle-chip.relaxing{border:1px solid #72635e}
.feedback-panel .chain{font-size:18px;gap:5px;margin-top:7px}.feedback-panel .chain span{padding:2px 4px}
.model-note{display:none}.stage-head{background:transparent}.stage>.structure-buttons{background:transparent}
.stage>.structure-buttons button:not(.active){background:transparent;border-color:#3e5965}
.stage-head #stage-title{font-size:18px}.action-dock button.primary:not([aria-pressed=true]){background:var(--white);border-color:var(--line);color:var(--ink)}
.action-dock #flex[aria-pressed=true],.action-dock #extend[aria-pressed=true]{border-color:#e79267;background:#573b2b;color:#ffd4b7;box-shadow:inset 0 0 0 1px #e79267}
.capsule-options button[aria-pressed=true]{background:#286e66;color:#fff}
body.immersive .feedback-panel{position:absolute;left:18px;top:16px;max-width:min(570px,calc(100% - 95px));z-index:14;border:1px solid var(--line);border-left:4px solid #63cdb4;border-radius:12px;background:#182d37eb}
body.immersive .feedback-panel[data-kind=blocked]{border-left-color:#ff8c71;background:#3a2727f2}
@media(max-height:820px) and (min-width:1000px){.feedback-panel{padding:7px 13px;min-height:79px}.feedback-panel p{line-height:1.32}.motion-legend{margin-top:4px}.stage>.structure-buttons{padding:4px 12px}.lesson-panel:has(#joint-angle) .intro{margin-bottom:12px}}
@media(max-width:999px){.stage{height:760px}.feedback-panel{padding:10px 12px}.feedback-panel p{line-height:1.35}.motion-legend{gap:5px}.muscle-chip{padding:3px 6px}.stage-head #stage-title{display:none}.stage-head{min-height:52px;height:auto;flex-wrap:nowrap}.stage-head button{flex:1;min-width:0}.workspace{flex-direction:column-reverse}.feedback-panel h2{font-size:22px}body.immersive .feedback-panel{left:8px;top:8px;max-width:calc(100% - 68px)}}
@media(max-width:999px){.lesson-panel>.feedback-panel{margin:10px 0 14px;border-radius:8px}.lesson-panel>.feedback-panel h2{font-size:22px}.lesson-panel>.feedback-panel p{font-size:18px}}

/* Text remains within controls at enlarged classroom font sizes. */
.tabs button,.row>button,.capsule-options button{white-space:normal;overflow-wrap:anywhere;min-width:0}
