:root{font-family:Arial,Microsoft YaHei,PingFang SC,sans-serif;color:#17334a;background:#e9ecef;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;padding:24px;background:#e9ecef;-webkit-font-smoothing:antialiased}button{min-height:46px;padding:0 24px;border:1px solid #bbc4ca;border-radius:8px;color:#17334a;background:#fff;font:inherit;font-weight:700;cursor:pointer}button:focus-visible{outline:3px solid #e59a23;outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.42}.workspace-shell{display:flex;align-items:flex-start;gap:16px;width:max-content;margin:0 auto}.lesson-workspace{flex:0 0 960px;width:960px}.capture-frame{width:100%;aspect-ratio:16 / 9;overflow:hidden;color:#123d63;background:#fcf8f0}.lesson-header{width:calc(100% - 64px);margin:0 auto;padding:18px 0 10px;border-bottom:3px solid #123d63;text-align:center;font-size:clamp(24px,3.6vw,36px);font-weight:800;letter-spacing:.025em}.lesson-content{display:grid;grid-template-rows:1.45fr .8fr 1fr;align-items:center;min-height:430px;padding:22px 52px 34px;text-align:center}.blind-frame{display:grid;grid-template-rows:auto 1fr}.blind-content{display:grid;place-content:center;gap:16px;padding:28px 52px 46px;text-align:center}.blind-content strong{color:#d83d29;font-size:clamp(64px,10vw,96px);line-height:1;font-weight:800}.blind-content span{color:#123d63;font-size:clamp(30px,4.8vw,46px);font-weight:500}.blind-content b{color:#07804b;font-size:clamp(34px,5.4vw,52px);font-weight:800}.english-line,.ipa-line,.chinese-line{margin:0}.english-line{color:#d83d29;font-size:clamp(48px,9vw,86px);line-height:1.05;font-weight:800;letter-spacing:-.035em;white-space:nowrap;overflow-wrap:anywhere}.ipa-line{color:#123d63;font-size:clamp(30px,5.5vw,54px);line-height:1.15;font-weight:500}.chinese-line{color:#07804b;font-size:clamp(40px,7.5vw,72px);line-height:1.15;font-weight:800;overflow-wrap:anywhere}.lesson-reveal{animation:lesson-content-enter .3s ease-out both}@keyframes lesson-content-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.lesson-reveal{animation:none}}.teacher-controls{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:154px;padding:24px 28px;border-top:1px solid #cbd1d5;color:#17334a;background:#f5f7f8}.control-copy{display:grid;gap:4px}.control-kicker,.shortcut-hint{color:#64737d;font-size:14px}.control-copy strong{font-size:22px}.control-actions{display:flex;gap:12px}.primary-action{min-width:138px;border-color:#123d63;color:#fff;background:#123d63}.capture-placeholder{background:linear-gradient(90deg,transparent 47%,rgba(18,61,99,.08) 50%,transparent 53%),#fcf8f0}.teacher-panel{border-top:1px solid #cbd1d5;color:#17334a;background:#f5f7f8}.sentence-navigator{display:grid;grid-template-columns:150px auto 1fr;align-items:end;gap:22px;min-height:118px;padding:18px 24px}.sentence-position,.panel-heading>div{display:grid;gap:3px}.sentence-position strong,.audio-status{font-size:21px}.sentence-actions,.audio-actions,.reveal-actions,.level-filter{display:flex;gap:10px}fieldset{min-width:0;margin:0;padding:0;border:0}fieldset:disabled{opacity:.62}.reveal-actions{justify-content:flex-end;align-items:center;flex-wrap:wrap}.reveal-actions legend,.level-filter legend{width:100%;margin-bottom:5px;color:#64737d;font-size:13px;font-weight:700}.reveal-actions button{min-height:40px;padding:0 13px;font-size:14px}kbd{display:inline-grid;place-items:center;width:21px;height:21px;border:1px solid currentColor;border-radius:4px;font:inherit;font-size:12px}button.is-selected,.blind-action{border-color:#123d63;color:#fff;background:#123d63}.audio-controls{display:grid;grid-template-columns:260px 1fr;align-items:center;gap:20px;min-height:116px;padding:18px 24px}.panel-heading{display:grid;gap:7px}.audio-actions{justify-content:flex-end;flex-wrap:wrap}.audio-actions button{padding:0 18px}.stop-action{border-color:#b63326;color:#b63326}.audio-error,.course-load-error{grid-column:1 / -1;margin:0;padding:10px 14px;border:1px solid #d58478;border-radius:7px;color:#8e241c;background:#fff1ef;font-weight:700}.course-load-error{margin-top:12px}.sentence-directory{position:sticky;top:24px;display:grid;grid-template-columns:44px 296px;width:340px;height:min(780px,calc(100vh - 48px));overflow:hidden;border:1px solid #c4ccd1;border-radius:10px;background:#f8f9fa;box-shadow:0 8px 26px #17334a1f;transition:width .16s ease}.sentence-directory.is-collapsed{grid-template-columns:56px 0;width:56px}.directory-toggle{display:flex;align-items:center;justify-content:flex-start;flex-direction:column;gap:10px;min-width:44px;height:100%;padding:18px 8px;border:0;border-right:1px solid #d5dadd;border-radius:0;background:#eef1f3;font-size:13px}.directory-toggle span:first-child{font-size:26px;line-height:1}.directory-toggle span:last-child{writing-mode:vertical-rl;letter-spacing:.12em}.directory-content{display:flex;flex-direction:column;min-width:296px;min-height:0;padding:18px 16px 0}.directory-content[hidden]{display:none}.directory-header{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:14px}.directory-header h2{margin:2px 0 0;color:#17334a;font-size:24px}.directory-header>strong{padding:5px 8px;border-radius:999px;color:#fff;background:#123d63;font-size:12px}.directory-search,.scene-filter{display:grid;gap:5px;margin-bottom:12px;color:#52646f;font-size:13px;font-weight:700}input,select{width:100%;min-height:42px;padding:0 11px;border:1px solid #bbc4ca;border-radius:7px;color:#17334a;background:#fff;font:inherit}input:focus-visible,select:focus-visible{outline:3px solid #e59a23;outline-offset:2px}.level-filter{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:14px}.level-filter button{min-height:36px;padding:0 4px;font-size:13px}.sentence-list{display:grid;grid-auto-rows:max-content;align-content:start;gap:8px;min-height:0;padding:0 3px 18px 0;overflow-y:auto}.sentence-item{display:grid;gap:5px;min-height:0;padding:11px;border-color:#d4dade;text-align:left}.sentence-item:hover:not(:disabled),.sentence-item.is-current{border-color:#123d63;background:#edf4f7}.sentence-item.is-current{box-shadow:inset 4px 0 #d83d29}.sentence-item-meta{display:flex;align-items:center;gap:6px;color:#64737d}.sentence-item-meta b{margin-right:auto;font-size:11px}.sentence-item-meta i,.sentence-item-meta small{font-size:10px;font-style:normal}.level-badge{padding:2px 5px;border-radius:999px;color:#fff;background:#657783}.level-核心,.level-重点{background:#123d63}.level-熟悉{background:#07804b}.level-拓展{background:#a66a12}.audio-configured{color:#52646f}.audio-incomplete{color:#b63326}.sentence-item>strong{color:#17334a;font-size:14px;line-height:1.3}.sentence-item>span:last-child{color:#536570;font-size:13px;font-weight:500}.empty-list{margin:16px 0;color:#64737d;text-align:center}@media(max-width:720px){.lesson-header{width:calc(100% - 36px);padding-top:16px}.lesson-content{min-height:auto;padding:18px 24px 24px}.teacher-controls{align-items:stretch;flex-direction:column}.control-actions{display:grid;grid-template-columns:1fr 1.4fr 1fr}button{padding:0 12px}}body:has(.audio-review-app){overflow:hidden;padding:0}.audio-review-app{--review-navy: #123d63;--review-deep: #0b2a45;--review-cream: #fbf7ef;--review-paper: #fffdf9;--review-emerald: #087a4a;--review-coral: #d84b36;--review-muted: #6b7881;--review-line: #d8ddd9;box-sizing:border-box;height:100dvh;overflow:hidden;padding:14px;color:var(--review-deep);background:#e9eeeb}.audio-review-app *,.audio-review-app *:before,.audio-review-app *:after{box-sizing:border-box}.audio-review-app h1,.audio-review-app h2,.audio-review-app h3,.audio-review-app p{margin:0}.audio-review-app button,.audio-review-app input{font:inherit}.audio-review-app button,.audio-review-app .upload-button{border:1px solid #b9c5ca;border-radius:7px;cursor:pointer}.audio-review-app button:disabled{cursor:not-allowed;opacity:.5}.audio-review-app button:focus-visible,.audio-review-app input:focus-visible,.audio-review-app .upload-button:focus-within{outline:3px solid #e9a037;outline-offset:2px}.audio-review-app .review-topbar{display:grid;grid-template-columns:minmax(300px,1fr) auto auto;align-items:center;gap:20px;height:70px;max-width:1480px;margin:0 auto 12px;padding:10px 18px;border:1px solid rgba(18,61,99,.15);border-radius:12px;background:var(--review-cream);box-shadow:0 8px 24px #0b2a4512}.audio-review-app .review-eyebrow{margin-bottom:2px;color:var(--review-emerald);font-size:10px;font-weight:900;letter-spacing:.13em}.audio-review-app .review-topbar h1{font-size:25px;line-height:1}.audio-review-app .review-summary{display:flex;gap:8px}.audio-review-app .review-summary span{padding:7px 10px;border-radius:7px;color:var(--review-emerald);background:#e1efe8;font-size:12px;font-weight:800}.audio-review-app .review-summary .summary-missing{color:#a43d2e;background:#fae8e4}.audio-review-app .review-summary strong{margin-right:3px;font-size:17px}.audio-review-app .topbar-actions{display:flex;gap:7px}.audio-review-app .topbar-actions button,.audio-review-app .manifest-link{display:inline-grid;min-height:36px;place-items:center;padding:0 13px;color:var(--review-navy);background:#fff;font-size:12px;font-weight:850;text-decoration:none;white-space:nowrap}.audio-review-app .manifest-link{border-radius:7px;color:#fff;background:var(--review-navy)}.audio-review-app .review-workspace{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(650px,1.78fr);gap:12px;height:calc(100dvh - 96px);max-width:1480px;margin:0 auto}.audio-review-app .review-panel{min-width:0;overflow:hidden;border:1px solid rgba(18,61,99,.15);border-radius:12px;background:var(--review-paper);box-shadow:0 8px 22px #0b2a450f}.audio-review-app .panel-heading{display:flex;align-items:center;min-height:56px;padding:10px 14px 8px;border-bottom:1px solid var(--review-line)}.audio-review-app .panel-heading h2{font-size:18px}.audio-review-app .panel-heading p{margin-top:2px;color:var(--review-muted);font-size:11px}.audio-review-app .sentence-directory{position:static;top:auto;display:grid;grid-template-rows:auto auto 1fr auto;grid-template-columns:minmax(0,1fr);width:auto;height:auto;transition:none}.audio-review-app .search-field{display:block;padding:9px 10px}.audio-review-app .search-field input{width:100%;height:38px;padding:0 11px;border:1px solid #b9c5ca;border-radius:7px;color:var(--review-deep);background:#fff;font-size:13px}.audio-review-app .sentence-list{display:grid;align-content:start;gap:5px;min-height:0;overflow-y:auto;padding:0 9px 6px}.audio-review-app .sentence-row{position:relative;display:grid;width:100%;gap:1px;padding:7px 36px 7px 10px;border-color:transparent;text-align:left;color:var(--review-deep);background:#f3f2ed}.audio-review-app .sentence-row:hover{border-color:#a8b8c1}.audio-review-app .sentence-row.is-selected{border-color:var(--review-navy);background:#e4edf2;box-shadow:inset 3px 0 0 var(--review-navy)}.audio-review-app .sentence-row-id{overflow:hidden;color:var(--review-emerald);font-size:9px;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.audio-review-app .sentence-row strong,.audio-review-app .sentence-row-cn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-review-app .sentence-row strong{font-size:12px;line-height:1.2}.audio-review-app .sentence-row-cn{color:var(--review-muted);font-size:10px}.audio-review-app .sentence-progress{position:absolute;top:50%;right:7px;padding:2px 4px;border-radius:4px;color:#a43d2e;background:#f9e5e1;font-size:9px;font-weight:900;transform:translateY(-50%)}.audio-review-app .sentence-progress.is-complete{color:var(--review-emerald);background:#dfede6}.audio-review-app .directory-pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:7px;padding:7px 9px 9px;border-top:1px solid var(--review-line)}.audio-review-app .directory-pagination button{min-height:30px;color:var(--review-navy);background:#fff;font-size:11px;font-weight:800}.audio-review-app .directory-pagination span{color:var(--review-muted);font-size:11px;font-weight:800}.audio-review-app .current-sentence{display:grid;grid-template-rows:auto 1fr auto}.audio-review-app .current-header{min-height:126px;padding:13px 19px;border-bottom:1px solid var(--review-line);border-left:5px solid var(--review-coral);background:var(--review-cream)}.audio-review-app .current-header p{color:var(--review-muted);font-size:10px;font-weight:800}.audio-review-app .current-header h2{overflow:hidden;margin-top:4px;color:var(--review-coral);font-size:clamp(26px,3vw,40px);line-height:1.06;text-overflow:ellipsis;white-space:nowrap}.audio-review-app .current-header span{display:block;margin-top:6px;color:var(--review-navy);font-size:17px}.audio-review-app .current-header strong{display:block;margin-top:5px;color:var(--review-emerald);font-size:19px}.audio-review-app .current-header small{display:block;margin-top:3px;color:var(--review-muted);font-size:9px}.audio-review-app .audio-slot-list{display:grid;grid-template-rows:repeat(4,minmax(76px,auto));align-content:start;gap:7px;min-height:0;overflow-y:auto;padding:10px 12px}.audio-review-app .audio-slot{padding:9px 11px;border:1px solid #d0d8da;border-radius:9px;background:#fff}.audio-review-app .audio-slot.is-missing{border-color:#e2bbb3;background:#fff9f7}.audio-review-app .slot-main{display:grid;grid-template-columns:minmax(210px,1fr) auto;align-items:center;gap:12px}.audio-review-app .slot-name{display:flex;min-width:0;align-items:center;gap:9px}.audio-review-app .slot-name>span{color:#97a1a7;font-size:10px;font-weight:900}.audio-review-app .slot-name>div{min-width:0}.audio-review-app .slot-name h3{font-size:15px}.audio-review-app .slot-name p{overflow:hidden;margin-top:3px;color:var(--review-muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.audio-review-app .slot-actions{display:flex;gap:6px}.audio-review-app .slot-actions button,.audio-review-app .upload-button,.audio-review-app .local-candidate>button{display:inline-grid;min-height:34px;place-items:center;padding:0 11px;color:var(--review-navy);background:#fff;font-size:11px;font-weight:850;white-space:nowrap}.audio-review-app .slot-actions .regenerate-button{border-color:var(--review-emerald);color:#fff;background:var(--review-emerald)}.audio-review-app .upload-button{line-height:32px}.audio-review-app .slot-actions .undo-button{color:#8b4c3e}.audio-review-app .local-candidate{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;align-items:center;gap:6px;margin-top:7px;padding:7px 8px;border-radius:7px;background:#f4f0e7}.audio-review-app .local-candidate>div{display:grid;min-width:0;gap:1px}.audio-review-app .local-candidate span{color:var(--review-coral);font-size:9px;font-weight:900}.audio-review-app .local-candidate strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.audio-review-app .local-candidate small{color:var(--review-muted);font-size:9px}.audio-review-app .local-candidate .save-button{border-color:var(--review-emerald);color:#fff;background:var(--review-emerald)}.audio-review-app .inline-error{margin-top:6px;color:#a43d2e;font-size:11px;font-weight:700}.audio-review-app .action-notice{margin:0 12px 10px;padding:7px 10px;border-radius:7px;font-size:11px}.audio-review-app .action-notice.is-success{color:#08623d;background:#e0f0e8}.audio-review-app .action-notice.is-working,.audio-review-app .action-notice.is-warning{color:#74521a;background:#fff0c9}.audio-review-app .action-notice.is-error{color:#a43d2e;background:#f9e8e4}.audio-review-app .empty-search,.audio-review-app .review-system-message{padding:20px;color:var(--review-muted);text-align:center}.audio-review-app .review-system-message{max-width:680px;margin:80px auto 0;border:1px solid var(--review-line);border-radius:12px;background:var(--review-paper)}.audio-review-app .review-system-message.is-error{color:#a43d2e}.audio-review-app.review-login-shell{display:grid;min-height:100dvh;place-items:center;background:radial-gradient(circle at 76% 18%,rgba(8,122,74,.13),transparent 28%),linear-gradient(145deg,#edf1ee,#dfe7e5)}.audio-review-app .review-login-card{width:min(430px,calc(100vw - 32px));padding:38px 40px 32px;border:1px solid rgba(18,61,99,.16);border-radius:18px;background:var(--review-paper);box-shadow:0 24px 70px #0b2a4524}.audio-review-app .review-login-card h1{margin-top:7px;font-size:31px}.audio-review-app .login-intro{margin-top:9px;color:var(--review-muted);font-size:14px}.audio-review-app .review-login-card form{display:grid;gap:15px;margin-top:28px}.audio-review-app .review-login-card label{display:grid;gap:7px;font-size:13px;font-weight:850}.audio-review-app .review-login-card input{width:100%;height:46px;padding:0 13px;border:1px solid #aebcc2;border-radius:8px;color:var(--review-deep);background:#fff}.audio-review-app .review-login-card button{height:48px;border-color:var(--review-navy);color:#fff;background:var(--review-navy);font-weight:900}.audio-review-app .review-login-card small{display:block;margin-top:20px;color:#88949a;text-align:center}.audio-review-app .login-error{color:#a43d2e;font-size:12px;font-weight:750}.audio-review-app .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:900px){body:has(.audio-review-app){overflow:auto}.audio-review-app{height:auto;min-height:100dvh;overflow:visible;padding:10px}.audio-review-app .review-topbar{grid-template-columns:1fr auto;height:auto;min-height:70px}.audio-review-app .review-summary{display:none}.audio-review-app .review-workspace{grid-template-columns:1fr;height:auto}.audio-review-app .sentence-directory{min-height:520px}.audio-review-app .current-sentence{min-height:620px}}@media(max-width:620px){.audio-review-app .review-topbar{grid-template-columns:1fr}.audio-review-app .topbar-actions{justify-content:stretch}.audio-review-app .topbar-actions>*{flex:1}.audio-review-app .slot-main{grid-template-columns:1fr}.audio-review-app .slot-actions{flex-wrap:wrap}.audio-review-app .local-candidate{grid-template-columns:1fr 1fr}.audio-review-app .local-candidate>div{grid-column:1 / -1}}
