a.nav-link{text-decoration:none}.learner-bar{max-width:1440px;margin:12px auto;padding:10px 24px;display:flex;gap:12px;align-items:center}.learner-bar label{display:flex;gap:12px;align-items:center}.learner-bar select,.learner-bar button,.learning-page select,.learning-page input,.scope-dialog select{font:inherit;border:1px solid #ccd2c8;border-radius:10px;padding:10px 14px;background:white;color:#172019}#learning-app,#admin-app{max-width:1360px;margin:auto;padding:28px 32px 60px}.learning-hero{background:#17231c;color:#f8ffe9;border-radius:28px;padding:40px;position:relative;overflow:hidden;margin-bottom:24px}.learning-hero::after{content:"Aa";font-weight:900;font-size:180px;position:absolute;right:28px;bottom:-35px;opacity:.09;pointer-events:none}.learning-hero h1{font-size:clamp(32px,5vw,66px);line-height:1.08;margin:12px 0 18px;letter-spacing:-2px}.learning-hero h1 em{font-style:normal;color:#d9ff65}.learning-hero p{color:#bdc8bd;max-width:670px;line-height:1.8}.filters,.practice-options,.stats-filter{display:flex;gap:14px;flex-wrap:wrap;align-items:end;margin:22px 0}.filters label,.practice-options label,.stats-filter label{display:grid;gap:7px;font-size:13px}.book-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.book-card{background:#fff;border:1px solid #d7dccf;border-radius:20px;padding:24px;text-align:left;position:relative;transition:transform .18s}.book-card:hover{transform:translateY(-4px);border-color:#526344}.book-card h2{font-size:24px;margin:20px 0 8px}.book-card p{font-size:13px;color:#66715f;line-height:1.7}.book-stage{display:inline-block;background:#edf3d9;border-radius:30px;padding:6px 12px;font-size:12px}.book-card .arrow{position:absolute;right:22px;top:22px;font-size:24px}.book-panel,.writing-card,.learn-card,.stat-card{background:#fff;border:1px solid #d8ddcf;border-radius:24px;padding:28px}.book-panel h2{font-size:32px;margin:10px 0}.unit-list{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.unit-option{display:flex;gap:9px;align-items:center;background:#f3f5ec;border-radius:10px;padding:14px}.unit-option input{width:18px;height:18px}.unit-option small{display:block;color:#64705e}.learning-buttons{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.secondary{border:1px solid #cbd3c3;background:#fff;border-radius:12px;padding:13px 20px;font:inherit;cursor:pointer}.secondary:hover{background:#eff4e7}.practice-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:5px 0 22px}.practice-head h1{margin:8px 0;font-size:28px}.practice-count{font-size:20px;font-weight:750;color:#607149}.practice-grid{display:grid;grid-template-columns:240px minmax(0,1fr);gap:22px}.practice-sidebar{background:#1d2b22;color:#dce9d5;border-radius:22px;padding:24px;align-self:start}.practice-sidebar h2{font-size:18px}.practice-sidebar p{font-size:13px;line-height:1.9;color:#b5c6b0}.practice-sidebar b{color:#d9ff65;font-size:38px;display:block;margin:20px 0 4px}.listen-orb{display:block;width:96px;height:96px;border:0;border-radius:50%;margin:12px auto 20px;font-size:40px;background:#d9ff65;box-shadow:0 0 0 12px #f0f6df;color:#17231c;cursor:pointer}.listen-orb.playing{animation:listenpulse 1s infinite alternate}@keyframes listenpulse{to{box-shadow:0 0 0 22px #edf6d2}}.prompt-caption{text-align:center;color:#64705e;margin:12px 0 24px}.meaning-hint{text-align:center;font-size:23px;min-height:28px;margin:14px 0}.input-tabs{display:flex;gap:6px;margin-top:25px}.input-tabs button{border:0;padding:10px 20px;border-radius:10px;background:#f0f2e9;font:inherit;cursor:pointer}.input-tabs button.active{background:#1b2a20;color:#e7ffd0}.ink-wrap{position:relative;width:100%;height:220px;border:1px solid #d5dccf;border-radius:14px;margin-top:15px;overflow:hidden;background:#fff}.ink-lines{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 43px,#c9d3c2 44px,transparent 45px,transparent 87px,#9cae90 88px,transparent 89px,transparent 131px,#9cae90 132px,transparent 133px,transparent 175px,#c9d3c2 176px,transparent 177px);pointer-events:none}.ink-wrap canvas{display:block;width:100%;height:220px;touch-action:none;position:relative;cursor:crosshair}.keyboard-input{width:100%;margin-top:18px;font-size:32px!important;padding:20px!important;letter-spacing:3px;border:1px solid #b5c4a5!important}.recognition-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 0;min-height:54px}.recognition-row input{flex:1;min-width:140px}.learning-feedback{margin:16px 0;padding:16px;background:#f1f5e9;border-radius:12px;min-height:56px}.learning-feedback.correct{color:#23672e;background:#e7f5db}.learning-feedback.incorrect{color:#aa3d2c;background:#ffede5}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:24px}.choice-grid button{font:inherit;font-size:23px;padding:25px;border-radius:14px;border:1px solid #cbd3c3;background:white;cursor:pointer}.choice-grid button:hover{background:#e9f6ce}.mistake-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.mistake-item{border:1px solid #dbdecf;border-radius:14px;padding:20px;background:#fff}.mistake-item h3{font-size:24px;margin:8px 0}.mistake-item small{color:#b65339}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:22px 0}.stat-card{padding:22px}.stat-card b{font-size:38px;display:block;line-height:1.4}.stat-card span{font-size:13px;color:#66715f}.table-wrap{overflow:auto;background:#fff;border-radius:16px;border:1px solid #d5dccd;margin:20px 0}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap;font-size:14px}th,td{padding:14px 18px;border-bottom:1px solid #edf0e6}th{background:#eef3e5;color:#47593d}.empty-state{padding:50px;text-align:center;color:#6d7866}.scope-dialog{max-width:660px}.scope-words{display:flex;flex-wrap:wrap;gap:8px;max-height:260px;overflow:auto;margin:20px 0}.scope-words label{background:#edf2e4;padding:10px;border-radius:10px;display:flex;gap:6px}.scope-mode{display:grid;gap:10px;margin:15px 0}.mode-indicator{background:#edf3df;border-radius:10px;padding:10px 14px;font-size:12px;margin:12px 0}.learning-note{font-size:12px;color:#65725a;line-height:1.8}.finish-panel{text-align:center;padding:45px;background:#1c2b21;border-radius:28px;color:white}.finish-panel h1{font-size:42px}.finish-panel strong{font-size:60px;color:#d9ff65}.book-detail-meta{color:#73806b;line-height:1.7;font-size:13px}button:disabled{cursor:not-allowed;opacity:.5}.topbar nav{flex-wrap:wrap;gap:14px}
@media(max-width:1000px){.book-grid{grid-template-columns:repeat(2,1fr)}.unit-list{grid-template-columns:repeat(3,1fr)}.practice-grid{grid-template-columns:1fr}.practice-sidebar{display:flex;align-items:center;justify-content:space-between;gap:15px}.practice-sidebar b{font-size:26px;margin:0}.stat-grid{grid-template-columns:repeat(2,1fr)}.mistake-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){#learning-app,#admin-app{padding:18px 15px}.learning-hero{padding:26px}.book-grid,.mistake-grid{grid-template-columns:1fr}.book-panel,.writing-card{padding:20px}.unit-list{grid-template-columns:1fr 1fr}.topbar{flex-wrap:wrap;gap:15px}.topbar nav{width:100%;justify-content:space-between;font-size:12px}.learner-bar{padding:8px 16px}.practice-sidebar p{display:none}.choice-grid button{font-size:18px;padding:20px 8px}.practice-head h1{font-size:22px}.learning-buttons .primary{width:100%}.stat-card b{font-size:30px}}


/* Focused classroom workspace — 2026-10-28 */
.learning-page .topbar{min-height:78px}
.learning-page .learner-bar{margin:0 auto;padding-top:12px;padding-bottom:12px;border-bottom:1px solid #dce1d4}
.learning-page input[type=checkbox]{width:17px;height:17px;padding:0;accent-color:#405a31;vertical-align:middle}
.learning-page button:focus-visible,.learning-page a:focus-visible,.learning-page canvas:focus-visible{outline:3px solid #799b41;outline-offset:3px}
.learning-page [hidden]{display:none!important}
.is-practicing #learning-app{padding-top:14px;padding-bottom:20px}
.is-practicing footer{display:none}
.is-practicing .practice-head{margin:0 0 10px;align-items:center}
.is-practicing .practice-head h1{font-size:23px;margin:8px 0}
.is-practicing .back-button{font-size:12px;padding:5px 0}
.practice-count{font-variant-numeric:tabular-nums;background:#e9efdb;padding:9px 15px;border-radius:12px;white-space:nowrap}
.round-progress{height:5px;background:#e3e9d8;border-radius:10px;margin:0 0 16px;overflow:hidden}
.round-progress i{display:block;background:#749539;height:100%;transition:width .25s}
.is-practicing .practice-grid{grid-template-columns:184px minmax(0,1fr);gap:18px}
.is-practicing .practice-sidebar{padding:24px 20px;background:radial-gradient(circle at 90% 0,#385334 0,transparent 60%),#1a291f;position:sticky;top:16px}
.practice-sidebar .eyebrow{font-size:10px;letter-spacing:1.4px}
.is-practicing .practice-sidebar b{font-size:42px;margin-top:18px}
.is-practicing .writing-card{padding:22px 26px;border-radius:20px;box-shadow:0 7px 26px #24331a06}
.dictation-prompt{display:flex;gap:22px;align-items:center;padding:2px 0 18px;border-bottom:1px solid #ebeee5}
.dictation-prompt .listen-orb{flex:0 0 62px;width:62px;height:62px;font-size:28px;box-shadow:0 0 0 7px #edf5d9;margin:0 0 0 7px}
.dictation-prompt>div{flex:1;min-width:0}
.dictation-prompt .prompt-caption{text-align:left;margin:0 0 5px;font-size:12px;line-height:1.6}
.dictation-prompt .meaning-hint{text-align:left;margin:0;font-size:19px;min-height:0;line-height:1.5}
.speed-control,.pause-control{display:flex!important;align-items:center;gap:8px!important;color:#68765f;font-size:12px!important}
.speed-control select,.pause-control select{padding:7px 8px;font-size:12px!important;max-width:120px}
.is-practicing .input-tabs{margin:14px 0 10px;gap:4px;background:#edf1e6;width:fit-content;border-radius:10px;padding:3px}
.is-practicing .input-tabs button{padding:7px 20px;font-size:13px;background:transparent}
.is-practicing .input-tabs button.active{background:#243823;color:#f4ffe2;box-shadow:0 2px 5px #22331519}
.ink-caption{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:11px;color:#89927f;margin:3px 0 7px}
.ink-caption b{font-weight:500;color:#6a775e}
.is-practicing .ink-wrap{height:200px;margin:0;background:#fffcf4;border-color:#d4ddc5;box-shadow:inset 0 2px 12px #66824905}
.is-practicing .ink-wrap canvas{height:200px}
.is-practicing .ink-lines{background:linear-gradient(to bottom,transparent 35px,#c5d0b9 36px,transparent 37px,transparent 77px,#8faa79 78px,transparent 79px,transparent 121px,#8faa79 122px,transparent 123px,transparent 163px,#c5d0b9 164px,transparent 165px)}
.ink-tools{display:flex;align-items:center;gap:8px;margin:9px 0 1px}
.ink-tools .secondary{font-size:12px;padding:6px 12px;border-radius:8px}
.ink-tools span{font-size:11px;color:#7b886e;margin-left:auto}
.is-practicing .recognition-row{padding:9px 0 0;min-height:42px;gap:9px;font-size:12px}
.is-practicing .recognition-row input{padding:8px 10px;font-size:14px}
.is-practicing .recognition-row button{padding:9px 14px;font-size:12px}
.is-practicing .writing-options{margin:10px 0 0;gap:14px;font-size:11px}
.writing-options label{font-size:11px;display:flex}
.is-practicing .learning-feedback{margin:12px 0 0;padding:11px 14px;min-height:42px;font-size:13px;line-height:1.6}
.is-practicing .answer-controls{margin-top:12px;gap:9px;align-items:center}
.is-practicing .answer-controls .primary,.is-practicing .answer-controls .secondary{padding:11px 18px;font-size:14px;min-height:42px}
.advance-line{min-height:24px;display:flex;gap:10px;align-items:center;margin-top:6px;flex-wrap:wrap;font-size:11px;color:#778267}
.advance-line small{margin-left:auto;font-size:10px;color:#929b88}
.advance-line .text-button{font-size:11px;padding:0}
.is-practicing .keyboard-input{margin:10px 0 5px;min-height:140px;background:linear-gradient(transparent 92%,#d0dac4 93%,transparent 94%);letter-spacing:2px}
.is-practicing .choice-grid{margin:18px 0}
.is-practicing .choice-grid button{padding:21px 14px;font-size:21px}
.book-card{overflow:hidden;padding-top:28px}
.book-card::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:#bddb65}
.book-card[data-stage="初中"]::before{background:#eda36f}
.book-card[data-stage="高中"]::before{background:#b0a2df}
.count-pill{margin-left:auto;background:#e6edd7;border-radius:30px;padding:9px 15px;font-size:13px}
.mistake-grid{margin-top:22px}
.mistake-meta{display:flex;justify-content:space-between;align-items:center}
.mistake-item .last-answer{font-size:12px;background:#fbf1e9;padding:9px 11px;color:#925d43;border-radius:8px;overflow-wrap:anywhere}
.mistake-item .secondary{width:100%;font-size:13px;margin-top:8px}
.mistake-grid .empty-state{grid-column:1/-1}
.mistake-filters input{min-width:230px}
.admin-page .learning-hero{padding:28px 32px}
.admin-page .learning-hero h1{font-size:40px;margin:10px 0}
.admin-page .learning-hero h1 br{display:none}
.admin-page .learning-hero p{margin:12px 0 0}
.stats-filter input:invalid{border-color:#c56a50}
.review-priorities{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 28px}
.priority-word{padding:18px;background:#fff;border:1px solid #dbe0d1;border-radius:14px;overflow:hidden}
.priority-word h3{font-size:22px;margin:8px 0;overflow-wrap:anywhere}
.priority-word span,.priority-word p{font-size:12px;color:#78836d}
.priority-word small{display:block;height:4px;background:#edf0e6;border-radius:6px;margin-top:12px}
.priority-word small i{display:block;height:100%;background:#d4966c;border-radius:6px}
@media(max-width:1000px){
 .is-practicing .practice-grid{grid-template-columns:1fr}
 .is-practicing .practice-sidebar{position:static;padding:12px 20px;display:flex;align-items:center;justify-content:space-between}
 .is-practicing .practice-sidebar b{font-size:26px;display:inline-block;margin:0 10px 0 0}
 .is-practicing .practice-sidebar .eyebrow,.is-practicing .practice-sidebar p{display:none}
 .is-practicing .practice-sidebar span{font-size:12px}
 .review-priorities{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
 .learning-page .topbar{min-height:70px;padding:15px}
 .is-practicing #learning-app{padding:12px 12px 30px}
 .is-practicing .practice-head h1{font-size:18px}
 .is-practicing .practice-count{font-size:15px;padding:7px 10px}
 .is-practicing .writing-card{padding:16px 14px}
 .dictation-prompt{gap:14px;flex-wrap:wrap}
 .dictation-prompt .listen-orb{width:50px;height:50px;flex-basis:50px;font-size:24px}
 .dictation-prompt .meaning-hint{font-size:16px}
 .dictation-prompt .speed-control{width:100%;justify-content:flex-end;margin-top:-3px}
 .ink-caption span,.advance-line small{display:none}
 .recognition-row label{width:100%}
 .is-practicing .answer-controls .primary{width:auto;flex:1}
 .writing-options .pause-control{width:100%;justify-content:flex-end}
 .ink-tools span{font-size:10px}
 .mistake-filters label,.mistake-filters input{width:100%;min-width:0}
 .count-pill{margin-left:0}
 .admin-page .learning-hero h1{font-size:30px}
 .review-priorities{grid-template-columns:1fr 1fr}
 .priority-word{padding:13px}
}
@media(prefers-reduced-motion:reduce){.round-progress i,.book-card{transition:none}.listen-orb.playing{animation:none}}

@media(min-width:1001px) and (max-height:820px){
 .is-practicing .topbar{min-height:56px;padding:11px 30px}
 .is-practicing .learner-bar{padding-top:5px;padding-bottom:5px}
 .is-practicing .learner-bar select,.is-practicing .learner-bar button{padding:7px 12px}
 .is-practicing #learning-app{padding-top:8px}
 .is-practicing .practice-head h1{font-size:20px;margin:5px 0}
 .is-practicing .practice-head{margin-bottom:5px}
 .is-practicing .round-progress{margin-bottom:10px}
 .is-practicing .writing-card{padding:14px 20px}
 .is-practicing .dictation-prompt{padding-bottom:10px}
 .is-practicing .dictation-prompt .listen-orb{width:48px;height:48px;flex-basis:48px;font-size:25px}
 .is-practicing .input-tabs{margin:8px 0}
 .is-practicing .ink-wrap,.is-practicing .ink-wrap canvas{height:180px}
 .is-practicing .ink-tools{margin-top:6px}
 .is-practicing .writing-options{margin-top:6px}
 .is-practicing .learning-feedback{margin-top:8px;padding:8px 12px;min-height:36px}
 .is-practicing .answer-controls{margin-top:8px}
 .is-practicing .advance-line{margin-top:3px;min-height:17px}
}
@media(min-width:1001px) and (max-height:820px){.is-practicing .topbar{height:64px}}

@media(max-width:600px){.learning-page .topbar{height:auto;flex-wrap:wrap;gap:7px}.learning-page .topbar nav{display:flex;width:100%;height:auto;justify-content:space-between;gap:12px;margin:0}.learning-page .topbar .nav-link{font-size:12px;padding:10px 0}}

#ocr-status{display:block;min-height:16px;margin:4px 0 0;font-size:11px;color:#738368}.is-practicing #cancel-recognition{border-color:#a7b68d}.is-practicing .recognition-row{flex-wrap:wrap}.is-practicing .recognition-row input{min-width:100px;flex:1}

.word-audio-status{margin:2px 0 4px;color:#6c7c5e;font-size:11px;line-height:1.5;overflow-wrap:anywhere}.word-audio-status:empty{display:none}#play-word[aria-busy=true]{opacity:.65;animation:listenpulse 1s infinite alternate}

.recognition-row input{font-family:Consolas,"SFMono-Regular","Courier New",monospace;font-variant-ligatures:none;letter-spacing:.08em}
