:root{--paper:#f3f5f4;--surface:#fff;--ink:#243d37;--muted:#62726e;--line:#d8e0dc;--blue:#315eaa;--green:#346c56;--clay:#b7644c;--focus:#174fc4;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-size:16px;line-height:1.6;font-synthesis:none}
*{box-sizing:border-box;letter-spacing:0}body{margin:0}button,a,input{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}a{color:inherit}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:4px}button{border:0;background:none}button svg{width:20px;height:20px;stroke-width:1.7;flex:none}h1,h2,h3,p{margin:0}.lab-header{height:74px;padding:0 36px;display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--line)}.brand{text-decoration:none;font-family:Georgia,"Songti SC",serif;font-size:22px;font-weight:600;white-space:nowrap}.brand span{font-size:11px;margin-left:10px;font-weight:400}.lab-header nav{display:flex;gap:24px;margin-left:auto;align-self:stretch}.lab-header nav a{display:flex;align-items:center;text-decoration:none;font-size:14px;border-bottom:2px solid transparent;padding:0 3px}.lab-header nav a[aria-current=page]{border-bottom-color:var(--green)}.icon-button{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;flex:none;background:#ffffff80}.icon-button:hover{background:#fff;border-color:#8ca69a}.lab-layout{display:grid;grid-template-columns:minmax(0,1fr) 302px;gap:28px;padding:32px 36px 24px;max-width:1600px;margin:auto}.experiment{min-width:0}.experiment-heading{display:flex;justify-content:space-between;gap:16px}.eyebrow{font-size:12px;color:var(--muted);margin-bottom:7px}h1{font-size:28px;line-height:1.45;font-family:"Songti SC","STSong",serif;font-weight:600}.lede{font-size:14px;color:var(--muted);margin-top:8px;max-width:45em}.experiment-heading .icon-button{margin-top:22px}.world-stage{position:relative;height:min(50vh,460px);min-height:300px;isolation:isolate;margin-top:8px}.world-stage canvas{width:100%;height:100%;display:block;touch-action:none;outline-offset:-3px}.object-labels{position:absolute;inset:0;pointer-events:none}.sample-pin{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border:1px solid #96a8a0;border-radius:50%;background:#fffffff0;font-size:14px;font-weight:650;pointer-events:auto;box-shadow:0 3px 12px #2c423416}.sample-pin[aria-pressed=true]{color:#fff;background:var(--green);border-color:var(--green)}.stage-caption{position:absolute;bottom:0;left:0;font-size:12px;color:var(--muted);pointer-events:none}#loading{position:absolute;inset:0;display:grid;place-items:center;background:var(--paper);z-index:3}#loading[hidden]{display:none}.sample-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:12px}.sample-tabs button{min-width:0;min-height:68px;padding:11px 12px;text-align:left;border-bottom:3px solid transparent;display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-content:center}.sample-tabs .sample-number{font-size:11px;color:var(--muted);grid-row:span 2;align-self:center}.sample-tabs strong{font-size:14px;font-weight:600;line-height:1.5}.sample-tabs .sample-status{font-size:11px;color:var(--muted);line-height:1.7}.sample-tabs button[aria-pressed=true]{border-bottom-color:var(--green);background:#e8eeea}.observation{padding-top:17px}.observation>div{display:flex;gap:14px;align-items:baseline}.observation strong{font-size:16px;font-weight:600}.observation>div>span{color:var(--blue);font-size:12px;white-space:nowrap}.observation>p{font-size:14px;color:var(--muted);margin-top:4px;max-width:52em}.experiment-controls{padding:8px 0 0 25px;border-left:1px solid var(--line)}.control-heading{margin-bottom:16px}.control-heading h2{font-size:22px;font-weight:600}.control-heading .eyebrow{margin-bottom:2px}fieldset{border:0;margin:0;padding:0;min-width:0}#conditions{display:grid;gap:0}.condition-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:60px;border-bottom:1px solid var(--line)}.condition-row>span{font-size:14px}.condition-value{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted)}.switch{position:relative;display:flex;width:48px;height:44px;align-items:center;flex:none;cursor:pointer}.switch input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:inherit}.switch-track{width:42px;height:24px;border-radius:20px;background:#a6b2ad;pointer-events:none;transition:background .15s}.switch-track:after{content:"";position:absolute;top:13px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0002;transition:transform .15s}.switch input:checked+.switch-track{background:var(--green)}.switch input:checked+.switch-track:after{transform:translateX(18px)}.switch input:focus-visible+.switch-track{outline:3px solid var(--focus);outline-offset:3px}.switch input:disabled{cursor:default}.condition-row:has(input:disabled){opacity:.7}.condition-note{color:var(--muted);font-size:12px;min-height:40px;margin-top:10px}.prediction{margin-top:12px}.prediction legend{font-size:14px;margin-bottom:8px}.prediction-options{display:grid;gap:4px}.prediction label{display:flex;align-items:center;gap:9px;min-height:44px;font-size:14px}.prediction input{accent-color:var(--green);width:18px;height:18px;flex:none}.run-controls{display:grid;grid-template-columns:1fr 44px;gap:8px;margin-top:18px}.primary-button{min-height:48px;padding:12px 18px;background:var(--green);color:#fff;border-radius:6px;display:flex;justify-content:center;align-items:center;gap:10px;grid-column:1/-1;font-size:15px;font-weight:600}.primary-button:hover{background:#27543f}.primary-button:disabled{background:#8d9f94}.text-button{display:inline-flex;gap:7px;align-items:center;justify-content:flex-start;min-height:44px;padding:7px 0;font-size:13px;text-align:left}.text-button:hover{text-decoration:underline}.run-note{font-size:12px;color:var(--muted);margin-top:9px;min-height:34px}.result{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.result h3{font-size:15px}.result p{font-size:14px;margin-top:8px}.model-boundary{font-size:12px;color:var(--muted);border-top:1px solid var(--line);margin-top:18px;padding-top:13px}.model-boundary summary{min-height:36px;cursor:pointer}.model-boundary p{margin:8px 0}.model-boundary a{display:block;padding:5px 0}.sr-only{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden;white-space:nowrap}dialog{width:min(720px,calc(100% - 32px));max-height:85dvh;padding:28px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);box-shadow:0 20px 80px #142d362e}dialog::backdrop{background:#163d3545;backdrop-filter:blur(3px)}dialog header{display:flex;justify-content:space-between;gap:20px;align-items:center}dialog h2{font-size:24px;font-family:"Songti SC",serif}.learning-tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin:18px 0}.learning-tabs button{min-height:44px;padding:0 3px;border-bottom:2px solid transparent;font-size:14px}.learning-tabs button[aria-pressed=true]{border-bottom-color:var(--green);font-weight:600}.explanation-step{display:grid;grid-template-columns:32px 1fr;gap:12px;margin:24px 0}.explanation-step>span{font-size:12px;color:var(--blue);padding-top:4px}.explanation-step h3{font-size:17px;margin-bottom:6px}.explanation-step p{font-size:15px;color:var(--muted)}dialog footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:22px;padding-top:10px;gap:12px}#quiz-status{font-size:12px;color:var(--muted)}.quiz-question{margin:22px 0}.quiz-question legend{font-size:16px;font-weight:600;line-height:1.6}.quiz-options{display:grid;gap:8px;margin-top:12px}.quiz-options button{min-height:48px;border:1px solid var(--line);border-radius:5px;text-align:left;padding:10px 13px;font-size:14px;display:flex;gap:10px;align-items:baseline}.quiz-options button[aria-pressed=true]{border-color:var(--blue);background:#eef3fa}.quiz-feedback{font-size:14px;color:var(--muted);min-height:24px;margin-top:9px}.question-result{font-size:12px;color:var(--blue);padding-left:8px}.mini-chart{width:100%;height:90px;display:block;margin-top:8px}.chart-line{fill:none;stroke:var(--blue);stroke-width:2.5}.chart-axis{stroke:var(--line);stroke-width:1}body[data-topic=cooling]{--green:#386486;--clay:#bf6d4d}
@media(max-width:960px){.lab-header{padding:0 24px}.lab-layout{padding:26px 24px;grid-template-columns:minmax(0,1fr) 260px;gap:18px}.experiment-controls{padding-left:18px}h1{font-size:25px}.world-stage{min-height:310px}.sample-tabs button{padding:9px 6px;column-gap:4px}.sample-tabs strong{font-size:12px}}
@media(max-width:720px){.lab-header{height:60px;padding:0 18px;gap:14px}.brand{font-size:20px}.brand span{display:none}.lab-header nav{gap:16px}.lab-header nav a{font-size:12px}.lab-header>.icon-button{border:0;width:38px}.lab-layout{display:flex;flex-direction:column;padding:22px 18px 28px;gap:20px}.experiment-heading{gap:8px}h1{font-size:25px}.lede{font-size:13px;margin-top:6px}.world-stage{height:340px;min-height:340px;margin-top:0}.stage-caption{font-size:11px}.sample-tabs{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px}.sample-tabs button{padding:8px 12px;min-height:60px}.sample-tabs button:nth-child(-n+2){border-bottom:1px solid var(--line)}.sample-tabs button[aria-pressed=true]{box-shadow:inset 0 -3px var(--green)}.sample-tabs strong{font-size:14px}.observation>div{gap:10px}.observation strong{font-size:15px}.observation>p{font-size:13px}.experiment-controls{padding:18px 0 0;border-left:0;border-top:1px solid var(--line)}.control-heading{display:flex;align-items:baseline;gap:14px;margin-bottom:8px}.control-heading h2{font-size:20px}.control-heading .eyebrow{font-size:12px}#conditions{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.condition-row{min-height:60px;gap:2px}.condition-row>span{font-size:13px}.condition-value>span{display:none}.condition-note{min-height:0;margin-top:8px}.prediction{margin-top:16px}.prediction-options{display:flex;gap:20px;flex-wrap:wrap}.run-controls{margin-top:12px}.model-boundary{margin-top:12px}dialog{padding:20px;max-height:88dvh}dialog h2{font-size:22px}.explanation-step{grid-template-columns:24px 1fr;gap:9px}.explanation-step h3{font-size:16px}.explanation-step p{font-size:14px}.quiz-options button{font-size:14px}.sample-pin{width:40px;height:40px}.run-note{min-height:0}.result{margin-top:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
.condition-jump{display:none}.trend-key{display:flex;gap:18px;margin-top:8px;font-size:11px;color:var(--muted)}.trend-key span{display:flex;gap:6px;align-items:center}.trend-key i{width:15px;height:3px;display:inline-block}.mini-chart text{fill:var(--muted);font-size:11px;font-family:inherit}#conditions-title{scroll-margin-top:20px}
.compare-view{position:absolute;right:0;top:0;font-size:12px;background:#f3f5f4d9;padding:0 8px}.compare-view[hidden],.sample-pin[hidden]{display:none}
.sample-pin{min-width:44px;min-height:44px}
.learning-figure{margin:0 0 18px;background:var(--paper)}.learning-figure img{display:block;width:100%;height:190px;object-fit:contain}.learning-figure figcaption{font-size:12px;color:var(--muted);padding:5px 12px 10px}dialog>header{position:sticky;top:-28px;background:var(--surface);z-index:2;padding:10px 0}
h1{text-wrap:balance}
.chart-axis{fill:none}
@media(max-width:720px){.run-controls .primary-button{padding:10px 12px;gap:8px;font-size:13px}}
@media(max-width:720px){.condition-value>.switch{display:flex}}
@media(max-width:720px){.lab-layout{padding-bottom:110px}.run-controls{position:fixed;bottom:0;left:0;right:0;z-index:10;background:#f3f5f4f5;border-top:1px solid var(--line);padding:10px 18px max(10px,env(safe-area-inset-bottom));margin:0;grid-template-columns:minmax(0,1fr) 80px 44px;gap:8px;align-items:center;backdrop-filter:blur(12px)}.run-controls .primary-button{grid-column:auto;font-size:14px;min-height:46px}.run-controls #restart{justify-content:center;gap:5px;min-height:44px}.restart-label{display:none}#restart:after{content:'重做';font-size:12px}.run-controls #restart:disabled{opacity:.45}.condition-jump{display:inline-flex;margin-top:7px;font-size:13px}.world-stage{height:340px;min-height:340px}}
@media(max-width:720px){.experiment{position:relative}.experiment-heading>.icon-button{position:absolute;top:124px;right:0;margin:0;z-index:2}.experiment-heading h1{font-size:23px}.compare-view{top:5px;right:51px}.world-stage{margin-top:12px}}

/* A single observe / change / observe path replaces the parallel control desk. */
.object-labels .sample-pin{transform:translate(-50%,0);background:transparent}
body .world-stage{height:min(48svh,420px);min-height:270px}body[data-mode=ready] .sample-pin span{display:none}
@media(max-width:720px){body .world-stage{height:320px;min-height:320px}.experiment-heading .lede{max-width:28em}}
.lab-layout{display:block;max-width:1140px;padding-top:24px}.experiment-controls{border:0;padding:0;max-width:700px;margin:auto}.experiment-heading .lede{max-width:50em}.world-stage{height:420px;min-height:360px}.sample-tabs,.edit-conditions,.prediction,.observation,.stage-caption,.condition-note,#restart{display:none}.sample-pin{width:138px;min-height:54px;height:auto;padding:5px 8px;border:0;border-radius:0;background:#f3f5f4e8;box-shadow:none;display:flex;flex-direction:column;gap:1px;line-height:1.5;color:var(--ink)}.sample-pin strong{font-size:14px;font-weight:600}.sample-pin span{font-size:12px;color:var(--muted)}.sample-pin:disabled{opacity:1;pointer-events:none}.sample-pin[aria-pressed=true]{color:var(--ink);background:#f3f5f4e8}.sample-pin:enabled{border-bottom:2px solid var(--line)}.sample-pin:enabled[aria-pressed=true]{border-bottom-color:var(--green);background:#e7eeea}.run-controls{display:flex;justify-content:center;gap:12px;margin-top:18px}.run-controls .primary-button{width:280px;max-width:calc(100% - 60px)}.run-note{text-align:center;min-height:0}.result{border:0;text-align:center;margin:20px auto 0;max-width:600px;padding:0}.result h3{display:none}.result p{font-size:16px;line-height:1.85}.result .text-button{font-size:15px;justify-content:center}.model-boundary{margin-top:24px}.lab-header>#open-learning{visibility:hidden}body[data-mode=result] .lab-header>#open-learning{visibility:visible}body[data-mode=edit] .sample-tabs{display:grid;max-width:700px;margin:0 auto 20px}body[data-mode=edit] .sample-status{display:none}body[data-mode=edit] .sample-tabs button{min-height:48px}body[data-mode=edit] .edit-conditions{display:block}body[data-mode=edit] #conditions{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.control-heading{display:flex;gap:16px;align-items:baseline;margin-bottom:4px}.control-heading h2{font-size:20px}body[data-mode=result][data-topic=cooling] .observation{display:block;max-width:700px;margin:auto}body[data-mode=result] .observation>div:first-child,body[data-mode=result] .observation>p,.condition-jump{display:none}.trend-key{justify-content:center}
@media(max-width:720px){.lab-layout{padding:20px 18px 104px}.world-stage{height:350px;min-height:350px}.experiment-heading>.icon-button{position:static;margin-top:18px}.run-controls{position:fixed;margin:0;display:flex;padding:10px 18px max(10px,env(safe-area-inset-bottom))}.run-controls .primary-button{width:280px;font-size:14px}.sample-pin{width:116px;min-height:48px}.sample-pin strong{font-size:13px}.sample-pin span{font-size:11px}.sample-tabs{grid-template-columns:repeat(4,minmax(0,1fr))}.sample-tabs button{display:block;padding:6px;text-align:center}.sample-number{display:none}.sample-tabs strong{font-size:12px}.condition-row{min-height:52px}.control-heading{margin-top:6px}.result p{font-size:14px}.model-boundary{font-size:11px}.run-note{font-size:12px;margin-top:14px}}
