:root{font-family:"Microsoft YaHei",system-ui,sans-serif;color:#21342e;background:#f3f5ef;font-size:16px}*{box-sizing:border-box}body{margin:0}header{padding:20px 4vw;background:#173d33;color:white;display:flex;align-items:center;justify-content:space-between;gap:16px}h1{font-size:24px;margin:0 0 5px}h2{font-size:22px;margin:4px 0 20px}h3{margin:8px 0 12px}small,.muted{color:#60756c}header small{color:#cbd9d0}main{max-width:1250px;margin:auto;padding:24px}button,select,input,textarea{font:inherit;border-radius:10px;border:1px solid #becdc3;padding:12px}input,textarea,select{max-width:100%;background:white;color:#21342e}textarea{width:100%;min-height:100px;resize:vertical}button{background:#eaf0e8;color:#214937;cursor:pointer;min-height:46px}button:hover{background:#dbe8da}button.primary{background:#27684c;color:white;border-color:#27684c}button:disabled{opacity:.5;cursor:wait}label{display:block;margin:12px 0 6px;font-weight:600}nav{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}nav button.active{background:#d1e5bb;border-color:#7ca660}.panel,.card{background:#fff;border:1px solid #dce4d9;border-radius:16px;padding:22px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid>.card{margin:0}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row input{flex:1}.notice{padding:13px 18px;border-radius:10px;background:#e9eee2;line-height:1.6;margin-bottom:16px}.error{background:#fff0e8;color:#a13013}.ok{color:#17613b}.help{border:3px solid #c24430}.tag{border-radius:20px;background:#ecf0e5;font-size:13px;padding:5px 9px}.chat{min-height:180px;max-height:360px;overflow:auto;background:#f7f9f3;padding:14px;border-radius:12px}.bubble{padding:10px 14px;margin:8px 0;border-radius:12px;background:#e4eddb;white-space:pre-wrap}.bubble.user{background:#e3ecf1;margin-left:12%}.flow{max-width:700px;margin:auto;text-align:center}.node{border:1px solid #9db9a6;border-radius:12px;padding:10px;margin:8px auto;background:#f4f8ee}.arrow{color:#708b7b}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f2f4ed;padding:14px}a{color:#27684c}details{margin:12px 0}hr{border:0;border-top:1px solid #dce4d9;margin:20px 0}[hidden]{display:none!important}#saveStatus{font-size:14px}#banner{position:sticky;top:0;z-index:2}footer{padding:20px;text-align:center;color:#738073;font-size:13px}.wide{width:100%}@media(max-width:720px){.grid{grid-template-columns:1fr}main{padding:14px}header{align-items:flex-start}nav button{flex:1}.panel{padding:16px}}
:root #banner{position:static}
/* 课堂交互修订：问答成对输入、八组投屏、稳定详情窗口。 */
.corpus-layout{display:grid;grid-template-columns:minmax(210px,.7fr) minmax(400px,1.6fr);gap:24px}.pair-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pair-row label{font-size:14px;margin:5px 0}.pair-row textarea{display:block;min-height:68px;margin-top:5px;resize:vertical}.scaffold{padding:14px 16px;background:#f0f5e7;border-left:4px solid #83a365;line-height:1.8;margin:8px 0 12px}.mark-good{background:#e1f2d9!important;color:#225c38!important;border-color:#8bb87b!important}.mark-empty{background:#f0f1ef!important;color:#727a75!important;border-color:#d6dcd7!important}.mark-bad{background:#fde9e4!important;color:#a22e20!important;border-color:#d18774!important}.mark-review{background:#fff0ce!important;color:#865307!important;border-color:#e5bf75!important}#feedbackStatus{color:#27684c;min-height:25px;font-weight:600}.teacher{height:100dvh;overflow:hidden;display:flex;flex-direction:column}.teacher header{padding:12px 24px;flex:none}.teacher header h1{font-size:22px}.teacher header button{padding:8px 14px}.teacher main{max-width:none;width:100%;min-height:0;flex:1;padding:12px 24px;display:flex;flex-direction:column}.teacher #notice{margin:0;padding:7px 14px;flex:none;font-size:15px}.teacher nav{margin:10px 0;align-items:center;flex:none}.teacher nav button{padding:8px 18px}.teacher .board{min-height:0;flex:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:12px}.board>.card{padding:14px;margin:0;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;gap:4px}.card-head h2{font-size:21px;margin:0}.card-head .tag{font-size:12px;white-space:nowrap}.section-label{font-size:13px;color:#5e7165;margin:12px 0 6px}.chips{display:flex;gap:5px;flex-wrap:wrap}.chip{font-size:13px;padding:5px 8px;border:1px solid;border-radius:7px;white-space:nowrap}.quality{font-size:12px;color:#866129;min-height:30px;padding-top:7px;line-height:1.35}.board .card>button{margin-top:auto;width:100%;min-height:35px;padding:6px 8px;font-size:14px}.board .card p{margin:8px 0;font-size:14px}.board h3{font-size:19px;margin:16px 0 0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.excerpt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.legend{font-size:12px;color:#68786b;padding-top:8px;flex:none}.feedback-count{margin-top:12px;font-size:14px}.feedback-count strong{font-size:32px;color:#286348}dialog{width:min(960px,94vw);max-height:90dvh;border:1px solid #bbcbbb;border-radius:18px;padding:24px;color:#21342e;box-shadow:0 24px 100px #162e3344}dialog::backdrop{background:#12282099}.modal-head{justify-content:space-between}.modal-head h2{margin:0}.assessment-row{display:flex;gap:10px;align-items:center;margin:12px 0;flex-wrap:wrap}.assessment-row>span:last-child{flex:1;min-width:240px}dialog #history{flex:1}dialog .chat{min-height:180px;max-height:300px}.teacher dialog .row input{min-width:180px}@media(max-height:800px){.teacher header{padding:8px 20px}.teacher header small{font-size:11px}.teacher main{padding:8px 16px}.teacher nav{margin:7px 0}.teacher nav button{min-height:38px;padding:6px 16px}.board>.card{padding:10px}.section-label{margin:8px 0 5px}.quality{min-height:24px}.chip{padding:4px 6px;font-size:12px}.card-head h2{font-size:19px}.legend{font-size:11px}.board .card>button{min-height:32px}}
@media(max-width:800px){.corpus-layout{grid-template-columns:1fr}.teacher main{padding:8px}.teacher .board{gap:6px}.board>.card{padding:6px}.card-head{flex-wrap:wrap}.card-head h2{font-size:17px}.chip{font-size:11px;padding:3px}.teacher .legend{font-size:10px}.teacher nav .muted{display:none}}
.runtime-panel{max-width:380px;gap:8px}.runtime-panel small{line-height:1.4;max-width:210px}.runtime-panel button{font-size:13px;padding:7px 10px;min-height:34px}@media(max-width:800px){header{flex-wrap:wrap}.runtime-panel{width:100%;max-width:none}.teacher header{flex-wrap:nowrap}.teacher .runtime-panel{width:auto;max-width:210px}}
.material-aside{position:sticky;top:12px;align-self:start;min-width:0}.material-panel{margin:0;background:#f4f7ec;border:1px solid #d5dfcc;border-radius:12px;padding:14px}.material-panel summary{cursor:pointer;font-weight:700;line-height:1.7}.material-scroll{max-height:52dvh;overflow:auto;overscroll-behavior:contain;line-height:1.9;overflow-wrap:anywhere;padding-right:10px}.material-scroll p{margin:12px 0}.material-scroll img,#materialsFull img{max-width:100%;height:auto}.material-panel button{margin-top:12px;width:100%}#materialsFull{line-height:1.9;overflow-wrap:anywhere}#materialsDialog{width:min(1000px,95vw)}@media(max-width:800px){.material-aside{position:static}.material-scroll{max-height:32dvh}.corpus-layout{grid-template-columns:1fr}}

.card-head .status-unfinished{color:#ad3024;background:#fff0eb;font-weight:700}.card-head .status-complete{color:#236238;background:#e1f2d9;font-weight:700}.card-head .status-revised{color:#215dac;background:#e8f0ff;font-weight:700}.pairing-label{line-height:1.5;color:#314e40;font-weight:600}

.lesson-flow{width:100%;max-width:650px;display:block;margin:auto;font-size:17px;color:#21342e}.flow-node>rect,.flow-node>polygon{fill:#f7c5a2;stroke:#64746d;stroke-width:1.6}.flow-node text{fill:#243e33;pointer-events:none}.flow-slot{cursor:pointer}.flow-slot.mark-empty>rect,.flow-slot.mark-empty>polygon{fill:#fff;stroke-dasharray:6 4}.flow-slot.mark-good>rect,.flow-slot.mark-good>polygon{fill:#dff0d8;stroke:#44824f}.flow-slot.mark-bad>rect,.flow-slot.mark-bad>polygon{fill:#ffe1d8;stroke:#b94b35}.flow-slot:focus{outline:none;filter:drop-shadow(0 0 3px #387aba)}.flow-task{display:grid;grid-template-columns:minmax(0,1fr) 225px;gap:22px;align-items:start}.flow-bank{position:sticky;top:12px;background:#f1f5e9;border-radius:14px;padding:16px}.flow-bank p{font-size:14px;line-height:1.6}.flow-token{display:block;width:100%;margin:10px 0;touch-action:none;user-select:none;background:#ffdbbd}.flow-token.selected{outline:3px solid #3979ac}.flow-token:disabled{cursor:default}.branch-label{fill:#354d41;font-size:16px}#detail>.lesson-flow{max-height:70vh} @media(max-width:700px){.flow-task{grid-template-columns:minmax(0,1fr) 150px;gap:8px}.flow-bank{padding:8px}.flow-token{font-size:13px;padding:10px 4px}.lesson-flow{min-width:0}.flow-bank h3{font-size:16px}}
.flow-token.shaped-token{padding:0;border:0;background:transparent;min-height:48px;cursor:grab;border-radius:0}.shaped-token svg{width:100%;display:block;overflow:visible;pointer-events:none}.shaped-token polygon,.shaped-token rect,.flow-drag-ghost polygon,.flow-drag-ghost rect{fill:#f7c5a2;stroke:#64746d;stroke-width:1.6}.shaped-token text,.flow-drag-ghost text{font-size:17px;fill:#243e33}.shaped-token:disabled{opacity:.25;cursor:default}.flow-slot{touch-action:none;user-select:none;cursor:grab}.flow-drag-ghost{position:fixed;left:0;top:0;z-index:9999;pointer-events:none;filter:drop-shadow(0 7px 8px #173d3355);will-change:transform}.flow-drag-ghost svg{width:100%;display:block;overflow:visible}.drag-source{opacity:.25}.flow-slot.drop-target>polygon,.flow-slot.drop-target>rect{stroke:#2278bd;stroke-width:4;fill:#d9edff!important}.flow-slot.drop-target{filter:drop-shadow(0 0 4px #2584c966)}
.flow-slot.mark-empty>rect{fill:#f4f6f2;stroke:#d6dfd6;stroke-width:1;stroke-dasharray:none}.flow-slot.mark-empty text{fill:#77877c}
.flow-canvas .lesson-flow{max-width:800px}
.chat-message{display:flex;align-items:flex-start;gap:10px;margin:14px 0;max-width:100%}.chat-message.from-user{flex-direction:row-reverse}.chat-avatar{flex:0 0 38px;width:38px;height:38px;border-radius:9px;background:#e3e8e5;display:grid;place-items:center;font-size:25px}.from-user .chat-avatar{background:#dceadc}.message-bubble{position:relative;max-width:calc(100% - 60px);padding:11px 14px;border-radius:10px;background:#ebedee;color:#25352d;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.from-user .message-bubble{background:#a4ed94}.message-bubble:before{content:'';position:absolute;top:13px;left:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:7px solid #ebedee}.from-user .message-bubble:before{left:auto;right:-6px;border-right:0;border-left:7px solid #a4ed94}.mark-pending{color:#4a5a50;border-color:#a7b7aa;background:#eef1eb}.flow-slot.mark-pending>polygon,.flow-slot.mark-pending>rect{fill:#f7c5a2;stroke:#64746d}
.peer-draw{width:min(850px,94vw);text-align:center;padding:clamp(24px,5vw,60px);background:#f5f8ee}.peer-draw h2{font-size:clamp(24px,4vw,36px);margin-top:0}.peer-draw p{line-height:1.7}.draw-candidates{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.draw-candidates span{display:grid;place-items:center;width:48px;height:48px;border:1px solid #bdceb9;border-radius:12px;font-size:24px;background:white}.draw-number{font-size:clamp(100px,20vw,170px);font-weight:700;line-height:1.3;color:#27684c;font-variant-numeric:tabular-nums;min-height:1.3em}.draw-result{min-height:3.4em;font-weight:600}.peer-draw button{min-width:170px}
.step-guide{background:#e8f2df;border-left:5px solid #43865b;border-radius:10px;padding:12px 16px;line-height:1.6;font-weight:600;margin:-6px 0 16px}.step-jumps{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 20px}.step-jumps button{background:#f1f6ed;border-color:#9db9a6;font-weight:600}.step-jumps button:focus-visible{outline:3px solid #27684c}#peerTest,#authorFeedback,#ratingPanel{scroll-margin-top:20px}#ratingPanel{border:1px solid #dce4d9;border-radius:12px;padding:14px;margin:20px 0}#ratingPanel summary{font-weight:700;cursor:pointer}#authorFeedback>.card{margin-top:10px}

.action-end,.action-center{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:20px}.action-end{justify-content:flex-end}.action-center{justify-content:center}.inline-error{color:#a33317;max-width:28em}.next-action{outline:3px solid #bd7610!important;outline-offset:4px;box-shadow:0 0 0 9px #ffe5a5!important;position:relative}.next-action:before{content:"下一步";display:inline-block;background:#fff0bb;color:#553600;border-radius:5px;font-size:14px;padding:2px 6px;margin-right:8px;font-weight:700}#ratingPanel.next-action{margin-top:30px}button:disabled.next-action{outline:none!important;box-shadow:none!important}.notice:empty{display:none}
