.cave-dissolve{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:39;animation:caveDissolve 2.8s ease both}
@keyframes caveDissolve{from{opacity:1}to{opacity:0}}
#formulaStage{position:absolute;inset:0;pointer-events:none;color:#e3f3f5;overflow:hidden}
.formula-heading{position:absolute;top:4%;left:20px;right:20px;text-align:center;animation:formulaReveal 2.8s ease both}
.formula-heading>span{font-size:15px;color:#a5cdd9}
.formula-heading h2{font-size:28px;font-weight:500;margin:12px 0 8px}
.formula-heading p{font-size:16px;color:#c7b994;margin:0}
.open-equation{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);width:calc(100% - 48px);text-align:center;transition:top 2s ease,transform 2s ease;filter:drop-shadow(0 3px 10px #020711);animation:formulaReveal 3s ease both}
.open-equation>strong{display:block;font-size:32px;font-weight:600;margin-bottom:16px}
.equation-terms{display:flex;align-items:center;justify-content:center;gap:28px;font-size:38px;font-weight:600;line-height:1.45}
.equation-terms>b{font-weight:400;color:#c8b783}
.equation-terms>span{min-width:180px;white-space:nowrap}
.formula-console{position:absolute;bottom:3%;left:50%;transform:translateX(-50%);width:min(740px,calc(100% - 32px));display:flex;flex-direction:column;align-items:center;gap:16px;pointer-events:auto;transition:opacity .5s}
#keywordForm{display:flex;align-items:center;gap:12px;width:min(570px,100%)}
#keywordForm input{min-width:0;flex:1;width:100%;font:20px 'Microsoft YaHei',sans-serif;background:#061320cf;color:#e8f5fa;border:0;border-bottom:1px solid #7199ab;padding:12px;border-radius:0}
#keywordForm input:focus{outline:1px solid #ead5a1;outline-offset:3px}
#keywordForm .icon-button{width:48px;height:48px;padding:12px;flex:none}
.formula-commands{display:flex;gap:12px;align-items:center;justify-content:center}
.formula-commands button{min-height:48px;font-size:20px;padding:12px 20px}
.formula-commands .icon-button{width:48px;padding:12px}
#formulaStage[data-phase=condense] .formula-console,#formulaStage[data-phase=golden] .formula-console,#formulaStage[data-phase=ready] .formula-console{opacity:0;visibility:hidden;pointer-events:none}
#formulaStage[data-phase=condense] .open-equation{opacity:.45;transition:opacity 2s}
#formulaStage[data-phase=golden] .open-equation,#formulaStage[data-phase=ready] .open-equation{color:#ffdf92;text-shadow:0 0 18px #dc96377a,0 0 48px #d5933633}
#formulaStage[data-phase=golden] .equation-terms,#formulaStage[data-phase=ready] .equation-terms{background:linear-gradient(0deg,#d99235,#fff0c6,#e6bb61,#fff0c6);background-size:100% 250%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:goldenBreath 4s ease-in-out infinite}
#formulaStage[data-phase=golden] .formula-heading h2,#formulaStage[data-phase=ready] .formula-heading h2{opacity:0;transition:opacity .6s}
#formulaStage[data-phase=ready] .open-equation{top:25%;transform:translate(-50%,-50%) scale(.82)}
#formulaStage[data-phase=ready] .formula-heading{animation:none;opacity:0;transition:opacity 1.5s}
@keyframes goldenBreath{0%,100%{background-position:0 0;filter:drop-shadow(0 -2px 8px #f2ae4244)}50%{background-position:0 100%;filter:drop-shadow(0 -5px 14px #f2ae4277)}}
@keyframes formulaReveal{0%,35%{opacity:0}100%{opacity:1}}
@media(max-width:700px){
  .formula-heading{top:4%;left:12px;right:12px}
  .formula-heading h2{font-size:22px;margin:10px 0}
  .formula-heading>span,.formula-heading p{font-size:13px}
  .open-equation{width:calc(100% - 16px)}
  .open-equation>strong{font-size:25px;margin-bottom:14px}
  .equation-terms{font-size:23px;gap:8px;flex-wrap:wrap}
  .equation-terms>span{min-width:110px}
  #formulaStage[data-phase=golden] .equation-terms,#formulaStage[data-phase=ready] .equation-terms{font-size:22px;gap:4px;flex-wrap:wrap}
  #formulaStage[data-phase=golden] .equation-terms>span,#formulaStage[data-phase=ready] .equation-terms>span{min-width:0}
  .formula-console{bottom:2%;gap:12px}
  #keywordForm{gap:8px}
  #keywordForm input{font-size:16px;padding:10px 6px}
  .formula-commands{gap:8px;width:100%}
  .formula-commands button{font-size:16px;padding:10px 12px;min-height:44px}
  .formula-commands .icon-button{width:44px;padding:10px}
}
@media(max-height:600px){
  .formula-heading{top:2%}
  .formula-heading h2{display:none}
  .formula-heading p{font-size:12px;margin-top:5px}
  .formula-console{flex-direction:row;width:calc(100% - 32px);gap:18px;bottom:2%}
  #keywordForm{flex:1}
  .formula-commands{flex:none;width:auto}
  .formula-commands button{font-size:15px;padding:10px}
  .formula-heading>span{font-size:12px}
  .open-equation>strong{font-size:25px;margin-bottom:8px}
  .equation-terms{font-size:28px}
}
@media(prefers-reduced-motion:reduce){.formula-heading,.open-equation,.cave-dissolve{animation-duration:.01s}.equation-terms{animation:none!important}}
#homeworkList{max-width:1140px;gap:28px}
#homeworkList .kraft-envelope{display:block;position:relative;aspect-ratio:328/418;min-height:0;padding:0;background:transparent;border:0;border-radius:4px;box-shadow:none;overflow:hidden}
.kraft-art{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.kraft-art img{position:absolute;max-width:none;width:182.92683%;height:143.54067%;left:-42.68293%;top:-19.85646%}
.classified-stamp{position:absolute;top:10%;right:6%;transform:rotate(16deg);border-top:3px solid #a22e21;border-bottom:3px solid #a22e21;color:#a22e21;font:900 44px/1.05 'SimSun','Songti SC',serif;padding:2px 6px;opacity:.8;pointer-events:none}
.kraft-copy{position:absolute;top:44%;left:11%;right:11%;color:#17120b}
#homeworkList .kraft-copy h3{font-size:29px;line-height:1.35;font-weight:800;color:#17120b;margin:0 0 14px}
#homeworkList .kraft-copy .task-detail{font-size:24px;line-height:1.6;font-weight:600;text-align:center;color:#17120b;margin:0;overflow-wrap:anywhere}
@media(min-width:701px) and (max-width:1100px){
  #homeworkList{gap:20px}
  #homeworkList .kraft-copy h3{font-size:24px;margin-bottom:10px}
  #homeworkList .kraft-copy .task-detail{font-size:19px;line-height:1.5}
  .classified-stamp{font-size:34px}
}
@media(max-width:700px){
  #homeworkList{max-width:360px;gap:24px}
  #homeworkList .kraft-copy h3{font-size:26px;margin-bottom:12px}
  #homeworkList .kraft-copy .task-detail{font-size:23px;line-height:1.55}
  .classified-stamp{font-size:39px}
}
@media(min-width:701px) and (max-width:900px){#homeworkList{grid-template-columns:1fr;max-width:360px}}

/* v8.8: larger classroom workspace and fixed, touch-friendly controls. */
.module-open .topbar{top:8px;left:12px;right:12px}
.module-open .mission-title{padding:8px 18px}
.module-open .fragment-panel{inset:66px 12px 118px}
.module-open .panel-head{padding:10px 20px}
.module-open .panel-body{padding:14px 20px;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:auto;touch-action:pan-y}
.panel-body::-webkit-scrollbar{width:24px;height:24px}
.panel-body::-webkit-scrollbar-track{background:#112830;border-radius:12px}
.panel-body::-webkit-scrollbar-thumb{background:#92b9bc;border:4px solid #112830;border-radius:12px;min-height:72px}
.module-open .module-actions{gap:10px;margin-bottom:12px}
.module-open .module-actions button{font-size:21px;min-height:50px;padding:10px 18px}
.module-open .decode-data{margin-bottom:16px;padding:0 0 14px}
.module-open .decode-data h3{font-size:23px;margin:0 0 10px}
.module-open .decode-answers button{min-height:88px;padding:12px 18px}
.module-open .decode-answers button strong{font-size:clamp(24px,2vw,34px)}
.module-open #waveCanvas{height:clamp(160px,calc(100dvh - 530px),480px)}
.module-open .score-sheet img{max-height:calc(100dvh - 340px)}
.module-open .roleplay-score img{max-height:290px}
.module-open .lesson-film video{max-height:calc(100dvh - 340px)}
.control-deck{gap:16px;bottom:10px;left:12px;right:12px;padding:10px 16px}
.module-open .control-deck{grid-template-columns:180px auto minmax(140px,1fr) auto auto}
.module-open .deck-tools button{width:50px;height:52px;padding:12px}
.module-open .deck-tools button span{display:none}
.module-open .audio-now strong{font-size:21px}
.audio-now{min-width:0}.audio-now strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.repair-actions{border-left:1px solid #93d4db40;padding-left:16px}
.repair-actions .complete{min-width:164px;min-height:58px;font-size:23px;padding:12px 20px;white-space:nowrap}
.repair-actions .complete:disabled{opacity:1;background:#24383c;color:#a7b9bc;border-color:#60767b}
.track-times{font-size:16px;font-variant-numeric:tabular-nums}
.track-seek,.video-timeline input{appearance:none;-webkit-appearance:none;display:block;width:100%;height:44px;margin:0;background:transparent;cursor:pointer;touch-action:none}
.track-seek::-webkit-slider-runnable-track,.video-timeline input::-webkit-slider-runnable-track{height:12px;border-radius:8px;background:#527f89;border:1px solid #91bdc5}
.track-seek::-webkit-slider-thumb,.video-timeline input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:34px;height:34px;margin-top:-12px;border-radius:50%;border:3px solid #efffff;background:#77dce7;box-shadow:0 2px 8px #0008}
.track-seek::-moz-range-track,.video-timeline input::-moz-range-track{height:12px;border-radius:8px;background:#527f89;border:1px solid #91bdc5}
.track-seek::-moz-range-thumb,.video-timeline input::-moz-range-thumb{width:28px;height:28px;border-radius:50%;border:3px solid #efffff;background:#77dce7}
.track-seek:disabled{opacity:.4}
.round-panel .panel-head>div{display:flex;align-items:center;gap:18px}
.round-panel .panel-head h2{margin:0;font-size:27px}
.module-open .panel-body.round-demo{display:flex;flex-direction:column;padding:12px 18px;overflow:auto}
.round-demo .decode-data{display:none}
.round-demo>.module-actions{flex:none}
.round-metronome{flex:1;min-height:260px;display:flex;flex-direction:column;background:#08121b;border:1px solid #829ca54d;border-radius:8px;overflow:hidden}
.metronome-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 20px;border-bottom:1px solid #adc7d329;flex:none}
.metronome-heading h3{font-size:27px;color:#f4d79b;margin:0 0 4px}
.metronome-heading p{font-size:18px;color:#b6cbd7;margin:0}
.metronome-heading #roundStatus{font-size:17px;color:#d5e2e9}
.metronome-screens{display:grid;grid-template-columns:1fr 1fr;flex:1;min-height:160px}
.metronome-lane{position:relative;display:flex;align-items:center;justify-content:center;padding:44px 24px 20px;--rgb:61,174,255;--power:0;background:#0b1720}
.metronome-b{--rgb:255,75,100;border-left:1px solid #879cac60}
.metronome-lane h4{position:absolute;left:24px;top:14px;margin:0;font-size:26px;font-weight:600;color:rgb(var(--rgb))}
.beat-block{width:min(72%,370px);height:72%;max-height:280px;min-height:100px;border-radius:18px;background:#303943;border:2px solid #626e79;box-shadow:none;transform:scale(.98)}
.is-entered .beat-block{background:rgba(var(--rgb),calc(.12 + var(--power)*.88));border-color:rgba(var(--rgb),calc(.35 + var(--power)*.65));box-shadow:0 0 calc(8px + 48px*var(--power)) rgba(var(--rgb),calc(.05 + var(--power)*.45));transform:scale(calc(.98 + .02*var(--power)))}
.round-demo>.teacher-settings{flex:none;margin:8px 0 0}
.round-demo>.teacher-settings[open]{max-height:150px;overflow:auto}
@media(max-width:700px){
  .round-panel .panel-tag{display:none}.round-panel .panel-head h2{font-size:24px}
  .module-open .panel-body.round-demo{padding:8px}
  .round-demo .mode-controls{display:none}
  .module-open .round-demo>.module-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-bottom:8px}
  .module-open .round-demo>.module-actions button{font-size:14px;padding:8px 3px;gap:4px;min-height:44px}
  .round-demo>.module-actions button svg{width:17px;height:17px}
  .metronome-heading{display:block;padding:12px}.metronome-heading h3{font-size:22px}.metronome-heading p{font-size:14px}
  .metronome-heading #roundStatus{display:block;font-size:13px;margin-top:8px;color:#a9c1cd}
  .metronome-lane{padding:40px 10px 16px}.metronome-lane h4{left:14px;top:12px;font-size:22px}
  .beat-block{width:88%;border-radius:12px}
}
@media(prefers-reduced-motion:reduce){.beat-block,.is-entered .beat-block{transform:none}}
/* Preserve the exact upper excerpt crop from the original PPT, including offline blob URLs. */
.module-open .score-sheet .score-excerpt{position:relative;overflow:hidden;aspect-ratio:var(--excerpt-ratio);width:min(100%,1100px,calc((100dvh - 390px)*var(--excerpt-ratio)));margin:0 auto;background:#fff;border-radius:8px}
.module-open .score-sheet .score-excerpt img{position:absolute;display:block;width:var(--image-width);height:var(--image-height);left:var(--image-left);top:var(--image-top);max-width:none;max-height:none;object-fit:fill;margin:0;border-radius:0}
@media(max-width:700px){.module-open .score-sheet .score-excerpt{width:100%}}
@media(min-width:701px) and (max-width:1100px){
  .module-open .control-deck{grid-template-columns:130px auto minmax(100px,1fr) auto auto;gap:10px;padding:10px}
  .module-open .audio-now strong{font-size:18px}.module-open .deck-tools{gap:5px}
  .module-open .deck-tools button{width:44px;padding:9px}.repair-actions{padding-left:10px}
  .repair-actions .complete{min-width:138px;font-size:20px;padding:10px 14px}
}
@media(max-width:700px){
  .module-open .topbar{flex-wrap:nowrap}.module-open .mission-title{display:none}
  .module-open .fragment-panel{inset:66px 6px 220px}
  .module-open .panel-head{padding:10px 12px}.module-open .panel-body{padding:12px}
  .panel-body::-webkit-scrollbar{width:18px}
  .module-open .control-deck{left:6px;right:6px;bottom:6px;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:10px 12px}
  .module-open .seek-wrap{grid-column:1/-1;grid-row:2}
  .module-open .deck-tools{grid-column:1;grid-row:3;gap:6px}
  .module-open .deck-tools button{height:48px;width:44px;padding:10px}
  .repair-actions{grid-column:2;grid-row:3;padding-left:0;border:0}
  .repair-actions .complete{min-width:140px;min-height:50px;font-size:20px;padding:10px 12px}
  .module-open .module-actions button{font-size:18px;padding:10px 12px}
  .module-open .score-sheet img{max-height:none;max-width:100%}
}
