@font-face{font-family:Literata Local;src:local(Literata),local(Georgia)}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f7f5;--surface:#fff;--panel:#f0f0ee;--panel-strong:#e4e4e1;--text:#111;--muted:#70706b;--soft:#9b9b95;--line:#d9d9d4;--line-strong:#b9b9b2;--accent:#111;--accent-strong:#000;--danger:#9d2f25;--success:#2c6d45;--warning:#8b6426;--shadow:0 12px 28px #00000014;--radius:4px;--control-height:38px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-family:Avenir Next,Segoe UI,sans-serif}body[data-theme=dark]{--bg:#111;--surface:#171717;--panel:#202020;--panel-strong:#2a2a2a;--text:#f4f4f1;--muted:#a2a29d;--soft:#777772;--line:#343434;--line-strong:#505050;--accent:#f4f4f1;--accent-strong:#fff;--shadow:none}body[data-theme=ink]{--bg:#fff;--surface:#fff;--panel:#f5f5f5;--panel-strong:#ededed;--text:#000;--muted:#333;--soft:#666;--line:#1f1f1f;--line-strong:#000;--accent:#000;--accent-strong:#000;--shadow:none}button,input,select,textarea{font:inherit}button{color:inherit}.theme-dark{--bg:#111;--surface:#171717;--panel:#202020;--panel-strong:#2a2a2a;--text:#f4f4f1;--muted:#a2a29d;--soft:#777772;--line:#343434;--line-strong:#505050;--accent:#f4f4f1;--accent-strong:#fff;--shadow:none}.theme-ink{--bg:#fff;--surface:#fff;--panel:#f5f5f5;--panel-strong:#ededed;--text:#000;--muted:#333;--soft:#666;--line:#1f1f1f;--line-strong:#000;--accent:#000;--accent-strong:#000;--shadow:none}.app{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.nav{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;justify-content:space-between;height:100vh;padding:18px 12px;display:flex;position:sticky;top:0}.brand{letter-spacing:0;align-items:center;gap:10px;height:42px;padding:0 10px;font-size:14px;font-weight:650;display:flex}.nav-button,.icon-action,.tool-pill,.primary,.ghost{border-radius:var(--radius);min-height:var(--control-height);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;display:inline-flex}.nav-button{width:100%;color:var(--muted);background:0 0;justify-content:flex-start;margin-top:4px;padding:0 12px;transition:background-color .14s,color .14s,border-color .14s}.nav-button.active,.nav-button:hover{background:var(--panel);color:var(--text)}.nav-button.active{border-color:var(--line)}.nav-footer{border-top:1px solid var(--line);gap:8px;padding-top:12px;display:grid}.nav-footer>span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;padding:0 12px;font-size:13px;overflow:hidden}.main{min-width:0}.page{width:min(1240px,100vw - 280px);margin:0 auto;padding:40px 32px 96px}.page-header{justify-content:space-between;align-items:center;gap:20px;min-height:88px;display:flex}.page-header h1{letter-spacing:0;margin:0;font-size:34px;font-weight:680;line-height:1.08}.page-header p{max-width:520px;margin:8px 0 0;font-size:14px;line-height:1.6}.page-header p,.muted,.metric span,.book-card p,.word-row span,.word-row small,.reader-title span{color:var(--muted)}.icon-action{background:var(--surface);border-color:var(--line);width:40px;height:40px;box-shadow:none;transition:background-color .14s,border-color .14s,color .14s}.icon-action.active{background:var(--accent);border-color:var(--accent);color:var(--surface)}.icon-action:hover,.tool-pill:hover,.ghost:hover{border-color:var(--line-strong);background:var(--panel)}.stats-strip{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:20px 0 32px;display:grid}.metric{background:var(--surface);border:0;border-radius:0;padding:18px}.metric strong{font-size:24px;font-weight:620;line-height:1;display:block}.book-grid{background:0 0;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;display:grid}.book-card{text-align:left;background:var(--surface);border:1px solid var(--line);cursor:pointer;min-height:132px;box-shadow:none;border-radius:0;grid-template-columns:86px 1fr;gap:14px;padding:16px;transition:background-color .14s,border-color .14s;display:grid}.book-card:hover{background:var(--panel);border-color:var(--line-strong)}.cover{background:var(--panel);border:1px solid var(--line);place-items:center;width:86px;height:112px;display:grid;overflow:hidden}.cover img{object-fit:cover;width:100%;height:100%}.book-card h2{margin:2px 0 8px;font-size:17px;font-weight:620;line-height:1.28}.book-info{min-width:0}.book-meta-line,.book-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.book-meta-line{color:var(--muted);margin-top:10px;font-size:12px}.book-progress{background:var(--panel);height:3px;margin:12px 0}.book-progress span{background:var(--text);height:100%;display:block}.book-actions{margin-top:8px}.status{border:1px solid var(--line);height:24px;color:var(--muted);align-items:center;padding:0 8px;font-size:12px;display:inline-flex}.status.ready,.status.learning{border-color:var(--line-strong);color:var(--text)}.status.ignored,.status.suspended{color:var(--soft)}.screen-center,.login-wrap{place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:min(380px,100%);box-shadow:none;padding:28px}.login-brand{margin-bottom:22px}input,textarea,select{width:100%;min-height:var(--control-height);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);margin:6px 0 12px;padding:0 12px;transition:border-color .14s,background-color .14s}input:focus,textarea:focus,select:focus{outline:2px solid color-mix(in srgb, var(--accent) 22%, transparent);outline-offset:2px;border-color:var(--accent)}textarea{resize:vertical;padding-top:10px}.primary{background:var(--accent);border-color:var(--accent);color:var(--surface);padding:0 14px;transition:opacity .14s,transform 90ms}.primary:hover{opacity:.86}.primary:active,.rating-button:active,.nav-button:active,.icon-action:active,.tool-pill:active,.ghost:active{transform:translateY(1px)}.ghost{border-color:var(--line);background:0 0;padding:0 14px}.small{min-height:32px;font-size:13px}.error{color:var(--danger)}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.reader-shell{background:var(--bg);grid-template-rows:56px 1fr 46px;height:100vh;display:grid;position:relative}.reader-top,.reader-bottom{border-bottom:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;display:flex}.reader-bottom{border-top:1px solid var(--line);border-bottom:0}.reader-bottom span{color:var(--muted);font-size:13px}.reader-title{flex-direction:column;align-items:center;min-width:0;display:flex}.reader-title strong,.reader-title span{text-overflow:ellipsis;white-space:nowrap;max-width:52vw;overflow:hidden}.reader-title strong{font-size:14px;font-weight:620}.reader-title span{font-size:12px}.reader-tools{align-items:center;gap:8px;display:flex}.tool-pill{background:var(--surface);border-color:var(--line);min-height:36px;padding:0 12px;font-size:13px;transition:background-color .14s,border-color .14s,color .14s}.tool-pill.active{background:var(--accent);border-color:var(--accent);color:var(--surface)}.reader-stage{place-items:center;min-height:0;padding:24px 56px;display:grid;position:relative;overflow:hidden}.reading-spread{width:min(var(--reader-width), 100%);background:var(--surface);border:1px solid var(--line);height:100%;min-height:0;box-shadow:none;font-family:var(--reader-font-family);font-size:var(--reader-font-size);line-height:var(--reader-line-height);grid-template-columns:minmax(0,1fr);gap:18px;display:grid;position:relative;overflow:auto}.page-mode-double .reading-spread{width:min(calc(var(--reader-width) * 1.72), calc(100vw - 120px));grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.page-mode-double .reading-spread.spread-1{width:min(var(--reader-width), 100%);grid-template-columns:minmax(0,1fr)}.page-mode-double .reading-spread.spread-2:before{content:"";background:var(--line);pointer-events:none;width:1px;position:absolute;top:clamp(24px,2.7vw,44px);bottom:clamp(24px,2.7vw,44px);left:50%;transform:translate(-.5px)}.reading-page{background:0 0;border:0;width:100%;min-width:0;min-height:100%;padding:clamp(28px,3.6vw,52px);overflow:visible}.page-mode-double .reading-page{padding:clamp(24px,2.7vw,44px)}.theme-ink .reading-spread{border-width:1px}.reader-block{break-inside:avoid;margin-bottom:1.35em;position:relative}.reader-block p,.reader-block blockquote,.reader-block h2{margin:0 0 .55em}.reader-block h2{font-size:1.32em;font-weight:620;line-height:1.25}.reader-block blockquote{border-left:1px solid var(--line-strong);color:var(--muted);padding-left:16px}.inline-tool{border:1px solid var(--line);background:var(--surface);opacity:0;cursor:pointer;width:28px;height:28px;color:var(--muted);place-items:center;transition:opacity .12s,border-color .12s,color .12s;display:grid;position:absolute;top:0;right:-34px}.reader-block:hover .inline-tool{opacity:1}.inline-tool:hover{color:var(--text);border-color:var(--line-strong)}.page-zone{width:56px;color:var(--muted);cursor:pointer;opacity:.55;background:0 0;border:0;transition:opacity .14s,background-color .14s;position:absolute;top:0;bottom:0}.page-zone:hover{opacity:1;background:color-mix(in srgb, var(--panel) 64%, transparent)}.page-zone.left{left:0}.page-zone.right{right:0}.block-translation{border-top:1px solid var(--line);color:var(--muted);margin:.5em 0 1.1em;padding:.85em 0 0;font-family:Avenir Next,Segoe UI,sans-serif;font-size:.88em}.translation-head,.terms-row{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:.82em;line-height:1.45;display:flex}.translation-text{white-space:pre-wrap;color:var(--text);margin:.4em 0 0;line-height:1.72}.terms-row span,.candidate-list span{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:4px 8px}.candidate-chips{flex-wrap:wrap;gap:6px;margin-top:.75em;display:flex}.candidate-chip{border:1px solid var(--line);background:var(--panel);align-items:center;gap:6px;max-width:100%;padding:4px 6px;font-size:.82em;display:inline-flex}.candidate-chip strong,.candidate-chip em{overflow-wrap:anywhere;font-style:normal}.candidate-chip button{border:1px solid var(--line);background:var(--surface);min-height:24px;color:var(--muted);cursor:pointer;padding:0 6px}.toc-panel{z-index:8;visibility:hidden;pointer-events:none;background:var(--surface);border-right:1px solid var(--line);width:min(360px,100vw - 24px);box-shadow:none;padding:12px;transition:transform .18s,visibility 0s linear .18s;position:absolute;top:58px;bottom:48px;left:0;overflow:auto;transform:translate(calc(-100% - 2px))}.toc-open-local .toc-panel{visibility:visible;pointer-events:auto;transition-delay:0s;transform:translate(0)}.toc-head{justify-content:space-between;align-items:center;height:42px;margin-bottom:8px;display:flex}.toc-list{gap:2px;display:grid}.toc-panel .toc-item{text-align:left;width:100%;color:var(--muted);border-radius:var(--radius);white-space:normal;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;background:0 0;border:0;padding:9px 10px;line-height:1.35;display:block}.toc-panel .toc-item.active,.toc-panel .toc-item:hover{color:var(--text);background:var(--panel)}.sheet{background:var(--surface);border:1px solid var(--line);width:min(460px,100vw - 36px);max-height:min(680px,100vh - 140px);box-shadow:var(--shadow);border-radius:var(--radius);z-index:12;padding:18px;position:absolute;bottom:62px;right:18px;overflow:auto}.modal-sheet{position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.sheet-head{justify-content:space-between;align-items:center;display:flex}.sheet h3{color:var(--muted);margin:18px 0 8px;font-size:13px;font-weight:620;line-height:1.2}.sheet p{line-height:1.65}.selected-quote{background:var(--panel);border-left:1px solid var(--line-strong);padding:12px}.note-line{border-left:1px solid var(--line-strong);padding-left:10px}.candidate-list{flex-wrap:wrap;gap:8px;display:flex}.segmented{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);gap:0;margin:10px 0 18px;padding:0;display:inline-flex;overflow:hidden}.segmented button,.theme-buttons button{cursor:pointer;min-height:36px;color:var(--muted);background:0 0;border:1px solid #0000;padding:0 12px}.segmented button.active,.theme-buttons button.active{background:var(--accent);border-color:var(--accent);color:var(--surface)}.segmented button:hover,.theme-buttons button:hover{color:var(--text);background:var(--panel)}.segmented button.active:hover,.theme-buttons button.active:hover{color:var(--surface);background:var(--accent)}.vocab-controls,.batch-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.batch-bar{border:1px solid var(--line);background:var(--surface);min-height:42px;margin-bottom:12px;padding:10px 12px}.select-row,.select-cell{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:inline-flex}.select-row input,.select-cell input{width:16px;min-height:16px;margin:0}.table-list{border:1px solid var(--line);background:var(--line);gap:0;display:grid}.word-row{background:var(--surface);border:0;border-radius:0;grid-template-columns:22px 1fr auto;gap:18px;padding:16px;display:grid}.word-row.editing{grid-template-columns:22px 1fr auto;align-items:start}.word-content{min-width:0}.word-title-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.word-row strong,.word-row span{display:inline-flex}.word-row strong{font-size:17px;font-weight:620}.word-row p{margin:8px 0 0;line-height:1.55}.word-row small{overflow-wrap:anywhere;margin-top:8px;display:block}.word-edit-grid{grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) 120px 120px;gap:8px;display:grid}.word-edit-grid textarea{grid-column:1/-1;min-height:78px}.row-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.icon-text{gap:6px}.danger-action{color:var(--danger)}.danger-action:hover{border-color:color-mix(in srgb, var(--danger) 44%, var(--line));background:color-mix(in srgb, var(--danger) 8%, var(--surface))}.review-page{place-items:center;min-height:100vh;padding:40px;display:grid}.review-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:min(780px,100%);box-shadow:none;padding:clamp(28px,5vw,58px);position:relative}.review-meta{color:var(--muted);justify-content:space-between;gap:12px;display:flex}.review-progress{background:var(--panel);height:3px;margin:14px 0 20px}.review-progress span{background:var(--text);height:100%;display:block}.review-card h1{margin:12px 0;padding-right:56px;font-size:clamp(40px,7vw,78px);font-weight:650;line-height:1}.review-card .speak{position:absolute;top:clamp(76px,9vw,104px);right:clamp(24px,5vw,52px)}.review-card blockquote{border-left:1px solid var(--line-strong);color:var(--muted);padding-left:16px;line-height:1.65}.example-en{font-size:clamp(19px,2vw,26px);color:var(--text)!important}.example-empty{border-top:1px solid var(--line);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;margin:20px 0 0;padding:14px 0;display:flex}.example-empty p{color:var(--muted);margin:0;line-height:1.55}.review-card-tools{flex-wrap:wrap;gap:8px;margin:18px 0 0;display:flex}.review-actions{grid-template-columns:repeat(4,1fr);gap:8px;margin:24px 0 12px;display:grid}.review-answer{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);margin-top:24px;padding:18px}.review-answer span{color:var(--muted)}.review-answer p{margin:8px 0 0;font-size:20px}.review-answer p+span{margin-top:16px;display:block}.reveal-button{width:100%;margin-top:24px}.rating-button{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;place-items:center;gap:4px;min-height:48px;transition:background-color .14s,border-color .14s,color .14s;display:grid}.rating-button span{color:var(--muted);font-size:12px}.rating-button.easy span{color:var(--surface);opacity:.82}.summary-grid{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(4,1fr);gap:1px;margin:20px 0;display:grid}.rating-button.again{border-color:color-mix(in srgb, var(--danger) 44%, var(--line))}.rating-button.hard{border-color:color-mix(in srgb, var(--warning) 44%, var(--line))}.rating-button.good{border-color:color-mix(in srgb, var(--success) 44%, var(--line))}.rating-button.easy{background:var(--accent);border-color:var(--accent);color:var(--surface)}.rating-button:hover{border-color:var(--line-strong);background:var(--panel)}.rating-button.easy:hover{background:var(--accent);color:var(--surface)}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:920px;display:grid}.field{display:block}.field span,.check-row{color:var(--muted);font-size:14px}.field input[type=range]{background:0 0;border:0;padding:0}.field input[type=file]{padding:8px}.field-hint{color:var(--muted);margin:-4px 0 12px;font-size:13px;line-height:1.5}.theme-buttons{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(3,1fr);gap:1px;margin-top:6px;display:grid}.theme-buttons.two{grid-template-columns:repeat(2,1fr)}.theme-buttons button{background:var(--surface);border-radius:0;justify-content:center;align-items:center;gap:6px;display:inline-flex}.check-row{align-items:center;gap:8px;min-height:42px;display:flex}.check-row input{width:auto;min-height:auto;margin:0}.save-button{align-self:end}.empty{min-height:260px;color:var(--muted);text-align:center;border:1px dashed var(--line);border-radius:var(--radius);background:0 0;align-content:center;place-items:center;display:grid}.notice{border:1px solid var(--line);background:var(--surface);margin-bottom:16px;padding:12px}.toast{z-index:30;background:var(--text);color:var(--surface);border-radius:var(--radius);padding:12px 16px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.mobile-bar{display:none}@media (width<=860px){.app{grid-template-columns:1fr}.nav{display:none}.page{width:100%;padding:24px 14px 92px}.page-header{align-items:flex-start}.page-header h1{font-size:28px}.stats-strip,.settings-grid{grid-template-columns:1fr 1fr}.book-grid{grid-template-columns:1fr}.reader-shell{grid-template-rows:54px 1fr 48px;height:100dvh}.reader-stage{padding:8px 0}.reading-spread,.page-mode-double .reading-spread{grid-template-columns:1fr;gap:0;width:100%}.reading-page{width:100%;height:100%;box-shadow:none;border-left:0;border-right:0}.page-zone{opacity:.42;background:color-mix(in srgb, var(--surface) 82%, transparent);border:1px solid var(--line);width:38px;height:132px;top:50%;bottom:auto;transform:translateY(-50%)}.page-zone.left{left:6px}.page-zone.right{right:6px}.inline-tool{opacity:1;width:32px;height:32px;margin-top:4px;position:static}.reader-title strong,.reader-title span{max-width:44vw}.sheet{width:auto;bottom:58px;left:8px;right:8px}.modal-sheet{width:calc(100vw - 16px);top:50%;bottom:auto}.review-actions,.summary-grid{grid-template-columns:1fr 1fr}.word-row{grid-template-columns:22px 1fr}.row-actions{grid-column:2;justify-content:flex-start}.word-edit-grid{grid-template-columns:1fr 1fr}.mobile-bar{z-index:20;padding:6px max(6px, env(safe-area-inset-left)) max(6px, env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-right));background:var(--surface);border-top:1px solid var(--line);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.mobile-bar .nav-button{justify-content:center;min-height:44px;margin:0;padding:0}.mobile-bar .nav-button span{display:none}}@media (width<=560px){.stats-strip,.settings-grid{grid-template-columns:1fr}.book-card{grid-template-columns:68px 1fr}.book-actions{grid-column:1/-1}.cover{width:68px;height:92px}.reader-tools .tool-pill{width:40px;padding:0;font-size:0}.reader-tools .tool-pill svg{margin:0}.reader-title strong,.reader-title span{max-width:36vw}.review-page{padding:16px}.review-card{padding:22px}.example-empty{flex-direction:column;align-items:flex-start}.word-edit-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.theme-ink *,.theme-ink :before,.theme-ink :after{text-shadow:none!important;box-shadow:none!important;transition:none!important;animation:none!important}
