:root{--bg-canvas: #e9ebee;--bg-panel: #f6f7f8;--bg-card: #ffffff;--border: #e2e5e9;--border-strong: #d8dce1;--border-faint: #f0f2f4;--line: #e8eaee;--text: #15181c;--text-2: #596170;--text-3: #8b93a0;--text-4: #a2a9b4;--text-5: #c3c9d2;--accent: #2c5bd8;--accent-hover: #1e45a8;--accent-soft: #e8eefc;--accent-weak: #7e9ae0;--ok: #1e9e6a;--ok-soft: #f2fbf7;--err: #d64545;--err-soft: #fceaea;--bar: #dde3ec;--font-ui: "Noto Sans SC", "Helvetica Neue", Helvetica, sans-serif;--font-hanzi: "Noto Serif SC", serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 2px rgba(16, 20, 28, .08);--shadow-frame: 0 18px 50px -30px rgba(16, 20, 28, .4);--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 14px;color-scheme:light}html[data-brightness=dark]{--bg-canvas: #0f1115;--bg-panel: #15181c;--bg-card: #1b1f25;--border: #2a2f37;--border-strong: #333a44;--border-faint: #23272e;--line: #262b32;--text: #eceef1;--text-2: #a7afbb;--text-3: #79828f;--text-4: #5c646f;--text-5: #454c56;--accent: #5b82e8;--accent-hover: #7699ee;--accent-soft: #1c2740;--accent-weak: #3a4a6d;--ok: #34b57e;--ok-soft: #12241c;--err: #e26a6a;--err-soft: #2a1717;--bar: #2f3946;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4);--shadow-frame: 0 18px 50px -30px rgba(0, 0, 0, .7);color-scheme:dark}html[data-theme=green]{--accent: #16a34a;--accent-hover: #15803d;--accent-soft: #dcfce7;--accent-weak: #86efac}html[data-theme=warm]{--accent: #ea580c;--accent-hover: #c2410c;--accent-soft: #fff7ed;--accent-weak: #fdba74}html[data-theme=rose]{--accent: #9333ea;--accent-hover: #7e22ce;--accent-soft: #faf5ff;--accent-weak: #d8b4fe}html[data-brightness=dark][data-theme=green]{--accent: #22c55e;--accent-hover: #4ade80;--accent-soft: #052e16;--accent-weak: #166534}html[data-brightness=dark][data-theme=warm]{--accent: #fb923c;--accent-hover: #fdba74;--accent-soft: #431407;--accent-weak: #9a3412}html[data-brightness=dark][data-theme=rose]{--accent: #a855f7;--accent-hover: #c084fc;--accent-soft: #3b0764;--accent-weak: #6b21a8}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg-canvas);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}button{font-family:inherit;cursor:pointer}.scroll-hide{scrollbar-width:none}.scroll-hide::-webkit-scrollbar{display:none}.mono{font-family:var(--font-mono)}.hanzi{font-family:var(--font-hanzi)}.kbd{font:500 11px/1 var(--font-mono);padding:4px 6px;background:var(--border-faint);border-radius:4px;color:var(--text-2)}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .2s ease both}.shell{display:flex;height:100%;background:var(--bg-panel)}.shell__main{flex:1;min-width:0;overflow-y:auto}.sidebar{width:232px;flex:none;background:var(--bg-card);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:22px 14px}.sidebar__brand{display:flex;align-items:center;gap:10px;padding:0 8px 22px}.sidebar__logo{width:28px;height:28px;border-radius:8px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:500}.sidebar__name{font-size:15px;font-weight:500;color:var(--text);letter-spacing:.02em}.sidebar__nav{display:flex;flex-direction:column;gap:2px}.nav-group{padding:14px 10px 4px;font:500 11px/1 var(--font-mono);letter-spacing:.12em;color:var(--text-4)}.nav-group:first-of-type{padding-top:9px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border:none;background:transparent;border-radius:8px;color:var(--text-2);font:400 14px/1 var(--font-ui);text-align:left;transition:background .15s,color .15s;width:100%}.nav-item:hover{background:var(--bg-panel)}.nav-item.is-active{background:var(--accent-soft);color:var(--accent);font-weight:500}.nav-item__icon{flex:none;opacity:.7}.nav-item.is-active .nav-item__icon{opacity:1}.nav-item__label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-item__key{font-size:11px;font-weight:500;color:var(--text-4)}.sidebar__spacer{flex:1}.sidebar__footer{border-top:1px solid var(--border-faint);padding:14px 10px 4px;display:flex;flex-direction:column;gap:12px}.sidebar__streak{display:flex;align-items:center;justify-content:space-between;font:400 13px/1 var(--font-ui);color:var(--text-2)}.sidebar__streak .mono{color:var(--text);font-weight:500}.sidebar__account-slot{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-faint)}.sidebar__login{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:8px;border:1px solid var(--border);background:var(--bg-card);border-radius:8px;color:var(--text-2);font:400 13px/1 var(--font-ui);cursor:pointer;transition:border-color .15s,color .15s}.sidebar__login:hover{border-color:var(--accent);color:var(--accent)}.sidebar__account{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--bg-panel);border-radius:8px}.sidebar__account-user{display:flex;align-items:center;gap:7px;flex:1;min-width:0}.sidebar__account-icon{flex:none;color:var(--accent)}.sidebar__account-name{font:500 13px/1 var(--font-ui);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__account-sync{flex:none;font-size:11px;color:var(--text-4)}.sidebar__account-logout{flex:none;border:none;background:transparent;color:var(--text-4);cursor:pointer;padding:4px;border-radius:6px;display:flex;transition:color .15s,background .15s}.sidebar__account-logout:hover{color:var(--err);background:var(--bg-card)}.auth-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0a0c109e;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;animation:fade-in .15s ease}.auth-dialog{position:relative;width:100%;max-width:340px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-frame);padding:24px 22px 18px;animation:dialog-in .18s ease}.auth-dialog__brand{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:18px}.auth-dialog__logo{width:40px;height:40px;border-radius:10px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:500;margin-bottom:2px}.auth-dialog__title{font-size:16px;font-weight:500;color:var(--text)}.auth-dialog__subtitle{font-size:12px;color:var(--text-3)}@keyframes dialog-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.auth-dialog__close{position:absolute;top:14px;right:14px;border:none;background:transparent;color:var(--text-4);cursor:pointer;display:flex;padding:4px;border-radius:6px}.auth-dialog__close:hover{color:var(--text);background:var(--bg-panel)}.auth-dialog__seg{display:flex;gap:4px;padding:3px;background:var(--bg-panel);border-radius:9px;margin-bottom:20px}.auth-dialog__seg button{flex:1;border:none;background:transparent;padding:8px;border-radius:6px;color:var(--text-3);font:400 14px/1 var(--font-ui);cursor:pointer}.auth-dialog__seg button.is-on{background:var(--bg-card);color:var(--text);font-weight:500;box-shadow:var(--shadow-card)}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-form__field{display:flex;flex-direction:column;gap:6px}.auth-form__field span{font-size:12px;color:var(--text-3)}.auth-form__field input{padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-panel);color:var(--text);font:400 14px/1.2 var(--font-ui)}.auth-form__field input:focus{outline:none;border-color:var(--accent)}.auth-form__err{font-size:13px;color:var(--err);background:var(--err-soft);border-radius:var(--r-sm);padding:8px 10px}.auth-form__submit{margin-top:4px;width:100%;justify-content:center}.auth-form__submit:disabled{opacity:.5;cursor:not-allowed}.auth-dialog__note{margin:16px 0 0;font-size:12px;line-height:1.7;color:var(--text-4)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.theme-toggle{display:flex;padding:3px;background:var(--bg-panel);border-radius:8px}.theme-toggle button{flex:1;border:none;background:transparent;padding:6px;border-radius:6px;color:var(--text-3);font:400 12px/1 var(--font-ui)}.theme-toggle button.is-on{background:var(--bg-card);color:var(--text);font-weight:500;box-shadow:var(--shadow-card)}.curr-quick{padding:4px 10px 6px;display:flex;flex-wrap:wrap;gap:5px}.curr-chip{border:1px solid var(--border);background:transparent;border-radius:5px;padding:4px 7px;font:400 11px/1.2 var(--font-ui);color:var(--text-3);cursor:pointer;transition:background .12s,color .12s,border-color .12s;text-align:left;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.curr-chip:hover{background:var(--bg-panel);color:var(--text-2);border-color:var(--border-strong)}.curr-chip.is-on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-soft);font-weight:500}.curr-chip--custom{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.curr-quick__more{display:flex;align-items:center;gap:10px;width:100%;margin-top:2px;padding:9px 10px;border:none;background:transparent;border-radius:8px;color:var(--text-2);font:400 14px/1 var(--font-ui);text-align:left;cursor:pointer;transition:background .15s,color .15s}.curr-quick__more:hover{background:var(--bg-panel);color:var(--text)}.curr-quick__count{font-size:11px;font-weight:500;color:var(--text-4)}@media (max-width: 860px){.curr-quick,.curr-quick__more{display:none}}.import-form{margin-top:14px;display:flex;flex-direction:column;gap:10px}.import-form__row{display:flex;gap:10px;flex-wrap:wrap}.import-form__input{flex:1 1 180px;min-width:0;padding:9px 11px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-panel);color:var(--text);font:400 13px/1.4 var(--font-ui)}.import-form__area{width:100%;padding:11px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-panel);color:var(--text);font-size:13px;line-height:1.7;resize:vertical}.import-form__input:focus,.import-form__area:focus{outline:none;border-color:var(--accent)}.import-form__foot{display:flex;justify-content:flex-end}.import-form__foot .btn:disabled{opacity:.45;cursor:not-allowed}.import-preview{border:1px solid var(--border-faint);border-radius:var(--r-md);background:var(--bg-panel);padding:10px 12px;display:flex;flex-direction:column;gap:6px}.import-preview__head{font-size:12px;color:var(--text-3)}.import-preview__head strong{color:var(--accent);font-weight:500}.import-preview__unit{font-size:13px;color:var(--text-2);line-height:1.6}.import-preview__unit .mono{color:var(--text-4);font-size:11px;margin-right:6px}.bank-list{margin-top:14px;display:flex;flex-direction:column;gap:8px}.bank-item{display:flex;align-items:stretch;gap:6px;border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;transition:border-color .15s,background .15s}.bank-item.is-on{border-color:var(--accent);background:var(--accent-soft)}.bank-item__main{flex:1;min-width:0;border:none;background:transparent;text-align:left;padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;gap:4px}.bank-item__name{font-size:13px;font-weight:500;color:var(--text)}.bank-item__meta{font-size:11px;color:var(--text-3)}.bank-item__bar{height:3px;border-radius:2px;background:var(--bar);overflow:hidden;margin-top:2px}.bank-item__bar>div{height:100%;background:var(--accent);transition:width .3s}.bank-item__ops{display:flex;flex-direction:column;border-left:1px solid var(--border-faint)}.bank-item__ops button{flex:1;border:none;background:transparent;color:var(--text-4);padding:0 11px;cursor:pointer;display:flex;align-items:center;transition:background .12s,color .12s}.bank-item__ops button:hover{background:var(--bg-panel);color:var(--err)}.home{max-width:1120px;margin:0 auto;padding:34px 40px 60px;display:flex;flex-direction:column;gap:26px}.home__head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.home__title{margin:0 0 7px;font-size:28px;font-weight:500;color:var(--text)}.home__sub{font-size:14px;color:var(--text-3)}.home__hint{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--border);background:var(--bg-card);border-radius:8px;font-size:12px;color:var(--text-2);white-space:nowrap}.mode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.mode-card{background:var(--bg-card);border:1px solid var(--border);border-top:2px solid var(--border);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:10px;text-align:left;transition:transform .15s,box-shadow .15s,border-color .15s}.mode-card:hover{transform:translateY(-2px);box-shadow:0 10px 30px -18px #10141c66;border-top-color:var(--accent)}.mode-card.is-primary{border-top-color:var(--accent)}.mode-card__top{display:flex;align-items:center;justify-content:space-between}.mode-card__label{font-size:15px;font-weight:500;color:var(--text)}.mode-card__key{font-size:11px;font-weight:500;color:var(--text-4);border:1px solid var(--border);border-radius:4px;padding:3px 5px}.mode-card__desc{font-size:12px;line-height:1.6;color:var(--text-3);flex:1}.mode-card__stat{display:flex;align-items:baseline;gap:6px}.mode-card__stat>.mono{font-size:20px;font-weight:500;color:var(--text)}.mode-card__stat>.mono.is-weak{color:var(--err)}.mode-card__unit{font-size:12px;color:var(--text-3)}.home__grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:14px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px 22px;display:flex;flex-direction:column;gap:14px}.card__head{display:flex;align-items:center;justify-content:space-between}.card__title-row{display:flex;align-items:center;gap:9px}.card__title{font-size:15px;font-weight:500;color:var(--text)}.badge{font-size:11px;font-weight:500;color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:4px 6px}.badge.is-due{color:#fff;background:var(--accent)}.review__body{display:flex;flex-direction:column;gap:14px;padding-top:4px}.review__desc{font-size:12px;line-height:1.7;color:var(--text-3)}.review__hardest{display:flex;flex-direction:column}.review__hardest-label{font:500 11px/1 var(--font-mono);letter-spacing:.1em;color:var(--text-4);padding-bottom:8px}.review__item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 2px;border-bottom:1px solid var(--border-faint)}.review__item:last-child{border-bottom:none}.review__item-text{font-size:15px;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review__item-meta{flex:none;font-size:11px;color:var(--err)}.review__empty{display:flex;align-items:center;gap:12px;padding:22px 0 8px;color:var(--text-2);font-size:13px}.review__empty>svg{flex:none;color:var(--ok)}.review__empty-sub{font-size:12px;color:var(--text-4);margin-top:3px}.card__head .btn:disabled{opacity:.4;cursor:not-allowed}.overview__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat{display:flex;flex-direction:column;gap:6px}.stat__label{font-size:12px;color:var(--text-3)}.stat__value{font-size:26px;font-weight:500;color:var(--text)}.overview__chart{display:flex;flex-direction:column;gap:8px}.overview__chart-label{font-size:12px;color:var(--text-3)}.bars{display:flex;align-items:flex-end;gap:5px;height:96px}.bar{flex:1;border-radius:3px;min-height:4px}.overview__spacer{flex:1}.overview__foot{border-top:1px solid var(--border-faint);padding-top:14px;display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--text-2)}.overview__bank{font-weight:500;color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);border-radius:8px;font:500 13px/1 var(--font-ui);cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{background:var(--bg-panel)}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn--ghost{background:transparent;color:var(--text-2);padding:9px 12px}.btn--ghost:hover{background:var(--bg-panel);color:var(--text)}.import-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:none}.import-msg{margin-top:12px;font-size:13px;color:var(--text-2);background:var(--accent-soft);border-radius:var(--r-md);padding:8px 12px}.practice{display:flex;flex-direction:column;height:100%;background:var(--bg-panel)}.practice__top{height:56px;flex:none;background:var(--bg-card);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 26px;white-space:nowrap}.practice__top-left,.practice__top-right{min-width:0}.practice__top-left{display:flex;align-items:center;gap:14px}.practice__exit{border:none;background:transparent;font:400 13px/1 var(--font-ui);color:var(--text-3)}.practice__exit:hover{color:var(--text)}.practice__divider{width:1px;height:16px;background:var(--border)}.practice__name{font-size:14px;font-weight:500;color:var(--text)}.practice__mode{font-size:11px;font-weight:500;color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:3px 7px}.practice__tag{font-size:12px;color:var(--text-4)}.practice__top-right{display:flex;align-items:center;gap:20px;font-size:13px;font-weight:500;color:var(--text-2)}.practice__acc{display:flex;align-items:center;gap:6px;font-weight:400;font-size:12px;color:var(--text-3)}.practice__progress{height:3px;flex:none;background:var(--line)}.practice__progress>div{height:100%;background:var(--accent);transition:width .3s ease}.practice__body{flex:1;display:flex;flex-direction:column;align-items:center;padding:24px 40px;min-height:0;overflow-y:auto}.practice__body>*:not(.syl-table){margin-block:auto}.hanzi-q{display:flex;flex-direction:column;align-items:center;gap:34px;width:560px;max-width:100%}.hanzi-q__prompt{font:400 12px/1 var(--font-mono);letter-spacing:.14em;color:var(--text-4)}.hanzi-q__char{font-size:120px;font-weight:500;color:var(--text);letter-spacing:.06em;line-height:1;text-align:center}.hanzi-q__hint{font-size:14px;color:var(--text-3);margin-top:-10px}.hanzi-q.is-poem .hanzi-q__char{font-size:clamp(22px,3.8vh,44px);display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.45;letter-spacing:.1em}.hanzi-q__poem-line{display:block;text-align:center}.hanzi-q.is-poem .guided__ch{font-size:clamp(14px,2.4vh,28px);line-height:1.25;padding:0}.hanzi-q.is-poem .guided__newline{height:4px}.hanzi-q__form{width:100%;display:flex;flex-direction:column;gap:12px}.answer{position:relative;width:100%;height:72px;border:1.5px solid var(--border);background:var(--bg-card);border-radius:12px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;transition:border-color .15s,background .15s,box-shadow .15s}.answer.is-ok{border-color:var(--ok);background:var(--ok-soft);box-shadow:0 0 0 4px #1e9e6a1f}.answer.is-err{border-color:var(--err);background:var(--err-soft);box-shadow:0 0 0 4px #d645451f}.answer__input{flex:1;border:none;background:transparent;outline:none;font-size:30px;font-weight:500;color:var(--text);letter-spacing:.04em}.answer__input::placeholder{color:var(--text-5);font-weight:400;letter-spacing:normal}.answer__value{font-size:32px;font-weight:500;color:var(--text);letter-spacing:.04em}.answer__flag{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500}.answer__flag.is-ok{color:var(--ok)}.answer__flag.is-err{color:var(--err)}.answer__icon{width:20px;height:20px;border-radius:99px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px}.answer__flag.is-ok .answer__icon{background:var(--ok)}.answer__flag.is-err .answer__icon{background:var(--err)}.hanzi-q__meta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}.tone-chips{display:flex;align-items:center;gap:8px}.hanzi-q__meta-label{font-size:12px;color:var(--text-4)}.tone-chip{min-width:38px;text-align:center;padding:6px 8px;border:1px solid var(--border);background:var(--bg-card);border-radius:6px;font-size:14px;font-weight:500;color:var(--text-2)}.tone-chip__n{color:var(--text-5)}.hanzi-q__foot{width:100%;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px}.shortcuts{display:flex;gap:18px;font-size:12px;color:var(--text-3)}.shortcuts span{display:flex;align-items:center;gap:6px}.guided__ref{width:100%;min-height:72px;border:1.5px solid var(--border);background:var(--bg-card);border-radius:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px;padding:16px 22px;transition:border-color .15s,box-shadow .15s}.guided__ref.is-done{border-color:var(--ok);background:var(--ok-soft);box-shadow:0 0 0 4px #1e9e6a1f}.guided__ref.is-err{box-shadow:0 0 0 4px #d645451f}.guided__input-wrap{position:relative;width:100%}.guided__capture{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:2;opacity:0;border:0;padding:0;margin:0;background:transparent;color:transparent;caret-color:transparent;font-size:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.guided__capture:focus{outline:none}.guided__input-wrap:focus-within .guided__ref{border-color:var(--accent)}.guided__tap-hint{align-self:center;border:none;background:var(--accent);color:#fff;border-radius:99px;padding:9px 18px;font:500 13px/1 var(--font-ui);white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-card)}@media (hover: hover) and (pointer: fine){.guided__tap-hint{display:none}}.guided__gap{width:16px}.guided__newline{flex-basis:100%;height:8px}.guided__ch{font-size:34px;font-weight:500;line-height:1.3;padding:0 1px;border-bottom:3px solid transparent;transition:color .1s}.guided__ch--pending{color:var(--text-5)}.guided__ch--done{color:var(--ok)}.guided__ch--current{color:var(--accent);border-bottom-color:var(--accent);animation:caret 1s step-end infinite}.guided__ch--err{color:var(--err);border-bottom-color:var(--err);background:var(--err-soft);border-radius:4px}@keyframes caret{50%{border-bottom-color:transparent}}.guided__meta{justify-content:space-between}.guided__speak{border:1px solid var(--border);background:var(--bg-card);color:var(--text-2);border-radius:6px;padding:6px 10px;font:400 12px/1 var(--font-ui)}.guided__speak:hover{background:var(--bg-panel)}.done{display:flex;flex-direction:column;align-items:center;gap:24px}.done__title{font-size:40px;font-weight:500;color:var(--text)}.done__stats{display:flex;gap:28px;font-size:16px;color:var(--text-2);align-items:baseline}.done__stats .mono{font-size:22px;color:var(--text);font-weight:500}.done__note{max-width:380px;text-align:center;font-size:13px;line-height:1.7;color:var(--text-3)}.done__actions{display:flex;gap:12px}.page{max-width:760px;margin:0 auto;padding:34px 40px 60px;display:flex;flex-direction:column;gap:18px}.page__title{margin:0 0 6px;font-size:28px;font-weight:500;color:var(--text)}.placeholder{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:40px}.placeholder__badge{font-size:11px;letter-spacing:.12em;color:var(--accent);background:var(--accent-soft);padding:5px 8px;border-radius:5px}.placeholder__title{font-size:32px;font-weight:500;color:var(--text)}.placeholder__desc{font-size:14px;color:var(--text-3);max-width:360px;line-height:1.7}.settings__block{gap:12px}.settings__label{font-size:15px;font-weight:500;color:var(--text)}.settings__desc{font-size:13px;color:var(--text-3)}.settings__row{display:flex;align-items:center;justify-content:space-between;gap:16px}.chips{display:flex;flex-wrap:wrap;gap:8px}.curr-group{display:flex;align-items:center;gap:12px}.curr-group__tag{width:40px;flex:none;font:500 11px/1 var(--font-mono);letter-spacing:.08em;color:var(--text-4)}.chip{padding:8px 14px;border:1px solid var(--border);background:var(--bg-card);border-radius:8px;font:500 13px/1 var(--font-ui);color:var(--text-2)}.chip.is-on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.seg{display:flex;padding:3px;background:var(--bg-panel);border-radius:8px;gap:2px}.seg button{border:none;background:transparent;padding:8px 16px;border-radius:6px;color:var(--text-3);font:400 13px/1 var(--font-ui)}.seg button.is-on{background:var(--bg-card);color:var(--text);font-weight:500;box-shadow:var(--shadow-card)}.seg--sm button{padding:6px 12px;font-size:12px}.switch{width:44px;height:26px;border-radius:99px;border:none;background:var(--border-strong);position:relative;transition:background .2s;flex:none}.switch.is-on{background:var(--accent)}.switch span{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:99px;background:#fff;transition:transform .2s;box-shadow:0 1px 2px #0003}.switch.is-on span{transform:translate(18px)}.practice__quick-btns{display:flex;gap:4px;margin-left:4px}.quick-btn{height:28px;min-width:28px;padding:0 6px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-3);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s,border-color .15s}.quick-btn:hover{background:var(--bg-panel);color:var(--text)}.quick-btn.is-on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.guided__ref.is-hidden .guided__ch--pending,.guided__ref.is-hidden .guided__ch--current,.speed__py.is-hidden{filter:blur(4px);-webkit-user-select:none;user-select:none}.speed-card{display:flex;flex-direction:column;align-items:center;gap:40px;width:100%;max-width:720px;margin:0 auto}.speed__chars{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 16px}.speed__char{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px 14px;border-radius:10px;transition:background .15s}.speed__char--current{background:var(--accent-soft)}.speed__py{display:flex;gap:0px;min-height:18px;font-size:13px;line-height:1}.speed__letter{transition:color .1s}.speed__letter--pending{color:var(--text-5)}.speed__letter--done{color:var(--ok)}.speed__letter--current{color:var(--accent);border-bottom:2px solid var(--accent);animation:caret 1s step-end infinite}.speed__hz{font-size:40px;line-height:1.1;transition:color .15s}.speed__char--pending .speed__hz{color:var(--text-5)}.speed__char--done .speed__hz{color:var(--ok)}.speed__char--current .speed__hz{color:var(--accent)}.speed__status{width:100%;max-width:480px;text-align:center}.speed__hint{font-size:14px;color:var(--text-3);padding:12px 0}.speed__meta{display:flex;justify-content:center;gap:28px;padding:12px 20px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.speed__meta-item{display:flex;flex-direction:column;align-items:center;gap:2px}.speed__meta-label{font-size:11px;color:var(--text-3)}.speed__meta-item .mono{font-size:18px;font-weight:600}.speed__detail{width:100%;max-width:360px;border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:4px}.speed__detail-row{display:grid;grid-template-columns:auto 1fr 1fr 1fr;align-items:center;padding:10px 16px;gap:12px;border-bottom:1px solid var(--border-faint)}.speed__detail-row:last-child{border-bottom:none}.speed__detail-label{font-size:13px;color:var(--text-2)}.speed__detail-row .mono{text-align:right;font-size:14px}.syl-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);padding:0 24px;background:var(--bg-card);flex-shrink:0}.syl-tab{padding:10px 20px;font-size:14px;font-weight:500;color:var(--text-3);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-1px;transition:color .15s,border-color .15s}.syl-tab:hover{color:var(--text)}.syl-tab.is-active{color:var(--accent);border-bottom-color:var(--accent)}.syl-table{display:flex;flex-direction:column;gap:28px;width:100%;max-width:640px;margin:0 auto;padding:8px 0 24px}.syl-section__title{font-size:12px;font-weight:600;color:var(--text-3);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}.syl-grid{display:grid;gap:6px}.syl-cell{padding:8px 4px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text);font-size:15px;cursor:pointer;transition:background .12s,border-color .12s,color .12s;text-align:center}.syl-cell:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.syl-cell:active{background:var(--accent);color:#fff}.choice-card{display:flex;flex-direction:column;align-items:center;gap:32px;width:100%;max-width:480px;margin:0 auto}.choice__prompt{font-size:14px;color:var(--text-3)}.choice__char{font-size:96px;line-height:1;background:none;border:none;cursor:pointer;color:var(--text);transition:color .15s}.choice__char:hover{color:var(--accent)}.choice__options{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}.choice__btn{position:relative;padding:16px 12px;border:2px solid var(--border);border-radius:12px;background:var(--bg-card);color:var(--text);font-size:18px;cursor:pointer;transition:background .15s,border-color .15s,color .15s;text-align:center}.choice__btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.choice__btn--correct{border-color:var(--ok);background:#f2fbf7;color:var(--ok)}.choice__btn--wrong{border-color:var(--err);background:#fceaea;color:var(--err)}.choice__btn:disabled{cursor:default}.choice__btn-key{position:absolute;top:6px;left:9px;font-size:11px;color:var(--text-4);font-family:var(--font-mono)}.choice__result{font-size:15px;font-weight:500;padding:10px 20px;border-radius:8px}.choice__result.is-correct{color:var(--ok);background:#f2fbf7}.choice__result.is-wrong{color:var(--err);background:#fceaea}.tone-card{display:flex;flex-direction:column;align-items:center;gap:32px;width:100%;max-width:480px;margin:0 auto}.tone__prompt{font-size:14px;color:var(--text-3)}.tone__char-wrap{display:flex;flex-direction:column;align-items:center;gap:10px}.tone__char{font-size:96px;line-height:1;background:none;border:none;cursor:pointer;color:var(--text);transition:color .15s}.tone__char:hover{color:var(--accent)}.tone__py-hint{font-size:24px;color:var(--text-2);letter-spacing:.02em}.tone__mark{color:var(--accent);font-weight:700}.tone__py-full{font-size:14px;color:var(--text-4)}.tone__options{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}.tone__btn{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 12px 14px;border:2px solid var(--border);border-radius:12px;background:var(--bg-card);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.tone__btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.tone__btn--correct{border-color:var(--ok);background:#f2fbf7;color:var(--ok)}.tone__btn--wrong{border-color:var(--err);background:#fceaea;color:var(--err)}.tone__btn:disabled{cursor:default}.tone__btn-key{position:absolute;top:6px;left:9px;font-size:11px;color:var(--text-4);font-family:var(--font-mono)}.tone__symbol{font-size:28px;line-height:1.2}.tone__label{font-size:12px;color:inherit;opacity:.8}@media (max-width: 860px){.sidebar{width:64px;padding:18px 8px}.sidebar__name,.nav-group,.nav-item__label,.nav-item__key,.sidebar__streak,.theme-toggle,.sidebar__login-text,.sidebar__account-name,.sidebar__account-sync{display:none}.sidebar__footer{padding:12px 0 4px;gap:8px;align-items:center}.sidebar__account-slot{margin-top:0;padding-top:12px;width:100%;display:flex;justify-content:center}.sidebar__login{padding:9px 0;width:100%;justify-content:center}.sidebar__account{padding:6px 0;justify-content:center;gap:6px}.sidebar__account-user{flex:none}.sidebar__brand{justify-content:center;padding:0 0 18px}.nav-item{justify-content:center}.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home__grid{grid-template-columns:1fr}.home,.page{padding:24px 20px 48px}.hanzi-q__char{font-size:88px}.practice__body{padding:0 20px}}@media (max-height: 700px){.hanzi-q{gap:22px}.hanzi-q__char{font-size:84px}.answer{height:60px}.answer__input,.answer__value{font-size:26px}.hanzi-q__foot{padding-top:14px}}@media (max-width: 720px){.practice__top{padding:0 14px;gap:8px}.practice__top-left{gap:10px;min-width:0}.practice__top-right{gap:12px}.practice__tag{display:none}.practice__name{overflow:hidden;text-overflow:ellipsis}}@media (max-width: 560px){.practice__acc-label,.practice__mode,.practice__divider{display:none}.practice__top-right{gap:10px;font-size:12px}}@media (max-width: 400px){.practice__name{display:none}.practice__top{padding:0 10px}}@media (max-width: 520px){.mode-grid{grid-template-columns:1fr}.home__head{flex-direction:column;align-items:flex-start;gap:12px}.hanzi-q__foot{flex-direction:column;gap:14px;align-items:stretch}.hanzi-q__foot .btn{width:100%}}.theme-swatches{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.theme-swatch{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 16px;border:2px solid var(--border);border-radius:var(--r-lg);background:var(--bg-panel);color:var(--text-3);font-size:12px;transition:border-color .15s,color .15s;cursor:pointer}.theme-swatch:hover{border-color:var(--border-strong);color:var(--text-2)}.theme-swatch.is-on{border-color:var(--accent);color:var(--text);font-weight:500}.theme-swatch__dot{width:22px;height:22px;border-radius:99px;box-shadow:0 1px 3px #0003}.stats-page{padding:32px 36px;max-width:860px}.stats-page__head{margin-bottom:28px}.stats-page__title{font-size:26px;font-weight:600;color:var(--text);margin:0}.stats-section{margin-bottom:32px}.stats-section__title{font:500 11px/1 var(--font-mono);letter-spacing:.12em;color:var(--text-4);text-transform:uppercase;margin-bottom:12px}.stats-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stats-kpi{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.stats-kpi__label{font-size:12px;color:var(--text-3);margin-bottom:8px}.stats-kpi__value{font-size:28px;color:var(--text)}.stats-kpi__value.is-ok{color:var(--ok)}.stats-chart{display:flex;align-items:flex-end;gap:6px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px 20px 12px;height:140px}.stats-chart__col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}.stats-chart__bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end}.stats-chart__bar{width:100%;border-radius:4px 4px 0 0;min-height:0;transition:height .3s;background:var(--bar)}.stats-chart__label{font-size:9px;color:var(--text-4);white-space:nowrap}.stats-mode-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stats-mode-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:4px}.stats-mode-card__label{font-size:12px;color:var(--text-3)}.stats-mode-card__value{font-size:26px;color:var(--text);line-height:1.2}.stats-mode-card__value.is-weak{color:var(--err)}.stats-mode-card__unit{font-size:11px;color:var(--text-4)}.stats-mode-card__sub{font-size:11px;color:var(--text-4);margin-top:4px}.stats-session-list{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;overflow:hidden}.stats-session-row{display:grid;grid-template-columns:60px 52px 1fr 52px 60px 52px;gap:8px;padding:10px 16px;font-size:13px;color:var(--text-2);border-bottom:1px solid var(--border-faint);align-items:center}.stats-session-row:last-child{border-bottom:none}.stats-session-row--head{font:500 11px/1 var(--font-mono);letter-spacing:.08em;color:var(--text-4);background:var(--bg-panel);padding-block:8px}.stats-session-row .is-ok{color:var(--ok)}.stats-session-row .is-weak{color:var(--err)}.stats-empty{text-align:center;padding:60px 0;color:var(--text-4);display:flex;flex-direction:column;align-items:center;gap:12px}.stats-empty__icon{color:var(--text-5)}@media (max-width: 680px){.stats-kpi-row,.stats-mode-grid{grid-template-columns:repeat(2,1fr)}.stats-page{padding:24px 20px}.stats-session-row{grid-template-columns:52px 1fr 44px 52px}.stats-session-row>:nth-child(2),.stats-session-row>:nth-child(6){display:none}}
