.class-join-modal{max-width:520px;width:min(92vw,520px)}.class-join-modal p{line-height:1.6}.class-join-form{display:grid;gap:12px;margin:16px 0}.class-join-form label{display:grid;gap:5px;font-weight:600}.class-join-form input{box-sizing:border-box;width:100%;padding:10px 12px;border:1px solid #cbd5e1;border-radius:9px;font:inherit}.class-join-form button{padding:11px}.class-join-message{color:#0f766e}.class-joined{border-top:1px solid #dbe4ef;padding-top:12px}.class-joined h3{margin:0 0 8px;font-size:1rem}.class-joined-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 0}.class-joined-row button{border:0;background:transparent;color:#b42318;cursor:pointer}.class-join-note{font-size:.85rem;color:#64748b}.class-joined-head,.class-task-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.class-joined-head h3{margin:0}.class-joined-head button,.class-task-row button{border:1px solid #abc7ea;border-radius:7px;background:#f0f6ff;color:#1558ad;padding:6px 9px;white-space:nowrap}.class-task-row{padding:8px 0;border-top:1px solid #e5eaf0}.class-task-row small{display:block;color:#64748b;margin-top:3px}.class-task-row button:disabled{opacity:.5;cursor:not-allowed}.class-room-card{margin-top:12px;border:1px solid #dce5ef;border-radius:10px;padding:12px}.class-room-card h4{margin:12px 0 7px}.class-feedback{margin:12px 0;padding:10px 12px;border:1px solid #b7d8ca;border-radius:10px;background:#f1faf6}.class-feedback h4{margin:0 0 8px;color:#14604b}.class-feedback-item{padding:9px 0;border-top:1px solid #d7e9df;overflow-wrap:anywhere}.class-feedback-item p{margin:5px 0}.class-feedback-item small{color:#567366}.class-feedback-item a{display:block;margin-top:5px;font-weight:600}.assignment-reminder{width:min(92vw,560px);max-height:min(85vh,720px);overflow-y:auto}.assignment-reminder>p{color:#52677d;line-height:1.6}.assignment-reminder-list{display:grid;gap:10px;margin:16px 0}.assignment-reminder-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid #d6e3f1;border-radius:12px;background:#f7faff}.assignment-reminder-item>div{min-width:0;overflow-wrap:anywhere}.assignment-reminder-item strong,.assignment-reminder-item span,.assignment-reminder-item small{display:block}.assignment-reminder-item span,.assignment-reminder-item small{margin-top:4px;color:#64748b}.assignment-reminder-item button{flex:none}.assignment-reminder-later{margin-top:4px}@media(max-width:480px){.assignment-reminder-item{align-items:stretch;flex-direction:column}.assignment-reminder-item button{align-self:flex-start}}:root{--bg: #f4f6f8;--panel: #ffffff;--line: #e6eaf0;--text: #1c2733;--muted: #5f6b78;--brand: #1f6feb;--brand-dark: #1857b8;--teal: #0f7a70;--gold: #9a6500;--red: #c0392b;--blue: #3b6fd4;--purple: #7a5ac9;--green: #2f9e44}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);overflow-wrap:break-word}button{font:inherit;cursor:pointer;border:none;background:none}textarea,input{font:inherit}.sheet p,.sheet li,.sheet h1,.sheet h2,.sheet h3,.v-row p,.summary-quote,.summary-tip,.overall-body p,.advice li,.finding-diff,.finding-exp,.finding-top,.vocab-note,.vocab-meaning,.idiom-exp,.example-line em,.syn-ex,.quiz-question,.quiz-option,.fav-title,.fav-body,.fav-extra,.modal p,.history-info strong,.sheet-glance,.score-comment,.match-text,.ocr-note{overflow-wrap:anywhere}.app{display:flex;height:100%}.sidebar{width:268px;min-width:268px;background:#10222e;color:#dfe9f0;display:flex;flex-direction:column;padding:16px 12px;gap:14px;overflow:hidden;transition:margin-left .25s ease}.sidebar.collapsed{margin-left:-268px}.sidebar-close{display:none;align-items:center;justify-content:center;padding:8px;border-radius:8px;color:#b9cad6;background:#ffffff14}.sidebar-close:hover{background:#ffffff29;color:#fff}.sidebar-backdrop{display:none}.side-toggle{color:var(--muted);display:inline-flex;align-items:center}.side-toggle:hover{color:var(--text);background:#f0f3f6}.brand{display:flex;align-items:center;gap:10px;padding:4px 6px}.brand-mark{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#2aa7ff,#1164d8);display:grid;place-items:center;font-weight:700;color:#fff}.brand strong{display:block;font-size:17px}.brand span{font-size:10px;color:#8fa6b5;letter-spacing:.08em}.primary-btn{display:inline-flex;align-items:center;gap:7px;background:var(--brand);color:#fff;padding:10px 14px;border-radius:10px;font-weight:600;justify-content:center}.primary-btn:hover{background:var(--brand-dark)}.primary-btn:disabled{opacity:.6;cursor:not-allowed}.primary-btn.big{padding:13px 22px;font-size:15px}.ghost-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;color:var(--muted);background:#fff}.ghost-btn:hover{color:var(--text);border-color:#cdd5de}.sidebar .ghost-btn{background:transparent;border-color:#3a4f5e;color:#b9cad6;width:100%;justify-content:center}.side-section{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-ms-overflow-style:none}.side-section::-webkit-scrollbar{width:0;height:0;display:none}.side-title{font-size:11px;letter-spacing:.12em;color:#7f99aa;padding:8px 6px}.book-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:5px;margin:0 4px 8px;flex:0 0 auto}.book-tabs button{border:1px solid #3a4f5e;border-radius:7px;color:#a9bdc9;padding:6px 4px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-tabs button.active{background:#2d81d7;border-color:#2d81d7;color:#fff}.book-tabs button.empty{border-style:dashed;color:#6f8b9c}.book-tabs button.empty.active{color:#fff}.lesson-list{flex:0 0 auto;min-height:0;overflow:visible;display:flex;flex-direction:column;gap:3px}.lesson-row,.lesson-item{min-width:0}.lesson-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;color:#c7d6df;text-align:left;width:100%}.lesson-item:hover{background:#ffffff0f}.lesson-item.active{background:#4296ff2e;color:#fff}.lesson-no{font-size:11px;color:#6f8b9c;width:20px;flex-shrink:0}.lesson-group-title{margin:8px 2px 2px;padding:4px 9px;background:#4296ff21;border-radius:6px;color:#bcd9f5;font-size:11px;font-weight:700;letter-spacing:.08em}.lesson-group-title:first-child{margin-top:0}.lesson-group-title.foldable{display:flex;align-items:center;justify-content:space-between;gap:6px;width:calc(100% - 4px);text-align:left;cursor:pointer}.lesson-group-title.foldable:hover{background:#4296ff38}.fold-chevron{flex-shrink:0;transform:rotate(-90deg);transition:transform .15s ease}.lesson-group-title.foldable.open .fold-chevron{transform:rotate(0)}.lesson-group-title.mylib-group{display:flex;align-items:center;justify-content:space-between;gap:6px}.mylib-group .lgt-name{min-width:0;overflow-wrap:anywhere}.mylib-group .lgt-ops{display:inline-flex;gap:2px}.lgt-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:6px;color:#b9d1e2;flex-shrink:0}.lgt-btn:hover{background:#ffffff1f;color:#fff}.mylib-group .lgt-count{margin-left:auto;flex-shrink:0;font-size:11px;opacity:.7}.builtin-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:4px 0 10px}.builtin-tab{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 6px;border:1px solid var(--line);border-radius:8px;color:#c7d6df;font-size:12.5px;font-weight:600}.builtin-tab:hover{background:#ffffff0f}.builtin-tab.active{background:#4296ff2e;border-color:#4296ff8c;color:#fff}.builtin-tab span{white-space:nowrap}.builtin-tab i{font-style:normal;font-size:11px;color:#8fa8b8;background:#ffffff14;border-radius:999px;padding:1px 7px}.builtin-tab.active i{color:#dbe9ff;background:#4296ff47}.lesson-row .lesson-no,.lesson-item .lesson-no{min-width:20px;width:auto}.lesson-title{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.muted{color:var(--muted)}.muted.small{font-size:12px}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.topbar{height:56px;min-height:56px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 18px}.topbar-title{flex:1 1 auto;min-width:0;border:none;background:transparent;font-weight:600;font-size:15px;color:var(--text);padding:7px 9px;border-radius:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-title::placeholder{color:#9aa6b1;font-weight:500}.topbar-title:focus{outline:none;background:#f2f5f8;box-shadow:0 0 0 2px #1f6feb2e}.status-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);background:#f2f5f8;border:1px solid var(--line);padding:5px 10px;border-radius:999px;flex-shrink:0}.dot{width:8px;height:8px;border-radius:50%}.dot.ok{background:var(--green)}.dot.err{background:#e0a30a}.editor{flex:1;overflow-y:auto;padding:20px;max-width:1180px;width:100%;margin:0 auto;display:flex;flex-direction:column}.editor>*{flex-shrink:0}.modebar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:12px}.modebar-seg{display:inline-flex;background:#e9eef3;border-radius:9px;padding:3px}.modebar-seg button{padding:6px 13px;border-radius:7px;color:var(--muted);font-weight:600;font-size:13px;white-space:nowrap}.modebar-seg button.active{background:#fff;color:var(--text);box-shadow:0 1px 4px #0000001a}.modebar-field{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted)}.modebar-select{border:1px solid var(--line);border-radius:8px;padding:6px 8px;font:inherit;font-size:12.5px;color:var(--text);background:#fff}.match-banner{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:7px 12px;border:1px solid #b9e1d8;border-left:4px solid var(--teal);border-radius:8px;background:#effaf7;color:#176b62;font-size:12.5px}.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;flex:1 0 auto;min-height:320px;margin-bottom:4px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:8px;min-height:0}.panel>.big-textarea{flex:1 1 auto}.panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;gap:8px}.panel-head h2{margin:0;font-size:15px}.hint{font-size:12px;color:var(--muted)}.big-textarea{width:100%;min-height:260px;border:1px solid var(--line);border-radius:10px;padding:12px;resize:vertical;line-height:1.75;color:var(--text)}.big-textarea:focus{outline:2px solid var(--brand);outline-offset:-1px}.error-banner{margin-top:14px;background:#fdecec;border:1px solid #f3c2c2;color:#a33;padding:10px 14px;border-radius:10px;display:flex;gap:10px;align-items:center}.error-text{flex:1;min-width:0}.error-banner .err-close{flex-shrink:0;color:var(--red)}.error-banner .err-close:hover{background:#f8d9d9}.error-banner .link{color:var(--brand);text-decoration:underline}.action-dock{position:sticky;bottom:0;z-index:6;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:auto -20px 0;padding:10px 20px;background:var(--panel);border-top:1px solid var(--line);box-shadow:0 -6px 16px #10222e0f}.action-dock .primary-btn.big{flex:1 1 300px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.result{flex:1;overflow-y:auto;padding:18px}.stream-banner{max-width:960px;margin:0 auto 10px;display:flex;align-items:center;gap:9px;padding:9px 13px;border:1px solid #cfe0ff;background:#f2f7ff;color:var(--brand);border-radius:10px;font-size:13px}.stream-banner .stream-text{flex:1;min-width:0}@media print{.stream-banner{display:none!important}}.stream-banner.warn{border-color:#f0dca8;background:#fff8e6;color:#8a5a00}.result-toolbar{max-width:960px;margin:0 auto 14px;display:flex;gap:8px}.sheet{max-width:960px;margin:0 auto;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:32px 38px}.sheet-title{border-bottom:2px solid var(--brand);padding-bottom:14px;margin-bottom:22px}.eyebrow{font-size:11px;letter-spacing:.14em;color:var(--muted)}.sheet-title h1{margin:6px 0 0;font-size:26px}.sheet-section{margin-bottom:22px}.section-heading{display:flex;align-items:center;gap:9px;margin-bottom:8px}.section-heading h2{margin:0;font-size:15px}.label-dot{width:10px;height:10px;border-radius:3px;background:var(--brand);display:inline-block}.v-cn .label-dot{background:#9a6f3a}.v-draft .label-dot{background:var(--purple)}.v-ai .label-dot{background:var(--teal)}.v-original .label-dot{background:var(--gold)}.sheet-section p{margin:0;line-height:1.9;white-space:pre-wrap}.analysis{border-top:1px dashed var(--line);padding-top:18px;break-before:page}.overall-card{display:flex;gap:18px;background:#f7fafc;border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:18px}.score-ring{min-width:86px;height:86px;border-radius:50%;border:5px solid var(--brand);display:grid;place-items:center;text-align:center;align-self:start}.score-ring strong{font-size:24px;display:block}.score-ring span{font-size:11px;color:var(--muted);display:block}.overall-body{flex:1}.overall-body p{margin:0 0 8px;line-height:1.8;font-size:14px}.chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:8px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;background:#e7f5ec;color:#18743c;border-radius:999px;padding:4px 10px}.advice{font-size:13px}.advice ul{margin:6px 0 0;padding-left:18px;line-height:1.7}.summary{border-top:1px dashed var(--line);padding-top:18px}.summary-block{margin-bottom:16px}.summary-title{margin:0 0 8px;font-size:14px}.summary-title.teal{color:var(--teal)}.summary-title.gold{color:var(--gold)}.summary-card{border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:8px;padding:10px 12px;margin-bottom:8px;background:#fbfcfd}.summary-card.gold{border-left-color:var(--gold)}.summary-quote{margin:0;font-size:14px;line-height:1.7;color:var(--text)}.summary-head{display:flex;align-items:flex-start;gap:8px}.summary-head .summary-quote{flex:1;min-width:0}.summary-tip{margin:4px 0 0;font-size:13px;line-height:1.7;color:var(--muted)}.sentence-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:14px}.sentence-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.sentence-index{background:#e8f0fb;color:var(--brand);font-weight:700;border-radius:7px;padding:3px 8px;font-size:12px}.sentence-cn{margin:0;font-weight:600;font-size:15px;flex:1}.finding-count{font-size:12px;color:var(--muted)}.versions{border-left:3px solid var(--line);padding-left:12px;display:flex;flex-direction:column;gap:7px;margin-bottom:12px}.v-row{display:grid;grid-template-columns:78px 1fr;gap:8px;font-size:13.5px}.v-label{font-weight:600;color:var(--muted);font-size:12px;padding-top:2px}.v-row p{margin:0;line-height:1.75}.v-row.draft p{color:#5a4a8a}.v-row.ai p{color:#0d7a70}.v-row.original p{color:#8a6d1a}.section-note{font-size:12px;color:var(--muted);margin-left:8px;font-weight:400}mark.hl{background:#ffe3e3;color:inherit;padding:0 2px;border-radius:2px;border-bottom:2px solid var(--red)}.findings{display:flex;flex-direction:column;gap:9px}.finding{border:1px solid var(--line);border-left:4px solid var(--red);border-radius:8px;padding:9px 12px;background:#fbfcfd}.finding.level-improve{border-left-color:var(--gold)}.finding.level-study{border-left-color:var(--teal)}.finding-top{display:flex;gap:8px;margin-bottom:5px;align-items:center}.cat{font-size:11px;font-weight:700;border-radius:5px;padding:2px 7px;color:#fff}.cat-red{background:var(--red)}.cat-blue{background:var(--blue)}.cat-gold{background:var(--gold)}.cat-teal{background:var(--teal)}.cat-purple{background:var(--purple)}.cat-gray{background:var(--muted)}.level{font-size:11px;color:var(--muted)}.finding-diff{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;margin-bottom:4px}.finding-diff .from{color:var(--red);text-decoration:line-through}.finding-diff .arrow{color:var(--muted)}.finding-diff .to{color:var(--green)}.finding-exp{margin:0;font-size:13px;line-height:1.75;color:#3d4854}.finding-extras{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:7px}.ext-label{font-size:11px;color:var(--muted);font-weight:700;margin-right:6px;flex-shrink:0}.dim-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px}.dim-chips{display:inline-flex;flex-wrap:wrap;gap:5px}.dim-chip{font-size:11px;background:#eef2fb;color:var(--blue);border-radius:999px;padding:2px 8px}.idiom-note{font-size:12px;color:#0d7a70;display:flex;gap:6px;align-items:baseline}.idiom-note strong{font-size:14px}.syn-block,.ex-block{display:flex;flex-direction:column;gap:5px;font-size:12px}.syn-list{display:flex;flex-direction:column;gap:6px}.syn-row{border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 9px}.syn-head{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.syn-word{font-size:13px;color:var(--text)}.syn-meta{font-size:11px;color:var(--muted);background:#f2f5f8;border-radius:999px;padding:1px 7px}.syn-pos{font-size:10.5px;font-weight:700;color:#6a4fd0;background:#6a4fd01a;border:1px solid rgba(106,79,208,.28);border-radius:5px;padding:0 5px;line-height:16px;flex-shrink:0;white-space:nowrap}.syn-meaning{margin-top:2px;font-size:12px}.syn-usage{font-size:12px;color:#3d4854;margin-top:2px}.syn-ex{font-size:12px;color:#0d7a70;margin-top:3px;font-style:italic}.example-line{font-size:12px;line-height:1.6;display:flex;gap:8px;align-items:baseline}.example-line em{color:#0d7a70;flex-shrink:0;font-style:italic}.example-line span{color:var(--muted)}.vocab-card{border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:10px;padding:12px 14px;margin-bottom:10px;background:#fbfcfd}.vocab-head{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}.vocab-word{font-size:16px}.vocab-type{font-size:11px;background:#e8f0fb;color:var(--brand);border-radius:5px;padding:1px 7px}.vocab-meaning{margin:0 0 5px;font-size:13px}.vocab-note{margin:6px 0 0;font-size:12.5px;color:#3d4854;line-height:1.7}.idiom-card{border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#fbfcfd}.idiom-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-bottom:4px}.idiom-badge{font-size:10px;background:var(--teal);color:#fff;border-radius:5px;padding:1px 6px}.idiom-situation,.idiom-common{font-size:12px;color:var(--muted)}.idiom-example{font-size:13px;color:#0d7a70;font-style:italic;margin:3px 0}.idiom-exp{margin:0;font-size:13px;line-height:1.7}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f192373;display:flex;align-items:center;justify-content:center;z-index:50;overflow-y:auto;padding:20px;overscroll-behavior:contain}.teacher-comments{margin:12px 0 18px;padding:15px 18px;border:1px solid #a7d8c5;border-radius:12px;background:#f1faf5}.teacher-comments h2{font-size:16px;margin:0 0 8px;color:#146b4b}.teacher-comment+.teacher-comment{border-top:1px solid #cce8da;padding-top:10px;margin-top:10px}.teacher-comment strong{font-size:13px;color:#286c54}.teacher-comment p{margin:5px 0 0;white-space:pre-wrap;line-height:1.65}.modal{width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow-y:auto;background:#fff;border-radius:14px;padding:20px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.modal-head h2{margin:0;font-size:17px}.modal label{display:block;font-size:13px;color:var(--muted);margin-bottom:12px}.modal input{width:100%;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:9px 11px}.material-modal{width:480px}.material-modal textarea,.material-modal select{width:100%;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:9px 11px;font:inherit;background:#fff}.material-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.modal-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:16px}.section-editor{width:560px}.section-picker-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;margin:10px 0 6px;font-size:13px}.section-picker-head .link{margin-left:10px}.section-editor .section-picker-search{margin:0 0 8px}.section-picker-list{max-height:min(38vh,330px);overflow-y:auto;border:1px solid var(--line);border-radius:8px}.section-editor .section-picker-row{display:flex;align-items:center;gap:9px;min-height:44px;margin:0;padding:6px 10px;color:var(--text);cursor:pointer}.section-picker-row+.section-picker-row{border-top:1px solid var(--line)}.section-picker-row:hover{background:#f5f9fc}.section-editor .section-picker-row input[type=checkbox]{width:18px;height:18px;flex:0 0 auto;margin:0;padding:0}.section-picker-no{width:27px;flex:0 0 auto;color:var(--muted);font-variant-numeric:tabular-nums}.section-picker-title{min-width:0;flex:1;overflow-wrap:anywhere}.section-picker-row small{flex:0 1 auto;color:var(--muted)}.section-picker-list>p{padding:10px}.icon-btn{border-radius:8px;padding:6px;color:var(--muted)}.icon-btn:hover{background:#f0f3f6}.link{color:var(--brand);text-decoration:none}@media screen and (max-width:900px){.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:40;margin-left:0;box-shadow:0 0 30px #0000004d;gap:10px}.sidebar.collapsed{display:none}.sidebar-close{display:inline-flex;position:absolute;top:10px;right:10px;z-index:41}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:39;background:#00000059}.side-section{overscroll-behavior:contain}html,body,#root{height:auto;min-height:100%}.app{display:block;height:auto;min-height:100%}.main{display:block;min-height:0;overflow:visible}.editor,.result{overflow:visible;height:auto}.editor-grid{grid-template-columns:1fr}.sheet{padding:16px 12px;border-radius:12px}.v-row{grid-template-columns:52px 1fr;gap:6px}.topbar{flex-wrap:wrap;height:auto;min-height:0;padding:8px 12px;gap:8px}.topbar-title{padding:7px 4px}.topbar{padding-top:calc(8px + env(safe-area-inset-top,0px));padding-left:calc(12px + env(safe-area-inset-left,0px));padding-right:calc(12px + env(safe-area-inset-right,0px))}.sidebar{padding-top:calc(16px + env(safe-area-inset-top,0px));padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));padding-left:calc(12px + env(safe-area-inset-left,0px));padding-right:calc(12px + env(safe-area-inset-right,0px))}.sidebar-close{top:calc(10px + env(safe-area-inset-top,0px));right:calc(10px + env(safe-area-inset-right,0px))}.editor,.result{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}.topbar-title{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-chip{margin-left:0;order:9;flex-basis:100%;justify-content:center;max-width:100%;padding:5px 8px;font-size:11px}.status-chip .chip-detail{display:none}.result{padding:10px 8px}.result-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:none;width:100%;margin:0 auto 12px}.result-toolbar .ghost-btn{justify-content:center;width:100%;padding:10px 8px;font-size:13px}.share-tip{grid-column:1 / -1;text-align:center}.overall-card{flex-direction:column;gap:12px;padding:14px}.score-ring{align-self:center;margin:0 auto 4px}.score-row{gap:6px}.score-label{width:70px;font-size:12px}.score-num{width:36px}.score-comment{margin-left:0}.sentence-card{padding:12px}.finding{padding:8px 10px}.sheet-title h1{font-size:20px;line-height:1.3}.section-heading{flex-wrap:wrap}.finding-diff{overflow-wrap:anywhere}.example-line{flex-direction:column;gap:2px;align-items:flex-start}.example-line em{flex-shrink:1}.modal,.history-modal,.material-modal{width:calc(100vw - 24px);max-width:calc(100vw - 24px);padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}.modal{padding:16px}}@media print{@page{margin:10mm}html,body,#root{height:auto!important;min-height:0!important;overflow:visible!important}.app,.main{display:block!important;height:auto!important;min-height:0!important;overflow:visible!important}.sidebar,.topbar,.result-toolbar,.modal-mask,.modebar,.action-dock{display:none!important}body{background:#fff!important;color:#1c2733!important}html,body,#root,.app,.main,.result,.sheet,.sheet-section{background:#fff!important}.result{display:block!important;height:auto!important;min-height:0!important;overflow:visible!important;padding:0!important}.sheet{border:none!important;box-shadow:none!important;max-width:none!important;border-radius:0!important;padding:0!important}.sheet-section{break-inside:auto!important;page-break-inside:auto!important}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.analysis,.summary{break-before:page;page-break-before:always;border-top:none!important}.overall-card,.sentence-card{break-inside:auto;page-break-inside:auto}.finding,.v-row,.summary-card{break-inside:auto!important;page-break-inside:auto!important}.v-row{display:block!important;grid-template-columns:none!important}.v-row .v-label{display:block!important;margin-bottom:2px;font-weight:600}.sentence-card p,.v-row p,.finding-exp,.summary-quote,.summary-tip,.idiom-exp,.vocab-note,.vocab-meaning{orphans:3;widows:3}.sentence-head,.finding-top,.finding-diff,.v-label,.summary-title{break-inside:avoid!important;page-break-inside:avoid!important;break-after:avoid;page-break-after:avoid}}.share-tip{font-size:12px;color:var(--teal);align-self:center}.history-modal{width:460px}.history-list{display:flex;flex-direction:column;gap:8px;max-height:55vh;overflow:auto;margin:4px 0 10px}.history-item{display:flex;align-items:center;gap:6px;width:100%;border:1px solid var(--line);border-radius:10px;padding:6px 8px 6px 12px;background:#fbfcfd}.history-item:hover{border-color:var(--brand)}.history-open{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:1;min-width:0;text-align:left;padding:4px 0}.history-del{flex-shrink:0;color:var(--muted)}.history-del:hover{color:var(--red);background:#fdecec}.history-del-confirm{display:inline-flex;align-items:center;gap:10px;flex-shrink:0;font-size:12.5px}.history-del-confirm .link.danger{color:var(--red);font-weight:600}.history-del-confirm .link:disabled{opacity:.6;cursor:default}.history-del-err{margin:0 0 8px;font-size:12.5px;color:var(--red)}.history-info{display:flex;flex-direction:column;gap:2px;min-width:0}.history-info strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-link{font-size:12px;color:var(--brand);flex-shrink:0}.match-banner.weak{border-color:#ecd9ad;border-left-color:#e0a30a;background:#fdf7ea;color:#8a6d1a}.import-review{flex-wrap:wrap;align-items:flex-start}.import-review .ir-actions{display:flex;gap:8px;flex-wrap:wrap;width:100%}.import-review .ir-blocks{width:100%;display:flex;flex-direction:column;gap:7px}.import-review .ir-block{display:flex;align-items:center;gap:8px;font-size:12.5px}.import-review .ir-no{flex-shrink:0;font-weight:700;color:#176b62}.import-review .ir-preview{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3d4854}.import-review label{display:inline-flex;gap:4px;align-items:center;font-size:12px;color:#176b62;white-space:nowrap;cursor:pointer}.import-review .primary-btn.sm{padding:6px 12px;font-size:12.5px;border-radius:8px}@media(pointer:coarse){.import-review .ir-block label{min-height:32px}}.match-text{flex:1;min-width:0}.progress-box{margin-top:12px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;display:flex;flex-direction:column;gap:8px;max-width:720px}.progress-steps{display:flex;gap:14px;flex-wrap:wrap}.progress-steps span{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted)}.progress-steps span.active{color:var(--brand);font-weight:600}.progress-track{height:8px;background:#edf1f5;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#2aa7ff,#1164d8);border-radius:999px;transition:width .4s ease}.progress-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.progress-note{margin:2px 0 0;line-height:1.6}.key-hint{margin-top:14px;border:1px solid #cfdff5;border-left:4px solid var(--blue);border-radius:10px;background:#f5f9ff;padding:13px 15px;max-width:720px}.key-hint-title{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:700;color:#1d4e8f;margin-bottom:6px}.key-hint p{margin:0 0 7px;font-size:12.5px;line-height:1.7;color:#30506f}.key-hint code{background:#e6eefa;border-radius:4px;padding:1px 5px;font-size:12px}.key-hint .modal-actions{margin-top:4px}.lesson-search{position:relative;display:flex;align-items:center;margin-bottom:8px}.lesson-search input{width:100%;border:1px solid rgba(255,255,255,.16);background:#ffffff12;color:#e8f1f7;border-radius:8px;padding:7px 30px 7px 10px;font:inherit;font-size:13px}.lesson-search input::placeholder{color:#7d95a6}.lesson-search input:focus{outline:2px solid var(--blue);outline-offset:-1px}.lesson-search-clear{position:absolute;right:6px;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;color:#9fb3c2}.lesson-search-clear:hover{background:#ffffff1f;color:#fff}.speak-btn{display:inline-flex;align-items:center;justify-content:center;flex:none;width:22px;height:22px;border-radius:999px;color:var(--muted);background:transparent;border:1px solid transparent;transition:color .15s,background .15s,border-color .15s}.speak-btn:hover{color:var(--brand);background:#eef5ff;border-color:#cfe2ff}.speak-btn.speaking{color:#fff;background:var(--brand);border-color:var(--brand)}.summary-head .speak-btn{margin-left:6px}.errscope{display:flex;gap:6px;margin:2px 0 10px}.chip-btn{font-size:12px;padding:4px 11px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--muted)}.chip-btn.active{border-color:var(--brand);color:var(--brand);background:#eef5ff;font-weight:600}.errbars{display:flex;flex-direction:column;gap:7px}.errbar-row{display:grid;grid-template-columns:76px 1fr 52px;align-items:center;gap:10px}.errbar-label{font-size:12.5px;color:#33465a;text-align:right}.errbar-track{display:flex;height:14px;background:#eef1f5;border-radius:999px;overflow:hidden}.errbar-fill.error{background:linear-gradient(90deg,#ff8b6b,#e8503a)}.errbar-fill.improve{background:linear-gradient(90deg,#7fc9f5,#3a9fe8)}.errbar-num{font-size:12.5px;font-variant-numeric:tabular-nums;color:#33465a}.errbar-num i{color:#3a9fe8;font-style:normal}.errprofile-tip{margin:11px 0 0;font-size:12.5px;line-height:1.7;color:var(--muted)}.errlegend{margin-left:10px;white-space:nowrap}.errlegend .dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin:0 4px 0 8px;vertical-align:middle}.errlegend .dot.error{background:#e8503a}.errlegend .dot.improve{background:#3a9fe8}@media print{.errscope{display:none}}.score-breakdown{margin-top:12px;border-top:1px dashed var(--line);padding-top:12px}.score-breakdown-title{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:7px}.score-row{display:flex;align-items:center;gap:10px;margin-bottom:4px}.score-label{width:92px;font-size:12.5px;color:var(--text);flex-shrink:0}.score-track{flex:1;height:7px;background:#edf1f5;border-radius:999px;overflow:hidden}.score-fill{height:100%;background:var(--brand);border-radius:999px}.score-num{width:44px;font-size:12px;color:var(--muted);text-align:right;flex-shrink:0}.score-comment{font-size:12px;color:var(--muted);margin:0 0 6px 102px}.practice-compare{background:linear-gradient(180deg,#f7fbff,#fff);border:1px solid #dbe8f7;border-radius:12px;padding:14px 16px}.pc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px}.pc-card{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-left:4px solid #c9d3de;border-radius:10px;padding:8px 10px;background:#fff}.pc-card.good{border-left-color:var(--green)}.pc-card.bad{border-left-color:var(--red)}.pc-label{font-size:11.5px;color:var(--muted)}.pc-value{display:flex;align-items:baseline;gap:6px;font-size:21px;font-weight:700;font-variant-numeric:tabular-nums}.pc-delta{font-size:12px;font-style:normal;font-weight:600;color:var(--muted)}.pc-card.good .pc-delta{color:var(--green)}.pc-card.bad .pc-delta{color:var(--red)}.pc-from{font-size:11.5px;color:var(--muted)}.pc-cats{margin-top:11px}.pc-cats-title{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:4px}.pc-cat{display:flex;align-items:center;gap:9px;padding:5px 0;border-top:1px dashed var(--line);font-size:12.5px}.pc-cat-name{min-width:84px;color:var(--text)}.pc-cat-num{font-variant-numeric:tabular-nums;color:var(--muted)}.pc-cat-state{margin-left:auto;font-size:12px;border-radius:999px;padding:2px 9px;background:#f2f5f8;color:var(--muted)}.pc-cat.fixed .pc-cat-state{background:#e8f7ee;color:var(--green)}.pc-cat.down .pc-cat-state{background:#eef4ff;color:var(--blue)}.pc-cat.up .pc-cat-state{background:#fdecec;color:var(--red)}.pc-tip{margin:11px 0 0;font-size:12.5px;line-height:1.7;color:var(--muted)}@media print{.pc-cats{break-inside:avoid}}.due-btn.has-due{border-color:#f0c98a;color:var(--gold);background:#fffaf0}.fav-due{font-size:11px;border-radius:999px;padding:2px 8px;background:#f2f5f8;color:var(--muted)}.fav-due.now{background:#fff3d6;color:var(--gold);font-weight:600}.fav-item.due{border-left-color:var(--brand)}.fav-review{display:flex;flex-direction:column;gap:12px}.fav-review-progress{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.fav-review-bar{flex:1;height:6px;border-radius:999px;background:#edf1f5;overflow:hidden}.fav-review-bar i{display:block;height:100%;background:var(--brand)}.fav-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff;min-height:138px}.fav-card .fav-title{font-size:17px}.fav-review-grades{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.grade-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 6px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text)}.grade-btn strong{display:inline-flex;align-items:center;gap:6px}.grade-btn span{font-size:11.5px;color:var(--muted)}.grade-btn:hover{border-color:var(--brand)}.grade-btn.forgot:hover{border-color:var(--red);background:#fdf3f2}.grade-btn.easy:hover{border-color:var(--green);background:#f1faf4}.fav-review-actions{display:flex;gap:8px;justify-content:flex-end}.fav-review-done{display:flex;align-items:center;gap:8px;color:var(--green);font-size:15px}.fav-review kbd{font:inherit;font-size:10.5px;line-height:1;padding:2px 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;background:#f7f9fb;color:var(--muted)}.primary-btn kbd{border-color:#ffffff73;background:#ffffff2e;color:#fff}@media(hover:none)and (pointer:coarse){.fav-review kbd{display:none}}.ocr-mode-wrap{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted)}.ocr-mode{border:1px solid var(--line);border-radius:8px;padding:6px 8px;font:inherit;font-size:12.5px;color:var(--text);background:#fff}.panel-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.ghost-btn.sm{padding:5px 9px;font-size:12.5px;gap:4px;border-radius:8px}.panel.drag-on{box-shadow:0 0 0 3px var(--brand);background:#eef4ff}.panel .ocr-note{margin-top:8px;font-size:12px;color:var(--muted);line-height:1.5}.panel .ocr-note.err{color:var(--red)}.cam-modal{width:560px}.cam-video{width:100%;max-height:58vh;border-radius:10px;background:#000;display:block}.cam-err{color:var(--red)!important}@media screen and (max-width:900px){.panel-head{flex-wrap:wrap}.panel-tools{justify-content:flex-start}.cam-modal{width:calc(100vw - 24px)}.cam-video{max-height:50vh}}.title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px}.title-row .title-field{margin:0;flex:1 1 340px}.timer-box{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:6px 10px;color:var(--muted)}.timer-box.running{border-color:var(--brand);box-shadow:0 0 0 2px #1f6feb1f;color:var(--brand)}.timer-display{font-size:18px;font-variant-numeric:tabular-nums;letter-spacing:.5px;min-width:64px;text-align:center;color:var(--text)}.timer-box.running .timer-display{color:var(--brand)}.timer-box .ghost-btn.sm:disabled{opacity:.45;cursor:not-allowed}.timer-hint{font-size:12px;color:var(--muted)}.sheet-duration{display:inline-block;margin:8px 6px 0 0;font-size:12.5px;color:var(--muted);background:#f2f5f8;border:1px solid var(--line);border-radius:999px;padding:3px 10px}.phonetic{font-size:12px;color:var(--muted);font-weight:400;letter-spacing:.2px;white-space:nowrap}.vocab-head .phonetic,.syn-head .phonetic{margin-left:2px}@media screen and (max-width:900px){.action-dock{position:static;margin:16px -20px calc(-16px - env(safe-area-inset-bottom,0px));padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px))}.action-dock .primary-btn.big{flex:1 1 100%}.timer-box{margin-left:auto}.timer-display{min-width:56px;font-size:17px}}.fav-star{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-10px -10px -10px auto;border-radius:8px;color:#7c8792;flex-shrink:0}.fav-star:hover{background:#fff5d6;color:var(--gold)}.fav-star.on{color:var(--gold)}.fav-tip{position:fixed;top:66px;right:18px;z-index:60;background:#10222e;color:#eaf3f8;font-size:12.5px;padding:8px 12px;border-radius:10px;box-shadow:0 6px 18px #0000002e;pointer-events:none}.fav-tip.toast{top:108px;max-width:min(420px,calc(100vw - 36px));line-height:1.6}.wake-tip{position:fixed;top:10px;left:50%;transform:translate(-50%);z-index:90;display:flex;align-items:center;gap:8px;background:#10222e;color:#eaf3f8;font-size:12.5px;padding:8px 14px;border-radius:999px;box-shadow:0 6px 18px #0000002e;max-width:calc(100vw - 24px);pointer-events:none}.fav-modal{width:720px}.fav-toolbar{display:flex;gap:8px;margin-bottom:10px}.fav-search{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit}.fav-list{max-height:52vh;overflow:auto;display:flex;flex-direction:column;gap:8px}.fav-item{border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:10px;padding:9px 11px;background:#fbfcfd}.fav-item-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}.fav-kind{font-size:11px;background:#eef2fb;color:var(--blue);border-radius:999px;padding:2px 8px}.fav-cat{font-size:11px;background:#f2f5f8;color:var(--muted);border-radius:999px;padding:2px 8px}.fav-level{font-size:11px;border-radius:999px;padding:2px 8px;background:#f2f5f8;color:var(--muted)}.fav-level.error{background:#fdecec;color:var(--red)}.fav-level.improve{background:#fdf6e9;color:var(--gold)}.fav-level.study{background:#effaf7;color:var(--teal)}.fav-date{font-size:11px;color:var(--muted);margin-left:auto}.fav-del{color:var(--muted)}.fav-del:hover{color:var(--red);background:#fdecec}.fav-title{font-size:14px;font-weight:600;line-height:1.5}.fav-body{font-size:13px;color:#3d4854;line-height:1.7;margin-top:3px;white-space:pre-wrap}.fav-extra{font-size:12.5px;color:var(--muted);line-height:1.6;margin-top:3px;white-space:pre-wrap}.fav-source{font-size:11.5px;color:var(--muted);margin-top:4px}.fav-footer{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 8px}.fav-footer .ghost-btn:disabled{opacity:.45;cursor:not-allowed}@media screen and (max-width:900px){.fav-modal{width:calc(100vw - 24px)}.fav-list{max-height:none;overflow:visible}.fav-tip,.fav-tip.toast{inset:auto 12px calc(16px + env(safe-area-inset-bottom,0px)) 12px;max-width:none;text-align:center}.wake-tip{top:auto;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:12px;right:12px;transform:none;justify-content:center;border-radius:12px}.fav-toolbar{flex-wrap:wrap}}.vocab-morph{margin:6px 0 8px;padding:7px 10px;background:#f7f4ff;border-left:3px solid #7a5ac9;border-radius:8px}.vocab-morph .morph-line{font-size:12.5px;line-height:1.7;color:#4a4258}.vocab-morph .morph-image{color:#5b4a8a;font-weight:600}.vocab-morph .morph-family{color:var(--muted);font-size:12px}.fav-quiz{border-top:1px dashed var(--line);margin-top:4px;padding-top:10px}.fav-quiz-title{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:7px}.fav-quiz-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.fav-quiz-count{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted)}.quiz-hint{font-size:12.5px;color:var(--muted);margin:0 0 14px}.quiz-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.quiz-item{border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:10px;padding:10px 13px;background:#fbfcfd}.quiz-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:5px}.quiz-no{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;border-radius:6px;background:#e8f0fb;color:var(--brand);font-size:12px;font-weight:700;padding:0 5px}.quiz-type{font-size:11px;background:var(--blue);color:#fff;border-radius:5px;padding:2px 7px}.quiz-src{font-size:11.5px;color:var(--muted)}.quiz-question{font-size:14px;line-height:1.75;white-space:pre-wrap}.quiz-options{margin:6px 0 0;padding-left:20px;font-size:13.5px;line-height:1.8}.quiz-answers{margin-top:22px;border-top:2px solid var(--teal);padding-top:14px}.quiz-answers.hidden{display:none}.quiz-answers-title{margin:0 0 10px;font-size:15px;color:var(--teal)}.quiz-answer-item{border-left:3px solid var(--teal);background:#effaf7;border-radius:8px;padding:8px 11px;margin-bottom:8px;font-size:13.5px;line-height:1.8}.quiz-answer-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.quiz-exp{color:#176b62;margin-top:3px}.quiz-options.interactive{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.quiz-opt{display:flex;align-items:flex-start;gap:9px;width:100%;text-align:left;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--text);font:inherit;font-size:13.5px;line-height:1.6;cursor:pointer}.quiz-opt:hover:not(:disabled){border-color:var(--brand);background:#f5f9ff}.quiz-opt:disabled{cursor:default}.quiz-opt-key{flex:none;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:6px;background:#eef2f7;color:var(--muted);font-size:11.5px;font-weight:700}.quiz-opt-text{flex:1}.quiz-opt.picked .quiz-opt-key{background:var(--brand);color:#fff}.quiz-opt.right{border-color:#9bd8b4;background:#f1faf4}.quiz-opt.right .quiz-opt-key{background:var(--green);color:#fff}.quiz-opt.wrong{border-color:#f0b4ae;background:#fdf3f2}.quiz-opt.wrong .quiz-opt-key{background:var(--red);color:#fff}.quiz-opt.close{border-color:#f0c98a;background:#fffaf0}.quiz-opt.close .quiz-opt-key{background:var(--gold);color:#fff}.quiz-opt.is-answer{border-color:#9bd8b4;background:#f1faf4}.quiz-opt:disabled.is-answer .quiz-opt-key{background:var(--green);color:#fff}.quiz-input-row{display:flex;align-items:flex-start;gap:8px;margin-top:8px;flex-wrap:wrap}.quiz-input{flex:1;min-width:220px;width:auto;border:1px solid var(--line);border-radius:9px;padding:8px 10px;font:inherit;font-size:13.5px;line-height:1.6;color:var(--text);background:#fff;resize:vertical}.quiz-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #1f6feb1f}.quiz-input-hint{font-size:11.5px;color:var(--muted);align-self:center}.quiz-mark{font-size:11.5px;font-weight:700;border-radius:5px;padding:2px 8px}.quiz-mark.right{background:#e7f7ee;color:#1a7f4b}.quiz-mark.judging{display:inline-flex;align-items:center;gap:4px;background:#eef4ff;color:var(--brand)}.quiz-mark.close{background:#fff3d6;color:var(--gold)}.quiz-mark.wrong{background:#fdecec;color:var(--red)}.quiz-retry{margin-left:auto;border:0;background:none;color:var(--muted);font-size:11.5px;cursor:pointer;text-decoration:underline;padding:0}.quiz-retry:hover{color:var(--brand)}.quiz-verdict{margin-top:9px;border-radius:9px;padding:9px 11px;font-size:13px;line-height:1.75;background:#f6f8fa;border-left:3px solid var(--line)}.quiz-verdict.right{background:#f1faf4;border-left-color:var(--green)}.quiz-verdict.close{background:#fffaf0;border-left-color:var(--gold)}.quiz-verdict.wrong{background:#fdf3f2;border-left-color:var(--red)}.quiz-verdict.pending{background:#f5f9ff;border-left-color:var(--brand)}.quiz-verdict-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:3px}.quiz-verdict-tag{font-weight:700}.quiz-verdict.right .quiz-verdict-tag{color:#1a7f4b}.quiz-verdict.close .quiz-verdict-tag{color:var(--gold)}.quiz-verdict.wrong .quiz-verdict-tag{color:var(--red)}.quiz-verdict.pending .quiz-verdict-tag{color:var(--brand)}.quiz-verdict-by{font-size:11.5px;color:var(--muted)}.quiz-verdict-comment{margin:2px 0}.quiz-verdict-better,.quiz-verdict-answer{margin-top:3px}.quiz-verdict .quiz-exp{color:inherit;opacity:.85;margin-top:3px}.quiz-self-judge{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:12.5px;color:var(--muted)}.quiz-grade-dock{position:sticky;bottom:0;z-index:5;margin-top:12px}.quiz-grade-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 13px;border:1px solid var(--line);border-radius:12px;background:#fffffff5;box-shadow:0 -2px 14px #14284614;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.quiz-grade-stat{flex:1;min-width:200px;font-size:13px;color:var(--muted)}.quiz-grade-stat strong{color:var(--text)}.quiz-score{margin-left:8px;font-weight:600}.quiz-score.ok{color:#1a7f4b}.quiz-score.mid{color:var(--gold)}.quiz-score.bad{color:var(--red)}.quiz-score.pending{color:var(--brand)}.quiz-grade-running{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--brand)}.quiz-grade-tip{margin-bottom:8px;padding:8px 11px;border-radius:9px;background:#fff8e6;border:1px solid #f0dca8;color:#8a5a00;font-size:12.5px;line-height:1.7}@media print{.fav-star,.fav-tip,.fav-modal{display:none!important}.quiz-answers,.quiz-answers.hidden{display:block!important;break-before:auto;page-break-before:auto}.quiz-item,.quiz-answer-item{break-inside:avoid;page-break-inside:avoid}.quiz-list{padding-left:0!important}.quiz-grade-dock,.quiz-verdict,.quiz-input-row .ghost-btn,.quiz-input-hint{display:none!important}.quiz-opt{border:0;padding:2px 0;background:none!important}.quiz-opt-key{background:none;color:var(--text)}.quiz-input{border:0;border-bottom:1px solid #aaa;border-radius:0;padding:4px 0}}@media screen and (max-width:900px){input,select,textarea,.ocr-mode,.material-modal select,.material-modal textarea{font-size:16px!important}}.my-libs{margin:0 4px 8px;display:flex;flex-direction:column;gap:3px}.my-libs-head{display:flex;align-items:center;justify-content:space-between}.my-libs-head .side-title{padding:4px 2px}.lib-add{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;color:#a9bdc9;border:1px solid #3a4f5e}.lib-add:hover{color:#fff;background:#ffffff1a}.lib-empty{font-size:11.5px;line-height:1.65;color:#7f99aa;padding:4px 4px 2px}.lib-row{display:flex;align-items:center;border-radius:8px}.lib-row.active{background:#4296ff2e}.lib-tab{display:flex;align-items:center;gap:6px;flex:1;min-width:0;padding:6px 8px;border-radius:8px;color:#c7d6df;font-size:12.5px;text-align:left}.lib-tab:hover{background:#ffffff0f}.lib-row.active .lib-tab{color:#fff}.lib-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-count{font-size:10.5px;color:#a9bdc9;background:#ffffff1a;border-radius:999px;padding:1px 6px}.lib-del,.lesson-del,.lesson-edit{display:inline-flex;visibility:hidden;padding:4px;border-radius:6px;color:#8fa6b5;margin-right:4px}.lib-row:hover .lib-del,.lib-row:focus-within .lib-del{visibility:visible}.lib-del:hover{color:#ff9a9a;background:#ffffff14}.lesson-row{display:flex;align-items:center;border-radius:8px}.lesson-row.active{background:#4296ff2e}.lesson-row .lesson-item{flex:1;min-width:0}.lesson-row.active .lesson-item{color:#fff}.lesson-row:hover .lesson-del,.lesson-row:hover .lesson-edit,.lesson-row:focus-within .lesson-del,.lesson-row:focus-within .lesson-edit,.lesson-row.active .lesson-del,.lesson-row.active .lesson-edit{visibility:visible}.lesson-del:hover{color:#ff9a9a;background:#ffffff14}.lesson-edit:hover{color:#9fd0ff;background:#ffffff14}@media(hover:none){.lib-del,.lesson-del,.lesson-edit{visibility:visible}}.original-fold{margin-top:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}.original-fold.drag-on{border-color:var(--brand);box-shadow:0 0 0 3px #1f6feb1f}.fold-head{display:flex;align-items:center;gap:10px;padding:8px 12px 8px 8px;flex-wrap:wrap}.fold-toggle{display:inline-flex;align-items:center;gap:7px;padding:5px 7px;border-radius:7px;color:var(--text)}.fold-toggle:hover{background:#f0f3f6}.fold-title{font-weight:600;font-size:13.5px;white-space:nowrap}.fold-note{margin-left:auto;text-align:right}.fold-head .panel-tools{flex-shrink:0}.original-fold .ocr-note{margin:0 14px 10px;font-size:12px;color:var(--muted);line-height:1.5}.original-fold .ocr-note.err{color:var(--red)}.original-textarea{min-height:150px;border:none;border-top:1px solid var(--line);border-radius:0}.original-textarea:focus{outline-offset:0}.lib-preview{background:#f7f9fb;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:12px;display:flex;flex-direction:column;gap:7px;font-size:13px}.lib-preview>div{display:flex;gap:10px;align-items:baseline}.lib-preview .muted{min-width:64px}.lib-preview .warn{color:var(--gold)}.lib-picker{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.modal .lib-option{display:flex;align-items:center;gap:7px;color:var(--text);font-size:13px;margin-bottom:0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.modal .lib-option.active{border-color:var(--brand);background:#f0f6ff}.modal .lib-option input{width:auto;margin:0}.lib-tip{color:var(--red);font-size:12.5px;margin:-4px 0 10px}.backup-tip{margin-top:12px;font-size:12.5px;line-height:1.7;color:#176b62;background:#effaf7;border:1px solid #b9e1d8;border-radius:8px;padding:9px 11px}.sync-block{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line)}.sync-title{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13.5px;margin-bottom:8px}.sync-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}.modal .sync-row input{flex:1;min-width:180px;margin-top:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.sync-code{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;background:#f2f5f8;border:1px solid var(--line);border-radius:8px;padding:9px 11px;overflow-wrap:anywhere}.sync-block .modal-actions{margin-top:4px}.modal-mask.auth-mask{z-index:55}.auth-modal{width:460px}.auth-form{display:flex;flex-direction:column;gap:12px;margin:4px 0 2px}.auth-label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--muted)}.auth-label input{font:inherit;font-size:14px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 11px}.auth-label input:focus{outline:2px solid var(--blue);outline-offset:-1px}.auth-label input:disabled{background:#f2f5f8;color:var(--muted)}.auth-modal .modal-actions{flex-wrap:wrap}@media(max-width:720px){.auth-label input{font-size:16px}.quiz-grade-bar{gap:8px;padding:8px 10px}.quiz-grade-stat{flex:1 1 100%;min-width:0;font-size:12.5px}.quiz-grade-bar .ghost-btn,.quiz-grade-bar .primary-btn{flex:1;justify-content:center;min-height:40px}.quiz-grade-running{flex:1 1 100%}}.sync-lost{margin:4px 0 8px;font-size:12.5px;line-height:1.75;color:#8a5a00;background:#fff8e6;border:1px solid #f0dca8;border-radius:8px;padding:9px 11px}@media screen and (max-width:900px){.fold-note{margin-left:0;width:100%;text-align:left;order:3}.fold-head .panel-tools{margin-left:auto}}@media(max-height:520px){.brand{padding:2px 6px}.brand span{display:none}.side-title{padding:4px 6px}.sidebar{padding:10px 12px;gap:8px}}@media(pointer:coarse){.icon-btn{min-width:44px;min-height:44px}.side-toggle{width:44px;height:44px}.primary-btn{min-height:44px}.ghost-btn{min-height:44px;padding:8px 14px}.ghost-btn.sm{min-height:38px;padding:7px 12px}.book-tabs button{min-height:44px}.lesson-item{min-height:44px;padding:10px 8px}.lesson-search,.lesson-search input,.ocr-mode,.modebar-seg button,.fold-toggle{min-height:44px}.lib-add{width:44px;height:44px}.link{padding:8px 4px}.speak-btn{width:44px;height:44px;margin:-11px -6px}.glance-jump button,.chip-btn{min-height:44px;padding:8px 14px}.score-breakdown-title{padding:11px 4px}.lib-del,.lesson-del,.lesson-edit{min-width:44px;min-height:44px;margin-right:0}.history-del-confirm .link{min-height:44px;padding:12px 14px}.history-del-confirm{gap:16px}.ghost-btn.sm{min-height:44px;padding:8px 12px}}.sheet-glance{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 18px;padding:12px 16px;border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:12px;background:#f7fafc}.glance-score{display:flex;align-items:baseline;gap:6px}.glance-score strong{font-size:26px;line-height:1;color:var(--brand)}.glance-score span{font-size:11px;color:var(--muted)}.glance-meta{font-size:13px;color:#3d4854}.glance-dot{margin:0 6px;color:var(--muted)}.glance-jump{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.glance-jump button{font-size:12.5px;padding:5px 12px;border-radius:999px;border:1px solid #cfdff5;background:#fff;color:var(--brand);font-weight:600}.glance-jump button:hover{background:#eef5ff;border-color:var(--brand)}.refs-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:9px 12px;margin-bottom:10px;border:1px dashed #cfd8e3;border-radius:10px;background:#fbfcfd;color:var(--text);font-size:13.5px;font-weight:600;text-align:left}.refs-toggle:hover{border-color:var(--brand);color:var(--brand)}.refs-caret{transition:transform .18s ease;color:var(--muted);flex-shrink:0}.refs-caret.rot{transform:rotate(0)}.refs-caret:not(.rot){transform:rotate(-90deg)}.refs-hint{font-weight:400;font-size:12.5px;color:var(--muted)}.refs:not(.refs-open) .refs-body{display:none}@media screen and (max-width:900px){.sheet-glance{gap:10px;padding:10px 12px}.glance-score strong{font-size:22px}.glance-jump{margin-left:0;width:100%}.glance-jump button{flex:1;text-align:center;justify-content:center}.refs-hint{display:none}.refs-toggle{min-height:44px}}@media print{.refs-body{display:block!important}.refs-toggle,.sheet-glance .glance-jump{display:none!important}.sheet-glance{border-left-color:var(--brand)!important}}.start-guide{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px;padding:12px 14px;border:1px solid #cfdff5;border-left:4px solid var(--brand);border-radius:12px;background:#f5f9ff}.start-guide-title{display:block;font-size:13.5px;font-weight:700;color:#1d4e8f;margin-bottom:4px}.start-guide-steps{margin:0;padding-left:20px;font-size:13px;line-height:1.75;color:#30506f}.start-guide-steps li{margin:0}.start-guide-close{flex-shrink:0}@media screen and (max-width:900px){.start-guide{flex-direction:column;gap:8px}.start-guide-close{align-self:flex-end}}.score-breakdown-title{display:flex;align-items:center;gap:6px;width:100%;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:7px;text-align:left}.score-breakdown-title:hover{color:var(--brand)}.score-breakdown.collapsed .score-breakdown-body{display:none}@media print{.score-breakdown-body{display:block!important}}.back-to-top{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:45;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--panel);color:var(--text);border:1px solid var(--line);box-shadow:0 6px 18px #0f19232e}.back-to-top:hover{color:var(--brand);border-color:var(--brand)}@media screen and (max-width:900px){.back-to-top{right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px))}}@media print{.back-to-top{display:none!important}}.book-progress{margin:0 4px 8px}.book-progress-head{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;color:#7f99aa;margin-bottom:4px}.book-progress-head strong{color:#dbe9f5;font-size:12px}.book-progress-head strong i{font-style:normal;font-weight:400;color:#7f99aa}.book-progress-track{height:4px;border-radius:999px;background:#ffffff1f;overflow:hidden}.book-progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#2aa7ff,#1164d8);transition:width .3s ease}.lesson-item .lesson-title{flex:1;min-width:0}.lesson-done{display:inline-flex;align-items:center;flex-shrink:0;margin-left:6px;color:#f0b429}.lesson-row.active .lesson-done{color:#ffd166}.streak-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 4px 8px;padding:6px 8px;border-radius:8px;font-size:12px;color:#8fa6b5;background:#ffffff0d}.streak-row.on{color:#ffd166;background:#f0b4291f}.streak-row strong{font-size:12.5px}.streak-flame{display:inline-flex;align-items:center}.streak-sub{margin-left:auto;font-size:11px;color:#7f99aa}.dir-tabs{margin-left:8px}.dir-tabs button{padding:8px 14px}@media screen and (max-width:900px){.dir-tabs{margin-left:0}}.drill-entry{display:flex;align-items:center;gap:7px;width:100%;margin:2px 4px 8px;padding:8px 10px;border-radius:9px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#dbe9f5;font-size:12.5px;text-align:left}.drill-entry:hover{background:#ffffff1f;border-color:#ffffff38;color:#fff}.drill-entry.has{border-color:#f0c98a73}.drill-entry.has i{margin-left:auto;font-style:normal;font-weight:700;font-size:11.5px;background:#f0c98a2e;color:#f0c98a;border-radius:999px;padding:1px 8px}.drill-entry em{margin-left:auto;font-style:normal;font-size:11px;color:#7f99aa}.drill-modal{width:620px}.drill-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:4px 0 8px}.drill-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:44vh;overflow-y:auto}.drill-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:9px}.drill-row.on{border-color:#bcd8ff;background:#f5f9ff}.drill-pick{display:flex;align-items:center;gap:7px;flex:1;min-width:0;cursor:pointer}.drill-name{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drill-count{font-size:12px;color:#8a5a00;flex:none}.drill-count.ok{color:var(--teal)}.drill-cats{display:flex;gap:4px;flex:none;flex-wrap:wrap}.drill-cat{font-style:normal;font-size:11px;color:var(--muted);background:#f2f5f8;border-radius:5px;padding:1px 6px}.drill-times{flex:none}.drill-missing{margin-top:10px}.drill-missing summary{cursor:pointer;font-size:12.5px;color:var(--muted)}.drill-missing .drill-list{max-height:26vh;margin-top:8px}.drill-empty{display:flex;gap:10px;padding:12px 14px;border:1px solid #f0dca8;background:#fffaf0;border-radius:10px}.drill-empty p{margin:4px 0 0}.drill-count-pick{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);margin-right:auto}.drill-count-input{width:68px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font:inherit;font-size:12.5px;color:var(--text);background:#fff}.drill-plan{margin:6px 0 0;padding:7px 10px;border-radius:8px;font-size:12.5px;line-height:1.6;background:#f2f7ff;border-left:3px solid var(--brand);color:#25507f}.drill-plan b{color:#14406f}.error-tip{color:#8a5a00}@media(max-width:720px){.drill-modal{width:calc(100vw - 24px)}.drill-row{flex-wrap:wrap}.drill-cats{width:100%}}.more-wrap{position:relative;display:block;flex-shrink:0}.more-btn{color:var(--muted)}.more-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:232px;max-width:calc(100vw - 24px);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px #10222e2e;padding:6px;text-align:left}.more-item{display:flex;align-items:center;gap:9px;width:100%;padding:10px;border-radius:9px;font-size:14px;color:var(--text);background:none;border:none;cursor:pointer;text-align:left}.more-item:hover{background:#f2f5f8}.more-item svg{color:var(--muted);flex-shrink:0}.more-count{margin-left:auto;font-size:12.5px;color:var(--muted)}.more-sep{height:1px;background:var(--line);margin:5px 6px}.more-field{display:flex;align-items:center;gap:9px;padding:6px 10px;font-size:13px;color:var(--muted);margin:0}.more-field>span{flex-shrink:0}.more-field .ocr-mode{margin-left:auto}.more-info{padding:8px 10px 6px;font-size:12px;line-height:1.7;color:var(--muted)}.more-dot{display:inline-block;width:7px;height:7px;border-radius:999px;background:var(--green);margin-right:6px}.match-banner.draft-banner{border-color:#bcd2f2;border-left-color:var(--blue);background:#eff4fd;color:#2a5ba8}.match-banner.draft-banner .link{margin-left:auto}.draft-count{font-size:11.5px;color:var(--muted);padding:2px 2px 0}.draft-count span{color:#8a97a5}.today-reco{display:flex;align-items:center;gap:7px;width:100%;margin:6px 0 2px;padding:8px 10px;border:1px solid rgba(66,150,255,.4);border-radius:10px;background:linear-gradient(135deg,#4296ff1f,#4296ff0d);color:#cfe2ff;font-size:12.5px;text-align:left}.today-reco:hover{border-color:#4296ffb3}.today-reco span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.today-reco i{font-style:normal;font-weight:700;color:#fff;background:#4296ff59;border-radius:999px;padding:2px 9px;font-size:11.5px;flex-shrink:0}.draft-shelf{margin:6px 0 2px;border:1px dashed rgba(255,255,255,.18);border-radius:10px;overflow:hidden}.draft-shelf-head{display:flex;align-items:center;gap:6px;width:100%;padding:7px 10px;color:#c7d6df;font-size:12.5px;background:transparent}.draft-shelf-head:hover{background:#ffffff0d}.draft-shelf-head span{flex:1;text-align:left;font-weight:600}.draft-shelf-head i{font-style:normal;font-size:11px;color:#9fb3c2;background:#ffffff1a;border-radius:999px;padding:1px 7px}.draft-shelf-head .fold-chevron{transform:rotate(0)}.draft-shelf-head .fold-chevron.closed{transform:rotate(-90deg)}.draft-shelf-item{display:flex;align-items:center;gap:6px;width:100%;padding:6px 10px 6px 26px;color:#c7d6df;font-size:12px;text-align:left;border-top:1px solid rgba(255,255,255,.06)}.draft-shelf-item:hover{background:#ffffff0f;color:#fff}.draft-shelf-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.draft-shelf-item small{color:#6f8b9c;font-size:10.5px;flex-shrink:0}.goal-modal{max-width:420px}.goal-lead{font-size:12.5px;color:var(--muted);margin:4px 0 12px}.goal-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.goal-card{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;text-align:left}.goal-card:hover{border-color:var(--brand);background:#f4f8ff}.goal-icon{color:var(--brand);margin-bottom:2px}.goal-card strong{font-size:14px;color:var(--text)}.goal-card small{font-size:11.5px;color:var(--muted);line-height:1.5}.goal-skip{width:100%;margin-top:10px;padding:7px;color:var(--muted);font-size:12.5px;text-align:center}.goal-skip:hover{color:var(--text)}.icp{display:block;margin:10px 2px 0;text-align:center;font-size:10.5px;color:#5f7787}.icp:hover{color:#9fb3c2}
