:root{font-family:Inter,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#253b33;background:#f6f7f2;font-synthesis:none;--green:#245c49;--muted:#7b857f;--line:#e4e8df}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;transition:background .18s,transform .18s}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible{outline:3px solid #99bb86;outline-offset:4px}button:hover:not(:disabled){transform:translateY(-1px)}[hidden]{display:none!important}.topbar{height:100px;max-width:1220px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:0 32px;border-bottom:1px solid var(--line)}.brand{display:flex;gap:13px;align-items:center;text-decoration:none;color:#253b33;font-size:23px;font-weight:750;letter-spacing:-.7px}.brandmark{background:var(--green);color:white;border-radius:12px;padding:9px 10px;font-family:Georgia,serif;font-size:26px}.brand small{display:block;margin-top:5px;font-size:11px;font-weight:400;letter-spacing:1px;color:var(--muted)}.save-status{font-size:12px;color:#788379}.save-status:before{content:'';display:inline-block;width:6px;height:6px;background:#7d9e68;border-radius:50%;margin-right:8px}.save-status.warning{color:#a8522e}.save-status.warning:before{background:#a8522e}main{max-width:1140px;margin:auto;padding:54px 24px 28px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:34px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:650;color:#83917e;margin:0 0 14px}.intro h1{font-size:30px;font-weight:650;letter-spacing:-1px;margin:0 0 12px}.subtitle{font-size:14px;color:var(--muted);margin:0}.text-button{border:0;background:transparent;color:#82897e;font-size:13px;padding:12px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 274px;gap:26px;align-items:start}.practice-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:30px 36px 27px;box-shadow:0 6px 28px #30442d04;min-height:515px}.card-top{display:flex;justify-content:space-between;align-items:center}.round-badge{font-size:12px;font-weight:600;border-radius:6px;background:#edf3e9;color:#557644;padding:8px 11px}.position{font-size:12px;color:#7c857d;font-variant-numeric:tabular-nums}.progress{height:4px;background:#f0f2eb;margin:20px 0 36px;border-radius:4px;overflow:hidden}#progress-fill{height:100%;background:#98ad76;border-radius:4px;transition:width .3s}.question-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.question-top .eyebrow{margin:0;letter-spacing:1.5px}.error-chip{font-size:11px;color:#949b91}#meaning{font-size:26px;line-height:1.65;font-weight:550;letter-spacing:.3px;margin:18px 0 12px;min-height:86px;overflow-wrap:anywhere}.letter-info{font-size:13px;color:#748073;margin:0 0 26px}.letter-info strong{color:#385d46;font-weight:650}.input-label{font-size:11px;color:#8d958b;display:block;margin-bottom:9px}.answer-box{border:1.5px solid #dde4d8;border-radius:10px;display:flex;align-items:center;height:64px;padding:0 19px;background:#fbfcf9;transition:border .2s,box-shadow .2s}.answer-box:focus-within{border-color:#689276;box-shadow:0 0 0 3px #edf3e9}.answer-box.locked{border-color:#dfbc86;background:#fffbf3}.answer-box #initial{font-size:28px;font-family:Consolas,monospace;color:var(--green);font-weight:650;padding-right:10px;border-right:1px solid #d9e2d4;margin-right:12px}.answer-box input{min-width:0;width:100%;border:0;outline:none;background:transparent;font-size:28px;letter-spacing:3px;font-family:Consolas,monospace;color:#253b33;height:100%;border-radius:0}.answer-box input:disabled{opacity:.5}.enter-mark{color:#a3ad9e;border:1px solid #e1e6dc;padding:0 6px;border-radius:4px}.feedback{min-height:55px;padding:12px 0;font-size:13px;color:#7a8679;line-height:1.7}.feedback.hint{color:#98682c}.feedback strong{font-family:Consolas,monospace;letter-spacing:2px;font-size:20px;color:#7b541e;overflow-wrap:anywhere}.actions{display:flex;gap:14px}.primary,.secondary,.danger{border-radius:9px;padding:13px 23px;font-size:13px;font-weight:600;min-height:45px}.primary{background:var(--green);color:#fff;border:1px solid var(--green)}.primary:hover:not(:disabled){background:#194a39}.actions .primary{margin-left:auto;width:190px;display:flex;justify-content:space-between}.secondary{border:1px solid #dfe5d8;color:#677460;background:#fff}.keyboard-note{font-size:10px;color:#9da398;text-align:center;margin:21px 0 0;line-height:1.8}kbd{font-family:inherit;border:1px solid #e8ebe3;border-radius:3px;padding:1px 4px;background:#fafbf8;font-size:9px}.stats-card{background:#edf1e7;border:1px solid #e0e5d7;border-radius:16px;padding:26px 24px}.stats-card .eyebrow{color:#7b8c6a;margin-bottom:25px}.stat{display:flex;justify-content:space-between;align-items:center;margin:19px 0;font-size:12px;color:#737e69}.stat strong{font-size:26px;font-weight:500;color:#405631;font-variant-numeric:tabular-nums}.aside-divider{height:1px;background:#dce3d1;margin:23px 0}.tip-title{font-size:12px;color:#526843;font-weight:600}.tip{font-size:11px;line-height:1.9;color:#88917e;margin-bottom:0}.history-card{padding:26px 6px}.section-heading{display:flex;justify-content:space-between;align-items:center}.section-heading h3{font-size:12px;font-weight:600;margin:0}.section-heading span{font-size:10px;color:#8d9688}#history{font-size:11px;color:#8f978a;margin-top:17px;line-height:1.8;max-height:210px;overflow:auto}.history-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:8px 0;gap:8px}footer{display:flex;justify-content:space-between;margin:30px 2px 0;font-size:10px;color:#929b8d;gap:10px;line-height:1.8}.complete{text-align:center;padding:28px 0}.complete-icon{margin:0 auto 23px;width:64px;height:64px;border-radius:50%;background:#edf3e7;color:var(--green);font-size:32px;display:grid;place-items:center}.complete h2{font-size:26px;font-weight:550}.complete p:not(.eyebrow){font-size:13px;color:#808b79;line-height:1.9}.complete .primary{margin-top:24px}dialog{max-width:440px;width:calc(100% - 32px);border:1px solid var(--line);padding:30px;border-radius:18px;color:#253b33;box-shadow:0 24px 80px #11221925}dialog::backdrop{background:#192a2355;backdrop-filter:blur(3px)}dialog h2{font-size:21px;margin:14px 0}dialog p{font-size:13px;color:#7e8779;line-height:1.9}.dialog-icon{font-size:28px;color:#a56c42}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.danger{background:#a4553c;color:white;border:1px solid #a4553c}@media(min-width:1400px){main{padding-top:72px}.practice-card{min-height:550px}#meaning{margin-top:24px;min-height:96px}}@media(max-width:850px){.workspace{grid-template-columns:minmax(0,1fr) 225px;gap:18px}.practice-card{padding:26px}.stats-card{padding:24px 20px}.intro h1{font-size:25px}#meaning{font-size:23px}}@media(max-width:680px){.topbar{height:82px;padding:0 21px}.brand{font-size:20px}.save-status{font-size:10px}.brand small{font-size:9px}main{padding:32px 16px 24px}.intro{align-items:flex-start;margin-bottom:23px;gap:5px}.intro h1{font-size:22px;letter-spacing:-.8px;line-height:1.5}.intro .eyebrow{font-size:8px;letter-spacing:1.4px;margin-bottom:10px}.subtitle{font-size:11px;line-height:1.8}.text-button{font-size:11px;white-space:nowrap;padding:4px 0;margin-top:25px}.workspace{grid-template-columns:1fr;gap:20px}.practice-card{padding:24px 21px;min-height:0;border-radius:16px}.progress{margin-bottom:27px}#meaning{font-size:23px;min-height:76px}.question-top{gap:5px}.question-top .eyebrow{font-size:9px;letter-spacing:1px}.error-chip{font-size:10px}.actions .primary{width:160px}.keyboard-note{font-size:9px}aside{display:grid;grid-template-columns:1fr}.stats-card{padding:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:5px 13px}.stats-card .eyebrow{grid-column:1/-1;margin:0 0 10px}.stat{display:block;margin:0}.stat strong{display:block;font-size:24px;margin-top:8px}.aside-divider{grid-column:1/-1;margin:12px 0 3px}.tip-title,.tip{grid-column:1/-1;margin:3px 0}.history-card{padding:22px 4px 0}footer{flex-direction:column;margin-top:24px;gap:3px}.answer-box input{font-size:25px;letter-spacing:2px}.answer-box{padding:0 12px}.enter-mark{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

