@font-face{font-family:Yellowtail;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e7d42cb11256a9f9-s.1tolkvcqwph65.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Yellowtail;font-style:normal;font-weight:400;font-display:swap;src:url(../media/32a036eac4f5c29a-s.p.02omj01dfd0zw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Yellowtail Fallback;src:local(Arial);ascent-override:128.39%;descent-override:39.81%;line-gap-override:11.87%;size-adjust:75.68%}.yellowtail_f83e7489-module__1UTi7a__className{font-family:Yellowtail,Yellowtail Fallback;font-style:normal;font-weight:400}.yellowtail_f83e7489-module__1UTi7a__variable{--font-yellowtail:"Yellowtail", "Yellowtail Fallback"}
@font-face{font-family:Pinyin Tone Marks;src:local(Helvetica Neue),local(Segoe UI),local(Roboto),local(Arial),local(Noto Sans);unicode-range:U+101,U+112-113,U+11A-11B,U+12A-12B,U+14C-14D,U+16A-16B,U+1CD-1DC,U+1F8-1F9}:root{--color-primary:#58cc02;--color-primary-dark:#3a8f00;--color-primary-glow:#58cc0259;--color-primary-solid:var(--color-primary);--color-primary-solid-hover:var(--color-primary-dark);--color-on-primary:#fff;--color-gold:#b8860b;--color-gold-soft:#e8c874;--color-wood:#4a3222;--color-wood-soft:#6b4a30;--color-outline:#1a1a1a;--shadow-card:0 4px 0 var(--color-outline);--shadow-card-sm:0 3px 0 var(--color-outline);--color-bg:#fff;--color-exam-bg:#f5f6f8;--color-bg-soft:#eef0f3;--color-sidebar:#fff;--color-surface:#fff;--color-text:#1b1f24;--color-text-muted:#6b6757;--color-border:#e9e3d3;--color-node-locked-border:#c9c4b4;--color-bg-warm:#f7f5ef;--color-pinyin:#1cb0f6;--color-success:var(--state-ok);--color-error:var(--state-bad);--color-primary-soft:#eaf7d9;--state-ok:#16a34a;--state-ok-soft:#e9f7ef;--state-ok-border:#bbe7cc;--state-bad:#dc2626;--state-bad-soft:#fef2f2;--state-bad-border:#fca5a5;--answer-correct:#58cc02;--answer-correct-soft:#d7ffb8;--answer-correct-text:#3a8f00;--answer-wrong:#ff4b4b;--answer-wrong-soft:#ffd6d6;--answer-wrong-text:#d93a3a;--danger-shadow:#d93a3a;--rank-gold:#d4a017;--rank-gold-soft:#fff6d8;--rank-gold-shadow:#a97f0a;--rank-gold-text:#7a5c05;--rank-silver:#9aa6b2;--rank-silver-soft:#f2f5f8;--rank-silver-shadow:#6f7b87;--rank-silver-text:#4f5a66;--rank-bronze:#b87333;--rank-bronze-soft:#fbe9d7;--rank-bronze-shadow:#8a4f1d;--rank-bronze-text:#7a4218;--state-warn:#92620a;--state-doing:#ff9600;--state-doing-shadow:#cc7a00;--state-warn-soft:#fef3c7;--state-warn-border:#fcd34d;--state-idle-soft:#f7f8fa;--state-idle-text:#4b5563;--state-key-bg:#f1f3f6;--state-key-text:#374151;--radius:18px;--radius-pill:999px;--font-sans:"Pinyin Tone Marks", var(--font-baloo-2), -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", system-ui, sans-serif;--font-display:var(--font-sans);--font-brand:var(--font-yellowtail), cursive;--font-pinyin:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", system-ui, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-primary:#7ed321;--color-primary-dark:#9ae94a;--color-primary-glow:#7ed32159;--color-primary-solid:var(--color-primary);--color-primary-solid-hover:var(--color-primary-dark);--color-on-primary:#15171c;--color-outline:#e7ebf0;--shadow-card:0 4px 0 #0009;--shadow-card-sm:0 3px 0 #0009;--color-gold:#d4a843;--color-gold-soft:#e8c874;--color-wood:#241a12;--color-wood-soft:#3a2a1c;--color-bg:#16181d;--color-exam-bg:#0f1115;--color-bg-soft:#1c1f26;--color-sidebar:#171a21;--color-surface:#1f2229;--color-text:#e7ebf0;--color-text-muted:#b3ac9d;--color-border:#3a352c;--color-node-locked-border:#4a4335;--color-bg-warm:#232019;--color-pinyin:#4cc3f7;--color-success:var(--state-ok);--color-error:var(--state-bad);--color-primary-soft:#1c2e12;--state-ok:#34d399;--state-ok-soft:#12301f;--state-ok-border:#1f5134;--state-bad:#f87171;--state-bad-soft:#341a1a;--state-bad-border:#7f1d1d;--answer-correct:#58cc02;--answer-correct-soft:#20360f;--answer-correct-text:#7ed321;--answer-wrong:#ff4b4b;--answer-wrong-soft:#3a1717;--answer-wrong-text:#ff8a8a;--danger-shadow:#a83030;--rank-gold:#e0b64a;--rank-gold-soft:#3a3115;--rank-gold-shadow:#8f6a0a;--rank-gold-text:#f0cc63;--rank-silver:#b8c4d0;--rank-silver-soft:#2a2f36;--rank-silver-shadow:#5c6773;--rank-silver-text:#d7dee6;--rank-bronze:#d08a54;--rank-bronze-soft:#382417;--rank-bronze-shadow:#7a4218;--rank-bronze-text:#f0b584;--state-warn:#fbbf24;--state-doing:#ff9600;--state-doing-shadow:#cc7a00;--state-warn-soft:#3a2f10;--state-warn-border:#5b4a12;--state-idle-soft:#1c1f26;--state-idle-text:#9aa4b2;--state-key-bg:#262b34;--state-key-text:#cbd5e1}}:root[data-theme=dark]{--color-primary:#7ed321;--color-primary-dark:#9ae94a;--color-primary-glow:#7ed32159;--color-primary-solid:var(--color-primary);--color-primary-solid-hover:var(--color-primary-dark);--color-on-primary:#15171c;--color-outline:#e7ebf0;--shadow-card:0 4px 0 #0009;--shadow-card-sm:0 3px 0 #0009;--color-gold:#d4a843;--color-gold-soft:#e8c874;--color-wood:#241a12;--color-wood-soft:#3a2a1c;--color-bg:#16181d;--color-exam-bg:#0f1115;--color-bg-soft:#1c1f26;--color-sidebar:#171a21;--color-surface:#1f2229;--color-text:#e7ebf0;--color-text-muted:#b3ac9d;--color-border:#3a352c;--color-node-locked-border:#4a4335;--color-bg-warm:#232019;--color-pinyin:#4cc3f7;--color-success:var(--state-ok);--color-error:var(--state-bad);--color-primary-soft:#1c2e12;--state-ok:#34d399;--state-ok-soft:#12301f;--state-ok-border:#1f5134;--state-bad:#f87171;--state-bad-soft:#341a1a;--state-bad-border:#7f1d1d;--answer-correct:#58cc02;--answer-correct-soft:#20360f;--answer-correct-text:#7ed321;--answer-wrong:#ff4b4b;--answer-wrong-soft:#3a1717;--answer-wrong-text:#ff8a8a;--danger-shadow:#a83030;--rank-gold:#e0b64a;--rank-gold-soft:#3a3115;--rank-gold-shadow:#8f6a0a;--rank-gold-text:#f0cc63;--rank-silver:#b8c4d0;--rank-silver-soft:#2a2f36;--rank-silver-shadow:#5c6773;--rank-silver-text:#d7dee6;--rank-bronze:#d08a54;--rank-bronze-soft:#382417;--rank-bronze-shadow:#7a4218;--rank-bronze-text:#f0b584;--state-warn:#fbbf24;--state-doing:#ff9600;--state-doing-shadow:#cc7a00;--state-warn-soft:#3a2f10;--state-warn-border:#5b4a12;--state-idle-soft:#1c1f26;--state-idle-text:#9aa4b2;--state-key-bg:#262b34;--state-key-text:#cbd5e1}
*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg)}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input{font-family:inherit}@media (pointer:coarse){input,textarea,select{font-size:16px}}.shell-main h1{font-family:var(--font-display)}.dropdown-item{background:0 0;transition:background .12s}.dropdown-item:hover{background:var(--color-bg-soft)}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-card);border:3px solid var(--color-outline)}.card-tinted{background:var(--color-bg-soft);border-radius:var(--radius);box-shadow:var(--shadow-card);border:3px solid var(--color-gold-soft);position:relative}.card-tinted:before{content:"";pointer-events:none;opacity:.55;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b8860b' stroke-width='1.5'%3E%3Cpath d='M2 8 Q6 2 12 6 Q16 2 22 6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;width:18px;height:18px;position:absolute;top:8px;left:8px}.chip{color:var(--color-text-muted);background:var(--color-surface);border:2px solid var(--color-outline);border-radius:var(--radius-pill);padding:.2rem .6rem;font-size:.74rem;font-weight:800}.section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);font-size:.8rem;font-weight:800}.icon-tile{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.dashboard-cl-bar .lib-bar{height:7px}.btn-primary{background:var(--color-primary);color:var(--color-on-primary);border:3px solid var(--color-outline);border-radius:var(--radius-pill);box-shadow:var(--shadow-card-sm);padding:.7rem 1.5rem;font-size:.95rem;font-weight:700;transition:filter .15s,transform .15s,box-shadow .15s}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-1px)}.btn-primary:active:not(:disabled){box-shadow:none;transform:translateY(2px)scale(.98)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-press{transition:transform .15s,box-shadow .15s}.btn-press:hover:not(:disabled){transform:translateY(-2px)}.btn-press:active:not(:disabled){filter:brightness(.92);transition:transform 50ms,box-shadow 50ms,filter 50ms;transform:scale(.95);box-shadow:none!important}.btn-pop{animation:.22s btn-pop-anim}@keyframes btn-pop-anim{0%{transform:scale(1)}40%{transform:scale(.86)}70%{transform:scale(1.06)}to{transform:scale(1)}}.btn-ghost{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius-pill);color:var(--color-text);padding:.6rem 1.25rem;font-size:.9rem;font-weight:600;transition:transform .1s}.btn-danger:hover:not(:disabled){filter:brightness(.94)}.btn-ghost:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-ghost:active:not(:disabled){transform:scale(.96)}.btn-ghost:disabled{opacity:.45;cursor:not-allowed}.btn-danger{background:var(--color-error);color:#fff;border:3px solid var(--color-outline);border-radius:var(--radius-pill);box-shadow:var(--shadow-card-sm);padding:.7rem 1.5rem;font-size:.95rem;font-weight:600;transition:filter .15s,transform .15s,box-shadow .15s}.btn-danger:active:not(:disabled){box-shadow:none;transform:translateY(2px)}.btn-danger:hover{filter:brightness(.85)}.btn-danger:disabled{opacity:.6;cursor:not-allowed}.switch{flex-shrink:0;width:40px;height:22px;display:inline-flex;position:relative}.switch input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute}.switch-track{background:var(--color-border);border:2px solid var(--color-outline);pointer-events:none;border-radius:999px;transition:background .15s;position:absolute;inset:0}.switch-track:before{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:1px;left:1px;box-shadow:0 1px 3px #0000004d}.switch input:checked+.switch-track{background:var(--color-primary-solid)}.switch input:checked+.switch-track:before{transform:translate(18px)}.switch input:disabled+.switch-track{opacity:.5}.audio-player{background:var(--color-surface);border-radius:999px;align-items:center;gap:.65rem;padding:.35rem .9rem .35rem .35rem;display:inline-flex}.audio-player-btn{background:var(--color-primary-solid);width:34px;height:34px;color:var(--color-on-primary);box-shadow:0 2px 0 var(--color-primary-solid-hover);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;transition:transform .15s,background .15s;display:inline-flex}.audio-player-btn:hover{background:var(--color-primary-solid-hover);transform:scale(1.06)}.audio-player-btn:active{transform:scale(.94)}.audio-player-btn.is-playing{animation:1.6s ease-in-out infinite audio-player-pulse}.audio-player-btn.is-record{background:var(--state-key-bg);color:var(--state-key-text)}.audio-player-btn.is-record:hover{background:var(--color-border)}.audio-player-btn.is-record.is-recording{background:var(--color-primary-solid);color:var(--color-on-primary)}.audio-player-btn.is-record.is-recording:hover{background:var(--color-primary-solid-hover)}@keyframes audio-player-pulse{0%,to{box-shadow:0 0 0 0 var(--color-primary-glow)}50%{box-shadow:0 0 0 6px #0000}}.audio-player-speed-btn{border:2px solid var(--color-outline);background:var(--color-surface);color:var(--color-text-muted);text-align:center;border-radius:999px;flex-shrink:0;min-width:2.75rem;padding:.2rem .5rem;font-size:.72rem;font-weight:700}.audio-player-speed-btn:not(:disabled):hover{border-color:var(--color-primary);color:var(--color-primary)}.audio-player-speed-btn:disabled{opacity:.5;cursor:not-allowed}.audio-player-waveform{align-items:flex-end;gap:2px;height:20px;display:flex}.audio-player-waveform i{background:var(--color-border);transform-origin:bottom;border-radius:2px;width:3px;transition:background .15s linear}.audio-player-waveform i.is-lit{background:var(--color-primary)}.audio-player-waveform.is-playing i{animation:.9s ease-in-out infinite audio-player-eq-bounce}.audio-player-waveform.is-playing i:nth-child(2n){animation-delay:.1s}.audio-player-waveform.is-playing i:nth-child(3n){animation-delay:.2s}.audio-player-waveform.is-playing i:nth-child(4n){animation-delay:.3s}@keyframes audio-player-eq-bounce{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){.audio-player-waveform.is-playing i{animation:none}}.page-loading-spinner{border:4px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite page-loading-spin}@keyframes page-loading-spin{to{transform:rotate(360deg)}}.status-spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;flex-shrink:0;width:1.1rem;height:1.1rem;animation:.8s linear infinite page-loading-spin}.update-toast{z-index:1000;background:var(--color-surface);max-width:calc(100vw - 2rem);color:var(--color-text);border:2px solid var(--color-outline);border-radius:var(--radius-pill);align-items:center;gap:.75rem;padding:.6rem .7rem .6rem 1rem;font-size:.9rem;font-weight:600;animation:.25s ease-out update-toast-in;display:flex;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #00000029}.update-toast__action{border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-primary-dark);font:inherit;cursor:pointer;border:none;flex-shrink:0;padding:.35rem .85rem;font-size:.85rem;font-weight:700}.update-toast__action:hover{filter:brightness(.96)}@keyframes update-toast-in{0%{opacity:0;transform:translate(-50%,.75rem)}}.status-card{text-align:center;background:var(--color-surface);border:2px solid var(--color-outline);border-radius:var(--radius);max-width:26rem;box-shadow:0 6px 0 var(--color-outline);flex-direction:column;align-items:center;gap:.75rem;margin:12vh auto;padding:2rem 1.5rem;display:flex}.status-card--flat{box-shadow:none;background:0 0;border:none;margin:0;padding:.5rem 0}.status-card__icon{background:var(--color-primary-soft);width:4.25rem;height:4.25rem;color:var(--color-primary-dark);border-radius:50%;justify-content:center;align-items:center;display:flex}.status-card__icon.is-error{background:var(--state-bad-soft);color:var(--state-bad)}.status-card__icon .status-spinner{width:1.9rem;height:1.9rem}.status-card h1{margin:.25rem 0 0;font-size:1.3rem}.status-card p{color:var(--color-text-muted);margin:0;line-height:1.5}.status-card .btn-primary{margin-top:.5rem}.course-node-current{animation:1.8s ease-in-out infinite course-node-pulse}@keyframes course-node-pulse{0%,to{box-shadow:0 0 #c8402f73}50%{box-shadow:0 0 0 10px #c8402f73}}@keyframes mascot-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes reward-float-up{0%{opacity:0;transform:translateY(0)}15%{opacity:1;transform:translateY(-4px)}75%{opacity:1;transform:translateY(-18px)}to{opacity:0;transform:translateY(-26px)}}.back-link{background:var(--color-surface);width:40px;height:40px;color:var(--color-text);border:3px solid var(--color-outline);border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,background .15s,border-color .15s,color .15s;display:inline-flex}.back-link:hover{background:var(--color-primary-solid);border-color:var(--color-primary-solid);color:var(--color-on-primary);transform:translate(-3px)}.back-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.app-select{appearance:none;border:3px solid var(--color-outline);background-color:var(--color-surface);width:100%;color:var(--color-text);cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b6757' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right .8rem center;background-repeat:no-repeat;background-size:.85rem;border-radius:12px;padding:.55rem 2.35rem .55rem .75rem;font-family:inherit;font-size:.9rem}.app-select:focus,.app-select:focus-visible{border-color:var(--state-ok);box-shadow:0 0 0 3px var(--state-ok-soft);outline:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .app-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b3ac9d' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}}:root[data-theme=dark] .app-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b3ac9d' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}.reorder-passage-tile:hover:not(:disabled){border-color:var(--state-ok);color:var(--state-ok)}.reorder-passage-slot{transition:filter .1s}.reorder-passage-slot:hover:not(:disabled){filter:brightness(.94)}
.auth-btn{white-space:nowrap;cursor:pointer;border:1.5px solid #0000;border-radius:999px;align-items:center;gap:.4rem;padding:.6rem 1.15rem;font-size:.9rem;font-weight:800;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex}.auth-btn:active{transform:translateY(1px)}.auth-btn.auth-btn--ghost{border-color:rgba(var(--auth-line) / .25);color:var(--auth-ink)}.auth-btn.auth-btn--ghost:hover{border-color:var(--auth-accent);color:var(--auth-accent)}.auth-btn.auth-btn--primary{background:linear-gradient(180deg, var(--auth-cta,var(--auth-accent)), var(--auth-cta-deep,var(--auth-accent-deep)));color:#fff;box-shadow:0 6px 16px -6px color-mix(in srgb, var(--auth-cta,var(--auth-accent)) 55%, transparent)}.auth-btn.auth-btn--primary:hover{color:#fff;box-shadow:0 10px 22px -6px color-mix(in srgb, var(--auth-cta,var(--auth-accent)) 70%, transparent);transform:translateY(-1px)}
.dashboard-card-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.9rem;display:flex}.dashboard-card-label{align-items:center;gap:.5rem;font-size:1rem;font-weight:700;display:flex}.dashboard-goal-note{color:var(--color-text-muted);margin-top:.75rem;font-size:.78rem}.dashboard-continue-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.dashboard-cl-card{flex-direction:column;gap:.65rem;padding:1.25rem;display:flex}.dashboard-cl-top{align-items:center;gap:.55rem;display:flex}.dashboard-cl-sub{color:var(--color-text-muted);font-size:.78rem}.dashboard-cl-cta{color:var(--color-primary);margin-top:auto;font-size:.8rem;font-weight:800}.dashboard-milestone{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.dashboard-milestone p{color:var(--color-text-muted);flex:280px;min-width:0;font-size:.88rem}
.journey-card{flex-direction:column;gap:.9rem;margin:1.25rem 0;padding:1.25rem;display:flex}.journey-top{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.journey-title{margin:.15rem 0 0;font-size:1.4rem;line-height:1.2}.journey-sub{color:var(--color-text-muted);margin:.15rem 0 0;font-size:.82rem}.journey-progress{align-items:center;gap:.75rem;display:flex}.journey-progress .roadmap-bar{flex:1}.roadmap-bar{background:var(--color-border);border-radius:999px;height:9px;overflow:hidden}.roadmap-bar>i{background:var(--color-primary);border-radius:999px;height:100%;transition:width .3s;display:block}.journey-progress b{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.82rem}.path-preview{align-items:center;min-width:0;max-width:560px;display:flex}.path-preview .seg{background:var(--color-node-locked-border);flex:1;height:3px}.path-preview .seg.is-done{background:var(--color-primary)}.path-node{border:3px solid var(--color-outline);background:var(--color-surface);width:38px;height:38px;color:var(--color-text);box-shadow:0 3px 0 var(--color-outline);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.path-node.is-done{background:var(--color-primary);color:var(--color-on-primary);box-shadow:0 3px 0 var(--color-primary-solid-hover)}.path-node.is-current{background:var(--state-doing);color:#fff;box-shadow:0 4px 0 var(--state-doing-shadow);animation:1.8s ease-in-out infinite roadmap-node-pulse}.path-node.is-locked{background:var(--color-border);border-color:var(--color-node-locked-border);box-shadow:0 3px 0 var(--color-node-locked-border);color:var(--color-text-muted)}@keyframes roadmap-node-pulse{0%,to{box-shadow:0 4px 0 var(--state-doing-shadow), 0 0 0 0 #ff960073}50%{box-shadow:0 4px 0 var(--state-doing-shadow), 0 0 0 9px #ff960000}}@media (prefers-reduced-motion:reduce){.path-node.is-current{animation:none}}.journey-next{border:2px solid var(--color-outline);background:var(--color-bg-warm);border-radius:14px;align-items:center;gap:.75rem;min-width:0;padding:.75rem;display:flex}.journey-next .path-node{border-width:2px;width:34px;height:34px}.journey-next .body{flex:1;min-width:0}.journey-next .kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);font-size:.7rem;font-weight:800}.journey-next .title{white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:700;overflow:hidden}.journey-actions{flex-wrap:wrap;gap:.6rem;display:flex}.journey-actions .btn-primary,.journey-actions .btn-ghost{padding:.45rem .9rem;font-size:.8rem}.roadmap-chip{border:2px solid var(--state-doing-shadow);color:#5a3200;white-space:nowrap;background:#ffe9c7;border-radius:999px;align-items:center;gap:5px;padding:.1rem .55rem;font-size:.75rem;font-weight:800;display:inline-flex}.roadmap-chip.is-done{border-color:var(--color-primary-solid-hover);background:var(--answer-correct-soft);color:var(--answer-correct-text)}.roadmap-sub{color:var(--color-text-muted);margin:-1rem 0 1.25rem;font-size:.9rem}.roadmap-hero{flex-direction:column;gap:1rem;margin-bottom:1.1rem;padding:1.35rem;display:flex}.roadmap-hero-top{justify-content:space-between;align-items:flex-start;gap:1.1rem;display:flex}.roadmap-hero-title{margin:.25rem 0 .1rem;font-size:1.6rem;line-height:1.15}.roadmap-hero-meta{color:var(--color-text-muted);margin:0;font-size:.82rem}.roadmap-ring{border-radius:50%;flex-shrink:0;place-items:center;width:84px;height:84px;display:grid;position:relative}.roadmap-ring:before{content:"";background:var(--color-surface);border-radius:50%;position:absolute;inset:8px}.roadmap-ring b,.roadmap-ring span{position:relative}.roadmap-ring b{font-size:1.05rem;line-height:1}.roadmap-ring span{color:var(--color-text-muted);font-size:.62rem;font-weight:700}.roadmap-ladder{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.65rem;margin-bottom:1.1rem;display:grid}.lvl-chip{border:3px solid var(--color-outline);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-card-sm);border-radius:14px;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;padding:.75rem .9rem;text-decoration:none;display:flex}.lvl-chip b{font-size:1rem}.lvl-chip small{color:var(--color-text-muted);font-size:.7rem;font-weight:700}.lvl-chip.is-done{background:var(--answer-correct-soft);border-color:var(--color-primary-solid-hover);color:var(--answer-correct-text)}.lvl-chip.is-done small{color:var(--answer-correct-text)}.lvl-chip.is-current{background:var(--state-doing);border-color:var(--state-doing-shadow);color:#1a1a1a;box-shadow:0 3px 0 var(--state-doing-shadow)}.lvl-chip.is-current small{color:#5a3200}.lvl-chip.is-locked{background:var(--color-border);border-color:var(--color-node-locked-border);color:var(--color-text-muted);box-shadow:0 3px 0 var(--color-node-locked-border)}.roadmap-columns{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:start;gap:1rem;display:grid}.roadmap-path-card{padding:1.1rem}.roadmap-path-head{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.75rem;display:flex}.roadmap-path-head a{color:var(--color-primary-dark);white-space:nowrap;font-size:.75rem;font-weight:800;text-decoration:none}.roadmap-row{align-items:center;gap:.75rem;padding:.55rem 0;display:flex}.roadmap-row+.roadmap-row{border-top:1px solid var(--color-border)}.roadmap-row .path-node{width:34px;height:34px;box-shadow:0 2px 0 var(--color-outline);border-width:2px}.roadmap-row.is-locked .path-node{box-shadow:0 2px 0 var(--color-node-locked-border)}.roadmap-row .body{flex:1;min-width:0}.roadmap-row .title{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:700;overflow:hidden}.roadmap-row .sub{color:var(--color-text-muted);font-size:.7rem}.roadmap-row .action{color:var(--color-primary-dark);white-space:nowrap;font-size:.72rem;font-weight:800;text-decoration:none}.roadmap-row.is-locked .action{color:var(--color-text-muted)}.roadmap-goal-card{padding:1rem}.roadmap-side{flex-direction:column;align-items:flex-start;gap:.9rem;display:flex}.roadmap-side>.card{width:100%}.roadmap-goal-card h2{margin:0 0 .6rem}.roadmap-goal-row{align-items:center;gap:.6rem;min-width:0;padding:.5rem 0;display:flex}.roadmap-goal-row+.roadmap-goal-row{border-top:1px solid var(--color-border)}.roadmap-goal-box{border:2px solid var(--color-outline);border-radius:6px;flex-shrink:0;place-items:center;width:20px;height:20px;font-size:.72rem;display:grid}.roadmap-goal-row.is-done .roadmap-goal-box{background:var(--color-primary);border-color:var(--color-primary-solid-hover);color:var(--color-on-primary)}.roadmap-goal-row.is-suggestion{border-style:dashed}.roadmap-milestone{flex-wrap:wrap;align-items:center;gap:.6rem;padding:.9rem;font-size:.82rem;display:flex}.roadmap-milestone p{flex:200px}.roadmap-milestone .chip{white-space:nowrap;flex-shrink:0}.roadmap-milestone p{margin:0}@media (max-width:900px){.roadmap-columns{grid-template-columns:1fr}}
.notes-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;display:grid}.note-card{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);min-width:0;box-shadow:var(--shadow-card-sm);cursor:pointer;padding:.8rem 2rem .85rem .9rem;transition:transform .12s,box-shadow .12s;position:relative}.note-card:hover{transform:translateY(-2px)}.note-card:active{box-shadow:none;transform:translateY(1px)}.note-head{flex-wrap:wrap;align-items:baseline;gap:.4rem;display:flex}.note-hanzi{font-size:1.2rem;font-weight:700}.note-pinyin{color:var(--color-pinyin);font-size:.8rem;font-family:var(--font-pinyin);font-weight:600}.note-meaning{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:.15rem;font-size:.88rem;overflow:hidden}.note-meta{color:var(--color-text-muted);margin-top:.35rem;font-size:.7rem}.note-delete{border:2px solid var(--color-outline);background:var(--color-surface);width:24px;height:24px;color:var(--color-text-muted);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:8px;right:8px}.note-delete:hover:not(:disabled){border-color:var(--answer-wrong);color:var(--answer-wrong-text)}.note-delete:disabled{opacity:.5;cursor:wait}.note-empty{text-align:center;color:var(--color-text-muted);background:var(--color-surface);border:3px dashed var(--color-border);border-radius:var(--radius);padding:2rem 1.25rem}.notes-error{color:var(--state-bad);background:var(--state-bad-soft);border:2px solid var(--state-bad-border);border-radius:12px;margin:0;padding:.6rem .8rem;font-size:.85rem}.note-popup{z-index:50;background:#14120e80;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.note-popup-card{text-align:center;background:var(--color-bg);border:3px solid var(--color-outline);border-radius:calc(var(--radius) + 6px);width:100%;max-width:400px;min-height:300px;box-shadow:var(--shadow-card);flex-direction:column;align-items:center;padding:2.5rem 2rem 2rem;display:flex;position:relative}.note-popup-close{border:2px solid var(--color-outline);background:var(--color-surface);width:30px;height:30px;color:var(--color-text-muted);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:.75rem;right:.75rem}.note-speak{border:2px solid var(--color-outline);background:var(--color-bg-soft);width:34px;height:34px;color:var(--color-text);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid}
.shop-list{flex-direction:column;gap:.85rem;display:flex}.shop-row{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card-sm);justify-content:space-between;align-items:center;gap:1rem;padding:.95rem 1rem;display:flex}.shop-item-main{align-items:flex-start;gap:.8rem;min-width:0;display:flex}.shop-art{flex-shrink:0;display:block}.shop-art-fallback{background:var(--color-primary-soft);border:3px solid var(--color-outline);box-shadow:var(--shadow-card-sm);border-radius:18px;flex-shrink:0;place-items:center;line-height:1;display:grid}.shop-title{font-size:1rem;font-weight:700}.shop-desc{color:var(--color-text-muted);max-width:380px;font-size:.85rem}.shop-owned{color:var(--color-text-muted);margin-top:.2rem;font-size:.78rem}.shop-side{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.45rem;display:flex}.shop-price{white-space:nowrap;font-weight:800}.shop-empty{text-align:center;color:var(--color-text-muted);background:var(--color-surface);border:3px dashed var(--color-border);border-radius:var(--radius);padding:2rem 1.25rem}.shop-error{color:var(--state-bad);background:var(--state-bad-soft);border:2px solid var(--state-bad-border);border-radius:12px;margin:0;padding:.6rem .8rem;font-size:.85rem}.inventory-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:1rem;display:grid}.inventory-item{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card-sm);justify-content:center;align-items:center;padding:1rem;display:flex;position:relative}.inventory-count{min-width:28px;height:28px;color:var(--color-text);background:var(--color-surface);border:2px solid var(--color-outline);border-radius:999px;place-items:center;padding:0 6px;font-size:.8rem;font-weight:800;display:grid;position:absolute;bottom:-8px;right:-8px}.shop-art-fallback.is-bare{box-shadow:none;background:0 0;border:none;border-radius:0}.shop-modal-backdrop{z-index:1000;background:#0f0f1480;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.shop-modal{background:var(--color-bg);border:3px solid var(--color-outline);border-radius:calc(var(--radius) + 6px);width:100%;max-width:400px;box-shadow:var(--shadow-card);padding:1.5rem}.shop-qty-input{text-align:center;width:62px;font:inherit;color:var(--color-text);background:var(--color-bg-soft);border:2px solid var(--color-outline);border-radius:10px;padding:.4rem .3rem}.shop-total{justify-content:space-between;align-items:center;margin-top:1rem;font-weight:700;display:flex}.shop-total.is-short{color:var(--state-bad)}.shop-modal-error{color:var(--state-bad);margin:.4rem 0 0;font-size:.8rem}
.vocab-merged{flex-direction:column;gap:1rem;padding:1.35rem;display:flex}.vocab-merged-top{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.vocab-merged-title{margin:.2rem 0 .1rem;font-size:1.75rem;line-height:1.15}.vocab-merged-body{flex-direction:column;gap:.7rem;display:flex}.vocab-stat-line{flex-wrap:wrap;gap:.35rem 1.4rem;display:flex}.vocab-stat{color:var(--color-text-muted);align-items:center;gap:6px;font-size:.8rem;display:flex}.vocab-stat b{color:var(--color-text);font-variant-numeric:tabular-nums;margin-left:2px}.vocab-meta-line{color:var(--color-text-muted);flex-wrap:wrap;gap:1rem;font-size:.76rem;display:flex}.vocab-meta-line b{color:var(--color-text);font-variant-numeric:tabular-nums}.vocab-hero-row{grid-template-columns:minmax(0,1fr);gap:1rem;display:grid}.vocab-hero-row.has-forecast{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}@media (max-width:720px){.vocab-hero-row.has-forecast{grid-template-columns:minmax(0,1fr)}}.vocab-forecast-card{padding:1.35rem;display:flex}.vocab-forecast{flex-direction:column;gap:.75rem;width:100%;display:flex}.vocab-forecast-bars{flex:1;grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;display:grid}.vocab-forecast-col{flex-direction:column;align-items:center;gap:.25rem;min-width:0;display:flex}.vocab-forecast-col b{font-variant-numeric:tabular-nums;font-size:.8rem}.vocab-forecast-track{background:var(--color-bg-soft);border-radius:6px;flex:1;align-items:flex-end;width:100%;max-width:30px;min-height:72px;display:flex;overflow:hidden}.vocab-forecast-track span{background:var(--color-pinyin);border-radius:6px 6px 0 0;width:100%}.vocab-forecast-col.is-today .vocab-forecast-track span{background:var(--state-doing)}.vocab-forecast-col small{color:var(--color-text-muted);white-space:nowrap;font-size:.68rem}.vocab-actions{flex-wrap:wrap;gap:.6rem;margin-top:auto;display:flex}.vocab-actions .btn-primary,.vocab-actions .btn-ghost{padding:.5rem 1rem;font-size:.84rem}.vocab-stack{background:var(--color-border);border-radius:999px;height:10px;margin-bottom:.25rem;display:flex;overflow:hidden}.vocab-stat-row b{color:var(--color-text);font-variant-numeric:tabular-nums;margin-left:auto}.vocab-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.vocab-deck-grid{grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:.9rem;display:grid}.vocab-deck-card{flex-direction:column;gap:.55rem;padding:.9rem;transition:transform .12s,box-shadow .12s;display:flex;position:relative}.vocab-deck-card:hover{transform:translateY(-2px)}.vocab-deck-card:active{box-shadow:none;transform:translateY(1px)scale(.99)}.vocab-deck-card:has(.vocab-deck-hit:active){box-shadow:none;transform:translateY(1px)scale(.99)}.vocab-deck-hit{z-index:1;border-radius:inherit;position:absolute;inset:0}.vocab-deck-view{z-index:2;border:2px solid var(--color-outline);background:var(--color-surface);color:var(--color-text-muted);white-space:nowrap;border-radius:999px;align-items:center;padding:1px 8px;font-size:.66rem;font-weight:800;text-decoration:none;display:inline-flex;position:absolute;top:9px;right:10px}.vocab-deck-view:hover{border-color:var(--color-primary);color:var(--color-primary-dark)}.vocab-deck-top{align-items:flex-start;gap:.6rem;min-width:0;padding-right:42px;display:flex}.vocab-lvl{border:2px solid var(--color-outline);border-radius:12px;flex-shrink:0;place-items:center;width:42px;height:42px;font-size:.92rem;font-weight:800;display:grid}.vocab-deck-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.92rem;font-weight:700;line-height:1.25;overflow:hidden}.vocab-deck-meta{color:var(--color-text-muted);font-size:.72rem}.vocab-bar{background:var(--color-border);border-radius:999px;height:9px;overflow:hidden}.vocab-bar>i{background:var(--color-primary);border-radius:999px;height:100%;transition:width .3s;display:block}.vocab-deck-foot{color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:.5rem;font-size:.72rem;display:flex}.vocab-deck-foot b{color:var(--color-text);font-variant-numeric:tabular-nums}.vocab-state{border:2px solid var(--color-outline);white-space:nowrap;border-radius:999px;align-items:center;padding:1px 7px;font-size:.66rem;font-weight:800;display:inline-flex}.vocab-state.is-done{background:var(--answer-correct-soft);border-color:var(--color-primary-solid-hover);color:var(--answer-correct-text)}.vocab-state.is-idle{background:var(--color-bg-soft);color:var(--color-text-muted)}.vocab-deck-current{border-color:var(--color-primary-solid-hover)}.vocab-deck-cover{border:2px solid var(--color-outline);border-radius:12px;flex-shrink:0;width:42px;height:42px;display:block;overflow:hidden}.vocab-deck-cover .lib-thumb{border-radius:0;width:100%;height:100%}.vocab-empty{text-align:center;color:var(--color-text-muted);border:3px dashed var(--color-border);border-radius:var(--radius);padding:1.5rem 1.25rem}.vocab-new-card{border:3px dashed var(--color-border);border-radius:var(--radius);min-height:92px;color:var(--color-text-muted);font:inherit;cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:.4rem;padding:1rem;font-size:.85rem;font-weight:700;display:flex}.vocab-new-card:hover{border-color:var(--color-primary);color:var(--color-primary-dark)}.vocab-my-card .lib-thumb{border:2px solid var(--color-outline);border-radius:12px;width:56px;height:56px}@media (max-width:900px){.vocab-merged-title{font-size:1.45rem}}.deck-modal-backdrop{z-index:300;background:#14120e80;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.deck-modal{background:var(--color-bg);border:3px solid var(--color-outline);border-radius:calc(var(--radius) + 6px);width:100%;max-width:420px;box-shadow:var(--shadow-card);padding:1.35rem}.deck-modal-head{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:1rem;display:flex}.deck-modal-head h2{margin:0;font-size:1.2rem}.deck-modal-close{border:2px solid var(--color-outline);background:var(--color-surface);width:30px;height:30px;color:var(--color-text-muted);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;padding:0;display:grid}.deck-modal-form{flex-direction:column;gap:.8rem;display:flex}.deck-modal-field{flex-direction:column;gap:.3rem;display:flex}.deck-modal-field span{color:var(--color-text-muted);font-size:.76rem;font-weight:700}.deck-modal-field input{width:100%;font:inherit;color:var(--color-text);background:var(--color-bg-soft);border:3px solid var(--color-outline);border-radius:10px;padding:.55rem .7rem;font-size:.88rem}.deck-modal-error{color:var(--state-bad);background:var(--state-bad-soft);border:2px solid var(--state-bad-border);border-radius:10px;margin:0;padding:.5rem .7rem;font-size:.8rem}.deck-modal-actions{justify-content:flex-end;gap:.6rem;margin-top:.25rem;display:flex}.deck-modal-actions .btn-primary,.deck-modal-actions .btn-ghost{padding:.45rem 1rem;font-size:.82rem}.deck-hero{flex-wrap:wrap;align-items:center;gap:1rem;margin-top:.75rem;padding:1.1rem;display:flex}.deck-hero-cover{border:3px solid var(--color-outline);background:linear-gradient(135deg, var(--color-primary), var(--color-wood));color:#fff;border-radius:16px;flex-shrink:0;place-items:center;width:64px;height:64px;display:grid}.deck-hero-info{flex:1;min-width:220px}.deck-hero-title-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.deck-hero-title-row h1{margin:0;font-size:1.5rem}.deck-edit-btn{border:2px solid var(--color-outline);background:var(--color-surface);width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;padding:0;display:grid}.deck-edit-btn:hover{border-color:var(--color-primary);color:var(--color-primary-dark)}.deck-hero-meta{color:var(--color-text-muted);margin:.15rem 0 0;font-size:.84rem}.deck-hero-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.deck-add-trigger{padding:.5rem .85rem;font-size:.8rem}.deck-add-fields{grid-template-columns:1fr;gap:.6rem;display:grid}.deck-card-preview{border:2px dashed var(--color-border);border-radius:12px;align-items:baseline;gap:.6rem;padding:.6rem .8rem;display:flex}.deck-card-preview__hanzi{font-size:1.35rem;font-weight:700}.deck-card-preview__pinyin{color:var(--color-pinyin);font-family:var(--font-pinyin);font-size:.8rem;font-weight:600}.deck-card-preview__meaning{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text-muted);font-size:.78rem;overflow:hidden}.deck-modal.is-wide{max-width:540px}@media (max-width:720px){.deck-hero{align-items:flex-start}}
.profile-id-row{flex-wrap:wrap;align-items:center;gap:1.1rem;display:flex}.profile-avatar{background:var(--color-bg-soft);border:2px solid var(--color-gold-soft);width:72px;height:72px;font-family:var(--font-display);color:var(--color-primary-dark);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.3rem;font-weight:900;display:flex}.profile-stat-strip{flex-wrap:wrap;gap:.7rem;display:flex}.profile-stat-pill{background:var(--color-bg);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card-sm);flex-direction:column;flex:140px;gap:.2rem;padding:.75rem .9rem;display:flex}.profile-stat-pill b{font-size:1.2rem;font-family:var(--font-display)}.profile-stat-pill span{color:var(--color-text-muted);font-size:.74rem;font-weight:700}.profile-form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.profile-field{flex-direction:column;gap:.35rem;min-width:0;display:flex}.profile-field label{color:var(--color-text-muted);font-size:.78rem;font-weight:700}.profile-field input{border:3px solid var(--color-outline);border-radius:var(--radius);background:var(--color-bg-soft);width:100%;padding:.6rem .8rem;font-size:.88rem}.profile-field .static-value{border:3px solid var(--color-outline);border-radius:var(--radius);background:var(--color-bg-soft);color:var(--color-text-muted);padding:.6rem .8rem;font-size:.88rem}.profile-form-actions{justify-content:flex-end;margin-top:1.1rem;display:flex}.profile-form-narrow{flex-direction:column;gap:.9rem;max-width:320px;display:flex}.profile-pro-banner{background:linear-gradient(135deg, var(--color-primary-solid), var(--color-primary-solid-hover));color:#fff;border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:1rem;padding:1rem 1.3rem;display:flex}.profile-pro-banner p{opacity:.92;flex:240px;min-width:0;font-size:.86rem}.profile-pro-banner .btn-primary{color:var(--color-primary-solid);background:#fff}.profile-pro-banner .btn-primary:hover{color:var(--color-primary-solid-hover);background:#fff}.profile-pro-active{align-items:center;gap:.6rem;font-size:.92rem;display:flex}.profile-progress-group{grid-template-columns:auto 1fr;align-items:center;gap:1.4rem;display:grid}.profile-bars{flex-direction:column;gap:.8rem;min-width:0;display:flex}.profile-bar-row{flex-direction:column;gap:.3rem;display:flex}.profile-bar-row .lbl{color:var(--color-text-muted);justify-content:space-between;font-size:.82rem;font-weight:700;display:flex}.profile-bar-row .lib-bar{height:8px}.profile-tile-row{flex-wrap:wrap;gap:.9rem;display:flex}.profile-tile{border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card-sm);flex:160px;align-items:center;gap:.7rem;padding:.85rem 1rem;display:flex}.profile-tile b{font-size:1.05rem;display:block}.profile-tile span{color:var(--color-text-muted);font-size:.76rem}@media (max-width:860px){.profile-progress-group{text-align:center;grid-template-columns:1fr;justify-items:center}}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:stretch;gap:1.25rem;display:grid}.settings-card{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card);overflow:hidden}.settings-card__head{border-bottom:1px solid var(--color-border);padding:.85rem 1.1rem;font-weight:700}.settings-card__body{padding:0 1.1rem}.settings-card__body>*+*{border-top:1px solid var(--color-border)}.settings-row{align-items:center;gap:.85rem;padding:1rem 0;display:flex}.settings-row--action{cursor:pointer}.settings-avatar{background:var(--color-primary-soft);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:3rem;height:3rem;display:inline-flex;overflow:hidden}.settings-avatar img{object-fit:contain;width:2.3rem;height:2.3rem}.settings-row__icon{background:var(--color-bg-soft);width:2.25rem;height:2.25rem;color:var(--color-text);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.settings-row__body{flex:1;min-width:0}.settings-row__title{font-size:.92rem;font-weight:700}.settings-row__desc{color:var(--color-text-muted);font-size:.82rem}
.hub-sect-head{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.9rem;display:flex}.hub-sect-label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);align-items:center;gap:.5rem;font-size:.8rem;font-weight:800;display:flex}.hub-continue-row{gap:1rem;padding-bottom:.3rem;display:flex;overflow-x:auto}.hub-continue-row>*{flex:0 0 220px}.hsk-level-select{display:none}@media (max-width:640px){.hsk-level-chips{display:none!important}.hsk-level-select{margin-bottom:1.5rem;font-weight:600;display:block}}
.exam-layout{align-items:flex-start;gap:1.5rem;display:flex}.exam-main{flex:1;min-width:0}.exam-sidebar{flex-shrink:0;width:280px;position:sticky;top:1rem}.exam-fullscreen{z-index:1000;background:var(--color-exam-bg);color:var(--color-text);overscroll-behavior:contain;padding:1rem;position:fixed;inset:0;overflow-y:auto}.exam-level-card{transition:transform .15s,box-shadow .15s;display:block}.exam-level-card:hover{transform:translateY(-3px);box-shadow:0 6px 16px #4a322247}.whisper-progress-track{background:var(--color-border);border-radius:999px;width:100%;height:6px;overflow:hidden}.whisper-progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--color-primary), var(--color-primary-dark));height:100%;transition:width .2s}.whisper-progress-fill.is-indeterminate{animation:1.2s ease-in-out infinite whisper-progress-indeterminate;width:40%!important}@keyframes whisper-progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}.practice-progress-track{background:var(--color-border);border-radius:999px;width:100%;height:8px;overflow:hidden}.practice-progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--color-primary), var(--color-primary-dark));height:100%;transition:width .35s}.practice-layout{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:1.5rem;display:grid}.practice-main{min-width:0}.practice-head{flex-wrap:wrap;align-items:center;gap:.65rem .9rem;margin-bottom:1rem;display:flex}.practice-head-count{color:var(--color-text-muted);white-space:nowrap;font-size:.85rem}.practice-head .practice-progress-track{flex:140px;min-width:110px}.practice-head-score{color:var(--color-text-muted);white-space:nowrap;gap:.75rem;font-size:.8rem;font-weight:600;display:flex}.practice-head-score b{color:var(--color-text)}.practice-head-score .is-ok b{color:var(--answer-correct-text)}.practice-head-score .is-bad b{color:var(--answer-wrong-text)}.practice-actions{justify-content:space-between;align-items:center;gap:.75rem;margin-top:.35rem;display:flex}.practice-actions .btn-ghost,.practice-actions .btn-primary{width:auto}.practice-actions-next{margin-left:auto}.practice-actions-hint{color:var(--color-text-muted);text-align:right;margin:.5rem 0 0;font-size:.8rem}.mcq-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-bottom:1rem;display:grid}@media (max-width:640px){.mcq-grid{grid-template-columns:minmax(0,1fr)}}.practice-side{position:sticky;top:1rem}.practice-side-panel{border:3px solid var(--color-outline);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-card);padding:1rem}.practice-side-head{justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.75rem;display:flex}.practice-side-head h2{margin:0;font-size:.85rem}.practice-side-head span{color:var(--color-text-muted);white-space:nowrap;font-size:.72rem}.practice-qgrid{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.practice-qcell{aspect-ratio:1;border:2px solid var(--color-outline);background:var(--color-bg-soft);color:var(--color-text-muted);font:inherit;cursor:pointer;border-radius:8px;place-items:center;font-size:.78rem;font-weight:700;transition:border-color .12s,background .12s;display:grid}.practice-qcell:hover{border-color:var(--color-primary)}.practice-qcell.is-now{background:var(--color-primary-solid);border-color:var(--color-primary-solid);color:#fff}.practice-qcell.is-ok{background:var(--answer-correct-soft);border-color:var(--answer-correct);color:var(--answer-correct-text)}.practice-qcell.is-bad{background:var(--answer-wrong-soft);border-color:var(--answer-wrong);color:var(--answer-wrong-text)}.practice-qcell[aria-current=true]{outline:2px solid var(--color-primary);outline-offset:1px}.practice-legend{color:var(--color-text-muted);flex-wrap:wrap;gap:.35rem .7rem;margin-top:.75rem;font-size:.68rem;display:flex}.practice-legend span{align-items:center;gap:.3rem;display:inline-flex}.practice-legend i{border:1px solid #0000;border-radius:3px;width:9px;height:9px}.practice-legend i.is-ok{background:var(--answer-correct-soft);border-color:var(--answer-correct)}.practice-legend i.is-bad{background:var(--answer-wrong-soft);border-color:var(--answer-wrong)}.practice-legend i.is-todo{background:var(--color-bg-soft);border-color:var(--color-border)}@media (max-width:900px){.practice-layout{grid-template-columns:minmax(0,1fr);gap:1rem}.practice-side{position:static}}.vocab-unit-list{max-height:70vh}@media (max-width:768px){.vocab-unit-list{max-height:40vh}}.practice-kind-badge{border:2px solid var(--color-outline);border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .75rem;font-size:.78rem;font-weight:700;display:inline-flex}.practice-question-enter{animation:.3s both practice-question-in}@keyframes practice-question-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes exam-timer-pulse{50%{opacity:.4}}.exam-timer-danger{animation:1.1s ease-in-out infinite exam-timer-pulse}.vocab-modal{z-index:55;background:var(--color-bg-soft);overscroll-behavior:contain;position:fixed;inset:0;overflow-y:auto}.vocab-modal-head{z-index:2;background:var(--color-surface);border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) minmax(0,480px) minmax(0,1fr);align-items:center;gap:1.25rem;padding:.7rem 1.5rem;display:grid;position:sticky;top:0}.vocab-modal-title{justify-self:start;min-width:0}.vocab-modal-title b{font-size:.92rem;line-height:1.25;display:block}.vocab-modal-title span{color:var(--color-text-muted);margin-top:1px;font-size:.76rem;display:block}.vocab-modal-progress{width:100%;min-width:0}.vocab-modal-bar{background:var(--color-bg-soft);border-radius:999px;height:8px;overflow:hidden}.vocab-modal-fill{border-radius:inherit;background:linear-gradient(90deg, var(--color-primary), var(--color-primary-dark));height:100%;transition:width .3s}.vocab-modal-progress-label{color:var(--color-text-muted);font-variant-numeric:tabular-nums;justify-content:flex-start;margin-top:4px;font-size:.7rem;display:flex}.vocab-modal-close{white-space:nowrap;justify-self:end;padding:.45rem .9rem;font-size:.82rem}.vocab-modal-main{flex-direction:column;justify-content:center;align-items:center;width:min(720px,100%);min-height:calc(100vh - 61px);margin:0 auto;padding:1.4rem 1.25rem 2.5rem;display:flex}.vocab-modal-body{flex-direction:column;align-items:center;width:100%;display:flex}.vocab-modal-tabs{flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;margin-bottom:1.1rem;display:flex}.vocab-modal-tabs .btn-primary,.vocab-modal-tabs .btn-ghost{box-shadow:none;padding:.4rem .85rem;font-size:.78rem}.vocab-modal-stage{width:min(480px,100%)}.vocab-modal-grades{width:min(560px,100%);margin-top:2rem}.vocab-modal-hint{text-align:center;color:var(--color-text-muted);margin:.7rem 0 0;font-size:.72rem}.kbd{border:2px solid var(--color-outline);background:var(--color-surface);min-width:18px;color:var(--color-text);border-radius:5px;margin:0 2px;padding:1px 5px;font-size:.65rem;font-weight:700;display:inline-block}.vocab-modal-loading,.vocab-modal-empty{text-align:center;color:var(--color-text-muted);padding:3rem 1rem}.vocab-summary{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:1.4rem}.vocab-summary h2{margin:0;font-size:1.15rem}.vocab-summary-sub{color:var(--color-text-muted);margin:.3rem 0 1.1rem;font-size:.85rem}.vocab-summary-grid{grid-template-columns:200px minmax(0,1fr);align-items:center;gap:1rem;display:grid}.vocab-summary-ring{flex-direction:column;align-items:center;gap:.35rem;display:flex;position:relative}.vocab-summary-ring svg{display:block}.vocab-summary-pct{justify-content:center;align-items:center;height:132px;font-size:1.5rem;font-weight:800;line-height:1;display:flex;position:absolute;top:0;left:0;right:0}.vocab-summary-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;display:grid}.vocab-summary-kpis div{background:var(--color-bg-soft);border-radius:12px;padding:.7rem .8rem}.vocab-summary-kpis b{font-variant-numeric:tabular-nums;font-size:1.15rem;display:block}.vocab-summary-kpis span{color:var(--color-text-muted);font-size:.72rem}.vocab-summary-kpis .is-cards{background:var(--state-ok-soft);color:var(--state-ok)}.vocab-summary-kpis .is-time{background:var(--state-idle-soft);color:var(--state-idle-text)}.vocab-summary-kpis .is-again{background:var(--state-bad-soft);color:var(--state-bad)}.vocab-summary-kpis .is-hard{background:var(--state-warn-soft);color:var(--state-warn)}.vocab-summary-weak{margin-top:1rem}.vocab-summary-weak h3{margin:0 0 .35rem;font-size:.85rem}.vocab-weak-count{color:var(--state-bad)}.vocab-weak-list{overscroll-behavior:contain;background:linear-gradient(var(--color-surface) 30%, transparent) top / 100% 2rem no-repeat local, linear-gradient(transparent, var(--color-surface) 70%) bottom / 100% 2rem no-repeat local, radial-gradient(farthest-side at 50% 0, #0000002e, transparent) top / 100% .7rem no-repeat scroll, radial-gradient(farthest-side at 50% 100%, #0000002e, transparent) bottom / 100% .7rem no-repeat scroll;max-height:9.75rem;overflow-y:auto}.vocab-weak-row{border-top:1px solid var(--color-border);align-items:center;gap:.55rem;padding:.42rem 0;font-size:.85rem;display:flex}.vocab-weak-row:first-of-type{border-top:0}.vocab-weak-row .hz{font-size:1.1rem;font-weight:600}.vocab-weak-row .py{font-family:var(--font-pinyin);color:var(--color-text-muted);font-size:.78rem}.vocab-weak-row .tag{border-radius:999px;margin-left:auto;padding:2px 8px;font-size:.68rem;font-weight:700}.vocab-weak-row .tag.is-again{background:var(--state-bad-soft);color:var(--state-bad)}.vocab-weak-row .tag.is-hard{background:var(--state-warn-soft);color:var(--state-warn)}.vocab-summary-actions{justify-content:flex-end;margin-top:1.1rem;display:flex}@media (max-width:640px){.vocab-modal-inner{padding:.9rem .8rem 1.6rem}.vocab-modal-head{grid-template-columns:minmax(0,1fr) auto;gap:.5rem .75rem}.vocab-modal-progress{grid-column:1/-1}.vocab-summary-grid{grid-template-columns:minmax(0,1fr)}}.vocab-study{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.vocab-rail{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card);flex-direction:column;gap:.75rem;max-height:calc(100vh - 12rem);padding:.9rem;display:flex}.vocab-rail-head{align-items:center;gap:.65rem;display:flex}.vocab-rail-head b{font-size:.85rem;display:block}.vocab-rail-head span{color:var(--color-text-muted);margin-top:2px;font-size:.75rem;display:block}.vocab-ring{flex:none;width:54px;height:54px;position:relative}.vocab-ring svg{transform:rotate(0)}.vocab-ring span{color:var(--color-text);place-items:center;font-size:.68rem;font-weight:800;display:grid;position:absolute;inset:0}.vocab-unit-list{flex-direction:column;gap:.3rem;display:flex;overflow-y:auto}.vocab-unit{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:.6rem;padding:.5rem .6rem;display:flex}.vocab-unit:hover{background:var(--color-bg-soft)}.vocab-unit-n{background:var(--color-bg-soft);width:26px;height:26px;color:var(--color-text-muted);border-radius:8px;flex:none;place-items:center;font-size:.72rem;font-weight:800;display:grid}.vocab-unit:hover .vocab-unit-n{background:var(--color-primary-soft);color:var(--color-primary-dark)}.vocab-unit-main{flex:1;min-width:0}.vocab-unit-name{font-size:.82rem;font-weight:700;display:block}.vocab-unit-meta{color:var(--color-text-muted);font-variant-numeric:tabular-nums;margin-top:5px;font-size:.7rem;display:block}.vocab-unit-bar{width:100%;margin-top:7px;display:block}.vocab-unit-bar .lib-bar{height:5px}.vocab-unit-n.is-done,.vocab-unit:hover .vocab-unit-n.is-done{background:var(--state-ok-soft);color:var(--state-ok)}.vocab-rail-error{color:var(--state-bad);font-size:.75rem}.vocab-overview{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:1.4rem}.vocab-overview-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;display:grid}.vocab-overview-stats div{background:var(--color-bg-soft);border-radius:12px;padding:.8rem .9rem}.vocab-overview-stats b{font-variant-numeric:tabular-nums;font-size:1.35rem;display:block}.vocab-overview-stats span{color:var(--color-text-muted);font-size:.72rem}.vocab-overview-stats .is-fresh b{color:var(--state-info,#3d6b8c)}.vocab-overview-stats .is-learning b{color:var(--state-warn)}.vocab-overview-stats .is-review b{color:var(--color-text)}.vocab-overview-stats .is-mastered b{color:var(--state-ok)}.vocab-overview-cta{border-top:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.1rem;padding-top:1.1rem;display:flex}.vocab-overview-cta b{font-size:.95rem;display:block}.vocab-overview-cta span{color:var(--color-text-muted);margin-top:2px;font-size:.78rem;display:block}@media (max-width:900px){.vocab-study{grid-template-columns:minmax(0,1fr)}.vocab-rail{max-height:40vh}.vocab-overview-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.chat-mic{width:2.6rem;height:2.6rem;color:var(--color-primary);cursor:pointer;background:0 0;border:0;border-radius:50%;align-self:center;place-items:center;padding:0;transition:background .15s,color .15s,transform .1s;display:inline-grid}.chat-mic:hover:not(:disabled){background:var(--color-primary-soft);color:var(--color-primary-dark)}.chat-mic:active:not(:disabled){transform:scale(.92)}.chat-mic:disabled{cursor:default;opacity:.6}.chat-mic.is-listening{background:var(--color-primary-soft);color:var(--color-primary);animation:1.1s ease-in-out infinite chat-mic-pulse}@keyframes chat-mic-pulse{50%{transform:scale(1.1)}}.chat-send{flex:none;place-items:center;width:2.9rem;height:2.9rem;padding:0;display:inline-grid}
.lib-badge{color:#fff;border:2px solid var(--color-outline);white-space:nowrap;border-radius:999px;padding:.15rem .55rem;font-size:.72rem;font-weight:700;display:inline-block}.lib-badge--ok{background:var(--state-ok)}.lib-badge--bad{background:var(--state-bad)}.lib-badge--warn{background:var(--state-doing)}.lib-badge--progress{background:var(--color-primary-solid)}.lib-badge--neutral{background:var(--color-bg-soft);color:var(--color-text-muted)}.lib-badge--pro{color:#8a6d1a;border:2px solid var(--color-outline);background:#fffbea;border-radius:4px;padding:.05rem .35rem;font-size:.68rem}.lib-icon{border-radius:9px;flex:none;justify-content:center;align-items:center;width:2.4rem;height:2.4rem;font-size:1.15rem;display:flex}.lib-icon__level{letter-spacing:-.02em;font-size:1.05rem;font-weight:800;line-height:1}.lib-icon__level--wide{font-size:.8rem}.lib-thumb{background:var(--color-bg-soft);border-radius:9px;flex:none;width:2.6rem;height:2.6rem;display:block;position:relative;overflow:hidden}.lib-thumb__play{color:#fff;pointer-events:none;background:#00000047;justify-content:center;align-items:center;font-size:.9rem;display:flex;position:absolute;inset:0}.lib-list{flex-direction:column;gap:.5rem;display:flex}.lib-grid{align-items:center;gap:.75rem;display:grid}.lib-grid[data-cols="0"]{grid-template-columns:auto minmax(0,1fr) auto}.lib-grid[data-cols="1"]{grid-template-columns:auto minmax(0,1fr) minmax(64px,auto) auto}.lib-grid[data-cols="2"]{grid-template-columns:auto minmax(0,1fr) minmax(64px,auto) minmax(64px,auto) auto}.lib-grid[data-cols="3"]{grid-template-columns:auto minmax(0,1fr) minmax(64px,auto) minmax(64px,auto) minmax(64px,auto) auto}.lib-grid[data-cols="4"]{grid-template-columns:auto minmax(0,1fr) minmax(64px,auto) minmax(64px,auto) minmax(64px,auto) minmax(64px,auto) auto}.lib-row{background:var(--color-surface);border:3px solid var(--lib-accent,var(--color-outline));box-shadow:0 4px 0 var(--lib-accent,var(--color-outline));color:inherit;cursor:pointer;border-radius:12px;padding:.6rem .85rem;text-decoration:none;transition:transform .12s,box-shadow .12s}.lib-row:hover{transform:translateY(-2px);box-shadow:0 6px 16px #4a322229}.lib-row--button{font:inherit;text-align:left;width:100%}.lib-row--overlay{position:relative}.lib-row__cover{z-index:1;border-radius:inherit;position:absolute;inset:0}.lib-row__action{z-index:2;position:relative}.lib-row__leading{align-items:center;display:flex}.lib-row__main{flex-direction:column;gap:.15rem;min-width:0;min-height:2.4rem;display:flex}.lib-row__title{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.lib-row__badges{flex-wrap:wrap;gap:.35rem;display:flex}.lib-row__meta{color:var(--color-text-muted);font-size:.8rem}.lib-bar{background:var(--color-border);border-radius:999px;height:4px;display:block;overflow:hidden}.lib-bar>span{border-radius:999px;height:100%;display:block}.lib-row__col--bar .lib-bar,.lib-row__col--bar .lib-bar-spacer{width:220px}.lib-row__col--bar .lib-bar-spacer{height:4px;display:block}.lib-bar--ok>span{background:var(--state-ok)}.lib-bar--warn>span{background:var(--state-doing)}.lib-bar--bad>span{background:var(--state-bad)}.lib-row__cols{display:contents}.lib-num{color:var(--color-text);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8rem;font-weight:700;display:inline-block}.lib-row__col{text-align:right;font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:600}.lib-row__action{justify-content:flex-end;display:flex}.deck-card-delete{width:1.5rem;height:1.5rem;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;font-size:.8rem;line-height:1;transition:background .12s,color .12s;display:flex;position:absolute;top:.3rem;right:.3rem}.deck-card-delete:hover:not(:disabled){background:var(--state-bad-soft);color:var(--state-bad)}.deck-card-delete:disabled{opacity:.4;cursor:default}.lib-ring{vertical-align:middle;flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.lib-ring__label{font-variant-numeric:tabular-nums;color:var(--color-text);justify-content:center;align-items:center;padding:0 5px;font-size:.55rem;font-weight:700;line-height:1;display:flex;position:absolute;inset:0}.lib-cards-h{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.8rem;display:grid}.lib-card-h{background:var(--color-surface);border:3px solid var(--lib-accent,var(--color-outline));box-shadow:0 4px 0 var(--lib-accent,var(--color-outline));color:inherit;border-radius:14px;text-decoration:none;transition:transform .12s,box-shadow .12s;display:flex;position:relative;overflow:hidden}.lib-card-h:hover{transform:translateY(-2px);box-shadow:0 6px 16px #4a322229}.lib-card-h--button{font:inherit;text-align:left;cursor:pointer;width:100%}.lib-card-h__thumb{background:var(--color-bg-soft);border-radius:10px;flex:0 0 92px;width:92px;margin:.45rem 0 .45rem .45rem;position:relative;overflow:hidden}.lib-card-h__icon{flex:none;align-items:center;padding:.7rem 0 .7rem .9rem;display:flex}.lib-card-h__body{flex-direction:column;flex:1;gap:.3rem;min-width:0;padding:.7rem .9rem;display:flex}.lib-card-h__lvl{z-index:1;position:absolute;top:.5rem;right:.5rem}.lib-card-h__foot{justify-content:flex-end;align-items:center;gap:.5rem;margin-top:auto;display:flex}.lib-card-h__foot .lib-bar{flex:none;width:56px}.lib-card-h__title{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.lib-card-h--tagged .lib-card-h__title{padding-right:6.2rem}.lib-card-h__meta{color:var(--color-text-muted);font-size:.8rem}.lib-card-h__badges{flex-wrap:wrap;gap:.35rem;display:flex}@media (max-width:640px){.lib-row{flex-wrap:wrap;gap:.5rem;display:flex}.lib-row__leading{order:1}.lib-row__main{flex:1 1 0;order:2;min-width:0}.lib-row__action{order:3;margin-left:auto}.lib-row__cols{flex-wrap:wrap;order:4;align-items:center;gap:.4rem .85rem;width:100%;padding-left:3.15rem;display:flex}.lib-row__col--bar,.lib-row__col--bar .lib-bar,.lib-row__col--bar .lib-bar-spacer{width:100%}.lib-row__col{text-align:left}}@media (max-width:420px){.lib-card-h__thumb{flex-basis:84px;width:84px}}
.grammar-point{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:1.25rem;display:grid}.grammar-point__side{position:sticky;top:1rem}.grammar-card__label{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:.72rem;font-weight:700}.grammar-subtitle{color:var(--color-text-muted);font-size:.85rem}.grammar-title-row{align-items:flex-start;gap:.75rem;margin:.15rem 0 .35rem;display:flex}.grammar-title-row h1{flex:1;min-width:0;margin:0}.grammar-structure{background:var(--color-sidebar);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card-sm);padding:.9rem 1rem}.grammar-formula{flex-wrap:wrap;align-items:center;gap:.4rem;margin:.5rem 0 .8rem;display:flex}.grammar-formula__part{border:2px solid var(--color-outline);background:var(--color-surface);border-radius:10px;padding:.4rem .7rem;font-weight:600}.grammar-formula__part.is-key{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark);font-weight:700}.grammar-formula__op{color:var(--color-text-muted);font-weight:700}.grammar-chips{flex-wrap:wrap;gap:.3rem;margin:.5rem 0 .8rem;display:flex}.grammar-chips>span{background:var(--color-surface);border:2px solid var(--color-outline);border-radius:8px;padding:.15rem .5rem;font-size:.9rem}.grammar-structure__note{margin:0}.grammar-example{border:3px solid var(--color-outline);box-shadow:var(--shadow-card-sm);border-radius:12px;grid-template-columns:auto auto minmax(0,1fr);align-items:start;gap:.7rem;padding:.7rem .85rem;display:grid}.grammar-example+.grammar-example{margin-top:.5rem}.grammar-example__n{color:var(--color-text-muted);font-size:.8rem;font-weight:700;line-height:2.2rem}.grammar-example__hz{font-size:1.05rem;font-weight:700}.grammar-example__pinyin{color:var(--color-pinyin);font-family:var(--font-pinyin);font-size:.9rem}.grammar-example__meaning{color:var(--color-text-muted);font-size:.88rem}.grammar-play{border:1px solid var(--color-primary-solid);background:var(--color-primary-solid);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:2.2rem;height:2.2rem;font-size:.8rem;display:inline-flex}.grammar-play.is-playing{background:var(--color-primary-solid-hover);border-color:var(--color-primary-solid-hover)}.grammar-side{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:.85rem}.grammar-side__head{align-items:center;gap:.4rem;font-weight:700;display:flex}.grammar-side__count{color:var(--color-text-muted);margin:.4rem 0 .3rem;font-size:.78rem}.grammar-side__list{flex-direction:column;gap:.15rem;max-height:calc(100vh - 15rem);margin-top:.5rem;display:flex;overflow-y:auto}.grammar-side__item{border:1px solid #0000;border-left:4px solid var(--lib-accent,var(--color-outline));color:var(--color-text);border-radius:8px;align-items:baseline;gap:.45rem;min-width:0;padding:.4rem .55rem;display:flex}.grammar-side__item:hover{background:var(--color-bg-soft)}.grammar-side__item.is-current{background:var(--color-primary-soft);border-color:var(--color-primary)}.grammar-side__n{min-width:1.4rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:700}.grammar-side__item.is-current .grammar-side__n{color:var(--color-primary-dark)}.grammar-side__hz{flex-shrink:0;font-weight:600}.grammar-side__name{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.75rem;overflow:hidden}.grammar-drill{background:var(--color-sidebar);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card-sm);padding:1rem}.grammar-drill__head{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.grammar-drill__badge{background:var(--color-surface);border:2px solid var(--color-outline);color:var(--color-text-muted);border-radius:8px;align-items:center;gap:.3rem;padding:.15rem .5rem;font-size:.78rem;font-weight:700;display:inline-flex}.grammar-drill__where{color:var(--color-text-muted);margin-left:auto;font-size:.8rem;font-weight:600}.grammar-drill__track{background:var(--color-bg-soft);border-radius:999px;height:6px;margin:.6rem 0 .9rem;overflow:hidden}.grammar-drill__track>span{background:var(--state-doing);border-radius:999px;height:100%;display:block}.grammar-drill__mastery{color:var(--color-text-muted);align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;display:flex}.grammar-drill__masteryTrack{background:var(--color-bg-soft);border-radius:999px;flex:1;max-width:180px;height:5px;display:block;overflow:hidden}.grammar-drill__masteryTrack>span{background:var(--color-primary);border-radius:999px;height:100%;display:block}@media (max-width:900px){.grammar-point{grid-template-columns:minmax(0,1fr)}.grammar-point__side{position:static}.grammar-side__list{max-height:18rem}}@media (max-width:560px){.grammar-example{grid-template-columns:auto minmax(0,1fr)}.grammar-example__n{display:none}.grammar-title-row{flex-wrap:wrap}}
.hist-row{background:var(--color-surface);border:3px solid var(--hist-accent,var(--color-outline));box-shadow:0 4px 0 var(--hist-accent,var(--color-outline));border-radius:12px;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.hist-row+.hist-row{margin-top:.5rem}.hist-row__main{flex:1;min-width:0}.hist-row__title{flex-wrap:wrap;align-items:center;gap:.45rem;font-weight:700;display:flex}.hist-row__meta{color:var(--color-text-muted);font-size:.8rem}.hist-row__score{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.hist-row__scoreNum{font-variant-numeric:tabular-nums;font-weight:700}.hist-row__ringWrap{flex-direction:column;align-items:center;gap:.15rem;display:flex}.hist-row__verdict{font-size:.7rem;font-weight:700}.hist-row__verdict.is-pass{color:var(--state-ok)}.hist-row__verdict.is-fail{color:var(--state-bad)}.hist-sentinel{min-height:2.5rem;color:var(--color-text-muted);place-items:center;font-size:.85rem;display:grid}@media (max-width:560px){.hist-row{flex-wrap:wrap}.hist-row__score{justify-content:space-between;width:100%}}.stats-cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.9rem;margin-bottom:1.5rem;display:grid}.stats-card{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card);align-items:center;gap:1rem;padding:1rem 1.1rem;display:flex}.stats-card__icon{background:var(--color-primary-soft);width:3.2rem;height:3.2rem;color:var(--color-primary-dark);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.5rem;display:inline-flex}.stats-card__label{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:.72rem;font-weight:700}.stats-card__value{font-size:1.7rem;font-weight:800;line-height:1.2}.stats-card__sub{color:var(--color-text-muted);font-size:.8rem}.stats-levels{background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);box-shadow:var(--shadow-card);grid-template-columns:9rem minmax(0,1fr) auto;align-items:center;gap:.5rem .9rem;padding:1rem 1.1rem;display:grid}.stats-levels h2{grid-column:1/-1;margin:0;padding-bottom:.6rem;font-size:1.05rem}.stats-level{display:contents}.stats-level__name{font-weight:700}.stats-level--none .stats-level__name{color:var(--color-text-muted)}.stats-level__bar{background:var(--color-bg-soft);border-radius:999px;height:8px;overflow:hidden}.stats-level__bar>i{border-radius:999px;height:100%;display:block}.stats-level__meta{color:var(--color-text-muted);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.82rem}@media (max-width:560px){.stats-levels{grid-template-columns:minmax(0,1fr)}.stats-level__name,.stats-level__bar,.stats-level__meta{grid-column:1}.stats-level__meta{text-align:left}}
.pinyin-page__head{margin-bottom:1.25rem}.pinyin-page__head h1{margin:0 0 .35rem}.pinyin-page__head p{max-width:70ch;color:var(--color-text-muted);margin:0;font-size:.9rem}.pinyin-chart-layout{position:relative}.pinyin-chart-frame{border:3px solid var(--color-outline);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-card);overflow:hidden}.pinyin-chart-scroll{overscroll-behavior-x:contain;position:relative;overflow-x:auto}@media (min-width:1300px){.pinyin-chart-scroll{overflow:visible}.pinyin-chart-scroll .pinyin-chart thead th{top:-2rem}}.pinyin-chart{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:100%;font-size:.8rem}.pinyin-chart th,.pinyin-chart td{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);padding:0}.pinyin-chart thead th{z-index:2;background:var(--color-primary-solid);color:#fff;letter-spacing:.02em;min-width:40px;height:34px;font-size:.78rem;font-weight:600;position:sticky;top:0}.pinyin-chart__corner{left:0;z-index:3!important;background:var(--color-primary-solid-hover)!important;min-width:54px!important}.pinyin-chart__rowhead{z-index:1;background:var(--color-bg-soft);color:var(--color-text-muted);text-align:right;border-right:1px solid var(--color-border);min-width:54px;height:30px;font-size:.75rem;font-weight:600;position:sticky;left:0;padding-right:.45rem!important}.pinyin-cell{width:100%;min-width:40px;height:30px;color:var(--color-text);font:inherit;font-family:var(--font-pinyin);cursor:pointer;background:0 0;border:0;padding:0 .2rem;line-height:1;transition:background .12s,color .12s;display:block}.pinyin-cell:hover{background:var(--color-primary-soft)}.pinyin-cell:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.pinyin-cell.is-selected{background:var(--color-primary-solid);color:#fff;font-weight:600}.pinyin-detail{z-index:1200;background:var(--color-surface);border:3px solid var(--color-outline);border-radius:var(--radius);width:252px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);padding:.9rem;position:fixed;overflow-y:auto;box-shadow:0 10px 30px #0000002e}.pinyin-detail__close{display:none}.pinyin-detail__syllable{font-family:var(--font-pinyin);letter-spacing:.01em;font-size:2rem;font-weight:700;line-height:1.05}.pinyin-detail__meta{color:var(--color-text-muted);flex-wrap:wrap;gap:.25rem .9rem;margin-top:.35rem;font-size:.78rem;display:flex}.pinyin-detail__meta strong{color:var(--color-text);font-weight:600}.pinyin-tones{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-top:.9rem;display:grid}.pinyin-tone{border:2px solid var(--color-outline);background:var(--color-bg-soft);color:var(--color-text);cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:.1rem;padding:.45rem .3rem;transition:border-color .12s,background .12s,color .12s;display:flex}.pinyin-tone:hover{border-color:var(--color-primary)}.pinyin-tone:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.pinyin-tone__mark{font-family:var(--font-pinyin);font-size:1.15rem;font-weight:600;line-height:1.15}.pinyin-tone__num{color:var(--color-text-muted);font-size:.66rem}.pinyin-tone.is-playing{background:var(--color-primary-solid);border-color:var(--color-primary-solid);color:#fff}.pinyin-tone.is-playing .pinyin-tone__num{color:#ffffffd9}.pinyin-playall{border:1px solid var(--color-primary);border-radius:var(--radius-pill);width:100%;color:var(--color-primary-dark);font:inherit;cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:.4rem;margin-top:.7rem;padding:.5rem .75rem;font-size:.8rem;font-weight:600;transition:background .12s,color .12s;display:flex}.pinyin-playall:hover{background:var(--color-primary-solid);color:#fff}.pinyin-playall:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.pinyin-detail-backdrop{display:none}@media (max-width:900px){.pinyin-detail.is-open{z-index:1200;width:auto;max-width:none;max-height:58vh;padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom,0px));border-bottom:0;border-left:0;border-right:0;border-radius:16px 16px 0 0;display:block;position:fixed;bottom:60px;right:0;overflow-y:auto;box-shadow:0 -10px 30px #0000002e;top:auto!important;left:0!important}.pinyin-detail__close{border:2px solid var(--color-outline);background:var(--color-bg-soft);width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:.6rem;right:.6rem}.pinyin-detail-backdrop.is-open{z-index:1190;background:#00000059;display:block;position:fixed;inset:0 0 60px}}
.pinyin-suggest{z-index:20;background:var(--color-surface);border:2px solid var(--color-outline);border-radius:16px;width:max-content;max-width:min(30rem,100vw - 2rem);padding:.55rem .6rem .6rem;animation:.12s ease-out pinyin-suggest-in;position:absolute;bottom:calc(100% + 10px);left:0;box-shadow:0 10px 28px #00000029}@keyframes pinyin-suggest-in{0%{opacity:0;transform:translateY(4px)scale(.98)}}.pinyin-suggest__head{justify-content:space-between;align-items:center;gap:1.5rem;margin:0 .2rem .45rem;display:flex}.pinyin-suggest__pager{color:var(--color-text-muted);align-items:center;gap:.3rem;display:inline-flex}.pinyin-suggest__pager button{background:var(--color-bg-soft);width:1.4rem;height:1.4rem;color:inherit;cursor:pointer;border:0;border-radius:50%;font-size:1rem;line-height:1}.pinyin-suggest__pager button:hover:not(:disabled){background:var(--color-primary-soft)}.pinyin-suggest__pager button:disabled{opacity:.35;cursor:default}.pinyin-suggest__preedit{font-family:var(--font-pinyin);letter-spacing:.04em;color:var(--color-pinyin);font-size:.85rem;font-weight:700}.pinyin-suggest__list{flex-wrap:wrap;gap:.35rem;display:flex}.pinyin-suggest__item{background:var(--color-bg-soft);color:inherit;cursor:pointer;border:2px solid #0000;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .65rem .3rem .35rem;font-size:1.15rem;line-height:1.2;transition:background .1s,border-color .1s,transform .1s;display:inline-flex}.pinyin-suggest__item:hover{border-color:var(--color-outline);transform:translateY(-1px)}.pinyin-suggest__item.is-first{background:var(--color-primary-soft);border-color:var(--color-primary);font-weight:700}.pinyin-suggest__num{background:var(--color-surface);width:1.2rem;height:1.2rem;color:var(--color-text-muted);border-radius:50%;place-items:center;font-size:.7rem;font-weight:700;display:inline-grid}.pinyin-suggest__item.is-first .pinyin-suggest__num{background:var(--color-primary);color:#fff}.pinyin-toggle{width:2.4rem;height:2.4rem;color:var(--color-text);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;font-size:1.35rem;font-weight:700;line-height:1;transition:background .15s,color .15s,transform .1s;display:inline-grid}.pinyin-toggle:hover{background:var(--color-bg-soft)}.pinyin-toggle:active{transform:scale(.92)}.pinyin-toggle.is-on{color:var(--color-primary)}.pinyin-toggle.is-on:hover{background:var(--color-primary-soft)}
.hamburger-button{color:var(--color-text);background:0 0;border:none;padding:.25rem .5rem;font-size:1.4rem;line-height:1;display:none}.sidebar-backdrop{display:none}.app-shell-sidebar .hamburger-button,.app-shell-sidebar .sidebar-backdrop{display:none!important}.app-sidebar{width:220px;transition:width .15s}@media (min-width:769px){:root.sidebar-collapsed .app-sidebar{width:72px}:root.sidebar-collapsed .sidebar-label{display:none}:root.sidebar-collapsed .app-sidebar nav a{justify-content:center!important;padding:.6rem .25rem!important}:root.sidebar-collapsed .app-sidebar svg.sidebar-nav-icon{flex-shrink:0;width:24px!important;height:24px!important}:root.sidebar-collapsed .app-sidebar span.sidebar-nav-icon{flex-shrink:0;font-size:1.3rem}.header-brand-mobile-only{display:none}.header-utility-toggle-button{display:none!important}.header-utility-panel{display:flex!important}}.dict-search{flex:1;align-items:center;gap:.45rem;min-width:0;display:flex}.dict-search__icon{border:3px solid var(--color-outline);background:var(--color-surface);width:34px;height:34px;color:var(--color-text);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.dict-search__form{flex:1;min-width:0;max-width:260px;display:none}.dict-search.is-expanded .dict-search__form{display:block}.dict-search.is-expanded .dict-search__icon{display:none}.user-menu__trigger{background:0 0;border:none;align-items:center;gap:.5rem;padding:.35rem .6rem;font-size:.9rem;font-weight:600;display:flex}.user-menu-dropdown{display:none}.user-menu.is-open .user-menu-dropdown{display:block}.media-lesson-fullscreen-toggle{display:none}@media (min-width:769px){.media-lesson-fullscreen-toggle{display:flex}}.sidebar-collapse-toggle{border:1px solid var(--color-border);background:var(--color-bg);width:28px;height:28px;color:var(--color-text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-self:center;align-items:center;margin-top:auto;font-size:.9rem;display:flex}.sidebar-collapse-toggle:hover{border-color:var(--color-primary);color:var(--color-primary)}@media (max-width:768px){.sidebar-collapse-toggle{display:none}}.admin-sticky-actions{z-index:30;position:fixed;bottom:0;left:220px;right:0}@media (min-width:769px){:root.sidebar-collapsed .admin-sticky-actions{left:72px}}.admin-form-grid-2{grid-template-columns:minmax(0,1fr) 260px;gap:1rem;display:grid}.settings-tabs-layout{align-items:flex-start;gap:1.5rem;display:flex}.settings-tabs-nav{flex-direction:column;flex-shrink:0;gap:.25rem;width:170px;display:flex}.vocab-card-grid{grid-template-columns:80px 140px 1fr;display:grid}.media-lesson-wrap{width:100%;max-width:1040px;margin:0 auto}.media-lesson-grid{grid-template-columns:340px 1fr;display:grid}.media-lesson-grid.media-lesson-fullscreen{grid-template-columns:460px 1fr}.media-lesson-left{flex-direction:column;gap:.75rem;display:flex}.media-lesson-segtabs{justify-content:center;display:flex}.media-lesson-segtabs-inner{background:var(--color-bg);border:3px solid var(--color-outline);border-radius:999px;gap:.15rem;padding:.2rem;display:inline-flex}.media-lesson-segtabs button{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:999px;padding:.4rem .8rem;font-size:.76rem;font-weight:700}.media-lesson-segtabs button.active{background:var(--color-primary-solid);color:#fff}.media-lesson-card{background:var(--color-sidebar);border:3px solid var(--color-outline);border-radius:var(--radius);min-width:0;box-shadow:var(--shadow-card);padding:1.3rem 1.4rem}.media-lesson-hero{border-radius:var(--radius);text-align:center;color:#fff;background:linear-gradient(135deg, var(--color-primary-solid), var(--color-primary-solid-hover));padding:1.1rem 1rem;position:relative;overflow:hidden}.media-lesson-hero .audio-player{background:0 0;border:none;grid-template-columns:repeat(2,auto);grid-template-areas:"wave wave""btn btn""speed time";justify-content:center;place-items:center;gap:.55rem .5rem;padding:0;display:grid}.media-lesson-hero .audio-player audio{display:none}.media-lesson-hero .audio-player-waveform{grid-area:wave}.media-lesson-hero .audio-player-waveform i{background:#ffffff59}.media-lesson-hero .audio-player-waveform i.is-lit{background:#fffffff2}.media-lesson-hero .audio-player-btn{color:#fff;background:#fff3;border:none;grid-area:btn;width:52px;height:52px;font-size:1.05rem}.media-lesson-hero .audio-player-btn:hover{background:#ffffff4d;transform:none}.media-lesson-hero .audio-player-speed-btn{color:#fff;background:#ffffff29;border-color:#ffffff73;grid-area:speed}.media-lesson-hero .audio-player>span{grid-area:time;color:#ffffffe6!important}.media-lesson-stepper-label{text-align:center;color:var(--color-text-muted);margin-bottom:.5rem;font-size:.8rem;font-weight:700}.media-lesson-stepper-row{justify-content:center;align-items:center;gap:.5rem;display:flex}.media-lesson-stepper-viewport{overflow:hidden}.media-lesson-stepper-track{transition:transform .32s;display:flex}@media (prefers-reduced-motion:reduce){.media-lesson-stepper-track{transition:none}}.media-lesson-num{cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.76rem;font-weight:700;display:flex}.media-lesson-stepper-nav{border:2px solid var(--color-outline);background:var(--color-bg);width:26px;height:26px;color:var(--color-text-muted);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.media-lesson-stepper-nav:disabled{opacity:.4;cursor:not-allowed}.media-lesson-stepper-nav:not(:disabled):hover{border-color:var(--color-primary);color:var(--color-primary)}.dashboard-layout{align-items:flex-start;gap:2rem;display:flex}.dashboard-main{flex:1;min-width:0}.dashboard-side{flex-shrink:0;width:320px}.notification-dropdown{width:320px;position:absolute;top:calc(100% + .4rem);right:0}.shell-header--classic{border-bottom:1px solid var(--color-gold)!important}.bottom-nav-bar,.bottom-nav-sheet-backdrop,.bottom-nav-sheet{display:none}@media (max-width:768px){.bottom-nav-bar{z-index:45;background:var(--color-bg-soft);border-top:1px solid var(--color-gold);justify-content:space-around;align-items:center;height:60px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #4a32221a}.bottom-nav-sheet-backdrop.open{z-index:46;background:#0006;display:block;position:fixed;inset:0}.bottom-nav-sheet{z-index:47;background:var(--color-bg);border-radius:var(--radius) var(--radius) 0 0;border-top:1px solid var(--color-gold);max-height:70vh;padding:.75rem .5rem calc(1rem + env(safe-area-inset-bottom,0px));transition:transform .2s;display:block;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(100%)}.bottom-nav-sheet.open{transform:translateY(0)}.hamburger-button{z-index:45;border:1px solid var(--color-border);background:var(--color-bg);border-radius:8px;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;display:inline-flex;position:fixed;top:.7rem;left:1rem}.shell-header{flex-wrap:wrap!important;padding-left:3.75rem!important}.shell-header.shell-header--classic{padding-top:.5rem!important;padding-bottom:.5rem!important;padding-left:1rem!important}.user-menu-name{max-width:90px!important}.shell-top-nav{display:none!important}.shell-main{padding:1rem 1rem calc(1rem + 60px)!important}.notification-dropdown{width:auto;position:fixed;top:3.25rem;left:1rem;right:1rem}.sidebar-backdrop.open{z-index:40;background:#0006;display:block;position:fixed;inset:0}.app-sidebar{z-index:50;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.app-shell-sidebar .app-sidebar{display:none!important}.admin-sticky-actions{left:0}.admin-form-grid-2{grid-template-columns:1fr}.app-sidebar.open{transform:translate(0)}.settings-tabs-layout{flex-direction:column}.settings-tabs-nav{flex-direction:row;width:100%;overflow-x:auto}.vocab-card-grid{grid-template-columns:1fr;row-gap:.15rem}.media-lesson-grid{grid-template-columns:1fr}.shell-header{flex-wrap:nowrap;gap:.5rem;min-height:56px;padding:.5rem .75rem}.header-brand-label{display:none}.header-utility-bar{flex:1;align-items:center;gap:.4rem;min-width:0;display:flex}.dict-search .dict-search__icon{display:none}.dict-search .dict-search__form{max-width:none;display:block}.header-avatar-btn{background:0 0;border:0;flex-shrink:0;padding:0;line-height:0}.header-avatar{background:var(--color-primary-solid);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:.68rem;font-weight:700;display:inline-flex}.header-sheet-backdrop{z-index:1190;background:#00000059;position:fixed;inset:0 0 60px}.header-sheet{z-index:1200;background:var(--color-surface);border-top:1px solid var(--color-border);border-radius:16px 16px 0 0;flex-wrap:wrap;align-items:center;gap:.6rem;max-height:60vh;padding:1rem 1rem 1.25rem;display:flex;position:fixed;bottom:60px;left:0;right:0;overflow-y:auto;box-shadow:0 -10px 30px #0000002e}.header-sheet .user-menu{border-top:1px solid var(--color-border);flex-basis:100%;width:100%;padding-top:.75rem}.header-sheet .user-menu__trigger{display:none}.header-sheet .user-menu-dropdown{width:100%;display:block;min-width:0!important;box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;position:static!important}.dashboard-layout{flex-direction:column;align-items:stretch}.dashboard-side{width:100%}.exam-layout{flex-direction:column;align-items:stretch}.exam-sidebar{width:100%;position:static}}
::view-transition-old(.nav-forward){animation:.15s ease-in both vt-fade-out,.4s ease-in-out both vt-to-left}::view-transition-new(.nav-forward){animation:.21s ease-out .15s both vt-fade-in,.4s ease-in-out both vt-from-right}::view-transition-old(.nav-back){animation:.15s ease-in both vt-fade-out,.4s ease-in-out both vt-to-right}::view-transition-new(.nav-back){animation:.21s ease-out .15s both vt-fade-in,.4s ease-in-out both vt-from-left}@keyframes vt-fade-in{0%{opacity:0;filter:blur(3px)}to{opacity:1;filter:blur()}}@keyframes vt-fade-out{0%{opacity:1;filter:blur()}to{opacity:0;filter:blur(3px)}}@keyframes vt-from-right{0%{translate:60px}to{translate:0}}@keyframes vt-from-left{0%{translate:-60px}to{translate:0}}@keyframes vt-to-left{0%{translate:0}to{translate:-60px}}@keyframes vt-to-right{0%{translate:0}to{translate:60px}}::view-transition{pointer-events:none}::view-transition-old(.vt-fall){animation:.22s ease-in both vt-fall}::view-transition-new(.vt-rise){animation:.28s cubic-bezier(.2,.7,.2,1) both vt-rise}::view-transition-group(.vt-share){animation-duration:.3s;animation-timing-function:cubic-bezier(.2,.7,.2,1)}::view-transition-old(.vt-share){opacity:1;animation:none}::view-transition-new(.vt-share){opacity:0;animation:none}@keyframes vt-fall{0%{opacity:1;translate:0}to{opacity:0;translate:0 18px}}@keyframes vt-rise{0%{opacity:0;translate:0 16px}to{opacity:1;translate:0}}@media (prefers-reduced-motion:reduce){::view-transition-old(*){animation-duration:0s!important;animation-delay:0s!important}::view-transition-new(*){animation-duration:0s!important;animation-delay:0s!important}::view-transition-group(*){animation-duration:0s!important;animation-delay:0s!important}}

