:root{--ink:#0c1115;--ink-2:#141b1f;--ink-3:#1c262b;--accent:#4ad9a4;--accent-deep:#1f7d63;--accent-pale:#a8f0d3;--accent-rgb:74, 217, 164;--bloom-1:31, 125, 99;--bloom-2:60, 110, 150;--bloom-3:120, 60, 130;--prism-warm:#ff5fd2;--gold:#d4a24c;--paper:#f1f5f2;--paper-dim:#c0c9c3;--paper-faint:#89958e;--lattice-young:#a8f0d3;--lattice-young-rgb:168, 240, 211;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--hair:#e8ece926;--hair-strong:#e8ece93d;--surface:#ffffff07;--surface-up:#ffffff0d;--ink-rgb:12, 17, 21;--sheet:#151c20;--sheet-edge:#ffffff0f;--sheet-shadow:0 30px 80px -20px #000000a6, 0 8px 24px -8px #00000080;--sheet-lift:0 6px 16px -10px #00000080;--alarm:#c0212f;--alarm-text:#ff9b86;--tone-1:#e3bb6a;--tone-2:#6fd0a8;--tone-3:#7aa7e6;--tone-4:#e0806e;--display:"Space Grotesk", "Segoe UI", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--han:"Noto Serif SC", "Songti SC", "PingFang SC", "Microsoft YaHei", serif}*{box-sizing:border-box}button,a,summary,input,select,textarea,[role=button]{-webkit-tap-highlight-color:transparent}html,body{height:100%}body{background:var(--ink);color:var(--paper);font-family:var(--display);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6;overflow-x:hidden}main.auth-shell{z-index:2;grid-template-columns:minmax(0,1fr);place-items:center;gap:0;width:100%;max-width:none;min-height:100dvh;margin:0;padding:32px 20px;display:grid;position:relative}.guest-level-test-header>a,.account-topbar>a:first-child{color:inherit;text-decoration:none}.auth-setup-error{margin:0;font-size:12px;line-height:1.6}.auth-error,.auth-setup-error{color:#ff9b86}.auth-loading{color:var(--paper-faint);font-family:var(--mono);font-size:12px}.auth-setup-error{max-width:420px;position:fixed;bottom:20px;right:20px}.auth-setup-error-centered{position:static}.sync-warning{z-index:3;color:#ffb2a2;font-family:var(--mono);letter-spacing:.06em;text-align:center;background:#782d2333;border-bottom:1px solid #ff9b8659;padding:7px 20px;font-size:10px;position:relative}.ground{z-index:0;pointer-events:none;background:radial-gradient(120% 90% at 50% 0%, var(--ink-2) 0%, var(--ink) 55%), var(--ink);position:fixed;inset:0;overflow:hidden}.bloom{opacity:var(--bloom-opacity,.62);will-change:transform;border-radius:50%;position:absolute;transform:translate(0,0)}.bloom-a{background:radial-gradient(closest-side, rgba(var(--bloom-1),.36) 0%, rgba(var(--bloom-1),.24) 26%, rgba(var(--bloom-1),.11) 48%, rgba(var(--bloom-1),.035) 68%, transparent 84%);width:62vw;height:62vw;animation:44s ease-in-out infinite alternate drift-a;top:-4vw;left:-16vw}.bloom-b{background:radial-gradient(closest-side, rgba(var(--bloom-2),.26) 0%, rgba(var(--bloom-2),.17) 28%, rgba(var(--bloom-2),.08) 50%, rgba(var(--bloom-2),.025) 70%, transparent 85%);width:54vw;height:54vw;animation:58s ease-in-out infinite alternate drift-b;top:20vh;right:-14vw}.bloom-c{background:radial-gradient(closest-side, rgba(var(--bloom-3),.2) 0%, rgba(var(--bloom-3),.13) 30%, rgba(var(--bloom-3),.06) 52%, rgba(var(--bloom-3),.02) 72%, transparent 86%);width:46vw;height:46vw;animation:68s ease-in-out infinite alternate drift-c;bottom:-18vw;left:38vw}@keyframes drift-a{to{transform:translate(4vw,3vh)scale(1.12)}}@keyframes drift-b{to{transform:translate(-6vw,-5vh)scale(1.1)}}@keyframes drift-c{to{transform:translate(3vw,-6vh)scale(1.18)}}.grain{z-index:0;pointer-events:none;opacity:.055;mix-blend-mode:overlay;width:100%;height:100%;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.bloom{animation:none}.logo-badge-flip-inner{transition:none}}.masthead{z-index:3;border-bottom:1px solid var(--hair-strong);background:var(--ink-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding:17px 32px 14px;display:flex;position:relative}.mark{align-items:center;gap:14px;display:flex}.mark-home{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;margin:0;padding:0;transition:opacity .15s}.mark-home:hover{opacity:.82}.mark-home:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.mark-home:disabled,.chrono button:disabled{cursor:default;opacity:.45}.mark-home:disabled:hover,.chrono button:disabled:hover,.chrono button.icon-btn:disabled:hover{color:var(--paper-dim);border-color:var(--hair-strong);opacity:.45;background:0 0;transform:none}.logo-mark{align-items:center;gap:6px;display:flex}.logo-fu{letter-spacing:-.01em;color:var(--accent);font-size:30px;font-weight:800;line-height:1}.logo-badge-flip{perspective:300px;flex-shrink:0;width:40px;height:40px;display:block}.logo-badge-flip-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .48s cubic-bezier(.4,.15,.2,1);display:block;position:relative}.logo-badge-flip:hover .logo-badge-flip-inner,.logo-badge-flip:focus-visible .logo-badge-flip-inner{transform:rotateY(180deg)}.logo-badge{backface-visibility:hidden;width:100%;height:100%;position:absolute;inset:0}.logo-badge-back{transform:rotateY(180deg)}.logo-badge-bg{fill:var(--accent);rx:24px}.logo-badge-glyph{fill:var(--ink);font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif;font-size:58px;font-weight:900}.logo-badge-pinyin{fill:var(--ink);letter-spacing:-.01em;font-size:50px;font-weight:900}html[data-theme=skyline] .logo-fu{color:#fff;font-weight:900}html[data-theme=skyline] .logo-badge-flip{width:46px}html[data-theme=skyline] .logo-badge-bg{fill:#ff9a00;rx:10px}.guest-level-test-header{padding:24px 32px 0}.guest-level-test-main{padding-top:24px}.meta{font-family:var(--mono);letter-spacing:.16em;color:var(--paper-faint);text-transform:uppercase;margin-top:3px;font-size:10.5px}.meta span{color:var(--gold)}.level-chip{font-family:var(--display);color:var(--paper-dim);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:4px 4px 4px 10px;font-size:14px;font-weight:500;display:inline-flex}.level-chip-seal{width:26px;height:26px;color:var(--ink);background:var(--accent);border-radius:7px;place-items:center;font-size:14px;font-weight:700;line-height:1;display:grid;transform:rotate(-4deg);box-shadow:inset 0 0 0 1.5px #ffffff24}.chrono{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.chrono button{font-family:var(--mono);letter-spacing:.1em;background:var(--surface);color:var(--paper-dim);border:1px solid var(--hair-strong);border-radius:var(--radius-sm);cursor:pointer;padding:6px 11px;font-size:10.5px;transition:color .2s,border-color .2s,background .2s}.chrono button:hover{color:var(--accent-pale);border-color:rgba(var(--accent-rgb), .55);background:rgba(var(--accent-rgb), .11)}.chrono button.warn:hover{color:#e08b7a;background:#e08b7a0d;border-color:#e08b7a66}.chrono button.icon-btn{width:40px;height:40px;color:var(--paper-dim);cursor:pointer;background:0 0;border:none;border-radius:0;justify-content:center;align-self:center;align-items:center;padding:0;transition:color .2s,transform .3s;display:flex}.chrono button.icon-btn:hover{color:var(--accent-pale);background:0 0;border-color:#0000;transform:rotate(35deg)}.profile-menu{z-index:46;position:relative}.profile-avatar{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--hair-strong);background:rgba(var(--accent-rgb), .14);width:34px;height:34px;color:var(--accent-pale);font-family:var(--mono);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;list-style:none;transition:border-color .2s,background .2s;display:flex}.profile-avatar::-webkit-details-marker{display:none}.profile-avatar:hover,.profile-menu[open] .profile-avatar{border-color:rgba(var(--accent-rgb), .55);background:rgba(var(--accent-rgb), .22)}.profile-avatar[aria-disabled=true]{cursor:default;opacity:.45}.profile-menu-panel{background:rgba(var(--ink-rgb), .98);border:1px solid var(--hair-strong);width:168px;padding:6px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 14px 36px #00000094}.profile-menu-panel :is(button,a){cursor:pointer;width:100%;font-family:var(--mono);letter-spacing:.04em;color:var(--paper-dim);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:9px 10px;font-size:11.5px;text-decoration:none;display:flex}.profile-menu-panel :is(button,a):hover{color:var(--paper);background:rgba(var(--accent-rgb), .1)}main{z-index:2;grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:24px;width:100%;max-width:1920px;margin:0 auto;padding:24px 32px 38px;display:grid;position:relative}main.lesson-mode{grid-template-columns:minmax(0,1fr)}main.learning-home-mode{grid-template-columns:minmax(0,1fr);padding-top:16px;padding-bottom:12px}.app-startup-error-main{place-items:center;min-height:calc(100dvh - 82px);padding:24px;display:grid}.app-startup-error{border:1px solid var(--hair);background:var(--surface);width:min(460px,100%);padding:28px}.app-startup-error p{margin:0;font-size:20px;font-weight:600}.app-startup-error span{color:var(--paper-dim);margin-top:8px;font-size:13px;display:block}.app-startup-error .btn{margin-top:22px}.app-boot{z-index:2;width:100%;max-width:1920px;margin:0 auto;padding:24px 3% 28px;animation:.24s ease-out .15s both app-boot-in;position:relative}@keyframes app-boot-in{0%{opacity:0}}@keyframes app-boot-pulse{50%{opacity:.55}}.app-boot-steps{display:none}.app-boot-workspace{grid-template-columns:minmax(340px,1fr) minmax(0,1.82fr);gap:22px;display:grid}.app-boot-panel{flex-direction:column;gap:14px;display:flex}.app-boot-card{border:1px solid var(--hair-strong);background:var(--surface);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.app-boot-session{flex:1;gap:18px;padding:14px}.app-boot-settings{height:166px}.app-boot-routine,.app-boot-line,.app-boot-action{background:var(--surface-up);border-radius:8px;animation:1.6s ease-in-out infinite app-boot-pulse;display:block}.app-boot-routine{height:56px;margin-bottom:8px}.app-boot-line{width:78%;height:14px;margin-inline:4px}.app-boot-line-short{width:32%;height:10px}.app-boot-action{background:rgba(var(--accent-rgb), .16);height:50px;margin-top:auto}.app-boot-toolbar{border-bottom:1px solid var(--hair);background:var(--ink-2);height:63px;display:block}.app-boot-map{background:radial-gradient(circle, var(--hair) .7px, transparent .8px) 0 0 / 16px 16px, var(--ink);height:max(560px,100dvh - 122px)}@media (width>=601px) and (width<=1440px){.app-boot{padding-block:16px}.app-boot-map{height:max(560px,100dvh - 102px)}}@media (width>=601px) and (width<=1200px){.app-boot-workspace{grid-template-columns:340px minmax(0,1fr);gap:20px}}@media (width<=600px){.app-boot{padding:18px max(16px, env(safe-area-inset-right)) 30px max(16px, env(safe-area-inset-left))}.app-boot-steps{gap:16px;margin:10px 0 16px;display:flex}.app-boot-steps span{border:1px solid var(--hair-strong);border-radius:28px;flex:1;height:44px}.app-boot-workspace{grid-template-columns:minmax(0,1fr);gap:24px}.app-boot-session{background:var(--ink-2);border-radius:14px;flex:none;height:308px;padding:16px}.app-boot-routine,.app-boot-settings,.app-boot-toolbar{display:none}.app-boot-map{border:0;border-radius:0;height:320px}}@media (prefers-reduced-motion:reduce){.app-boot,.app-boot-routine,.app-boot-line,.app-boot-action{animation:none}}.stage{min-width:0}main.settings-main{grid-template-columns:minmax(0,1180px);justify-content:center}@media (width<=1120px){main{grid-template-columns:1fr;gap:28px}}.learning-home-top{grid-template-columns:minmax(420px,1.1fr) minmax(360px,1fr) minmax(270px,320px);align-items:stretch;gap:18px;display:grid}.continue-card{border:1px solid rgba(var(--accent-rgb),.48);border-left:3px solid var(--accent);border-radius:var(--radius-lg);background:linear-gradient(110deg, rgba(var(--accent-rgb),.14), transparent 68%), rgba(var(--ink-rgb),.7);justify-content:space-between;align-items:center;gap:28px;min-width:0;padding:18px 22px;display:flex;box-shadow:0 14px 40px #00000038}.continue-copy{min-width:0}.continue-kicker{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--accent-pale);margin-bottom:5px;font-size:11px}.continue-card h1{font-size:clamp(25px,2vw,32px)}.continue-card p{color:var(--paper-dim);margin:5px 0 0;font-size:15px;line-height:1.5}.continue-meta{font-size:13px;font-family:var(--mono);letter-spacing:.04em;color:var(--paper-dim);margin-top:12px}.continue-button{white-space:nowrap;min-width:154px;min-height:50px;padding:13px 20px;font-size:12px}.continue-practice-actions{flex:0 0 174px;gap:9px;display:grid}.continue-secondary-button{cursor:pointer;white-space:nowrap;min-height:42px;color:var(--paper-dim);border:1px solid var(--hair-strong);font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;background:0 0;padding:10px 16px;font-size:11px}.continue-secondary-button:hover{color:var(--paper);border-color:rgba(var(--accent-rgb),.55);background:rgba(var(--accent-rgb),.055)}.home-practice{border:1px solid rgba(var(--accent-rgb),.4);border-left:3px solid var(--accent);border-radius:var(--radius-lg);background:linear-gradient(110deg, rgba(var(--accent-rgb),.1), transparent 68%), rgba(var(--ink-rgb),.55);min-width:0;padding:14px 16px}.home-practice h2{letter-spacing:.18em;color:var(--accent-pale);text-transform:uppercase;font-size:12px}.home-practice-note{color:var(--paper-dim);margin:4px 0 10px;font-size:12px;line-height:1.4}.home-practice-actions{gap:9px;display:grid}.home-practice-actions button{min-height:47px;color:var(--paper);background:rgba(var(--accent-rgb),.05);border:1px solid rgba(var(--accent-rgb),.3);border-radius:var(--radius-md);text-align:left;cursor:pointer;gap:1px;padding:7px 10px;display:grid}.home-practice-actions button:hover:not(:disabled){color:var(--paper);border-color:rgba(var(--accent-rgb),.7);background:rgba(var(--accent-rgb),.12)}.home-practice-actions button:disabled{opacity:.42;cursor:not-allowed}.home-practice-actions span{font-size:14px;font-weight:650}.home-practice-actions small{color:var(--paper-dim);font-size:12px}.learning-home-top .rank-panel{padding:12px 18px}.primary-map{border-radius:var(--radius-lg);border:1px solid var(--hair);background:#ffffff04;margin-top:12px;overflow:hidden;box-shadow:inset 0 1px #ffffff06}.primary-map .web-wrap{border:0;border-bottom:1px solid var(--hair);box-shadow:none;margin-top:0}.primary-map .key{background:rgba(var(--ink-rgb),.9);min-height:48px;padding:8px 16px}.web-edges path{opacity:.9}.node-hit-area{fill:#0000;pointer-events:all}.node-hit-target{fill:rgba(var(--ink-rgb),.72);stroke:var(--hair-strong);stroke-width:1.2px;transition:fill .18s,stroke .18s}.node-untouched .node-hit-target{fill:rgba(var(--ink-rgb),.38);stroke:#e8ece91c;stroke-width:.9px}.node:hover .node-hit-target,.node:focus-visible .node-hit-target{fill:rgba(var(--accent-rgb),.09);stroke:rgba(var(--accent-rgb),.75)}.node.recommended .node-hit-target{stroke:var(--gold);stroke-width:1.5px}.node.admin-complete-target .node-hit-target{fill:#e08b7a29;stroke:#e08b7a;stroke-width:2px}.node-portal{cursor:pointer}.portal-pop{transition:transform .18s;transform:scale(1)}.node-portal:hover .portal-pop,.node-portal:focus-visible .portal-pop{transform:scale(1.12)}.portal-badge{transition:fill .18s,stroke .18s}.web-region-bar{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);align-items:center;gap:10px;padding:8px 12px 0;font-size:11.5px;display:flex}.web-region-current{color:var(--paper)}.web-level-hub-toggle{border:1px solid var(--hair-strong);color:var(--paper-dim);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;margin-left:auto;padding:5px 10px;font-size:10.5px;transition:color .18s,border-color .18s,background .18s}.web-level-hub-toggle:hover,.web-level-hub-toggle:focus-visible{color:var(--paper);background:rgba(var(--accent-rgb), .1);border-color:rgba(var(--accent-rgb), .4)}.web-level-load-status{color:var(--paper-faint);font-family:var(--mono);align-items:center;gap:8px;margin:8px 12px 0;font-size:11px;display:flex}.web-level-load-status.error{color:#e08b7a}.web-level-load-status button{color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;text-decoration:underline}.web-level-hub{min-height:clamp(420px,100dvh - 350px,600px);padding:10px 4px;overflow-y:auto}.web-level-hub .theme-opt{padding:14px 8px}.web-level-hub .theme-name{font-size:14px}.web-level-hub .theme-blurb{text-transform:none;letter-spacing:.02em;font-size:10px}.learning-web-overview{grid-template-columns:minmax(270px,.42fr) minmax(520px,1fr);align-items:stretch;gap:24px;display:grid}.stage-head{flex-direction:column;justify-content:center;padding:8px 4px;display:flex}h1{letter-spacing:-.02em;margin:0;font-size:30px;font-weight:500}.lede{color:var(--paper-dim);max-width:52ch;margin:6px 0 0;font-size:13.5px}.web-wrap{border:1px solid var(--hair);background:radial-gradient(80% 75% at 40% 45%, rgba(var(--accent-rgb), .045), transparent 75%), #ffffff04;margin:20px 0 0;padding:0 8px;position:relative;box-shadow:inset 0 1px #ffffff06}.web-stage{position:relative}#web{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:clamp(420px,100dvh - 350px,600px);display:block;overflow:visible}.crystal-web-layer{pointer-events:none;z-index:1;position:absolute;inset:0}.crystal-web-layer,.crystal-web-layer *{pointer-events:none!important}.crystal-web-layer canvas{width:100%;height:100%;display:block}#web.dragging{cursor:grabbing}#web.dragging *{filter:none!important}.web-portal-fab{z-index:20;background:var(--ink-2);width:48px;height:48px;color:var(--paper-dim);cursor:pointer;box-shadow:0 6px 16px #0006, 0 0 0 1px #ffffff14 inset, inset 0 0 0 2px var(--hair-strong);opacity:0;pointer-events:none;border:none;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:transform .22s,opacity .22s,color .18s,box-shadow .18s;display:flex;position:absolute;left:50%;transform:translate(-50%)scale(.7)}.web-portal-fab svg{flex:none}.web-portal-fab.visible{opacity:.85;pointer-events:auto;transform:translate(-50%)scale(1)}.web-portal-fab.lit.visible{opacity:1}.web-portal-fab:hover,.web-portal-fab:focus-visible{color:var(--accent-pale);box-shadow:0 6px 16px #0006, 0 0 0 1px #ffffff14 inset, inset 0 0 0 2px var(--accent)}.web-portal-fab.visible:hover,.web-portal-fab.visible:focus-visible{transform:translate(-50%)scale(1.1)}.web-portal-fab-forward,.web-portal-fab-back{left:auto;transform:scale(.7)}.web-portal-fab-forward{bottom:82px;right:22px}.web-portal-fab-back{top:22px;right:22px}.web-portal-fab-forward.visible,.web-portal-fab-back.visible{transform:scale(1)}.web-portal-fab-forward.visible:hover,.web-portal-fab-forward.visible:focus-visible,.web-portal-fab-back.visible:hover,.web-portal-fab-back.visible:focus-visible{transform:scale(1.1)}.node-relic{cursor:pointer}.node-relic[aria-disabled=true]{cursor:default}.node-relic-disc{fill:var(--ink-2);stroke:var(--hair-strong);stroke-width:2px;transition:stroke .22s,fill .22s}.node-relic-icon{stroke:var(--paper-faint);transition:stroke .22s,filter .22s}.node-relic-gem{fill:var(--relic-color);stroke:color-mix(in srgb, var(--relic-color) 55%, var(--ink));stroke-width:2px;opacity:.4;transition:opacity .22s,stroke .22s}.node-relic-ring{fill:none;stroke:var(--relic-color);stroke-width:2.5px;opacity:.85}.node-relic.started .node-relic-gem{opacity:1;stroke:var(--relic-color);animation:2.6s ease-in-out infinite relic-crystal-pulse}.node-relic:hover .node-relic-gem,.node-relic:focus-visible .node-relic-gem{opacity:.7}.node-relic.started:hover .node-relic-gem,.node-relic.started:focus-visible .node-relic-gem{opacity:1}@keyframes relic-crystal-pulse{0%,to{filter:drop-shadow(0 0 6px var(--relic-color)) drop-shadow(0 0 14px var(--relic-color))}50%{filter:drop-shadow(0 0 11px var(--relic-color)) drop-shadow(0 0 22px var(--relic-color))}}@media (prefers-reduced-motion:reduce){.node-relic.started .node-relic-gem{animation:none}}.node-test-placement-ring{stroke:var(--accent);stroke-width:2.4px;filter:drop-shadow(0 0 6px rgba(var(--accent-rgb), .6));pointer-events:none;animation:1.8s ease-in-out infinite test-placement-pulse}@keyframes test-placement-pulse{0%,to{r:46;opacity:.85}50%{r:54;opacity:.4}}@media (prefers-reduced-motion:reduce){.node-test-placement-ring{animation:none}}.node-relic-entry .node-relic-disc,.node-relic-entry .node-relic-icon{stroke:var(--accent)}.node-relic-entry:hover .node-relic-disc,.node-relic-entry:focus-visible .node-relic-disc{stroke:var(--accent-pale)}@media (width<=900px){.web-portal-fab{width:42px;height:42px}.web-portal-fab-forward{bottom:70px;right:10px}.web-portal-fab-back{top:10px;right:10px}}.web-zoom-controls{z-index:20;background:var(--ink-2);box-shadow:0 6px 16px #0006, 0 0 0 1px #ffffff14 inset, inset 0 0 0 2px var(--hair-strong);border-radius:999px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:14px;right:14px}.web-zoom-controls button{color:var(--paper-dim);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:999px;line-height:1;transition:color .15s,background .15s}.web-zoom-controls button:hover:not(:disabled),.web-zoom-controls button:focus-visible:not(:disabled){color:var(--accent-pale);background:rgba(var(--accent-rgb), .14)}.web-zoom-controls button:disabled{opacity:.35;cursor:default}.web-zoom-controls button:not(.web-zoom-reset){width:26px;height:26px;font-size:16px;font-weight:600}.web-zoom-reset{letter-spacing:.02em;min-width:44px;padding:4px 8px;font-size:11px}@media (width<=900px){.web-zoom-controls{bottom:8px;right:8px}}.web-fullscreen-toggle{z-index:20;background:var(--ink-2);width:32px;height:32px;color:var(--paper-dim);cursor:pointer;box-shadow:0 6px 16px #0006, 0 0 0 1px #ffffff14 inset, inset 0 0 0 2px var(--hair-strong);border:none;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:color .15s,box-shadow .15s;display:flex;position:absolute;top:14px;right:14px}.web-fullscreen-toggle:hover,.web-fullscreen-toggle:focus-visible{color:var(--accent-pale);box-shadow:0 6px 16px #0006, 0 0 0 1px #ffffff14 inset, inset 0 0 0 2px var(--accent)}:-webkit-any(.web-wrap:fullscreen,.web-wrap:-webkit-full-screen){background:var(--ink);border:none;justify-content:center;align-items:center;padding:0;display:flex}:is(.web-wrap:fullscreen,.web-wrap:fullscreen){background:var(--ink);border:none;justify-content:center;align-items:center;padding:0;display:flex}:-webkit-any(.web-wrap:fullscreen #web,.web-wrap:-webkit-full-screen #web){width:100vw;height:100dvh}:is(.web-wrap:fullscreen #web,.web-wrap:fullscreen #web){width:100vw;height:100dvh}:-webkit-any(.web-wrap:fullscreen .web-region-bar,.web-wrap:-webkit-full-screen .web-region-bar){z-index:20;position:absolute;top:16px;left:16px}:is(.web-wrap:fullscreen .web-region-bar,.web-wrap:fullscreen .web-region-bar){z-index:20;position:absolute;top:16px;left:16px}.key{flex-wrap:wrap;gap:22px;padding:8px 4px 0;display:flex}.key-item{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-faint);align-items:center;gap:8px;font-size:11.5px;display:flex}.rail{border:1px solid var(--hair);background:var(--surface);flex-direction:column;gap:30px;max-height:calc(100vh - 108px);padding:20px 22px;display:flex;position:sticky;top:18px;overflow-y:auto;box-shadow:inset 0 1px #ffffff06}.rail section{display:block}.rail h2{letter-spacing:.2em;font-size:13px}h2{font-family:var(--mono);letter-spacing:.26em;text-transform:uppercase;color:var(--paper-dim);border-bottom:1px solid var(--hair-strong);margin:0 0 12px;padding-bottom:8px;font-size:10px;font-weight:500}.rail-note{color:var(--paper-dim);margin:0 0 12px;font-size:14px;line-height:1.55}.rail-review-head h2{border-bottom:none;padding-bottom:0}.rail-review-btn{width:100%;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;text-align:center;color:var(--paper);background:var(--surface-up);cursor:pointer;border:1px solid #e8ece961;padding:11px;font-size:12px}.rail-review-btn:hover{background:var(--accent-pale);border-color:var(--accent-pale);box-shadow:0 0 26px rgba(var(--accent-rgb), .34)}.rail-review-ready{border:1px solid rgba(var(--accent-rgb),.38);background:rgba(var(--accent-rgb),.055);padding:15px}.optional-practice{gap:14px;display:grid}.practice-option{padding-top:3px}.practice-option+.practice-option{border-top:1px solid var(--hair);padding-top:17px}.practice-option h3{color:var(--paper);margin:0;font-size:16px;font-weight:500}.practice-option p{color:var(--paper-dim);margin:4px 0 11px;font-size:13.5px;line-height:1.5}.rail-secondary-btn{cursor:pointer;width:100%;min-height:42px;color:var(--paper-dim);border:1px solid var(--hair-strong);font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;background:0 0;padding:10px 13px;font-size:11px}.rail-secondary-btn:hover:not(:disabled){color:var(--paper);border-color:rgba(var(--accent-rgb),.52);background:rgba(var(--accent-rgb),.055)}.rail-secondary-btn:disabled{opacity:.42;cursor:not-allowed}.shard{text-align:left;border:none;border-bottom:1px solid var(--hair);width:100%;color:var(--paper);cursor:pointer;background:0 0;align-items:center;gap:11px;padding:10px 4px;font-family:inherit;transition:background .2s,padding-left .2s;display:flex}.shard:hover{background:rgba(var(--accent-rgb), .1);padding-left:9px}.shard-glyph{flex:none}.shard-body{flex:1;min-width:0}.shard-title{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.shard-meta{font-family:var(--mono);letter-spacing:.07em;color:var(--paper-faint);text-transform:uppercase;margin-top:2px;font-size:11px}.empty{color:var(--paper-faint);padding:4px 0 10px;font-size:12px;font-style:italic}.ledger{flex-direction:column;margin:0;display:flex}.ledger>div{border-bottom:1px solid var(--hair);justify-content:space-between;align-items:baseline;padding:7px 0;display:flex}.ledger dt{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint);font-size:10px}.ledger dd{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--paper);margin:0;font-size:14px}.ledger dd em{color:var(--paper-faint);font-size:11px;font-style:normal}.creed{color:var(--paper-faint);border-left:1px solid #d4a24c66;margin:0;padding-left:13px;font-size:11.5px;line-height:1.7}#lesson-view{width:100%}.lesson-top{border-bottom:1px solid var(--hair);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:30px;padding-bottom:18px;display:flex}.lesson-sub{color:var(--paper-dim);margin:5px 0 0;font-size:13px;font-style:italic}.lesson-workspace{flex-direction:column;align-items:center;display:flex}.lesson-practice{width:min(100%,920px);min-width:0}.lesson-workspace-complete>.slab{width:min(100%,920px)}.slab{text-align:center;background:linear-gradient(180deg, rgba(var(--accent-rgb), .09), rgba(var(--accent-rgb), .015) 60%), var(--surface);border:1px solid var(--hair);border-top-color:rgba(var(--accent-rgb), .42);border-radius:var(--radius-lg);flex-direction:column;justify-content:center;gap:14px;min-height:220px;padding:46px 34px;display:flex;position:relative}.completion-stamp{border:3px solid var(--accent);border-radius:var(--radius-sm);font-family:var(--han);letter-spacing:.04em;color:var(--accent);opacity:.85;pointer-events:none;padding:8px 14px;font-size:26px;font-weight:700;line-height:1;position:absolute;top:20px;right:26px;transform:rotate(9deg)}.level-test-result-note{max-width:46ch;color:var(--paper-dim);font-size:14px;line-height:1.5}.level-test-language-warning{color:#c0212f;max-width:46ch;font-size:14px;font-weight:600;line-height:1.5}.level-test-card{min-height:320px}.level-test-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:min(100%,560px);margin:28px auto 0;display:grid}.level-test-option{text-align:left;color:var(--paper);background:var(--surface);border:1px solid var(--hair-strong);cursor:pointer;padding:14px 16px;font-size:15px;transition:color .18s,border-color .18s,background .18s}.level-test-option:hover:not(:disabled){border-color:rgba(var(--accent-rgb), .55);background:rgba(var(--accent-rgb), .08)}.level-test-option:disabled{cursor:default}.level-test-option.correct{border-color:var(--accent);background:rgba(var(--accent-rgb), .16)}.level-test-option.wrong{background:#c0212f24;border-color:#c0212f}.level-test-replay-wrap{justify-content:center;margin:8px 0 4px;display:flex}.level-test-input{box-sizing:border-box;width:min(100%,420px);min-height:52px;font-family:var(--han);color:var(--paper);background:var(--surface);border:1px solid var(--hair-strong);border-radius:4px;padding:12px 16px;font-size:20px;line-height:1.4}.level-test-input:focus{border-color:rgba(var(--accent-rgb), .55);outline:none}.level-test-input:disabled{opacity:.6}.level-test-input.correct{border-color:var(--accent);background:rgba(var(--accent-rgb), .1)}.level-test-input.wrong{background:#c0212f1a;border-color:#c0212f}.level-test-option-hanzi{text-align:center;letter-spacing:.04em;padding:18px 16px;font-size:22px}.level-test-idk{text-align:center;font-family:var(--mono);letter-spacing:.08em;color:var(--paper-dim);border:1px dashed var(--hair-strong);cursor:pointer;background:0 0;grid-column:1/-1;padding:13px 16px;font-size:12px;transition:color .18s,border-color .18s,background .18s}.level-test-idk:hover:not(:disabled){color:var(--paper);border-color:rgba(var(--accent-rgb), .45);background:rgba(var(--accent-rgb), .06)}.level-test-idk:disabled{opacity:.35;cursor:default}.level-test-idk-standalone{width:min(100%,420px);margin:14px auto 0;display:block}@media (width<=600px){.level-test-options{grid-template-columns:1fr}.level-test-idk{min-height:48px}}.acts button.premium-btn{border-radius:var(--radius-sm);cursor:pointer;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);background:var(--accent);border:1px solid var(--accent);box-shadow:0 0 0 rgba(var(--accent-rgb), 0);padding:13px 28px;font-size:11px;font-weight:500;transition:color .18s,border-color .18s,background .18s,box-shadow .18s;position:relative;overflow:hidden}.premium-btn span{z-index:1;position:relative}.premium-btn:before{content:"";background:linear-gradient(115deg,#0000 30%,#ffffff59 48%,#0000 66%);transition:transform .7s;position:absolute;inset:0;transform:translate(-120%)}.acts button.premium-btn:hover{color:var(--ink);background:color-mix(in srgb, var(--accent) 82%, white 18%);border-color:color-mix(in srgb, var(--accent) 82%, white 18%);box-shadow:0 0 16px rgba(var(--accent-rgb), .22)}.premium-btn:hover:before{transform:translate(120%)}@media (prefers-reduced-motion:reduce){.premium-btn,.premium-btn:before{transition:none}}.review-card>.card-chrome{z-index:45;justify-content:space-between;align-items:center;gap:14px;display:flex;position:absolute;top:16px;left:18px;right:18px}.review-card{padding-top:64px}.card-chrome-right{min-width:0;font-family:var(--mono);letter-spacing:.08em;align-items:center;gap:10px;font-size:11px;display:flex}.ai-token-meter{color:var(--paper-faint);font-variant-numeric:tabular-nums;white-space:nowrap}.ai-token-meter.is-empty{color:var(--gold)}.ai-token-meter>.card-meter{width:56px;height:3px}.card-meter{background:var(--hair);border-radius:999px;flex:none;width:90px;height:4px;overflow:hidden}.card-meter-fill{background:linear-gradient(90deg, var(--accent-deep), var(--accent));border-radius:999px;height:100%;transition:width .34s}.card-audio-btn{cursor:pointer;width:34px;height:34px;color:var(--paper-dim);background:var(--surface);border:1px solid var(--hair-strong);border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;transition:color .18s,border-color .18s,background .18s;display:flex}.card-audio-btn:hover{color:var(--accent-pale);border-color:rgba(var(--accent-rgb), .5);background:var(--surface-up)}.card-audio-btn-replay{width:auto;min-width:108px;height:44px;color:var(--paper);font-family:var(--display);border-radius:8px;gap:8px;padding:0 16px;font-size:14px;font-weight:600}.card-audio-btn-replay svg{width:19px;height:19px}.review-card-meta{min-width:0;font-family:var(--mono);letter-spacing:.08em;align-items:center;gap:10px;font-size:11px;display:flex}.review-card-hsk{color:var(--level-color,var(--accent-pale));border:1px solid color-mix(in srgb, var(--level-color,var(--accent)) 55%, transparent);background:color-mix(in srgb, var(--level-color,var(--accent)) 14%, transparent);border-radius:999px;flex:none;padding:3px 10px}.review-card-topic{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--paper-dim);overflow:hidden}.review-card-topic:before{content:"· ";color:var(--paper-faint)}.review-card-position{color:var(--paper-faint);flex:none}.review-card>.card-foot{border-top:1px solid var(--hair);margin:4px clamp(16px,6%,48px) 0;padding-top:22px}.reveal-act{cursor:pointer;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim);background:var(--surface);border:1px solid var(--hair-strong);border-radius:999px;align-items:center;gap:9px;padding:11px 24px;font-size:11px;transition:color .18s,border-color .18s,background .18s,box-shadow .18s;display:inline-flex}.reveal-act:hover{color:var(--accent-pale);border-color:rgba(var(--accent-rgb), .55);background:var(--surface-up);box-shadow:0 0 16px rgba(var(--accent-rgb), .14)}.lesson-practice>.card-aid-bar{align-items:center;gap:14px;margin-top:14px;display:flex}.lesson-practice>.card-aid-bar>.translation-edit-toggle{margin-left:auto}.card-aid-controls{z-index:45;align-items:center;gap:5px;display:flex;position:absolute;bottom:14px;left:14px}.pinyin-toggle,.tone-guide-inline-toggle{height:29px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dim);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0;font-size:10px;display:inline-flex}.pinyin-toggle:hover,.tone-guide-inline-toggle:hover{color:var(--paper)}.pinyin-toggle.on,.tone-guide-inline-toggle.on{color:var(--accent-pale)}.switch-track{background:var(--surface-up);border:1px solid var(--hair-strong);border-radius:999px;flex:none;width:34px;height:18px;transition:background .18s,border-color .18s;position:relative}.switch-thumb{background:var(--paper-faint);border-radius:50%;width:12px;height:12px;transition:transform .18s,background .18s;position:absolute;top:50%;left:2px;transform:translateY(-50%)}.on>.switch-track{background:rgba(var(--accent-rgb), .22);border-color:rgba(var(--accent-rgb), .55)}.on>.switch-track>.switch-thumb{background:var(--accent);box-shadow:0 0 6px rgba(var(--accent-rgb), .72);transform:translateY(-50%)translate(16px)}@media (prefers-reduced-motion:reduce){.switch-track,.switch-thumb{transition:none}}.translation-edit-toggle{height:29px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-faint);background:var(--surface);border:1px solid var(--hair-strong);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:9px;display:inline-flex}.translation-edit-toggle:hover{color:var(--accent-pale);border-color:rgba(var(--accent-rgb), .5)}.translation-editor{background:var(--surface);border:1px solid var(--hair-strong);text-align:left;border-radius:4px;flex-direction:column;gap:8px;width:min(100%,480px);margin:14px auto 0;padding:12px 14px;display:flex}.translation-editor-label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-faint);font-size:10px}.translation-editor-input{box-sizing:border-box;resize:vertical;width:100%;color:var(--paper);background:var(--panel,var(--surface));border:1px solid var(--hair-strong);border-radius:4px;padding:8px 10px;font-size:15px;line-height:1.4}.translation-editor-input:focus{border-color:rgba(var(--accent-rgb), .55);outline:none}.translation-editor-input:disabled{opacity:.6}.translation-editor-error{color:#c0212f;margin:0;font-size:13px}.translation-editor-acts{justify-content:flex-end;gap:8px;display:flex}.hanzi-size-controls{gap:5px;display:flex;position:absolute;bottom:14px;right:14px}.hanzi-size-controls button{width:29px;height:29px;font-family:var(--mono);color:var(--paper-dim);background:var(--surface);border:1px solid var(--hair-strong);cursor:pointer;border-radius:50%;place-items:center;padding:0;font-size:18px;line-height:1;display:grid}.hanzi-size-controls button:hover:not(:disabled){color:var(--paper);border-color:#e8ece961}.hanzi-size-controls button:disabled{opacity:.35;cursor:default}.audio-repeat-control{z-index:45;font-family:var(--mono);color:var(--paper-dim);text-align:left;position:relative}.audio-repeat-control[open]{z-index:300}.audio-repeat-control summary{cursor:pointer;-webkit-user-select:none;user-select:none;letter-spacing:.05em;background:var(--surface);border:1px solid var(--hair-strong);border-radius:999px;place-items:center;width:42px;height:29px;font-size:11px;list-style:none;display:grid}.audio-repeat-control summary::-webkit-details-marker{display:none}.audio-repeat-control summary:hover,.audio-repeat-control[open] summary{color:var(--paper);border-color:rgba(var(--accent-rgb),.52)}.audio-repeat-menu{z-index:1;background:rgba(var(--ink-rgb),.98);border:1px solid var(--hair-strong);width:190px;padding:12px;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 14px 36px #00000094}.audio-repeat-presets{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.audio-repeat-presets button,.audio-repeat-menu form button{cursor:pointer;min-height:32px;color:var(--paper-dim);background:var(--surface);border:1px solid var(--hair-strong);font:inherit;padding:6px 8px}.audio-repeat-presets button:hover,.audio-repeat-presets button.on,.audio-repeat-menu form button:hover{color:var(--paper);border-color:rgba(var(--accent-rgb),.55);background:rgba(var(--accent-rgb),.08)}.audio-repeat-menu form{margin-top:11px}.audio-repeat-menu label{color:var(--paper-faint);letter-spacing:.12em;text-transform:uppercase;margin-bottom:5px;font-size:9px;display:block}.audio-repeat-menu form>div{grid-template-columns:1fr auto;gap:6px;display:grid}.audio-repeat-menu input{width:100%;min-width:0;color:var(--paper);background:var(--ink-2);border:1px solid var(--hair-strong);font:inherit;outline:none;padding:6px 8px}.audio-repeat-menu input:focus{border-color:rgba(var(--accent-rgb),.62)}.slab-tag{font-family:var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--gold);font-size:9.5px}.review-card>.slab-tag{position:absolute;top:18px;left:50%;transform:translate(-50%)}.level-test-card>.slab-tag{color:var(--accent-pale)}.slab-han{font-family:var(--han);font-size:var(--hanzi-font-size,40px);letter-spacing:.04em;color:var(--paper);text-shadow:0 0 30px rgba(var(--accent-rgb), .22);line-height:1.4;position:relative}.shadow-said-loosely-btn{color:var(--paper-dim);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:1;transition:color .15s;display:inline-flex;position:absolute;top:-2px;right:-28px}.shadow-said-loosely-btn:hover{color:var(--accent-pale)}@media (pointer:coarse){.shadow-said-loosely-btn{min-width:44px;min-height:44px;top:-12px;right:-44px}}.shadow-said-loosely-popover{background:var(--surface);border:1px solid var(--hair-strong);border-radius:8px;flex-direction:column;align-items:center;gap:4px;margin-top:4px;padding:10px 16px;display:flex}.shadow-said-loosely-text{font-family:var(--han);color:var(--paper-dim);font-size:18px}.dictation-replay-wrap{align-self:center;display:inline-flex;position:relative}.practice-fade{animation:.3s both practice-fade-in}@keyframes practice-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.practice-fade{animation:none}}.shadow-encouragement-bubble{white-space:nowrap;background:var(--surface-up);color:var(--accent-pale);border:1px solid rgba(var(--accent-rgb), .4);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;pointer-events:none;border-radius:999px;margin-right:10px;padding:6px 14px;font-size:12px;font-weight:600;animation:1.6s forwards shadow-encouragement-pop;position:absolute;top:50%;right:100%;box-shadow:0 4px 14px #0000004d}.shadow-encouragement-bubble:after{content:"";border:6px solid #0000;border-left-color:var(--surface-up);position:absolute;top:50%;left:100%;transform:translateY(-50%)}@keyframes shadow-encouragement-pop{0%{opacity:0;transform:translate(6px,-50%)scale(.9)}15%{opacity:1;transform:translateY(-50%)scale(1)}75%{opacity:1;transform:translateY(-50%)scale(1)}to{opacity:0;transform:translateY(-50%)scale(1)}}@media (prefers-reduced-motion:reduce){.shadow-encouragement-bubble{animation-name:shadow-encouragement-fade}}@keyframes shadow-encouragement-fade{0%,75%{opacity:1}to{opacity:0}}.hz-word{isolation:isolate;display:inline-block;position:relative}@media (hover:none){.hz-word,.hz-char,.hz-char-glyph{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}}.hz-word:hover{z-index:100}.hz-word:has(.hz-char-active){z-index:100}.hz-word:has(>.hz-word-tip.is-open){z-index:100}.hz-word-tip{background-color:var(--ink-2);border:1px solid var(--hair-strong);font-family:var(--sans,inherit);letter-spacing:normal;color:var(--paper);white-space:nowrap;text-shadow:none;opacity:0;visibility:hidden;pointer-events:none;z-index:40;border-radius:5px;margin-bottom:10px;padding:5px 10px;font-size:13px;transition:opacity .12s;position:absolute;bottom:100%;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0006}.hz-word:hover>.hz-word-tip{opacity:1;visibility:visible}.hz-word:has(.hz-char-active)>.hz-word-tip{opacity:0;visibility:hidden}.hz-word-tip-pos{color:var(--paper-dim);font-style:italic}.hz-word-tip-hsk{font-family:var(--mono);font-size:11px;font-weight:600}.hz-word-flagged .hz-char-glyph{text-decoration:underline;-webkit-text-decoration-color:var(--alarm-text);text-decoration-color:var(--alarm-text);text-underline-offset:6px;text-decoration-style:dotted;text-decoration-thickness:2px}.hz-word-tip-flag{border-left:1px solid var(--alarm-text);color:var(--paper)}.hz-char{cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;display:inline-block;position:relative}.hz-char-pinned{vertical-align:top;flex-direction:column;align-items:center;margin-bottom:20px;display:inline-flex}.hz-word:hover .hz-char{color:var(--accent-pale)}.hz-word:hover .hz-char:hover{color:color-mix(in srgb, var(--accent-pale) 72%, var(--paper) 28%)}.hz-char-active,.hz-char-speaking{color:var(--accent)}.hz-char-speaking .hz-char-glyph{text-shadow:0 0 24px rgba(var(--accent-rgb), .8);transform:translateY(-2px)scale(1.08)}.hz-char-speaking>.hz-pinyin-tip{color:var(--accent)}.hz-char-spoken{color:var(--tone-2);transition:color .18s}.hz-char-spoken>.hz-pinyin-tip{color:var(--tone-2)}.hz-char-glyph{transform-style:preserve-3d;transform-origin:50%;backface-visibility:hidden;will-change:transform;transition:transform .15s,text-shadow .15s;display:inline-block}.hz-word:hover .hz-char-glyph{text-decoration:underline;-webkit-text-decoration-color:var(--hsk-color,var(--accent-pale));text-decoration-color:var(--hsk-color,var(--accent-pale));text-underline-offset:6px;text-decoration-thickness:2px}.hz-word-selected .hz-char{color:var(--accent-pale)}.hz-word-selected .hz-char-glyph{text-decoration:underline;-webkit-text-decoration-color:var(--hsk-color,var(--accent-pale));text-decoration-color:var(--hsk-color,var(--accent-pale));text-underline-offset:6px;text-decoration-thickness:2px}.hz-char-holo{transform:perspective(360px) translateZ(20px) rotateX(calc(var(--my,0) * -22deg)) rotateY(calc(var(--mx,0) * 22deg)) scale(1.22);text-shadow:0 10px 16px #00000073}.hz-pinyin-tip{font-family:var(--mono);letter-spacing:.02em;color:var(--accent-pale);text-shadow:none;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;z-index:50;margin-top:8px;font-size:14px;transition:opacity .12s;position:absolute;top:100%;left:50%;transform:translate(-50%)}.hz-pinyin-pinned{opacity:1;visibility:visible;margin-top:3px;position:static;transform:none}.slab-han .hz-pinyin-pinned{font-size:calc(var(--hanzi-font-size,40px) * .275)}.hz-char>.hz-pinyin-pinned.hz-pinyin-hidden{opacity:0}.hz-char-tip{background-color:var(--ink-2);border:1px solid var(--hair-strong);white-space:nowrap;text-shadow:none;z-index:60;border-radius:5px;flex-direction:column;align-items:center;gap:3px;margin-bottom:10px;padding:6px 11px;display:flex;position:absolute;bottom:100%;left:50%;transform:translate(-50%);box-shadow:0 8px 22px #00000073}.hz-char-tip-word{font-family:var(--sans,inherit);letter-spacing:normal;color:var(--paper-dim);font-size:11px}.hz-char-tip-meaning{font-family:var(--sans,inherit);letter-spacing:normal;color:var(--paper);font-size:14px;font-weight:600}.slab-pinyin{font-family:var(--mono);color:var(--accent-pale);letter-spacing:.05em;font-size:13px}.slab-en{color:var(--paper-dim);font-size:16px}.slab-note{color:var(--paper-faint);font-size:12px}.english-sentence{justify-content:center;align-items:flex-start;gap:6px;display:inline-flex}.english-sentence-swap{border:1px solid var(--hair-strong);width:20px;height:20px;color:var(--paper-dim);cursor:pointer;background:0 0;border-radius:999px;flex:none;justify-content:center;align-items:center;margin-top:.15em;font-size:12px;line-height:1;transition:color .15s,border-color .15s;display:flex}.english-sentence-swap:hover,.english-sentence-swap:focus-visible{color:var(--accent);border-color:var(--accent)}.review-card{min-height:calc(100dvh - 400px)}.review-card .slab-en{font-size:calc(var(--hanzi-font-size,40px) * .4)}.slab-prompt{color:var(--paper);font-size:24px}.review-card .slab-prompt{font-size:calc(var(--hanzi-font-size,40px) * .6)}.card-answer{border-top:1px solid var(--hair-strong);flex-direction:column;align-items:center;gap:12px;width:min(100%,620px);margin:6px auto 0;padding-top:20px;transition:opacity .15s;display:flex}.card-answer-hidden{opacity:0;pointer-events:none}.pronunciation-stack{flex-direction:column;align-items:center;gap:0;width:min(100%,720px);margin:0 auto;display:flex}.pronunciation-stack .slab-han{line-height:1.18}.pronunciation-stack .hz-char-pinned{margin-bottom:4px}.slab-han.has-tone-guide .hz-char{margin-bottom:88px}.tone-guide{pointer-events:none;-webkit-user-select:none;user-select:none;letter-spacing:normal;position:absolute;inset:0}.tone-guide svg{position:absolute;left:0;overflow:visible}.tone-guide-grid{stroke:var(--hair);stroke-width:1px;opacity:.28;vector-effect:non-scaling-stroke}.tone-guide-curve{fill:none;stroke:var(--accent-pale);stroke-width:2.8px;stroke-linecap:round;stroke-linejoin:round;opacity:.75;vector-effect:non-scaling-stroke;transition:opacity .12s,stroke .12s,stroke-width .12s}.tone-guide-syllable.active .tone-guide-curve{stroke:var(--accent);stroke-width:2.75px;opacity:1}.tone-guide-label,.tone-guide-number{font-family:var(--mono);text-anchor:middle;fill:var(--paper-dim)}.tone-guide-label{font-size:9px}.tone-guide-number{letter-spacing:.05em;text-transform:uppercase;fill:var(--paper-faint);font-size:8px}.tone-guide-syllable.active .tone-guide-label{fill:var(--paper)}.tone-guide-syllable.changed .tone-guide-number{fill:var(--gold)}.tone-guide-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2px;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 5px rgba(var(--accent-rgb), .85))}@media (prefers-reduced-motion:reduce){.tone-guide-dot{display:none}.tone-guide-curve{transition:none}}.shadow-controls{flex-direction:column;align-items:center;gap:10px;margin-top:6px;display:flex}.shadow-record{cursor:pointer;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-pale);background:rgba(var(--accent-rgb), .1);border:1px solid rgba(var(--accent-rgb), .4);border-radius:999px;justify-content:center;align-items:center;gap:9px;padding:12px 24px;font-size:13px;display:flex}.shadow-record:hover{background:rgba(var(--accent-rgb), .18)}.shadow-record:disabled{cursor:default;opacity:.75}.shadow-record-icon{color:var(--accent-pale);display:inline-flex}.shadow-listening{cursor:pointer;color:var(--ink);background:var(--accent);border:1px solid var(--accent);border-radius:999px;align-items:center;gap:10px;padding:12px 24px;display:flex}.shadow-listening:hover{background:var(--accent-pale)}.shadow-listening-static{cursor:default}.shadow-listening-static:hover{background:var(--accent)}.shadow-listening-label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;font-size:13px}.mic-level-bars{align-items:center;gap:3px;height:16px;display:flex}.mic-level-bars span{background:var(--ink);transform-origin:50%;border-radius:2px;width:3px;height:100%;transition:transform 70ms linear;display:block;transform:scaleY(.12)}.shadow-record.is-checking{align-items:center;gap:8px;display:flex}.shadow-spinner{border:2px solid rgba(var(--accent-rgb), .35);border-top-color:var(--accent-pale);border-radius:50%;width:12px;height:12px;animation:.7s linear infinite shadow-spin}@keyframes shadow-spin{to{transform:rotate(360deg)}}.shadow-playback-btn{cursor:pointer;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dim);background:var(--surface);border:1px solid var(--hair-strong);border-radius:999px;padding:6px 14px;font-size:11px}.shadow-playback-btn:hover{color:var(--paper);border-color:rgba(var(--accent-rgb), .4)}.shadow-mistakes{flex-direction:column;align-items:center;gap:16px;width:min(100%,480px);margin:0 auto;display:flex}.shadow-said-row{flex-direction:column;align-items:center;gap:4px;display:flex}.shadow-compare-label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);font-size:10px}.shadow-said-text{font-family:var(--han);color:var(--paper-dim);font-size:22px}.shadow-said-empty{font-family:var(--sans,inherit);font-size:15px;font-style:italic}.shadow-correction-card{background:#d4a24c12;border:1px solid #d4a24c4d;border-radius:10px;flex-direction:column;align-items:center;gap:14px;width:100%;padding:24px 20px;display:flex}.shadow-correction-card .shadow-compare-label{color:#d4a24c}.shadow-correction-hanzi{font-family:var(--han);color:var(--paper);text-align:center;font-size:32px;line-height:1.4}.shadow-correction-hanzi .hz-word-flagged .hz-char-glyph{color:var(--gold);text-shadow:0 0 18px #d4a24c80;font-weight:800;text-decoration:none}@media (prefers-reduced-motion:reduce){.shadow-spinner{border-top-color:rgba(var(--accent-rgb), .35);animation:none}.mic-level-bars span{transition:none}}.dictation-replay{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-pale);background:rgba(var(--accent-rgb), .1);border:1px solid rgba(var(--accent-rgb), .4);cursor:pointer;border-radius:999px;justify-content:center;align-self:center;align-items:center;gap:9px;padding:14px 26px;font-size:13px;display:flex}.audio-icon{color:inherit;display:inline-flex}.dictation-replay:hover{color:var(--paper);background:rgba(var(--accent-rgb), .2);box-shadow:0 0 26px rgba(var(--accent-rgb), .3)}.dictation-notice{z-index:80;background:var(--ink-2);border:1px solid color-mix(in srgb, var(--alarm-text) 40%, transparent);border-radius:6px;flex-direction:column;gap:18px;width:min(320px,100vw - 56px);padding:22px 24px;display:flex;position:fixed;top:50%;left:28px;transform:translateY(-50%);box-shadow:0 16px 40px #00000080}.dictation-notice p{color:var(--paper);margin:0;font-size:14px;line-height:1.5}.dictation-notice-acts{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.dictation-notice-acts button{min-height:44px}.dictation-acts{margin-top:18px}.dictation-skip{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint);border:1px solid var(--hair-strong);cursor:pointer;background:0 0;padding:11px 20px;font-size:11px}.dictation-skip:hover{color:var(--paper-dim);border-color:#e8ece961}.dictation-input-row{justify-content:center;gap:10px;margin-top:26px;display:flex}.dictation-input-wrap{background:var(--surface);border:1px solid var(--hair-strong);border-radius:4px;width:min(100%,420px);position:relative}.dictation-input-wrap:focus-within{border-color:rgba(var(--accent-rgb), .55)}.dictation-mirror{min-height:1.4em;font-family:var(--han);white-space:pre-wrap;word-break:break-word;pointer-events:none;padding:12px 16px;font-size:18px;line-height:1.4}.dictation-token{border-radius:3px}.dictation-token-match,.dictation-token-neutral{color:var(--paper)}.dictation-token-wrong,.dictation-token-extra{color:var(--alarm-text);background:color-mix(in srgb, var(--alarm-text) 18%, transparent);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--alarm-text) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--alarm-text) 60%, transparent)}.dictation-token-placeholder{color:var(--paper-faint);font-family:var(--mono);font-size:14px}.dictation-mirror.correct .dictation-token-match,.dictation-mirror.correct .dictation-token-neutral{color:var(--accent)}.dictation-input{box-sizing:border-box;width:100%;height:100%;font-family:var(--han);color:#0000;caret-color:var(--paper);background:0 0;border:none;border-radius:4px;padding:12px 16px;font-size:18px;line-height:1.4;position:absolute;inset:0}.dictation-input:focus{outline:none}.dictation-input:disabled{opacity:.6}.meter{background:var(--hair);height:1px;margin-top:26px;overflow:hidden}.meter-fill{background:linear-gradient(90deg, var(--accent-deep), var(--accent));height:100%;transition:width .34s}.acts{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:26px;display:flex}.acts button,.btn,button.key-act{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;border-radius:var(--radius-sm);cursor:pointer;background:var(--surface);color:var(--paper-dim);border:1px solid var(--hair-strong);padding:11px 20px;font-size:11px;transition:color .18s,border-color .18s,background .18s,box-shadow .18s}.acts button:hover,.btn:hover{color:var(--paper);background:var(--surface-up);border-color:#e8ece961}.acts button.replay-btn{border-radius:999px;flex:none;justify-content:center;align-self:center;align-items:center;width:40px;height:40px;padding:0;display:flex}.review-layout{grid-template-columns:minmax(0,1fr) 0;align-items:start;gap:0;transition:grid-template-columns .32s cubic-bezier(.4,0,.2,1),gap .32s;display:grid}.review-layout.sidebar-open{grid-template-columns:minmax(0,1fr) 320px;gap:28px}.review-main{min-width:0}.lesson-practice.review-practice{width:100%}.review-sidebar{border:1px solid var(--hair);border-radius:var(--radius-lg);background:var(--ink-2);min-width:0;min-height:calc(100dvh - 271px);max-height:calc(100dvh - 271px);padding:20px;overflow:hidden auto}.review-sidebar-toggle{width:auto;height:28px;color:var(--paper-dim);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;margin:0 0 8px;padding:0;transition:color .18s;display:flex}.review-sidebar-toggle:hover{color:var(--accent-pale)}.review-word-empty{color:var(--paper-faint);margin:0;font-size:13px;line-height:1.6}.review-word-hanzi{font-family:var(--han);color:var(--paper);margin-bottom:6px;font-size:40px;line-height:1.2}.review-word-gloss{color:var(--paper-dim);margin:0 0 14px;font-size:15px}.review-word-tags{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.review-word-pos{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);font-size:10px}.review-word-hsk{font-family:var(--mono);letter-spacing:.08em;color:var(--hsk-color,var(--accent-pale));border:1px solid color-mix(in srgb, var(--hsk-color,var(--accent)) 55%, transparent);background:color-mix(in srgb, var(--hsk-color,var(--accent)) 14%, transparent);border-radius:999px;padding:3px 9px;font-size:10px}.review-word-pinyin{font-family:var(--mono);color:var(--accent-pale);letter-spacing:.02em;margin:0 0 8px;font-size:13px}.review-word-senses{color:var(--paper-dim);margin:0 0 14px;padding-left:18px;font-size:15px;line-height:1.5}.review-word-senses li{margin-bottom:2px}.review-word-section{margin-top:20px}.review-word-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-faint);margin:0 0 8px;font-size:10px;font-weight:400}.review-word-chars{margin:0;padding:0;list-style:none}.review-word-chars li{border-top:1px solid var(--hair);align-items:baseline;gap:10px;padding:6px 0;display:flex}.review-word-chars li:first-child{border-top:none}.review-word-char{font-family:var(--han);color:var(--paper);flex:none;min-width:24px;font-size:20px}.review-word-char-text{flex-direction:column;gap:1px;min-width:0;display:flex}.review-word-char-pinyin{font-family:var(--mono);color:var(--paper-faint);font-size:11px}.review-word-char-meaning{color:var(--paper-dim);font-size:13px;line-height:1.5}.review-word-examples{margin:0;padding:0;list-style:none}.review-word-examples li+li{margin-top:6px}.review-word-examples button{text-align:left;border:1px solid var(--hair);cursor:pointer;background:0 0;border-radius:10px;flex-direction:column;gap:3px;width:100%;padding:9px 10px;transition:border-color .18s,background .18s;display:flex}.review-word-examples button:hover{border-color:color-mix(in srgb, var(--accent) 45%, transparent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.review-word-example-hanzi{font-family:var(--han);color:var(--paper);font-size:17px}.review-word-example-pinyin{font-family:var(--mono);color:var(--paper-faint);font-size:11px}.review-word-example-english{color:var(--paper-dim);font-size:13px;line-height:1.45}.review-word-loading{color:var(--paper-faint);margin:16px 0 0;font-size:13px}button.key-act{color:var(--ink);background:var(--accent);border-color:var(--accent);font-weight:500}button.key-act:hover{background:color-mix(in srgb, var(--accent) 82%, white 18%);border-color:color-mix(in srgb, var(--accent) 82%, white 18%);box-shadow:0 0 16px rgba(var(--accent-rgb), .22)}button.key-act:disabled{color:var(--paper-faint);background:var(--surface);border-color:var(--hair-strong);cursor:not-allowed;box-shadow:none}.acts button.q1{color:#ffb5a4;background:#3a201c;border-color:#7d4034}.acts button.q2{color:#f0c87a;background:#382c14;border-color:#7a5c22}.acts button.q3{color:#7fe8c0;background:#143329;border-color:#256b52}.acts button.q4{color:#8ae6ff;background:#12303b;border-color:#24647d}.acts button.q1:hover{color:#ffd2c6;background:#522c26;border-color:#a85543}.acts button.q2:hover{color:#ffdc9b;background:#4d3d1c;border-color:#a67c2e}.acts button.q3:hover{color:#a8f0d3;background:#1c4838;border-color:#35916f}.acts button.q4:hover{color:#b3efff;background:#194354;border-color:#3288a8}html[data-color-scheme=beige] .lattice-node--learning .lattice-node-shape,html[data-color-scheme=beige] .lattice-node--fading .lattice-node-shape{color:var(--paper)}html[data-color-scheme=beige] .acts button.q1{color:#7a1f16;background:#f7ddd6;border-color:#d99b8c}html[data-color-scheme=beige] .acts button.q2{color:#6b4a10;background:#f7ecd4;border-color:#d9bb7f}html[data-color-scheme=beige] .acts button.q3{color:#145c3f;background:#dcf2e7;border-color:#86c9ad}html[data-color-scheme=beige] .acts button.q4{color:#14536b;background:#dbeef7;border-color:#85c2d9}.acts button.q1,.acts button.q2,.acts button.q3,.acts button.q4{flex-direction:column;align-items:center;gap:5px;display:flex}.grade-interval{letter-spacing:.1em;opacity:.62;text-transform:none;font-size:9px}.grade-icon{letter-spacing:0;font-size:15px;line-height:1}.acts.grade-acts{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.acts.grade-acts>button{padding:14px 8px}.acts.grade-acts.pass-fail-acts{grid-template-columns:repeat(2,minmax(0,1fr));width:min(100%,620px);margin-inline:auto}.sentence-audio-btn{cursor:pointer;width:30px;height:30px;color:var(--paper-dim);background:rgba(var(--accent-rgb), .1);border:1px solid var(--hair-strong);border-radius:50%;flex:none;justify-content:center;align-items:center;margin-top:2px;font-size:13px;display:flex}.sentence-audio-btn:hover{color:var(--paper);background:rgba(var(--accent-rgb), .24)}.glossary{width:min(100%,1100px);min-width:0;margin:56px auto 0}.glossary>h2{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper);border:0;margin:0 0 16px;padding:0;font-size:18px;font-weight:500}.glossary-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.gloss{cursor:pointer;text-align:left;color:var(--paper);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong);border:none;border-radius:10px;flex-direction:column;align-items:flex-start;gap:8px;padding:16px 16px 14px;font-family:inherit;transition:background .2s,box-shadow .2s;display:flex}.gloss:hover{background:var(--surface-up);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb), .5)}.gloss:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gloss:disabled{cursor:default}.gloss:disabled:hover{background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong)}.gloss.revealed{background:var(--sheet);box-shadow:inset 0 0 0 1.5px rgba(var(--accent-rgb), .55), var(--sheet-lift)}.gloss-han{font-family:var(--han);font-size:26px;font-weight:600;line-height:1.2}.gloss-content{width:100%;min-height:38px;display:grid}.gloss-details,.gloss-placeholder{grid-area:1/1;transition:opacity .42s,transform .42s}.gloss:not(.revealed) .gloss-details{opacity:0;pointer-events:none;transform:translateY(3px)}.gloss.revealed .gloss-placeholder{opacity:0;transform:translateY(-3px)}.gloss-py{font-family:var(--mono);color:var(--accent-pale);font-size:12px}.gloss-en{font-family:var(--display);color:var(--paper-dim);margin-top:2px;font-size:13px;line-height:1.35}.gloss-placeholder{font-family:var(--display);color:var(--paper-faint);align-self:start;font-size:13px}.gloss:disabled .gloss-placeholder{opacity:.7}.rank-panel{border:1px solid var(--hair);border-radius:var(--radius-lg);border-left:2px solid rgba(var(--accent-rgb), .7);background:linear-gradient(100deg, rgba(var(--accent-rgb), .08), transparent 48%), var(--surface);grid-template-columns:minmax(150px,.4fr) minmax(0,1fr);align-items:center;gap:34px 20px;margin:0;padding:15px 20px;display:grid}.rank-level-test-btn{white-space:nowrap;grid-column:1/-1;justify-self:start}.rank-panel h2{color:var(--accent-pale);border:0;margin:0 0 5px;padding:0}.rank-panel .rank-name{font-size:21px}.rank-progress{min-width:0}.rank-progress-trigger{cursor:pointer;text-align:left;width:100%;color:inherit;background:0 0;border:none;margin:0;padding:0;font-family:inherit;display:block}.rank-progress-trigger:hover .rank-next{color:var(--accent-pale)}.rank-progress-trigger .rank-next{transition:color .18s}.rank-progress-label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dim);flex-wrap:wrap;justify-content:space-between;gap:4px 20px;font-size:12px;display:flex}.rank-panel .rank-track{margin:10px 0 7px}.rank-panel .rank-next{text-align:right}.rank-name{letter-spacing:-.01em;margin-top:2px;font-size:19px;font-weight:500}.rank-note{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--paper-dim);margin-top:2px;font-size:12px}.rank-track{background:var(--hair);height:3px;margin:12px 0 6px}.rank-bar{background:linear-gradient(90deg, var(--accent-deep), var(--accent));height:100%;transition:width .6s cubic-bezier(.2,.8,.3,1)}.rank-next{font-family:var(--mono);letter-spacing:.05em;color:var(--paper-dim);text-transform:uppercase;font-size:12px}.theme-list{flex-direction:column;display:flex}.theme-opt{border:none;border-bottom:1px solid var(--hair);width:100%;color:var(--paper-dim);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:11px;padding:8px 4px;font-family:inherit;transition:color .2s,background .2s,padding-left .2s;display:flex}.theme-opt:hover{background:rgba(var(--accent-rgb), .1);color:var(--paper);padding-left:9px}.theme-opt.on{color:var(--paper)}.theme-opt.on .theme-name{color:var(--accent)}.theme-preview{flex:none;width:26px;height:26px;display:block}.theme-text{flex-direction:column;flex:1;min-width:0;display:flex}.theme-name{font-size:12.5px}.theme-blurb{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-faint);font-size:9px}.tiny{margin-top:10px;font-size:10.5px}.tiny code{font-family:var(--mono);color:var(--paper-dim)}#settings-view{--set-ease-out:cubic-bezier(.23, 1, .32, 1);width:100%;max-width:760px;margin-inline:auto}#settings-view .btn{min-height:36px;font-family:var(--display);letter-spacing:0;text-transform:none;transition:color .18s ease, border-color .18s ease, background-color .18s ease, box-shadow .18s ease, transform .16s var(--set-ease-out);padding:0 14px;font-size:14px;font-weight:500}#settings-view .btn:active:not(:disabled){transform:scale(.97)}.settings-top{flex-direction:column;align-items:flex-start;gap:16px;margin-bottom:44px;display:flex}.settings-top h1{font-family:var(--display);letter-spacing:-.02em;margin:0;font-size:34px;font-weight:600}.settings-top .lede{max-width:none;color:var(--paper-dim);margin:6px 0 0;font-size:16px;line-height:1.5}.set-groups{flex-direction:column;gap:64px;display:flex}.set-group{flex-direction:column;min-width:0;display:flex}#settings-view .set-group-title{font-family:var(--display);letter-spacing:-.015em;text-transform:none;color:var(--paper);border:0;margin:0 0 6px;padding:0;font-size:22px;font-weight:600;line-height:1.2}.set-group-intro{max-width:60ch;color:var(--paper-dim);text-wrap:pretty;margin:0 0 16px;font-size:15px;line-height:1.55}.set-group>.set-list{margin-top:12px}.set-group-intro+.set-list{margin-top:0}.set-list{border-top:1px solid var(--hair)}.set-row{border-bottom:1px solid var(--hair);justify-content:space-between;align-items:center;gap:24px;padding:16px 0 18px;display:flex}.set-row-text{flex-direction:column;gap:4px;min-width:0;max-width:300px;display:flex}.set-row--inline .set-row-text{max-width:60ch}.set-row-title{color:var(--paper);margin:0;font-size:16px;font-weight:500}.set-row-desc{color:var(--paper-dim);text-wrap:pretty;font-size:14px;line-height:1.5}.set-row-readout{font-family:var(--mono);color:var(--accent);font-variant-numeric:tabular-nums;font-size:12px}.set-row-control{flex:0 auto;justify-content:flex-end;min-width:0;display:flex}#settings-view .set-subheading{font-family:var(--display);letter-spacing:.04em;text-transform:none;color:var(--paper-dim);border:0;margin:32px 0 8px;padding:0;font-size:13px;font-weight:500}#settings-view .set-subheading:first-child{margin-top:4px}.set-stats{border-block:1px solid var(--hair);grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin:16px 0 0;padding:20px 0;display:grid}.set-stats>div{flex-direction:column-reverse;justify-content:flex-end;gap:6px;display:flex}.set-stats dt{color:var(--paper-dim);font-size:14px}.set-stats dd{font-family:var(--mono);letter-spacing:-.02em;color:var(--paper);font-variant-numeric:tabular-nums;margin:0;font-size:28px;line-height:1.1}.set-stats dd em{letter-spacing:0;color:var(--paper-faint);font-size:14px;font-style:normal}.set-stats-minor{flex-wrap:wrap;gap:8px 28px;margin:14px 0 0;display:flex}.set-stats-minor>div{flex-direction:row-reverse;justify-content:flex-end;align-items:baseline;gap:8px;display:flex}.set-stats-minor dt{color:var(--paper-dim);font-size:14px}.set-stats-minor dd{font-family:var(--mono);color:var(--paper);font-variant-numeric:tabular-nums;margin:0;font-size:16px}.set-footnote{color:var(--paper-dim);margin:8px 0 0;font-size:13px;line-height:1.5}.set-segmented{border:1px solid var(--hair-strong);border-radius:9px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.set-segmented button{min-height:36px;color:var(--paper-dim);font:500 14px/1 var(--display);cursor:pointer;transition:background-color .15s ease, color .15s ease, transform .16s var(--set-ease-out);background:0 0;border:0;border-radius:6px;padding:0 14px}@media (hover:hover) and (pointer:fine){.set-segmented button:hover{color:var(--paper);background:var(--surface-up)}}.set-segmented button:active{transform:scale(.97)}.set-segmented button[aria-pressed=true]{color:var(--ink);background:var(--accent);font-weight:600}.set-segmented button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.set-chips{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:min(100%,360px);display:grid}.set-chips button{border:1px solid var(--hair-strong);min-height:36px;color:var(--paper-dim);font:400 14px/1 var(--display);cursor:pointer;transition:color .15s ease, border-color .15s ease, background-color .15s ease, transform .16s var(--set-ease-out);background:0 0;border-radius:8px;padding:0 12px}@media (hover:hover) and (pointer:fine){.set-chips button:hover{color:var(--paper);border-color:color-mix(in srgb, var(--paper) 45%, transparent)}}.set-chips button:active{transform:scale(.97)}.set-chips button[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:rgba(var(--accent-rgb), .08);font-weight:600}.set-chips button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.set-switch{border:1px solid color-mix(in srgb, var(--paper) 55%, transparent);cursor:pointer;width:44px;height:24px;transition:background-color .15s ease, border-color .15s ease, transform .16s var(--set-ease-out);background:0 0;border-radius:12px;flex:none;padding:0;position:relative}.set-switch:active{transform:scale(.96)}.set-switch-knob{background:var(--paper-dim);width:18px;height:18px;transition:transform .2s var(--set-ease-out), background-color .15s ease;border-radius:50%;position:absolute;top:2px;left:2px}.set-switch[aria-checked=true]{border-color:var(--accent);background:var(--accent)}.set-switch[aria-checked=true] .set-switch-knob{background:var(--ink);transform:translate(20px)}.set-switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (pointer:coarse){.set-switch:after{content:"";position:absolute;inset:-10px}}@media (prefers-reduced-motion:reduce){.set-switch,.set-switch-knob,.set-segmented button,.set-chips button,.setting-slider-thumb,#settings-view .btn{transition-property:background-color,border-color,color,box-shadow}.set-switch:active,.set-segmented button:active,.set-chips button:active,.setting-slider-thumb:active,#settings-view .btn:active{transform:none}}.set-slider{flex:0 0 min(440px,58%);align-items:center;gap:16px;display:flex}.set-row:has(>.set-slider)>.set-row-text{flex:1 1 0}.set-advanced{border:1px solid var(--hair);border-radius:10px}.set-advanced>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:44px;padding:20px 22px;list-style:none;display:flex}.set-advanced>summary::-webkit-details-marker{display:none}.set-advanced>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:10px}.set-advanced-title{color:var(--paper);font-size:17px;font-weight:600;display:block}.set-advanced-note{color:var(--paper-dim);margin-top:4px;font-size:14px;line-height:1.5;display:block}.set-advanced-chevron{color:var(--accent);transition:transform .2s var(--set-ease-out);font-size:22px;line-height:1}.set-advanced[open] .set-advanced-chevron{transform:rotate(90deg)}.set-advanced-body{padding:0 22px 22px}.set-advanced[open] .set-advanced-body{animation:set-advanced-in .2s var(--set-ease-out) both}@keyframes set-advanced-in{0%{opacity:0;transform:translateY(-6px)}}@keyframes set-advanced-fade{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.set-advanced-chevron{transition:none}}.set-danger{border-top:1px solid #e08b7a59;flex-direction:column;gap:16px;padding-top:24px;display:flex}.set-danger>.set-row{border:0;padding:0}#settings-view .set-danger-title{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper);border:0;padding:0;font-size:16px}@media (width<=680px){.settings-top h1{font-size:28px}.set-row:not(.set-row--inline){flex-direction:column;align-items:stretch;gap:12px}.set-row-text{max-width:none}.set-row-control,.set-chips{justify-content:flex-start;max-width:none}.set-slider{flex:none;width:100%}.set-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.set-stats dd{font-size:24px}.set-advanced>summary{padding:18px 16px}.set-advanced-body{padding:0 16px 16px}}.option-value{font-family:var(--mono);color:var(--paper-faint);font-variant-numeric:tabular-nums;flex:none;font-size:11px}.theme-opt.on .option-value{color:var(--accent)}.fsrs-controls{border:1px solid var(--hair);background:#ffffff04;gap:18px;margin-top:22px;padding:18px;display:grid}.fsrs-control{gap:7px;display:grid}.fsrs-control-heading{color:var(--paper-dim);justify-content:space-between;gap:20px;font-size:12.5px;display:flex}.fsrs-control-heading output{font-family:var(--mono);color:var(--accent);font-variant-numeric:tabular-nums;font-size:11px}.setting-slider{touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;flex:1;align-items:center;min-width:0;height:28px;display:flex;position:relative}.setting-slider-track{background:color-mix(in srgb, var(--paper) 55%, transparent);flex:1;height:2px;position:relative}.setting-slider-range{background:0 0;height:100%;position:absolute}.setting-slider-thumb{background:var(--accent);width:18px;height:18px;box-shadow:0 0 10px rgba(var(--accent-rgb), .55);cursor:grab;transition:transform .16s var(--set-ease-out), box-shadow .15s ease;border-radius:50%;display:block}@media (hover:hover) and (pointer:fine){.setting-slider-thumb:hover{box-shadow:0 0 14px rgba(var(--accent-rgb), .7)}}.setting-slider-thumb:active{cursor:grabbing;box-shadow:0 0 16px rgba(var(--accent-rgb), .75);transform:scale(1.12)}.setting-slider-thumb:focus-visible{outline:2px solid var(--paper);outline-offset:3px}.setting-slider-input{box-sizing:border-box;border:1px solid var(--hair-strong);background:rgba(var(--ink-rgb), .6);width:112px;min-height:36px;font-family:var(--mono);color:var(--paper-dim);cursor:text;border-radius:8px;flex:none;justify-content:flex-end;align-items:center;gap:6px;padding:0 10px;font-size:13px;transition:border-color .15s,box-shadow .15s;display:inline-flex}.setting-slider-input:focus-within{border-color:rgba(var(--accent-rgb), .7);box-shadow:0 0 0 2px rgba(var(--accent-rgb), .18)}.setting-slider-input input{width:5ch;color:var(--paper);font:inherit;font-variant-numeric:tabular-nums;text-align:right;appearance:textfield;background:0 0;border:0;outline:none;padding:0}.setting-slider-input input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.setting-slider-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}@media (pointer:coarse){.setting-slider-thumb{width:24px;height:24px}.setting-slider-input{min-height:44px}}.reset-confirm{background:#e08b7a0f;border:1px solid #e08b7a73;border-radius:8px;margin-top:4px;padding:16px 18px}.reset-confirm p{color:var(--paper-dim);margin:0 0 12px;font-size:14px;line-height:1.55}.reset-confirm .reset-confirm-title{color:var(--paper);margin-bottom:6px;font-size:16px;font-weight:600}.reset-confirm-actions{flex-wrap:wrap;gap:10px;display:flex}.reset-confirm{transition:opacity .2s var(--set-ease-out), transform .2s var(--set-ease-out)}@starting-style{.reset-confirm{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion:reduce){.set-advanced[open] .set-advanced-body{animation-name:set-advanced-fade}.reset-confirm{transition-property:opacity;transform:none}}#settings-view .btn.danger-btn{color:color-mix(in srgb, #e08b7a 40%, var(--paper))}#settings-view .btn.danger-btn.danger-btn-solid{color:#2a1210;background:#e08b7a;border-color:#e08b7a}#settings-view .btn.danger-btn.danger-btn-solid:hover{color:#2a1210;background:#eba497;border-color:#eba497}@media (width<=680px),(pointer:coarse){.setting-slider-input{font-size:16px}}.theme-opt.fsrs-toggle{border-top:1px solid var(--hair);padding:12px 4px 4px}.new-card-dialog-backdrop{z-index:200;background:rgba(var(--ink-rgb), .94);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.beta-feedback-backdrop{z-index:200;background:rgba(var(--ink-rgb), .94);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.beta-feedback-dialog{border:1px solid var(--hair-strong);border-radius:var(--radius-lg);background:var(--ink-2);width:min(100%,560px);padding:28px;box-shadow:0 24px 70px #0009}.beta-feedback-head{justify-content:space-between;gap:20px;margin-bottom:22px;display:flex}.beta-feedback-head .slab-tag{margin:0 0 8px}.beta-feedback-head h2{color:var(--paper);text-transform:none;margin:0;font-size:26px}.beta-feedback-close{color:var(--paper-dim);cursor:pointer;background:0 0;border:0;font-size:28px}.beta-feedback-dialog form{gap:18px;display:grid}.beta-feedback-dialog label{color:var(--paper-dim);gap:7px;font-size:14px;display:grid}.beta-feedback-dialog select,.beta-feedback-dialog textarea{border:1px solid var(--hair-strong);background:var(--ink);width:100%;color:var(--paper);font:16px/1.5 var(--display);border-radius:8px}.beta-feedback-dialog select{min-height:44px;padding:8px 10px}.beta-feedback-dialog textarea{resize:vertical;padding:10px 12px}.beta-feedback-dialog :is(select,textarea):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.beta-feedback-actions{justify-content:flex-end;gap:10px;display:flex}.beta-feedback-submit{color:var(--ink);background:var(--accent);border-color:var(--accent)}.beta-feedback-error{color:var(--alarm-text);margin:0;font-size:13px}.beta-feedback-success p{color:var(--paper-dim)}.session-feedback-flag{z-index:160;right:max(18px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));border:1px solid color-mix(in srgb, var(--alarm-text) 55%, transparent);background:color-mix(in srgb, var(--alarm-text) 14%, var(--ink-2));min-height:42px;color:var(--alarm-text);font:500 13px/1.2 var(--display);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:9px 13px;display:inline-flex;position:fixed;box-shadow:0 8px 26px #0000005c}.session-feedback-flag:hover{background:color-mix(in srgb, var(--alarm-text) 22%, var(--ink-2));border-color:var(--alarm-text)}.session-feedback-flag svg{width:18px;height:18px}.session-feedback-flag:focus-visible{outline:2px solid var(--alarm-text);outline-offset:3px}.new-card-dialog{background:linear-gradient(180deg, rgba(var(--accent-rgb), .08), rgba(var(--accent-rgb), .01) 55%), var(--ink-2);border:1px solid var(--hair-strong);border-top-color:rgba(var(--accent-rgb), .55);border-radius:var(--radius-lg);width:min(100%,510px);padding:28px;box-shadow:0 24px 70px #0009}.new-card-dialog form{display:contents}.new-card-dialog .slab-tag{margin-bottom:10px}.new-card-dialog .new-card-dialog-title{font-family:var(--display);letter-spacing:-.01em;text-transform:none;text-wrap:balance;color:var(--paper);border:0;margin:0 0 18px;padding:0;font-size:clamp(22px,3.2vw,28px);font-weight:600;line-height:1.2}.new-card-dialog p{color:var(--paper-dim);margin:0 0 13px;line-height:1.65}.new-card-meter{background:var(--surface-up);border-radius:3px;height:6px;overflow:hidden}.new-card-meter span{border-radius:inherit;background:var(--accent);height:100%;display:block}.new-card-dialog .new-card-meter-label{font-family:var(--mono);letter-spacing:.06em;color:var(--paper-faint);margin:10px 0 20px;font-size:11px}.new-card-amount{gap:7px;margin:20px 0;display:grid}.new-card-amount span{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint);font-size:9.5px}.new-card-amount input{width:100%;min-height:48px;font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--paper);background:var(--ink);border:1px solid var(--hair-strong);appearance:textfield;border-radius:10px;outline:none;padding:0 14px;font-size:16px}.new-card-amount input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.new-card-amount input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.new-card-amount input:focus{border-color:rgba(var(--accent-rgb), .6);box-shadow:0 0 0 3px rgba(var(--accent-rgb), .16)}.new-card-dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.new-card-dialog-actions button{min-height:48px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;padding:0 24px;font-size:15px}.progress-detail-backdrop{z-index:200;background:rgba(var(--ink-rgb), .94);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.progress-detail{background:var(--ink-2);border:1px solid var(--hair-strong);font-variant-numeric:tabular-nums;scrollbar-width:thin;scrollbar-color:var(--hair-strong) transparent;scrollbar-gutter:stable;border-radius:12px;width:min(100%,760px);max-height:min(90vh,860px);padding:32px;overflow-y:auto;box-shadow:0 0 0 1px #0000001f,0 2px 4px #0000001f,0 24px 64px -12px #0000008c}.progress-detail::-webkit-scrollbar{width:12px}.progress-detail::-webkit-scrollbar-track{background:0 0;margin:12px 0}.progress-detail::-webkit-scrollbar-thumb{background:var(--hair-strong);background-clip:padding-box;border:4px solid #0000;border-radius:999px}.progress-detail::-webkit-scrollbar-thumb:hover{background-color:var(--paper-faint)}.progress-detail .progress-detail-close{border-radius:6px}.progress-stats-kpis,.progress-stats-card,.progress-stats-tooltip{border-radius:8px}.progress-detail-next{background:var(--surface);border:1px solid var(--hair);width:100%;font:inherit;color:var(--paper);text-align:left;cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding:16px;transition:border-color .15s,background .15s;display:flex}.progress-detail-next:hover{border-color:var(--hair-strong);background:var(--surface-up)}.progress-detail-next:focus-visible{outline:2px solid rgba(var(--accent-rgb), .6);outline-offset:2px}.progress-detail-next-text{gap:2px;font-size:14px;font-weight:500;display:grid}.progress-detail-next-label{color:var(--paper-faint);font-size:12px;font-weight:400}.progress-detail-next-arrow{border:1px solid var(--hair-strong);border-radius:999px;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:16px;transition:transform .15s,border-color .15s;display:grid}.progress-detail-next:hover .progress-detail-next-arrow{border-color:rgba(var(--accent-rgb), .6);transform:translate(3px)}@media (prefers-reduced-motion:reduce){.progress-detail-next:hover .progress-detail-next-arrow{transform:none}}.progress-detail .progress-detail-back{border-radius:6px}.progress-detail-group{border-bottom:1px solid var(--hair);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);justify-content:space-between;align-items:baseline;gap:12px;margin:16px 0 4px;padding-bottom:8px;font-size:11px;list-style:none;display:flex}.progress-detail-group:first-child{margin-top:0}.progress-detail-group span:first-child{color:var(--paper);font-weight:600}.progress-detail-word-grid>.progress-detail-group{grid-column:1/-1}.progress-detail-card-actions{border-top:1px solid var(--hair);justify-items:center;gap:12px;padding-top:16px;display:grid}.progress-detail-card-actions p{color:var(--paper-dim);margin:0;font-size:13px}.progress-detail-card-actions-row{gap:8px;display:flex}.progress-detail-danger{cursor:pointer;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--tone-4);border:1px solid color-mix(in srgb, var(--tone-4) 45%, transparent);background:0 0;border-radius:6px;align-items:center;gap:8px;padding:8px 14px;font-size:11px;transition:background .15s,border-color .15s;display:inline-flex}.progress-detail-danger:hover{background:color-mix(in srgb, var(--tone-4) 12%, transparent);border-color:var(--tone-4)}.progress-detail-danger:focus-visible{outline:2px solid var(--tone-4);outline-offset:2px}.progress-detail-danger svg{width:14px;height:14px}.deck-detail-search{color:var(--paper-faint);gap:6px;margin:16px 0 12px;font-size:12px;display:grid}.deck-detail-search input{width:100%;font:inherit;color:var(--paper);background:var(--surface);border:1px solid var(--hair);border-radius:8px;padding:10px 12px;font-size:14px}.deck-detail-search input:focus-visible{outline:2px solid rgba(var(--accent-rgb), .6);outline-offset:2px;border-color:var(--hair-strong)}@media (width<=640px){.progress-detail{max-height:92vh;padding:20px 16px}}.progress-stats{margin-top:24px}.progress-stats-title{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);margin:0 0 12px;font-size:11px;font-weight:500}.progress-detail>.progress-stats-title,.progress-stats+.progress-stats-title{margin-top:32px}.progress-stats-kpis{border:1px solid var(--hair);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 16px;display:grid}.progress-stats-kpis>div{min-width:0;padding:14px 16px}.progress-stats-kpis>div+div{border-left:1px solid var(--hair)}.progress-stats-kpis dt{color:var(--paper-faint);font-size:12px}.progress-stats-kpis dd{color:var(--paper);letter-spacing:-.01em;margin:4px 0 0;font-size:24px;font-weight:600;line-height:1.2}.progress-stats-kpis>div:first-child dd{color:var(--accent-pale)}.progress-stats-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px;display:grid}.progress-stats-card{border:1px solid var(--hair);background:var(--surface);min-width:0;margin:0;padding:16px}.progress-stats-card figcaption{color:var(--paper);margin-bottom:12px;font-size:13px;font-weight:500}.progress-stats-donut{aspect-ratio:1;width:100%;max-width:180px;margin:0 auto 16px;position:relative}.progress-stats-donut-center{text-align:center;pointer-events:none;place-content:center;display:grid;position:absolute;inset:0}.progress-stats-donut-center strong{color:var(--paper);font-size:22px;font-weight:600}.progress-stats-donut-center span{color:var(--paper-faint);font-size:11px}.progress-stats-legend{gap:8px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.progress-stats-legend li{color:var(--paper-dim);align-items:center;gap:8px;display:flex}.progress-stats-legend i{border-radius:50%;flex-shrink:0;width:8px;height:8px}.progress-stats-num{font-family:var(--mono);color:var(--paper);margin-left:auto}.progress-stats-line{width:100%;height:232px}.progress-stats-empty{min-height:180px;color:var(--paper-faint);text-align:center;place-items:center;margin:0;font-size:13px;display:grid}.progress-stats-tooltip{background:var(--ink-3);border:1px solid var(--hair-strong);gap:2px;padding:8px 10px;font-size:12px;display:grid;box-shadow:0 8px 24px #00000059}.progress-stats-tooltip span{color:var(--paper-faint)}.progress-stats-tooltip strong{color:var(--paper);font-weight:600}.progress-stats .recharts-surface:focus{outline:none}.progress-detail-skeleton{gap:12px;margin-top:24px;display:grid}.progress-detail-skeleton span{background:var(--surface-up);height:72px;animation:1.4s ease-in-out infinite progress-skeleton;display:block}.progress-detail-skeleton span:nth-child(2){height:240px}@keyframes progress-skeleton{50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.progress-detail-skeleton span{animation:none}}@media (width<=640px){.progress-stats-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-stats-kpis>div:nth-child(3){border-left:0}.progress-stats-kpis>div:nth-child(n+3){border-top:1px solid var(--hair)}.progress-stats-grid{grid-template-columns:1fr}}.progress-detail-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.progress-detail-head h2{color:var(--paper);margin:0}.progress-detail-close,button.progress-detail-close{width:32px;height:32px;color:var(--paper-dim);border:1px solid var(--hair-strong);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:1;transition:color .18s,border-color .18s;display:flex}.progress-detail-close:hover{color:var(--paper);border-color:rgba(var(--accent-rgb), .5)}.progress-detail-words{color:var(--paper-dim);margin:18px 0 6px;font-size:16px}.progress-detail-words strong{color:var(--accent-pale);font-size:22px;font-weight:700}.progress-detail-legend{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--paper-faint);gap:16px;margin:4px 0 22px;font-size:11px;display:flex}.progress-detail-legend span{align-items:center;gap:6px;display:flex}.progress-detail-swatch{background:var(--hair-strong);border-radius:1px;width:9px;height:9px;display:inline-block}.progress-detail-swatch.mastered{background:var(--accent)}.progress-detail-swatch.learning{background:var(--level-learning)}.progress-detail-bars{gap:10px;display:grid}.progress-detail-row-label{color:var(--paper);justify-content:space-between;gap:12px;margin-bottom:7px;font-size:14px;display:flex}.progress-detail-row-label span:last-child{font-family:var(--mono);color:var(--paper-dim);font-size:12px}.progress-detail-bar-track{background:var(--hair);border-radius:999px;height:8px;display:flex;overflow:hidden}.progress-detail-bar-seg{height:100%;transition:width .5s cubic-bezier(.2,.8,.3,1)}.progress-detail-bar-seg.mastered{background:linear-gradient(90deg, var(--accent-deep), var(--accent))}.progress-detail-bar-seg.learning{background:var(--level-learning)}.progress-detail-row-note{font-family:var(--mono);color:var(--paper-faint);margin-top:6px;font-size:11.5px}button.progress-detail-row{text-align:left;background:var(--surface);border:1px solid var(--hair);cursor:pointer;width:100%;font:inherit;color:inherit;border-radius:8px;padding:16px;transition:border-color .15s,background .15s;display:block}button.progress-detail-row:hover{border-color:var(--hair-strong);background:var(--surface-up)}button.progress-detail-row:focus-visible{outline:2px solid rgba(var(--accent-rgb), .6);outline-offset:2px}.progress-detail-back{margin:18px 0 14px}.progress-detail-status{color:var(--paper-dim);margin:14px 0;font-size:13px}.progress-detail-error{color:#ff9b86}.progress-detail-sentences{gap:6px;margin:0;padding:0;list-style:none;display:grid}.progress-detail-sentence{text-align:left;border:1px solid var(--hair);cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;gap:3px;padding:9px 12px;transition:border-color .18s,background .18s;display:grid}.progress-detail-sentence:hover,.progress-detail-sentence:focus-visible{border-color:rgba(var(--accent-rgb), .45);background:rgba(var(--accent-rgb), .06)}.progress-detail-sentences li{content-visibility:auto;contain-intrinsic-size:auto 58px}.progress-detail-more{width:100%;margin-top:10px;display:block}.progress-detail-sentence-han{color:var(--paper);font-size:17px}.progress-detail-sentence-en{color:var(--paper-faint);font-size:12.5px}.progress-detail-views{gap:8px;margin:0 0 14px;display:flex}.progress-detail-view{border:1px solid var(--hair-strong);color:var(--paper-dim);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;padding:6px 12px;font-size:10.5px;transition:color .18s,border-color .18s,background .18s}.progress-detail-view:hover,.progress-detail-view:focus-visible{color:var(--paper);border-color:rgba(var(--accent-rgb), .4)}.progress-detail-view.on{color:var(--accent-pale);border-color:rgba(var(--accent-rgb), .5);background:rgba(var(--accent-rgb), .09)}.progress-detail-word-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.progress-detail-word-grid li{content-visibility:auto;contain-intrinsic-size:auto 82px}.progress-detail-word{text-align:left;border:1px solid var(--hair);cursor:pointer;width:100%;height:100%;font:inherit;color:inherit;background:0 0;align-content:start;gap:2px;padding:9px 10px;transition:border-color .18s,background .18s;display:grid}.progress-detail-word:hover,.progress-detail-word:focus-visible{border-color:rgba(var(--accent-rgb), .45);background:rgba(var(--accent-rgb), .06)}.progress-detail-word-han{color:var(--paper);font-size:17px}.progress-detail-word-pinyin{font-family:var(--mono);letter-spacing:.04em;color:var(--accent-pale);font-size:11px}.progress-detail-word-gloss{color:var(--paper-faint);font-size:12px}.progress-detail-card{border:1px solid var(--hair);background:var(--surface);text-align:center;border-radius:12px;gap:24px;padding:16px 16px 32px;display:grid}.progress-detail-card-chrome{text-align:left;justify-content:space-between;align-items:center;gap:12px;display:flex}.progress-detail-card-chrome .review-card-meta{min-width:0}.progress-detail-card-body{justify-items:center;gap:16px;padding:0 8px;display:grid}.progress-detail-card-body .slab-han{justify-self:stretch}.progress-detail-card .hz-word{vertical-align:top}.progress-detail-card .card-audio-btn{border-color:var(--hair);background:0 0}.progress-detail-card .card-audio-btn:hover{background:var(--surface-up);border-color:var(--hair-strong)}.progress-detail-card .card-audio-btn:focus-visible{outline:2px solid rgba(var(--accent-rgb), .6);outline-offset:2px}.progress-detail-bar-seg.placed,.progress-detail-swatch.placed{background:var(--placed)}.admin-panel-layer{z-index:240;pointer-events:none;position:fixed;inset:0}.admin-panel{pointer-events:auto;background:linear-gradient(145deg, rgba(var(--accent-rgb),.055), #080c0f1f 58%), rgba(var(--ink-rgb),.96);-webkit-backdrop-filter:blur(14px)saturate(.65);backdrop-filter:blur(14px)saturate(.65);border:1px solid var(--hair-strong);border-top-color:#e08b7ab8;width:min(100% - 40px,560px);max-height:calc(100dvh - 104px);padding:22px;position:absolute;top:84px;right:20px;overflow-y:auto;box-shadow:0 24px 70px #000000c7,inset 0 1px #ffffff06}.admin-panel-head{cursor:move;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:flex-start;gap:20px;margin:-22px -22px 0;padding:22px 22px 14px;display:flex}.admin-panel-kicker,.admin-command-group h3,.admin-panel-shortcut{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em}.admin-panel-kicker{color:#e08b7a;margin-bottom:7px;font-size:9px}.admin-panel h2{color:var(--paper);margin:0}.admin-panel-close{width:34px;height:34px;color:var(--paper-dim);border:1px solid var(--hair-strong);cursor:pointer;background:0 0;flex:none;padding:0;font-size:22px;line-height:1}.admin-panel-close:hover{color:var(--paper);border-color:rgba(var(--accent-rgb),.55)}.admin-panel-status{color:var(--paper-dim);background:var(--ink-2);border:1px solid var(--hair);font-family:var(--mono);letter-spacing:.08em;flex-wrap:wrap;gap:7px 18px;margin-top:20px;padding:12px 14px;font-size:10px;display:flex}.admin-panel-warning{color:#e08b7a;margin:9px 0 0;font-size:11px}.admin-command-group{margin-top:24px}.admin-command-group h3{color:var(--paper-faint);margin:0 0 10px;font-size:9px;font-weight:500}.admin-command-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.admin-command-grid-four{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-command-grid button{min-height:40px;color:var(--paper-dim);background:var(--ink-2);border:1px solid var(--hair-strong);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;padding:10px 12px;font-size:10px}.admin-command-grid button:hover:not(:disabled){color:var(--paper);border-color:rgba(var(--accent-rgb),.55)}.admin-command-grid button:disabled{opacity:.36;cursor:not-allowed}.admin-command-grid .admin-run{color:var(--accent);border-color:rgba(var(--accent-rgb),.45)}.admin-command-grid .admin-stop,.admin-command-grid .admin-danger{color:#e08b7a;border-color:#e08b7a80}.admin-command-group p{color:var(--paper-faint);margin:10px 0 0;font-size:12px;line-height:1.55}.admin-panel-shortcut{color:var(--paper-faint);border-top:1px solid var(--hair);text-align:right;margin-top:24px;padding-top:14px;font-size:9px}.test-lab{background:var(--ink-2);border:1px solid var(--hair-strong);border-top-color:#e08b7ab8;width:min(100%,760px);margin:32px auto 96px;padding:26px}.test-lab-head{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.test-lab-head h1{color:var(--paper);margin:0;font-size:26px}.test-lab-head p{max-width:52ch;color:var(--paper-dim);margin:10px 0 0;font-size:13px;line-height:1.55}.test-lab-head .btn{flex:none}.test-lab-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.test-lab-fields{grid-template-columns:1fr 2fr 110px;gap:9px;margin-bottom:9px;display:grid}.test-lab-field{gap:6px;min-width:0;display:grid}.test-lab-field span{color:var(--paper-faint);font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;font-size:9px}.test-lab-field select,.test-lab-field input{width:100%;min-height:40px;color:var(--paper);background:var(--ink);border:1px solid var(--hair-strong);font:inherit;padding:8px 10px;font-size:13px}.test-lab-field select:disabled,.test-lab-field input:disabled{opacity:.4;cursor:not-allowed}.test-lab-field select:focus-visible,.test-lab-field input:focus-visible{border-color:rgba(var(--accent-rgb),.6);outline:none}.test-lab-pick-bar{gap:9px;margin-bottom:9px;display:flex}.test-lab-search{min-width:0;min-height:40px;color:var(--paper);background:var(--ink);border:1px solid var(--hair-strong);font:inherit;flex:1;padding:8px 10px;font-size:13px}.test-lab-search:focus-visible{border-color:rgba(var(--accent-rgb),.6);outline:none}.test-lab-pick-list{background:var(--ink);border:1px solid var(--hair);max-height:340px;margin:0;padding:0;list-style:none;overflow-y:auto}.test-lab-pick-list li+li{border-top:1px solid var(--hair)}.test-lab-pick-list label{cursor:pointer;grid-template-columns:auto 1fr;align-items:baseline;gap:2px 12px;padding:10px 12px;display:grid}.test-lab-pick-list label:hover{background:var(--surface-up)}.test-lab-pick-list input{accent-color:var(--accent);grid-row:span 3}.test-lab-pick-han{color:var(--paper);font-size:16px}.test-lab-pick-en{color:var(--paper-dim);font-size:13px}.test-lab-pick-word{color:var(--paper-faint);font-family:var(--mono);letter-spacing:.04em;font-size:10px}.test-lab-pick-empty{color:var(--paper-faint);padding:14px 12px;font-size:13px}.test-lab-foot{border-top:1px solid var(--hair);justify-content:space-between;align-items:center;gap:16px;margin-top:28px;padding-top:18px;display:flex}.test-lab-summary{color:var(--paper-dim);font-family:var(--mono);letter-spacing:.06em;font-size:11px}.test-lab-start{color:var(--accent);border-color:rgba(var(--accent-rgb),.45)}.test-lab-start:disabled{opacity:.4;cursor:not-allowed}.test-mode-banner{z-index:230;color:#e08b7a;background:rgba(var(--ink-rgb),.94);max-width:calc(100% - 32px);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid #e08b7a8c;align-items:center;gap:10px;padding:7px 8px 7px 14px;font-size:10px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 12px 40px #00000073}.test-mode-banner span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.test-mode-banner button{min-height:32px;color:var(--paper-dim);background:var(--ink-2);border:1px solid var(--hair-strong);font:inherit;letter-spacing:inherit;text-transform:inherit;white-space:nowrap;cursor:pointer;padding:6px 10px}.test-mode-banner button:hover{color:var(--paper);border-color:rgba(var(--accent-rgb),.55)}@media (width<=600px){.test-lab{margin:16px 0 96px;padding:18px}.test-lab-head{flex-direction:column}.test-lab-fields{grid-template-columns:1fr}.admin-command-grid.test-lab-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.test-lab-foot{flex-direction:column;align-items:stretch}.test-mode-banner{bottom:12px}}.danger-btn{color:#e08b7a;border-color:#e08b7a73}.danger-btn:hover{color:#f0a696;background:#e08b7a12;border-color:#e08b7abf}.celebrate{justify-content:center;margin:4px 0 10px;display:flex}.celebrate svg{overflow:visible}.celebrate.pulse svg{animation:1.5s cubic-bezier(.2,.8,.3,1) restore}@keyframes restore{0%{opacity:.25;filter:brightness(.5);transform:scale(.72)}45%{opacity:1;filter:brightness(1.9);transform:scale(1.14)}to{opacity:1;filter:brightness();transform:scale(1)}}@media (prefers-reduced-motion:reduce){.celebrate.pulse svg{animation:none}.gloss-details,.gloss-placeholder{transition:none}}.slab.restored{border-top-color:rgba(var(--accent-rgb), .55);background:radial-gradient(120% 90% at 50% 0%, rgba(var(--accent-rgb), .13), transparent 62%), #ffffff04}.restore-line{font-family:var(--mono);justify-content:center;align-items:baseline;gap:12px;margin-top:4px;font-size:13px;display:flex}.restore-was{color:var(--paper-faint);text-decoration:line-through}.restore-arrow{color:var(--paper-faint)}.restore-now{color:var(--accent);text-shadow:0 0 22px rgba(var(--accent-rgb), .55);font-size:17px}.rank-up{background:linear-gradient(#d4a24c17,#0000);border:1px solid #d4a24c59;justify-content:center;align-items:center;gap:14px;margin-top:20px;padding:14px;display:flex}.rank-up-tag{font-family:var(--mono);letter-spacing:.26em;text-transform:uppercase;color:var(--gold);font-size:9px}.rank-up-name{font-size:19px}.rank-up-note{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);font-size:9.5px}.key-glyph{width:30px;height:30px;display:block}.node{cursor:pointer}.node-progress-label{font-family:var(--mono);letter-spacing:.04em;text-anchor:middle;fill:var(--accent-pale);opacity:0;stroke:var(--ink);stroke-width:4px;paint-order:stroke;pointer-events:none;font-size:10.5px;transition:opacity .18s}.node:hover .node-progress-label,.node:focus-visible .node-progress-label{opacity:1}.node-label{font-family:var(--display);letter-spacing:0;text-anchor:middle;fill:var(--paper-dim);opacity:.9;pointer-events:none;font-size:13.25px;font-weight:500;transition:fill .3s,opacity .3s}.node-label.lit{fill:var(--paper);opacity:1}.node:hover .node-label,.node:focus-visible .node-label{fill:var(--accent-pale);opacity:1}.node-body{transform-box:fill-box;transform-origin:50%;transition:transform .32s cubic-bezier(.2,.8,.3,1)}.node:hover .node-body,.node:focus-visible .node-body{transform:scale(1.07)}.node:focus-visible{outline:none}@keyframes gem-spin{to{transform:rotate(360deg)}}.gem-spin{animation:80s linear infinite gem-spin}@keyframes gem-shine{0%,to{opacity:.1}50%{opacity:.9}}.gem-shine{transform-box:fill-box;transform-origin:50%;animation:4s ease-in-out infinite gem-shine}@keyframes star-spin{to{transform:rotate(360deg)}}.star-spin{transform-box:fill-box;transform-origin:50%;animation:46s linear infinite star-spin}.orbit-spin{animation:30s linear infinite star-spin}@keyframes gem-tumble{0%,to{transform:perspective(900px)rotateY(0)rotateX(0)}25%{transform:perspective(900px)rotateY(24deg)rotateX(-5deg)}75%{transform:perspective(900px)rotateY(-24deg)rotateX(5deg)}}.node:hover .gem-hover,.node:focus-visible .gem-hover{animation:1.6s ease-in-out gem-tumble}@keyframes highlight-sweep{0%,to{opacity:.7;transform:translate(0)scale(1)}25%{opacity:1;transform:translate(7px)scale(1.15)}75%{opacity:.55;transform:translate(-7px)scale(.9)}}.gem-highlight{transform-box:fill-box;transform-origin:50%}.node:hover .gem-highlight,.node:focus-visible .gem-highlight{animation:1.6s ease-in-out highlight-sweep}@keyframes wire-surge{to{stroke-dashoffset:-20px}}.wire-surge{animation:1.4s linear infinite wire-surge}@keyframes twinkle{0%,to{opacity:.55;transform:scale(.86)}50%{opacity:1;transform:scale(1.1)}}.twinkle{transform-box:fill-box;transform-origin:50%;animation:3.2s ease-in-out infinite twinkle}@keyframes flower-sway{0%,to{transform:rotate(-2.6deg)}50%{transform:rotate(2.8deg)}}.flower-sway{animation:5s ease-in-out infinite flower-sway}@keyframes leaf-flutter{0%,to{transform:rotate(-5deg)}50%{transform:rotate(6deg)}}.leaf-flutter{animation:3.4s ease-in-out infinite leaf-flutter}@keyframes window-flicker{0%,2%,to{opacity:.88}3%,6%{opacity:.14}7%,41%{opacity:.82}42%,44%{opacity:.1}45%,74%{opacity:.9}75%,77%{opacity:.3}78%{opacity:.9}}.window-flicker{animation:7s linear infinite window-flicker}@keyframes beacon-blink{0%,88%,to{opacity:.2}90%,94%{opacity:1}92%{opacity:.35}}.beacon-blink{animation:3.2s ease-in-out infinite beacon-blink}@media (prefers-reduced-motion:reduce){.gem-spin,.gem-shine,.star-spin,.orbit-spin,.twinkle,.flower-sway,.leaf-flutter,.window-flicker,.beacon-blink,.wire-surge,.node:hover .gem-hover,.node:focus-visible .gem-hover,.node:hover .gem-highlight,.node:focus-visible .gem-highlight{animation:none}}button:focus-visible{outline:1px solid var(--accent-pale);outline-offset:3px}@media (width<=1120px){.learning-home-top{grid-template-columns:repeat(2,minmax(0,1fr))}.home-practice{grid-column:1/-1}.home-practice-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.learning-web-overview{grid-template-columns:minmax(240px,.5fr) minmax(440px,1fr)}.rail{max-height:none;padding:20px;position:static;overflow:visible}#web{height:clamp(340px,100dvh - 460px,480px)}}@media (width<=780px){.learning-home-top{grid-template-columns:1fr}.home-practice{grid-column:auto}.home-practice-actions{grid-template-columns:1fr}.continue-card{flex-direction:column;align-items:flex-start}.continue-button{width:100%}.continue-practice-actions{flex-basis:auto;width:100%}.learning-web-overview{grid-template-columns:1fr}.stage-head{padding:0}}@media (width<=680px){.rank-panel{grid-template-columns:1fr;gap:18px;padding:17px 18px}.rank-panel .rank-next{text-align:left}}@media (width<=600px){.admin-panel{width:calc(100% - 20px);max-height:calc(100dvh - 80px);padding:20px;top:70px;right:10px}.admin-panel-head{margin:-20px -20px 0;padding:20px 20px 14px}.admin-command-grid-four{grid-template-columns:repeat(2,minmax(0,1fr))}.masthead{padding:16px 20px 14px}main{padding:22px 18px 34px}.web-wrap{margin-right:-18px;padding-right:18px;overflow-x:auto}#web{width:760px;height:430px}}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;min-width:0}body,#root{min-width:0}#root{min-height:100%}button,summary{touch-action:manipulation}input,textarea,select{max-width:100%}.lesson-top-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.mobile-session-action,.mobile-session-tools{display:none}.slab-han,.slab-en,.slab-prompt,.freetalk-prompt-text,.freetalk-transcript,.freetalk-card-text,.theme-name,.theme-blurb,.rail-note,.sync-warning{overflow-wrap:anywhere}.freetalk-transcript,.freetalk-fix-text{min-width:0}.review-card>.slab-tag{text-align:center;width:calc(100% - 32px);max-width:34rem;line-height:1.45}.new-card-dialog-backdrop,.progress-detail-backdrop{overscroll-behavior:contain;padding-top:max(20px, env(safe-area-inset-top));padding-right:max(20px, env(safe-area-inset-right));padding-bottom:max(20px, env(safe-area-inset-bottom));padding-left:max(20px, env(safe-area-inset-left));overflow-y:auto}.new-card-dialog,.progress-detail{max-height:calc(100dvh - 40px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overscroll-behavior:contain;overflow-y:auto}.progress-detail-legend{flex-wrap:wrap}@media (hover:none),(pointer:coarse){.hz-word:hover>.hz-word-tip,.hz-char:hover>.hz-pinyin-tip{opacity:0;visibility:hidden}}@media (pointer:coarse){.chrono button,.web-fullscreen-toggle,.web-zoom-controls button:not(.web-zoom-reset),.web-zoom-reset,.pinyin-toggle,.tone-guide-inline-toggle,.hanzi-size-controls button,.audio-repeat-control summary,.audio-repeat-presets button,.audio-repeat-menu form button,.profile-avatar,.profile-menu-panel :is(button,a),.sentence-audio-btn,.freetalk-card-accept,.freetalk-card-reject,.progress-detail-close,.admin-panel-close{min-width:44px;min-height:44px}}@media (width<=780px){.masthead{padding-right:max(20px, env(safe-area-inset-right));padding-left:max(20px, env(safe-area-inset-left));gap:14px}.chrono{flex-wrap:nowrap;gap:6px;margin-left:auto}main{padding-right:max(20px, env(safe-area-inset-right));padding-bottom:max(34px, env(safe-area-inset-bottom));padding-left:max(20px, env(safe-area-inset-left));gap:22px}.mobile-session-action{display:inline-flex}.mobile-session-tools{justify-content:center;margin-top:16px;display:flex}.continue-card{gap:18px;padding:18px}.continue-practice-actions{flex-basis:auto}.key{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;display:grid}.lesson-top{margin-bottom:24px}.lesson-practice{width:100%}.glossary{margin-top:44px}.new-card-dialog,.progress-detail{width:min(100%,560px)}}@media (width<=600px){.masthead{padding-top:max(12px, env(safe-area-inset-top));padding-right:max(12px, env(safe-area-inset-right));padding-bottom:12px;padding-left:max(12px, env(safe-area-inset-left));flex-wrap:nowrap;gap:10px}.mark{gap:8px;min-width:0}.chrono button{min-height:44px}.chrono button.icon-btn{width:44px;height:44px}.profile-avatar{width:40px;height:40px;font-size:14px}main,main.learning-home-mode{padding-top:18px;padding-right:max(16px, env(safe-area-inset-right));padding-bottom:max(30px, env(safe-area-inset-bottom));padding-left:max(16px, env(safe-area-inset-left))}main.auth-shell{padding-top:max(20px, env(safe-area-inset-top));padding-right:max(14px, env(safe-area-inset-right));padding-bottom:max(20px, env(safe-area-inset-bottom));padding-left:max(14px, env(safe-area-inset-left))}.auth-panel{padding:24px 18px}.auth-brand{margin-bottom:24px}.auth-copy{margin:22px 0 18px}.auth-tabs button,.auth-submit{min-height:44px}.auth-form input{min-height:46px;font-size:16px}.learning-home-top{gap:14px}.continue-card{align-items:stretch}.continue-card h1{font-size:clamp(23px,7vw,28px)}.continue-button,.continue-secondary-button{width:100%;min-height:48px}.home-practice{padding:15px}.home-practice-actions button{min-height:54px}.rank-level-test-btn{width:100%;min-height:46px}.rank-progress-trigger{min-height:54px;padding:4px 0}.primary-map{margin-top:14px}.web-wrap{margin-right:0;padding-right:8px;overflow:visible}.web-stage,.crystal-web-layer{width:100%}#web{touch-action:pan-y;width:100%;height:clamp(280px,52svh,390px)}.web-fullscreen-toggle{width:44px;height:44px;top:8px;right:8px}.web-zoom-controls{padding:2px}.web-zoom-controls button:not(.web-zoom-reset){width:44px;height:44px}.web-zoom-reset{min-width:56px;min-height:44px}.web-portal-fab{width:48px;height:48px}.key{padding:10px 12px 12px}.key-item{letter-spacing:.08em;font-size:10.5px}.lesson-top{flex-direction:column;align-items:stretch;gap:14px;padding-bottom:15px}.review-layout,.review-layout.sidebar-open{grid-template-columns:minmax(0,1fr);gap:0}.review-sidebar{display:none}.lesson-top-actions{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.lesson-top-actions>:only-child{grid-column:1/-1}.lesson-top-actions .btn{min-height:44px;padding-inline:12px}.slab{min-height:200px;padding:34px 18px}.review-card{gap:13px;min-height:280px;padding:20px 16px 22px}.review-card>.slab-tag{display:none}.card-aid-controls,.hanzi-size-controls{flex-wrap:wrap;justify-content:center;align-self:stretch;position:static}.lesson-practice>.card-aid-bar{flex-wrap:wrap;justify-content:center;gap:10px}.lesson-practice>.card-aid-bar>.translation-edit-toggle{margin-left:0}.review-card>.card-chrome{flex-wrap:wrap;gap:8px}.card-meter{flex:60px;width:auto}.pinyin-toggle,.tone-guide-inline-toggle,.hanzi-size-controls button,.audio-repeat-control summary{min-width:0;min-height:30px}.pinyin-toggle,.tone-guide-inline-toggle{gap:6px;font-size:8.5px}.switch-track{width:30px;height:16px}.switch-thumb{width:10px;height:10px}.on>.switch-track>.switch-thumb{transform:translateY(-50%)translate(14px)}.hanzi-size-controls button{width:30px;height:30px;font-size:13px}.audio-repeat-control summary{width:34px;font-size:9.5px}.card-aid-controls{gap:5px}.audio-repeat-menu{width:min(220px,100vw - 48px);top:calc(100% + 8px);bottom:auto;left:50%;transform:translate(-50%)}.audio-repeat-presets button,.audio-repeat-menu form button{min-height:44px}.audio-repeat-menu input{min-height:44px;font-size:16px}.slab-han{font-size:min(var(--hanzi-font-size,40px), 14vw)}.slab-han .hz-pinyin-pinned{font-size:min(calc(var(--hanzi-font-size,40px) * .275), 4vw)}.review-card .slab-en,.review-card .slab-prompt{font-size:min(var(--hanzi-font-size,40px), 11vw);overflow-wrap:anywhere;line-height:1.25}.review-card>.pronunciation-stack,.review-card>.slab-prompt,.review-card>.card-answer{flex-direction:column;justify-content:center;align-items:center;display:flex}.review-card>.pronunciation-stack,.review-card>.slab-prompt{flex:.85 auto;justify-content:flex-start;padding-top:4px}.review-card>.card-answer{flex:1.15 auto;gap:8px;padding-top:14px;padding-bottom:2px}.hz-word-tip,.hz-char-tip{white-space:normal;width:max-content;max-width:min(210px,100vw - 48px);line-height:1.35}.hz-word-tip-pos,.hz-word-tip-hsk,.hz-char-tip-word,.hz-char-tip-meaning{white-space:normal}.pronunciation-stack{margin-top:28px}.acts{gap:8px;margin-top:20px}.acts button,.btn,button.key-act{min-height:44px;padding:11px 14px}.acts>button{flex:120px}.lesson-practice .acts{z-index:40;padding:10px 0 max(10px, env(safe-area-inset-bottom));background:linear-gradient(to bottom, rgba(var(--ink-rgb), 0) 0%, rgba(var(--ink-rgb), .92) 22%, rgba(var(--ink-rgb), .98) 100%);margin-top:14px;position:sticky;bottom:0}.lesson-practice .acts>button{flex:1 1 0;min-width:0;padding-inline:6px}.acts button.q1,.acts button.q2,.acts button.q3,.acts button.q4{font-size:11px}.acts.grade-acts{gap:6px}.acts.grade-acts>button{padding:10px 4px}.grade-interval{letter-spacing:0;font-size:8.5px}.grade-icon{font-size:13px}.review-card{justify-content:center;min-height:68dvh;padding-top:14px}.review-card .pronunciation-stack{flex:auto;justify-content:center}.lesson-top{gap:8px;margin-bottom:10px;padding-bottom:10px}.lesson-top .lesson-sub{display:none}.lesson-top h1{font-size:clamp(19px,5.4vw,23px)}.lesson-top-actions .btn{min-height:36px;font-size:10px}.mobile-session-tools .btn{width:100%;min-height:44px}.meter{margin-top:20px}.glossary{margin-top:34px}.gloss{padding:14px}.dictation-input-row{flex-direction:column;align-items:stretch;margin-top:20px}.dictation-input-wrap{width:100%;min-height:50px}.dictation-input-row>.key-act{width:100%}.dictation-notice{top:auto;right:max(14px, env(safe-area-inset-right));bottom:max(14px, env(safe-area-inset-bottom));left:max(14px, env(safe-area-inset-left));width:auto;max-height:calc(100dvh - 28px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow-y:auto;transform:none}.shadow-encouragement-bubble{white-space:normal;text-align:center;width:min(240px,100vw - 48px);margin:0;animation:1.6s forwards shadow-encouragement-fade;top:calc(100% + 10px);left:50%;right:auto;transform:translate(-50%)}.shadow-encouragement-bubble:after{border-color:transparent transparent var(--surface-up);inset:auto auto 100% 50%;transform:translate(-50%)}.shadow-correction-card{padding:20px 14px}.shadow-correction-hanzi{font-size:clamp(24px,9vw,32px)}.shadow-record,.shadow-listening{min-height:48px;padding-inline:18px}.shadow-playback-btn{min-height:44px}.sentence-audio-btn{min-width:44px;min-height:44px}.settings-top{align-items:flex-start;margin-bottom:22px}.theme-opt{min-height:48px;padding-block:10px}.ledger>div{gap:12px}.ledger dt{overflow-wrap:anywhere;min-width:0}.ledger dd{text-align:right;flex:none}.volume-row{gap:10px}.new-card-dialog-backdrop,.progress-detail-backdrop{place-items:center;padding:12px}.new-card-dialog,.progress-detail{max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:21px 18px}.new-card-dialog-actions{grid-template-columns:1fr;display:grid}.new-card-dialog-actions button{width:100%;min-height:44px}.new-card-amount input{min-height:46px;font-size:16px}.progress-detail-close{width:44px;height:44px}.progress-detail-legend{gap:8px 14px}.progress-detail-row-label{align-items:flex-start}.admin-panel-layer{pointer-events:auto;background:rgba(var(--ink-rgb), .55)}.admin-panel{top:max(10px, env(safe-area-inset-top));bottom:max(10px, env(safe-area-inset-bottom));max-height:none}.admin-panel-head{cursor:default;touch-action:pan-y}.admin-command-grid button{min-height:44px}.admin-panel-shortcut{display:none}.completion-stamp{padding:6px 10px;font-size:20px;top:12px;right:12px}.rank-up{flex-wrap:wrap}}@media (width<=420px){.fullscreen-toggle{display:none!important}.chrono{gap:4px}.auth-panel{border-left:0;border-right:0}.key{grid-template-columns:1fr}.rank-panel{padding:15px}.level-test-option{min-height:48px}.progress-detail-row-label{flex-direction:column;gap:2px}.progress-detail-row-label span:last-child{text-align:left}.admin-command-grid{grid-template-columns:1fr}.admin-command-grid-four{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=350px){.auth-brand .wordmark,.logo-fu{display:none}.logo-badge-flip{width:38px;height:38px}.grade-icon{display:none}.slab{padding-inline:14px}}@media (height<=520px) and (orientation:landscape){.masthead{padding-top:8px;padding-bottom:8px}main{padding-top:14px}.lesson-top{margin-bottom:16px}#web{height:min(250px,58dvh)}.new-card-dialog,.progress-detail{max-height:calc(100dvh - 16px);padding-block:16px}.dictation-notice{top:8px;bottom:8px}}.primary-map--lattice{box-shadow:none;background:0 0;border:none;overflow:visible}.lattice-root{flex-direction:column;gap:10px;display:flex}.lattice-hint{color:var(--paper-faint);margin:0;padding:0 6px;font-size:13px}.lattice-canvas{background:var(--ink);touch-action:pan-y;border-radius:22px;width:100%;position:relative;overflow:hidden}.lattice-edges{width:100%;height:100%;position:absolute;inset:0}.lattice-edge{stroke-linecap:round}.lattice-edge--faint{stroke:var(--paper-faint);opacity:.2;stroke-dasharray:2 9}.lattice-edge--solid{stroke:var(--paper-faint);opacity:.4}.lattice-edge--bright{stroke:var(--accent);opacity:.85}.lattice-edge--long{opacity:.13}.lattice-edge--bright.lattice-edge--long{opacity:.5}.lattice-canvas{background:var(--ink)}.lattice-node{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;width:84px;min-width:44px;min-height:44px;padding:0;display:flex;position:absolute;transform:translate(-50%,-50%)}.lattice-node-shape{width:68px;height:68px;font-family:var(--han);justify-content:center;align-items:center;font-weight:700;line-height:1;display:flex;position:relative}.lattice-node--new .lattice-node-shape:before,.lattice-node--learning .lattice-node-shape:before,.lattice-node--fading .lattice-node-shape:before{content:"";clip-path:inherit;position:absolute}.lattice-node--new .lattice-node-shape{clip-path:polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0% 50%);background:var(--paper-faint);width:64px;height:62px;color:var(--paper-faint);opacity:.55}.lattice-node--new .lattice-node-shape:before{background:var(--ink);inset:1.5px}.lattice-node--thick.lattice-node--new .lattice-node-shape:before{inset:2.5px}.lattice-node--learning .lattice-node-shape,.lattice-node--fading .lattice-node-shape{clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);background:var(--accent);width:66px;height:82px;color:var(--ink)}.lattice-node--learning .lattice-node-shape:before,.lattice-node--fading .lattice-node-shape:before{background:var(--lattice-young);inset:2.5px}.lattice-node--thick.lattice-node--learning .lattice-node-shape:before,.lattice-node--thick.lattice-node--fading .lattice-node-shape:before{inset:4px}.lattice-node--fading .lattice-node-shape{opacity:.72}.lattice-node--mature .lattice-node-shape{background:var(--accent);border:3.5px solid var(--accent-deep);box-shadow:0 0 0 1px rgba(var(--accent-rgb), .9), 0 0 14px rgba(var(--accent-rgb), .3);color:var(--ink);border-radius:50%;font-weight:900}.lattice-node--thick.lattice-node--mature .lattice-node-shape{border-width:4.5px}.lattice-node--mature .lattice-word{font-weight:900}.lattice-node--new .lattice-node-label{color:var(--paper-faint);opacity:.7}.lattice-node-halo{border:1.5px solid rgba(var(--accent-rgb), .6);pointer-events:none;border-radius:50%;width:82px;height:82px;position:absolute;top:-7px;left:50%;transform:translate(-50%)}.lattice-node--thick .lattice-node-halo{border-width:2.5px}.lattice-word{justify-content:center;align-items:center;transition:opacity .7s ease-in-out,font-size .7s ease-in-out;display:flex;position:absolute;inset:0}.lattice-node-label{color:var(--paper-dim);text-align:center;overflow-wrap:anywhere;max-width:84px;font-size:10.5px;line-height:1.2}.lattice-summary{color:var(--paper-faint);margin:0;padding:0 6px;font-size:13px}.lattice-preview-overlay{z-index:60;background:rgba(var(--ink-rgb), .62);padding:max(24px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lattice-preview-card{background:var(--ink-2);border:1px solid var(--hair-strong);border-radius:16px;width:min(320px,100%);padding:20px}.lattice-preview-card h3{font-family:var(--display);margin:0 0 4px}.lattice-preview-subtitle{color:var(--paper-faint);margin:0 0 14px;font-size:13px}.lattice-preview-card dl{grid-template-columns:1fr 1fr;gap:10px 12px;margin:0 0 18px;display:grid}.lattice-preview-card dl div{flex-direction:column;gap:2px;display:flex}.lattice-preview-card dt{text-transform:uppercase;letter-spacing:.04em;color:var(--paper-faint);margin:0;font-size:11px}.lattice-preview-card dd{color:var(--paper);margin:0;font-size:16px}.home-actions{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.home-actions-row{flex-wrap:wrap;gap:6px;display:flex}.home-action{min-height:44px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dim);background:var(--surface);border:1px solid var(--hair);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:10px;flex:auto;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:11px;transition:opacity .18s,border-color .18s,color .18s,background .18s;display:inline-flex;position:relative}.home-action--dim{opacity:.55}.home-action--open{color:var(--paper);border-color:var(--hair-strong);background:var(--surface-up)}.home-action--glow{color:var(--accent);border-color:rgba(var(--accent-rgb), .55);background:rgba(var(--accent-rgb), .1);box-shadow:0 0 0 1px rgba(var(--accent-rgb), .18), 0 0 16px rgba(var(--accent-rgb), .22);animation:2.6s ease-in-out infinite homeActionPulse}@keyframes homeActionPulse{0%,to{box-shadow:0 0 0 1px rgba(var(--accent-rgb), .18), 0 0 14px rgba(var(--accent-rgb), .18)}50%{box-shadow:0 0 0 1px rgba(var(--accent-rgb), .3), 0 0 22px rgba(var(--accent-rgb), .34)}}@media (prefers-reduced-motion:reduce){.home-action--glow{animation:none}}.home-action-badge{background:rgba(var(--accent-rgb), .22);min-width:18px;color:var(--accent);letter-spacing:.02em;border-radius:9px;padding:1px 5px;font-size:10px}.home-action-panel{border:1px solid var(--hair);background:var(--surface);border-radius:12px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.home-action-detail{color:var(--paper-dim);margin:0;font-size:13px;line-height:1.45}.home-action-panel .key-act{min-height:44px}.lattice-relic{pointer-events:none;justify-content:center;align-items:center;gap:10px;padding:0 18px;display:flex;position:absolute;left:0;right:0}.lattice-relic:before,.lattice-relic:after{content:"";background:linear-gradient(90deg, transparent, var(--relic-color));opacity:.5;flex:auto;height:1px}.lattice-relic:after{background:linear-gradient(90deg, var(--relic-color), transparent)}.lattice-relic-gem{background:var(--relic-color);width:16px;height:16px;box-shadow:0 0 12px var(--relic-color), 0 0 0 4px #00000040;border-radius:3px;flex:none;transform:rotate(45deg)}.lattice-relic-label{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--relic-color);text-shadow:0 0 14px var(--relic-color);flex:none;font-size:11px}.hz-word>.hz-word-tip.is-open{opacity:1;visibility:visible}.hz-word:has(.hz-char-active)>.hz-word-tip.is-open{opacity:0;visibility:hidden}html[data-color-scheme=beige] .home-action--glow{color:var(--ink);background:var(--accent);border-color:var(--accent-deep);box-shadow:0 1px 2px rgba(var(--accent-rgb), .3);animation:2.6s ease-in-out infinite homeActionPulseLight}html[data-color-scheme=beige] .home-action--glow .home-action-badge{color:var(--ink);background:#ffffff42}@keyframes homeActionPulseLight{0%,to{box-shadow:0 1px 2px rgba(var(--accent-rgb), .3)}50%{box-shadow:0 2px 12px rgba(var(--accent-rgb), .45)}}@media (prefers-reduced-motion:reduce){html[data-color-scheme=beige] .home-action--glow{animation:none}}.completion-mark{width:104px;height:104px;font-family:var(--han);margin:4px auto 0;font-weight:900;position:relative}.completion-mark .lattice-node-shape{border-width:5px;width:104px;height:104px}.completion-mark .lattice-word{opacity:1;font-size:42px;transition:none}.completion-mark .lattice-node-halo{border-width:2px;width:auto;height:auto;inset:-14px;transform:none}.review-top{margin-inline:auto;-webkit-user-select:none;user-select:none;border-bottom:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;width:min(100%,1100px);margin-bottom:22px;padding-bottom:0;display:grid}.review-top>.btn{justify-self:start}.review-top>.lesson-top-actions{grid-column:3;justify-self:end}.review-top .btn{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-dim);background:0 0;border-color:#0000;padding:8px 12px;font-size:14px}.review-top .btn:hover{color:var(--paper);background:var(--surface-up);border-color:#0000}.review-progress{font-family:var(--mono);color:var(--paper-faint);font-variant-numeric:tabular-nums;grid-column:2;align-items:center;gap:14px;font-size:12px;display:flex}.review-progress>.review-card-position:first-child{color:var(--paper-dim)}.review-progress>.card-meter{width:220px;height:2px}.lesson-practice.review-practice{-webkit-user-select:none;user-select:none;width:min(100%,1100px);margin-inline:auto}.lesson-practice.review-practice .slab-han{-webkit-user-select:text;user-select:text}.lesson-practice.review-practice .slab-han :is(.hz-word-tip,.hz-pinyin-tip){-webkit-user-select:none;user-select:none}.lesson-practice.review-practice .slab-han:active .hz-word-tip{visibility:hidden}.lesson-practice.review-practice .slab-han ::selection{color:var(--gold);background:0 0}:root[data-color-scheme=beige] .lesson-practice.review-practice .slab-han ::selection{color:var(--accent)}.masthead{-webkit-user-select:none;user-select:none}.review-practice .review-card{background:var(--sheet);min-height:max(440px,100dvh - 330px);box-shadow:inset 0 1px 0 var(--sheet-edge), inset 0 0 0 1px var(--sheet-edge), var(--sheet-shadow);border:none;border-radius:14px;grid-template-columns:minmax(0,1fr);grid-template-areas:"editor""prompt""answer";align-content:center;justify-items:center;gap:0;padding-top:88px;padding-bottom:44px;display:grid}.review-practice .review-card>.translation-editor{grid-area:editor;margin-bottom:14px}.review-practice .review-card>.pronunciation-stack,.review-practice .review-card>.slab-prompt{grid-area:prompt}.review-practice .review-card>.card-answer,.review-practice .review-card>.card-foot{grid-area:answer}.review-practice .review-card>.card-answer{margin-top:10px}.review-practice .pronunciation-stack,.review-practice .card-answer{width:100%}.review-practice .review-card:before{content:"";border-radius:inherit;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}html[data-color-scheme=beige] .review-practice .review-card:before{opacity:.09;mix-blend-mode:multiply}.review-practice .review-card>.card-chrome{top:20px;left:26px;right:22px}.review-card-badge{flex:none;width:30px;height:30px}.review-practice .review-card-meta{gap:12px}.review-practice .review-card-topic{font-family:var(--display);letter-spacing:0;color:var(--paper-dim);font-size:15px;font-weight:500}.review-practice .review-card-topic:before{content:none}.review-practice .review-card-hsk{font-family:var(--display);letter-spacing:0;color:var(--paper-faint);background:0 0;border:none;padding:0;font-size:15px}.review-practice .card-audio-btn:not(.card-audio-btn-replay){background:0 0;border-color:#0000}.review-practice .card-audio-btn:not(.card-audio-btn-replay):hover{background:var(--surface-up);border-color:#0000}.review-practice .slab-han{text-shadow:none;font-weight:600}.review-practice .hz-pinyin-tip,.review-practice .slab-han .hz-pinyin-pinned{font-family:var(--mono);letter-spacing:.02em;color:var(--paper-dim);font-weight:400}.review-practice .review-card .slab-en{font-family:var(--display);letter-spacing:-.01em;font-weight:500;font-size:calc(var(--hanzi-font-size,40px) * .4);color:var(--paper);line-height:1.25}.review-practice .review-card .slab-prompt{font-family:var(--display);letter-spacing:-.01em;font-weight:500;font-size:calc(var(--hanzi-font-size,40px) * .5);line-height:1.2}.review-practice .card-answer{border-top:none;gap:18px;padding-top:0}.review-practice .card-answer:before{content:"";background:var(--paper);opacity:.22;flex:none;width:min(360px,60%);height:18px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 18' preserveAspectRatio='none'%3E%3Cpath d='M2 10 C40 6 90 5 140 7 C190 9 240 8 278 9 C240 12 190 13 140 12 C90 11 40 12 2 10 Z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 18' preserveAspectRatio='none'%3E%3Cpath d='M2 10 C40 6 90 5 140 7 C190 9 240 8 278 9 C240 12 190 13 140 12 C90 11 40 12 2 10 Z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat}.review-practice .tone-guide-grid,.review-practice .tone-guide-syllable:not(.changed) .tone-guide-number{display:none}.review-practice .tone-guide-curve{stroke:var(--paper-faint);stroke-width:4.5px;opacity:.9}.review-practice .tone-guide-tone-1 .tone-guide-curve{stroke:var(--tone-1)}.review-practice .tone-guide-tone-2 .tone-guide-curve{stroke:var(--tone-2)}.review-practice .tone-guide-tone-3 .tone-guide-curve{stroke:var(--tone-3)}.review-practice .tone-guide-tone-4 .tone-guide-curve{stroke:var(--tone-4)}.review-practice .tone-guide-syllable.active .tone-guide-curve{stroke-width:5.5px;opacity:1}.review-practice .review-card>.card-foot{border-top:none;align-self:center;margin:0;padding:0}.review-practice .reveal-act{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-faint);background:0 0;border-color:#0000;gap:8px;padding:10px 18px;font-size:14px}.review-practice .reveal-act:hover{color:var(--paper);background:var(--surface-up);box-shadow:none;border-color:#0000}:is(.reveal-act,.listen-disc-caption,.freetalk-mic-caption) kbd{font-family:var(--mono);color:var(--paper-dim);border:1px solid var(--hair-strong);border-bottom-width:2px;border-radius:5px;margin-inline:2px;padding:2px 7px;font-size:11px}.reveal-touch{display:none}@media (pointer:coarse){.reveal-keys{display:none}.reveal-touch{display:inline}}.review-practice .acts.grade-acts{gap:10px;margin-top:18px}.review-practice .acts.grade-acts>button:is(.q1,.q2,.q3,.q4){text-align:left;font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper);background:var(--sheet);box-shadow:inset 0 0 0 1px var(--sheet-edge), var(--sheet-lift);border:none;border-radius:10px;grid-template-columns:auto 1fr auto;grid-template-areas:"dot label key""dot interval key";align-items:center;gap:1px 12px;padding:16px 18px;font-size:16px;font-weight:500;display:grid}.review-practice .acts.grade-acts>button:is(.q1,.q2,.q3,.q4):hover:not(:disabled){color:var(--paper);background:color-mix(in srgb, var(--sheet) 90%, var(--paper) 10%)}.review-practice .acts.grade-acts>button:is(.q1,.q2,.q3,.q4):disabled{opacity:.42;cursor:not-allowed}.review-practice .acts.grade-acts>button:is(.q1,.q2,.q3,.q4):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.review-practice .acts.grade-acts>button.q3{box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--grade) 55%, transparent), var(--sheet-lift)}.review-practice .grade-acts .q1{--grade:var(--tone-4)}.review-practice .grade-acts .q2{--grade:var(--tone-1)}.review-practice .grade-acts .q3{--grade:var(--tone-2)}.review-practice .grade-acts .q4{--grade:var(--tone-3)}.review-practice .grade-dot{background:var(--grade);width:8px;height:8px;box-shadow:0 0 0 4px color-mix(in srgb, var(--grade) 18%, transparent);border-radius:50%;grid-area:dot}.review-practice .grade-acts .grade-label{grid-area:label;line-height:1.25}.review-practice .grade-acts .grade-interval{font-family:var(--mono);letter-spacing:0;white-space:nowrap;color:var(--paper-dim);opacity:1;font-variant-numeric:tabular-nums;grid-area:interval;font-size:12px}.review-practice .grade-key{text-align:center;min-width:22px;font-family:var(--mono);color:var(--paper-faint);border:1px solid var(--hair-strong);border-bottom-width:2px;border-radius:5px;grid-area:key;padding:1px 6px;font-size:11px}.review-top .card-aid-bar{background:var(--hair);border-radius:999px;align-items:center;gap:2px;padding:3px;display:flex}.review-top .pinyin-toggle,.review-top .tone-guide-inline-toggle,.review-top .translation-edit-toggle{height:28px;font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-dim);background:0 0;border:none;border-radius:999px;padding:0 12px;font-size:13px}.review-top .switch-track{display:none}.review-top .pinyin-toggle.on,.review-top .tone-guide-inline-toggle.on{color:var(--paper);background:var(--sheet);box-shadow:var(--sheet-lift)}.review-top .hanzi-size-controls{gap:2px;position:static}.review-top .hanzi-size-controls button{width:28px;height:28px;font-family:var(--display);color:var(--paper-dim);background:0 0;border:none;font-size:16px}.review-top .hanzi-size-controls button:hover:not(:disabled){color:var(--paper);background:var(--sheet)}.review-top .audio-repeat-control summary{width:auto;height:28px;font-family:var(--display);letter-spacing:0;background:0 0;border:none;padding:0 10px;font-size:13px}.review-top .audio-repeat-control summary:hover,.review-top .audio-repeat-control[open] summary{background:var(--sheet)}.review-top .discard-toggle{padding:0 10px}.review-top .discard-toggle:hover{color:var(--tone-4)}.review-top-flag{display:none}.review-layout>.review-sidebar{background:var(--sheet);min-height:0;box-shadow:inset 0 0 0 1px var(--sheet-edge), var(--sheet-shadow);border:none;border-radius:14px}.review-sidebar .review-word-hanzi{font-weight:600}.review-sidebar .review-word-gloss{font-family:var(--display);color:var(--paper);font-size:18px;line-height:1.35}html:has(.review-top) .bloom{display:none}html:has(.review-top) .masthead{border-bottom-color:var(--hair)}html:has(.review-top) .profile-avatar{font-family:var(--display);border-color:#0000}@media (width<=600px){.review-top{grid-template-columns:auto 1fr auto;gap:10px;margin-bottom:12px;padding-bottom:0}.review-top .lesson-top-actions{display:contents}.review-top .mobile-session-action{grid-area:1/3;justify-self:end}.review-top .card-aid-bar{grid-area:2/1/auto/-1;justify-self:center}.review-top .review-top-flag{border:1px solid color-mix(in srgb, var(--alarm-text) 55%, transparent);width:36px;height:36px;color:var(--alarm-text);background:color-mix(in srgb, var(--alarm-text) 14%, var(--ink-2));cursor:pointer;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.review-top .review-top-flag svg{width:18px;height:18px}html:has(.review-top) .session-feedback-flag{display:none}.review-top .btn{min-height:40px;padding-inline:8px;font-size:13px}.review-progress{justify-self:stretch;gap:10px}.review-progress>.card-meter{flex:auto;width:auto}.review-practice .review-card>.card-chrome{flex-wrap:nowrap;top:14px;left:16px;right:12px}.review-practice .review-card-topic{font-size:15px}.review-practice .slab-han{font-size:var(--hanzi-font-size,40px)}.review-practice .review-card{min-height:max(360px,100dvh - 330px);padding:72px 16px 30px}.review-practice .pronunciation-stack{margin-top:0}.review-practice .review-card .slab-en{font-size:min(calc(var(--hanzi-font-size,40px) * .42), 7vw)}.review-practice .review-card .slab-prompt{font-size:min(calc(var(--hanzi-font-size,40px) * .55), 9vw)}.review-practice .acts.grade-acts{gap:8px}.review-practice .acts.grade-acts>button:is(.q1,.q2,.q3,.q4){text-align:center;grid-template-columns:1fr;grid-template-areas:"dot""label""interval";justify-items:center;row-gap:4px;padding:10px 4px;font-size:14px}.review-practice .grade-dot{width:18px;height:3px;box-shadow:none;border-radius:2px}.review-practice .grade-key{display:none}}.review-practice .level-test-card{flex-direction:column;justify-content:center;align-items:center;gap:26px;display:flex}.review-practice .level-test-card .review-card-topic{margin:0}.review-practice :is(.level-test-card,.lesson-end-card)>.slab-tag{width:auto;max-width:none;font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-dim);margin:0;font-size:16px;font-weight:500;display:block;position:static;transform:none}.review-practice .level-test-card .slab-han{font-size:min(74px,14vw);line-height:1.2}.review-practice .level-test-options{gap:12px;width:min(100%,620px);margin:0}.review-practice .level-test-option{text-align:left;font-family:var(--display);color:var(--paper);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong);border:none;border-radius:10px;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:16px 18px;font-size:16px;font-weight:500;display:grid}.review-practice .level-test-option:hover:not(:disabled){background:var(--surface-up);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb), .5)}.review-practice .level-test-option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.review-practice .level-test-option.correct{background:color-mix(in srgb, var(--tone-2) 16%, transparent);box-shadow:inset 0 0 0 1.5px var(--tone-2)}.review-practice .level-test-option.wrong{background:color-mix(in srgb, var(--tone-4) 16%, transparent);box-shadow:inset 0 0 0 1.5px var(--tone-4)}.review-practice .level-test-option-hanzi{text-align:center;font-family:var(--han);letter-spacing:.04em;padding:18px;font-size:26px;font-weight:600}.review-practice .level-test-option .grade-key{grid-area:auto}.review-practice .level-test-idk{font-family:var(--display);letter-spacing:0;color:var(--paper-faint);text-decoration:underline;-webkit-text-decoration-color:var(--hair-strong);text-decoration-color:var(--hair-strong);text-underline-offset:4px;background:0 0;border:none;padding:10px;font-size:14px}.review-practice .level-test-idk:hover:not(:disabled){color:var(--paper);background:0 0;text-decoration-color:currentColor}.review-practice .level-test-idk-standalone{margin:0 auto}.review-practice .level-test-card .dictation-input-row{width:min(100%,520px);margin:0}.review-practice .level-test-input{width:auto;min-height:54px;font-family:var(--display);color:var(--paper);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong);border:none;border-radius:10px;flex:auto;padding:12px 18px;font-size:20px}.review-practice .level-test-input:focus{box-shadow:inset 0 0 0 1.5px rgba(var(--accent-rgb), .6)}.review-practice .level-test-input.correct{background:color-mix(in srgb, var(--tone-2) 12%, transparent);box-shadow:inset 0 0 0 1.5px var(--tone-2)}.review-practice .level-test-input.wrong{background:color-mix(in srgb, var(--tone-4) 12%, transparent);box-shadow:inset 0 0 0 1.5px var(--tone-4)}.review-practice .level-test-card button.key-act{min-height:54px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;padding:0 24px;font-size:15px}.review-practice .level-test-card .level-test-result-note{text-align:center;margin:0;font-size:15px}.review-practice .level-test-language-warning{color:var(--paper-dim);margin:0;font-size:15px;font-weight:500}.review-practice .level-test-replay-wrap{margin:0}.review-practice .level-test-card .dictation-replay{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong);border:none;padding:12px 22px;font-size:15px}.review-practice .level-test-card .dictation-replay:hover{background:var(--surface-up);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb), .5)}.level-test-intro-title{font-family:var(--display);letter-spacing:-.01em;text-transform:none;text-wrap:balance;color:var(--paper);border:0;margin:0;padding:0;font-size:clamp(28px,4vw,40px);font-weight:600}.level-test-intro-copy{max-width:52ch;color:var(--paper-dim);flex-direction:column;gap:10px;font-size:16px;line-height:1.6;display:flex}.level-test-intro-copy p{margin:0}.review-practice .level-test-result{gap:16px;min-height:420px}.level-seal{width:148px;height:148px;color:var(--ink);background:var(--accent);box-shadow:inset 0 0 0 4px #ffffff24, 0 16px 36px rgba(var(--accent-rgb), .3);border-radius:32px;place-content:center;justify-items:center;margin-bottom:8px;animation:.46s cubic-bezier(.2,.8,.3,1) both level-seal-press;display:grid;transform:rotate(-4deg)}.level-seal-label{font-family:var(--display);letter-spacing:.14em;opacity:.85;font-size:15px;font-weight:600}.level-seal-number{font-family:var(--display);font-size:78px;font-weight:700;line-height:.9}@keyframes level-seal-press{0%{opacity:0;transform:rotate(-4deg)scale(1.14)}to{opacity:1;transform:rotate(-4deg)scale(1)}}@media (prefers-reduced-motion:reduce){.level-seal{animation:none}}.lesson-workspace-complete>:is(.session-complete,.session-complete-acts,.rank-up){width:min(100%,560px)}.session-complete{align-items:center;gap:12px;min-height:0;padding:40px 32px 34px}.session-complete-seal{justify-content:center;margin-bottom:8px;display:flex}.session-complete-seal .celebrate{margin:0}.session-complete-stamp{width:84px;height:84px;font-family:var(--han);color:var(--ink);background:var(--accent);box-shadow:inset 0 0 0 3px #ffffff24, 0 14px 32px rgba(var(--accent-rgb), .28);border-radius:22px;place-content:center;margin-bottom:10px;font-size:46px;font-weight:700;line-height:1;animation:.46s cubic-bezier(.2,.8,.3,1) both level-seal-press;display:grid;transform:rotate(-4deg)}.session-complete-title{font-family:var(--display);letter-spacing:-.01em;text-transform:none;text-wrap:balance;color:var(--paper);border:0;margin:0;padding:0;font-size:clamp(28px,4vw,38px);font-weight:600}.session-complete-reward{text-wrap:balance;color:var(--paper-dim);margin:0;font-size:16px}.session-complete-reward strong{color:var(--accent);font-weight:600}.session-complete-detail{width:min(100%,420px);margin:18px 0 2px}.session-complete-note{max-width:42ch;color:var(--paper-faint);margin:10px 0 0;font-size:13.5px;line-height:1.55}.session-complete-words{flex-wrap:wrap;justify-content:center;gap:14px 24px;padding:0;list-style:none;display:flex}.session-complete-words li{flex-direction:column;align-items:center;gap:3px;display:flex}.session-complete-word{font-family:var(--han);color:var(--paper);font-size:26px;line-height:1.2}.session-complete-pinyin{font-family:var(--mono);letter-spacing:.04em;color:var(--paper-faint);font-size:11px}.review-grade-summary{flex-direction:column;gap:16px;display:flex}.review-grade-bar{gap:3px;height:6px;display:flex}.review-grade-bar span{background:var(--grade);transform-origin:0;border-radius:3px;min-width:6px;animation:.7s cubic-bezier(.2,.8,.3,1) .18s both review-grade-grow}@keyframes review-grade-grow{0%{transform:scaleX(0)}}.review-grade-legend{grid-template-columns:repeat(4,1fr);margin:0;padding:0;list-style:none;display:grid}.review-grade-legend li{flex-direction:column;align-items:center;gap:4px;display:flex}.review-grade-count{font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--paper);font-size:20px;font-weight:600}.review-grade-label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint);align-items:center;gap:6px;font-size:10px;display:flex}.review-grade-label:before{content:"";background:var(--grade);border-radius:50%;width:6px;height:6px}.lesson-workspace-complete>.rank-up{margin-top:16px}.session-complete-acts{margin-top:18px}.session-complete-acts button{min-height:52px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;padding:0 28px;font-size:15px}.review-top .btn.session-undo{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-faint);background:0 0;border-color:#0000;padding:8px 4px;font-size:13px}.review-top .btn.session-undo:hover{color:var(--paper);background:0 0}@media (width<=600px){.session-complete{padding:32px 20px 28px}.session-complete-acts{flex-direction:column}.session-complete-acts button{flex:none;width:100%}}@media (prefers-reduced-motion:reduce){.session-complete-stamp,.review-grade-bar span{animation:none}}.level-test-result-title{font-family:var(--display);letter-spacing:-.01em;text-transform:none;color:var(--paper);border:0;margin:0;padding:0;font-size:clamp(28px,4vw,40px);font-weight:600}.level-test-result-meaning{text-align:center;text-wrap:balance;max-width:46ch;font-family:var(--display);color:var(--paper-dim);margin:0;font-size:16px;line-height:1.5}.level-test-score{flex-direction:column;align-items:center;gap:10px;margin:6px 0;display:flex}.level-test-dots{flex-wrap:wrap;justify-content:center;gap:6px;max-width:320px;display:flex}.level-test-dots span{width:10px;height:10px;box-shadow:inset 0 0 0 1.5px var(--hair-strong);border-radius:50%}.level-test-dots span.hit{background:var(--tone-2);box-shadow:none}.level-test-score-label{font-family:var(--display);color:var(--paper-faint);margin:0;font-size:14px}.review-practice .level-test-result .acts{background:0 0;margin:0;padding:0;position:static}.review-practice .acts button.premium-btn{font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;padding:15px 30px;font-size:15px}@media (width<=600px){.review-practice .level-test-card{gap:20px}.review-practice .level-test-card .dictation-input-row{flex-direction:column}.review-practice .level-test-options-hanzi{grid-template-columns:repeat(2,minmax(0,1fr))}.level-seal{border-radius:26px;width:116px;height:116px}.level-seal-number{font-size:60px}.level-seal-label{font-size:13px}.level-test-dots{max-width:260px}.level-test-dots span{width:8px;height:8px}}.review-practice .review-card-topic{margin:0}.review-practice .review-card-meta{min-width:0}.lesson-card-sub{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--display);color:var(--paper-faint);font-size:14px;overflow:hidden}@media (width<=900px){.lesson-card-sub{display:none}}.review-top .audio-repeat-control summary{width:auto;height:28px;font-family:var(--display);letter-spacing:0;color:var(--paper-dim);background:0 0;border:none;border-radius:999px;padding:0 12px;font-size:13px}.review-top .audio-repeat-control summary:hover,.review-top .audio-repeat-control[open] summary{color:var(--paper);background:var(--sheet)}.review-top .audio-repeat-menu{inset:calc(100% + 8px) 0 auto auto;transform:none}.review-practice :is(.lesson-next-acts,.lesson-end-acts){justify-content:center;gap:10px;margin-top:18px}.review-practice :is(.lesson-next-acts,.lesson-end-acts) button{min-height:52px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;padding:0 28px;font-size:15px}.review-practice .lesson-end-card{flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:380px;display:flex}.review-practice .lesson-end-card .slab-en{text-wrap:balance;font-size:clamp(24px,3vw,32px);font-weight:600}.review-practice .lesson-end-card .slab-note{max-width:52ch;font-family:var(--display);color:var(--paper-dim);font-size:15px;line-height:1.5}@media (width<=600px){.review-practice .lesson-end-card{min-height:340px}.review-practice :is(.lesson-next-acts,.lesson-end-acts) button{flex:auto;padding:0 16px}}:is(.review-top,.card-chrome) .listen-mode-toggle{gap:2px;display:flex}.card-chrome .listen-mode-toggle{background:var(--hair);border-radius:999px;padding:3px}:is(.review-top,.card-chrome) .listen-mode-toggle button{cursor:pointer;height:28px;font-family:var(--display);color:var(--paper-dim);background:0 0;border:none;border-radius:999px;padding:0 12px;font-size:13px}:is(.review-top,.card-chrome) .listen-mode-toggle button:hover:not(:disabled){color:var(--paper)}:is(.review-top,.card-chrome) .listen-mode-toggle button:disabled{opacity:.4;cursor:not-allowed}@media (pointer:coarse){:is(.review-top,.card-chrome) .listen-mode-toggle button{height:44px;padding:0 18px}}:is(.review-top,.card-chrome) .listen-mode-toggle button.on{color:var(--paper);background:var(--sheet);box-shadow:var(--sheet-lift)}.card-aid-divider{background:var(--hair-strong);width:1px;height:16px;margin:0 4px}.review-practice .listen-card{flex-direction:column;justify-content:center;align-items:center;gap:clamp(8px,100dvh - 814px,14px);padding-top:clamp(40px,100dvh - 740px,88px);padding-bottom:clamp(24px,100dvh - 784px,44px);display:flex}.listen-body{flex-direction:column;align-items:center;gap:20px;width:100%;margin-top:10px;display:flex}.review-practice .listen-card .listen-body{gap:clamp(12px,100dvh - 808px,20px);margin-top:clamp(4px,100dvh - 818px,10px)}.review-practice .listen-disc{width:clamp(88px,100dvh - 716px,112px);height:clamp(88px,100dvh - 716px,112px);color:var(--paper);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong), var(--sheet-lift);border:none;border-radius:50%;padding:0;transition:background .2s,box-shadow .2s,transform .2s}.review-practice .listen-disc svg{width:38px;height:38px}.review-practice .listen-disc:hover{color:var(--paper);background:var(--surface-up);box-shadow:inset 0 0 0 1.5px rgba(var(--accent-rgb), .55), var(--sheet-lift)}.review-practice .listen-disc:active{transform:scale(.97)}.review-practice .listen-disc:focus-visible{outline:2px solid var(--accent);outline-offset:4px}@media (prefers-reduced-motion:reduce){.review-practice .listen-disc{transition-property:background,box-shadow}.review-practice .listen-disc:active{transform:none}.card-meter-fill{transition:none}}.listen-disc-caption{font-family:var(--display);color:var(--paper-faint);font-size:13px}@media (pointer:coarse){.listen-disc-caption kbd{display:none}}.review-practice .shadow-encouragement-bubble{font-family:var(--display);letter-spacing:0;text-transform:none;font-size:13px;font-weight:500}.listen-instruction{text-align:center;text-wrap:balance;max-width:40ch;font-family:var(--display);color:var(--paper);margin:0;font-size:19px;font-weight:500;line-height:1.35}.listen-feedback{font-family:var(--display);margin:0;font-size:16px;font-weight:500}.review-practice .review-card .slab-prompt.produce-prompt{font-size:min(30px,7vw);font-style:italic;font-weight:700;line-height:1.25}.listen-instruction.produce-instruction{color:var(--paper-dim);margin-top:14px;font-size:14px;font-weight:400}.listen-feedback.correct{color:var(--accent)}.listen-feedback.incorrect{color:var(--alarm-text)}.listen-feedback.revealed{color:var(--paper-dim)}.listen-instruction-aside{color:var(--paper-faint);margin-top:10px;font-size:13px;font-weight:400;line-height:1.45;display:block}.listen-live-status{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.review-practice .listen-card .shadow-controls{margin:0}.review-practice .listen-card .shadow-record{min-height:52px;font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--ink);background:var(--accent);border:none;border-radius:999px;padding:0 28px;font-size:15px;font-weight:500}.review-practice .listen-card .shadow-record:hover:not(:disabled){background:var(--accent-pale)}.review-practice .listen-card .shadow-record-icon{color:inherit}.review-practice .listen-card .shadow-record.shadow-mic{width:68px;height:68px;min-height:0;color:var(--accent);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong);border-radius:50%;padding:0}.review-practice .listen-card .shadow-record.shadow-mic:hover:not(:disabled){background:var(--surface-up)}.review-practice .listen-card .shadow-mic:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.review-practice .listen-card .shadow-record.is-checking{color:var(--paper-dim);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair-strong)}.review-practice .listen-card .shadow-listening{border:none;min-height:52px;padding:0 24px}.review-practice .listen-card .shadow-listening-label{font-family:var(--display);letter-spacing:0;text-transform:none;font-size:15px;font-weight:500}.review-practice .listen-card .shadow-playback-btn{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-dim);background:0 0;border:none;padding:8px 14px;font-size:13px}.review-practice .listen-card .shadow-playback-btn:hover{color:var(--paper);background:var(--surface-up)}.review-practice .listen-card .shadow-mistakes{gap:14px}.review-practice .listen-card .shadow-compare-label{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-faint);font-size:13px}.review-practice .listen-card .shadow-said-empty{font-family:var(--display);font-style:normal}.review-practice .listen-card .shadow-correction-card{border:none;border-top:1px solid var(--hair);box-shadow:none;background:0 0;border-radius:0;margin-top:4px;padding-top:18px}.review-practice .listen-card .shadow-correction-card .shadow-compare-label{color:var(--paper-faint)}.review-practice .listen-card .shadow-correction-hanzi .hz-word-flagged .hz-char-glyph{color:var(--alarm-text);text-shadow:none;font-weight:700}.review-practice .listen-card .shadow-drill-btn{min-height:44px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:999px;padding:0 20px;font-size:14px;font-weight:500}.review-practice .listen-card .shadow-mic-caption{font-family:var(--display);color:var(--paper-faint);font-size:13px}.review-practice .listen-card .dictation-input-row{width:min(100%,560px);margin:0}.review-practice .listen-card .dictation-input-wrap{background:var(--surface);width:auto;min-height:54px;box-shadow:inset 0 0 0 1px var(--hair-strong);border:none;border-radius:10px;flex:auto}.review-practice .listen-card .dictation-input-wrap:focus-within{box-shadow:inset 0 0 0 1.5px rgba(var(--accent-rgb), .6)}.review-practice .listen-card :is(.dictation-mirror,.dictation-input){font-family:var(--display), var(--han);padding:14px 18px;font-size:20px}.review-practice .listen-card .dictation-token-placeholder{font-family:var(--display);font-size:17px}.review-practice .listen-card :is(.dictation-token-wrong,.dictation-token-extra){color:var(--alarm-text);background:color-mix(in srgb, var(--alarm-text) 16%, transparent);text-decoration-color:currentColor}.review-practice .listen-card .dictation-mirror.correct :is(.dictation-token-match,.dictation-token-neutral){color:var(--accent)}.review-practice .listen-card .dictation-input-row .key-act{min-height:54px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;padding:0 24px;font-size:15px}.review-practice .acts.grade-acts.listen-grade-acts{grid-template-columns:repeat(2,minmax(0,1fr));width:min(100%,620px);margin-inline:auto;display:grid}.review-practice .acts.grade-acts.listen-grade-acts button.q1{color:var(--paper-dim);background:var(--surface);border-color:var(--hair-strong)}.review-practice .acts.grade-acts.listen-grade-acts button.q1:hover{color:var(--paper);background:var(--surface-up);border-color:#e8ece961}.review-practice .acts.grade-acts.listen-grade-acts button.q3{color:var(--ink);background:var(--accent);border-color:var(--accent);box-shadow:none}.review-practice .acts.grade-acts.listen-grade-acts button.q3:hover{background:color-mix(in srgb, var(--accent) 82%, white 18%);border-color:color-mix(in srgb, var(--accent) 82%, white 18%);box-shadow:0 0 16px rgba(var(--accent-rgb), .22)}.review-practice .acts.grade-acts.listen-grade-acts .grade-dot{display:none}.review-practice .acts.grade-acts.listen-grade-acts>button:only-child{text-align:center;grid-column:1/-1;grid-template-columns:1fr auto 1fr;grid-template-areas:".label key"}.review-practice .acts.grade-acts.listen-grade-acts>button:only-child .grade-key{justify-self:end}.listen-end-mistakes{border-top:1px solid var(--hair);flex-direction:column;align-items:center;gap:14px;width:min(100%,520px);margin:22px auto 0;padding-top:20px;display:flex}.listen-end-word-list{flex-direction:column;gap:2px;width:100%;margin:0;padding:0;list-style:none;display:flex}.listen-end-word-list li{border-top:1px solid var(--hair);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:16px;padding:7px 0;display:grid}.listen-end-word-list li:first-child{border-top:none}.listen-end-word{min-height:44px;font-family:var(--han);text-align:right;color:var(--paper);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;justify-self:end;padding:0 12px;font-size:26px;line-height:1.25;transition:color .18s,background .18s}.listen-end-word:hover,.listen-end-word:focus-visible{color:var(--accent-pale);background:var(--surface-up)}.listen-end-word-note{font-family:var(--display);color:var(--paper-faint);text-align:left;font-size:13px;line-height:1.4}.listen-end-more{font-family:var(--display);color:var(--paper-faint);margin:0;font-size:13px}@media (width<=600px){.listen-end-word-list li{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:12px}.listen-end-word{padding:0 8px;font-size:21px}.listen-end-word-note{font-size:12px}}.review-practice .listen-links{justify-content:center;gap:18px;margin-top:14px}.review-practice .listen-links .dictation-skip{width:auto;font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-faint);text-decoration:underline;-webkit-text-decoration-color:var(--hair-strong);text-decoration-color:var(--hair-strong);text-underline-offset:4px;background:0 0;border:none;flex:none;padding:10px;font-size:14px}.review-practice .listen-links .dictation-skip:hover{color:var(--paper);text-decoration-color:currentColor}@media (width<=600px){.review-practice .listen-disc{width:92px;height:92px}.review-practice .listen-disc svg{width:32px;height:32px}.listen-instruction{font-size:17px}.review-practice .listen-card .dictation-input-row{flex-direction:column}.review-practice .listen-card .dictation-input-row .key-act{width:100%}}.review-practice .freetalk-page{flex-direction:column;justify-content:center;align-items:center;gap:22px;display:flex}.review-practice .freetalk-page.is-reviewing{justify-content:flex-start;min-height:0}.freetalk-page .hz-char-pinned{margin-bottom:6px}.freetalk-page .hz-pinyin-pinned{font-family:var(--display);letter-spacing:0;color:var(--paper-dim);margin-top:2px;font-size:.38em;font-weight:400}.freetalk-prompt{flex-direction:column;align-items:center;gap:20px;width:100%;display:flex}.freetalk-prompt-line{justify-content:center;align-items:flex-start;gap:10px;display:flex}.freetalk-prompt-text{max-width:30ch;font-family:var(--display);letter-spacing:-.01em;text-wrap:balance;color:var(--paper);margin:0;font-size:clamp(22px,2.6vw,30px);font-weight:500;line-height:1.3;transition:font-size .3s,color .3s}.freetalk-prompt-zh{max-width:none;font-family:var(--han);letter-spacing:.02em;font-size:clamp(24px,3vw,34px);font-weight:600}.freetalk-page:is(.is-listening,.is-stopping) .freetalk-prompt-text{color:var(--paper-dim);font-size:17px}.freetalk-page:is(.is-listening,.is-stopping) .freetalk-prompt-zh{font-size:20px}.freetalk-page:is(.is-listening,.is-stopping) .freetalk-prompt-zh .hz-pinyin-pinned{display:none}.freetalk-live{max-width:min(100%, calc(24ch / var(--spoken-scale,1)));font-family:var(--han);font-size:calc(clamp(26px, 3.4vw, 38px) * var(--spoken-scale,1));color:var(--paper);text-wrap:pretty;margin:0;font-weight:600;line-height:1.5}.freetalk-live:empty{display:none}.freetalk-interim{color:var(--paper-faint);font-weight:400}.freetalk-live-hint{font-family:var(--display);color:var(--paper-faint);font-size:16px;font-weight:400}.freetalk-mic-row{flex-direction:column;align-items:center;gap:12px;margin-top:6px;display:flex}.freetalk-mic{border:1px solid var(--hair-strong);cursor:pointer;width:76px;height:76px;color:var(--accent);background:var(--surface);box-shadow:inset 0 0 0 1px var(--surface-up);border-radius:50%;place-items:center;padding:0;transition:background .18s,transform .18s;display:grid}.freetalk-mic:hover:not(:disabled){background:var(--surface-up)}.freetalk-mic:active:not(:disabled){transform:scale(.96)}.freetalk-mic:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.freetalk-mic:disabled{cursor:wait;opacity:.7}.freetalk-mic.listening{color:var(--ink);background:var(--accent);border-color:var(--accent);animation:1.8s ease-out infinite freetalk-pulse}@keyframes freetalk-pulse{0%,to{box-shadow:0 0 0 0 rgba(var(--accent-rgb), .35), 0 8px 22px rgba(var(--accent-rgb), .3)}50%{box-shadow:0 0 0 18px rgba(var(--accent-rgb), 0), 0 8px 22px rgba(var(--accent-rgb), .3)}}.freetalk-mic-caption{font-family:var(--display);color:var(--paper-faint);align-items:center;gap:8px;margin:0;font-size:13px;display:flex}.freetalk-mic-caption .mic-level-bars{height:14px}.freetalk-mic-caption .mic-level-bars span{background:var(--accent)}@media (pointer:coarse){.freetalk-mic-caption kbd{display:none}}.freetalk-mic-message{font-family:var(--display);color:var(--tone-4);margin:0;font-size:14px}.freetalk-page .sentence-audio-btn{width:34px;height:34px;color:var(--paper-dim);background:0 0;border:none;flex:none;margin-top:6px}.freetalk-page .sentence-audio-btn:hover{color:var(--paper);background:var(--surface-up)}.freetalk-marked{text-align:left;flex-direction:column;gap:30px;width:min(100%,880px);display:flex}.freetalk-said{grid-template-columns:minmax(0,1fr) minmax(0,260px);align-items:start;gap:18px 40px;display:grid}.freetalk-said:not(:has(.freetalk-notes)){grid-template-columns:minmax(0,1fr)}.freetalk-said-line{align-items:flex-start;gap:12px;display:flex}.freetalk-transcript{font-family:var(--han);font-size:calc(clamp(26px, 3vw, 34px) * max(.7, var(--spoken-scale,1)));color:var(--paper);font-weight:600;line-height:1.5}.freetalk-translation{font-family:var(--display);color:var(--paper-dim);margin:10px 0 0;font-size:16px;line-height:1.5}.freetalk-page .hz-word-flagged .hz-char-glyph{color:var(--tone-4);-webkit-text-decoration:underline solid var(--tone-4);text-decoration:underline solid var(--tone-4);text-underline-offset:7px;text-decoration-thickness:2px}.freetalk-page .hz-word-tip-flag{display:none}.freetalk-notes{border-left:2px solid color-mix(in srgb, var(--tone-4) 55%, transparent);flex-direction:column;gap:14px;margin:0;padding:2px 0 2px 18px;list-style:none;display:flex}.freetalk-notes li{font-family:var(--display);color:var(--paper-dim);flex-direction:column;gap:3px;font-size:14px;line-height:1.45;display:flex}.freetalk-note-span{font-family:var(--han);color:var(--tone-4);font-size:17px;font-weight:600}.freetalk-status{font-family:var(--display);color:var(--paper-faint);text-align:center;margin:0;font-size:15px}.freetalk-review-error{align-items:center;gap:12px;display:flex}.freetalk-review-error p{font-family:var(--display);color:var(--tone-4);margin:0;font-size:14px}.freetalk-fix{flex-direction:column;gap:10px;padding-top:30px;display:flex;position:relative}.freetalk-fix:before{content:"";background:var(--paper);opacity:.22;width:180px;height:14px;position:absolute;top:0;left:0;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 18' preserveAspectRatio='none'%3E%3Cpath d='M2 10 C40 6 90 5 140 7 C190 9 240 8 278 9 C240 12 190 13 140 12 C90 11 40 12 2 10 Z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 18' preserveAspectRatio='none'%3E%3Cpath d='M2 10 C40 6 90 5 140 7 C190 9 240 8 278 9 C240 12 190 13 140 12 C90 11 40 12 2 10 Z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat}.freetalk-fix-kind{font-family:var(--display);color:var(--paper-dim);align-items:center;gap:8px;margin:0;font-size:14px;font-weight:500;display:flex}.freetalk-fix-kind:before{content:"";background:var(--tone-3);border-radius:50%;width:8px;height:8px}.freetalk-fix-kind.is-vocabulary:before{background:var(--tone-1)}.freetalk-fix-text{font-family:var(--han);color:var(--paper);font-size:clamp(24px,2.6vw,30px);font-weight:600;line-height:1.5}.freetalk-page .hz-word-marked .hz-char-glyph{color:var(--tone-2)}.freetalk-fix-english{font-family:var(--display);color:var(--paper-dim);margin:0;font-size:16px}.freetalk-fix-word{font-family:var(--display);color:var(--paper-dim);flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;font-size:15px;display:flex}.freetalk-fix-word .sentence-audio-btn{margin-top:0}.freetalk-fix-word-han{font-family:var(--han);color:var(--tone-1);font-size:20px;font-weight:600}.freetalk-fix-word-py{font-family:var(--mono);font-size:13px}.freetalk-fix-word-gloss{color:var(--paper)}.freetalk-fix-acts{gap:8px;margin-top:6px;display:flex}.freetalk-fix-add,.freetalk-fix-skip{cursor:pointer;min-height:42px;font-family:var(--display);border:none;border-radius:999px;padding:0 18px;font-size:14px;font-weight:500}.freetalk-fix-add{color:var(--ink);background:var(--accent)}.freetalk-fix-add:hover{background:var(--accent-pale)}.freetalk-fix-skip{color:var(--paper-faint);background:0 0;padding:0 14px}.freetalk-fix-skip:hover{color:var(--paper);background:var(--surface-up)}:is(.freetalk-fix-add,.freetalk-fix-skip):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.freetalk-natural{font-family:var(--display);color:var(--paper);align-items:center;gap:12px;margin:0;font-size:20px;font-weight:500;display:flex}.freetalk-natural-seal{width:34px;height:34px;color:var(--ink);background:var(--tone-2);border-radius:9px;place-items:center;font-size:18px;font-weight:700;display:grid;transform:rotate(-4deg)}.freetalk-card-notice{font-family:var(--display);color:var(--tone-1);margin:0;font-size:14px}.freetalk-page.reduced-motion :is(.freetalk-mic,.freetalk-prompt-text){transition:none;animation:none}@media (prefers-reduced-motion:reduce){.freetalk-page :is(.freetalk-mic,.freetalk-prompt-text){transition:none;animation:none}}@media (width<=900px){.freetalk-said{grid-template-columns:minmax(0,1fr)}}@media (width<=600px){.review-practice .freetalk-page{gap:18px}.freetalk-mic{width:68px;height:68px}.freetalk-fix-acts>button{flex:auto}.review-practice .freetalk-page~.acts{background:0 0;margin-top:18px;padding:0;position:static}}.freetalk-layout{grid-template-columns:minmax(0,1fr) 0;align-items:start;gap:0;width:min(100%,1100px);transition:grid-template-columns .32s cubic-bezier(.4,0,.2,1),gap .32s;display:grid}.freetalk-layout.side-open{grid-template-columns:minmax(0,1fr) 300px;gap:24px}.freetalk-layout>.lesson-practice.review-practice{width:100%}.freetalk-side{background:var(--sheet);min-width:0;max-height:calc(100dvh - 40px);box-shadow:inset 0 0 0 1px var(--sheet-edge), var(--sheet-shadow);border-radius:14px;flex-direction:column;gap:22px;padding:18px 18px 22px;display:flex;position:sticky;top:20px;overflow-y:auto}.freetalk-side-head{align-items:center;gap:10px;display:flex}.freetalk-side .freetalk-side-title{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper);border:none;margin:0;padding:0;font-size:15px;font-weight:600}.freetalk-side-count{font-family:var(--display);color:var(--tone-2);font-size:12.5px}.freetalk-side-close{width:28px;height:28px;color:var(--paper-faint);cursor:pointer;background:0 0;border:none;border-radius:8px;place-items:center;margin-left:auto;padding:0;transition:color .16s,background .16s;display:grid}.freetalk-side-close:hover{color:var(--paper);background:var(--surface-up)}.freetalk-side-section{flex-direction:column;gap:10px;display:flex}.freetalk-side .freetalk-side-label{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper-faint);margin:0;font-size:12px;font-weight:500}.freetalk-starter{font-family:var(--han);color:var(--paper);font-size:21px;font-weight:600;line-height:1.4}.freetalk-starter .hz-char-pinned{margin-bottom:4px}.freetalk-starter .hz-pinyin-pinned{font-family:var(--display);letter-spacing:0;color:var(--paper-dim);margin-top:2px;font-size:.45em;font-weight:400}.freetalk-words{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.freetalk-word{text-align:left;cursor:pointer;background:color-mix(in srgb, var(--paper) 4%, transparent);width:100%;height:100%;color:inherit;border:none;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px 11px;transition:background .18s,box-shadow .18s;display:flex;position:relative}.freetalk-word:hover{background:color-mix(in srgb, var(--paper) 8%, transparent)}.freetalk-word:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.freetalk-word:before{content:"";background:var(--hsk-color,transparent);opacity:.85;border-radius:50%;width:6px;height:6px;position:absolute;top:12px;right:12px}.freetalk-word-han{font-family:var(--han);color:var(--paper);font-size:22px;font-weight:600;line-height:1.25}.freetalk-word-py{font-family:var(--display);color:var(--paper-dim);font-size:12.5px}.freetalk-word-en{width:100%;font-family:var(--display);color:var(--paper-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.35;overflow:hidden}.freetalk-word.is-used{background:color-mix(in srgb, var(--tone-2) 16%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--tone-2) 45%, transparent);animation:.42s both freetalk-ink}.freetalk-word.is-used:before{display:none}.freetalk-word-tick{color:var(--tone-2);font-size:13px;font-weight:700;position:absolute;top:7px;right:10px}@keyframes freetalk-ink{0%{box-shadow:none;background:0 0}}.freetalk-chips{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.freetalk-chip{cursor:pointer;font-family:var(--han);color:var(--paper-dim);box-shadow:inset 0 0 0 1px var(--hair);background:0 0;border:none;border-radius:8px;padding:5px 10px;font-size:16px;transition:color .16s,box-shadow .16s}.freetalk-chip:hover,.freetalk-chip.is-active{color:var(--paper);box-shadow:inset 0 0 0 1px var(--hair-strong)}.freetalk-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.freetalk-chip-detail{min-height:1.4em;font-family:var(--display);color:var(--paper-faint);margin:0;font-size:12.5px}.freetalk-chip-detail span{color:var(--paper-dim)}.freetalk-layout.reduced-motion{transition:none}.freetalk-side.reduced-motion .freetalk-word.is-used{animation:none}@media (prefers-reduced-motion:reduce){.freetalk-layout{transition:none}.freetalk-word.is-used{animation:none}}@media (width<=900px){.freetalk-layout,.freetalk-layout.side-open{grid-template-columns:minmax(0,1fr);gap:18px}.freetalk-side{max-height:none;position:static}}.freetalk-top .card-aid-bar{scrollbar-width:none;max-width:100%;overflow-x:auto}.freetalk-top .card-aid-bar::-webkit-scrollbar{display:none}.freetalk-top .card-aid-bar button{white-space:nowrap}.onboarding-backdrop{z-index:210;padding:max(20px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));background:rgba(var(--ink-rgb), .95);overscroll-behavior:contain;place-items:center;display:grid;position:fixed;inset:0;overflow-y:auto}.onboarding{background:radial-gradient(120% 70% at 85% 0%, rgba(var(--accent-rgb), .07), transparent 60%), var(--ink-2);border:1px solid var(--hair-strong);border-top-color:rgba(var(--accent-rgb), .5);border-radius:var(--radius-lg);width:min(100%,940px);min-height:min(640px,100%);box-shadow:var(--sheet-shadow);flex-direction:column;display:flex}.onboarding-top{border-bottom:1px solid var(--hair);align-items:center;gap:18px;padding:20px 28px;display:flex}.onboarding-count{font-family:var(--mono);letter-spacing:.14em;color:var(--paper-faint);font-variant-numeric:tabular-nums;font-size:11px}.onboarding-meter{flex:1;gap:4px;display:flex}.onboarding-meter span{background:var(--surface-up);border-radius:2px;flex:1;height:3px;transition:background .32s}.onboarding-meter span.is-done{background:var(--accent)}.onboarding-skip{cursor:pointer;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint);background:0 0;border:0;padding:6px 2px;font-size:11px;transition:color .18s}.onboarding-skip:hover{color:var(--paper)}.onboarding-skip:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.onboarding-body{flex:1;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:center;gap:46px;padding:46px 40px 34px;animation:.32s cubic-bezier(.2,.7,.2,1) onboarding-enter;display:grid}@keyframes onboarding-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.onboarding-copy .slab-tag{margin-bottom:14px}:is(.onboarding-copy,.tour-popover) h2{font-family:var(--display);letter-spacing:-.02em;text-transform:none;text-wrap:balance;color:var(--paper);border:0;outline:none;margin:0 0 20px;padding:0;font-size:clamp(26px,3.4vw,34px);font-weight:600;line-height:1.15}.onboarding-copy p{max-width:52ch;color:var(--paper-dim);margin:0 0 14px;font-size:16px;line-height:1.65}.onboarding-copy .onboarding-note{border-top:1px solid var(--hair);color:var(--paper-faint);margin-top:22px;padding-top:14px;font-size:14px;line-height:1.55}.onboarding-visual{min-width:0}.onboarding-nav{border-top:1px solid var(--hair);justify-content:space-between;gap:10px;padding:18px 28px;display:flex}:is(.onboarding-nav,.tour-popover-nav) button:not(.onboarding-text-link){min-height:48px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;padding:0 24px;font-size:15px}.onboarding-nav .key-act{min-width:140px}.onboarding-nav-end{align-items:center;gap:14px;display:flex}.onboarding-hint{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint);font-size:10.5px}.onboarding-text-link{cursor:pointer;font-family:var(--display);color:var(--paper-dim);text-underline-offset:4px;text-decoration:underline;-webkit-text-decoration-color:var(--hair-strong);text-decoration-color:var(--hair-strong);background:0 0;border:0;padding:8px;font-size:14px}.onboarding-text-link:hover{color:var(--paper);text-decoration-color:currentColor}.onboarding-text-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.onboarding-hero-word{border-radius:var(--radius-lg);width:100%;color:inherit;cursor:pointer;background:0 0;border:0;justify-items:center;gap:6px;padding:34px 20px;display:grid}.onboarding-hero-pinyin{font-family:var(--mono);letter-spacing:.06em;color:var(--accent-pale);font-size:18px}.onboarding-hero-hanzi{font-family:var(--han);color:var(--paper);text-shadow:0 0 48px rgba(var(--accent-rgb), .28);font-size:clamp(76px,11vw,120px);line-height:1.2;transition:text-shadow .24s}.onboarding-hero-word:hover .onboarding-hero-hanzi{text-shadow:0 0 64px rgba(var(--accent-rgb), .5)}.onboarding-hero-word:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.onboarding-review-visual{gap:18px;display:grid}.onboarding-curve{justify-self:center;width:100%;max-width:420px}.onboarding-curve-axis{stroke:var(--hair-strong);stroke-width:1px}.onboarding-curve-line{fill:none;stroke:var(--accent);stroke-width:2.5px;stroke-linecap:round}.onboarding-curve-lift{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:2 4;opacity:.6}.onboarding-curve-review{fill:var(--accent)}.onboarding-curve-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;fill:var(--paper-faint);font-size:7px}.onboarding-sequence{margin:0;padding:0;list-style:none}.onboarding-sequence li{border-bottom:1px solid var(--hair);align-items:baseline;gap:18px;padding:12px 0;display:flex}.onboarding-sequence li:first-child{border-top:1px solid var(--hair)}.onboarding-sequence-index{font-family:var(--mono);letter-spacing:.1em;color:var(--accent);flex:none;font-size:11px}.onboarding-sequence li>span:last-child{color:var(--paper-faint);gap:2px;font-size:14px;line-height:1.5;display:grid}.onboarding-sequence strong{color:var(--paper);font-size:15px;font-weight:500}.onboarding-tones{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.onboarding-tone{border:1px solid var(--hair);border-radius:var(--radius-md);background:var(--surface);color:inherit;cursor:pointer;justify-items:center;gap:4px;padding:16px 6px 14px;transition:border-color .18s,background .18s;display:grid}.onboarding-tone:hover{border-color:var(--tone-colour);background:var(--surface-up)}.onboarding-tone:focus-visible{outline:2px solid var(--tone-colour);outline-offset:2px}.onboarding-tone-number{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-faint);font-size:9.5px}.onboarding-tone-contour{width:64px;height:44px}.onboarding-tone-contour path{fill:none;stroke:var(--tone-colour);stroke-width:3.2px;stroke-linecap:round;stroke-linejoin:round}.onboarding-tone-hanzi{font-family:var(--han);color:var(--paper);font-size:40px;line-height:1.3}.onboarding-tone-pinyin{font-family:var(--mono);color:var(--tone-colour);font-size:15px;font-weight:600}.onboarding-tone-gloss{color:var(--paper-faint);font-size:13px}.onboarding-pace{border:0;gap:10px;margin:0;padding:0;display:grid}.onboarding-pace label{border:1px solid var(--hair-strong);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;align-items:center;gap:20px;padding:16px 20px;transition:border-color .18s,background .18s;display:flex;position:relative}.onboarding-pace label:hover{background:var(--surface-up)}.onboarding-pace label.is-selected{border-color:rgba(var(--accent-rgb), .7);background:rgba(var(--accent-rgb), .08)}.onboarding-pace input{opacity:0;pointer-events:none;position:absolute}.onboarding-pace label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.onboarding-pace-number{min-width:2ch;font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--paper-dim);font-size:30px;font-weight:600}.onboarding-pace label.is-selected .onboarding-pace-number{color:var(--accent)}.onboarding-pace-copy{color:var(--paper-faint);gap:2px;font-size:14px;display:grid}.onboarding-pace-copy strong{color:var(--paper);font-size:16px;font-weight:500}.tour-layer{z-index:210;pointer-events:none;position:fixed;inset:0}.tour-shade{background:rgba(var(--ink-rgb), .82);pointer-events:auto;position:absolute;inset:0}.tour-hole{border-radius:var(--radius-md);box-shadow:0 0 0 1.5px rgba(var(--accent-rgb), .75), 0 0 0 200vmax rgba(var(--ink-rgb), .82);transition:top .28s cubic-bezier(.2,.7,.2,1),left .28s cubic-bezier(.2,.7,.2,1),width .28s cubic-bezier(.2,.7,.2,1),height .28s cubic-bezier(.2,.7,.2,1);position:absolute}.tour-blocker{pointer-events:auto;position:absolute}.tour-popover{pointer-events:auto;background:var(--ink-2);border:1px solid var(--hair-strong);border-top-color:rgba(var(--accent-rgb), .5);border-radius:var(--radius-lg);width:min(360px,100vw - 24px);box-shadow:var(--sheet-shadow);padding:20px 22px 18px;animation:.26s cubic-bezier(.2,.7,.2,1) onboarding-enter;position:absolute}.tour-popover.is-centred{animation:none;top:50%;left:50%;transform:translate(-50%,-50%)}.tour-popover-top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.tour-popover h2{margin-bottom:10px;font-size:22px}.tour-popover p{color:var(--paper-dim);margin:0 0 10px;font-size:15px;line-height:1.6}.tour-legend{border-top:1px solid var(--hair);color:var(--paper-dim);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin:14px 0 4px;padding:14px 0 0;font-size:13px;list-style:none;display:grid}.tour-legend li{align-items:center;gap:10px;display:flex}.tour-popover-nav{justify-content:space-between;align-items:center;gap:10px;margin-top:18px;display:flex}.tour-popover-nav .key-act{min-width:110px}.coach-ring{z-index:149;pointer-events:none;border-radius:var(--radius-md);box-shadow:0 0 0 2px rgba(var(--accent-rgb), .85), 0 0 22px rgba(var(--accent-rgb), .35);animation:2.2s ease-in-out infinite coach-ring-pulse;position:fixed}@keyframes coach-ring-pulse{0%,to{box-shadow:0 0 0 2px rgba(var(--accent-rgb), .85), 0 0 14px rgba(var(--accent-rgb), .2)}50%{box-shadow:0 0 0 2px rgba(var(--accent-rgb), .85), 0 0 28px rgba(var(--accent-rgb), .45)}}.coach-tip{z-index:150;left:max(24px, env(safe-area-inset-left));background:var(--ink-2);border:1px solid var(--hair-strong);border-left:2px solid var(--accent);border-radius:var(--radius-md);width:min(280px,100vw - 24px);box-shadow:var(--sheet-shadow);padding:16px 18px 14px;animation:.26s cubic-bezier(.2,.7,.2,1) onboarding-enter;position:fixed;bottom:24px}.coach-tip.is-placed{bottom:auto}.coach-tip-tag{font-family:var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:9.5px}.coach-tip h2{font-family:var(--display);letter-spacing:0;text-transform:none;color:var(--paper);border:0;margin:0 0 6px;padding:0;font-size:16px;font-weight:600}.coach-tip p{color:var(--paper-dim);margin:0;font-size:14px;line-height:1.55}.coach-tip-actions{align-items:center;gap:14px;margin-top:12px;display:flex}.coach-tip-actions .btn{padding:8px 14px}.coach-tip-off{cursor:pointer;color:var(--paper-faint);background:0 0;border:0;padding:4px;font-size:13px}.coach-tip-off:hover{color:var(--paper)}@media (width<=860px){.onboarding-body{grid-template-columns:minmax(0,1fr);gap:30px;padding:34px 28px 28px}}@media (width<=600px){.onboarding-backdrop{background:var(--ink-2);place-items:stretch stretch;padding:0}.onboarding{width:100%;min-height:100%;box-shadow:none;border:0;border-radius:0}.onboarding-top{z-index:1;padding:max(14px, env(safe-area-inset-top)) 18px 14px;background:var(--ink-2);position:sticky;top:0}.onboarding-body{align-content:start;align-items:start;gap:26px;padding:26px 18px 24px}.onboarding-nav{padding:12px 18px max(12px, env(safe-area-inset-bottom));background:var(--ink-2);position:sticky;bottom:0}.onboarding-nav .key-act,.onboarding-nav-end{flex:1}.onboarding-nav-end{justify-content:flex-end;gap:8px}.onboarding-tones{grid-template-columns:repeat(2,minmax(0,1fr))}.onboarding-hero-word{padding:10px 0}.coach-tip{left:12px;right:12px;bottom:calc(max(18px, env(safe-area-inset-bottom)) + 54px);width:auto}.coach-tip.is-docked-top{top:max(12px, env(safe-area-inset-top));bottom:auto}}@media (prefers-reduced-motion:reduce){.onboarding-body,.tour-popover,.coach-tip,.coach-ring{animation:none}.tour-hole{transition:none}}.install-steps{gap:14px;display:grid}.install-steps p{color:var(--paper-dim);margin:0;font-size:15px;line-height:1.6}.install-steps strong{color:var(--paper);font-weight:600}button.install-button{min-height:48px;font-family:var(--display);letter-spacing:0;text-transform:none;border-radius:10px;justify-self:start;padding:0 28px;font-size:15px}.install-step-list{gap:0;margin:0;padding:0;list-style:none}.install-step-list li{border-bottom:1px solid var(--hair);color:var(--paper-dim);align-items:baseline;gap:18px;padding:13px 0;font-size:15px;line-height:1.55;display:flex}.install-step-list li:first-child{border-top:1px solid var(--hair)}.install-share-icon{vertical-align:-3px;width:18px;height:18px;color:var(--accent)}
