:root{--font-serif:"Source Han Serif SC", "Noto Serif CJK SC", "Noto Serif SC", "Songti SC", "SimSun", serif;--bg:#f7f6f2;--surface:#fffdf8;--soft:#f0f3ef;--input:#fffdf8;--text:#344038;--text-strong:#17201a;--muted:#68756d;--border:#d8ded8;--border-strong:#c2cbc4;--accent:#2f6f63;--accent-strong:#24584f;--focus:#2f6f633d;--button:#fff;--button-text:var(--text-strong);--button-border:var(--border-strong);--disabled-bg:#edf1ee;--disabled-border:#d7dfd8;--disabled-text:#98a59c;--danger:#a23a31;--success:#2c7a5a;--warning-bg:#fff7ea;--warning-border:#e6c78a;--warning-text:#7a5a14;--wrong-bg:#fde9e7;--wrong-text:#9f3a31;--missing-bg:#f5ebcf;--missing-text:#8b5e0f;--extra-bg:#e5f0f2;--extra-text:#335f69;color:var(--text);background:var(--bg);font-family:var(--font-serif);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{font-family:var(--font-serif);background:var(--bg);color:var(--text);margin:0;line-height:1.8}button,input,select,textarea{font:inherit;font-family:var(--font-serif)}h1,h2,h3,p{overflow-wrap:anywhere;letter-spacing:0}h1{color:var(--text-strong);letter-spacing:0;font-size:28px;line-height:1.2}h2{color:var(--text-strong);letter-spacing:0;font-size:22px;line-height:1.25}.app-shell{min-height:100vh;padding:26px 22px 48px}.app-header{border-bottom:1px solid #d8ded8e6;justify-content:space-between;align-items:center;gap:18px;max-width:1080px;margin:0 auto 18px;padding:6px 2px 18px;display:flex}.app-header h1{color:var(--text-strong);margin:0;font-size:28px;line-height:1.15}.app-header p{color:var(--muted);margin:6px 0 0;font-size:13px;line-height:1.75}.settings-button,.icon-button{min-height:38px;color:var(--text-strong);font:inherit;cursor:pointer;background:#fffdf8eb;border:1px solid #c2cbc4e6;border-radius:10px;padding:0 14px;font-size:14px;font-weight:600}.settings-button:hover,.icon-button:hover{border-color:var(--accent);color:var(--accent-strong);background:#f3f8f5}.icon-button{width:40px;padding:0;font-size:22px;line-height:1}.wizard-shell{max-width:1080px;margin:0 auto}.panel{background:var(--surface);border:1px solid #d8ded8f2;border-radius:18px;padding:20px;box-shadow:0 1px #131c1805}.panel__header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.panel__header h2{margin:4px 0 0}.panel__action{flex:none}.eyebrow{color:var(--accent);letter-spacing:0;margin:0;font-size:12px;font-weight:600}.notice{border:1px solid var(--warning-border);background:var(--warning-bg);color:var(--warning-text);border-radius:14px;margin-bottom:16px;padding:12px 14px;font-size:14px;line-height:1.75}.notice--compact{margin-bottom:12px;font-size:13px}.form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.form-grid--api{grid-template-columns:minmax(220px,1fr) 160px minmax(180px,.7fr)}.field,.check-field{min-width:0;color:var(--text);flex-direction:column;gap:8px;font-size:14px;font-weight:500;display:flex}.field--wide{grid-column:span 2}.check-field{flex-direction:row;justify-content:end;align-items:center;padding:32px 10px 9px;font-weight:600}.check-field input{width:18px;height:18px}input,select,textarea{box-sizing:border-box;border:1px solid var(--border-strong);background:var(--input);width:100%;color:var(--text-strong);font:inherit;letter-spacing:0;border-radius:12px}input,select{min-height:42px;padding:0 12px}textarea{resize:vertical;min-height:160px;padding:12px;line-height:1.8}.textarea--source{min-height:240px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus);outline:none}.status,.hint,.error-text{margin:12px 0 0;font-size:14px;line-height:1.55}.status--ready{color:var(--success)}.status--muted,.hint{color:var(--muted)}.error-text{color:var(--danger)}.metric{min-height:30px;color:var(--text);background:var(--soft);border-radius:999px;align-items:center;padding:0 10px;font-size:13px;font-weight:600;display:inline-flex}.inline-tools,.control-row{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.button{border:1px solid var(--button-border);background:var(--button);min-height:40px;color:var(--button-text);font:inherit;letter-spacing:0;cursor:pointer;border-radius:12px;padding:0 14px;font-size:14px;font-weight:600}.button:hover:not(:disabled){border-color:var(--accent);background:#f4f8f5}.button:disabled{color:var(--disabled-text);background:var(--disabled-bg);border-color:var(--disabled-border);cursor:not-allowed}.button--strong{background:var(--accent);border-color:var(--accent);color:#fff}.button--secondary{background:var(--surface);color:var(--text)}.button--danger{background:var(--danger);border-color:var(--danger);color:#fff}.stepper{scrollbar-width:thin;gap:10px;margin-bottom:18px;padding:2px 0 8px;display:flex;overflow-x:auto}.stepper__item{min-width:160px;min-height:52px;color:var(--text);text-align:left;cursor:pointer;background:#fffdf8e6;border:1px solid #d8ded8f2;border-radius:14px;flex:0 0 160px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;padding:10px 12px;display:grid}.stepper__item:disabled{cursor:not-allowed;opacity:.52}.stepper__item span{background:var(--soft);width:24px;height:24px;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.stepper__item strong{min-width:0;color:var(--text-strong);font-size:12px;font-weight:600;line-height:1.35}.stepper__item--active{border-color:var(--accent);background:#edf7f3}.stepper__item--active span,.stepper__item--done span{background:var(--accent);color:#fff}.stepper__item--done strong{color:var(--accent-strong)}.step-card{background:var(--surface);border:1px solid #d8ded8f2;border-radius:18px;min-height:560px;padding:22px;box-shadow:0 1px #131c1805}.step-card__header{max-width:760px;margin-bottom:18px}.step-card__header h2{color:var(--text-strong);margin:4px 0 8px;font-size:22px;font-weight:700;line-height:1.3}.step-card__header p:last-child{color:var(--muted);margin:0;font-size:14px;line-height:1.85}.source-meta{margin-top:12px}.step-actions,.wizard-navigation,.toggle-bar{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.wizard-navigation{justify-content:space-between;padding:14px 0}.target-summary{background:var(--soft);border:1px solid #d8ded8e6;border-radius:14px;gap:4px;margin:16px 0;padding:12px 14px;display:grid}.target-summary span{color:var(--muted);font-size:12px;font-weight:750}.target-summary strong{color:var(--text-strong);font-size:15px;line-height:1.75}.modal-backdrop{z-index:30;background:#1219266b;justify-content:flex-end;display:flex;position:fixed;inset:0}.settings-modal{background:var(--surface);width:min(560px,100%);min-height:100vh;padding:22px;overflow-y:auto;box-shadow:-12px 0 34px #1219261f}.settings-modal__header,.settings-modal__footer{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.settings-modal__header strong{color:var(--text-strong);font-size:20px;display:block}.settings-modal__header span{color:var(--muted);font-size:13px}.settings-modal__footer{justify-content:flex-end;margin:16px 0 0}.settings-modal .panel{border:0;padding:0}.settings-modal .panel__header{display:none}.settings-modal .form-grid,.settings-modal .form-grid--api{grid-template-columns:1fr}.settings-modal .field--wide{grid-column:auto}.settings-modal .check-field{justify-content:flex-start;padding:2px 0}.paragraph-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.paragraph-card{background:var(--soft);width:100%;min-height:86px;color:var(--text);text-align:left;cursor:pointer;border:1px solid #d8ded8f2;border-radius:14px;grid-template-columns:1fr auto;gap:6px 10px;padding:12px;display:grid}.paragraph-card:hover{border-color:var(--accent)}.paragraph-card--active{border-color:var(--accent);background:#edf7f3}.paragraph-card span,.paragraph-card strong{color:var(--text-strong);font-size:14px}.paragraph-card small{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;grid-column:1/-1;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.reference-summary{border:1px solid var(--border);background:var(--soft);color:var(--text);border-radius:8px;gap:4px;margin-top:16px;padding:12px 14px;font-size:14px;line-height:1.55;display:grid}.reference-summary strong{color:var(--text-strong)}.reference-summary small{color:var(--muted)}.reference-list{gap:10px;margin-top:16px;display:grid}.reference-tree{gap:8px;margin:8px 0 0;padding-left:20px;list-style:none;display:grid}.reference-tree--root{margin-top:0;padding-left:0}.reference-node{min-width:0}.reference-row{background:var(--surface);width:100%;min-height:42px;color:var(--text);text-align:left;cursor:pointer;border:1px solid #d8ded8f2;border-radius:14px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px 10px;display:grid}.reference-row:hover{border-color:var(--accent)}.reference-row--active{border-color:var(--accent);background:#edf7f3}.reference-row span{overflow-wrap:anywhere}.reference-row small{color:var(--muted);white-space:nowrap}.marker-pill{min-width:30px;min-height:26px;color:var(--accent-strong);background:#f7faf8;border:1px solid #d8ded8f2;border-radius:999px;justify-content:center;align-items:center;padding:0 8px;font-size:13px;font-weight:600;display:inline-flex}.sentence-list{background:var(--surface);border:1px solid #d8ded8f2;border-radius:14px;margin-top:16px;padding:14px}.sentence-list h3{color:var(--text-strong);margin:0 0 10px;font-size:15px}.sentence-list p{color:var(--text);grid-template-columns:28px 1fr;gap:8px;margin:8px 0 0;line-height:1.8;display:grid}.sentence-list span{background:var(--soft);width:24px;height:24px;color:var(--muted);border-radius:6px;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:inline-flex}.recorder-strip{border:1px solid var(--border);color:var(--muted);background:var(--soft);border-radius:8px;justify-content:space-between;gap:16px;margin-top:14px;padding:12px 14px;font-size:14px;display:flex}.recorder-strip div{align-items:center;gap:8px;display:inline-flex}.training-target{background:var(--soft);color:var(--text);border:1px solid #d8ded8f2;border-radius:14px;padding:12px 14px;line-height:1.75}.training-target strong{color:var(--text-strong);font-size:14px}.dot{background:var(--muted);border-radius:50%;width:9px;height:9px}.dot--live{background:var(--danger)}.audio-player{width:100%;margin-top:14px;display:block}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.stats-grid--compact{margin-top:10px}.stat{background:var(--soft);border:1px solid #d8ded8f2;border-radius:14px;min-width:0;padding:12px}.stat span{color:var(--muted);font-size:12px;font-weight:700;display:block}.stat strong{color:var(--text-strong);margin-top:4px;font-size:20px;line-height:1.1;display:block}.issue-list{flex-direction:column;gap:8px;margin-top:14px;display:flex}.issue-row{color:var(--text);border:1px solid #d8ded8f2;border-radius:14px;grid-template-columns:62px repeat(3,minmax(0,1fr));align-items:center;gap:10px;padding:10px;font-size:13px;display:grid}.issue-row strong{color:var(--text-strong);margin-bottom:3px;font-size:12px;display:block}.badge{border-radius:999px;justify-content:center;align-items:center;min-height:26px;padding:0 10px;font-weight:600;display:inline-flex}.badge--wrong{color:var(--wrong-text);background:var(--wrong-bg)}.badge--missing{color:var(--missing-text);background:var(--missing-bg)}.badge--extra{color:var(--extra-text);background:var(--extra-bg)}.badge--matched{color:var(--success);background:#dcfae6}.badge--partial{color:var(--missing-text);background:var(--missing-bg)}.score-grid{gap:10px;margin-top:14px;display:grid}.score-section{background:var(--soft);border:1px solid #d8ded8f2;border-radius:14px;padding:14px}.score-section--warning{background:#fffaf0;border-color:#e6c78ae6}.score-section--neutral{background:var(--soft);border-color:#d8ded8f2}.score-section h3{color:var(--text-strong);margin:0 0 10px;font-size:15px}.score-section p{color:var(--muted);margin:0;font-size:14px;line-height:1.65}.item-result-list{gap:8px;display:grid}.item-result-row{background:var(--surface);color:var(--text);border:1px solid #d8ded8f2;border-radius:14px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;font-size:13px;display:grid}.item-result-row strong,.item-result-row small{overflow-wrap:anywhere;display:block}.item-result-row strong{color:var(--text-strong);font-size:13px;line-height:1.5}.item-result-row small{color:var(--muted);margin-top:4px;line-height:1.5}.item-result-row em{color:var(--muted);font-style:normal;font-weight:800}.char-diff-details{color:var(--text);font-size:14px}.char-diff-details summary{cursor:pointer;font-weight:750}.empty-state{border:1px dashed var(--border-strong);color:var(--muted);background:var(--soft);border-radius:8px;margin:0;padding:18px}.empty-state strong{color:var(--text-strong);margin-bottom:10px;display:block}.empty-state--center{align-content:center;justify-items:start;gap:10px;min-height:220px;display:grid}.loading-state{min-height:260px;color:var(--muted);align-content:center;justify-items:center;gap:12px;display:grid}.loading-state--inline{grid-template-columns:auto 1fr;align-content:center;justify-items:start;min-height:0;padding:12px 0}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:30px;height:30px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.analysis-result,.keyword-result,.memorize-card-grid,.recitation-reference,.ai-review,.local-score{gap:12px;display:grid}.analysis-result section,.voice-section,.ai-review section,.local-score{background:var(--soft);border:1px solid #d8ded8f2;border-radius:14px;padding:14px}.analysis-result h3,.voice-section h3,.ai-review h3,.ai-review h4,.local-score strong{color:var(--text-strong);margin:0 0 8px;font-size:15px;font-weight:600}.analysis-result p,.voice-section p,.ai-review p,.local-score span{color:var(--muted);margin:0;font-size:14px;line-height:1.65}.analysis-list{gap:10px;display:grid}.analysis-list article,.keyword-item,.memorize-card,.compact-recitation-card{background:var(--surface);border:1px solid #d8ded8f2;border-radius:14px;gap:10px;padding:12px;display:grid}.analysis-list article strong,.keyword-item strong,.memorize-card p,.compact-recitation-card p{color:var(--text-strong);line-height:1.65}.analysis-list article p,.analysis-list article small,.analysis-list article em{color:var(--muted);margin:0;font-size:14px;line-height:1.8}.analysis-list article em{color:var(--danger);font-style:normal}.keyword-item header,.memorize-card,.compact-recitation-card{grid-template-columns:auto minmax(0,1fr);align-items:start;display:grid}.keyword-chip-list{flex-wrap:wrap;gap:8px;display:flex}.keyword-chip{background:var(--soft);min-height:30px;color:var(--text-strong);border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:600;display:inline-flex}.keyword-chip small,.keyword-chip em{color:var(--muted);font-size:12px;font-style:normal;font-weight:700}.keyword-chip--core{background:#e5f4eb}.keyword-chip--important{background:var(--missing-bg)}.keyword-chip--supporting{background:var(--extra-bg)}.memorize-card-grid{margin-top:16px}.memorize-card__body{gap:10px;min-width:0;display:grid}.memory-line{gap:4px;min-height:34px;display:grid}.memory-line--original{align-content:center;min-height:68px}.memory-line strong{color:var(--muted);font-size:12px;font-weight:600}.memory-line p{color:var(--text-strong);overflow-wrap:anywhere;margin:0;line-height:1.85}.mask-lines{gap:10px;width:min(100%,620px);display:grid}.mask-lines span{background:linear-gradient(90deg,#dde4dc,#f1f4f1);border-radius:999px;height:16px;display:block}.mask-lines span:nth-child(2){width:72%}.mask-lines--compact span{width:70%}.blur-text{filter:blur(6px);-webkit-user-select:none;user-select:none;pointer-events:none}.recitation-reference{margin:16px 0}.tts-player{background:var(--soft);border:1px solid #d8ded8f2;border-radius:14px;gap:8px;margin-top:12px;padding:12px 14px;display:grid}.tts-player span{color:var(--muted);font-size:13px;font-weight:750}.compact-recitation-card small{color:var(--muted);margin-top:4px;font-size:13px;display:block}.compact-recitation-card__body{gap:10px;min-width:0;display:grid}.memory-line--hint p{color:var(--accent-strong)}.score-summary{background:#edf7f3;border:1px solid #c2cbc4f2;border-radius:14px;align-items:baseline;gap:10px;padding:12px 14px;display:inline-flex}.score-summary strong{color:var(--accent-strong);font-size:24px;line-height:1}.score-summary span{color:var(--muted);font-size:14px;font-weight:600}.item-review-list{gap:10px;display:grid}.item-review{background:var(--surface);border:1px solid #d8ded8f2;border-radius:14px;grid-template-columns:auto auto 1fr;align-items:center;gap:10px;padding:10px 12px;display:grid}.item-review strong{color:var(--text-strong);font-size:13px;font-weight:600}.item-review p{color:var(--muted);grid-column:1/-1;margin:0;line-height:1.75}.item-review small{color:var(--muted);text-transform:uppercase;justify-self:end;font-size:12px}.item-review--correct{background:#f2fbf6;border-color:#2c7a5a38}.item-review--partial{background:#fff9ee;border-color:#e6c78a8c}.item-review--missing,.item-review--wrong{background:#fff3f2;border-color:#a23a3140}.voice-section+.voice-section{margin-top:14px}.ai-review{gap:12px;margin-top:12px}.assist-grid{grid-template-columns:1fr;gap:10px;display:grid}.assist-block{background:var(--soft);border:1px solid #d8ded8f2;border-radius:14px;padding:14px}.assist-block h3{color:var(--text-strong);margin:0 0 8px;font-size:15px}.assist-block p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.65}.preline-text{white-space:pre-line}.skeleton-list{gap:8px;display:grid}.skeleton-list p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.65}.assist-list{color:var(--muted);margin:0;padding-left:20px;font-size:14px;line-height:1.65}.assist-list li+li{margin-top:8px}@media (width<=1100px){.app-header,.wizard-navigation{flex-wrap:wrap;align-items:flex-start}}@media (width<=760px){.app-shell{padding:18px}.app-header{align-items:flex-start;gap:12px;margin-bottom:14px}.stepper{padding-bottom:10px}.step-card{min-height:0;padding:18px}.form-grid,.form-grid--api,.stats-grid{grid-template-columns:1fr}.field--wide{grid-column:auto}.check-field{justify-content:flex-start;padding:4px 0}.issue-row,.reference-row,.item-result-row,.keyword-item header,.memorize-card,.compact-recitation-card,.paragraph-list{grid-template-columns:1fr}.stepper__item{flex-basis:148px;min-width:148px}}
