@import url('../fonts/misans.css');
:root{--ink:#302c37;--muted:#716a79;--line:#e5e0e8;--accent:#6d587d;--accent-soft:#eee7f3;--paper:#fff;--canvas:#f5f2f6;--warm:#bd806d;font-family:MiSans,'Microsoft YaHei',sans-serif;color:var(--ink);font-size:14px;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--canvas)}button,select,input{font:inherit}button,select{min-height:40px;padding:8px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);cursor:pointer;line-height:1.4}button{transition:background .18s,color .18s,border-color .18s}button:hover,summary:hover{background:#f5f0f8;border-color:#cbbbd5}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button:disabled{opacity:.4;cursor:default}button.dark,button[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}input{accent-color:var(--accent)}input[type=range]{min-width:60px;cursor:pointer}input[type=checkbox]{width:17px;height:17px;margin:0}button[hidden],[hidden]{display:none!important}h1,h2,h3,p{margin:0}summary{cursor:pointer}a{color:var(--accent)}
#classroom{display:flex;flex-direction:column;height:100dvh;min-height:520px;background:linear-gradient(120deg,#faf6f2 0%,#f6f3f9 70%);overflow:hidden}
.lesson-header{display:flex;align-items:center;gap:24px;min-height:82px;padding:15px 24px;border-bottom:1px solid var(--line)}.lesson-brand{flex-shrink:0}.eyebrow{font-size:11px;letter-spacing:1.7px;color:#8b788e;font-weight:500}h1{font-size:24px;line-height:1.35;font-weight:600;margin-top:4px;letter-spacing:.5px}.process-caption{font-size:12px;color:var(--muted);max-width:370px;line-height:1.7}.header-tools{display:flex;gap:8px;margin-left:auto;align-items:center;flex-shrink:0}#lesson-guide{width:40px;padding:8px;border-radius:50%}#lesson-fullscreen{background:var(--ink);color:#fff;border-color:var(--ink)}#detail-toggle{display:none}
.process-bar{display:flex;align-items:center;gap:20px;padding:10px 24px;background:#ffffffb5;border-bottom:1px solid var(--line);min-height:62px}.process-label{font-size:13px;color:var(--ink);font-weight:600;padding-right:4px}.process-bar label{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}.process-bar select{min-width:125px;background:#fff}.process-note{margin-left:auto;font-size:12px;color:var(--muted)}
.lesson-layout{display:grid;grid-template-columns:220px minmax(360px,1fr) 300px;min-height:0;flex:1;position:relative}.lesson-timeline{min-height:0;display:flex;flex-direction:column;background:#ffffffb0;border-right:1px solid var(--line)}.timeline-title{display:flex;justify-content:space-between;align-items:center;padding:20px 18px 10px;gap:8px}.timeline-title strong{font-size:14px;font-weight:600}.timeline-title span{font-size:12px;color:var(--muted);white-space:nowrap}#stages{overflow:auto;padding:0 12px 20px;scrollbar-width:thin;scrollbar-color:#d6cddc transparent}.stage-group{padding:22px 10px 8px;font-size:12px;color:#93829a;font-weight:500;letter-spacing:1px}#stages button{display:flex;align-items:center;gap:9px;text-align:left;width:100%;padding:12px 10px;margin:3px 0;background:transparent;border:1px solid transparent;line-height:1.65;font-size:14px;color:#625b6b;min-height:46px}#stages button .stage-number{font-size:12px;color:#978c9c;font-variant-numeric:tabular-nums;flex-shrink:0}#stages button .stage-name{flex:1;min-width:0}#stages button:hover{background:#f3eef6}#stages button[aria-current=step]{background:linear-gradient(105deg,#f7e7dc,#ece4f6);border-color:#e6d7e4;color:#51415e;box-shadow:inset 3px 0 #a07898;font-weight:600}#stages button[aria-current=step] .stage-number{color:#8c607f}.standard-dot{font-size:10px;font-style:normal;white-space:nowrap;color:#79608c;background:#eee4f4;border-radius:5px;padding:2px 4px;flex-shrink:0}
.lesson-center{min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px;padding:18px}.view-toolbar{display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}.view-modes{display:flex;gap:3px;border:1px solid var(--line);padding:3px;border-radius:12px;background:#fff}.view-modes button{border:0;background:transparent;color:var(--muted);min-height:36px;padding:7px 13px;font-size:13px;border-radius:8px}.view-modes button[aria-pressed=true]{background:var(--accent);color:white}.view-actions{display:flex;align-items:center;gap:8px}.view-actions>button{font-size:12px;padding:8px}#peer-toggle{background:#fff6e8;color:#8b643a;border-color:#ebd8b9}#peer-toggle[aria-pressed=true]{background:#896642;color:#fff}.view-settings{position:relative;z-index:8}.view-settings summary{list-style:none;display:flex;gap:12px;align-items:center;padding:10px 12px;font-size:13px;min-height:40px;border:1px solid var(--line);border-radius:10px;background:#fff}.view-settings summary::-webkit-details-marker{display:none}.settings-panel{position:absolute;right:0;top:calc(100% + 8px);width:252px;border:1px solid var(--line);border-radius:14px;padding:18px;background:#fff;box-shadow:0 16px 50px #3223391f;display:grid;gap:18px}.settings-panel label{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px}.settings-panel label select{margin-left:auto;max-width:130px}.settings-actions{display:flex;gap:8px;padding-top:14px;border-top:1px solid var(--line)}.settings-actions button{font-size:12px;padding:8px 9px}
.view-options:has([hidden]){display:none}.view-options label{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--muted);padding:4px 6px}#cut-range{width:180px;max-width:40vw}.view-options label span{font-size:12px}#peer-options{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;background:#fffaf2;border:1px solid #eadbc7;border-radius:12px;font-size:12px}#peer-options span:before{content:'';display:inline-block;width:9px;height:9px;margin-right:5px;border-radius:3px}.ours-key:before{background:#527faa}.peer-key:before{background:#d98739}#peer-options label{display:flex;align-items:center;gap:8px}#peer-options input{width:85px}#peer-options small{flex-basis:100%;color:var(--muted);line-height:1.6;font-size:12px}
.visual-area{position:relative;flex:1;min-height:210px;overflow:hidden;border:1px solid #e1dce3;border-radius:18px;background:#f0ece8;box-shadow:0 5px 24px #4c354307}#three-host,#section-host{position:absolute;inset:0}#three-host canvas{display:block;width:100%;height:100%;touch-action:none}#section-host{display:flex;align-items:center;justify-content:center;overflow:auto;background:#f7f5f1}#section-host svg{width:100%;height:100%;min-height:210px}#viewer-loading{position:absolute;inset:0;display:grid;place-content:center;padding:30px;gap:12px;text-align:center;background:#f0ece8;z-index:5;color:var(--muted)}.scene-caption{position:absolute;top:18px;left:18px;display:flex;flex-direction:column;gap:5px;pointer-events:none}.scene-caption span{font-size:15px;font-weight:600;color:#554954}.scene-caption small{font-size:11px;color:#827780;letter-spacing:.5px}.scene-hint{position:absolute;bottom:14px;left:18px;max-width:calc(100% - 36px);font-size:12px;line-height:1.6;padding:6px 10px;border:1px solid #ffffffb0;border-radius:8px;background:#ffffffbf;color:#675e66;pointer-events:none}.visual-area:has(#section-host:not([hidden])) .scene-caption,.visual-area:has(#section-host:not([hidden])) .scene-hint{display:none}
.playback{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 16px;flex-shrink:0}.playback-actions{display:flex;align-items:center;gap:7px}.playback-actions button,.playback-actions select{font-size:13px}.playback-actions #prev-stage,.playback-actions #next-stage{padding:7px 10px;min-width:36px}.playback-actions #play-state{margin-left:auto;font-size:12px;color:var(--muted)}.progress-row{display:flex;align-items:center;gap:12px;margin-top:9px;color:var(--muted);font-size:12px}.progress-row input{flex:1;min-width:40px}.progress-row output{min-width:38px;text-align:right;font-variant-numeric:tabular-nums}.time-note{font-size:11px;color:#918794;margin-top:7px;line-height:1.5}
.lesson-detail{display:flex;flex-direction:column;min-height:0;background:#ffffffda;border-left:1px solid var(--line)}.detail-panel-heading{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 10px;font-size:12px;color:var(--muted);letter-spacing:1px}#detail-close{display:none;font-size:22px;line-height:1;min-width:40px}.detail-tabs{display:flex;gap:6px;margin:0 20px 8px;padding:4px;background:#f3f0f5;border-radius:10px}.detail-tabs button{flex:1;min-width:0;border:0;background:transparent;font-size:13px;color:var(--muted);padding:8px 4px;min-height:36px}.detail-tabs button[aria-selected=true]{background:#fff;color:var(--accent);font-weight:600;box-shadow:0 2px 7px #44344c0b}.detail-scroll{overflow:auto;padding:18px 22px 24px;scrollbar-width:thin;scrollbar-color:#d6cddc transparent}.detail-heading{border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:20px}.lesson-detail h2{font-size:22px;font-weight:600;line-height:1.45;margin:10px 0 12px;letter-spacing:.3px}.lesson-detail p{font-size:14px;line-height:1.85;color:var(--muted)}.lesson-detail h3{font-size:14px;line-height:1.6;font-weight:600;margin:0 0 16px;color:#504458}.lesson-detail ol{list-style:none;padding:0;margin:0 0 20px;counter-reset:step}.lesson-detail li{counter-increment:step;position:relative;padding:0 0 20px 34px;font-size:14px;line-height:1.8;color:var(--muted)}.lesson-detail li:before{content:counter(step,decimal-leading-zero);position:absolute;left:0;top:0;font-size:12px;color:#a38a9f;border:1px solid #e8dde8;border-radius:50%;width:24px;height:24px;display:grid;place-items:center}.lesson-detail li.is-current{color:#56455f}.lesson-detail li.is-current:before{background:var(--accent-soft);color:var(--accent)}.check-card{background:linear-gradient(125deg,#faf2e9,#f4eff8);border:1px solid #eaddE6;border-radius:12px;padding:16px;margin:0 0 18px}.check-card h3{margin-bottom:8px}.check-card p{font-size:13px}.component-card{padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.component-card summary{font-size:13px;color:var(--muted)}.component-card strong{display:block;font-size:14px;line-height:1.8;font-weight:500;margin-top:12px}.component-card small{display:block;color:var(--muted);font-size:12px;line-height:1.7;margin-top:6px}.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--muted);margin-top:15px}.legend span{display:flex;gap:5px;align-items:center}.legend i{width:9px;height:9px;border-radius:2px}.lesson-detail .scope-note{font-size:11px;line-height:1.8;color:#938994;margin-top:18px}.detail-backdrop{display:none}
.node-standard-card{background:linear-gradient(130deg,#fcf1e5,#f2ebf8);border:1px solid #e9dce9;padding:18px;border-radius:12px;margin-bottom:16px}.node-standard-card h4{font-size:16px;line-height:1.6;margin:0 0 10px;color:#655071}.node-standard-card p{white-space:pre-wrap;font-size:14px;line-height:1.85}.node-standard-card small{display:block;font-size:12px;line-height:1.8;color:#8a748b;margin-top:12px}.node-standard-card a{display:block;font-size:13px;line-height:1.7;overflow-wrap:anywhere;margin-top:14px}.node-standard-card img{display:block;width:100%;max-height:240px;object-fit:contain;margin-bottom:8px;border-radius:8px}.standard-empty{padding:22px 16px;border:1px dashed #d9cfdf;border-radius:12px;background:#faf8fc}.standard-empty strong{display:block;font-size:15px;font-weight:500;margin-bottom:10px}.standard-empty p{font-size:13px}.standard-library-link{display:block;margin-top:20px;font-size:13px;text-decoration:none}.standard-context{font-size:12px!important;margin-bottom:14px!important}.standard-retry{margin-top:12px;font-size:13px}
dialog{width:min(650px,92vw);max-height:85dvh;overflow:auto;border:1px solid var(--line);border-radius:18px;padding:26px;background:#fffdfd;color:var(--ink);box-shadow:0 30px 100px #21122b30}dialog::backdrop{background:#201a2b80;backdrop-filter:blur(5px)}.guide-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.guide-heading h2{font-size:22px;font-weight:600;line-height:1.4}dialog p,dialog li{font-size:14px;line-height:1.9;color:var(--muted)}dialog p{margin:16px 0}dialog a{display:block;font-size:13px;line-height:1.8;margin:8px 0}dialog h3{font-size:16px;margin:20px 0 10px}#export-preview img{width:100%;max-height:62vh;object-fit:contain;background:#f3f0ed;display:block}#export-download{display:inline-block;background:var(--accent);color:white;padding:12px 18px;border-radius:10px;text-decoration:none}#process-placeholder{margin:auto;padding:40px;text-align:center;max-width:700px}#process-placeholder h2{font-size:24px;margin:18px 0}#process-placeholder p{font-size:14px;line-height:1.9;color:var(--muted);margin:16px 0}#classroom:fullscreen{width:100vw;height:100dvh}
@media(min-width:1600px){.lesson-layout{grid-template-columns:252px minmax(400px,1fr) 340px}.lesson-center{padding:24px;gap:14px}.lesson-header{padding:18px 30px}.process-bar{padding:12px 30px}.detail-scroll{padding:22px 26px}.scene-caption{left:24px;top:24px}}
@media(max-width:1320px){.lesson-layout{grid-template-columns:205px minmax(330px,1fr) 270px}.lesson-center{padding:12px;gap:8px}.lesson-header{gap:16px;padding:12px 20px;min-height:74px}.process-caption{max-width:235px;font-size:12px}.process-bar{padding:9px 20px;gap:16px}.process-note{font-size:11px}.detail-scroll{padding:16px 18px}.detail-tabs{margin:0 14px 6px}.detail-panel-heading{padding:16px 18px 10px}.lesson-detail h2{font-size:20px}.playback-actions #play-state{display:none}.scene-caption{top:14px;left:14px}.scene-hint{left:14px;font-size:11px}.view-modes button{padding:7px 10px}.playback{padding:10px 12px}}
@media(max-width:1100px){.lesson-layout{grid-template-columns:208px minmax(320px,1fr)}#detail-toggle{display:block;background:#eee5f5;border-color:#ded1e7;color:#695175}.lesson-detail{display:none;position:fixed;inset:0 0 0 auto;width:min(380px,90vw);z-index:30;box-shadow:-15px 0 60px #31213925;background:#fffdfd;border-radius:18px 0 0 18px}.lesson-detail.is-open{display:flex}.detail-backdrop:not([hidden]){display:block;position:fixed;inset:0;z-index:29;background:#26202f40;border:0;border-radius:0;backdrop-filter:blur(3px)}#detail-close{display:block}.detail-panel-heading{padding:14px 20px 8px}.detail-scroll{padding:20px 24px}.process-caption{display:none}.process-note{font-size:12px}.lesson-center{padding:16px}.visual-area{min-height:220px}.lesson-header{min-height:72px}.scene-caption span{font-size:15px}}
@media(max-width:760px){#classroom{height:100dvh;min-height:680px;overflow:auto}.lesson-header{padding:14px 16px;gap:10px;min-height:70px}.lesson-header h1{font-size:21px}.eyebrow{font-size:10px}.header-tools{gap:6px}.header-tools button{font-size:12px;padding:7px 10px}.header-tools #lesson-guide{width:36px;min-height:36px}#completed-view{display:none}.process-bar{padding:10px 16px;gap:12px;align-items:stretch}.process-label,.process-note{display:none}.process-bar label{display:flex;flex-direction:column;align-items:stretch;gap:6px;flex:1;font-size:12px;min-width:0}.process-bar select{min-width:0;width:100%;font-size:13px;padding:7px 8px}.lesson-layout{display:flex;flex-direction:column;flex:1;min-height:0}.lesson-timeline{flex-shrink:0;border:0;border-bottom:1px solid var(--line);max-height:118px}.timeline-title{padding:10px 16px 0}.timeline-title strong{font-size:13px}.timeline-title span{font-size:11px}#stages{display:flex;gap:8px;padding:8px 12px 12px;overflow:auto;flex-shrink:0}.stage-group{display:none}#stages button{width:164px;min-width:164px;min-height:48px;margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font-size:13px;line-height:1.55}#stages button .standard-dot{display:none}.lesson-center{flex:1;min-height:390px;padding:12px;gap:8px}.visual-area{min-height:220px;border-radius:14px}.view-toolbar{gap:6px}.view-modes button{font-size:12px;padding:7px 10px}.view-settings summary{font-size:12px;padding:8px 10px}.view-actions{gap:6px}.scene-caption span{font-size:14px}.scene-caption small{font-size:10px}.scene-hint{font-size:10px;padding:4px 8px;bottom:10px}.playback-actions button,.playback-actions select{font-size:12px;padding:7px 9px;min-height:36px}.time-note{font-size:10px}.view-options label{padding:0;font-size:12px}#peer-options{padding:8px 10px;gap:8px}#peer-options small{font-size:11px}.detail-scroll .eyebrow{font-size:11px}}
@media(max-width:460px){.header-tools #lesson-guide{display:none}.lesson-header{padding:12px}.header-tools button{font-size:11px;padding:7px 8px}.lesson-header h1{font-size:20px}.lesson-brand .eyebrow{font-size:9px;letter-spacing:1px}.view-toolbar{align-items:flex-start}.view-modes button{padding:7px 9px}.view-settings summary{gap:5px}.view-actions:has(#peer-toggle:not([hidden])){width:100%;justify-content:space-between}.playback{padding:9px}.playback-actions{gap:5px}.playback-actions #prev-stage,.playback-actions #next-stage{min-width:30px;padding:7px}.playback-actions select{width:58px;padding:6px}.progress-row{gap:7px}.time-note{max-width:100%;line-height:1.5}.lesson-detail h2{font-size:22px}}
.lesson-center{overflow:auto;scrollbar-width:thin;scrollbar-color:#d6cddc transparent}
@keyframes detail-enter{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
@media(max-width:1100px){.lesson-detail.is-open{animation:detail-enter .22s ease-out}}
@media(prefers-reduced-motion:reduce){button{transition:none}.lesson-detail.is-open{animation:none}}
