.practice-playlist{width:min(680px,calc(100vw - 40px));height:min(800px,calc(100dvh - 48px));max-width:none;max-height:none;margin:auto;padding:0;border:1px solid var(--line-strong);border-radius:22px;background:var(--surface);color:var(--text);box-shadow:0 24px 90px #0006;overflow:hidden}.practice-playlist[open]{display:flex;flex-direction:column}.practice-playlist::backdrop{background:#000b;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.practice-playlist-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px 10px;flex-shrink:0}.practice-playlist-header h2{margin:0;font-size:18px;font-weight:550}.practice-header-actions{display:flex}.practice-header-actions .icon-button{width:40px;min-width:40px}.practice-header-actions button[aria-expanded=true]{background:var(--surface-selected);color:var(--accent)}.practice-mode-switch{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:0 24px;padding:5px;border:1px solid var(--line);border-radius:12px;background:var(--surface-inset);flex-shrink:0}.practice-mode-switch button{display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 4px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-secondary);font-size:11px}.practice-mode-switch button[aria-pressed=true]{color:var(--accent);background:var(--surface-selected);border-color:var(--accent-line)}.practice-mode-switch svg{flex-shrink:0}.practice-playlist label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--text-secondary)}.practice-playlist select{min-height:40px;max-width:100%;padding:8px;font:inherit;color:var(--text);background:var(--surface);color-scheme:inherit}.practice-playlist option{color:var(--text);background:var(--surface)}.practice-playlist-content{min-height:0;flex:1;overflow-y:auto;padding:18px 24px 8px;overscroll-behavior:contain;display:flex;flex-direction:column;scrollbar-width:thin}.practice-options,.practice-editor{flex-shrink:0}.practice-options{border:1px solid var(--line);background:var(--surface-raised);padding:16px;border-radius:12px;margin-bottom:12px}.practice-options details{font-size:12px;margin-top:12px}.practice-options summary{cursor:pointer}.practice-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.practice-panel-heading h3{margin:0;font-size:15px;font-weight:500}.practice-panel-heading button{min-height:40px}.practice-playlist-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px}.practice-playlist-controls label{min-width:0}.practice-display-options{display:flex;gap:20px;margin-top:12px}.practice-display-options label{flex-direction:row;align-items:center;min-height:36px}.practice-rehearsal{flex:1;display:flex;flex-direction:column;min-height:220px}.practice-phrase-strip{display:flex;align-items:center;justify-content:center;gap:3px;flex-wrap:wrap;padding-bottom:12px;max-height:128px;overflow-y:auto;flex-shrink:0}.practice-phrase-strip button{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:44px;padding:6px 4px;font-size:18px;font-weight:400;color:var(--muted);background:transparent;border:0;border-bottom:2px solid transparent;border-radius:4px}.practice-phrase-strip button[aria-pressed=true]{color:var(--accent);border-bottom-color:var(--accent);background:var(--surface-selected)}.practice-word-pinyin{font-size:11px;line-height:1.3;font-style:normal;font-weight:400;color:var(--text-secondary)}.practice-phase{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:var(--muted)}.practice-playlist[data-phase=responding] .practice-phase:first-of-type{color:var(--accent)}.practice-current{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px 0;flex:1;overflow-wrap:anywhere;min-width:0}.practice-current p{margin:4px 0;max-width:100%}.practice-current .practice-track-hanzi{font-size:32px;line-height:1.55;font-weight:400}.practice-playlist[data-mode=words] .practice-current .practice-track-hanzi{font-size:54px}.practice-current .practice-track-pinyin{font-size:18px}.practice-response-track{height:3px;background:var(--line);border-radius:5px;overflow:hidden;margin-bottom:10px;flex-shrink:0}.practice-response-track>span{display:block;height:100%;background:var(--accent);transform-origin:left;animation:practice-response linear forwards}@keyframes practice-response{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media(prefers-reduced-motion:reduce){.practice-response-track>span{animation:none}}.practice-step-markers{display:flex;justify-content:center;flex-wrap:wrap;gap:4px;max-height:44px;overflow-y:auto;flex-shrink:0}.practice-step-markers button{flex:1;min-width:18px;max-width:44px;height:32px;padding:14px 0;border:0;background:transparent}.practice-step-markers span{display:block;height:3px;background:var(--line-strong);border-radius:5px}.practice-step-markers button[aria-current] span{background:var(--accent)}.practice-target{border-left:3px solid var(--accent-line);padding-left:14px;overflow-wrap:anywhere}.practice-target p{margin:4px 0}.practice-target [lang=zh-Hans]{font-size:20px;max-height:100px;overflow-y:auto;white-space:pre-wrap}.practice-selectable-phrase{-webkit-user-select:text;user-select:text}.practice-word-actions{margin-top:12px}.practice-character-picker{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:8px}.practice-character-picker legend,.practice-boundary-editor legend{font-size:13px}.practice-character-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;-webkit-user-select:none;user-select:none}.practice-character-buttons button{min-width:44px;min-height:44px;padding:6px;font-size:22px;font-weight:400;touch-action:manipulation}.practice-character-buttons button[aria-pressed=true]{color:var(--accent);background:var(--surface-selected);border-color:var(--accent)}.practice-character-punctuation{font-size:22px;white-space:pre-wrap}.practice-selected-part{display:flex;flex-direction:column;gap:4px;padding:10px 0;overflow-wrap:anywhere}.practice-boundary-editor{border:0;padding:0;margin:0}.practice-boundaries{margin-top:0;padding:12px 0}.practice-chunk-preview{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.practice-chunk-preview>span{display:flex;flex-direction:column;gap:4px;padding:8px 10px;border:1px solid var(--line);border-radius:6px}.practice-chunk-preview [lang=zh-Hans]{font-size:18px;font-weight:400}.practice-chunk-preview [lang=zh-Latn]{font-size:12px;color:var(--text-secondary)}.practice-list-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:18px 0 12px}.practice-list-heading p{flex:1}.practice-tracks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.practice-track{width:100%;display:flex;align-items:center;gap:14px;padding:16px;text-align:left;border:1px solid var(--line);border-radius:10px;cursor:pointer}.practice-track-row{display:flex;gap:6px}.practice-track-row>.practice-track{flex:1;min-width:0}.practice-track-actions{display:flex;flex-direction:column;justify-content:center}.practice-track-kind{display:block;margin-bottom:4px;font-size:11px;color:var(--muted)}.practice-track:hover{background:var(--surface-hover)}.practice-track[aria-current]{border-color:var(--accent);background:var(--surface-selected);box-shadow:inset 3px 0 var(--accent)}.practice-track:disabled{cursor:default;opacity:.65}.practice-track-number{width:20px;flex-shrink:0;color:var(--muted);font-variant-numeric:tabular-nums}.practice-track-text{min-width:0;flex:1;overflow-wrap:anywhere;font-weight:400}.practice-track-hanzi,.practice-track-pinyin{display:block;white-space:pre-wrap}.practice-track-hanzi{font-size:24px;line-height:1.6}.practice-track-pinyin{font-size:15px;line-height:1.7;margin-top:3px;color:var(--text-secondary)}.practice-track-hanzi .practice-addition{color:var(--accent)}.practice-track-pinyin .practice-addition{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:5px}.practice-playlist-recording{border-top:1px solid var(--line);margin-top:20px;padding-top:12px;flex-shrink:0}.practice-playlist-recording .phrase-practice{padding:14px;margin-bottom:0}.practice-transport{border-top:1px solid var(--line);background:var(--surface-raised);padding:14px 24px max(8px,env(safe-area-inset-bottom));flex-shrink:0}.practice-pace-controls{display:grid;grid-template-columns:1fr 1fr;gap:16px}.practice-pace-control>span{display:block;font-size:11px;color:var(--text-secondary);margin-bottom:6px}.practice-stepper{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface)}.practice-stepper select{text-align:center;border:0;min-width:0;padding:6px 0;width:70px;font-size:15px;font-variant-numeric:tabular-nums}.practice-stepper .icon-button{width:38px;min-width:38px}.practice-transport-buttons{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:12px;align-items:center;margin-top:12px}.practice-transport-buttons .primary{min-height:50px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:9px}.practice-repeat-controls{display:flex;justify-content:center;gap:20px;margin-top:6px}.practice-repeat-controls button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;font-size:11px;border:0;background:transparent;color:var(--text-secondary)}.practice-repeat-controls button[aria-pressed=true]{color:var(--accent)}.practice-repeat-controls span{font-size:10px;padding:2px 4px;border:1px solid var(--line-strong);border-radius:4px}.practice-error{font-size:12px;color:var(--danger);max-height:70px;overflow-y:auto;margin:8px 0 0}@media(max-width:640px){.practice-playlist{width:100%;height:calc(100dvh - max(12px,env(safe-area-inset-top)));margin:auto 0 0;border-radius:18px 18px 0 0;border-bottom:0}.practice-playlist-header{padding:8px 10px 8px 16px;gap:4px}.practice-playlist-header h2{font-size:16px}.practice-header-actions .icon-button{width:36px;min-width:36px}.practice-mode-switch{grid-template-columns:1fr 1fr;margin:0 14px;padding:4px;gap:3px}.practice-mode-switch button{min-height:40px}.practice-playlist-content{padding:14px 16px 4px}.practice-phrase-strip{padding-bottom:8px;max-height:124px}.practice-phrase-strip button{font-size:17px}.practice-current .practice-track-hanzi{font-size:28px}.practice-playlist[data-mode=words] .practice-current .practice-track-hanzi{font-size:48px}.practice-track{padding:13px 10px;gap:8px}.practice-track>.small{font-size:10px}.practice-transport{padding-inline:16px}.practice-pace-controls{gap:12px}.practice-stepper select{width:60px;font-size:14px}.practice-stepper .icon-button{width:34px;min-width:34px}}@media(max-height:700px){.practice-current{padding-block:10px}.practice-current .practice-track-hanzi{font-size:23px}.practice-current .practice-track-pinyin{font-size:16px}.practice-playlist[data-mode=words] .practice-current .practice-track-hanzi{font-size:38px}.practice-rehearsal{min-height:165px}}@media(max-height:700px)and (max-width:640px){.practice-phrase-strip button{padding-block:4px;line-height:1.25}.practice-current{padding-block:4px}.practice-current p{margin-block:2px}.practice-current .practice-track-pinyin{line-height:1.4}.practice-playlist[data-mode=words] .practice-current .practice-track-hanzi{font-size:30px;line-height:1.35}}@media(max-height:480px)and (min-width:641px){.practice-playlist[open]{display:grid;width:min(820px,calc(100vw - 24px));height:calc(100dvh - 16px);grid-template-columns:minmax(0,1fr) 280px;grid-template-rows:auto auto minmax(0,1fr)}.practice-playlist-header{grid-column:1 / -1;padding-block:4px}.practice-mode-switch{grid-column:1 / -1;margin-bottom:8px}.practice-playlist-content{grid-column:1;padding:8px 16px}.practice-transport{grid-column:2;border-top:0;border-left:1px solid var(--line);padding:10px 12px}.practice-rehearsal{min-height:0}.practice-phrase-strip{display:none}.practice-pace-controls{gap:8px}.practice-stepper .icon-button{min-width:30px;width:30px}.practice-stepper select{width:55px;font-size:13px}.practice-repeat-controls{gap:8px}}.practice-playlist [hidden]{display:none!important}.practice-write{list-style:none;margin:0;padding:16px 24px;display:grid;gap:12px}.practice-write-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}.practice-sheet-modes{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:8px}.save-actions{display:flex;gap:6px;align-items:stretch}.save-actions>.button:not(.save-trigger){flex:1;min-width:0}.save-trigger.icon-only{min-width:44px;padding-inline:10px;justify-content:center}.save-trigger.save-collapsed{justify-content:center}.save-panel{box-sizing:border-box;background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-radius:12px;box-shadow:0 8px 28px #0006;display:grid;gap:8px;padding:12px;overflow-y:auto}.save-popover{box-sizing:border-box;position:fixed;z-index:60;width:300px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.save-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0008;display:flex;align-items:flex-end}.save-sheet{width:100%;max-height:80vh;border-radius:16px 16px 0 0;padding-bottom:max(16px,env(safe-area-inset-bottom))}.save-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.save-done{min-height:36px}.save-list{list-style:none;margin:0;padding:0;display:grid;gap:2px;max-height:42vh;overflow-y:auto}.save-row{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 4px;cursor:pointer}.save-row input{width:20px;height:20px;flex:none}.save-row-name{flex:1;min-width:0;overflow-wrap:anywhere}.save-new{justify-content:flex-start}.save-create{display:flex;gap:6px}.save-create input{flex:1;min-width:0}.save-toast{margin:0;min-height:1.3em;font-size:.85rem;color:var(--accent)}.save-error{margin:0;color:#ff8a8a}.save-panel>*{min-width:0}.book-import,.book-translation-controls{margin-bottom:24px}.book-import h2{margin-top:0}.book-import input[type=file]{width:100%;padding:12px 0}.book-paste{display:grid;gap:16px;margin-top:20px}.book-paste .field{display:grid;gap:8px}.book-paste textarea{resize:vertical}.cover-imported{background:#244750}.book-chapters{display:flex;align-items:center;gap:12px;min-width:0}.book-chapters select{max-width:min(440px,70vw)}.book-source{white-space:pre-wrap;overflow-wrap:anywhere}.book-translation{overflow-wrap:anywhere}.book-translation p{margin:0 0 1em}.book-translation .reading-token{padding:0}.imported-reading{max-width:960px;margin:0 auto}@media(max-width:760px){.book-chapters{width:100%}.book-chapters select{flex:1;min-width:0;max-width:100%}.imported-reading{padding:20px}}.skill-counts{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.25rem 0}.skill-menu summary{cursor:pointer;display:inline-block;padding:.1rem .5rem;border:1px solid var(--line,#8884);border-radius:999px}.skill-menu div{display:flex;flex-wrap:wrap;gap:.5rem .9rem;margin-top:.35rem}.workspace:has(>.mahjong-main){min-height:100dvh;background:radial-gradient(ellipse at 50% 20%,#1f3a30,#10231e 80%)}.mahjong-main{max-width:none;padding:20px 28px}.mahjong-player{max-width:650px;margin:0 auto;color:#ede9d7}.mahjong-heading{display:flex;align-items:center;gap:20px;justify-content:space-between;margin-bottom:10px}.mahjong-heading h1{font-family:Georgia,Times New Roman,serif;font-size:27px;font-weight:400;letter-spacing:.5px;margin:0}.mahjong-heading .back-link{margin:0;min-height:44px;color:#b2c4b6}.mahjong-score{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:4px;font-size:11px;color:#a4b9a8;margin-bottom:12px;font-variant-numeric:tabular-nums}.mahjong-pair-count{color:#d1c7a5;letter-spacing:.4px}.mahjong-pair-count strong{font-size:20px;color:#f2e9ca;font-weight:500}.mahjong-table{position:relative;padding:22px;border:1px solid #9a825145;border-radius:18px;background:radial-gradient(ellipse at 45% 30%,#2c7057,#174b39 65%,#123c2e);box-shadow:inset 0 0 0 5px #102f24,inset 0 0 0 6px #a3905540,inset 0 0 40px #001f1880,0 12px 32px #0003}.mahjong-table:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:13px;pointer-events:none;opacity:.4;background:repeating-linear-gradient(0deg,#ffffff08 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,#0000000a 0 1px,transparent 1px 3px)}.mahjong-board{--tile-height: clamp(72px, 11dvh, 108px);position:relative;max-width:430px;margin:0 auto;height:calc(var(--rows) * var(--tile-height) + 12px);outline:none;isolation:isolate}.mahjong-tile{position:absolute;left:calc(var(--x) * (100% - 8px) / var(--columns) + var(--layer) * 6px);top:calc(var(--y) * var(--tile-height) + (1 - var(--layer)) * 8px);width:calc((100% - 8px) / var(--columns) - 4px);height:calc(var(--tile-height) - 4px);padding:6px;display:flex;align-items:center;justify-content:center;border:1px solid #a9ac8d;border-radius:5px;color:#233f35;background:linear-gradient(135deg,#fffef2,#f3efd9 55%,#e8e5cd);box-shadow:inset 2px 2px 1px #fffdf6,inset -2px -2px 1px #c7c5aa88,0 3px #c3c7a5,0 6px #75937b,0 8px #234e3b,2px 10px 7px #00140d99;overflow-wrap:anywhere;transition:filter .12s,box-shadow .12s}.mahjong-tile:after{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border:1px solid #b8b79a50;border-radius:3px;pointer-events:none}.mahjong-tile:disabled{opacity:1}.mahjong-tile.blocked{background:linear-gradient(135deg,#e9e8d6,#d5d7bf);color:#66786c;box-shadow:inset 1px 1px 1px #fcfae680,0 3px #a7b295,0 6px #51775f,0 8px #1f4534,2px 8px 6px #00190e77}.mahjong-tile.free:hover{filter:brightness(1.06)}.mahjong-tile[aria-pressed=true],.mahjong-tile.hinted{border-color:#e9c56a;background:linear-gradient(135deg,#fff8d9,#f9e8a7);box-shadow:inset 2px 2px 1px #fff9e7,0 3px #c6b16f,0 6px #729078,0 8px #214a37,0 0 0 2px #e3bd58,0 0 20px #f6d47055}.mahjong-tile.hinted:after{border:1px dashed #9b7527}.mahjong-tile:focus-visible{outline:2px solid #a36922;outline-offset:-5px}.mahjong-tile-text{position:relative;z-index:1;font:15px/1.2 Georgia,Times New Roman,serif;text-shadow:0 1px 0 #fff9}.mahjong-tile.character .mahjong-tile-text{color:#a52d27;font-family:KaiTi,STKaiti,SimSun,serif;font-size:36px;font-weight:600;line-height:1.15}.mahjong-tile.pinyin .mahjong-tile-text{color:#17533e;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;font-style:normal;font-size:19px;text-shadow:none}.mahjong-tile.blocked .mahjong-tile-text{opacity:.62}.mahjong-feedback{font-size:12px;line-height:1.35;min-height:32px;margin:4px 0;color:#c7d1bf;text-align:center;align-content:center}.mahjong-feedback.accent{color:#e9cf8b}.mahjong-controls{gap:0;border-block:1px solid #a1b59a24}.mahjong-controls .button{flex:1;padding-inline:8px;color:#ddd8bd;background:transparent;border:0;border-radius:4px;font-weight:400;font-size:13px}.mahjong-controls .button+.button{border-left:1px solid #a1b59a24;border-radius:0}.mahjong-controls .button:hover{background:#ffffff09}.mahjong-controls svg{color:#cab777}.mahjong-help{font-size:12px;color:#a4b9a8;margin-top:4px}.mahjong-help summary{min-height:36px;align-content:center;text-align:center}.mahjong-help summary>svg{display:none}.mahjong-help .button{color:#ede9d7;background:#1c3b2e;border-color:#708467}.mahjong-setup{margin-top:12px;padding:22px;border:1px solid #89986c55;border-radius:12px;background:#1a382c}.mahjong-setup label{display:grid;gap:6px;font-size:14px}.mahjong-setup p{font-size:13px}.mahjong-setup .small{margin-top:12px;color:#bac7ad}.mahjong-setup select{color:#ede9d7;background:#10291f;border-color:#708467}.mahjong-setup .button.primary{background:#ddca90;color:#203328;border-color:#ddca90}.mahjong-setup .text-link{color:#f1d99e}.mahjong-layout-preview{display:flex;align-items:center;gap:18px;margin:16px 0;padding:14px;background:#0a2a1dcc;border:1px solid #89986c55;border-radius:8px}.mahjong-layout-preview svg{width:90px;height:125px;flex-shrink:0}.mahjong-layout-preview figcaption{min-width:0;font-size:12px}.mahjong-layout-preview p{margin:6px 0;line-height:1.5;font-size:12px}.mahjong-layout-preview span{color:#bac7ad}.mahjong-complete{text-align:center;margin-bottom:0;color:#ede9d7;background:#1a382c;border-color:#89986c55}.mahjong-complete h2{font-family:Georgia,Times New Roman,serif;color:#f1d99e;font-size:28px}.mahjong-complete .muted{color:#bac7ad}.workspace:has(.mahjong-courtyard){background:radial-gradient(ellipse at 45% 35%,#35812c,#185923 75%,#154a20)}.mahjong-main:has(.mahjong-courtyard){padding-top:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}.mahjong-courtyard{position:relative;max-width:720px}.mahjong-courtyard .mahjong-table{border:0;padding:4px 0 8px;border-radius:0;background:transparent;box-shadow:none}.mahjong-courtyard .mahjong-table:before{top:-80px;right:-12px;bottom:-80px;left:-12px;border-radius:0;background:repeating-linear-gradient(15deg,#ffffff06 0 1px,transparent 1px 3px),repeating-linear-gradient(105deg,#00000008 0 1px,transparent 1px 4px)}.mahjong-courtyard .mahjong-board{--tile-height: clamp(80px, calc((100dvh - 310px) / var(--rows)), 98px);max-width:min(100%,calc(var(--tile-height) * var(--columns) * .7333));height:calc(var(--rows) * var(--tile-height) + var(--layers) * 6px + 8px)}.mahjong-courtyard .mahjong-tile{top:calc(var(--y) * var(--tile-height) + (var(--layers) - var(--layer)) * 6px);height:calc(var(--tile-height) - 3px);padding:3px;border:2px solid #565759;border-radius:6px;background:linear-gradient(155deg,#fff,#f3f2ed 60%,#e5e5dd);box-shadow:inset 2px 2px #fff,inset -2px -2px #c6c6bb,1px 4px #b4b6b2,2px 7px #3f667d,3px 10px #56755b,5px 13px 7px #042d1899}.mahjong-courtyard .mahjong-tile:after{border:0}.mahjong-courtyard .mahjong-tile.blocked{background:linear-gradient(155deg,#f4f4ef,#e2e3d8);color:#233f35}.mahjong-courtyard .mahjong-tile.blocked .mahjong-tile-text{opacity:.85}.mahjong-courtyard .mahjong-tile[aria-pressed=true],.mahjong-courtyard .mahjong-tile.hinted{border-color:#bb8b34;background:linear-gradient(155deg,#fff6cd,#edcb76);box-shadow:inset 2px 2px #ffedb7,inset -2px -2px #c2a363,1px 4px #b5a369,2px 7px #3f667d,3px 10px #56755b,5px 13px 7px #042d1899}.mahjong-courtyard .mahjong-tile.hinted:after{border:1px dashed #9b7527}.mahjong-courtyard .mahjong-tile.meaning .mahjong-tile-text{font:11px/1.05 Segoe UI,sans-serif}.mahjong-courtyard .mahjong-tile.pinyin .mahjong-tile-text{font-size:12px}.mahjong-courtyard .mahjong-tile.character .mahjong-tile-text{font-size:26px}.mahjong-courtyard .mahjong-tile.character.long-word .mahjong-tile-text{font-size:16px}.mahjong-courtyard .mahjong-heading h1{font-family:Segoe UI,sans-serif;font-size:22px;font-weight:500}.mahjong-courtyard .mahjong-heading{justify-content:center;min-height:44px;margin-bottom:4px;padding-inline:44px}.mahjong-courtyard .mahjong-heading .back-link{display:none}.mahjong-courtyard .mahjong-help{position:absolute;top:0;right:0;width:44px;margin:0;z-index:500}.mahjong-courtyard .mahjong-help summary{display:flex;justify-content:flex-end;align-items:center;min-height:44px;list-style:none;padding:12px;border-radius:50%;background:#082e1966}.mahjong-courtyard .mahjong-help summary::-webkit-details-marker{display:none}.mahjong-courtyard .mahjong-help summary>svg{display:block;flex-shrink:0}.mahjong-courtyard .mahjong-help summary>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.mahjong-courtyard .mahjong-help[open]{width:min(320px,100%);padding:0 14px 14px;max-height:calc(100dvh - 100px);overflow:auto;background:#113e23;border:1px solid #9bb68b;border-radius:12px;box-shadow:0 10px 24px #0006}.mahjong-courtyard .mahjong-help[open] summary{border-radius:0;background:none;padding-right:0}.mahjong-courtyard .mahjong-controls{padding:4px;border:0;border-radius:12px;background:#082e19cc}.mahjong-courtyard .mahjong-score,.mahjong-courtyard .mahjong-help{color:#d8e4cb}.mahjong-courtyard .mahjong-feedback{color:#f4f3df}.mahjong-upgrade{color:#bac7ad;text-align:center}.mahjong-upgrade button{background:none;border:0;color:#f1d99e}@media(max-width:760px){.mahjong-main{padding:8px 12px calc(8px + env(safe-area-inset-bottom))}.mahjong-heading{gap:8px;margin-bottom:4px}.mahjong-heading h1{font-size:23px}.mahjong-table{padding:8px;border-radius:12px}.mahjong-table:before{top:4px;right:4px;bottom:4px;left:4px}.mahjong-board{--tile-height: clamp(68px, 10dvh, 94px)}.mahjong-tile{padding:3px}.mahjong-tile-text{font-size:12px;line-height:1.15}.mahjong-tile.character .mahjong-tile-text{font-size:29px}.mahjong-tile.character.long-word .mahjong-tile-text{font-size:19px}.mahjong-tile.pinyin .mahjong-tile-text{font-size:15px}.mahjong-score{font-size:10px;margin-bottom:6px}.mahjong-pair-count strong{font-size:16px}.mahjong-controls .button{font-size:12px;gap:6px}.mahjong-courtyard .mahjong-board{--tile-height: clamp(80px, calc((100dvh - 285px) / var(--rows)), 98px)}}@media(max-width:375px){.mahjong-main{padding-block:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom))}.mahjong-table{padding:6px}.mahjong-tile-text{font-family:Segoe UI,sans-serif;font-size:11px}.mahjong-tile.character .mahjong-tile-text{font-size:26px}.mahjong-tile.character.long-word .mahjong-tile-text{font-size:16px}.mahjong-tile.pinyin .mahjong-tile-text{font-size:12px}.mahjong-courtyard .mahjong-tile.meaning .mahjong-tile-text{font-size:10px;line-height:1.02}}@media(min-width:540px)and (max-width:760px)and (max-height:500px){.mahjong-main{padding-block:0}.mahjong-player:has(.mahjong-board){display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:0 12px}.mahjong-heading{grid-column:1 / -1;margin-bottom:0}.mahjong-table{padding:6px;grid-column:1;grid-row:2 / 6}.mahjong-board{--tile-height: 59px}.mahjong-score{grid-column:2;grid-row:2;margin:0}.mahjong-feedback{grid-column:2;grid-row:3;margin:4px 0}.mahjong-controls{grid-column:2;grid-row:4;flex-direction:column;padding:0}.mahjong-controls .button{width:100%}.mahjong-controls .button+.button{border-left:0}.mahjong-help{grid-column:2;grid-row:5;margin:0}.mahjong-setup{grid-column:1 / -1}.mahjong-courtyard:has(.mahjong-board){display:block}.mahjong-courtyard .mahjong-table{padding:4px 0 8px}.mahjong-courtyard .mahjong-controls{flex-direction:row}}.sudoku-main{padding:18px 24px}.sudoku-player{position:relative;max-width:540px;margin:0 auto}.sudoku-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;padding-right:92px;min-height:44px}.sudoku-heading .back-link{min-height:44px;margin:0}.sudoku-heading h1{margin:0;font-size:23px}.sudoku-meta{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:12px;margin-bottom:10px}.sudoku-grid{width:100%;border:3px solid #263849;background:#fbfcfe;border-radius:3px;overflow:hidden}.sudoku-row{display:grid;grid-template-columns:repeat(var(--size),minmax(0,1fr))}.sudoku-cell{aspect-ratio:1;min-width:0;display:grid;place-items:center;padding:0;border:0 solid #748491;border-right-width:1px;border-bottom-width:1px;border-radius:0;background:#fbfcfe;color:#2468ad;font:28px/1.1 Segoe UI,sans-serif}.sudoku-cell[aria-disabled=true]{cursor:wait}.sudoku-cell.given{color:#182b3a;font-weight:600}.sudoku-cell.peer{background:#eaf0f5}.sudoku-cell.same-character{background:#d2e5f6}.sudoku-cell[aria-selected=true]{background:#a9d5f4;box-shadow:inset 0 0 0 2px #286599}.sudoku-cell.checked-correct{color:#176638;background:#d8f2e2}.sudoku-cell.checked-incorrect{color:#b32325;background:#fde1df}.sudoku-cell:focus-visible{outline:2px solid #16588b;outline-offset:-3px;z-index:1}.sudoku-candidates{width:100%;height:100%;padding:2px;display:grid;grid-template-columns:repeat(var(--notes-columns),minmax(0,1fr));align-items:center;color:#53697b;font-size:11px;line-height:1}.sudoku-instructions{font-size:12px;line-height:1.4;min-height:32px;margin:8px 0;color:var(--text-secondary)}.sudoku-controls{gap:8px}.sudoku-controls .button{flex:1;min-width:0;flex-direction:column;gap:2px;padding:4px 6px;font-size:11px;line-height:1.2}.sudoku-palette{display:grid;grid-template-columns:repeat(var(--size),minmax(0,1fr));gap:6px;margin-top:10px}.sudoku-palette button{min-width:0;min-height:48px;padding:4px;color:var(--accent);background:var(--surface-selected);border-color:var(--accent-line);font-size:26px}.sudoku-palette button[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:-2px}.sudoku-sound-toggle{position:absolute;right:44px;top:0}.sudoku-selected-pinyin{margin:4px 0 8px;padding:6px 10px;font-size:13px;line-height:1.4;color:var(--accent);background:var(--surface-selected);border-radius:6px}.sudoku-pinyin-toggle{min-height:44px;margin-block:6px}.sudoku-reference{position:absolute;right:0;top:0;width:44px;z-index:5;font-size:12px;color:var(--text-secondary)}.sudoku-reference summary{display:flex;justify-content:flex-end;align-items:center;min-height:44px;list-style:none;padding:12px}.sudoku-reference summary::-webkit-details-marker{display:none}.sudoku-reference summary>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.sudoku-reference[open]{width:min(360px,100%);max-height:calc(100dvh - 90px);overflow:auto;padding:0 14px 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);box-shadow:0 10px 25px #0005}.sudoku-reference[open] summary{padding-right:0}.sudoku-reference h2{font-size:32px;margin:18px 0 8px}.sudoku-word-context{margin:12px 0}.sudoku-word-context p{margin-bottom:6px}.sudoku-setup{margin-top:14px;padding:20px}.sudoku-setup p{font-size:13px}.sudoku-settings{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sudoku-settings label{display:grid;gap:6px;font-size:13px}.sudoku-settings select{min-width:0;width:100%}.sudoku-source-label{display:grid;gap:6px;margin-top:14px;font-size:13px}.sudoku-source-label select{min-width:0;width:100%}.sudoku-custom-phrase{display:grid;gap:12px;margin-top:12px}.sudoku-custom-phrase label{display:grid;gap:6px;font-size:13px}.sudoku-custom-phrase textarea,.sudoku-custom-phrase input{width:100%;padding:10px;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px}.sudoku-custom-phrase textarea{min-height:76px;max-height:180px;resize:vertical}.sudoku-ai-phrase{margin-top:14px}.sudoku-phrase-preview{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:8px}.sudoku-phrase-preview p{margin-bottom:6px}.sudoku-source-phrase{display:flex;align-items:center;gap:8px;margin-bottom:8px}.sudoku-source-phrase p{flex:1;min-width:0;margin:0;font-size:18px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sudoku-source-phrase .button{flex-shrink:0}.sudoku-phrase-details h2{font-size:17px}@media(max-width:760px){.sudoku-main{padding:8px 12px calc(12px + env(safe-area-inset-bottom))}.sudoku-heading h1{font-size:20px}.sudoku-heading .back-link{display:none}.sudoku-heading{margin-bottom:4px}.sudoku-cell{font-size:clamp(20px,5.5vw,28px)}.sudoku-candidates{font-size:clamp(8px,2.3vw,11px);padding:1px}.sudoku-controls .button{padding:4px;font-size:11px;gap:2px}.sudoku-palette{gap:3px}.sudoku-palette button{font-size:22px}}@media(max-width:760px)and (max-height:700px){.sudoku-main{padding-top:4px;padding-bottom:calc(6px + env(safe-area-inset-bottom))}.sudoku-heading{margin-bottom:0}.sudoku-meta{margin-bottom:4px}.sudoku-instructions{margin:4px 0;min-height:26px}.sudoku-palette{margin-top:6px}}.sudoku-saved{margin-top:14px;padding:12px 14px}.sudoku-saved summary{cursor:pointer}.sudoku-saved h2{display:inline;font-size:16px}.sudoku-saved-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}.sudoku-saved-list li{display:grid;grid-template-columns:60px 1fr auto;gap:10px;align-items:start}.sudoku-saved-list img{border:1px solid var(--border, #cbd5e1);border-radius:4px;background:#fff}.sudoku-saved-info{display:grid;gap:2px;min-width:0}.sudoku-saved-info strong{overflow-wrap:anywhere}.sudoku-saved-actions{display:grid;gap:4px}.sudoku-saved-actions .button{padding:4px 8px;font-size:12px}.memory-main{padding:18px 24px}.memory-player{position:relative;max-width:660px;margin:0 auto}.memory-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:8px;padding-right:44px;min-height:44px}.memory-heading h1{margin:0;font-size:25px}.memory-heading .back-link{min-height:44px;margin:0}.memory-new-board{flex-shrink:0;margin-left:auto;font-size:12px;padding-inline:10px}.memory-score{display:flex;justify-content:space-between;gap:8px;margin-bottom:12px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.memory-board{display:grid;grid-template-columns:repeat(var(--columns),minmax(0,1fr));gap:10px;outline:none}.memory-card{position:relative;min-width:0;height:clamp(var(--minimum-card-height),calc((100dvh - 293px - (var(--rows) - 1) * 10px) / var(--rows)),130px);border-radius:10px}.memory-card{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:8px;border:1px solid #b6c3c2;box-shadow:0 3px #233b4d,0 5px 8px #0003}.memory-board>.memory-card{margin:0}.memory-card:disabled{opacity:1}.memory-card.face-up{color:#24394b;background:linear-gradient(135deg,#fffdf5,#e9eee5);cursor:default;animation:memory-turn .18s ease-out}.memory-card.face-down{color:#d5e8f4;border-color:#597d9b;background:repeating-linear-gradient(45deg,#ffffff08 0 1px,transparent 1px 8px),repeating-linear-gradient(-45deg,#ffffff08 0 1px,transparent 1px 8px),linear-gradient(145deg,#285171,#17354d)}.memory-card.face-down:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid #b1d0e34d;border-radius:6px;pointer-events:none}.memory-card.face-down:hover{border-color:var(--accent)}.memory-card.mismatch{border-color:#cb8655;box-shadow:0 3px #795238,0 0 0 1px #cb865566}.memory-card.matched{background:var(--match-background);border-color:var(--match-border);box-shadow:0 3px 0 var(--match-border),0 5px 8px #0002}.memory-match-mark{position:absolute;top:6px;right:6px;color:var(--match-ink)}.memory-card-back{display:grid;justify-items:center;gap:10px;opacity:.8}.memory-card-back span{font-size:10px}.memory-word{max-width:100%;font-size:15px;line-height:1.3;overflow-wrap:anywhere}.memory-card.character .memory-word{color:#8b332b;font-size:30px}.memory-card.character.long-word .memory-word{font-size:20px}.memory-card.pinyin .memory-word{color:#1c654f;font-size:18px}.memory-card.matched .memory-word{color:var(--match-ink)}.memory-feedback{min-height:36px;font-size:13px;line-height:1.4;margin:8px 0;color:var(--text-secondary)}.memory-setup{margin-top:14px}.memory-setup label{display:grid;gap:6px;margin-bottom:14px;font-size:13px}.memory-setup select{width:100%;min-width:0}.memory-setup p{font-size:13px}.memory-rules{position:absolute;top:0;right:0;width:44px;z-index:5;font-size:12px;color:var(--muted)}.memory-rules summary{min-height:44px;display:flex;justify-content:flex-end;align-items:center;padding:12px;list-style:none}.memory-rules summary::-webkit-details-marker{display:none}.memory-rules summary span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.memory-rules[open]{width:min(330px,100%);max-height:calc(100dvh - 90px);overflow:auto;padding:0 14px 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);box-shadow:0 10px 25px #0005}.memory-rules[open] summary{padding-right:0}.memory-complete{position:fixed;top:0;right:0;bottom:0;left:0;width:min(400px,calc(100vw - 32px));height:fit-content;max-width:none;max-height:calc(100dvh - 32px);overflow-y:auto;margin:auto;padding:32px 24px 24px;border:1px solid var(--line-strong);border-radius:16px;background:var(--surface);color:var(--text);text-align:center;box-shadow:0 24px 80px #0006}.memory-complete::backdrop{background:#0009}.memory-complete-close{position:absolute;top:6px;right:6px}.memory-complete h2{margin-top:16px}.memory-complete .button-row{justify-content:center}@keyframes memory-turn{0%{transform:rotateY(55deg)}to{transform:rotateY(0)}}@media(prefers-reduced-motion:reduce){.memory-card.face-up{animation:none}}@media(max-width:760px){.memory-main{padding:8px 12px calc(10px + env(safe-area-inset-bottom))}.memory-heading h1{font-size:22px}.memory-heading{gap:8px}.memory-heading .back-link{display:none}.memory-board{gap:8px}.memory-card{height:clamp(var(--minimum-card-height),calc((100dvh - 253px - (var(--rows) - 1) * 8px) / var(--rows)),116px)}.memory-card{padding:5px;gap:5px;border-radius:8px}.memory-word{font-size:12px;line-height:1.15}.memory-card.character .memory-word{font-size:24px}.memory-card.character.long-word .memory-word{font-size:18px}.memory-card.pinyin .memory-word{font-size:14px}}@media(max-width:375px){.memory-word{font-size:11px}.memory-card.character .memory-word{font-size:20px}.memory-card.pinyin .memory-word{font-size:12px}}.defender-player{position:relative;max-width:860px;margin:0 auto}.defender-heading{display:flex;align-items:center;gap:16px;margin-bottom:12px;min-height:44px;padding-right:44px}.defender-heading h1{margin:0;font-size:26px;flex:1}.defender-heading .back-link{margin:0;min-height:44px}.defender-arena{border:1px solid #49625d;border-radius:14px;overflow:hidden;background:#10252b;color:#edf4ee}.defender-hud{display:flex;align-items:center;gap:24px;padding:10px 16px;background:#0c1c23;border-bottom:1px solid #34524e}.defender-hud>div{display:grid;gap:4px}.defender-hud span{color:#a5bcb1;font-size:9px;letter-spacing:1px}.defender-hud strong{font-size:22px;font-weight:500;font-variant-numeric:tabular-nums}.defender-hud .icon-button{color:#cce2d7;border:1px solid #35514f;border-radius:50%}.defender-hud .defender-shields{margin-left:auto;gap:9px}.defender-shields>div{display:flex;gap:5px}.defender-shields i{width:14px;height:8px;border-radius:2px;background:#74cab2}.defender-shields i.lost{background:#293d40}.defender-field{--card-width: 140px;--line: 30px;position:relative;height:320px;background:linear-gradient(#4d8b8220 1px,transparent 1px),linear-gradient(90deg,#4d8b8218 1px,transparent 1px),radial-gradient(ellipse at 0 50%,#28645355,transparent 70%),#132a32;background-size:100% 25%,48px 100%,100% 100%}.defender-line{position:absolute;left:var(--line);top:0;bottom:0;width:2px;background:#76d9b4;box-shadow:0 0 16px #5bffc460}.defender-line span{position:absolute;top:50%;right:10px;writing-mode:vertical-rl;transform:rotate(180deg) translateY(50%);white-space:nowrap;color:#81c6ad;font-size:8px;letter-spacing:1px}.defender-incoming{position:absolute;left:calc(var(--line) + 5px + var(--position) * (100% - var(--line) - var(--card-width) - 21px));top:calc((var(--lane) + .5) * 25% - 28px);width:var(--card-width);height:56px;display:grid;place-items:center;padding:4px;border:1px solid #6da69a;border-radius:8px;background:linear-gradient(140deg,#2e5959,#1b3e48);text-align:center;box-shadow:0 4px 10px #0003}.defender-incoming.danger{background:#653a2f;border-color:#ffb87a}.defender-incoming.leading{border-color:#f2cf87;box-shadow:0 0 0 2px #c4a46b60}.defender-incoming.leading:before{content:"TARGET";position:absolute;top:-8px;left:4px;background:#e2c487;color:#17292b;padding:1px 4px;border-radius:3px;font-size:7px;font-weight:700}.defender-word-face{max-width:100%;font-size:14px;line-height:1.2;overflow-wrap:anywhere}.defender-word-face[lang=zh-Hans]{font-size:24px}.defender-word-face[lang=zh-Latn]{font-size:16px}.defender-word-face ruby{line-height:1;ruby-align:center}.defender-word-face rt{font:10px/1.1 Segoe UI,sans-serif;color:inherit}.defender-footer{display:flex;justify-content:space-between;gap:8px;padding:8px 12px;font-size:11px;color:#bbcfbf;background:#0c1c23}.defender-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:16px;text-align:center;background:#102027e8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.defender-overlay h2{margin-bottom:6px;color:#edf4ee;font-size:24px}.defender-overlay p{font-size:13px;color:#b7cac1}.defender-answer-bank{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}.defender-answer{min-height:50px;min-width:0;padding:5px;display:grid;place-items:center;background:var(--surface-selected);border:1px solid var(--line-strong);color:var(--text)}.defender-type-form{display:flex;gap:8px;margin-top:14px}.defender-type-form input{width:100%;min-width:0;font-size:18px;padding:8px 12px}.defender-feedback{font-size:12px;line-height:1.4;min-height:20px;margin:8px 0;color:var(--text-secondary)}.defender-help{position:absolute;top:0;right:0;width:44px;z-index:10;font-size:12px;color:var(--muted)}.defender-help summary{display:flex;align-items:center;justify-content:flex-end;min-height:44px;padding:12px;list-style:none}.defender-help summary::-webkit-details-marker{display:none}.defender-help summary span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.defender-help[open]{width:min(340px,100%);max-height:calc(100dvh - 90px);overflow:auto;padding:0 14px 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);box-shadow:0 10px 25px #0005}.defender-help[open] summary{padding-right:0}.defender-settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}.defender-settings label{display:grid;gap:6px;font-size:13px}.defender-settings select{width:100%;min-width:0}.defender-vocabulary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.defender-vocabulary>div{display:flex;flex-direction:column;gap:4px;padding:10px;background:var(--surface-raised);border-radius:8px;font-size:13px}.defender-vocabulary strong{font-size:22px;font-weight:500}.defender-vocabulary small{color:var(--accent)}.defender-wave-review{margin-top:16px}@media(max-width:760px){.defender-main{padding:8px 12px calc(8px + env(safe-area-inset-bottom))}.defender-heading{margin-bottom:6px}.defender-heading h1{font-size:21px}.defender-heading .back-link{display:none}.defender-hud{gap:18px;padding:8px 12px}.defender-field{height:clamp(190px,32dvh,300px);background-size:100% 48px,25% 100%,100% 100%}.defender-line{left:0;right:0;width:auto;height:2px;top:auto;bottom:24px}.defender-line span{left:50%;top:6px;right:auto;writing-mode:horizontal-tb;transform:translate(-50%)}.defender-incoming{left:calc(8px + var(--lane) * (100% - 16px) / 4);top:calc(16px + (1 - var(--position)) * (100% - 98px));width:calc((100% - 16px)/4 - 4px);height:58px;padding:3px}.defender-word-face{font-size:11px;line-height:1.1}.defender-word-face[lang=zh-Hans]{font-size:19px}.defender-word-face.long-word[lang=zh-Hans]{font-size:15px}.defender-word-face[lang=zh-Latn]{font-size:12px}.defender-answer-bank{margin-top:10px;gap:6px}.defender-answer{min-height:46px}.defender-settings{grid-template-columns:1fr 1fr}.defender-settings label:last-child{grid-column:1 / -1}.defender-vocabulary{grid-template-columns:1fr 1fr}}@media(max-width:760px)and (max-height:650px){.defender-main{padding-top:4px}.defender-heading{min-height:34px;margin-bottom:4px}.defender-heading h1{font-size:20px}.defender-hud{padding-block:4px}.defender-field{height:180px}.defender-answer-bank{gap:4px;margin-top:6px}.defender-answer{min-height:44px;padding:4px}}.workspace:has(>.potions-main){display:flex;flex-direction:column;height:100dvh}.workspace:has(>.potions-main)>.topbar{flex:none}.potions-main{flex:1;min-height:0;width:100%;max-width:none;display:flex;flex-direction:column;padding:12px 20px;background:radial-gradient(ellipse at 20% 0,#a855f740,transparent 55%),radial-gradient(ellipse at 95% 30%,#3b82f62b,transparent 55%),radial-gradient(ellipse at 50% 110%,#ec489935,transparent 55%),#150a2c}.potions-player,.potions-complete{--potion-ink: #f4efff;--potion-soft: #cbb6ff;--potion-gold: #ffd166;--potion-panel: #26124ab8;--potion-line: #ffffff29;color-scheme:dark;color:var(--potion-ink);font-family:Arial Rounded MT Bold,Trebuchet MS,Segoe UI,sans-serif}.potions-player{position:relative;isolation:isolate;width:100%;max-width:600px;min-height:0;flex:1;margin:0 auto;display:flex;flex-direction:column}.potions-player :focus-visible,.potions-complete :focus-visible{outline-color:var(--potion-gold)}.potions-player .muted,.potions-complete .muted{color:var(--potion-soft)}.potions-player .text-link{color:var(--potion-gold)}.potions-heading{flex:none;display:flex;align-items:center;gap:10px;padding-right:50px;min-height:48px;margin-bottom:4px}.potions-heading h1{display:flex;align-items:center;justify-content:center;gap:8px;flex:1;margin:0;color:var(--potion-gold);font-size:clamp(19px,3vw,25px);font-weight:700;letter-spacing:.2px;text-shadow:0 3px 0 #5a1e968c,0 6px 18px #ffb43c40}.potions-player .icon-button,.potions-complete .icon-button{border-radius:14px;color:var(--potion-ink);background:#ffffff12;box-shadow:inset 0 0 0 2px var(--potion-line)}.potions-player .button,.potions-complete .button{border:0;border-radius:14px;padding:10px 14px;min-height:44px;font-weight:700;font-size:14px;letter-spacing:.2px;transition:transform .12s,box-shadow .12s;color:#3b1465;background:linear-gradient(#ffe9a8,#ffd166 55%,#f5a623);box-shadow:0 5px #b06a12,0 10px 22px #0005}.potions-player .button.secondary,.potions-complete .button.secondary{background:linear-gradient(#ffffff29,#ffffff12);color:var(--potion-ink);box-shadow:0 5px #0005,inset 0 0 0 2px #ffffff38}.potions-player .button.potions-mint{background:linear-gradient(#a7f3d0,#34d399 55%,#10b981);color:#06331f;box-shadow:0 5px #047857,0 10px 22px #0005}.potions-player .button:active:not(:disabled),.potions-complete .button:active:not(:disabled){transform:translateY(4px);box-shadow:0 1px #0005}.potions-player .button:disabled{opacity:.6;filter:grayscale(.8)}.potions-game{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding-bottom:8px}.potions-score{flex:none;display:flex;align-items:center;gap:8px}.potions-level-title{flex:1;text-align:center}.potions-level-title strong{display:block;font-size:22px;text-shadow:0 2px 8px #0008}.potions-level-title>span{font-size:10px;letter-spacing:2px;color:var(--potion-soft);text-transform:uppercase}.potions-moves{min-width:64px;text-align:center;background:var(--potion-panel);border-radius:14px;padding:5px 8px;box-shadow:inset 0 0 0 2px var(--potion-line)}.potions-moves strong{font-size:19px;font-variant-numeric:tabular-nums}.potions-moves span{display:block;font-size:10px;letter-spacing:1.5px;color:var(--potion-soft);text-transform:uppercase}.potions-brew-count{display:flex;justify-content:space-between;align-items:center;color:var(--potion-soft);font-size:11px;padding-inline:2px}.potions-stars{display:inline-flex;justify-content:center;gap:4px;color:#ffffff40}.potions-stars svg{width:14px;height:14px;fill:currentColor}.potions-stars .earned{color:var(--potion-gold)}.potions-targets{flex:none;display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:25%;overflow-y:auto;margin:0;padding:2px;list-style:none}.potions-target{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:12px;background:var(--potion-panel);box-shadow:inset 0 0 0 2px var(--potion-line);font-size:13px;line-height:1.25;transition:background .3s,box-shadow .3s}.potions-dot{flex:none;width:12px;height:12px;border-radius:4px;background:var(--liquid-mid);box-shadow:inset 0 2px #fff6,0 2px 4px #0006}.potions-target.done{background:#1050348c;box-shadow:inset 0 0 0 2px #4ade8080,0 0 14px #4ade8026}.potions-target.done .potions-dot{background:#4ade80}.potions-target-text{flex:1;min-width:0}.potions-target-native{display:block;margin-top:2px;color:var(--potion-gold);font-size:15px;font-weight:600}.potions-player .potions-hear,.potions-complete .potions-hear{width:36px;height:44px;border-radius:50%;color:#3b1465;background:radial-gradient(circle closest-side,#ffd166 94%,transparent 100%);box-shadow:none}.potions-board{--tile-height: 44px;flex:1;min-height:0;display:flex;flex-direction:column;justify-content:safe center;gap:10px;overflow:auto;padding:14px 22px 14px 6px;outline:none;overscroll-behavior:contain}.potions-vial{position:relative;flex:none;display:flex;align-items:center;width:100%;min-height:44px;margin:0;padding:0;border:0;background:none;text-align:left;transition:transform .18s cubic-bezier(.34,1.56,.64,1);transform-origin:0 50%}.potions-vial:disabled{opacity:1}.potions-vial:not(:disabled):hover{filter:none}.potions-glass{flex:1;min-width:0;position:relative;padding:4px;border-radius:10px;background:linear-gradient(190deg,#fff3,#ffffff0f 40%,#ffffff24);box-shadow:inset 0 0 0 2px #ffffff4d,inset 8px 0 14px #0005,0 8px 18px #0005;transition:box-shadow .25s}.potions-slots{position:relative;display:grid;grid-template-columns:repeat(var(--capacity),minmax(0,1fr));gap:3px;container-type:inline-size}.potions-slot,.potions-tile{min-height:var(--tile-height)}.potions-slot{border-radius:6px;background:#10082520}.potions-tile{display:flex;align-items:center;justify-content:center;padding:2px 3px;border-radius:6px;background:linear-gradient(var(--liquid-light),var(--liquid-mid) 45%,var(--liquid-dark));color:var(--liquid-ink);box-shadow:inset 0 4px #ffffff61,inset 0 -5px 8px #0004;font-weight:600;line-height:1.15;text-align:center;overflow-wrap:anywhere;font-size:clamp(11px,calc(100cqi / var(--capacity) / (var(--letters) + .5)),20px);text-shadow:var(--liquid-shadow, none)}.potions-shine{position:absolute;left:10px;right:8px;top:6px;height:22%;border-radius:8px;background:linear-gradient(90deg,#ffffff38,#ffffff08);pointer-events:none}.potions-lip{flex:none;width:9px;height:calc(var(--tile-height) + 22px);margin-left:-3px;border-radius:6px;background:linear-gradient(90deg,#ffffff8c,#ffffff2e);box-shadow:2px 0 4px #0005}.potions-vial.selected{transform:translateY(-4px) scale(1.01)}.potions-vial.selected .potions-glass{box-shadow:inset 0 0 0 2px #ffffff8c,inset 8px 0 14px #0005,0 0 0 3px #ffd16659,0 12px 26px #0006}.potions-tile.lifted{transform:translate(4px,-6px) scale(1.07);box-shadow:inset 0 4px #ffffff73,0 0 0 2px #ffd166,0 8px 16px #0008;transition:transform .18s cubic-bezier(.34,1.56,.64,1);z-index:1}.potions-tile.ghost{visibility:hidden}.potions-tile.landed{animation:potions-land .32s cubic-bezier(.34,1.56,.64,1)}.potions-vial.pouring{transform:translateY(-4px) rotate(4deg)}.potions-vial.refused{animation:potions-refuse .35s ease}.potions-vial.done .potions-glass{box-shadow:inset 0 0 0 2px #ffffff80,0 0 22px #4ade808c,0 8px 18px #0005}.potions-vial-star{position:absolute;right:-19px;top:calc(50% - 8px);color:var(--potion-gold);fill:currentColor;filter:drop-shadow(0 0 6px #ffd166aa)}.potions-vial.fresh,.potions-target.fresh{animation:potions-done .5s cubic-bezier(.34,1.56,.64,1)}.potions-fly{position:fixed;z-index:60;min-height:0;margin:0;pointer-events:none;transform-origin:top left;font-family:Arial Rounded MT Bold,Trebuchet MS,Segoe UI,sans-serif}.potions-burst{position:absolute;left:50%;top:50%;pointer-events:none}.potions-burst i{position:absolute;width:6px;height:6px;border-radius:50%;background:#ffd166;animation:potions-burst .6s ease-out both}.potions-burst i:nth-child(2n){background:#fff}.potions-feedback{flex:none;min-height:32px;max-height:60px;overflow-y:auto;margin:0;padding:0 4px;color:#d9c9ff;text-align:center;font-size:12px;line-height:1.4}.potions-controls{flex:none;display:flex;justify-content:center;gap:8px;padding:4px 3px 6px}.potions-controls .button{position:relative;flex:1;gap:5px;padding-inline:8px;font-size:13px;white-space:nowrap}.potions-charge{position:absolute;right:-4px;top:-8px;min-width:19px;height:19px;display:grid;place-items:center;border-radius:10px;background:#b91c1c;color:#fff;font-size:11px;box-shadow:0 0 0 2px #fff}[data-potion-color="0"]{--liquid-light: #ff7a7a;--liquid-mid: #e23b3b;--liquid-dark: #a61e24;--liquid-ink: #fff;--liquid-shadow: 0 1px 2px #0007}[data-potion-color="1"]{--liquid-light: #ffb55c;--liquid-mid: #f08a17;--liquid-dark: #b35d05;--liquid-ink: #2a1300}[data-potion-color="2"]{--liquid-light: #ffe875;--liquid-mid: #f2d21e;--liquid-dark: #b89a08;--liquid-ink: #2a2100}[data-potion-color="3"]{--liquid-light: #4fd58f;--liquid-mid: #12a15a;--liquid-dark: #0a6d3b;--liquid-ink: #fff;--liquid-shadow: 0 1px 2px #0007}[data-potion-color="4"]{--liquid-light: #6fe3f0;--liquid-mid: #12b3c6;--liquid-dark: #0a7c8a;--liquid-ink: #04232a}[data-potion-color="5"]{--liquid-light: #6e8df0;--liquid-mid: #2a4fc9;--liquid-dark: #1a318a;--liquid-ink: #fff;--liquid-shadow: 0 1px 2px #0007}[data-potion-color="6"]{--liquid-light: #bc8cf5;--liquid-mid: #8b46e0;--liquid-dark: #5e23a8;--liquid-ink: #fff;--liquid-shadow: 0 1px 2px #0007}[data-potion-color="7"]{--liquid-light: #f58cc8;--liquid-mid: #de3e9b;--liquid-dark: #a01e6c;--liquid-ink: #fff;--liquid-shadow: 0 1px 2px #0007}[data-potion-color=smoke]{--liquid-light: #a5a9d8;--liquid-mid: #6c70a8;--liquid-dark: #474a7e;--liquid-ink: #fff;--liquid-shadow: 0 1px 2px #0007}.potions-sparks{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none}.potions-sparks i{position:absolute;bottom:-10px;width:5px;height:5px;border-radius:50%;background:var(--potion-gold);animation:potions-float linear infinite}.potions-setup{min-height:0;overflow-y:auto;margin:12px 0 0;background:var(--potion-panel);border:2px solid var(--potion-line);border-radius:24px}.potions-setup h2{color:var(--potion-gold);font-size:25px;font-weight:700}.potions-setup p{font-size:13px}.potions-levels{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:12px;margin:20px 0 0;padding:5px;list-style:none}.potions-level{display:grid;align-content:center;justify-items:center;gap:2px;width:100%;aspect-ratio:1;margin:0;padding:0;border:0;border-radius:18px;background:linear-gradient(#8b5cf6,#6d28d9);color:#fff;box-shadow:0 4px #43188f,inset 0 0 0 2px #ffffff40;font-size:19px;font-weight:700;font-variant-numeric:tabular-nums}.potions-level.cleared{background:linear-gradient(#5eead4,#10b981);box-shadow:0 4px #065f46,inset 0 0 0 2px #ffffff4d;color:#06331f}.potions-level.next{box-shadow:0 4px #43188f,inset 0 0 0 2px #ffd166,0 0 14px #ffd16630}.potions-level.current{outline:2px solid var(--potion-gold);outline-offset:2px}.potions-level-stars{min-height:12px;font-size:10px;letter-spacing:1px}.potions-rules{position:absolute;top:2px;right:0;width:44px;z-index:5;font-size:13px;color:var(--potion-soft)}.potions-rules summary{min-height:44px;display:flex;justify-content:flex-end;align-items:center;padding:12px;border-radius:14px;background:#ffffff12;box-shadow:inset 0 0 0 2px var(--potion-line);list-style:none}.potions-rules summary::-webkit-details-marker{display:none}.potions-rules summary span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.potions-rules[open]{width:min(350px,100%);max-height:100%;overflow:auto;padding:0 14px 14px;border:2px solid var(--potion-line);border-radius:18px;background:#25104a;box-shadow:0 10px 25px #0008}.potions-rules[open] summary{padding-right:0;margin-bottom:8px;background:none;box-shadow:none}.potions-complete{position:fixed;top:0;right:0;bottom:0;left:0;width:min(400px,calc(100vw - 32px));height:fit-content;max-width:none;max-height:calc(100dvh - 32px);overflow-y:auto;margin:auto;padding:30px 20px 24px;border:2px solid #ffffff33;border-radius:28px;background:linear-gradient(#3b1a6e,#25104a);text-align:center;box-shadow:0 24px 60px #0009;animation:potions-modal .45s cubic-bezier(.34,1.56,.64,1)}.potions-complete::backdrop{background:#080214b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.potions-complete-close{position:absolute;top:6px;right:6px;z-index:1}.potions-complete h2{margin:8px 0 4px;color:var(--potion-gold);font-weight:700;font-size:26px;text-shadow:0 3px 0 #5a1e9680}.potions-complete p{font-size:13px}.potions-win-emblem{color:var(--potion-gold)}.potions-win-stars{gap:14px;margin:12px 0}.potions-win-stars svg{width:44px;height:44px}.potions-win-stars .earned{animation:potions-star .4s cubic-bezier(.34,1.8,.64,1) both;animation-delay:calc(.2s + var(--star-index) * .22s);filter:drop-shadow(0 0 9px #ffd16680)}.potions-phrase-list{display:grid;gap:8px;margin:14px 0;padding:0;list-style:none;text-align:left}.potions-phrase-list li{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:14px;background:#0004;box-shadow:inset 0 0 0 2px #ffffff14}.potions-phrase-list li>span{display:grid;flex:1;min-width:0;gap:2px}.potions-phrase-list strong{font-size:17px}.potions-complete .button-row{justify-content:center;gap:12px}.potions-confetti{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;overflow:hidden;pointer-events:none}.potions-confetti i{position:absolute;top:-16px;width:8px;height:12px;border-radius:3px;background:var(--liquid-mid);animation:potions-confetti linear both}@keyframes potions-float{0%{transform:translateY(0) scale(.6);opacity:0}12%{opacity:.6}to{transform:translateY(-90dvh) scale(1.15);opacity:0}}@keyframes potions-land{0%{transform:scaleX(.55)}to{transform:scaleX(1)}}@keyframes potions-refuse{25%{transform:translate(-6px)}50%{transform:translate(6px)}75%{transform:translate(-4px)}}@keyframes potions-done{40%{transform:scale(1.04)}}@keyframes potions-burst{0%{transform:scale(1);opacity:1}to{transform:translate(var(--burst-x),var(--burst-y)) scale(0);opacity:0}}@keyframes potions-modal{0%{transform:scale(.6) translateY(40px);opacity:0}to{transform:none;opacity:1}}@keyframes potions-star{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}@keyframes potions-confetti{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(var(--drift),70dvh) rotate(720deg);opacity:0}}@media(max-width:760px){.potions-main{padding:6px 12px calc(6px + env(safe-area-inset-bottom))}.potions-game{gap:6px;padding-bottom:4px}.potions-target{font-size:12px;padding:6px 8px;gap:6px}.potions-target-native{font-size:14px}.potions-controls{gap:7px}.potions-controls .button{padding-inline:6px;font-size:12px;gap:4px}}@media(max-width:375px){.potions-controls .button{flex-direction:column;gap:2px;padding-block:6px;font-size:11px}}@media(prefers-reduced-motion:reduce){.potions-player *,.potions-player *:before,.potions-player *:after,.potions-complete,.potions-complete *,.potions-fly{animation:none!important;transition:none!important}.potions-sparks,.potions-burst,.potions-confetti{display:none}}.phrase-table{width:100%;border-collapse:collapse;font-size:.9rem;table-layout:auto}.phrase-table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;padding:6px 8px;border-bottom:2px solid var(--line, #ccc);white-space:nowrap}.phrase-table td{padding:6px 8px;border-bottom:1px solid var(--line, #ddd);vertical-align:top;overflow-wrap:anywhere}.phrase-table tbody tr:hover{background:#7f7f7f14}.phrase-table td[data-label=Source],.phrase-table td[data-label=State]{overflow-wrap:break-word;word-break:normal}.phrase-zh{font-size:1.1rem}.phrase-links{display:flex;flex-wrap:wrap;gap:0 .6em}.phrase-grammar{flex-direction:column;gap:2px}.phrase-link-item{color:inherit;text-decoration:none}.phrase-link-item:hover{text-decoration:underline}.phrase-link-item.unknown{color:var(--muted, #8b95a5);opacity:.7}.phrase-actions{white-space:nowrap}.phrase-actions{display:flex;align-items:center;gap:4px}.phrase-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.phrase-word-link{font-size:.8rem}@media(max-width:760px){.phrase-table,.phrase-table tbody,.phrase-table tr,.phrase-table td{display:block;width:100%;box-sizing:border-box}.phrase-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.phrase-table tr{border-bottom:1px solid var(--line, #ccc);padding:6px 0}.phrase-table td{border:0;padding:2px 4px;display:flex;gap:8px}.phrase-table td[data-label]:before{content:attr(data-label);flex:0 0 4.5rem;font-size:.7rem;text-transform:uppercase;opacity:.65;padding-top:3px}.phrase-table td:empty{display:none}}@font-face{font-family:LW Parts;src:url(./lw-parts-Cnj6harg.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+2E80-2E99,U+2E9B-2EF3,U+3406,U+340C,U+342C-342D,U+3431,U+34B8,U+34DE,U+353E,U+3775,U+382F,U+3886,U+389F,U+38CE,U+4343,U+49F9,U+5020,U+51A1,U+9FB6,U+E000-E15C}:root{--part-c1: #58a6ff;--part-c2: #f2a65a;--part-c3: #6fdc98;--part-c4: #ec8ad2;--part-c5: #4fd1d9;--part-c6: #e6d25a}:root[data-theme=light]{--part-c1: #075bbb;--part-c2: #b35900;--part-c3: #17784a;--part-c4: #ad2f7c;--part-c5: #007f8a;--part-c6: #8a6d00}.cmp{margin:6px 0;min-width:0}.cmp-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}.cmp-line{margin:4px 0;font-size:13px;line-height:1.8;color:var(--text-secondary);cursor:pointer;min-width:0}.cmp-glyph{font-family:inherit}.cmp-head{font-size:18px;color:var(--text)}.cmp-tp{white-space:nowrap;padding:0 2px;border-bottom:3px solid transparent;border-radius:2px}.cmp-tp>.cmp-glyph,.cmp-tp>a .cmp-glyph{font-size:18px;color:var(--text)}.cmp-tp.coloured{border-bottom-color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent)}.cmp-tp.none>.cmp-glyph{border-bottom:1px dashed var(--muted)}.cmp-note{font-style:normal;color:var(--muted);font-size:11px}.cmp-link{color:var(--accent);border-bottom:1px dotted var(--accent)}.cmp-toggle{font:inherit;font-size:11.5px;color:var(--accent);background:none;border:0;padding:0 2px;min-height:28px;white-space:nowrap}.cmp-boxes{display:grid;gap:4px;margin:6px 0}.cmp-box{--c: var(--line-strong);display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:2px 8px;padding:3px 8px 3px 4px;min-height:40px;border:1px solid var(--line-strong);border-left-width:4px;border-radius:6px;background:var(--surface-inset);font-size:12px;line-height:1.25;text-align:left}.cmp-box.coloured{border-color:var(--c);background:color-mix(in srgb,var(--c) 13%,var(--surface))}.cmp-box.none{border-style:dashed;border-left-style:solid}.cmp-bg{width:34px;height:34px;display:grid;place-items:center;font-size:26px;line-height:1;border-radius:4px;background:var(--surface);grid-row:span 2}.cmp-bg a{color:inherit;display:grid;place-items:center;width:100%;height:100%;border-bottom:1px dotted var(--accent)}.cmp-bm{min-width:0;display:flex;flex-direction:column;gap:1px}.cmp-mean{font-weight:650;font-size:13px;overflow-wrap:anywhere}.cmp-box.none .cmp-mean{font-weight:400;font-style:italic;color:var(--muted)}.cmp-chips{display:flex;flex-wrap:wrap;gap:3px 5px;align-items:center}.cmp-chip{display:inline-block;padding:0 5px;border-radius:3px;font-size:10px;line-height:15px;border:1px solid var(--line-strong);background:transparent;color:var(--text-secondary);white-space:nowrap;min-height:0}.cmp-chip.meaning{color:var(--text);background:color-mix(in srgb,var(--c) 22%,transparent)}.cmp-chip.sound{border-style:dotted;color:var(--text)}.cmp-chip.both{border-style:double;border-width:3px;line-height:11px;color:var(--text)}.cmp-chip.bound{border-style:dashed}.cmp-chip.form{cursor:pointer;color:var(--accent)}.cmp-expand{grid-column:1 / -1;justify-self:start;font:inherit;font-size:11px;color:var(--accent);background:none;border:0;padding:1px 0 0 42px;min-height:24px}.cmp-forms{margin:-2px 0 2px 38px;padding:3px 8px;border-left:2px dotted var(--line-strong);color:var(--text-secondary);line-height:1.6}.cmp-forms .cmp-glyph{font-size:15px;color:var(--text)}.cmp-sub{margin:2px 0 4px 18px;padding-left:8px;border-left:2px solid var(--line-strong);display:grid;gap:4px}.cmp-box.nested{min-height:34px;grid-template-columns:28px minmax(0,1fr)}.cmp-box.nested .cmp-bg{width:28px;height:28px;font-size:21px}.cmp-box:has(>.cmp-actions){grid-template-columns:34px minmax(0,1fr) auto}.cmp-box.nested:has(>.cmp-actions){grid-template-columns:28px minmax(0,1fr) auto}.cmp-actions{grid-column:3;grid-row:1;align-self:center}.cmp-missing{color:var(--muted)}.cmp-row-plain{align-items:center;justify-content:space-between}.cmp-colour{width:32px;height:32px;min-height:32px;border:1px solid var(--line);border-radius:6px;flex-shrink:0}.cmp-colour.is-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.character-native{font-family:Kaiti SC,KaiTi,STKaiti,LW Parts,serif;font-size:40px;font-weight:400;line-height:1.1;margin:0}.character-card{display:flex;flex-direction:column}.character-artwork-state{text-align:center}.character-word-context{flex:1;overflow-wrap:anywhere}.character-word-context>p{margin:10px 0}.character-word-context [lang]{font-size:18px}.character-word-meaning{display:block;margin-top:4px}.character-card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.character-card-actions .button{min-height:36px;padding:6px 10px}.character-membership-note{margin:8px 0 0}.character-head{display:flex;align-items:flex-start;gap:10px}.character-head>.phrase-row-text{flex:1;min-width:0}.character-head .card-topline{margin:0}.character-more{margin-top:8px;font-size:12px;color:var(--muted)}.character-more summary{cursor:pointer;min-height:28px;display:inline-flex;align-items:center;gap:4px}.character-more p{margin:6px 0}main.writing-main{padding:8px 12px;max-width:640px}.writing-page{display:flex;flex-direction:column;gap:6px}.writing-header{position:relative;display:flex;align-items:center;gap:8px;min-height:40px}.writing-back{display:inline-flex;align-items:center;gap:3px;min-height:32px;font-size:12px;color:var(--muted);flex-shrink:0}.writing-title{flex:1;min-width:0;margin:0;display:flex;align-items:center;gap:8px;font-size:13px;overflow:hidden}.writing-title-character,.writing-title-hidden{font-family:Kaiti SC,KaiTi,STKaiti,LW Parts,serif;font-size:30px;line-height:1;flex-shrink:0}.writing-meaning{margin:0;line-height:1.4;overflow-wrap:anywhere}.writing-meaning [lang]{font-family:Kaiti SC,KaiTi,STKaiti,LW Parts,serif;font-size:18px}.writing-title-word{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.writing-help-button{width:28px;height:28px;min-height:28px;flex-shrink:0;margin-block:-4px}.writing-sheet{position:absolute;z-index:20;top:100%;right:0;width:min(360px,calc(100vw - 24px));max-height:70dvh;overflow-y:auto;padding:12px 14px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);box-shadow:0 8px 28px #0004;font-size:12px;line-height:1.5}.writing-sheet p{margin:0 0 8px}.writing-sheet-close{position:absolute;top:4px;right:4px;width:28px;height:28px;min-height:28px}.writing-sheet>p:first-of-type{padding-right:28px}.writing-workbench{min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px}.writing-statusline{position:relative;width:var(--writing-pad);display:flex;align-items:center;gap:10px;font-size:12px;min-height:20px}.writing-statusline>span:first-child{flex:1}.writing-place{color:var(--muted)}.writing-phases{list-style:none;display:flex;gap:3px;padding:0;margin:0}.writing-phases li{width:22px;height:5px;border-radius:3px;background:var(--line-strong)}.writing-phases li[data-done]{background:var(--accent);opacity:.55}.writing-phases li[aria-current]{background:var(--accent);opacity:1}.writing-skipped{margin:0;width:var(--writing-pad)}.writing-page{--writing-pad: min(100%, 520px, max(220px, calc(100dvh - 285px) ))}.writing-pad{display:block;width:var(--writing-pad);aspect-ratio:1;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:crosshair}.writing-gridlines{fill:none;stroke:var(--line);stroke-width:.3;stroke-dasharray:1.5 1.5}.writing-guide{fill:none;stroke:var(--line-strong);stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round}.writing-guide.completed,.writing-guide.replayed,.writing-guide.replaying{stroke:var(--text)}.writing-guide.replaying{animation:writing-stroke .7s ease-out both}@keyframes writing-stroke{0%{stroke-dashoffset:var(--stroke-length)}to{stroke-dashoffset:0}}.writing-direction path{fill:none;stroke:var(--accent);stroke-width:1}.writing-direction circle{fill:var(--accent)}.writing-direction text{fill:var(--on-accent);font:5px Segoe UI,sans-serif;text-anchor:middle;dominant-baseline:central}.writing-arrow{fill:var(--accent)}.writing-ink{fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.writing-controls{width:var(--writing-pad);display:flex;align-items:center;gap:4px}.writing-controls .icon-button{width:40px;height:40px;min-height:40px;border:1px solid var(--line);border-radius:6px;flex-shrink:0}.writing-controls .writing-step{flex-shrink:0;white-space:nowrap;min-height:40px;padding:4px 10px;gap:2px}.writing-progress{flex:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:3px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.writing-progress[data-complete]{color:var(--accent);font-weight:700}.writing-feedback{width:var(--writing-pad);height:34px;margin:0;font-size:12px;line-height:1.4;overflow:hidden;color:var(--muted)}@media(max-width:430px){.writing-step span{display:none}}@media(prefers-reduced-motion:reduce){.writing-guide.replaying{animation:none}}.handwriting{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:10px;margin-bottom:16px;display:grid;gap:8px;max-width:440px}.handwriting-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.handwriting-tools{display:inline-flex;gap:4px}.handwriting-tools .icon-button{width:40px;height:40px;min-height:40px;border:1px solid var(--line)}.handwriting-pad{display:block;width:100%;aspect-ratio:1;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:crosshair}.handwriting-status{margin:0;min-height:20px}.handwriting-candidates{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:74px;gap:6px}.handwriting-candidates li{min-width:0}.handwriting-candidate{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--line);border-radius:8px;background:var(--surface-raised);color:var(--text);padding:0}.handwriting-character{font-size:32px;line-height:1.1}.handwriting-reading{font-size:12px;color:var(--muted)}.search-field button.search-draw{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;flex:none;border:0;background:transparent;color:var(--accent);font-weight:600;padding:8px 0 8px 4px;min-height:40px}.practice-playlist.writing-overlay[open]{display:flex;flex-direction:column;width:min(720px,calc(100vw - 24px));height:calc(100dvh - 16px)}.writing-overlay-content{padding-top:6px}@media(max-width:640px){.practice-playlist.writing-overlay[open]{width:100%;height:calc(100dvh - max(12px,env(safe-area-inset-top)))}}.writing-characters{width:var(--writing-pad);display:flex;justify-content:space-between;gap:4px}.writing-characters .writing-char{min-height:36px;padding:4px 10px;gap:6px;white-space:nowrap;font-size:13px}main.writing-main,.writing-page,.writing-page>*{min-width:0;max-width:100%}.writing-page section,.writing-page .panel{min-width:0}.writing-controls,.writing-characters,.writing-statusline,.writing-feedback,.writing-skipped{max-width:100%;min-width:0}.writing-controls .writing-progress{flex:1 1 0;min-width:0;overflow:hidden}.writing-char-short{display:none}@media(max-width:430px){.writing-controls{gap:3px}.writing-controls .icon-button{width:36px;height:40px}.writing-controls .writing-step{padding:4px 6px}.writing-characters .writing-char{padding:4px 8px;gap:4px;min-width:0;flex:0 1 auto}.writing-char-long{display:none}.writing-char-short{display:inline}}@media(max-width:380px){.writing-controls .icon-button{width:34px}.writing-controls .writing-step span{display:none}.writing-controls .writing-step{padding:4px 8px}}.handwriting-engine{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;margin:2px 0 6px}.handwriting-engine-toggle{display:inline-flex;gap:2px}.handwriting-engine-option{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:6px;padding:2px 8px;font-size:.75rem;min-height:24px}.handwriting-engine-option[aria-pressed=true]{color:var(--text);background:var(--surface-raised)}.handwriting-engine-option:disabled{opacity:.4}.handwriting-candidate.topped-up{position:relative;border-style:dashed}.handwriting-candidate.topped-up:after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--muted)}.character-card-actions .row-menu{margin-left:auto}.character-card-actions button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.character-head .tag.can-write{color:var(--accent);border-color:var(--accent)}.writing-parts{min-width:0}.writing-parts .cmp{margin:0}.writing-parts .cmp-line{margin:2px 0}.dr-teach-player{scroll-margin-top:60px}.dr-teach-player .writing-page{--writing-pad: min(100%, 520px, max(220px, calc(100dvh - 340px) ))}.select-bar{position:sticky;top:57px;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0;margin:4px 0;background:var(--bg, var(--surface, Canvas))}.select-bar .select-count{font-weight:600}.select-item{display:flex;flex-direction:column;gap:4px;min-width:0}.select-item.picked>:not(.select-row){outline:2px solid var(--accent);border-radius:12px}.select-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.select-row:empty{display:none}.select-pick{display:inline-flex;align-items:center;gap:8px;min-height:36px}.select-pick input{width:22px;height:22px}.tag.not-yet{color:var(--muted, inherit)}.word-grid .select-item>.word-card{flex:1}.select-bar .button{min-height:40px;padding:6px 12px;font-size:.9rem}.select-bar{border-bottom:1px solid var(--border, rgba(128,128,128,.3))}.character-head{align-items:flex-start}.character-head-tools{display:flex;align-items:center;gap:4px;flex-shrink:0}.character-head-tools .icon-button.character-info-button{width:32px;height:32px;min-height:32px;border:1px solid var(--line);border-radius:6px}.character-reading{margin:0;min-height:0;font-size:15px}.character-reading:empty{display:none}.character-meaning{margin:2px 0 4px;font-size:15px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}.character-head .card-topline{margin:2px 0 0;display:flex;gap:6px;flex-wrap:wrap}.character-word-context{margin:6px 0}.character-word-context>.character-more-words{font-size:12px;min-height:28px}.character-info{margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-raised)}.character-info p{margin:4px 0}.writing-controls .icon-button.is-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.update-bar{position:fixed;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface-raised, var(--surface));box-shadow:0 8px 28px #0004}.update-bar .button{min-height:36px;padding:4px 12px}.pocket-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100000;background:#000;color:#555;touch-action:none;user-select:none;-webkit-user-select:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center;cursor:default}.pocket-hint{color:#aaa;font-size:1.1rem;max-width:20rem;margin:0}.pocket-armed{color:#7fd0ff;font-size:1.4rem}.pocket-status{color:#3a3a3a;font-size:.9rem;margin:0}.pocket-status-toggle{position:absolute;bottom:1.5rem;background:none;border:1px solid #222;color:#333;border-radius:.5rem;padding:.4rem .8rem;font-size:.75rem}.row-menu{position:relative;flex:0 0 44px}.row-menu>.icon-button{font-size:1.25rem;line-height:1}.row-menu-list{position:absolute;right:0;top:100%;z-index:20;min-width:220px;display:grid;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--surface, #fff);box-shadow:0 6px 20px #0000002e}.row-menu-list .menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.row-menu-list .menu-item:hover{background:var(--surface-raised)}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:16px;background:#0007}.confirm-dialog{width:min(100%,420px);display:grid;gap:10px;padding:16px;border-radius:12px;background:var(--surface, #fff);box-shadow:0 12px 40px #0005}.confirm-dialog h2{margin:0;font-size:1.1rem}.confirm-dialog p{margin:0;overflow-wrap:anywhere}.confirm-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.confirm-actions .button{margin:0}.confirm-actions .button.danger{background:#b3261e;border-color:#b3261e;color:#fff}.dr{max-width:1100px;display:grid;gap:14px}.dr .panel{margin-bottom:0}.dr-panel{padding:16px}.dr-panel h2,.dr-h2{font-size:15px;margin:0 0 8px}.dr-columns{display:grid;gap:14px;grid-template-columns:1fr 1fr;align-items:start}.dr-rows{list-style:none;margin:0;padding:0}.dr-rows li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.dr-rows li:first-child{border-top:0}.dr-rows li>div{flex:1;min-width:0;display:grid;gap:2px}.dr-rows .button{min-height:36px;padding:6px 12px}.dr-source{display:grid;gap:4px;border:2px solid var(--accent);border-radius:8px;padding:8px 10px;background:var(--surface-inset)}.dr-source select{min-height:36px;font-size:14px;font-weight:600}.dr-from{margin-top:12px;display:grid;gap:8px}.dr-from-top{margin:4px 0 8px}.dr-classic{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 16px}.dr-classic>div:first-child{display:grid;gap:2px}.dr-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.dr-toolbar h2{margin:0}.dr-setbar{align-items:end;justify-content:flex-start}.dr-format{margin-left:auto;display:grid;gap:4px;align-self:end;justify-items:start;text-align:left}.dr-setbar .button{align-self:end}.dr-cards{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.dr-card{padding:12px}.dr-card .word-native{font-size:28px;margin:2px 0}.dr-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}.dr-table th{text-align:left;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary)}.dr-table th,.dr-table td{padding:7px 8px;border-bottom:1px solid var(--line)}.dr-zh{font-size:24px}.dr-run{display:grid;gap:14px;max-width:640px}.dr-progress{height:4px;border-radius:2px;background:var(--surface-inset);overflow:hidden}.dr-progress span{display:block;height:100%;background:var(--accent)}.dr-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.dr-actions .button{flex:1 1 120px}.dr-center{text-align:center;margin:0}.dr-pinyin-prompt{font-size:22px;text-align:center}.dr-play{vertical-align:middle}.dr-pad{min-height:190px;border:1px dashed var(--line);border-radius:8px;display:grid;place-items:center;background:linear-gradient(var(--line),var(--line)) center / 1px 100% no-repeat,linear-gradient(var(--line),var(--line)) center / 100% 1px no-repeat,var(--surface-inset)}.dr-reveal{display:grid;justify-items:center}.dr-reveal .dr-zh{font-size:40px}.dr-selfmark{display:grid;gap:8px;grid-template-columns:repeat(3,1fr)}.dr-selfmark .button{padding-inline:6px}.dr-mark[aria-pressed=true]{background:var(--surface-selected);color:var(--accent);border-color:var(--accent)}.dr-free{display:grid;gap:4px}.dr-free input{min-height:44px;font-size:16px}.dr-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dr-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.dr-grid .answer-option{width:100%;text-align:left}.dr-modes{justify-self:start}.dr-speak{display:grid;place-items:center;min-height:120px}.dr-model{font-size:26px;margin:2px 0}.dr-steps{display:flex;gap:6px;list-style:none;margin:0;padding:0;font-size:11px}.dr-steps li{flex:1;text-align:center;padding:6px 2px;border:1px solid var(--line);border-radius:6px;color:var(--text-secondary)}.dr-steps li.on{background:var(--surface-selected);color:var(--accent);border-color:var(--accent)}.dr-phase{margin:0;text-align:center}.dr-ring{width:96px;height:96px;border:5px solid var(--accent);border-radius:50%;display:grid;place-items:center;font-size:40px;margin:0 auto}.dr-big{display:flex;justify-content:center;gap:14px}.dr-big .button{min-width:84px;min-height:84px;border-radius:50%}.dr-big .primary{min-width:104px;min-height:104px}.dr-player{display:flex;align-items:center;gap:10px}.dr-track{flex:1;display:grid;gap:4px}.dr-lines{list-style:none;margin:0;padding:0;display:grid;gap:8px}.dr-lines li{display:grid;grid-template-columns:24px 1fr;column-gap:8px}.dr-lines li span:nth-of-type(2){grid-column:2}.dr-lines li:has(.dr-line-play){grid-template-columns:24px 1fr auto}.dr-lines li .dr-line-play{grid-column:3;grid-row:1;padding:4px 8px}.dr-quiz{list-style:none;margin:0;padding:0;display:grid;gap:10px;max-width:640px}.dr-quiz .panel{padding:12px;display:grid;gap:8px}.dr-qhead{display:flex;align-items:center;gap:10px}.dr-inline{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0}.dr-inline .answer-option{flex:1 1 140px}.dr-sticky{position:sticky;bottom:0;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:8px;max-width:640px}.dr-stats{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;font-size:13px}.dr-stats strong{font-size:20px;margin-right:4px}.dr .completion{max-width:640px}.dr .completion .dr-table{text-align:left}.dr-hint-tag{justify-self:start;margin:0}@media(max-width:760px){.dr-columns{grid-template-columns:1fr}.dr-format{margin-left:0;flex:1 1 100%;order:3}.dr-rows li{flex-wrap:wrap}}@media(min-width:761px){.dr-table td:first-child,.dr-table th:first-child,.dr-table .button{white-space:nowrap}}.dr-target{background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:0 3px;font-weight:700}.dr-written{color:var(--accent);opacity:.7;font-weight:600}.dr-hints{align-items:center}.dr-check{display:flex;gap:8px;align-items:center;justify-content:center;font-size:14px}.dr-model-box{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--surface-inset);text-align:center}.dr-modes-bar{justify-content:flex-start}.dr-qtitle{margin:0;color:var(--text-secondary);font-weight:600}.dr-strokepad{display:grid;gap:6px;justify-items:center}.dr-pad-svg{width:min(100%,260px)}.dr-end-panel{margin-inline:0}.dr-result{margin:0;padding:10px 12px}.dr-tag-hint{color:var(--accent)}.dr-tag-missed{color:var(--danger)}.dr-quiz .dr-qhead h2{margin:0}@media(max-width:760px){.dr-table{font-size:12px}.dr-table th,.dr-table td{padding:6px 4px}}.dr-quiz{margin-bottom:12px}.dr-table .dr-action-cell{text-align:right;white-space:nowrap;width:1%}.dr-table th{white-space:nowrap}.dr-table td{vertical-align:top}.dr-table .button{min-height:32px;padding:4px 10px}.dr .button-row{margin-top:10px}.dr,.dr-columns>*,.dr-panel,.dr-run,.dr-source,.resume-list,.resume-row,.resume-main,.page-heading>div{min-width:0;max-width:100%}.dr-source select{width:100%;max-width:100%;min-width:0;text-overflow:ellipsis}.dr-panel h2,.dr-rows strong,.dr-rows .small,.resume-main strong,.resume-main .small,.dr .page-heading h1,.dr .page-heading p,.dr-wrap,.back-link{overflow-wrap:anywhere}.resume-main>div{min-width:0;display:grid}.dr-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}@media(max-width:760px){.dr-columns{grid-template-columns:minmax(0,1fr)}}.dr-write-line{overflow-wrap:anywhere}.dr-teach{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}.dr-teach>*,.dr-teach-player{min-width:0;max-width:100%}.dr-run{grid-template-columns:minmax(0,1fr)}.dr-order{display:grid;justify-items:center;gap:8px}.dr-order-text .dr-zh{font-size:32px}.dr-order-row{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.dr-order-svg{width:min(100%,150px)}.dr-missed-chars{text-align:left}.dr-run button,.dr-pad,.dr-pad *,.dr-order,.dr-order *,.dr-reveal,.dr-strokepad,.dr-selfmark{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.hf-stage{display:grid;gap:14px;justify-items:center;text-align:center}.hf-phase{margin:0;font-weight:600}.hf-instruction{margin:0;font-size:1rem;display:flex;align-items:center;justify-content:center;gap:8px}.hf-tag{flex:none;white-space:nowrap;font-size:.75rem;font-weight:700;padding:1px 8px;border-radius:999px;border:1px solid currentColor;opacity:.8}.hf-tag.hf-new{opacity:1;background:var(--accent, #0b6b5d);color:#fff;border-color:transparent}.hf-pocket .hf-instruction{color:#9fb0c0}.hf-prompt{margin:0;font-size:clamp(1.8rem,9vw,2.8rem);line-height:1.25;min-height:3.2em;display:flex;align-items:center;justify-content:center;overflow-wrap:anywhere}.hf-stage progress{width:100%}.hf-controls{display:flex;gap:16px;align-items:center;justify-content:center}.hf-controls .button{min-width:56px;min-height:56px;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center}.hf-play{min-width:72px;min-height:72px}.hf-settings{display:grid;gap:12px}.hf-settings label{display:grid;gap:4px}.hf-settings .hf-check{display:flex;align-items:center;gap:8px}.hf-display{display:grid;gap:10px;justify-items:center;text-align:center;width:100%}.hf-cue,.hf-answer{margin:0;font-size:1.1rem}.hf-answer{font-weight:600;font-size:1.4rem}.hf-pinyin{margin:0;font-size:1.3rem;color:var(--muted, #666)}.hf-pocket{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0b0f14;color:#e8edf2;touch-action:none;user-select:none;-webkit-user-select:none;display:grid;place-items:center;padding:24px}.hf-pocket .hf-pinyin,.hf-pocket .hf-cue{color:#9fb0c0}.hf-pocket .hf-prompt{font-size:clamp(2.4rem,14vw,4rem)}.hf-pocket progress{width:100%}.hf-pocket-hint{position:absolute;bottom:24px;left:0;right:0;margin:0;text-align:center;color:#7d8d9c;font-size:.9rem}.hf-ring{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:140px;height:140px;display:grid;place-items:center;background:#0b0f14d9;border-radius:50%}.hf-ring svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.hf-ring-track{fill:none;stroke:#2a3541;stroke-width:8}.hf-ring-fill{fill:none;stroke:#6cc4ff;stroke-width:8;stroke-linecap:round}.hf-ring-count{font-size:3rem;font-weight:700}.dr-programs .dr-rows li:first-child{border-top:0}.dr-known{margin:0 0 .75rem;color:var(--muted, inherit)}.dr-known-words{font-size:1.6rem;color:var(--text, inherit)}.dr-count-picker{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.dr-count-picker input{width:4.5rem}.hf-added{margin:0;font-weight:600;color:var(--accent, inherit)}.hf-voices{display:grid;gap:12px}.hf-voices label{display:grid;gap:4px}.hf-voices select,.hf-settings select{max-width:100%;min-width:0}.hf-startbar{position:sticky;bottom:0;z-index:5;display:flex;justify-content:center;padding:10px 0;background:var(--bg, #fff)}.hf-startbar .button{width:100%;justify-content:center}.hf-section{font-size:1.25rem;line-height:1.5;min-height:0}.dr-skill-pickers{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.4rem}.resume-row{flex-wrap:wrap;gap:4px 8px}.resume-row .resume-text{flex:1 1 0;min-width:0;display:grid;gap:4px;overflow-wrap:anywhere}.resume-row .resume-text .small{margin-top:0}@media(max-width:520px){.resume-row .resume-text{flex:1 0 100%}}.resume-row .resume-actions{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px 8px}.resume-row .resume-actions .small-button{min-height:36px;padding:6px 12px;font-size:.9rem;gap:6px}.resume-row .resume-actions>.save-trigger.icon-only,.resume-row .resume-actions>.icon-button{flex:0 0 40px}.resume-row .dr-confirm{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding-top:4px}.resume-row .dr-confirm span{flex:1 1 auto}.resume-row .dr-confirm .button{margin:0;align-self:center}.dr-count-label{display:grid;gap:2px;flex:1 1 100%}.hf-tools{display:flex;flex-wrap:wrap;gap:8px}.hf-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:#0007}.hf-sheet{width:100%;max-height:85vh;overflow-y:auto;display:grid;gap:12px;padding:16px;border-radius:16px 16px 0 0;background:var(--surface, #fff);box-shadow:0 -8px 30px #0004}.hf-sheet-head{display:flex;align-items:center;justify-content:space-between}.hf-sheet-head h2{margin:0}.hf-sheet-body{display:grid;gap:12px}@media(min-width:720px){.hf-sheet-backdrop{align-items:center}.hf-sheet{width:440px;border-radius:12px;box-shadow:0 12px 40px #0005}}.hf-sheet.wide{max-height:92vh}@media(min-width:720px){.hf-sheet.wide{width:720px}}.dr-select{display:grid;gap:10px}.dr-select .segmented{justify-self:start}.dr-summary{margin:0;font-weight:600}.dr-skill-note{margin:4px 0 0}.dr-skill-block{border-top:2px solid var(--line);margin-top:8px;padding-top:8px}.dr-programs .dr-rows li{flex-wrap:wrap}.dr-programs .dr-rows li>div{flex:1 1 100%}.dr-programs .dr-rows li>.button-row{margin-top:0;display:flex;flex-wrap:wrap;gap:8px}.dr-stack{display:grid;gap:14px;min-width:0}.resume-row .resume-actions>.save-trigger.icon-only{flex:0 0 44px;width:44px;min-width:0;height:44px;padding:0;border:0;background:transparent;color:var(--text-secondary)}.resume-row .resume-text strong .in-progress{margin-left:8px;vertical-align:middle;font-weight:500}.dr-actions{display:inline-flex;gap:6px;flex:none;align-items:center}.dr-icon{position:relative;display:inline-flex;flex:0 0 auto}.dr-icon .dr-check{position:absolute;right:-6px;bottom:-6px;color:var(--success, #1a7f37);background:var(--surface, #fff);border-radius:50%}.dr-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.resume-row .resume-actions{gap:6px}.resume-row .resume-actions .small-button{padding:6px 10px;gap:5px}.resume-row .resume-actions>.save-trigger.icon-only,.resume-row .resume-actions>.row-menu,.resume-row .resume-actions>.row-menu>.icon-button{flex:0 0 36px;width:36px;min-width:0;height:36px}.resume-row .resume-actions{gap:6px 4px}.resume-row .resume-actions .small-button{padding:6px 9px}.resume-row .resume-actions>.save-trigger.icon-only,.resume-row .resume-actions>.row-menu,.resume-row .resume-actions>.row-menu>.icon-button{flex-basis:32px;width:32px;height:36px}.dr-tiles{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}.dr-tiles li{min-width:0}.dr-tiles li.open{grid-column:1 / -1;order:0}.dr-tile{width:100%;min-height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 6px;border:1px solid var(--line, #d0d5dd);border-radius:10px;background:var(--surface, #fff);color:inherit;font:inherit;cursor:pointer}.dr-tile[aria-expanded=true]{border-color:var(--accent, #2f6fed)}.dr-tile-zh{font-size:1.5rem;line-height:1.2;overflow-wrap:anywhere;text-align:center}.dr-tile-kind{font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;opacity:.6}.dr-tile-card{margin-top:8px}.resume-row .resume-actions.history-actions{justify-content:flex-end;gap:4px}.resume-row .resume-actions>.icon-button{flex:0 0 40px;width:40px;height:40px}.resume-row .resume-actions>.icon-button.primary-icon{background:var(--accent);color:var(--on-accent)}.resume-row .resume-actions>.icon-button.primary-icon:hover{filter:brightness(1.1)}.char-intro{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:12px 14px;display:grid;gap:6px;min-width:0}.char-intro .eyebrow{margin:0}.char-intro-top{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;align-items:center}.char-intro-glyph{display:grid;place-items:center;aspect-ratio:1;border:1px solid var(--line);border-radius:10px;background:var(--surface-inset);font-family:Kaiti SC,KaiTi,STKaiti,LW Parts,serif;font-size:80px;line-height:1}.char-intro-name{font-family:Kaiti SC,KaiTi,STKaiti,LW Parts,serif;font-size:34px;font-weight:400;margin:0;line-height:1.1}.char-intro-reading,.char-intro-info p{margin:2px 0;line-height:1.4}.char-intro-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.word-parts{display:grid;gap:4px;margin:4px 0 8px}.word-parts .eyebrow{margin:6px 0 0}.word-part-char{border-top:1px solid var(--line);padding-top:4px}.word-part-head{margin:0}.word-part-glyph{font-family:Kaiti SC,KaiTi,STKaiti,LW Parts,serif;font-size:26px}@media(min-width:900px){.char-intro{max-width:640px;margin-inline:auto}.char-intro-top{grid-template-columns:160px minmax(0,1fr)}.char-intro-glyph{font-size:112px}}.dr-retry{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:2px 10px;white-space:nowrap}.hf-playlist{display:grid;gap:10px;text-align:left}.hf-pl-head{margin:8px 0 2px;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;position:sticky;top:0;background:var(--surface, #fff);padding:4px 0;z-index:1}.hf-pl-list{list-style:none;margin:0;padding:0;display:grid}.hf-pl-row{border-bottom:1px solid color-mix(in srgb,currentColor 10%,transparent)}.hf-pl-button{all:unset;box-sizing:border-box;width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"line dir" "en en";column-gap:8px;padding:4px 8px;cursor:pointer;line-height:1.25}.hf-pl-button:focus-visible{outline:2px solid var(--accent, #0b6b5d);outline-offset:-2px}.hf-pl-line{grid-area:line;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px;min-width:0}.hf-pl-zh{font-weight:600;font-size:1.05rem;overflow-wrap:anywhere}.hf-pl-py{font-size:.8rem;opacity:.75}.hf-pl-en{grid-area:en;font-size:.85rem;opacity:.85}.hf-pl-dir{grid-area:dir;align-self:start;font-size:.72rem;font-weight:700;white-space:nowrap;padding:1px 6px;border-radius:999px;border:1px solid color-mix(in srgb,currentColor 35%,transparent)}.hf-pl-row.is-played{opacity:.45}.hf-pl-row.is-current{background:color-mix(in srgb,var(--accent, #0b6b5d) 18%,transparent);box-shadow:inset 3px 0 0 var(--accent, #0b6b5d)}.hf-pl-row.is-current .hf-pl-dir{background:var(--accent, #0b6b5d);color:#fff;border-color:transparent}.engine-progress{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:4px 12px}.engine-progress>progress{width:100%}.engine-progress .engine-pinyin{font-size:11px;padding:6px 10px;min-height:0}@media(max-width:640px){.engine-progress{grid-template-columns:minmax(0,1fr) auto}.engine-progress>progress{grid-column:1 / -1;grid-row:2}.engine-progress>.small{grid-row:3}.engine-progress .engine-pinyin{grid-row:3;justify-self:end}}.engine-answer{display:grid;width:100%}.engine-answer input{width:100%;box-sizing:border-box;min-height:44px;padding:8px 12px;font-size:16px}.engine-another{display:flex;flex-wrap:wrap;align-items:center;gap:6px}@media(max-width:640px){.answer-actions:has(.engine-another){grid-template-columns:minmax(0,1fr);gap:10px}.answer-actions:has(.engine-another)>.check-answer-button{order:1;grid-column:1}.answer-actions:has(.engine-another)>.engine-another{order:2;grid-column:1;justify-content:flex-start}.answer-actions:has(.engine-another)>.engine-another[aria-hidden=true]{display:none}.engine-another .button{min-height:32px;padding:4px 10px;font-size:12px}}.practice-card .engine-answer{margin-bottom:10px}.practice-card>.practice-prompt{margin-bottom:12px}.practice-card .answer-options+.answer-feedback,.practice-card .engine-convo-lines+fieldset{margin-top:12px}.practice-card fieldset.answer-options{margin-bottom:12px}.practice-card .answer-actions{margin-top:12px}.practice-card .button-row+.engine-convo-lines{margin-top:12px}.engine-convo-lines{margin-bottom:12px}.engine-convo-lines li,.engine-convo-lines li:has(.dr-line-play){grid-template-columns:minmax(0,1fr) auto;row-gap:2px}.engine-convo-lines li .engine-speaker{grid-column:1;grid-row:1}.engine-convo-lines li .dr-line-play{grid-column:2;grid-row:1}.engine-convo-lines li>span{grid-column:1 / -1!important}.engine-convo-lines li[data-speaker=female] .engine-speaker{color:var(--accent, #7cc0ff)}.link-button{background:none;border:0;padding:0;margin:0;font:inherit;font-size:.85em;color:var(--accent, #2563eb);text-decoration:underline;cursor:pointer;justify-self:start;min-height:0}.practice-card{min-height:420px}.practice-card .engine-glosses{margin:0 0 8px;padding-left:18px}.engine-pinyin-hint{margin:4px 0 0}.engine-pinyin-preview{margin:4px 0 0;min-height:1.6em;font-size:20px;letter-spacing:.02em}.engine-tone-off{text-decoration:underline wavy;text-underline-offset:4px}.dr-run>.dr-question{display:contents}.dr-run .dr-question>.dr-result,.dr-run .dr-question>.dr-confirm,.dr-run .dr-question>.dr-selfmark,.dr-run .dr-question>.dr-model-box{order:3}.dr-run>.answer-actions{order:2}.engine-instruction{margin:0 0 6px;font-weight:600;color:var(--muted, #9fb0c0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-cue{margin:4px 0 0;font-size:1.05rem}.engine-meaning{margin:2px 0 8px}.media-add{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}.media-add input{flex:1 1 240px;min-width:0}.media-list{display:grid;gap:10px;list-style:none;margin:0;padding:0}.media-item{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;padding:12px 14px;border:1px solid var(--border, #2b3445);border-radius:12px}.media-item h3{margin:0 0 2px;font-size:1rem;overflow-wrap:anywhere}.media-item-actions{display:flex;gap:8px;flex:none}.media-watch{display:grid;gap:8px}.media-views{display:flex;margin:6px 0;border:1px solid rgba(255,255,255,.18);border-radius:10px;overflow:hidden}.media-views button{flex:1;min-height:36px;padding:4px 8px;background:transparent;border:0;color:inherit;font:inherit;cursor:pointer}.media-views button+button{border-left:1px solid rgba(255,255,255,.18)}.media-views [aria-pressed=true]{background:#5096ff47;font-weight:600}.media-watch[data-view=watch]>:not(.media-pin){display:none}.media-title{font-size:1rem;line-height:1.35;font-weight:600;margin:6px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.media-title-meta{margin:2px 0 6px}.link-button{background:none;border:0;padding:0;color:var(--link, #7db4ff);font:inherit;text-decoration:underline;cursor:pointer}.media-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:4px 0}.media-menu{position:relative}.media-menu summary{list-style:none;cursor:pointer}.media-menu summary::-webkit-details-marker{display:none}.media-menu-items{display:grid;gap:6px;margin-top:6px;position:absolute;z-index:6;background:var(--bg, #0f1420);border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:8px;min-width:14em}.media-controls-row{gap:6px 8px}.media-controls-row .button{min-height:34px;padding:4px 10px}.media-plain{display:inline-block}.media-picked a{margin-left:.4em}.media-stage{position:relative}.media-footer[hidden],.media-list-panel[hidden]{display:none}.media-footer{display:grid;gap:6px}.media-overlay-bar{position:absolute;top:0;left:0;right:0;display:flex;gap:10px;align-items:center;justify-content:space-between;padding:8px 12px;background:linear-gradient(rgba(0,0,0,.6),transparent);z-index:2}.media-overlay-line{position:absolute;left:0;right:0;bottom:56px;text-align:center;pointer-events:none;z-index:2}.media-overlay-line .word,.media-overlay-line button{pointer-events:auto}.media-overlay-text{display:inline-block;margin:0;padding:4px 12px;font-size:1.5rem;line-height:2;color:#fff;background:#0000008c;border-radius:8px;text-shadow:0 1px 2px #000}.media-picker{position:absolute;top:48px;right:8px;bottom:8px;left:8px;z-index:4;display:grid;grid-template-rows:auto 1fr auto;gap:8px;padding:12px;overflow:hidden;background:#0c101af5;border-radius:12px}.media-picker-list{list-style:none;margin:0;padding:0;overflow-y:auto}.media-picker-list li{padding:3px 0}.media-picker input[type=number]{width:4.5em}.media-watch[data-view=watch]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000;display:block}.media-watch[data-view=watch] .media-pin,.media-watch[data-view=watch] .media-stage{position:absolute;top:0;right:0;bottom:0;left:0;padding:0}.media-watch[data-view=watch] .media-video{width:100%;height:100%;max-height:none;border-radius:0;object-fit:contain}.media-pin{position:sticky;top:0;z-index:5;background:var(--bg, #0f1420);padding-bottom:6px}.media-video{width:100%;max-height:56vh;background:#000;border-radius:12px}.media-title-teach{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.media-title-line{font-size:1.1rem;line-height:2;margin:0}.media-list-bar{display:flex;gap:8px;margin-bottom:6px}.media-lines-scroll{position:relative;overflow-y:auto;max-height:40vh;overscroll-behavior:contain}.media-lines-scroll[hidden]{display:none}@media(orientation:landscape)and (max-height:520px){.media-watch[data-view=learn]{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start}.media-watch[data-view=learn] .media-pin{position:sticky;top:0}.media-video{max-height:62vh}.media-now{min-height:0;font-size:1.25rem;line-height:2;padding:0}.media-overlay-text{font-size:1.15rem;line-height:1.8}.media-picker{top:40px;right:6px;bottom:6px;left:6px}.media-title-teach{display:none}}@media(min-width:900px){.media-video{max-height:70vh}.media-lines-scroll{max-height:60vh}}.media-now{min-height:4.5rem;padding:12px 4px;font-size:1.6rem;line-height:2.2}.media-controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.media-lines{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:2px}.media-line{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;padding:6px 8px;border-radius:10px}.media-line[aria-current=true]{background:#5096ff29}.media-line-seek{flex:1;min-width:0;display:flex;gap:10px;text-align:left;background:none;border:0;color:inherit;font:inherit;padding:4px 0;cursor:pointer}.media-line-seek[disabled]{cursor:default}.media-line-time{flex:none;color:#8793a8;font-variant-numeric:tabular-nums;min-width:3.2em}.media-line-text{overflow-wrap:anywhere;line-height:1.9}.media-overlay-bar .button{white-space:nowrap;padding-inline:10px;flex:none}.media-overlay-bar label{font-size:.85rem;line-height:1.2}.woven-token{display:inline-flex;flex-direction:column;align-items:flex-start;margin-right:.35em}.woven-gloss{font-size:.7rem;line-height:1.1;color:#8793a8;max-width:7em;overflow-wrap:anywhere}.media-fragment-text{text-align:left;background:none;border:0;color:inherit;font:inherit;padding:2px 0;cursor:pointer}.media-fragment-text:disabled{cursor:default;opacity:1}.media-line-text{display:grid}.media-line-fragment{line-height:1.3}.media-overlay-second{display:block;margin-top:4px;font-size:1.1rem}.col-create{display:flex;gap:8px;margin:8px 0 12px}.col-create input{flex:1;min-width:0}.col-list,.col-items{list-style:none;margin:0;padding:0;border:1px solid var(--border, #2b3445);border-radius:8px}.col-row{display:flex;align-items:center;border-bottom:1px solid var(--border, #2b3445)}.col-row:last-child,.col-item:last-child{border-bottom:0}.col-link{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;padding:9px 12px;color:inherit;text-decoration:none}.col-link:hover{background:#5096ff14}.col-name{font-weight:600;overflow-wrap:anywhere}.col-rename{flex:1;display:flex;gap:6px;padding:6px 8px;min-width:0}.col-rename input{flex:1;min-width:0}.col-menu{position:relative;flex:none}.col-more{background:none;border:0;color:inherit;min-width:44px;min-height:44px;display:grid;place-items:center;cursor:pointer}.col-popup{position:absolute;right:6px;top:100%;z-index:20;min-width:130px;display:flex;flex-direction:column;background:var(--panel, #161c28);border:1px solid var(--border, #2b3445);border-radius:8px;box-shadow:0 6px 18px #00000059;overflow:hidden}.col-popup button{background:none;border:0;color:inherit;text-align:left;padding:11px 14px;font:inherit;cursor:pointer}.col-popup button:hover{background:#5096ff1f}.col-popup .danger{color:#ff8a8a}.col-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.col-head-text{min-width:0}.col-head h1{margin:0;font-size:1.35rem;overflow-wrap:anywhere}.col-head p{margin:2px 0 0}.col-primary{display:flex;gap:8px;margin:10px 0}.col-all{display:flex;align-items:center;gap:10px;padding:4px 12px}.col-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:6px 12px;border-bottom:1px solid var(--border, #2b3445)}.col-item[data-selected=true]{background:#5096ff1f}.col-item-text{min-width:0}.col-item-text p{margin:0}.col-item-zh{font-size:1.05rem;overflow-wrap:anywhere}.col-item-meaning{font-size:.85rem;opacity:.75}.col-item-meta{margin-top:1px}.col-item-practice{justify-self:end}.col-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 10px;margin-top:10px;background:var(--panel, #161c28);border:1px solid var(--border, #2b3445);border-radius:8px}.col-toolbar-count{font-weight:600;margin-right:auto}@media(max-width:700px){.col-toolbar{position:sticky;bottom:0;z-index:10;margin:10px -8px 0;border-radius:8px 8px 0 0}}.col-item-zh{line-height:1.35}.col-item-meaning{display:block;font-size:.85rem;line-height:1.3}@media(max-width:700px){.col-toolbar .button{padding:6px 8px;font-size:.85rem}.col-toolbar-count{flex-basis:100%}}.col-unfinished{margin-bottom:8px}.col-subtitle{display:block;overflow-wrap:anywhere}.col-picker ul{list-style:none;padding:0;margin:.5rem 0;display:grid;gap:.4rem}.col-picker .button{width:100%;text-align:left}:root{font-family:Segoe UI,-apple-system,BlinkMacSystemFont,LW Parts,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,input,select{color:inherit;border:1px solid var(--line);background:var(--surface);border-radius:6px}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}a{color:inherit;text-decoration:none}button:not(:disabled):hover,a.button:hover{filter:brightness(1.12)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}main:focus,h2:focus{outline:none}svg{flex-shrink:0;vertical-align:middle}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(26px,3vw,32px);font-weight:550;letter-spacing:-.8px;line-height:1.3;margin-bottom:10px}h2{font-size:21px;font-weight:550;letter-spacing:-.3px}h3{font-size:17px;font-weight:550}p{line-height:1.7}.muted{color:var(--muted)}.accent{color:var(--accent)}.small{font-size:12px}.eyebrow{font-size:10px;font-weight:650;letter-spacing:1.5px;line-height:1.5;margin-bottom:12px;text-transform:uppercase}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:fixed;top:-80px;left:16px;padding:12px;z-index:30;color:var(--on-accent);background:var(--accent);border-radius:6px}.skip-link:focus{top:12px}.app-shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100dvh}.sidebar{position:sticky;top:0;height:100dvh;background:var(--sidebar);border-right:1px solid var(--line);padding:26px 16px 16px;display:flex;flex-direction:column;z-index:5}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:30px}.brand{display:flex;align-items:center;gap:8px;font-weight:650;font-size:16px;letter-spacing:-.7px}.brand-mark{color:var(--on-accent);background:var(--accent);padding:4px 8px 7px;font-size:21px;font-weight:800;border-radius:9px;letter-spacing:-2px}.workspace-label{font-size:9px;letter-spacing:1.6px;color:var(--muted);margin:0 14px 14px}.primary-nav{display:flex;flex-direction:column;gap:5px}.primary-nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;min-height:44px;font-size:13px;color:var(--text-secondary);border-radius:7px}.primary-nav a:hover{background:var(--surface-hover)}.primary-nav a[aria-current]{background:var(--surface-selected);color:var(--accent)}.nav-count{margin-left:auto;padding:2px 6px;background:var(--surface-raised);border-radius:4px}.sidebar-bottom{margin-top:auto;padding-top:30px}.backup-now{display:grid;gap:4px;padding:6px 4px 2px}.backup-now-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:36px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface-raised);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.backup-now-button:disabled{opacity:.7;cursor:progress}.backup-now small{font-size:11px;color:var(--muted);text-align:center}.backup-now small.backup-now-error{color:var(--danger, #e5534b)}.backup-now-setup{display:block;padding:6px 10px;font-size:12px;color:var(--muted)}.profile small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.profile{border-top:1px solid var(--line);display:flex;gap:10px;padding:20px 5px;align-items:center}.profile strong{display:block;max-width:140px;font-size:12px;overflow-wrap:anywhere}.avatar{width:33px;height:33px;flex-shrink:0;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:50%;background:var(--surface-raised);color:var(--accent)}.workspace{min-width:0}.topbar{position:sticky;top:0;z-index:8;background:var(--bg);min-height:76px;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 38px;border-bottom:1px solid var(--line)}.breadcrumb,.topbar-actions{display:flex;align-items:center;gap:14px}.topbar-leading{display:flex;align-items:center;gap:12px;min-width:0}.mobile-nav-trigger{display:none;padding:0}.mobile-drawer{position:fixed;inset:0 auto 0 0;margin:0;width:min(310px,calc(100vw - 48px));height:100dvh;max-height:none;max-width:none;padding:calc(6px + env(safe-area-inset-top)) 12px calc(16px + env(safe-area-inset-bottom));border:0;border-right:1px solid var(--line);background:var(--sidebar);color:var(--text);overflow-y:auto;overscroll-behavior:contain;box-shadow:12px 0 40px #0004}.mobile-drawer::backdrop{background:#0008}.mobile-drawer[open]{display:flex;flex-direction:column}.mobile-drawer-header{display:flex;align-items:center;gap:8px;min-height:44px;margin-bottom:30px;flex-shrink:0}.mobile-drawer-close{padding:0}.mobile-drawer-content{display:flex;flex:1 0 auto}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb strong{color:var(--text);font-weight:500}.language-pill{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:6px;padding:7px 11px;font-size:12px}.language-pill span{color:var(--accent);font-size:17px}.profile-pill{display:block;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon-button{display:inline-flex;justify-content:center;align-items:center;width:44px;height:44px;border:0;border-radius:6px;color:var(--text-secondary);flex-shrink:0;background:transparent}.icon-button:hover{background:var(--surface-raised)}.sidebar-toggle{width:32px}main{max-width:1500px;margin:0 auto;padding:36px 38px;overflow-wrap:anywhere}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px}.page-heading>div{min-width:0}.page-heading>.button{flex-shrink:0}.page-heading p:last-child{margin:0;font-size:14px}.button{min-height:44px;padding:10px 15px;display:inline-flex;justify-content:center;align-items:center;gap:9px;border:1px solid var(--line);border-radius:6px;font-size:13px;font-weight:600;line-height:1.5;text-align:center}.primary{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.secondary{background:var(--surface);color:var(--text)}.full-width{display:flex;width:100%}.button-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.panel{background:var(--surface);padding:26px;border:1px solid var(--line);border-radius:12px;margin-bottom:22px}.panel>p:last-child{margin-bottom:0}.feature-panel{background:var(--surface-feature);border-color:var(--accent-line)}.feature-panel>svg{margin-bottom:20px}.overview-feature{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(240px,1fr);gap:20px}.course-card{display:flex;flex-direction:column;min-width:0;min-height:359px;margin:0}.course-card h2{font-size:clamp(24px,2.5vw,32px);line-height:1.3;letter-spacing:-.6px;margin-bottom:16px}.course-card>p:not(.eyebrow){color:var(--text-secondary);font-size:14px;margin-bottom:0}.course-card>.button{align-self:flex-start;margin-top:20px}.course-card .inline-meta{margin-bottom:0}.course-progress{margin-top:auto;padding-top:24px;font-size:12px;color:var(--text-secondary)}.course-progress progress{margin-top:12px}.course-progress p{margin:12px 0 0}.inline-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:10px;color:var(--text-secondary);margin:20px 0}progress{display:block;width:100%;height:5px;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:5px;overflow:hidden;background:var(--surface-raised);color:var(--accent)}progress::-webkit-progress-bar{background:var(--surface-raised)}progress::-webkit-progress-value{background:var(--accent)}progress::-moz-progress-bar{background:var(--accent)}.daily-card{display:flex;flex-direction:column;padding:25px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.daily-card .button{margin-top:auto}.daily-card>.small{margin:12px 0 0;text-align:center}.card-topline{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-topline .eyebrow{margin:0;color:var(--text-secondary)}.review-count{font-size:65px;line-height:1;font-weight:350;margin:24px 0 16px;letter-spacing:-3px}.review-count>span{display:block;font-size:17px;letter-spacing:0;margin-top:12px}.daily-card>p{font-size:13px}.stats-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:24px 0;border-bottom:1px solid var(--line)}.stats-strip>div{display:flex;gap:14px;align-items:center;padding:0 20px;border-right:1px solid var(--line)}.stats-strip>div:first-child{padding-left:0}.stats-strip>div:last-child{border:0}.stats-strip svg{color:var(--accent)}.stats-strip strong{font-size:28px;font-weight:500}.stats-strip small{display:block;font-size:12px;color:var(--muted);font-weight:400}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:30px 0 18px}.section-heading h2{margin-bottom:8px}.section-heading p{margin-bottom:0;font-size:13px}.experience-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.experience-card{background:var(--surface);border:1px solid var(--line);padding:24px;border-radius:10px}a.experience-card:hover{background:var(--surface-hover);border-color:var(--line-strong)}.experience-card h3{margin:18px 0 10px}.experience-card p{color:var(--muted);font-size:13px}.text-link,.back-link{display:inline-flex;gap:10px;align-items:center;font-size:13px;color:var(--accent)}.back-link{margin-bottom:20px}.page-footnote{font-size:12px;color:var(--muted);margin:28px 0 0}.page-footnote a,.notice a{text-decoration:underline;text-underline-offset:3px}.tag{background:var(--surface-selected);color:var(--text-secondary);border-radius:4px;padding:4px 8px;font-size:10px;white-space:nowrap}.library-toolbar,.reader-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:15px;margin-bottom:24px}.search-field{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:7px;padding:0 12px;background:var(--surface);min-width:220px;margin-left:auto;color:var(--muted)}.search-field input{width:100%;min-width:0;border:0;padding:12px 0;background:transparent;color:var(--text)}.book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.book-card{display:flex;border:1px solid var(--line);background:var(--surface);border-radius:12px;overflow:hidden}.book-card:hover{border-color:var(--accent-line)}.book-cover{display:flex;width:36%;flex-shrink:0;flex-direction:column;justify-content:space-between;padding:24px 18px;min-height:260px;background:#223b52;color:#f0f6fc;font-size:9px;letter-spacing:1px}.cover-glyph{font:75px Georgia,serif;align-self:center;opacity:.85}.cover-rain{background:#333d61}.book-details{padding:22px;min-width:0}.book-details h2{margin:20px 0 12px;font-size:22px}.book-details>p{color:var(--muted);font-size:13px}.book-details>.small{margin:12px 0 0}.segmented{display:flex;flex-wrap:wrap;gap:4px;background:var(--surface-inset);padding:4px;border:1px solid var(--line);border-radius:8px}.segmented button{border:0;background:transparent;color:var(--text-secondary);padding:10px 13px;min-height:40px;font-size:13px}.segmented button[aria-pressed=true]{background:var(--surface-selected);color:var(--accent)}.toggle{display:flex;align-items:center;gap:8px;font-size:13px}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:18px;height:18px;flex-shrink:0}.reader-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:24px;align-items:start}.reading-surface{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:32px}.reading-text{font-family:Georgia,Times New Roman,serif;font-size:23px;line-height:2.3;margin:30px 0;min-height:180px}.reading-text[lang=zh-Hans]{font-family:Segoe UI,sans-serif;font-size:25px}.reading-token{border:0;border-bottom:1px dotted var(--accent);border-radius:2px;background:transparent;padding:0 2px;color:inherit;font:inherit;line-height:inherit}.target-token,.reading-token[aria-pressed=true]{color:var(--accent);background:var(--accent-wash)}.reading-token ruby{font-family:Segoe UI,sans-serif}rt{font-size:11px;line-height:1.5;color:var(--muted)}.mandarin-word{ruby-align:center}.mandarin-word+.mandarin-word{margin-inline-start:.4em}.mandarin-word rt{font-family:Segoe UI,sans-serif;font-size:12px;font-weight:400;letter-spacing:0;color:var(--accent)}.word-native .mandarin-word{display:inline-flex;flex-direction:column-reverse;align-items:center;gap:8px}.word-native .mandarin-word rt{display:block;line-height:1.4}.word-native .mandarin-word rt,.practice-prompt .mandarin-word rt{font-size:15px}.reader-navigation{justify-content:space-between;margin-top:24px}.word-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.word-card{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:23px}.word-native{font-size:38px;margin:22px 0 7px;font-weight:400}.pinyin{color:var(--accent);font-size:15px;margin-bottom:10px}.word-meaning{font-size:17px}.example{border-top:1px solid var(--line);padding-top:18px;margin-bottom:8px;font-size:19px}.word-card details{margin-top:18px;font-size:12px;color:var(--muted)}summary{cursor:pointer;min-height:28px}.skill-profile{display:grid;grid-template-columns:1fr 1fr;gap:15px;font-size:12px;margin-bottom:0}.skill-profile dt{color:var(--muted);margin-bottom:6px}.skill-profile dd{margin:0;color:var(--text-secondary)}.lesson-list{display:grid;gap:16px}.readiness-section{padding:20px}.readiness-section summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none}.readiness-section summary::-webkit-details-marker{display:none}.readiness-section summary>span:first-child{display:grid;gap:5px}.readiness-section[open] summary{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:18px}.readiness-module{border-top:1px solid var(--line);padding-top:16px;margin-top:16px}.readiness-module:first-of-type{border-top:0}.readiness-module ol{padding-left:22px}.readiness-module li{margin-bottom:12px}.readiness-module li span{display:block;color:var(--muted);margin-top:4px}.lesson-player{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:14px}.lesson-heading .back-link{margin-bottom:12px}.lesson-heading h1{font-size:25px;margin-bottom:12px}.lesson-heading progress{margin-top:10px}.lesson-word-card .word-native{margin:20px 0 12px;text-align:center;font-size:44px;line-height:1.5}.lesson-word-card .word-meaning{text-align:center;margin-bottom:12px}.lesson-pagination{display:flex;justify-content:space-between;gap:10px}.lesson-pagination .button{flex:1}.lesson-overview{font-size:13px;color:var(--muted)}.lesson-overview>summary{min-height:44px;display:list-item;align-content:center}.lesson-overview>p{margin-top:12px}.lesson-player>.panel{margin:0}.lesson-player>.grammar-reference{margin:0}.lesson-grammar-card .grammar-notes{margin-top:12px}.lesson-grammar-card .grammar-notes summary{min-height:44px;align-content:center;font-size:12px;color:var(--muted)}.level-card{display:flex;flex-direction:column}.level-card>.text-link{margin-top:auto}.level-card progress{margin-bottom:12px}.curriculum-goals{padding-left:22px;line-height:1.8}.curriculum-goals li{margin-bottom:10px}.curriculum-lesson-row{display:flex;align-items:center;gap:12px;padding:16px 0;border-top:1px solid var(--line)}.curriculum-lesson-row>div{flex:1;min-width:0}.curriculum-lesson-row .small{display:block;margin-top:6px}.curriculum-lesson-row:hover{color:var(--accent)}.curriculum-lesson-row .tag{white-space:normal;text-align:center;max-width:110px}.checkpoint-goal h2{margin:0}.checkpoint-goal .card-topline{margin-bottom:16px}.grammar-pattern{font-size:24px;line-height:1.8}.grammar-example{border-top:1px solid var(--line);padding-top:16px}.grammar-example [lang=zh-Hans]{font-size:24px;margin-bottom:8px}.grammar-reference{margin-top:22px}.practice-invitation{display:flex;align-items:center;gap:30px;justify-content:space-between;margin-top:25px}.practice-invitation p{color:var(--muted);margin-bottom:0}.practice-invitation>.button{flex-shrink:0}.resume-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 0;border-top:1px solid var(--line)}.resume-row .small{display:block;margin-top:6px}.resume-main,.resume-row .resume-main{flex:1;display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;color:inherit;text-decoration:none}.practice-player{max-width:760px;margin:0 auto;padding:30px}.practice-question-content{display:contents}.practice-player progress{margin:18px 0 30px}.practice-player h2{font-size:24px}.practice-prompt{font-size:28px;padding:25px 10px;text-align:center}.practice-prompt.native{font-size:50px}.answer-options{border:0;padding:0;margin:0 0 25px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.answer-option{display:flex;align-items:center;gap:12px;min-height:64px;padding:15px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.answer-option>span:not(.answer-option-mark){flex:1 1 0;min-width:0;overflow-wrap:break-word}.answer-option>span:not(.answer-option-mark)>[lang=zh-Hans]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:0 .4em}.answer-option>span:not(.answer-option-mark)>[lang=zh-Hans]>.mandarin-word+.mandarin-word{margin-inline-start:0}.answer-option>span:not(.answer-option-mark)>[lang=zh-Hans]>.zh-punct{margin-inline:-.4em}@media(max-width:480px){.answer-options{grid-template-columns:minmax(0,1fr)}}.answer-option>.snippet-button{flex:0 0 auto}.answer-option input{flex:0 0 auto}.answer-option.selected{background:var(--accent-soft);border-color:var(--accent)}.answer-option.correct-option{border-color:var(--accent)}.answer-option [lang=zh-Hans]{font-size:25px}.practice-player>.button-row{justify-content:flex-end}.practice-player>.small{margin-top:24px;margin-bottom:0}html:has(.answer-player){scrollbar-gutter:stable}.answer-option>.answer-option-mark{display:inline-flex;flex:0 0 18px;width:18px;height:18px}.answer-actions{display:grid;grid-template-columns:minmax(0,1fr) 160px;align-items:start;gap:12px}.answer-actions>.button{width:100%;height:44px;min-height:44px;padding:8px;font-size:12px;gap:6px;white-space:nowrap}.answer-actions>.button:first-child{justify-self:start;width:auto;min-width:140px}.answer-actions .answer-result-correct{background:#216e39;border-color:#216e39;color:#fff}.answer-actions .answer-result-hint{background:#9a6700;border-color:#9a6700;color:#fff}.answer-actions .answer-result-incorrect{background:#b42318;border-color:#b42318;color:#fff}.answer-player>.answer-feedback{margin-bottom:0}.completion{text-align:center;max-width:760px;margin-inline:auto}.completion h2{margin-top:20px}.completion-count{font-size:54px;color:var(--accent);margin:20px 0 0}.completion .button-row{justify-content:center;margin-top:25px}.notice{border:1px solid var(--accent-line);border-radius:8px;background:var(--accent-soft);padding:18px;margin:20px 0}.notice p{margin:8px 0 0}.notice .button-row{margin-top:18px}.notice.error{display:flex;gap:12px;align-items:start;justify-content:space-between;background:var(--danger-soft);border-color:var(--danger-line);color:var(--danger)}.notice.error p{margin:0}.empty-state{padding:48px 24px;text-align:center;color:var(--muted)}.empty-state h2{color:var(--text)}.filter-label{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}select{padding:10px}.settings-form{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;max-width:760px}.settings-form h2,.settings-form p{margin-bottom:0}.settings-form select{width:100%;max-width:100%;min-width:0;text-overflow:ellipsis}.settings-form>*{min-width:0}.settings-form label:not(.toggle){display:grid;gap:8px;font-size:14px}.settings-form input:not([type=checkbox]){padding:12px;width:100%}.settings-form>.button{justify-self:start}.file-button{position:relative;overflow:hidden}.file-button input{position:absolute;opacity:0;top:0;right:0;bottom:0;left:0;width:100%;cursor:pointer}.file-button:focus-within{outline:2px solid var(--accent);outline-offset:4px}.lesson-study{margin-block:20px}.lesson-section{margin-block:32px;scroll-margin-top:20px}.lesson-description .button-row{margin-block:20px}.lesson-outline li{margin-block:8px}.learning-model,.guided-audio{margin-top:18px}.learning-target{font-size:1.5rem;overflow-wrap:anywhere;margin-block:10px}.learning-utterance{margin-block:12px}.learning-utterance p{margin-bottom:5px}.learning-conversation{padding-left:24px}.learning-conversation>li{border-bottom:1px solid var(--line);padding:12px 0}.learning-response{display:grid;gap:8px;margin-block:16px}.learning-response textarea{width:100%;min-width:0;resize:vertical;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:12px}.learning-answer{border-left:3px solid var(--accent);padding-left:16px;margin-top:18px}.learning-requirements{border-top:1px solid var(--line);padding-top:12px;margin-top:20px;overflow-wrap:anywhere}.opening-workspace{padding:50px 24px;max-width:760px;margin:10vh auto}.sidebar-collapsed{grid-template-columns:82px minmax(0,1fr)}.sidebar-collapsed .sidebar{padding-inline:12px}.sidebar-collapsed .sidebar .sidebar-header{flex-direction:column}.sidebar-collapsed .sidebar :is(.brand-name,.workspace-label,.primary-nav a>span,.nav-count,.sidebar-bottom){display:none}.sidebar-collapsed .sidebar .primary-nav a{justify-content:center;padding-inline:12px}@media(max-width:1150px){main{padding:28px 24px}.topbar{padding-inline:24px}.overview-feature{grid-template-columns:1fr}.daily-card{display:grid;grid-template-columns:1fr 1fr;gap:12px 25px;align-items:center}.daily-card>p,.daily-card>.small{margin:0}.review-count{margin:0;grid-row:span 2}.experience-grid,.word-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.book-grid,.reader-layout{grid-template-columns:1fr}.word-help{max-width:500px}}@media(max-width:760px){.app-shell,.sidebar-collapsed{display:block}.sidebar{display:none}.mobile-nav-trigger{display:inline-flex}.topbar{min-height:56px;padding:calc(6px + env(safe-area-inset-top)) 12px 6px;gap:8px}.topbar-leading{gap:8px}.breadcrumb>span,.breadcrumb>svg{display:none}.topbar-actions{gap:3px}.language-pill{display:none}main{padding:25px 18px calc(25px + env(safe-area-inset-bottom))}.page-heading{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:24px}.page-heading>.button{align-self:stretch}.daily-card{display:flex;align-items:stretch;padding:22px;gap:15px}.review-count{font-size:52px}.stats-strip{gap:10px}.stats-strip>div{padding:0 10px;gap:0;align-items:start}.stats-strip svg{display:none}.stats-strip strong{font-size:26px}.stats-strip small{font-size:11px;margin-top:6px}.section-heading{align-items:start;flex-direction:column;gap:8px}.experience-grid,.word-grid{grid-template-columns:1fr}.book-cover{width:32%;padding:18px 10px}.cover-glyph{font-size:60px}.book-details{padding:20px 16px}.book-details h2{font-size:20px}.search-field{width:100%;margin-left:0;min-width:0}.reading-surface,.panel,.practice-player{padding:22px}.reading-text{font-size:21px}.reader-navigation{flex-direction:column-reverse;align-items:stretch}.practice-invitation{align-items:stretch;flex-direction:column;gap:20px}.practice-main,.lesson-main{padding:12px 12px calc(12px + env(safe-area-inset-bottom))}.lesson-player{gap:10px}.lesson-heading h1{font-size:20px;margin-bottom:8px}.lesson-heading .back-link{margin-bottom:8px}.lesson-heading progress{margin-top:8px}.lesson-word-card{padding:16px}.lesson-word-card .word-native{margin:12px 0 8px;font-size:38px}.lesson-word-card .word-meaning{font-size:16px;margin-bottom:8px;line-height:1.4}.lesson-word-card .card-topline{flex-wrap:nowrap}.lesson-word-card .card-topline .eyebrow{font-size:9px;letter-spacing:.7px}.lesson-pagination .button{padding-inline:8px;gap:6px}.lesson-grammar-card{padding:16px}.lesson-grammar-card>.eyebrow{font-size:9px;letter-spacing:.7px;margin-bottom:8px}.lesson-grammar-card h3{margin-bottom:8px}.lesson-grammar-card .grammar-pattern{font-size:22px;margin-bottom:8px;line-height:1.4}.lesson-grammar-card>p:not(.grammar-pattern,.eyebrow){font-size:13px;line-height:1.5;margin-bottom:8px}.lesson-grammar-card .grammar-example{padding-top:10px}.lesson-grammar-card .grammar-example p{margin-bottom:8px;line-height:1.5}.lesson-practice-overview{padding:16px}.lesson-practice-overview h2{font-size:20px;margin-bottom:10px}.lesson-practice-overview p{font-size:13px;line-height:1.5;margin-bottom:8px}.practice-player{display:flex;flex-direction:column;gap:10px;padding:16px}.practice-player .card-topline{gap:4px 8px}.practice-player .card-topline .eyebrow{font-size:9px;letter-spacing:.6px}.practice-player .card-topline .small{font-size:11px}.practice-player progress{margin:0;flex-shrink:0}.practice-player h2{font-size:19px;line-height:1.3;margin:0}.practice-player .practice-context{margin:0;font-size:11px;line-height:1.4}.practice-prompt{font-size:23px;line-height:1.3;padding:6px 0;margin:0}.practice-prompt.native{font-size:38px}.answer-options{gap:8px;margin:0;min-width:0}.answer-option{min-width:0;min-height:48px;padding:8px;gap:6px;font-size:13px;line-height:1.35}.answer-option input{margin:0}.answer-option [lang=zh-Hans]{font-size:22px}.practice-player .notice{margin:0;padding:10px;font-size:13px;line-height:1.4}.practice-player .notice p{margin-top:4px;line-height:1.4}.practice-player .practice-save-note{display:none}.practice-player>.button-row{gap:8px}.practice-player>.button-row>.button{padding-inline:8px;font-size:12px;gap:6px}.practice-player>.button-row{justify-content:stretch}.practice-player>.button-row>.button{flex:1}.answer-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.answer-actions>.button:first-child{width:100%;min-width:0}.card-topline{flex-wrap:wrap}}@media(max-width:760px)and (max-height:700px){.practice-main{padding-top:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}.practice-player{padding:12px;gap:8px}.practice-player .practice-context,.practice-player .practice-feedback-detail{display:none}.practice-prompt{padding:0}}@media(max-width:760px)and (max-height:600px){.practice-player{padding:10px;gap:4px}.practice-prompt.native{font-size:32px}.answer-option{min-height:44px;padding:6px;line-height:1.3}.lesson-main{padding-block:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}.lesson-player{gap:6px}.lesson-word-card{padding:8px}.lesson-word-card .word-native{margin:8px 0 4px;font-size:32px;line-height:1.25}.lesson-grammar-card{padding:10px}.lesson-grammar-card .grammar-notes{margin-top:6px}.lesson-practice-overview{padding:10px}}@media(min-width:540px)and (max-width:760px)and (max-height:500px){.practice-player{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;padding:8px;gap:4px 12px}.practice-player>.card-topline,.practice-player>progress{grid-column:1 / -1}.practice-question-content{display:block;grid-column:1;grid-row:3}.practice-player h2{font-size:17px}.practice-prompt{font-size:19px;margin-top:6px}.practice-player>.answer-options{grid-column:2;grid-row:3}.practice-player .answer-option{font-size:12px}.practice-player>.notice{grid-column:1;grid-row:4;padding:8px;font-size:12px}.practice-player>.button-row{grid-column:2;grid-row:4;align-self:end}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}@media(min-width:540px)and (max-width:760px)and (max-height:500px){.answer-player>.practice-question-content{grid-column:1;grid-row:3}.answer-player>.practice-question-content:has(.practice-prompt){grid-row:3 / span 2}.answer-player>.practice-prompt{grid-column:1;grid-row:4}.answer-player>.answer-options{grid-column:2;grid-row:3 / span 2}.answer-player>.tile-answer{grid-column:2;grid-row:3}.answer-player>.tile-bank{grid-column:2;grid-row:4}.answer-player>.answer-actions{grid-column:1 / -1;grid-row:5;align-self:start}.answer-player>.answer-feedback{grid-column:1 / -1;grid-row:6}}.card-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.card-header-row>div{min-width:0}.card-header-row>.button{flex:0 0 auto;white-space:nowrap}.study-preview{display:grid;gap:6px;list-style:none;padding:0;margin:12px 0}.study-preview li{display:flex;align-items:baseline;gap:12px;background:var(--surface-inset);border:1px solid var(--line);border-radius:8px;padding:6px 12px;min-width:0}.study-preview-form{flex:0 0 auto;font-size:22px;max-width:60%;overflow-wrap:anywhere}.study-preview-gloss{flex:1 1 0;min-width:0;font-size:14px;color:var(--muted);overflow-wrap:anywhere}.study-preview-pinyin{color:var(--accent)}.study-preview li.muted{opacity:.6}.study-pattern{font-size:22px;line-height:1.4;word-break:break-word}.study-pinyin{margin-top:-6px}.study-example{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}.study-example .example{margin:0;font-size:20px;border-top:0;padding-top:0}.tile-answer,.tile-bank{display:flex;flex-wrap:wrap;gap:10px;min-height:64px;padding:12px;border-radius:8px;margin-bottom:14px;align-items:center}.tile-answer{border:1px dashed var(--accent-line);background:var(--accent-soft)}.tile-bank{border:1px solid var(--line);background:var(--surface-inset)}.tile{font-size:24px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-selected);color:inherit;cursor:pointer;min-height:48px}.tile:disabled{cursor:default}.tile-used{opacity:.3}.tile .mandarin-word rt{font-size:12px}.session-topline{max-width:760px;margin:0 auto 16px}.session-topline .back-link{margin-bottom:0}.practice-tools{margin-top:12px}.practice-question-content .practice-tools{justify-content:flex-start}.snippet-button.icon-only{padding-inline:10px;flex-shrink:0}.notice.success{border-color:var(--accent)}.restore-picker{display:grid;gap:14px;min-width:0}.restore-picker label{min-width:0;grid-template-columns:minmax(0,1fr)}.restore-picker select{width:100%;max-width:100%;min-width:0;text-overflow:ellipsis}.restore-picker .button{justify-self:start}.restore-picker .button-row{flex-wrap:wrap}.start-panel{position:sticky;bottom:0;z-index:7;display:flex;align-items:center;justify-content:space-between;gap:16px;margin:24px 0 0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--surface);border:1px solid var(--line);border-radius:12px 12px 0 0;box-shadow:0 -8px 24px #0003}.start-panel>p{margin:0;min-width:0}.start-panel>.button{flex:0 0 auto}@media(max-width:760px){.start-panel{margin-inline:-18px;border-radius:0;border-inline:0;flex-direction:column;align-items:stretch;text-align:center}.start-panel>.button{justify-content:center}}.page-settings-anchor{position:relative;display:inline-flex}.page-settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0006}.page-settings-sheet{position:fixed;z-index:41;left:0;right:0;bottom:0;max-height:80dvh;overflow-y:auto;padding:12px 16px calc(16px + env(safe-area-inset-bottom));background:var(--sidebar);color:var(--text);border-top:1px solid var(--line);border-radius:14px 14px 0 0;box-shadow:0 -12px 40px #0005;display:flex;flex-direction:column;gap:8px}.page-settings-header{display:flex;align-items:center;justify-content:space-between}.page-settings-sheet h2,.page-settings-sheet h3{margin:0;font-size:1rem}.page-settings-sheet h3{margin-top:6px;font-size:.85rem}.page-settings-body{display:flex;flex-direction:column;gap:8px}.page-settings-field{display:flex;flex-direction:column;gap:4px}.page-settings-all{width:100%;text-align:center;margin-top:6px}@media(min-width:761px){.page-settings-backdrop{background:transparent}.page-settings-sheet{position:absolute;left:auto;right:0;bottom:auto;top:calc(100% + 8px);width:300px;max-height:70vh;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px #0005}}.redo-badge{display:inline-block;margin-right:6px;padding:1px 8px;border-radius:999px;background:var(--accent, #2563eb);color:#fff;font-size:11px;font-weight:600;letter-spacing:.4px}.match-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(var(--match-rows, 4),1fr);grid-auto-flow:column;gap:8px;margin-bottom:14px}.match-column{display:contents}.match-cell{justify-content:center;align-items:center;text-align:center;min-height:48px;width:100%;height:100%;min-width:0;gap:4px;padding:6px 28px;position:relative;overflow:hidden;font-size:20px}.match-cell .match-check{position:absolute;right:8px;top:50%;transform:translateY(-50%);flex:none;color:var(--success, #16a34a)}.match-cell .mandarin-word rt,.match-cell rt{font-size:10px}.match-cell .match-gloss{font-size:14px;line-height:1.25;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;overflow-wrap:anywhere}.match-selected{outline:2px solid var(--accent, #2563eb)}.match-locked{opacity:.55;border-color:var(--success, #16a34a)}.match-wrong{border-color:var(--danger, #dc2626);background:color-mix(in srgb,var(--danger, #dc2626) 14%,transparent)}.page-actions{display:flex}.page-actions .action-menu-popup{padding:4px;gap:0;min-width:160px;border-radius:8px}.page-actions-list{display:grid}.page-actions-item{display:flex;align-items:center;gap:6px;min-height:36px;padding:4px 10px 4px 6px;border:0;border-radius:6px;background:none;color:var(--text);font:inherit;font-size:14px;text-align:left;cursor:pointer;white-space:nowrap}.page-actions-item:hover,.page-actions-item:focus-visible{background:var(--surface-2, #8882)}.page-actions-item:disabled{opacity:.5;cursor:default}.page-actions-check{width:14px;height:14px;display:inline-flex;flex:none}.topbar:has(.page-actions .action-menu-trigger[aria-expanded=true]){z-index:30}.page-actions-text{display:grid;gap:1px;min-width:0}.page-actions-description{font-size:12px;line-height:1.3;color:var(--muted);white-space:normal;max-width:240px}.page-actions-item:has(.page-actions-description){align-items:flex-start;padding-block:6px}.page-actions-item:has(.page-actions-description) .page-actions-check{margin-top:3px}.start-panel>.button-row{flex:0 0 auto}@media(max-width:760px){.start-panel>.button-row{justify-content:center;flex-wrap:wrap}.start-panel>.button-row .button{flex:1 1 auto;justify-content:center}}.page-dock{position:sticky;bottom:0;z-index:7}.workspace:has(>.page-dock:not(:empty)){display:flex;flex-direction:column;min-height:100dvh}.workspace:has(>.page-dock:not(:empty))>main{flex:1 0 auto;width:100%}.page-dock>.start-panel{position:static;margin:0;border-radius:0;border-inline:0;border-bottom:0}@media(min-width:761px){.page-dock>.start-panel{padding-inline:38px}}.workspace-navigation{display:flex;flex-direction:column;flex:1;min-height:0}.assistant-shell{grid-template-columns:270px minmax(0,1fr)}.assistant-shell.sidebar-collapsed{grid-template-columns:82px minmax(0,1fr)}.assistant-shell .sidebar .workspace-navigation{display:none}.assistant-shell .mobile-nav-trigger{display:inline-flex}.assistant-shell .sidebar{padding:20px 14px}.assistant-desktop-picker,.conversation-picker{display:flex;flex-direction:column;min-height:0;flex:1;gap:16px}.conversation-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.conversation-picker-heading h2{margin:0}.conversation-picker .search-field{min-width:0;width:100%;margin:0}.conversation-threads{min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.conversation-threads a{display:flex;align-items:center;gap:10px;padding:12px;border-radius:8px}.conversation-threads a:hover{background:var(--surface-hover)}.conversation-threads a[aria-current]{background:var(--surface-selected);color:var(--accent)}.conversation-threads span{min-width:0}.conversation-threads strong{display:block;font-size:13px;font-weight:550;overflow-wrap:anywhere}.conversation-threads small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.picker-collapsed .conversation-threads,.picker-collapsed .search-field,.picker-collapsed h2,.picker-collapsed .button span{display:none}.picker-collapsed .button{padding-inline:8px}.assistant-main{display:flex;flex-direction:column;padding:0;max-width:none;height:calc(var(--assistant-viewport-height, 100dvh) - 76px);min-height:260px}.assistant-main>.notice{flex-shrink:0;margin:12px 20px;max-height:25%;overflow:auto}.assistant-conversation{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}.assistant-shell .topbar-leading{flex:1}.assistant-topbar-title{min-width:0}.conversation-title-menu .action-menu-trigger{width:auto;max-width:100%;gap:8px;font-size:17px;color:var(--text)}.conversation-title-menu .action-menu-trigger span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.conversation-title-menu .action-menu-trigger svg{flex-shrink:0}.conversation-title-menu form,.conversation-title-menu label{display:grid;gap:12px}.conversation-title-menu input{width:100%;min-width:0}.assistant-history{flex:1;min-height:0;overflow:auto;padding:28px max(24px,calc((100% - 800px)/2));overscroll-behavior:contain}.assistant-welcome{text-align:center;padding:35px 12px;color:var(--muted)}.assistant-welcome h2{margin-top:20px;color:var(--text)}.assistant-message{padding:20px;border:1px solid var(--line);border-radius:14px;background:var(--surface);margin-bottom:20px;overflow-wrap:anywhere}.assistant-message .eyebrow{font-size:9px;color:var(--muted)}.message-user{margin-left:12%;background:var(--accent-soft);border-color:var(--accent-line)}.user-message-text,.draft-context blockquote,.message-source blockquote{white-space:pre-wrap}.message-user>p:last-child{margin-bottom:0}.assistant-mode-marker{text-align:center;font-size:12px;color:var(--muted);margin:25px 0}.assistant-markdown{font-size:14px;line-height:1.8}.assistant-markdown p{white-space:pre-wrap}.assistant-markdown li{margin-bottom:6px}.assistant-markdown pre{overflow:auto;padding:14px;border-radius:6px;background:var(--surface-inset)}.assistant-markdown code{font-size:.9em}.assistant-markdown h3{margin-top:18px}.speech-block{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;border-left:2px solid var(--accent-line);padding-left:16px;margin:18px 0}.speech-block-text{min-width:0}.speech-block-text>:first-child{margin-top:0}.speech-block .inline-practice{display:contents}.speech-block .practice-feedback{grid-column:1 / -1}.speech-native{font-size:24px;line-height:1.8;margin-bottom:8px}.shadow-actions{margin-top:12px}.phrase-practice{margin-bottom:20px;overflow-wrap:anywhere}.practice-heading{justify-content:space-between}.practice-heading h2{margin:0;font-size:18px}.practice-live-transcript{white-space:pre-wrap}.inline-practice{margin-top:12px}.inline-practice .snippet-actions{margin:0}.inline-practice>[aria-label="Inline translation practice"]>p{margin:6px 0}.practice-feedback{margin-top:12px}.practice-feedback>p{margin:6px 0}.practice-feedback details{margin-top:6px}.message-practice{border-color:var(--accent-line)}.practice-diff{font-size:20px;line-height:1.8;white-space:pre-wrap}.practice-diff del{color:var(--danger);text-decoration-thickness:2px}.practice-diff ins{color:var(--accent);text-decoration-thickness:2px}.practice-scores{display:flex;flex-wrap:wrap;gap:16px}.practice-scores dt{font-size:12px;color:var(--muted)}.practice-scores dd{margin:4px 0;font-weight:600}.assistant-composer{position:relative;flex-shrink:0;padding:12px max(24px,calc((100% - 800px)/2)) 16px;border-top:1px solid var(--line);background:var(--bg)}.assistant-composer>.notice{margin:0 0 12px;padding:12px}.assistant-composer form{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto auto auto;align-items:end;padding:4px;border:1px solid var(--line-strong);border-radius:16px;background:var(--surface)}.assistant-composer textarea{grid-column:2;grid-row:1;display:block;width:100%;min-height:44px;max-height:160px;resize:none;overflow-y:auto;border:0;border-radius:8px;background:transparent;color:var(--text);padding:10px 6px;font:inherit;font-size:16px;line-height:24px}.composer-controls{display:contents}.composer-controls .assistant-settings-anchor{grid-column:1;grid-row:1}.composer-controls .composer-attach{grid-column:3;grid-row:1}.composer-controls .composer-mic{grid-column:4;grid-row:1}.composer-controls>.icon-button{grid-column:5;grid-row:1}.composer-controls .composer-send,.composer-controls .composer-stop{grid-column:6;grid-row:1;width:44px;height:44px;padding:0;position:relative}.composer-send:before{content:"";position:absolute;width:32px;height:32px;border-radius:50%;background:var(--accent)}.composer-send svg{position:relative;color:var(--bg);width:16px;height:16px}.composer-mic.recording{color:var(--danger);background:var(--surface-raised);border-radius:50%}.composer-controls>[role=status]{grid-column:1 / -1;grid-row:2;min-width:0;padding:4px 8px}.composer-controls>.draft-saving{position:absolute;grid-column:auto;grid-row:auto;right:max(28px,calc((100% - 800px)/2 + 4px));top:-22px;padding:2px 8px;border-radius:8px;background:var(--bg);pointer-events:none}.composer-footnote{font-size:10px;color:var(--muted);margin:8px 0 0;text-align:center}.draft-context{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--accent-line);border-radius:8px;margin-bottom:10px;font-size:12px;background:var(--accent-soft)}.draft-context details{flex:1;min-width:0;max-height:150px;overflow:auto}.draft-context summary{line-height:28px}.draft-context blockquote,.message-source blockquote{margin:8px 0;padding-left:12px;border-left:2px solid var(--line-strong)}.message-source{font-size:12px;color:var(--text-secondary);margin-bottom:12px}.message-source blockquote{max-height:180px;overflow:auto}.shadow-intent{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.shadow-intent .text-link{border:0;padding:8px}.assistant-settings-anchor{position:relative}.assistant-settings-popup{position:absolute;bottom:calc(100% + 12px);left:0;width:min(300px,calc(100vw - 50px));max-height:min(400px,calc(var(--assistant-viewport-height, 100dvh) * .55));overflow:auto;padding:18px;display:grid;gap:16px;background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;z-index:12;box-shadow:0 12px 35px #0004}.assistant-settings-popup label:not(.toggle){display:grid;gap:8px;font-size:13px}.assistant-settings-popup select{min-width:0;width:100%}.composer-error{max-height:100px;overflow:auto;color:var(--danger);font-size:12px;margin-top:10px}.composer-error p{margin:0}.connection-fields{border:0;margin:0;padding:0;display:grid;gap:16px;min-width:0}.connection-error{color:var(--danger);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.snippet-actions{margin:0;flex-shrink:0}.snippet-actions-row{display:flex;align-items:flex-start;gap:4px}.phrase-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.phrase-row-text{min-width:0;flex:1}.phrase-row-text>:first-child{margin-top:0}.snippet-button{font-size:11px;padding:8px 11px}.action-menu{position:relative;min-width:0}.action-menu-popup{position:fixed;width:max-content;max-width:min(300px,calc(100vw - 48px));overflow-y:auto;padding:8px;display:grid;gap:6px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);box-shadow:0 8px 28px #0004;z-index:20}.action-menu-popup[hidden]{display:none}.action-menu-popup .snippet-actions{margin:0}.phrase-menu{display:grid;gap:4px;min-width:180px}.phrase-menu .button,.phrase-knowledge .button{width:100%;justify-content:flex-start}.phrase-knowledge{display:grid;gap:4px}.phrase-knowledge-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.phrase-knowledge-list li{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.phrase-knowledge-list .button{width:auto}.action-menu-popup .button{justify-content:flex-start}.phrase-history-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.phrase-history-entry{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;padding:18px;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:12px}.phrase-history-entry>span{display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}.phrase-history-entry svg{flex-shrink:0;color:var(--accent)}.phrase-history-entry .speech-native{margin:0}.message-action-area{margin-top:12px}.message-actions{display:flex;align-items:flex-start;gap:6px}.message-actions .snippet-actions{margin:0}.message-copy{flex-shrink:0;color:var(--muted)}.selection-actions{position:fixed;z-index:25;bottom:24px;left:0;right:0;margin-inline:auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);box-shadow:0 8px 28px #0004;width:max-content;max-width:calc(100vw - 24px)}.selection-actions .snippet-actions{margin:0}.selection-actions[hidden]{display:none}.selection-actions .snippet-button{padding-inline:8px;gap:6px}.selection-actions-note{grid-column:1 / -1;margin:0}.playback-status{position:fixed;z-index:30;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;max-width:min(600px,calc(100vw - 24px));border:1px solid var(--accent-line);background:var(--surface);padding:8px 12px;border-radius:10px;font-size:12px;box-shadow:0 8px 28px #0004}.playback-status-compact{padding:2px}.draft-save-status{position:fixed;z-index:28;top:70px;left:50%;transform:translate(-50%);max-width:min(650px,calc(100vw - 24px));border:1px solid var(--danger-line);background:var(--surface);color:var(--danger);padding:12px;border-radius:8px;font-size:12px}.draft-save-status a{text-decoration:underline}.assistant-mobile-picker{display:none}.assistant-desktop-welcome{margin:auto;max-width:600px;padding:40px;text-align:center}.assistant-desktop-welcome h1{margin-top:24px}.assistant-desktop-welcome p{color:var(--muted)}@media(max-width:760px){.assistant-desktop-picker,.assistant-desktop-welcome{display:none}.assistant-mobile-picker{display:block;padding:22px;overflow:auto}.assistant-mobile-picker .conversation-picker{min-height:100%}.assistant-main{height:calc(var(--assistant-viewport-height, 100dvh) - 56px - env(safe-area-inset-top));padding:0 0 env(safe-area-inset-bottom);min-height:180px}.conversation-title-menu .action-menu-trigger{font-size:15px;text-align:left}.assistant-shell .topbar-actions .language-pill{display:none}.assistant-history{padding:18px 14px}.assistant-message{padding:16px}.message-user{margin-left:5%}.assistant-composer{padding:10px 12px}.assistant-composer textarea{max-height:120px}.composer-controls .small{font-size:10px}.composer-footnote{display:none}.selection-actions{bottom:calc(12px + env(safe-area-inset-bottom))}.practice-player .snippet-actions{margin:6px 0 0}.practice-player .snippet-actions .button-row{margin-top:0}}@media(max-height:550px){.composer-footnote{display:none}.assistant-composer textarea{max-height:88px}.assistant-composer{padding-top:6px;padding-bottom:6px}}.phrase-history-entry .history-phrase{display:grid;gap:6px;text-align:left;background:none;border:0;padding:0;color:inherit;cursor:pointer}.history-chips{display:flex;gap:6px;flex-wrap:wrap}.history-chips .chip{font-size:.72rem;padding:1px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted, inherit)}.history-filters{display:flex;gap:4px;margin:0 0 12px}.history-lesson>.button{flex-shrink:0;white-space:nowrap}.phrase-history-entry>.history-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:4px;flex:none;min-width:0}@media(max-width:520px){.history-lesson{flex-wrap:wrap}.history-lesson>span{flex:1 1 100%}}.composer-thumbs,.message-thumbs{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.composer-thumbs{margin:0 0 8px}.composer-thumbs li,.message-thumbs li{position:relative}.thumb-open{display:block;padding:0;border:1px solid var(--line-strong);border-radius:10px;overflow:hidden;background:var(--surface);cursor:zoom-in}.thumb-open img{display:block;width:72px;height:72px;object-fit:cover}.message-thumbs .thumb-open img{width:96px;height:96px}.thumb-remove{position:absolute;top:-6px;right:-6px;width:24px;height:24px;padding:0;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface-raised);color:var(--text);cursor:pointer}.thumb-missing{display:grid;place-items:center;width:96px;min-height:96px;padding:8px;text-align:center;border:1px dashed var(--line-strong);border-radius:10px}.image-viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#000000e0;display:flex}.image-viewer-close{position:absolute;top:max(12px,env(safe-area-inset-top));right:12px;z-index:1;background:var(--surface-raised);border-radius:50%}.image-viewer-surface{flex:1;overflow:auto;display:flex;touch-action:pan-x pan-y pinch-zoom}.image-viewer-surface img{margin:auto;max-width:100%;max-height:100%;object-fit:contain}.history-words{display:flex;flex-wrap:wrap;gap:4px 14px;min-width:0}.history-words .history-word{display:inline-flex;align-items:baseline;gap:5px}.history-words .speech-native{margin:0;font-size:1.05rem}.history-score{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-day{margin:18px 0 8px;font-size:.95rem;color:var(--muted);font-weight:600}.history-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0}.history-bar-note{flex-basis:100%}.history-pick{display:grid;place-items:center;padding:8px}.history-pick input{width:22px;height:22px}.history-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:18px 0}.history-toast{position:fixed;left:12px;right:12px;bottom:16px;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:10px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--line);box-shadow:0 6px 24px #00000059}@media(max-width:600px){.phrase-history-entry>.history-actions{margin-left:auto}.phrase-history-entry{flex-wrap:wrap;justify-content:flex-start;gap:10px}.phrase-history-entry>span:first-child{flex:1 1 100%}}:root{color-scheme:dark;--bg: #0d1117;--sidebar: #151b23;--surface: #151b23;--surface-raised: #20262f;--surface-inset: #0e131a;--surface-hover: #1e232a;--surface-selected: #242b34;--surface-feature: #172332;--user-bubble: #1b2736;--line: #30363d;--line-strong: #4c5869;--text: #f0f6fc;--text-secondary: #bdc6d2;--muted: #9198a1;--accent: #58a6ff;--on-accent: #0d1117;--on-art: #f0f6fc;--accent-soft: #1b2c42;--accent-line: #375a7f;--accent-wash: #58a6ff24;--accent-guide: #58a6ff30;--lavender: #cbc5e8;--lavender-soft: #302e3b;--lavender-line: #675778;--sand: #dcc4a0;--sand-soft: #383128;--sand-line: #796246;--danger: #f0bdac;--danger-soft: #38271f;--danger-line: #92584c;--scrollbar: #6b727c;--backdrop: #03080fbf;--shadow-soft: #0002;--shadow-medium: #0005;--shadow-strong: #0008}:root[data-theme=light]{color-scheme:light;--bg: #f6f8fa;--sidebar: #f0f3f6;--surface: #ffffff;--surface-raised: #f0f3f6;--surface-inset: #f6f8fa;--surface-hover: #eaeef2;--surface-selected: #e1e8f0;--surface-feature: #eaf3ff;--user-bubble: #e7f1ff;--line: #d0d7de;--line-strong: #8c959f;--text: #1f2328;--text-secondary: #39434f;--muted: #59636e;--accent: #075bbb;--on-accent: #ffffff;--accent-soft: #ddedff;--accent-line: #80b6ef;--accent-wash: #075bbb1f;--accent-guide: #075bbb30;--lavender: #6e40aa;--lavender-soft: #f0e9fb;--lavender-line: #c5addf;--sand: #7d4e22;--sand-soft: #fbf1e2;--sand-line: #d7ba8f;--danger: #b42318;--danger-soft: #fff1ef;--danger-line: #e6aaa2;--scrollbar: #7d8793;--backdrop: #14203470;--shadow-soft: #1f232810;--shadow-medium: #1f23281c;--shadow-strong: #1f232830}
