:root{--green:#1f8f55;--dark:#163525;--muted:#66776b;--soft:#f2faf5;--line:#d8eadf;--danger:#c93232}*{box-sizing:border-box}body{margin:0;background:#f5fbf7;color:var(--dark);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Noto Sans SC','PingFang SC','Microsoft YaHei',Arial,sans-serif}.wrap{max-width:1120px;margin:0 auto;padding:36px 24px}h1{font-size:42px;margin:0 0 24px}h2{font-size:28px;margin:0 0 18px}.card{background:white;border:1px solid var(--line);border-radius:22px;padding:28px;margin:20px 0;box-shadow:0 20px 50px rgba(22,53,37,.06)}.ok{border-color:#a7dfbd;background:#f0fbf4}.bad{border-color:#ffc3c3;background:#fff4f4}.muted{color:var(--muted);line-height:1.75}.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:white;color:var(--green);font-weight:800;text-decoration:none;border-radius:999px;padding:12px 20px;cursor:pointer;font-size:16px}.btn.primary{background:var(--green);border-color:var(--green);color:white}.btn.danger{color:var(--danger)}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.stat{font-size:36px;font-weight:900;margin-bottom:8px}.table{width:100%;border-collapse:separate;border-spacing:0;margin-top:14px}.table th,.table td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:top}.table th{background:#eef8f1}.table tr:hover td{background:#fbfefc}.pill{display:inline-block;background:#e8f7ee;color:var(--green);padding:6px 10px;border-radius:999px;font-weight:800;font-size:13px}.form label{display:block;font-weight:800;margin:14px 0 8px}.input{width:100%;max-width:560px;border:1px solid var(--line);border-radius:14px;padding:14px 16px;font-size:16px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}pre{white-space:pre-wrap;overflow:auto;background:#f7fbf8;border:1px solid var(--line);border-radius:16px;padding:18px;color:#284235}.question{border:1px solid var(--line);border-radius:18px;padding:20px;margin:18px 0;background:#fff}.choices{display:grid;gap:10px;margin-top:14px}.choice{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:#fbfffc}.topbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:18px}.small{font-size:13px}@media(max-width:760px){.grid{grid-template-columns:1fr}h1{font-size:34px}.wrap{padding:24px 16px}.table{font-size:14px}.table th,.table td{padding:10px}}

.choice.option{display:block;cursor:pointer;transition:.12s ease;position:relative}
.choice.option:hover{border-color:#9ed8b3;background:#f4fbf6}
.choice.option input{margin-right:10px;transform:scale(1.1)}
.choice.option.selected{border-color:var(--green);background:#edf9f1;box-shadow:0 0 0 2px rgba(31,143,85,.08)}
.progressbar{height:14px;border-radius:999px;background:#e8f2ec;overflow:hidden;border:1px solid var(--line);margin:12px 0}
.progressbar>div{height:100%;width:0;background:var(--green);transition:width .2s ease}
.result-card{border:1px solid var(--line);border-radius:18px;padding:18px;margin:14px 0;background:#fbfffc}
.result-card.correct{border-color:#9ed8b3;background:#f2fbf5}
.result-card.wrong{border-color:#ffc3c3;background:#fff7f7}
.notice{border-left:5px solid var(--green);padding:12px 16px;background:#f0fbf4;border-radius:14px;margin:12px 0;color:var(--muted);line-height:1.7}
.fixed-submit{position:sticky;bottom:0;background:rgba(245,251,247,.92);backdrop-filter:blur(10px);padding:16px 0;margin-top:16px;border-top:1px solid var(--line)}

.analysis-form{border:1px solid var(--line);border-radius:18px;padding:18px;margin:16px 0;background:#fbfffc}
.analysis-form h3{margin-top:0}.analysis-field{margin:14px 0}.analysis-field label{display:block;font-weight:850;margin-bottom:8px;color:var(--dark)}
.textarea{width:100%;min-height:88px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;font-size:16px;line-height:1.6;font-family:inherit;resize:vertical;background:white;color:var(--dark)}
.textarea:focus{outline:2px solid rgba(31,143,85,.18);border-color:var(--green)}
/* v3.03: make incomplete analysis requirements unmistakable. */
#analysisSubmitBtn:disabled{cursor:not-allowed;opacity:.58;background:#aebeb4;border-color:#aebeb4;color:#f7faf8}
.analysis-required-hint{border-left:5px solid;border-radius:14px;padding:12px 16px;margin:18px 0 4px;font-weight:750;line-height:1.65}
.analysis-required-hint.pending{border-color:#d39422;background:#fff8e8;color:#805b18}
.analysis-required-hint.complete{border-color:var(--green);background:#f0fbf4;color:#176b35}
.final-answer { border-left: 4px solid #ddd; }
.ok-soft { background: rgba(44, 160, 44, 0.06); }
.bad-soft { background: rgba(220, 80, 80, 0.06); }
.tag { display:inline-block; padding:2px 8px; border-radius:999px; font-size:12px; margin-left:6px; }
.tag.ok { background:#e8f7ed; color:#176b35; }
.badtag { background:#fdeaea; color:#9b1c1c; }
details { margin-top: 10px; }
summary { cursor: pointer; font-weight: 600; }


/* v2.39: 顶部音频 + 当前题紧凑区域 */
.practice-inner{border:0;padding:0;margin:18px 0 0;background:transparent;box-shadow:none}
body.answering-mode #status{display:none}
body.answering-mode #transcriptDetails{display:none}
body.answering-mode #practiceStage{margin-top:8px;padding-top:22px}
body.answering-mode #practiceStage h2#setTitle{font-size:24px;margin-bottom:8px}
body.answering-mode #setMeta{margin:0 0 10px}
body.answering-mode #audioBox{margin-bottom:12px}
body.answering-mode #audioBox .notice{padding:8px 12px;margin:8px 0;font-size:14px}
body.answering-mode #audioPlayer{height:42px}
body.answering-mode #inlineProgress{margin-top:12px}
body.answering-mode #inlineProgress h2{font-size:22px;margin-bottom:8px}
body.answering-mode .question{margin-top:12px}
body.answering-mode .question h3{margin-top:0}
@media(max-width:760px){body.answering-mode #practiceStage{padding:18px}body.answering-mode #audioPlayer{height:40px}}


/* v2.39: 答题开始后压缩顶部，确保音频和第 1 题同屏可见 */
body.answering-mode .wrap{padding-top:18px}
body.answering-mode .topbar{margin-bottom:8px;align-items:center}
body.answering-mode .topbar h1{font-size:26px;margin:0}
body.answering-mode .topbar .actions{margin-top:0}
body.answering-mode #practiceStage{padding:18px 24px;margin-top:8px}
body.answering-mode #setTitle,
body.answering-mode #setMeta,
body.answering-mode #inlineProgress,
body.answering-mode #firstPassCard>h2,
body.answering-mode #audioBox .notice,
body.answering-mode #audioBox .muted{display:none!important}
body.answering-mode #audioBox{margin:0 0 10px!important}
body.answering-mode #audioPlayer{height:38px;display:block}
body.answering-mode #timerPanel .grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}
body.answering-mode #timerPanel .card{padding:8px 10px;border-radius:14px}
body.answering-mode #timerPanel .stat{font-size:22px;margin-bottom:0}
body.answering-mode #timerPanel .muted{font-size:12px;line-height:1.2}
body.answering-mode .question{padding:14px 16px;margin:8px 0 10px;border-radius:16px}
body.answering-mode .question h3{font-size:22px;margin:0 0 8px}
body.answering-mode .question .muted{display:none}
body.answering-mode .choices{gap:8px;margin-top:8px}
body.answering-mode .choice{padding:10px 12px}
body.answering-mode .fixed-submit{padding:10px 0;margin-top:8px}
@media(max-width:760px){body.answering-mode .topbar{align-items:flex-start}body.answering-mode .topbar h1{font-size:22px}body.answering-mode #practiceStage{padding:14px}body.answering-mode #timerPanel .grid{grid-template-columns:1fr 1fr 1fr}}


/* v2.40: 错题二刷区就近复听音频 */
.retry-audio-box{border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin:12px 0 16px;background:#f7fbf8}
.retry-audio-box .muted{margin:0 0 8px}
.retry-audio-box audio{height:40px}

/* v2.41: 老师端音频路径绑定 */
.audio-bind-row{display:grid;grid-template-columns:220px minmax(260px,1fr) auto auto minmax(120px,auto);gap:12px;align-items:center;border:1px solid var(--line);border-radius:16px;padding:14px;margin:12px 0;background:#fbfffc}
.audio-bind-row .input{max-width:none}
.audio-save-status{font-weight:700}
@media(max-width:900px){.audio-bind-row{grid-template-columns:1fr}.audio-bind-row .btn{justify-content:center}}
.preview-box{margin-top:18px}.preview-pre{white-space:pre-wrap;background:#f3fbf6;border:1px solid #d8efe1;border-radius:16px;padding:16px;line-height:1.65;max-height:360px;overflow:auto}.word-import-form input[type=file]{padding:18px;background:#fff}
