:root{--bg:#f4f4f5;--surface:#fff;--surface-2:#eeeef0;--text:#1f1f22;--muted:#6e6e76;--border:#e1e1e5;--accent:#e0241b;--accent-soft:#fdecea;--ink:#111113;--good:#1f8a4c;--warn:#c27a00;--focus:#2563eb;--shadow:0 1px 2px #0000000d, 0 2px 10px #0000000a;--font-ui:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-zh:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;--font-read:var(--font-ui);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#141416;--surface:#1c1c1f;--surface-2:#26262a;--text:#ececef;--muted:#9a9aa2;--border:#2f2f34;--accent:#ff4d42;--accent-soft:#3a1917;--ink:#f7f7f8;--good:#4ec27f;--warn:#e0a53a;--focus:#6ea0ff;--shadow:0 1px 2px #0006, 0 4px 16px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#141416;--surface:#1c1c1f;--surface-2:#26262a;--text:#ececef;--muted:#9a9aa2;--border:#2f2f34;--accent:#ff4d42;--accent-soft:#3a1917;--ink:#f7f7f8;--good:#4ec27f;--warn:#e0a53a;--focus:#6ea0ff;--shadow:0 1px 2px #0006, 0 4px 16px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);margin:0;font-size:16px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}h1,h2,h3{line-height:1.25}.loading,.fatal{text-align:center;color:var(--muted);padding:3rem 1rem}.app{min-height:100vh}.topbar{z-index:20;background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding:.5rem 1rem;display:flex;position:sticky;top:0}.topbar button,.button,.chapter-footer button,.row button{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-height:36px;padding:.35rem .7rem}.topbar button:hover:not(:disabled),.button:hover{background:var(--surface-2)}button:disabled{opacity:.4;cursor:default}.brand{align-items:baseline;gap:.4rem;display:flex;background:0 0!important;border:none!important;padding:0!important}.logo{align-items:center;gap:.35em;line-height:1;display:inline-flex}.wordmark{font-family:"Outfit", var(--font-ui);letter-spacing:-.02em;color:var(--ink);font-weight:600}.wordmark .u{color:var(--accent)}.logo-zh{font-family:var(--font-zh);color:var(--muted);letter-spacing:.08em;margin-left:.15em;font-size:.72em;font-weight:500}.chapter-nav{gap:.25rem;margin-left:.75rem;display:flex}.chapter-current{min-width:8.5em;font-weight:600}.topbar-actions{align-items:center;gap:.4rem;margin-left:auto;display:flex}.topbar .ctl{border:1px solid var(--border);background:var(--surface);border-radius:8px;justify-content:center;align-items:center;height:36px;min-height:36px;padding:0 .75rem;font-size:.9rem;line-height:1;display:inline-flex}.topbar select.ctl{padding:0 .5rem}.pinyin-toggle.on{color:var(--accent);background:var(--accent-soft)!important;border-color:var(--accent)!important}.ctl-group{display:inline-flex}.ctl-group .ctl{min-width:40px;padding:0 .6rem}.ctl-group .ctl:first-child{border-radius:8px 0 0 8px}.ctl-group .ctl:last-child{border-radius:0 8px 8px 0;margin-left:-1px}.topbar .icon-btn{width:36px;padding:0}.toggle{align-items:center;gap:.3rem;margin-right:.25rem;font-size:.9rem;display:inline-flex}.error-bar{background:var(--accent-soft);color:var(--accent);align-items:center;gap:1rem;padding:.5rem 1rem;display:flex}.layout{grid-template-columns:minmax(0,1fr) minmax(320px,420px);gap:1.5rem;max-width:1320px;margin:0 auto;padding:1rem 1.25rem 4rem;display:grid}.side{background:var(--surface);border:1px solid var(--border);max-height:calc(100vh - 80px);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;align-self:start;display:flex;position:sticky;top:64px;overflow:hidden}.sheet-close,.bottom-bar{display:none}.tabs{border-bottom:1px solid var(--border);background:var(--surface-2);display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:.65rem .5rem;font-size:.9rem}.tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent);background:var(--surface);font-weight:600}.panel-body{padding:1rem 1.1rem 1.5rem;overflow-y:auto}.panel-body h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:1.25rem 0 .5rem;font-size:.8rem}.panel-body section:first-child h3{margin-top:.5rem}.chapter-title{flex-wrap:wrap;align-items:baseline;gap:.75rem;margin:.5rem 0 .25rem;display:flex}.chapter-title .zh{font-family:var(--font-zh);color:var(--accent);font-size:1.8rem}.chapter-title .en{color:var(--muted);font-size:1rem;font-weight:500}.chapter-title .progress{color:var(--muted);margin-left:auto;font-size:.8rem;font-weight:400}.hint{color:var(--muted);margin:0 0 1rem;font-size:.85rem}.lines{margin:0;padding:0;list-style:none}.line{border-bottom:1px solid var(--border);border-radius:8px;grid-template-columns:2rem minmax(0,1fr);gap:.5rem;padding:.75rem .5rem .9rem;transition:background .6s;display:grid}.line.flash{background:var(--accent-soft)}.line-no{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;padding-top:.9rem;font-size:.75rem}.zh-line{font-family:var(--font-zh);font-size:calc(1.9rem * var(--zh-scale,1));color:var(--ink);flex-wrap:wrap;align-items:flex-end;margin:0 0 .4rem;line-height:1.4;display:flex}.hz{font:inherit;color:inherit;background:0 0;border:none;border-radius:6px;margin:0;padding:0 .04em;line-height:1.2}.hz:hover{background:var(--surface-2)}.hz.selected{background:var(--accent-soft);color:var(--accent)}.hz ruby{flex-direction:column-reverse;align-items:center;display:inline-flex}.hz rt{font-family:var(--font-ui);font-size:calc(.68rem * var(--zh-scale,1));color:var(--muted);text-align:center;min-height:0;line-height:1.3}.zh-line:not(.with-pinyin) .hz rt{display:none}.zh-line.with-pinyin .hz{min-width:1.45em}.hz.poly rt{text-underline-offset:2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.punct{color:var(--muted);padding-bottom:.05em}.draft,.note,.field textarea,.dialog textarea,.dialog input:not([type=checkbox]):not([type=file]){border:1px solid var(--border);background:var(--surface);resize:vertical;border-radius:8px;width:100%;padding:.5rem .65rem}.draft{font-family:var(--font-read);resize:none;font-size:1.05rem;line-height:1.5;overflow:hidden}.draft:placeholder-shown{background:0 0;border-style:dashed}.note{background:var(--surface-2);resize:none;margin-top:.35rem;font-size:.9rem;overflow:hidden}.link{color:var(--accent);background:0 0;border:none;padding:.2rem 0;font-size:.85rem}.link:hover{text-decoration:underline}.link.danger{color:var(--accent)}.add-note{opacity:.7}.chapter-footer{justify-content:space-between;margin-top:1.5rem;display:flex}.empty ul{color:var(--muted);padding-left:1.2rem}.char-head{align-items:center;gap:1rem;display:flex}.big-char{font-family:var(--font-zh);color:var(--ink);background:var(--surface-2);border-radius:12px;flex:none;padding:.6rem .8rem;font-size:4.5rem;line-height:1}.readings{font-size:1.3rem;font-weight:600}.muted{color:var(--muted)}.small{font-size:.8rem}.tag{letter-spacing:.05em;text-transform:uppercase;background:var(--accent-soft);color:var(--accent);vertical-align:middle;border-radius:4px;margin-left:.35rem;padding:.05rem .35rem;font-size:.65rem;display:inline-block}.muted-tag{background:var(--surface-2);color:var(--muted)}.senses{margin:0;padding-left:1.2rem}.senses li{margin-bottom:.45rem}.py{color:var(--accent);font-size:.9em;font-weight:600}.example{color:var(--muted);font-size:.85rem}.note-box{background:var(--surface-2);border-left:3px solid var(--accent);border-radius:4px;padding:.5rem .75rem;font-size:.9rem}.words,.cedict{margin:0;padding:0;list-style:none}.words li,.cedict li{margin-bottom:.35rem;font-size:.92rem}.zh-inline,.decomp{font-family:var(--font-zh);font-size:1.15rem}.occ{flex-wrap:wrap;gap:.3rem;display:flex}.chip{border:1px solid var(--border);background:var(--surface);font-variant-numeric:tabular-nums;border-radius:999px;padding:.1rem .55rem;font-size:.78rem}.chip:hover{background:var(--surface-2)}.chip.current{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.tr-picker{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.35rem 1rem;padding-bottom:.75rem;display:flex}.check{align-items:center;gap:.35rem;font-size:.9rem;display:inline-flex}.tr h3{text-transform:none!important;letter-spacing:0!important;color:var(--text)!important;font-size:.95rem!important}.tr-para,.my-translation p{font-family:var(--font-read);white-space:pre-line;margin:0 0 .7rem;font-size:1rem;line-height:1.6}.field{flex-direction:column;gap:.3rem;margin-bottom:1rem;font-size:.9rem;display:flex}.field select{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.4rem}.my-translation{background:var(--surface-2);border-radius:8px;padding:.75rem 1rem .1rem}.dialog{background:var(--surface);color:var(--text);width:min(760px,100vw - 32px);max-height:calc(100vh - 48px);box-shadow:var(--shadow);border:none;border-radius:14px;padding:0}.dialog::backdrop{background:#0006}.dialog-inner{flex-direction:column;max-height:calc(100vh - 48px);display:flex}.dialog-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.dialog-head h2{margin:0;font-size:1.15rem}.icon{color:var(--muted);background:0 0;border:none;padding:.2rem .5rem;font-size:1.6rem;line-height:1}.dialog-body{padding:.5rem 1.25rem 1.5rem;overflow-y:auto}.dialog-body h3{margin:1.25rem 0 .5rem;font-size:1rem}.dialog .row{flex-wrap:wrap;gap:.5rem;margin:.5rem 0;display:flex}.dialog .row input{flex:1;min-width:8em}.primary{border:1px solid;border-radius:8px;padding:.4rem .9rem;background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important}.primary:disabled{opacity:.4}.msg{background:var(--accent-soft);border-radius:8px;padding:.5rem .75rem}.sources{padding-left:1.2rem;font-size:.9rem}details summary{cursor:pointer;color:var(--accent);margin:.5rem 0}.legend{flex-wrap:wrap;gap:1rem;margin-bottom:.75rem;font-size:.8rem;display:flex}.status-dot:before{content:"";background:var(--dot,var(--border));border-radius:50%;width:.7em;height:.7em;margin-right:.35em;display:inline-block}.s-todo{--dot:var(--border)}.s-draft{--dot:var(--warn)}.s-revised{--dot:var(--focus)}.s-final{--dot:var(--good)}.grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:.4rem;display:grid}.cell{border:1px solid var(--border);border-left:4px solid var(--dot);background:var(--surface);border-radius:8px;flex-direction:column;align-items:center;gap:.1rem;padding:.45rem .25rem .55rem;display:flex;position:relative;overflow:hidden}.cell:hover{background:var(--surface-2)}.cell.current{outline:2px solid var(--accent)}.cell-n{font-variant-numeric:tabular-nums;font-weight:700}.cell-zh{font-family:var(--font-zh);color:var(--muted);font-size:.8rem}.cell-bar{background:var(--accent);height:3px;position:absolute;bottom:0;left:0}@media (width<=900px){.layout{grid-template-columns:minmax(0,1fr);padding:.5rem 16px 5rem}.topbar{flex-wrap:wrap;gap:.4rem;padding:.4rem 16px}.chapter-nav{order:3;width:100%;margin-left:0}.topbar-actions{margin-left:auto}.side{z-index:40;border-radius:16px 16px 0 0;height:78vh;max-height:78vh;transition:transform .25s;position:fixed;inset:auto 0 0;transform:translateY(105%)}.side.open{transform:translateY(0)}.sheet-close{z-index:1;color:var(--muted);background:0 0;border:none;font-size:1.6rem;display:block;position:absolute;top:.3rem;right:.4rem}.tabs{padding-right:2.5rem}.bottom-bar{z-index:30;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;inset:auto 0 0}.bottom-bar button{background:0 0;border:none;flex:1;padding:.8rem .25rem;font-size:.9rem}.line{grid-template-columns:1.4rem minmax(0,1fr);padding-inline:0}.zh-line{font-size:calc(1.6rem * var(--zh-scale,1))}}@media (width<=600px){.size-ctl{display:none}}.summary{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin:.25rem 0 1.25rem}.summary-toggle{text-align:left;background:0 0;border:none;border-radius:12px;align-items:center;gap:.6rem;width:100%;padding:.7rem .9rem;display:flex}.summary-toggle:hover{background:var(--surface-2)}.summary-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.8rem;font-weight:600}.summary-current{color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin-left:auto;font-size:.85rem;overflow:hidden}.summary-toggle .chev{color:var(--accent);flex:none;transition:transform .2s}@media (prefers-reduced-motion:reduce){.summary-toggle .chev{transition:none}}.summary.open .summary-toggle .chev{transform:rotate(180deg)}.summary.open .summary-toggle{border-bottom:1px solid var(--border);border-radius:12px 12px 0 0}.summary-pick{color:var(--muted);align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:.8rem;display:flex}.summary-pick select{border:1px solid var(--border);background:var(--surface);border-radius:8px;max-width:100%;padding:.25rem .4rem;font-size:.85rem}.summary-body{max-width:68ch;padding:.75rem 1rem .25rem}.summary-body p{white-space:pre-line;margin:0 0 .75rem;line-height:1.65}.summary-note{color:var(--muted);font-size:.8rem}.splash{z-index:60;background:var(--bg);padding:calc(env(safe-area-inset-top,0px) + 12vh) 16px 3rem;justify-content:center;display:flex;position:fixed;inset:0;overflow-y:auto}.splash-inner{flex-direction:column;gap:1.5rem;width:min(560px,100%);display:flex}.splash-tag{color:var(--muted);text-wrap:balance;margin:0;font-size:1.15rem}.splash-quote{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin:0;padding:1.25rem 1.25rem 1rem}.splash-quote blockquote{font-family:var(--font-zh);letter-spacing:.08em;color:var(--ink);margin:0 0 .6rem;font-size:2.1rem}.splash-quote figcaption{color:var(--text);line-height:1.55}.splash-quote figcaption span{color:var(--muted);font-size:.85rem}.splash-actions{flex-wrap:wrap;gap:.6rem;display:flex}.big{border:1px solid var(--border);background:var(--surface);border-radius:10px;min-height:46px;font-size:1rem;font-weight:600;padding:.6rem 1.2rem!important}.splash-stats{grid-template-columns:repeat(4,1fr);gap:.75rem;margin:0;display:grid}.splash-stats div{flex-direction:column-reverse;justify-content:flex-end;gap:.1rem;display:flex}.splash-stats dt{color:var(--muted);font-size:.72rem;line-height:1.3}.splash-stats dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.5rem;font-weight:600}.splash-bar{background:var(--surface-2);border-radius:4px;height:4px;margin-top:-.75rem;overflow:hidden}.splash-bar span{background:var(--accent);height:100%;display:block}@media (width<=480px){.splash-stats{grid-template-columns:repeat(2,1fr)}.splash-quote blockquote{font-size:1.7rem}}.fulltext{background:var(--surface);border:1px solid var(--border);font-family:var(--font-zh);font-size:calc(1.35rem * var(--zh-scale,1));letter-spacing:.04em;color:var(--ink);border-radius:12px;margin:.5rem 0 1rem;padding:1rem 1.1rem;line-height:1.9}.fulltext-line{color:inherit;border-radius:4px;text-decoration:none}.fulltext-line:hover,.fulltext-line.active{background:var(--accent-soft);color:var(--accent)}.line-tip{z-index:50;background:var(--ink);max-width:min(260px,100vw - 32px);color:var(--surface);box-shadow:var(--shadow);font-family:var(--font-ui);letter-spacing:0;pointer-events:none;text-align:center;border-radius:8px;padding:.45rem .7rem;font-size:.85rem;line-height:1.4;position:fixed;transform:translate(-50%,calc(-100% - 8px))}.line-tip:after{content:"";background:inherit;width:10px;height:10px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)rotate(45deg)}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:1.5rem 0 .25rem;font-size:.8rem;font-weight:600}.ask-nav{margin-right:.35rem;font-weight:600}.ask-nav.on{color:var(--accent);background:var(--accent-soft)!important;border-color:var(--accent)!important}.ask-splash span{font-family:var(--font-zh);color:var(--accent);margin-right:.2rem}.ask-layout{max-width:720px;margin:0 auto;padding:0 16px}.ask{flex-direction:column;min-height:calc(100vh - 60px);display:flex}.ask-main{flex:1;padding:3rem 0 1.5rem}.ask-intro{flex-direction:column;gap:.75rem;margin-top:6vh;display:flex}.ask-han{font-family:var(--font-zh);color:var(--accent);font-size:4.5rem;line-height:1}.ask-intro h1{letter-spacing:-.01em;text-wrap:balance;margin:.5rem 0 0;font-size:2rem;font-weight:600}.ask-intro p{max-width:34rem;margin:0;line-height:1.55}.ask-examples{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.chip-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.4rem .85rem;font-size:.88rem}.chip-btn:hover{border-color:var(--accent);color:var(--accent)}.ask-answer{flex-direction:column;gap:1.25rem;display:flex}.ask-question{color:var(--muted);margin:0;font-size:.95rem}.ask-reflection{color:var(--ink);text-wrap:pretty;margin:0;font-size:1.4rem;line-height:1.55}.ask-source{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:.6rem;margin:0;padding:1.1rem 1.2rem;display:flex}.ask-source figcaption{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:.75rem;font-weight:600}.ask-zh{font-family:var(--font-zh);letter-spacing:.04em;color:var(--ink);margin:0;font-size:1.45rem;line-height:1.8}.ask-en{color:var(--text);margin:0;line-height:1.6}.ask-source .link{align-self:flex-start;font-size:.9rem;font-weight:600}.ask-form{padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom,0px));background:linear-gradient(to bottom, transparent, var(--bg) 30%);position:sticky;bottom:0}.ask-box{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:22px;align-items:flex-end;gap:.5rem;padding:.4rem .4rem .4rem 1rem;display:flex}.ask-box:focus-within{border-color:var(--accent)}.ask-box textarea{resize:none;background:0 0;border:none;outline:none;flex:1;min-height:2.4rem;max-height:8rem;padding:.55rem 0;font-size:1rem;line-height:1.4}.ask-send{background:var(--accent);color:#fff;border:none;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.ask-send:disabled{background:var(--surface-2);color:var(--muted);opacity:1}.ask-hint{text-align:center;color:var(--muted);margin:.5rem 0 0;font-size:.75rem}@media (width<=600px){.ask-han{font-size:3.5rem}.ask-intro h1{font-size:1.6rem}.ask-reflection{font-size:1.2rem}}.notice-bar{background:var(--surface-2);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.75rem;padding:.6rem 1rem;font-size:.9rem;display:flex}.icon-btn{position:relative}.icon-btn[data-sync=saving]:after,.icon-btn[data-sync=offline]:after{content:"";background:var(--warn);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}.icon-btn[data-sync=offline]:after{background:var(--accent)}.login .field input{border:1px solid var(--border);background:var(--surface);border-radius:10px;width:100%;height:44px;padding:0 .8rem;font-size:1rem}.login-error{color:var(--accent);margin:0}.line-actions{align-items:center;gap:.75rem;min-height:1.6rem;display:flex}.save-status{color:var(--muted);align-items:center;gap:.4rem;margin-left:auto;font-size:.78rem;display:inline-flex}.save-status.s-saved{color:var(--good)}.save-status.s-unsaved{color:var(--warn)}.save-btn{border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:6px;padding:.1rem .6rem;font-size:.78rem;font-weight:600}.sync-pill{color:var(--good);white-space:nowrap;margin-right:.25rem;font-size:.8rem}.sync-pill.s-saving{color:var(--muted)}.sync-pill.s-offline{color:var(--accent);font-weight:600}@media (width<=600px){.sync-pill.s-saved{display:none}}
