:root{color:#17212b;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--ink:#17212b;--muted:#667085;--line:#dfe5dc;--panel:#fff;--paper:#fbfbf7;--green:#2c7a5a;--green-soft:#e7f3ec;--red:#b3261e;--red-soft:#fdebea;--gold:#a66b10;--shadow:0 18px 45px #1a221b14;background:#f6f8f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(#e7f3ecb3,#f6f8f500 240px),#f6f8f5;min-width:320px;min-height:100vh;margin:0}button,textarea,input,select{font:inherit}button{cursor:pointer}.classics-shell{min-height:100vh;padding:18px clamp(14px,2.5vw,30px) 28px}.classics-topbar{justify-content:space-between;align-items:center;gap:18px;height:70px;padding:0 4px;display:flex}.classics-brand{align-items:center;gap:13px;min-width:0;display:flex}.brand-stamp{color:#fff;background:#1f5d45;border-radius:8px;place-items:center;width:48px;height:48px;display:grid;box-shadow:0 12px 28px #1f5d4533}.classics-brand strong{font-size:20px;line-height:1.2;display:block}.classics-brand span{color:var(--muted);margin-top:4px;font-size:13px;display:block}.student-switcher{border:1px solid var(--line);background:#ffffffb8;border-radius:10px;gap:8px;padding:4px;display:flex}.student-switcher button{color:#344054;text-align:left;background:0 0;border:0;border-radius:8px;min-width:132px;padding:8px 12px}.student-switcher button.active{background:var(--green);color:#fff}.student-switcher b,.student-switcher small{display:block}.student-switcher small{opacity:.76;margin-top:2px;font-size:12px}.student-session{border:1px solid var(--line);color:#245d44;text-align:left;background:#fffc;border-radius:8px;min-width:138px;padding:8px 12px}.student-session b,.student-session small{display:block}.student-session small{color:var(--muted);margin-top:2px;font-size:12px}.sync-notice{color:#7a5410;background:#fff9ea;border:1px solid #e8c982;border-radius:7px;margin:0 0 10px;padding:9px 12px;font-size:13px}.login-required{place-items:center;display:grid}.login-required-card{border:1px solid var(--line);color:#294b3b;width:min(420px,100%);box-shadow:var(--shadow);text-align:center;background:#fff;border-radius:8px;margin-top:14vh;padding:30px}.login-required-card svg{color:var(--green)}.login-required-card h1{margin:12px 0 8px;font-size:24px}.login-required-card p{color:var(--muted);margin:0 0 20px;line-height:1.7}.login-required-card a{color:#fff;background:var(--green);border-radius:6px;padding:9px 15px;font-weight:700;text-decoration:none;display:inline-flex}.metrics-band{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:8px 0 14px;display:grid}.metric{border:1px solid var(--line);background:#ffffffdb;border-radius:8px;grid-template-columns:24px 1fr;align-items:center;gap:4px 10px;min-height:78px;padding:14px;display:grid;box-shadow:0 8px 22px #1a221b0a}.metric svg{color:var(--green);grid-row:1/span 2}.metric span{color:var(--muted);font-size:13px}.metric b{font-size:24px;line-height:1}.metric.danger b,.metric.danger svg{color:var(--red)}.classics-layout{grid-template-columns:minmax(250px,300px) minmax(0,1fr) minmax(235px,280px);align-items:start;gap:14px;display:grid}.library-panel,.reader-panel,.coach-panel{min-width:0}.library-panel,.reader-panel,.coach-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffe6;border-radius:8px}.library-panel{padding:12px;position:sticky;top:12px}.filter-row{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:8px;height:42px;padding:0 10px;display:flex}.filter-row svg{color:var(--muted);flex:none}.filter-row input{border:0;outline:0;width:100%;min-width:0}.filter-grid{grid-template-columns:1fr 1fr;gap:8px;margin:10px 0;display:grid}.filter-grid select{border:1px solid var(--line);color:#344054;background:#fff;border-radius:8px;min-width:0;height:38px;padding:0 8px}.entry-list{max-height:calc(100vh - 238px);padding-right:2px;overflow:auto}.entry-row{width:100%;min-height:62px;color:var(--ink);text-align:left;background:0 0;border:0;border-bottom:1px solid #edf1eb;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 8px;display:grid}.entry-row:hover,.entry-row.active{background:var(--green-soft)}.entry-row b,.entry-row small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.entry-row small{color:var(--muted);margin-top:4px;font-size:12px}.entry-row em{min-width:44px;color:var(--red);text-align:right;font-style:normal;font-weight:800}.reader-panel{grid-template-rows:auto minmax(0,1fr);min-height:calc(100vh - 180px);display:grid;overflow:hidden}.reader-head{border-bottom:1px solid var(--line);background:#fffef9;grid-template-columns:minmax(0,1fr);align-items:end;gap:14px;padding:20px 22px 14px;display:grid}.reader-head p,.reader-head span{color:var(--muted);margin:0;font-size:13px}.reader-head h1{letter-spacing:0;margin:4px 0;font-size:clamp(26px,3.5vw,42px);line-height:1.08}.tab-strip{flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:none;display:flex}.tab-strip button{border:1px solid var(--line);color:#344054;background:#fff;border-radius:8px;align-items:center;gap:6px;height:36px;padding:0 10px;font-weight:700;display:inline-flex}.tab-strip button.active{border-color:var(--green);background:var(--green);color:#fff}.content-scroll,.dictation-panel,.review-panel,.review-empty{min-height:0;max-height:calc(100vh - 288px);padding:22px;overflow:auto}.original-text p,.training-text p{margin:0 0 16px;font-family:Songti SC,STSong,Noto Serif CJK SC,serif;font-size:clamp(22px,2.2vw,31px);line-height:1.75}.original-text p{color:#1f2937}.original-source{color:var(--muted);white-space:nowrap;margin-left:.55em;font-size:.68em;font-weight:600}.recite-toolbar{align-items:center;gap:12px;margin-bottom:18px;display:flex}.recite-toolbar button,.dictation-actions button,.reset-button{background:var(--green);color:#fff;border:0;border-radius:8px;justify-content:center;align-items:center;gap:7px;height:38px;padding:0 14px;font-weight:800;display:inline-flex}.recite-toolbar span{color:var(--muted);font-size:13px}.training-session{gap:24px;display:grid}.training-prompt,.embedded-assessment,.rating-confirmation{border-bottom:1px solid var(--line);padding-bottom:24px}.training-section-head{justify-content:space-between;align-items:center;gap:18px;margin-bottom:14px;display:flex}.training-section-head h2{margin:0 0 3px;font-size:18px}.training-section-head span{color:var(--muted);font-size:13px}.show-original-button{border:1px solid var(--line);height:38px;color:var(--green);background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-weight:800;display:inline-flex}.training-text{border:1px solid var(--line);background:var(--paper);border-radius:8px;min-height:150px;padding:20px}.training-text p:last-child{margin-bottom:0}.embedded-assessment{padding-inline:0}.rating-confirmation{border-bottom:0;grid-template-columns:minmax(220px,.7fr) minmax(440px,1.3fr);align-items:end;gap:24px;padding-bottom:0;display:grid}.rating-confirmation>div:first-child>span,.rating-confirmation small{color:var(--muted);font-size:13px}.rating-confirmation h2{margin:3px 0 4px;font-size:24px}.rating-confirmation p{color:#475467;margin:0 0 5px;line-height:1.55}.rating-confirmation .recitation-rating{border:0;margin:0;padding:0}.recitation-rating button.recommended{outline:2px solid var(--green);outline-offset:2px}.recitation-rating button:disabled{opacity:.6;cursor:not-allowed}.hint-levels{border:1px solid var(--line);background:#f6f8f4;border-radius:7px;grid-template-columns:repeat(4,minmax(92px,1fr));margin:0 0 22px;display:inline-grid;overflow:hidden}.hint-levels button{border:0;border-right:1px solid var(--line);color:#617066;background:0 0;min-height:36px;font-size:13px;font-weight:800}.hint-levels button:last-child{border-right:0}.hint-levels button.active{color:#fff;background:var(--green)}.recitation-rating{border-top:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:24px;padding-top:18px;display:grid}.recitation-rating button{border:1px solid var(--line);color:#334155;background:#fff;border-radius:7px;min-height:44px;font-weight:800}.recitation-rating button:hover{border-color:var(--green);color:var(--green);background:var(--green-soft)}.recitation-rating .again{color:#ad3730;background:#fff7f6;border-color:#e8bbb7}.recitation-rating .hard{color:#9a6408;background:#fffaf0;border-color:#eed7a5}.recitation-rating .good{color:#246c50;background:#f4fbf6;border-color:#b9dcc9}.recitation-rating .easy{color:#1f5d45;background:#e6f5ea;border-color:#8bc3a5}.assessment-engine{color:var(--muted);margin:0 0 10px;font-size:12px;font-weight:700}.masked-line{color:#424d57;word-break:break-all}.text-section{margin-bottom:24px}.text-section h2,.diff-box h2,.coach-card h2,.coach-card h3{margin:0 0 12px;font-size:17px}.text-section p{color:#26323f;margin:0 0 10px;font-size:16px;line-height:1.78}.empty-text,.history-note{color:var(--muted)!important}.dictation-panel{grid-template-rows:minmax(340px,1fr) auto;gap:12px;display:grid}.dictation-panel textarea{resize:vertical;border:1px solid var(--line);background:var(--paper);border-radius:8px;outline:0;width:100%;min-height:340px;padding:18px;font-family:Songti SC,STSong,Noto Serif CJK SC,serif;font-size:22px;line-height:1.75}.dictation-panel textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #2c7a5a1f}.dictation-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.dictation-actions span{color:var(--muted)}.review-empty{text-align:center;color:var(--muted);align-content:center;place-items:center;display:grid}.review-empty svg{color:var(--green)}.review-empty h2{color:var(--ink);margin:12px 0 4px}.review-score{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px;display:grid}.data-point{border:1px solid var(--line);background:#fff;border-radius:8px;align-content:center;gap:6px;min-height:70px;padding:12px;display:grid}.data-point span{color:var(--muted);font-size:13px}.data-point b{font-size:21px}.diff-box{border:1px solid var(--line);background:#fff;border-radius:8px;margin-bottom:18px;padding:14px}.diff-stream{flex-wrap:wrap;gap:5px;line-height:1;display:flex}.diff-stream span{border-radius:6px;place-items:center;min-width:27px;height:27px;font-weight:800;display:inline-grid}.diff-stream .miss{background:var(--red-soft);color:var(--red)}.diff-stream .extra{color:var(--gold);background:#fff4dc}.coach-panel{gap:12px;display:grid;position:sticky;top:12px}.coach-card{padding:16px}.coach-card p{color:var(--muted);margin:0;line-height:1.68}.stat-stack{gap:8px;margin-top:14px;display:grid}.reset-button{width:100%;color:var(--red);background:#fff;border:1px solid #e7b7b3}.speech-assessment{align-content:start;gap:18px;display:grid}.assessment-toolbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding-bottom:16px;display:flex}.assessment-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.assessment-mode{border:1px solid var(--line);background:#f7f9f6;border-radius:6px;padding:3px;display:inline-flex}.assessment-mode button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:7px 10px;font-size:13px}.assessment-mode button.active{background:var(--green);color:#fff}.assessment-mode button:disabled{cursor:not-allowed;opacity:.7}.guided-line{border-left:3px solid var(--green);background:#f1f7f2;padding:14px 16px}.guided-line span{color:var(--green);font-size:12px;font-weight:700}.guided-line p{color:var(--ink);font-family:var(--serif);margin:5px 0 0;font-size:20px;line-height:1.65}.assessment-toolbar h2,.assessment-toolbar p,.assessment-playback h3,.assessment-comparison h3,.assessment-issues h3{margin:0}.assessment-toolbar p{color:var(--muted);margin-top:5px}.assessment-start,.assessment-stop{color:#fff;border:0;flex:none;justify-content:center;align-items:center;gap:8px;min-width:130px;display:inline-flex}.assessment-start{background:var(--green)}.assessment-stop{background:var(--red)}.assessment-start:disabled{opacity:.55;cursor:wait}.assessment-message{border:1px solid var(--line);border-radius:6px;padding:12px 14px}.assessment-message.error{color:var(--red);background:var(--red-soft);border-color:#e7b7b3}.assessment-empty{min-height:260px;color:var(--muted);border:1px dashed var(--line);text-align:center;border-radius:6px;align-content:center;place-items:center;gap:8px;display:grid}.assessment-empty h3,.assessment-empty p,.assessment-live p,.assessment-issues p{margin:0}.assessment-empty svg{color:var(--green)}.assessment-live{background:snow;border:1px solid #e7b7b3;border-radius:6px;padding:18px}.assessment-live>div{color:var(--red);align-items:center;gap:9px;font-weight:800;display:flex}.recording-dot{background:var(--red);border-radius:50%;width:10px;height:10px;animation:1.2s ease-in-out infinite recording-pulse}@keyframes recording-pulse{50%{opacity:.35;transform:scale(.82)}}.assessment-live p{min-height:82px;font-family:var(--serif);margin-top:16px;font-size:24px;line-height:1.75}.assessment-live p span{color:var(--muted)}.assessment-playback{grid-template-columns:auto minmax(240px,480px);align-items:center;gap:18px;display:grid}.assessment-playback audio{width:100%}.assessment-result{gap:18px;display:grid}.assessment-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.assessment-metrics .data-point{border:1px solid var(--line);background:#fff;border-radius:6px;min-width:0}.assessment-comparison,.assessment-fluency,.assessment-issues{border:1px solid var(--line);background:#fff;border-radius:6px;padding:18px}.assessment-section-head{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.assessment-section-head span{color:var(--muted);font-size:13px}.assessment-diff{font-family:var(--serif);margin:16px 0 0;font-size:28px;line-height:1.9}.assessment-diff span{border-bottom:2px solid #0000}.assessment-diff .diff-correct,.assessment-diff .diff-punctuation{color:var(--ink)}.assessment-diff .diff-missing{color:var(--red);background:var(--red-soft);border-color:var(--red)}.assessment-diff .diff-wrong{color:#9a6314;ruby-position:over;background:#fff4dc;border-bottom:2px solid #c58a2d;margin-inline:1px}.assessment-diff .diff-wrong rt{color:#9a6314;font-family:var(--sans);font-size:12px;line-height:1}.assessment-diff .diff-homophone{color:#7256a0;ruby-position:over;background:#f3edff;border-bottom:2px dotted #8d72bc;margin-inline:1px}.assessment-diff .diff-homophone rt{color:#7256a0;font-family:var(--sans);font-size:12px;line-height:1}.assessment-diff .diff-extra{color:var(--red);margin-inline:2px;font-size:.72em}.assessment-recognition-note{color:#7256a0;margin:12px 0 0;font-size:13px}.assessment-diff .diff-pause{color:#2f6f89;font-family:var(--sans);vertical-align:middle;align-items:center;gap:3px;margin-inline:4px;font-size:11px;display:inline-flex}.assessment-diff .diff-pause i{background:#4a91ad;width:2px;height:30px;display:block}.fluency-details{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.fluency-details .data-point{border:1px solid var(--line);background:var(--paper);border-radius:6px;min-width:0}.fluency-summary{color:var(--muted);margin:12px 0 0;line-height:1.65}.assessment-issues ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px;margin:10px 0 0;padding:0;list-style:none;display:grid}.assessment-issues li{border-bottom:1px solid var(--line);padding:9px 0}.assessment-issues>p{color:var(--muted);margin-top:10px}@media (width<=1100px){.classics-layout{grid-template-columns:minmax(230px,290px) minmax(0,1fr)}.coach-panel{grid-column:1/-1;grid-template-columns:1fr 1fr auto;position:static}.reset-button{height:100%}}@media (width<=820px){.classics-topbar{flex-direction:column;align-items:stretch;height:auto}.student-switcher{width:100%}.student-switcher button{flex:1;min-width:0}.metrics-band,.review-score{grid-template-columns:repeat(2,minmax(0,1fr))}.classics-layout,.coach-panel{grid-template-columns:minmax(0,1fr)}.reader-panel{order:1}.library-panel{order:2}.coach-panel{order:3}.library-panel,.coach-panel{position:static}.entry-list,.content-scroll,.dictation-panel,.review-panel,.review-empty{max-height:none}.entry-list{max-height:360px}.reader-head{grid-template-columns:minmax(0,1fr)}.tab-strip{justify-content:flex-start;max-width:none}.assessment-metrics,.fluency-details{grid-template-columns:repeat(2,minmax(0,1fr))}.rating-confirmation{grid-template-columns:minmax(0,1fr);align-items:stretch}}@media (width<=520px){.classics-shell{padding-inline:10px}.metrics-band,.filter-grid,.review-score{grid-template-columns:1fr}.recitation-rating{grid-template-columns:repeat(2,minmax(0,1fr))}.hint-levels{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.hint-levels button:nth-child(2){border-right:0}.hint-levels button:nth-child(-n+2){border-bottom:1px solid var(--line)}.tab-strip button span{display:none}.content-scroll,.dictation-panel,.review-panel,.review-empty,.reader-head{padding-inline:14px}.assessment-toolbar,.assessment-section-head,.assessment-playback{flex-direction:column;grid-template-columns:1fr;align-items:stretch}.assessment-actions{justify-content:flex-start}.assessment-start,.assessment-stop{width:100%}.assessment-metrics,.fluency-details,.assessment-issues ul{grid-template-columns:1fr}.assessment-diff{font-size:23px}}
