:root{color:#1b2a2f;background:#f3f6f4;font-family:Inter,Microsoft YaHei,PingFang SC,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f3f6f4}button,input,select,textarea{font:inherit}button{cursor:pointer}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:#eef3f1}.login-panel{width:min(420px,100%);display:flex;flex-direction:column;gap:16px;padding:28px;border:1px solid #d5dfda;border-radius:8px;background:#fff;box-shadow:0 16px 42px #2438331f}.brand-block,.student-topbar,.practice-topbar,.toolbar,.user-strip,.question-actions,.section-heading,.score-strip,.level-progress-meta,.paper-progress-meta,.media-item,.media-image,.card-action{display:flex;align-items:center;gap:12px}.brand-block h1,.student-topbar h1,.question-header h2,.section-heading h3{margin:0}.brand-block p,.eyebrow,.paper-card small,.part-title small,.wrong-row small{color:#667a72;font-size:13px}.brand-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:8px;color:#fff;background:#24746f}.student-shell,.practice-shell,.benefits-shell{min-height:100vh;padding:24px}.student-topbar,.practice-topbar{justify-content:space-between;flex-wrap:wrap;margin-bottom:16px}.user-strip,.score-strip,.level-progress-strip,.notice,.error-text,.empty-state,.paper-card,.progress-sidebar,.question-panel,.wrong-panel,.answer-key-panel,.benefits-panel{border:1px solid #d5dfda;border-radius:8px;background:#fff}.user-strip,.score-strip{min-height:42px;padding:6px 8px 6px 12px}.score-action{border:1px solid #d5dfda;color:#1b2a2f}.score-strip strong{color:#24746f;font-size:18px}.level-progress-strip{flex:1 1 320px;min-width:260px;padding:8px 12px}.level-progress-meta{justify-content:space-between;margin-bottom:6px}.level-progress-meta span,.level-progress-strip small{color:#667a72;font-size:12px;font-weight:700}.level-progress-meta strong{color:#24746f;font-size:13px}.level-progress-track{height:8px;overflow:hidden;border-radius:999px;background:#dce5e1}.level-progress-bar{height:100%;border-radius:inherit;background:#24746f;transition:width .2s ease}.level-progress-strip small{display:block;margin-top:6px}.toolbar{margin-bottom:16px}.notice,.error-text,.empty-state{padding:10px 12px;font-size:13px}.notice{margin-bottom:16px;color:#28534c;background:#e2f2ee;border-color:#b9ded5}.copy-toast{position:fixed;top:50%;left:50%;z-index:30;width:min(360px,calc(100vw - 32px));transform:translate(-50%,-50%);padding:12px 14px;border:1px solid #b9ded5;border-radius:8px;color:#1f514a;background:#e2f2ee;box-shadow:0 14px 34px #2438332e}.copy-toast.error,.error-text{color:#823232;background:#f9e8e8;border-color:#edc5c5}.primary-button,.secondary-button,.icon-button,.review-button,.text-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;border:0;border-radius:6px}.primary-button{padding:0 16px;color:#fff;background:#24746f}.secondary-button{padding:0 14px;color:#24534e;background:#dcebe7}.icon-button{width:38px;color:#24534e;background:#dcebe7}.text-button{min-height:30px;padding:0 10px;color:#5c3f1f;background:#f1e5d7}button:disabled{cursor:default;opacity:.55}label{display:flex;flex-direction:column;gap:6px;color:#3f514b;font-size:13px;font-weight:600}input,textarea{width:100%;border:1px solid #ccd9d4;border-radius:6px;padding:10px 11px;color:#1b2a2f;background:#fff;outline:none}textarea{resize:vertical;line-height:1.55}input:focus,textarea:focus{border-color:#24746f;box-shadow:0 0 0 3px #24746f1f}.paper-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.paper-card{min-height:260px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:18px;text-align:left;color:#1b2a2f}.paper-card:hover{border-color:#24746f;box-shadow:0 12px 28px #2438331a}.paper-card strong{line-height:1.35}.paper-stats{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.paper-stats span{min-width:0;padding:8px;border:1px solid #dce5e1;border-radius:6px;background:#f6faf8}.paper-stats strong{display:block;color:#24746f;font-size:18px}.paper-stats small{display:block;margin-top:2px;font-weight:700}.paper-progress{width:100%;display:grid;gap:6px}.paper-progress-meta{justify-content:space-between;width:100%}.paper-progress-meta span,.paper-progress-meta strong{color:#667a72;font-size:12px;font-weight:700}.paper-progress-track{width:100%;height:8px;overflow:hidden;border-radius:999px;background:#dce5e1}.paper-progress-bar{height:100%;border-radius:inherit;background:#24746f;transition:width .2s ease}.card-action{margin-top:auto;color:#24746f;font-weight:700}.practice-grid{display:grid;grid-template-columns:280px minmax(0,1fr) 280px;gap:16px;align-items:start}.progress-sidebar,.question-panel,.wrong-panel,.answer-key-panel,.benefits-panel{min-width:0;padding:16px}.progress-sidebar,.side-stack{position:sticky;top:16px}.sidebar-paper{display:grid;gap:6px;margin-bottom:16px}.sidebar-paper span{color:#24746f;font-size:13px;font-weight:700}.part-nav,.side-stack,.wrong-list{display:flex;flex-direction:column;gap:12px}.part-group{display:grid;gap:8px}.part-title{display:flex;justify-content:space-between;gap:10px;color:#32453f;font-weight:700}.question-dots{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px}.question-dot{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:36px;border:1px solid #d5dfda;border-radius:6px;color:#536861;background:#f8faf9}.question-dot.active{border-color:#24746f;color:#173f3c;background:#e3f1ed}.question-dot.correct{color:#23724c}.question-dot.mastered{color:#2f6f89;background:#edf6f8}.question-dot.wrong{color:#9b3434}.question-dot.unsure{color:#805515}.question-dot.failed{color:#842b2b}.question-header,.section-heading{display:flex;justify-content:space-between;gap:12px;margin-bottom:14px}.answer-pill{align-self:flex-start;border-radius:999px;padding:6px 10px;color:#24534e;background:#dcebe7;font-size:13px;font-weight:700}.answer-pill.wrong{color:#842b2b;background:#f4dede}.answer-pill.mastered{color:#2f6175;background:#e1f0f4}.answer-pill.retrying{color:#6a4b16;background:#f3e6c8}.result-banner{display:grid;gap:5px;margin-bottom:14px;border:1px solid #d5dfda;border-radius:6px;padding:10px 12px;color:#40534d;background:#f5f8f6;font-weight:700}.result-banner small{color:inherit;font-size:12px;font-weight:600}.score-result{width:fit-content;border-radius:999px;padding:2px 8px;color:#fff;background:#24746f;font-size:12px}.score-result.muted{color:#40534d;background:#dce5e1}.result-banner.correct{color:#1d633e;border-color:#b9ddc8;background:#e4f4ea}.result-banner.mastered{color:#2f6175;border-color:#b7d7df;background:#e8f5f8}.result-banner.transient{border-style:dashed}.result-banner.correct .score-result{background:#23724c}.result-banner.wrong{color:#842b2b;border-color:#edc5c5;background:#f9e8e8}.result-banner.wrong .score-result{background:#9b3434}.result-banner .score-result.muted{color:#40534d;background:#dce5e1}.writing-feedback-panel{display:grid;gap:12px;margin-bottom:14px;border:1px solid #bfd8e0;border-radius:6px;padding:12px;color:#28434b;background:#f0f8fa}.writing-feedback-panel.pending{color:#5b4a22;border-color:#e2d2a8;background:#fbf6e8;font-weight:700}.writing-feedback-panel.failed{color:#842b2b;border-color:#edc5c5;background:#f9e8e8;font-weight:700}.writing-feedback-panel p,.writing-feedback-panel ul,.writing-feedback-panel blockquote{margin:0}.writing-feedback-panel ul{display:grid;gap:6px;padding-left:20px}.writing-score-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.writing-score-grid div,.writing-suggestions div{min-width:0;border:1px solid #d8e8ec;border-radius:6px;padding:8px;background:#fff}.writing-score-grid span,.writing-suggestions small{display:block;color:#667a72;font-size:12px;font-weight:700}.writing-score-grid strong{display:block;margin-top:3px;color:#2f6175;font-size:18px}.writing-suggestions{display:grid;gap:8px}.writing-suggestions span,.writing-suggestions strong{display:block;overflow-wrap:anywhere}.writing-suggestions strong{margin-top:4px;color:#24534e}.writing-feedback-panel blockquote{border-left:3px solid #2f6175;padding-left:10px;color:#32453f;white-space:pre-wrap}.part-prompt,.question-prompt{color:#536861;line-height:1.55}.reading-block,.question-text,.part-material{white-space:pre-wrap;line-height:1.65}.reading-block{max-height:360px;overflow:auto;margin:14px 0;border-left:4px solid #24746f;padding:12px 14px;background:#f5f9f7}.media-strip{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}.media-item,.media-image{min-height:40px;border:1px solid #d5dfda;border-radius:6px;padding:8px 10px;color:#24534e;background:#f8faf9;text-decoration:none}.media-item audio{max-width:260px}.listening-audio-panel{display:grid;gap:10px;margin:14px 0}.listening-audio-item{justify-content:space-between;width:100%}.listening-audio-item audio{width:min(520px,100%);max-width:100%}.listening-transcript-review{display:grid;gap:12px;border:1px solid #d5dfda;border-radius:8px;padding:12px;background:#f8faf9}.ai-help-actions{display:flex;margin-top:16px}.ai-help-panel{background:#f7fbff;border:1px solid #c9dff3;border-radius:14px;margin-top:14px;overflow-wrap:anywhere;padding:18px}.ai-help-header{align-items:center;display:flex;gap:12px;justify-content:space-between}.ai-help-header h3,.ai-help-panel h4,.ai-help-panel p,.ai-help-panel blockquote{margin-top:0}.ai-help-header span{color:var(--muted);font-size:12px}.ai-help-loading,.ai-help-error,.ai-help-summary{margin-bottom:12px}.ai-help-facts{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 16px}.ai-help-facts div{background:#fff;border-radius:10px;padding:10px}.ai-help-facts dt{color:var(--muted);font-size:12px}.ai-help-facts dd{font-weight:700;margin:4px 0 0}.ai-help-evidence-list,.ai-help-option-analysis ul,.ai-help-language-points ul{padding-left:20px}.ai-help-panel blockquote{border-left:3px solid #7aaad1;font-family:Georgia,serif;margin-bottom:6px;padding-left:12px}.ai-help-error{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.ai-help-disclaimer{border-top:1px solid #dce9f5;color:var(--muted);font-size:12px;margin-bottom:0;padding-top:12px}.listening-ai-help-block{background:#fff;border-radius:10px;margin-top:12px;padding:14px}.listening-transcript-controls,.listening-transcript-error{display:flex;align-items:center;justify-content:space-between;gap:12px}.listening-transcript-controls span{color:#667a72;font-size:13px;font-weight:700}.listening-transcript-error{color:#823232}.listening-transcript-blocks{display:grid;gap:12px}.listening-transcript-block{display:grid;gap:10px;min-width:0;border:1px solid #dce5e1;border-radius:7px;padding:12px;background:#fff}.listening-transcript-block h3,.listening-transcript-block p{margin:0}.listening-transcript-text{overflow-wrap:anywhere;white-space:pre-wrap;line-height:1.7}.listening-transcript-block .secondary-button{justify-self:start}.listening-transcript-missing{color:#805515}.listening-materials,.part-image-materials{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:14px 0}.listening-material-link,.part-image-material-link{display:block;overflow:hidden;border:1px solid #d5dfda;border-radius:6px;background:#f8faf9}.listening-material-image,.part-image-material-image{display:block;width:100%;max-height:620px;object-fit:contain;background:#f8faf9}.listening-part-panel{display:grid;gap:14px}.listening-part-panel .question-header{margin-bottom:0}.listening-question-list{display:grid;gap:14px}.listening-question-item{display:grid;gap:12px;border-top:1px solid #e1e8e4;border-left:3px solid transparent;padding:14px 0 0 12px}.listening-question-item:first-child{border-top:0;padding-top:0}.listening-question-item.active{border-left-color:#24746f;background:#f7fbf9}.listening-question-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.listening-question-title{border:0;padding:0;color:#1b2a2f;background:transparent;font-size:18px;font-weight:700;text-align:left}.listening-question-title:hover,.listening-question-item.active .listening-question-title{color:#24746f}.listening-question-body{display:grid;gap:12px}.listening-choice-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.listening-question-item .result-banner{margin-bottom:0}.listening-question-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.question-body{display:grid;gap:14px}.choice-list{display:grid;gap:10px}.choice-option{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start;border:1px solid #d5dfda;border-radius:6px;padding:12px;color:#263934;background:#fff;font-weight:500}.choice-option.selected{border-color:#24746f;background:#e8f4f0}.choice-option.disabled{cursor:default;opacity:.8}.choice-option input{width:auto;margin-top:2px}.choice-option.image-choice{align-items:stretch}.choice-content{display:grid;gap:10px;min-width:0}.choice-option-image{display:block;width:100%;max-height:230px;object-fit:contain;border:1px solid #e1e8e4;border-radius:6px;background:#f8faf9}.short-answer{max-width:420px}.writing-box{display:grid;gap:8px}.writing-box span{justify-self:end;color:#667a72;font-size:13px}.question-actions{flex-wrap:wrap;justify-content:space-between;margin-top:18px}.wrong-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:8px;align-items:center;border:1px solid #e1e8e4;border-radius:6px;padding:8px}.wrong-row button:first-child{min-width:0;border:0;padding:0;text-align:left;color:#1b2a2f;background:transparent}.answer-key-panel textarea{margin-bottom:10px}.benefits-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,1fr) minmax(0,1.1fr);gap:16px;align-items:start}.benefits-panel{display:grid;gap:14px}.score-summary-panel small,.benefit-list-item small{color:#667a72;font-size:12px;font-weight:700}.score-summary-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.score-summary-metrics div{display:grid;gap:4px;border:1px solid #e1e8e4;border-radius:6px;padding:10px;background:#f8faf9}.score-summary-metrics span{color:#667a72;font-size:12px;font-weight:700}.score-summary-metrics strong{color:#24746f;font-size:20px}.benefit-list{display:grid;gap:10px}.benefit-list-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #e1e8e4;border-radius:6px;padding:12px;background:#f8faf9}.benefit-list-item p{margin:6px 0;color:#536861;line-height:1.45}.benefit-title-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.user-benefit-item{align-items:start}.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;color:#40534d;background:#dce5e1;font-size:12px;font-weight:700}.status-pill.active{color:#24534e;background:#dcebe7}.status-pill.used{color:#2f6175;background:#e1f0f4}.confirm-overlay{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:24px;background:#1b2a2f61}.confirm-dialog{width:min(440px,100%);display:grid;gap:16px;border:1px solid #d5dfda;border-radius:8px;padding:18px;background:#fff;box-shadow:0 18px 46px #24383338}.confirm-dialog-header,.confirm-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.confirm-dialog h2,.confirm-dialog p,.confirm-summary{margin:0}.confirm-dialog h2{font-size:20px}.confirm-dialog p{color:#536861;line-height:1.5}.confirm-summary{display:grid;gap:8px}.confirm-summary div{display:grid;grid-template-columns:112px minmax(0,1fr);gap:10px;border:1px solid #e1e8e4;border-radius:6px;padding:10px;background:#f8faf9}.confirm-summary dt{color:#667a72;font-size:12px;font-weight:700}.confirm-summary dd{margin:0;color:#1b2a2f}.confirm-actions{justify-content:flex-end;flex-wrap:wrap}.vocabulary-shell{background:#f3f6f4}.vocabulary-toolbar,.vocabulary-search,.vocabulary-detail-heading,.vocabulary-status-actions,.vocabulary-dialog-header,.vocabulary-dialog-actions{display:flex;align-items:center;gap:10px}.vocabulary-toolbar{flex-wrap:wrap;margin-bottom:16px}.vocabulary-search{flex:1 1 320px;flex-direction:row;border:1px solid #ccd9d4;border-radius:6px;padding-left:10px;background:#fff}.vocabulary-search input{border:0;box-shadow:none}.vocabulary-toolbar select{min-height:42px;border:1px solid #ccd9d4;border-radius:6px;padding:0 10px;color:#1b2a2f;background:#fff}.vocabulary-grid{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr);gap:16px;align-items:start}.vocabulary-list-panel,.vocabulary-detail-panel{min-width:0;border:1px solid #d5dfda;border-radius:8px;padding:16px;background:#fff}.vocabulary-list,.vocabulary-personal-form,.vocabulary-sources{display:grid;gap:10px}.vocabulary-list-item{display:grid;gap:7px;width:100%;border:1px solid #e1e8e4;border-radius:7px;padding:12px;color:#1b2a2f;background:#fff;text-align:left}.vocabulary-list-item.active,.vocabulary-list-item:hover{border-color:#24746f;background:#f1f8f5}.vocabulary-list-item div,.vocabulary-list-item footer{display:flex;justify-content:space-between;gap:10px}.vocabulary-list-item p,.vocabulary-list-item small,.vocabulary-list-item footer{margin:0;color:#536861}.vocabulary-list-item small,.vocabulary-list-item footer{font-size:12px}.load-more{width:100%;margin-top:12px}.vocabulary-detail-heading{justify-content:space-between;margin-bottom:14px}.vocabulary-detail-heading h2,.vocabulary-dialog-header h2{margin:0}.vocabulary-content-status{margin-bottom:12px;border-radius:6px;padding:9px 11px;color:#40534d;background:#edf2ef}.vocabulary-content-status.pending{color:#6a4b16;background:#fbf3df}.vocabulary-content-status.failed{color:#842b2b;background:#f9e8e8}.vocabulary-meaning{font-size:18px;font-weight:700}.vocabulary-detail-panel blockquote{display:grid;gap:6px;margin:12px 0;border-left:3px solid #24746f;padding-left:12px;color:#32453f}.vocabulary-detail-panel blockquote small{color:#667a72}.vocabulary-personal-form{margin:18px 0;border-top:1px solid #e1e8e4;padding-top:16px}.vocabulary-status-actions{flex-wrap:wrap;margin-bottom:18px}.vocabulary-sources article,.vocabulary-source-preview,.vocabulary-save-result{display:grid;gap:6px;border:1px solid #e1e8e4;border-radius:6px;padding:10px;background:#f8faf9}.vocabulary-sources article p,.vocabulary-save-result p{margin:0;white-space:pre-wrap}.vocabulary-sources article small,.vocabulary-source-preview span{color:#667a72;font-size:12px}.vocabulary-dialog-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;overflow:auto;padding:20px;background:#1b2a2f6b}.vocabulary-dialog{width:min(620px,100%);display:grid;gap:14px;border:1px solid #d5dfda;border-radius:8px;padding:18px;background:#fff;box-shadow:0 18px 46px #24383338}.vocabulary-dialog-header{justify-content:space-between;align-items:flex-start}.vocabulary-dialog-actions{justify-content:flex-end;flex-wrap:wrap}.status-pill.learning{color:#24534e;background:#dcebe7}.status-pill.mastered{color:#2f6175;background:#e1f0f4}.status-pill.archived{color:#6a4b16;background:#f3e6c8}.selectable-vocabulary-text{cursor:text}.selectable-vocabulary-text::selection,.selectable-vocabulary-text *::selection{color:#173f3c;background:#bfe4d8}@media(max-width:1180px){.practice-grid{grid-template-columns:240px minmax(0,1fr)}.side-stack{position:static;grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:820px){.student-shell,.practice-shell,.benefits-shell{padding:16px}.student-topbar,.practice-topbar,.question-header,.listening-question-header,.question-actions{align-items:flex-start;flex-direction:column}.listening-question-actions{justify-content:stretch}.listening-question-actions .primary-button,.listening-question-actions .secondary-button,.listening-transcript-controls .secondary-button,.listening-transcript-error .secondary-button{width:100%;justify-content:center}.listening-transcript-controls,.listening-transcript-error,.ai-help-actions,.ai-help-error{align-items:stretch;flex-direction:column}.ai-help-actions .secondary-button,.ai-help-error .secondary-button{justify-content:center;width:100%}.ai-help-facts,.practice-grid,.benefits-grid,.side-stack{grid-template-columns:1fr}.progress-sidebar{position:static}.score-strip,.level-progress-strip,.user-strip{width:100%;justify-content:space-between}.media-item audio{max-width:100%}.benefit-list-item,.score-summary-metrics,.writing-score-grid{grid-template-columns:1fr}.benefit-list-item .primary-button,.benefit-list-item .secondary-button{width:100%}.confirm-overlay{padding:16px}.confirm-summary div{grid-template-columns:1fr;gap:4px}.confirm-actions .primary-button,.confirm-actions .secondary-button{flex:1 1 140px}.vocabulary-grid{grid-template-columns:1fr}.vocabulary-toolbar>*,.vocabulary-dialog-actions .primary-button,.vocabulary-dialog-actions .secondary-button{width:100%}}
