/*! BIO-ORIGIN project=passive-transport-classroom; version=2.1.1-web.1; source=e73bdc29632fe1e7; official=https://bio2077.cn/; third-party licenses unchanged */
:root{font-family:'Microsoft YaHei','PingFang SC',Arial,sans-serif;font-size:clamp(22px,1.35vw,28px);color:#edf4fa;background:#080f1a;--muted:#acc0d0;--line:#2b4054;--panel:#122131;--accent:#75dcce;--gold:#edc47d;--blue:#6cbce9}*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit}button,select{color:inherit;border:1px solid var(--line);border-radius:10px;background:#172a3d;min-height:46px;padding:8px 13px;cursor:pointer;touch-action:manipulation;line-height:1.3}button:hover{border-color:#638ba9;background:#223b51}button[aria-pressed=true],button.active{color:#c6fff2;border-color:#74d8c6;background:#1d4c4b}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,#viewport:focus-visible{outline:3px solid var(--gold);outline-offset:2px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}#app{height:100dvh;min-height:600px;padding:12px 14px 10px;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:10px;width:100%;max-width:none}header{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:52px}.brand{display:flex;align-items:center;gap:15px;white-space:nowrap}.brand-mark{color:var(--accent);font-size:1.35rem}h1{font-size:1.4rem;font-weight:600;letter-spacing:.06em}.course-tag{font-size:.8rem;color:var(--muted);border-left:1px solid #3f5262;padding-left:18px}.header-tools{display:flex;gap:8px}.header-tools button{font-size:.78rem;min-height:44px;background:transparent;padding:7px 11px}#lesson-nav{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}#lesson-nav button{padding:10px 5px;font-size:.82rem;min-height:52px;border-radius:9px;white-space:nowrap}#lesson-nav button span{color:#83a0b9;font-size:.8em;margin-right:7px}#lesson-nav button.active span{color:var(--accent)}.lesson-shell{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(310px,21vw,410px);gap:12px}.stage-column{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-height:0;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:#0b1726}.stage-title{padding:14px 18px 8px;display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:77px}.stage-title>div{display:flex;align-items:baseline;gap:17px;min-width:0}#lesson-kicker{color:var(--accent);font-size:.76rem;white-space:nowrap}h2{font-size:1.1rem;font-weight:500}#status-tag{font-size:.76rem;color:var(--gold);white-space:nowrap}#viewport{position:relative;min-height:0;overflow:hidden;background:radial-gradient(ellipse at 50% 55%,#173449,#091423 75%);touch-action:none}#viewport canvas{display:block;width:100%;height:100%;outline:0}#loading{position:absolute;inset:0;display:grid;place-content:center;background:#091423;z-index:3;color:var(--muted)}#camera-tools{position:absolute;right:12px;top:50%;transform:translateY(-50%);display:grid;gap:9px;z-index:4}#camera-tools button{min-width:48px;height:48px;padding:4px 10px;font-size:.82rem;background:#15283de8;backdrop-filter:blur(8px)}#camera-tools button:nth-child(-n+2){font-size:1.3rem}.scene-label{position:absolute;transform:translate(-50%,-50%);background:#0a1628b8;border:1px solid #3b566a66;border-radius:8px;padding:5px 9px;color:#e5f4ff;font-size:.85rem;pointer-events:none;white-space:nowrap;text-shadow:0 1px #000;backdrop-filter:blur(5px);z-index:2}.observation{display:flex;align-items:flex-start;gap:12px;padding:12px 18px;background:#122639;min-height:58px;font-size:.85rem;line-height:1.5}.observation-icon{color:var(--accent);padding-top:1px}#panel{background:#122131;border:1px solid var(--line);border-radius:13px;padding:16px;overflow:auto;min-height:0;scrollbar-width:thin;scrollbar-color:#466078 transparent}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px}.panel-heading h3{font-size:.98rem;font-weight:500}.panel-heading>span{font-size:.75rem;color:var(--muted)}.section-label{color:var(--muted);font-size:.8rem;display:block;margin-bottom:8px}.control-section{margin:0 0 15px}.choices{display:grid;grid-template-columns:1fr 1fr;gap:7px}.choices.three{grid-template-columns:repeat(3,1fr)}.choices.column{grid-template-columns:1fr}.choices button{font-size:.84rem;padding:9px 7px}.control-section>p,.instruction{font-size:.85rem;line-height:1.65;color:#c4d2de;margin:7px 0}.slider-label{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.9rem}.slider-label output{font-size:1.2rem;color:#e8d3a5;font-variant-numeric:tabular-nums}input[type=range]{accent-color:#6fd8c4;width:100%;height:32px;cursor:pointer;margin:1px 0 6px}.result{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.result>strong{display:block;font-size:1.12rem;line-height:1.45;color:var(--accent);font-weight:500}.result>p{font-size:.88rem;line-height:1.6;color:#c4d2de;margin:9px 0}.stat-row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:.85rem;margin:10px 0}.stat-row b{color:var(--gold);font-weight:500;font-variant-numeric:tabular-nums}.progress-track{height:8px;border-radius:5px;background:#2a3f50;overflow:hidden}.progress-track i{display:block;height:100%;background:#74d8c6;width:0}.question{margin-top:15px;width:100%;font-size:.86rem;text-align:left;line-height:1.55;background:#1a3044;border-color:#37516b;color:#c7e4fa;padding:12px}.question:before{content:'想一想  ';color:var(--gold)}#playbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px}.transport-actions,.lesson-arrows{display:flex;gap:8px;align-items:center}.transport-actions button,.lesson-arrows button,#speed{font-size:.85rem;white-space:nowrap}.primary{background:#265b58;border-color:#60b5a7;color:#d9fff7;min-width:135px}#speed{max-width:150px}.time-area{display:flex;align-items:center;gap:16px;font-size:.76rem;color:var(--muted)}#time{white-space:nowrap;color:#e2edf4;font-variant-numeric:tabular-nums}.lab-step{display:flex;align-items:flex-start;gap:12px;font-size:.88rem;color:var(--muted);padding:8px 0;line-height:1.45}.lab-step.current{color:#bafbed}.lab-step.done{color:#76b8ae}.lab-step span:first-child{display:grid;place-items:center;width:1.3em;height:1.3em;border-radius:50%;background:#294054;flex-shrink:0}.lab-step.current span:first-child{background:#398577}.lab-action{width:100%;font-size:.9rem;background:#285e59;border-color:#559c8d;margin-top:10px}.data-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-top:10px}.data-table th,.data-table td{text-align:left;border-bottom:1px solid #2a4154;padding:9px 5px;font-weight:400;line-height:1.5}.data-table th{color:#9db6c8}.data-table td:last-child{text-align:right;color:var(--gold)}.feedback{color:#a2ecbc;font-size:.85rem;line-height:1.6;margin-top:12px}.wide{width:100%}dialog{color:#e7f2fa;background:#142537;border:1px solid #4a6379;border-radius:16px;width:min(980px,94vw);max-height:90dvh;padding:26px;line-height:1.7;font-size:.88rem}dialog::backdrop{background:#020914be;backdrop-filter:blur(6px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}.dialog-head button{font-size:.8rem;white-space:nowrap}dialog h3{margin:20px 0 8px;font-size:1rem}dialog p{margin:10px 0}dialog a{color:#8bdacb}dialog table{width:100%;border-collapse:collapse}dialog td,dialog th{border:1px solid #3f5669;padding:10px;text-align:left}dialog .disclosure{font-size:.8rem;color:#b6c6d3;padding:15px;background:#0c1b2a;border-radius:10px;overflow-wrap:anywhere}#exit-presentation{position:absolute;left:12px;top:12px;z-index:6;background:#1c405b;font-size:.85rem}
body[data-view=focus] .lesson-shell{grid-template-columns:1fr}body[data-view=focus] #panel{display:none}body[data-view=focus] .stage-title{display:none}body[data-view=focus] #app{grid-template-rows:auto auto minmax(0,1fr) auto}
body[data-view=immersive] #app{padding:0;grid-template-rows:minmax(0,1fr)}body[data-view=immersive] header,body[data-view=immersive] #lesson-nav,body[data-view=immersive] #panel,body[data-view=immersive] .stage-title,body[data-view=immersive] .observation,body[data-view=immersive] .time-area,body[data-view=immersive] .lesson-arrows{display:none}body[data-view=immersive] .lesson-shell{grid-template-columns:1fr}body[data-view=immersive] .stage-column{border:0;border-radius:0;grid-template-rows:minmax(0,1fr)}body[data-view=immersive] #playbar{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);padding:10px;background:#0b1c2fe8;border:1px solid #43566a;border-radius:14px;z-index:6}
@media(max-width:1450px) and (min-width:901px){:root{font-size:22px}.course-tag{display:none}#app{padding:10px;gap:8px}.header-tools{gap:5px}.lesson-shell{grid-template-columns:minmax(0,1fr) 310px;gap:9px}#panel{padding:12px}#lesson-nav button{font-size:20px;min-height:48px}#lesson-nav button span{margin-right:4px}.stage-title{padding:10px 14px;min-height:64px}.stage-title>div{gap:10px}#lesson-kicker{display:none}.control-section{margin-bottom:11px}.result{margin-top:10px;padding-top:10px}.question{margin-top:10px;padding:9px}.time-area{gap:8px}#model-note{display:none}.lab-step{padding:5px 0}.lab-action{margin-top:5px}.header-tools button{font-size:18px}.scene-label{font-size:20px}}
@media(max-width:900px){:root{font-size:22px}#app{height:auto;min-height:100dvh;grid-template-rows:auto auto auto auto;padding:10px;gap:10px}header{flex-wrap:wrap;gap:10px}.course-tag{display:none}.header-tools{width:100%;justify-content:space-between}.header-tools button{font-size:18px;padding:7px 9px}#lesson-nav{grid-template-columns:repeat(4,1fr)}#lesson-nav button{font-size:18px;white-space:normal;min-height:50px}#lesson-nav button span{display:none}.lesson-shell{grid-template-columns:1fr}.stage-column{min-height:450px}.stage-title{padding:10px 12px;min-height:62px}.stage-title>div{display:block}#lesson-kicker{font-size:18px}h2{font-size:23px}#status-tag{font-size:18px}#viewport{height:350px;min-height:300px}#panel{overflow:visible;padding:15px}.observation{font-size:22px;padding:12px;line-height:1.55}.scene-label{font-size:18px;padding:4px 6px}#camera-tools{right:8px;gap:7px}#camera-tools button{font-size:18px;width:44px;height:44px;min-width:44px;padding:4px}.transport-actions{flex-wrap:wrap}.transport-actions button,#speed{font-size:19px}#playbar{flex-wrap:wrap}.lesson-arrows{width:100%;justify-content:space-between}.time-area{font-size:18px}.choices button{font-size:22px}.control-section p{font-size:22px}.result>p{font-size:22px}.section-label{font-size:20px}.question{font-size:22px}.lab-step{font-size:22px}.stat-row{font-size:22px}.data-table{font-size:20px}body[data-view=focus] #viewport{height:65dvh}body[data-view=immersive] #app{height:100dvh;min-height:0}body[data-view=immersive] #viewport{height:100dvh}body[data-view=immersive] #playbar{width:96%;justify-content:center;bottom:8px}body[data-view=immersive] .transport-actions{justify-content:center}body[data-view=immersive] #reset{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.lab-steps{display:grid;grid-template-columns:1fr 1fr;gap:3px 8px}.lab-step{font-size:20px;gap:8px;padding:7px 0}.instruction,.result>p,.observation p{font-size:max(22px,.85rem)}.section-label,.panel-heading>span,.time-area,#status-tag,#lesson-kicker{font-size:max(18px,.76rem)}#lesson-nav button span{font-size:18px}.data-table th,.data-table td{padding:5px}.scene-label.multiline{white-space:pre-line;text-align:center;line-height:1.45}
.paired-sliders{display:grid;grid-template-columns:1fr 1fr;gap:12px}.paired-sliders .slider-label{font-size:max(20px,.82rem);gap:4px}.paired-sliders output{font-size:1.05rem}.paired-sliders input{min-height:44px}
@media(min-width:901px){#panel{overflow:visible}.control-section>p,.instruction{margin:6px 0}.control-section{margin-bottom:10px}.panel-heading{margin-bottom:10px}.result{margin-top:10px;padding-top:10px}.result>p{margin:6px 0}.stat-row{margin:7px 0}}
@media(max-width:1450px) and (min-width:901px){#lesson-nav button span{display:none}.instruction,.result>p{font-size:22px}.choices button{font-size:20px}.lab-step{font-size:20px}.result>strong{font-size:25px}.result>p:empty{display:none}}
@media(max-width:1450px) and (min-width:901px){.instruction,.result>p{line-height:1.45}.stat-row{font-size:20px}.section-label{margin-bottom:6px}.control-section{margin-bottom:8px}}
@media(max-width:1450px) and (min-width:901px){#panel{padding:10px}.result>p{margin:4px 0}.stat-row{margin:5px 0}}
@media(max-width:900px){#camera-tools{top:auto;bottom:10px;left:50%;right:auto;transform:translateX(-50%);display:flex}#camera-tools button{width:auto;min-width:48px;white-space:nowrap;padding:4px 8px}}
@media(max-width:1450px) and (min-width:901px){.lesson-shell{grid-template-columns:minmax(0,1fr) 340px}}
@media(min-width:901px) and (max-height:780px){header{min-height:44px}#playbar{min-height:48px}#app{gap:6px}}
/* One primary action at a time: laboratory steps take precedence over playback. */
.lab-action[data-action=lab]{display:flex;align-items:center;justify-content:center;gap:10px;position:relative;min-height:50px}
.click-hand{width:36px;height:30px;flex:0 0 36px;pointer-events:none;filter:drop-shadow(0 2px 2px #07172788)}
.lab-action.next-action{color:#fffbed;background:#285d56;border:2px solid #f0ca78;box-shadow:0 0 0 3px #f0ca7820,0 0 18px #f0ca7828;animation:next-action-glow 1.8s ease-in-out 3}
.lab-action.next-action:hover{background:#34746a;border-color:#ffe3a0}
.lab-action.next-action .click-hand{animation:point-to-action 1.8s ease-in-out 3}
.lab-lesson #play.primary{background:transparent;border-color:#3e5365;color:#c3d0da}
.lab-lesson #play.observation-resume{background:#244a50;border-color:#8acbbf;color:#eafff8}
.lab-lesson #play:disabled,.lab-lesson #step:disabled{opacity:.48}
.lab-action:disabled{background:#1a303e;border-color:#3e5365;color:#b7c9d5;opacity:1}
.lesson-arrows .lesson-next-cue{border-color:#f0ca78;background:#2b4d49;color:#fffbed}
@keyframes next-action-glow{0%,100%{box-shadow:0 0 0 3px #f0ca7818,0 0 12px #f0ca7818}50%{box-shadow:0 0 0 4px #f0ca7830,0 0 21px #f0ca7840}}
@keyframes point-to-action{0%,100%{transform:translateX(-2px)}50%{transform:translateX(3px)}}
@media(prefers-reduced-motion:reduce){.lab-action.next-action,.lab-action.next-action .click-hand{animation:none}}

/* Public utilities share the existing header; classroom actions retain their priority. */
.brand-home{color:var(--accent);font-size:1.35rem;text-decoration:none;min-width:44px;min-height:44px;display:grid;place-items:center}.course-tag{display:none}.header-tools{flex-wrap:wrap;justify-content:flex-end}.header-tools .project-member-tools{margin:0}header{gap:12px}.brand{gap:10px}
@media(max-width:900px){.header-tools{justify-content:flex-start;gap:6px}.header-tools button{min-height:44px}}
body.text-expanded #app{height:auto;min-height:100dvh;grid-template-rows:auto auto auto auto}body.text-expanded header{flex-wrap:wrap}body.text-expanded .header-tools{justify-content:flex-start}body.text-expanded #lesson-nav{grid-template-columns:repeat(4,minmax(0,1fr))}body.text-expanded #lesson-nav button{white-space:normal;overflow-wrap:anywhere}body.text-expanded .lesson-shell{grid-template-columns:1fr}body.text-expanded .stage-column{overflow:visible;grid-template-rows:auto 450px auto}body.text-expanded #viewport{height:450px}body.text-expanded .stage-title,body.text-expanded .stage-title>div{flex-wrap:wrap}body.text-expanded #panel{overflow:visible}body.text-expanded #playbar,body.text-expanded .transport-actions,body.text-expanded .time-area,body.text-expanded .lesson-arrows{flex-wrap:wrap}body.text-expanded .choices{grid-template-columns:1fr}body.text-expanded .lab-steps{grid-template-columns:1fr}body.text-expanded .paired-sliders{grid-template-columns:1fr}body.text-expanded button{white-space:normal}body.text-expanded .panel-heading{flex-wrap:wrap}
