:root{--bg:oklch(.975 .004 85);--surface:oklch(.997 .002 85);--surface-2:oklch(.955 .004 85);--fg:oklch(.245 .012 265);--muted:oklch(.52 .012 262);--faint:oklch(.62 .012 262);--border:oklch(.905 .006 85);--border-strong:oklch(.855 .008 85);--accent:oklch(.47 .095 262);--accent-strong:oklch(.42 .105 262);--accent-soft:oklch(.95 .02 262);--accent-fg:oklch(.99 0 0);--red:oklch(.52 .13 25);--red-soft:oklch(.955 .025 25);--amber:oklch(.55 .11 72);--amber-soft:oklch(.96 .032 84);--green:oklch(.5 .1 155);--green-soft:oklch(.955 .026 155);--gold:oklch(.52 .11 82);--gold-soft:oklch(.96 .032 90);--r-sm:12px;--r-md:16px;--r-lg:22px;--shadow-sm:0 1px 2px oklch(.2 .02 260/.05),0 2px 10px oklch(.2 .02 260/.05);--shadow-md:0 2px 5px oklch(.2 .02 260/.05),0 10px 28px oklch(.2 .02 260/.08);--font-display:"Source Serif 4","Iowan Old Style","Charter",Georgia,"Noto Serif SC","Songti SC",serif;--font-body:-apple-system,"SF Pro Text","Segoe UI","PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;--font-mono:"SF Mono","JetBrains Mono","IBM Plex Mono",Consolas,monospace}[data-theme=dark]{--bg:oklch(.185 .008 262);--surface:oklch(.225 .008 262);--surface-2:oklch(.268 .008 262);--fg:oklch(.94 .005 260);--muted:oklch(.71 .012 260);--faint:oklch(.6 .012 260);--border:oklch(.315 .008 262);--border-strong:oklch(.39 .01 262);--accent:oklch(.72 .09 262);--accent-strong:oklch(.78 .09 262);--accent-soft:oklch(.31 .045 262);--accent-fg:oklch(.19 .02 262);--red:oklch(.72 .13 25);--red-soft:oklch(.3 .045 25);--amber:oklch(.76 .11 78);--amber-soft:oklch(.3 .042 80);--green:oklch(.72 .11 155);--green-soft:oklch(.29 .042 155);--gold:oklch(.76 .11 85);--gold-soft:oklch(.3 .042 88);--shadow-sm:0 1px 2px oklch(0 0 0/.3),0 2px 10px oklch(0 0 0/.25);--shadow-md:0 2px 6px oklch(0 0 0/.35),0 14px 34px oklch(0 0 0/.32)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(1200px 700px at 85% -10%,var(--accent-soft),transparent 60%);opacity:.6}h1,h2,h3,p{margin:0}button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}input{font-family:inherit}.ico{width:22px;height:22px;flex:none;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.app{height:100dvh;display:flex;flex-direction:column;max-width:1120px;margin:0 auto;position:relative}.stage{flex:1;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.stage::-webkit-scrollbar{width:10px}.stage::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}.screen{display:none;animation:fade .28s ease}.screen.active{display:block}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.content{max-width:720px;margin:0 auto;padding:20px 24px 40px}.appbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:14px 24px;background:color-mix(in oklch,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.appbar .ttl{font-size:17px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.appbar .spacer{flex:1}.iconbtn{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;color:var(--muted);transition:background .15s ease,color .15s ease}.iconbtn:hover{background:var(--surface-2);color:var(--fg)}.brand{display:flex;align-items:center;gap:9px}.brand-mark{width:26px;height:26px;border-radius:8px;background:var(--accent);color:var(--accent-fg);display:grid;place-items:center}.brand-mark .ico{width:15px;height:15px}.brand b{font-size:16px;font-weight:650;letter-spacing:.01em}.brand small{display:block;font-family:var(--font-mono);font-size:10.5px;color:var(--faint);letter-spacing:.06em;line-height:1}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);padding:6px 12px;border-radius:999px;white-space:nowrap}.pill .ico{width:15px;height:15px}.eyebrow{font-family:var(--font-mono);font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.eyebrow.mut{color:var(--faint)}.h1{font-size:clamp(24px,3.4vw,30px);font-weight:700;letter-spacing:.005em;line-height:1.25}.h2{font-size:clamp(18px,2.4vw,21px);font-weight:650;line-height:1.3}.sub{color:var(--muted);font-size:15px}.mono{font-family:var(--font-mono)}.serif{font-family:var(--font-display)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px 22px;box-shadow:var(--shadow-sm)}.card.tight{padding:16px 18px}.card:hover{border-color:var(--border-strong)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:14px;font-size:15.5px;font-weight:600;transition:background .16s ease,transform .05s ease,box-shadow .16s ease;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn .ico{width:19px;height:19px}.btn-primary{background:var(--accent);color:var(--accent-fg);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--accent-strong);box-shadow:var(--shadow-md)}.btn-soft{background:var(--accent-soft);color:var(--accent)}.btn-soft:hover{background:color-mix(in oklch,var(--accent-soft) 70%,var(--accent))}.btn-ghost{background:var(--surface);border:1px solid var(--border);color:var(--fg)}.btn-ghost:hover{background:var(--surface-2);border-color:var(--border-strong)}.btn-lg{min-height:56px;font-size:16.5px;border-radius:16px;padding:0 28px;width:100%}.btn-sm{min-height:40px;padding:0 16px;font-size:14px;border-radius:12px}.progress{height:9px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;border-radius:999px;background:var(--accent);transition:width .4s cubic-bezier(.4,0,.2,1)}.progress.ok>i{background:var(--green)}.dot{width:9px;height:9px;border-radius:50%;flex:none}.dot-red{background:var(--red)}.dot-amber{background:var(--amber)}.dot-green{background:var(--green)}.dot-gold{background:var(--gold)}.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;border:1px solid transparent}.badge .dot{width:7px;height:7px}.badge-red{color:var(--red);background:var(--red-soft)}.badge-amber{color:var(--amber);background:var(--amber-soft)}.badge-green{color:var(--green);background:var(--green-soft)}.badge-gold{color:var(--gold);background:var(--gold-soft)}.badge-mut{color:var(--muted);background:var(--surface-2);border-color:var(--border)}.badge-accent{color:var(--accent);background:var(--accent-soft)}.tabbar{display:flex;border-top:1px solid var(--border);background:color-mix(in oklch,var(--bg) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:6px 8px calc(6px + env(safe-area-inset-bottom))}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0;border-radius:14px;color:var(--faint);font-size:11.5px;font-weight:600;transition:color .15s,background .15s}.tab .ico{width:24px;height:24px}.tab:hover{background:var(--surface-2)}.tab.active{color:var(--accent)}.tab.active .ico{stroke-width:2.1}body.is-sub .tabbar{display:none}body.is-sub .stage{padding-bottom:0}.greet{padding:6px 0 18px}.greet .h1{margin:4px 0 2px}.hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:24px;box-shadow:var(--shadow-md);position:relative;overflow:hidden}.hero .big{font-family:var(--font-mono);font-size:34px;font-weight:700;letter-spacing:-.01em;line-height:1;margin:10px 0 6px}.hero .big b{color:var(--fg);font-weight:700}.task-stack{display:flex;flex-direction:column;gap:12px}.task{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:15px 16px;box-shadow:var(--shadow-sm)}.task .ti{width:44px;height:44px;flex:none;display:grid;place-items:center;border-radius:13px;background:var(--surface-2);color:var(--muted)}.task .ti .ico{width:22px;height:22px}.task .t-body{flex:1;min-width:0}.task .t-t{font-size:15.5px;font-weight:600}.task .t-m{font-size:13px;color:var(--muted);margin-top:1px}.task.done{opacity:.78}.task.done .ti{background:var(--green-soft);color:var(--green)}.task.next{border-color:color-mix(in oklch,var(--accent) 40%,var(--border));background:color-mix(in oklch,var(--accent-soft) 45%,var(--surface))}.task.next .ti{background:var(--accent-soft);color:var(--accent)}.sum-row{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:13px;padding:6px 0 2px}.sum-row .pill{font-size:12.5px}.unit-row{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:15px 16px;width:100%;text-align:left;box-shadow:var(--shadow-sm);transition:border-color .15s}.unit-row:hover{border-color:var(--border-strong)}.unit-row .u-num{width:44px;height:44px;flex:none;border-radius:13px;background:var(--surface-2);color:var(--muted);display:grid;place-items:center;font-family:var(--font-mono);font-size:15px;font-weight:700}.unit-row .u-body{flex:1;min-width:0}.unit-row .u-t{font-size:15.5px;font-weight:600}.unit-row .u-m{font-size:13px;color:var(--muted)}.unit-row.locked{opacity:.55}.unit-row.locked .u-num{background:var(--surface-2);color:var(--faint)}.sec-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);width:100%;text-align:left}.sec-row .si{width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:12px;background:var(--surface-2);color:var(--muted)}.steps{display:flex;align-items:center;gap:10px;margin-bottom:14px}.sentence-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:28px 26px;box-shadow:var(--shadow-md)}.sentence-en{font-family:var(--font-display);font-size:clamp(26px,4.2vw,38px);line-height:1.42;font-weight:500}.sentence-zh{margin-top:14px;padding-top:14px;border-top:1px dashed var(--border);color:var(--fg);font-size:clamp(16px,2vw,18px);line-height:1.7}.reveal{display:inline-flex;align-items:center;gap:7px;color:var(--fg);font-size:14.5px;font-weight:600;padding:8px 0;opacity:.82;transition:opacity .15s}.reveal:hover{opacity:1}.kp{display:flex;gap:13px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:15px 16px;box-shadow:var(--shadow-sm)}.kp .ki{width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:12px;background:var(--surface-2);color:var(--muted)}.kp .ki .ico{width:20px;height:20px}.kp .k-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.kp .k-word{font-family:var(--font-display);font-size:19px;font-weight:600;line-height:1.3}.kp .k-note{font-size:13.5px;color:var(--muted);margin-top:2px}.stars{color:var(--gold);display:inline-flex;gap:2px;margin-top:6px}.stars .ico{width:16px;height:16px}.lesson-nav{display:flex;gap:12px;position:sticky;bottom:0;padding:14px 0 0;background:linear-gradient(transparent,var(--bg) 28%)}.dict-stage{display:flex;flex-direction:column;align-items:center;text-align:center;gap:20px;padding-top:10px}.big-speaker{width:84px;height:84px;border-radius:24px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;box-shadow:var(--shadow-sm);transition:transform .12s ease}.big-speaker:hover{transform:scale(1.04)}.big-speaker.playing{animation:pulse 1s ease infinite}@keyframes pulse{0%,to{box-shadow:0 0 color-mix(in oklch,var(--accent) 30%,transparent)}50%{box-shadow:0 0 0 14px transparent}}.big-speaker .ico{width:36px;height:36px}.ipa{font-family:var(--font-mono);font-size:22px;color:var(--fg);letter-spacing:.01em}.dict-input{width:100%;max-width:420px;min-height:60px;border:1.5px solid var(--border-strong);border-radius:16px;background:var(--surface);color:var(--fg);font-size:24px;font-family:var(--font-mono);text-align:center;padding:10px 18px;letter-spacing:.04em;transition:border-color .15s,box-shadow .15s}.dict-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.state-card{border-radius:var(--r-lg);padding:26px 24px;text-align:center;width:100%;max-width:460px;margin:0 auto}.state-ok{background:var(--green-soft);border:1px solid color-mix(in oklch,var(--green) 30%,transparent)}.state-bad{background:var(--red-soft);border:1px solid color-mix(in oklch,var(--red) 30%,transparent)}.state-card .big-ico{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;margin:0 auto 12px}.state-ok .big-ico{background:var(--green);color:#fcfcfc}.state-bad .big-ico{background:var(--red);color:#fcfcfc}.state-card .st{font-size:20px;font-weight:700}.state-card .sw{font-family:var(--font-display);font-size:30px;margin-top:6px}.state-card .cmp{font-family:var(--font-mono);font-size:15px;color:var(--muted);margin-top:8px}.state-card .cmp b{color:var(--fg)}.hint-note{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:6px 13px}.mastery{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.mastery .m{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:14px 8px;text-align:center;box-shadow:var(--shadow-sm)}.mastery .m .n{font-family:var(--font-mono);font-size:24px;font-weight:700;line-height:1.1}.mastery .m .l{font-size:12px;color:var(--muted);margin-top:4px;display:inline-flex;align-items:center;gap:5px}.seg{display:flex;gap:6px;overflow-x:auto;padding:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:14px;scrollbar-width:none}.seg::-webkit-scrollbar{display:none}.seg button{flex:1;min-width:max-content;padding:9px 14px;border-radius:11px;font-size:13.5px;font-weight:600;color:var(--muted);transition:background .15s,color .15s;white-space:nowrap}.seg button:hover{color:var(--fg)}.seg button.active{background:var(--surface);color:var(--fg);box-shadow:var(--shadow-sm)}.word-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:16px 18px;box-shadow:var(--shadow-sm)}.word-card .w-top{display:flex;align-items:center;gap:12px}.word-card .w-en{font-family:var(--font-display);font-size:21px;font-weight:600;line-height:1.25}.word-card .w-zh{font-size:13.5px;color:var(--muted)}.word-card .w-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:12.5px;color:var(--faint)}.word-card .w-meta b{color:var(--muted);font-weight:600}.chip-word{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:9px 15px;font-size:14px;font-weight:600}.chip-word .en{font-family:var(--font-display)}.chip-word .zh{color:var(--muted);font-weight:400;font-size:12.5px}.viewfinder{position:relative;border-radius:var(--r-lg);background:linear-gradient(160deg,var(--surface-2),color-mix(in oklch,var(--surface-2) 70%,var(--bg)));border:1px solid var(--border);aspect-ratio:4/3;display:grid;place-items:center;overflow:hidden;box-shadow:var(--shadow-sm)}.corner{position:absolute;width:34px;height:34px;border:2.5px solid var(--fg);opacity:.32}.corner.tl{top:18px;left:18px;border-right:0;border-bottom:0;border-radius:10px 0 0}.corner.tr{top:18px;right:18px;border-left:0;border-bottom:0;border-radius:0 10px 0 0}.corner.bl{bottom:18px;left:18px;border-right:0;border-top:0;border-radius:0 0 0 10px}.corner.br{bottom:18px;right:18px;border-left:0;border-top:0;border-radius:0 0 10px}.vf-hint{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--muted);font-size:14px}.vf-hint .cam-ico{width:64px;height:64px;border-radius:20px;background:var(--surface);border:1px solid var(--border);display:grid;place-items:center;color:var(--fg);box-shadow:var(--shadow-sm)}.scanline{position:absolute;left:10%;right:10%;height:2px;background:var(--accent);box-shadow:0 0 18px var(--accent);border-radius:2px;animation:scan 1.3s ease-in-out infinite}@keyframes scan{0%{top:12%}50%{top:86%}to{top:12%}}.kind-row{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.kind{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted);border:1px solid var(--border);background:var(--surface);padding:8px 14px;border-radius:999px}.kind .ico{width:16px;height:16px}.passage-s{display:block;width:100%;text-align:left;padding:13px 16px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);margin-bottom:10px;font-family:var(--font-display);font-size:17px;line-height:1.55;transition:border-color .15s}.passage-s:hover{border-color:var(--border-strong)}.passage-s .zh{display:block;font-family:var(--font-body);font-size:14px;color:var(--muted);margin-top:4px}.quiz-opt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px 16px;border:1.5px solid var(--border);border-radius:var(--r-md);background:var(--surface);font-size:15px;transition:border-color .15s,background .15s}.quiz-opt:hover{border-color:var(--border-strong)}.quiz-opt .qk{width:30px;height:30px;flex:none;border-radius:9px;background:var(--surface-2);color:var(--muted);display:grid;place-items:center;font-family:var(--font-mono);font-size:13.5px;font-weight:700}.quiz-opt.right{border-color:var(--green);background:var(--green-soft)}.quiz-opt.right .qk{background:var(--green);color:#fcfcfc}.quiz-opt.wrong{border-color:var(--red);background:var(--red-soft)}.quiz-opt.wrong .qk{background:var(--red);color:#fcfcfc}.explain{background:var(--accent-soft);border:1px solid color-mix(in oklch,var(--accent) 25%,transparent);border-radius:var(--r-md);padding:14px 16px;font-size:13.5px;line-height:1.7}.explain b{color:var(--accent)}.empty{text-align:center;padding:40px 20px;color:var(--muted)}.empty .ico{width:40px;height:40px;margin:0 auto 12px;opacity:.5}@media (min-width:1024px){.content{max-width:1120px;padding:28px 40px 48px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.grid-2 .span2{grid-column:1/-1}}@media (max-width:520px){.content{padding:16px 16px 32px}.appbar{padding:12px 16px}.mastery{grid-template-columns:repeat(2,1fr)}.hero .big{font-size:30px}.sentence-en{font-size:24px}}a{color:inherit;text-decoration:none}.tab{cursor:pointer}.route{animation:fade .28s ease}#root{display:contents}.name-btn{font:inherit;letter-spacing:inherit;color:inherit;padding:0;border-bottom:1px dashed transparent}.name-btn:hover{border-bottom-color:var(--border-strong)}.name-input{letter-spacing:inherit;color:var(--fg);background:transparent;border:0;border-bottom:1px dashed var(--accent);padding:0;width:100%;max-width:8em}.name-input:focus{outline:none}.app{height:100vh;height:100dvh;max-width:820px}.stage{min-height:0}.tabbar{flex:none}@media (min-width: 521px){.content{max-width:none;padding:28px 40px 48px}.appbar{padding:14px 40px}.grid-2{display:block}.iconbtn{width:48px;height:48px}.tab{padding:10px 0}}@media (orientation: landscape) and (min-width: 900px) and (min-height: 500px){.app{max-width:1000px}.appbar{padding:10px 40px}.content{padding:18px 40px 36px}.greet{padding:2px 0 12px}.hero{padding:18px 22px}.hero .big{font-size:28px;margin:6px 0}.tab{padding:6px 0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.grid-2>.kp{margin-top:0!important}.cards-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.viewfinder{max-width:600px;margin-inline:auto}.content.photo-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:28px;row-gap:0;align-content:start}.content.photo-layout>*{grid-column:1;min-width:0}.content.photo-layout>.viewfinder{grid-column:2;grid-row:1 / span 20;align-self:start;max-width:none;margin:0}}.cal-wrap{position:relative;display:inline-flex}.cal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30}.cal-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:288px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);animation:fade .18s ease}.cal-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-wd{text-align:center;padding:2px 0 4px;font-family:var(--font-mono);font-size:11px;color:var(--faint)}.cal-day{aspect-ratio:1;display:grid;place-items:center;font-family:var(--font-mono);font-size:13px;color:var(--muted);border-radius:9px;border:1.5px solid transparent}.cal-day.studied{background:var(--accent-soft);color:var(--accent);font-weight:700}.cal-day.today{border-color:var(--accent);color:var(--fg)}.cal-day.today.studied{color:var(--accent)}.cal-legend{display:flex;align-items:center;gap:16px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.cal-swatch{width:14px;height:14px;border-radius:5px;display:inline-block;vertical-align:-3px;margin-right:6px}.cal-swatch-on{background:var(--accent-soft)}.cal-swatch-off{background:transparent;border:1.5px solid var(--border-strong)}@media (max-width: 380px){.cal-pop{width:calc(100vw - 32px)}}.word-entry .si{width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:12px;background:var(--surface-2);color:var(--muted)}.t-t,.t-m,.u-t,.u-m{display:block}.dict-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;width:100%;max-width:420px}.dict-actions .btn{flex:1 1 160px}@media (max-height: 460px){.dict-stage{gap:12px;padding-top:0}.typing-compact:focus-within .hide-on-type{display:none}.typing-compact:focus-within .big-speaker{width:48px;height:48px;border-radius:15px}.typing-compact:focus-within .big-speaker .ico{width:22px;height:22px}.typing-compact:focus-within .ipa{font-size:17px}.typing-compact:focus-within .dict-input{min-height:50px}}.pill.lit{color:var(--accent);background:var(--accent-soft);border-color:transparent}.choice-list{display:flex;flex-direction:column;gap:10px;width:100%;max-width:460px}.choice{width:100%;min-height:56px;padding:14px 18px;font:inherit;font-size:16px;line-height:1.4;text-align:left;color:var(--fg);background:var(--surface);border:1.5px solid var(--border-strong);border-radius:var(--r-md);cursor:pointer;transition:border-color .15s ease,background .15s ease}.choice:hover{border-color:var(--accent)}.choice:active{background:var(--surface-2)}@media (max-height: 560px) and (min-width: 700px){.choice-list{flex-direction:row;flex-wrap:wrap;max-width:620px}.choice{flex:1 1 calc(50% - 5px);min-height:48px;padding:10px 14px;font-size:15px}}.k-src{margin-left:6px;padding:1px 6px;font-size:10.5px;font-weight:700;letter-spacing:.02em;color:var(--accent);background:var(--accent-soft);border-radius:999px;vertical-align:1px}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:18px 14px}.book-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:0;background:none;border:0;cursor:pointer;font:inherit;color:inherit;text-align:center}.book-card .book-t{font-size:14px;font-weight:600;line-height:1.3}.book-card .book-m{font-size:12px;color:var(--muted)}.book-cover{display:block;object-fit:cover;border-radius:10px;box-shadow:var(--shadow-sm),0 0 0 1px var(--border);transition:transform .15s ease}.book-card:hover .book-cover{transform:translateY(-2px)}.book-cover-fallback{display:flex;flex-direction:column;justify-content:center;gap:6px;padding:14px;color:#fff;background:linear-gradient(150deg,oklch(62% .13 var(--cover-hue)),oklch(48% .11 var(--cover-hue)))}.book-cover-fallback b{font-size:12px;opacity:.85;font-weight:600}.book-cover-fallback span{font-size:17px;font-weight:700;line-height:1.25}.unit-row{width:100%;text-align:left;cursor:pointer}.unit-row .u-caret{flex:none;color:var(--faint);transition:transform .18s ease}.unit-row.open .u-caret{transform:rotate(90deg)}.unit-row.open{border-color:var(--border-strong)}.unit-body{padding:2px 0 6px}.appbar .backbtn{display:flex;align-items:center;width:auto;gap:6px;padding:0 14px 0 10px;background:var(--surface-2);border:1px solid var(--border);color:var(--fg)}.appbar .backbtn:hover{border-color:var(--border-strong)}.appbar .backbtn span{font-size:14px;font-weight:600}.topic-h{margin:14px 4px 8px;font-size:13.5px;line-height:1.45;color:var(--muted)}.topic-h b{color:var(--fg);font-weight:600}.brand-mark .ico{width:18px;height:18px}
