@import url(https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@300;400;500&family=Zen+Old+Mincho:wght@400;700&family=DM+Sans:wght@300;400;500&display=swap);@font-face{font-family:LINE Seed JP;font-style:normal;font-weight:300;src:url(/static/media/LINESeedJP_Th.38a7aef1e30727e43968.otf) format("opentype")}:root{--font-reading:"LINE Seed JP","Noto Serif JP","Georgia",serif;--font-ui:"DM Sans",sans-serif;--radius:12px;--radius-sm:8px;--ease:180ms ease;color-scheme:light}.light,:root{--bg:#f2efe9;--bg-card:#ede8e0;--bg-overlay:#00000061;--text:#2d2926;--text-muted:#6b5c52;--text-faint:#9a8e84;--border:#00000012;--accent:#7c6e8a;--accent-soft:#7c6e8a1a;--accent-hover:#7c6e8a38;--bar-bg:#f2efe9f0;--popup-bg:#ede8e0;--sidebar-bg:#f2efe9;--scrollbar:#0000001a}.dark{--bg:#111009;--bg-card:#1b1814;--bg-overlay:#00000094;--text:#e5ddd0;--text-muted:#9a8a78;--text-faint:#5a4e46;--border:#ffffff12;--accent:#e06040;--accent-soft:#e0604021;--accent-hover:#e0604047;--bar-bg:#111009f5;--popup-bg:#231e19;--sidebar-bg:#1b1814;--scrollbar:#ffffff17;color-scheme:dark}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{-webkit-text-size-adjust:100%;background:#f2efe9;background:var(--bg);color:#2d2926;color:var(--text);height:100dvh;overflow:hidden}body,button{font-family:DM Sans,sans-serif;font-family:var(--font-ui)}button{cursor:pointer}.app{background:#f2efe9;background:var(--bg);display:flex;flex-direction:column;height:100dvh;transition:background .18s ease,color .18s ease;transition:background var(--ease),color var(--ease);width:100vw}.app.library-mode{height:auto;min-height:100dvh}.dropzone-screen{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:28px;justify-content:center;padding:24px}.dropzone-hero{text-align:center}.dropzone-logo{align-items:center;display:flex;gap:10px;justify-content:center;margin-bottom:6px}.logo-jp{color:#7c6e8a;color:var(--accent);font-family:Zen Old Mincho,serif;font-size:52px;line-height:1}.logo-en{color:#2d2926;color:var(--text);font-size:34px;font-weight:300;letter-spacing:3px}.dropzone-sub{color:#6b5c52;color:var(--text-muted);font-size:13px;letter-spacing:.5px}.dropzone{align-items:center;background:#ede8e0;background:var(--bg-card);border:2px dashed #00000012;border:2px dashed var(--border);border-radius:12px;border-radius:var(--radius);cursor:pointer;display:flex;flex-direction:column;gap:12px;max-width:360px;padding:32px 24px;transition:all .18s ease;transition:all var(--ease);width:100%}.dropzone.dragging,.dropzone:hover{background:#7c6e8a1a;background:var(--accent-soft);border-color:#7c6e8a;border-color:var(--accent)}.dropzone-icon{font-size:38px}.dropzone-text{align-items:center;display:flex;flex-direction:column;gap:4px;text-align:center}.dropzone-text strong{font-size:16px;font-weight:500}.dropzone-text span{color:#6b5c52;color:var(--text-muted);font-size:13px}.dropzone-hint{display:flex;flex-direction:column;gap:8px;max-width:360px;width:100%}.hint-row{align-items:center;background:#ede8e0;background:var(--bg-card);border-radius:8px;border-radius:var(--radius-sm);color:#6b5c52;color:var(--text-muted);display:flex;font-size:13px;gap:12px;padding:10px 14px}.loading-row{color:#7c6e8a;color:var(--accent)}.ready-row{color:#4caf7a}.mini-spinner{animation:spin .7s linear infinite;border:2px solid #00000012;border-top-color:#7c6e8a;border:2px solid var(--border);border-radius:50%;border-top-color:var(--accent);flex-shrink:0;height:14px;width:14px}.error-screen,.loading-screen{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:16px;justify-content:center}.loading-spinner{animation:spin .75s linear infinite;border:3px solid #00000012;border-top-color:#7c6e8a;border:3px solid var(--border);border-radius:50%;border-top-color:var(--accent);height:38px;width:38px}@keyframes spin{to{transform:rotate(1turn)}}.loading-text{color:#6b5c52;color:var(--text-muted);font-size:15px}.error-icon{font-size:38px}.error-text{color:#6b5c52;color:var(--text-muted);font-size:14px;max-width:280px;text-align:center}.error-retry{background:#7c6e8a;background:var(--accent);border:none;border-radius:8px;border-radius:var(--radius-sm);color:#fff;font-size:15px;padding:10px 24px}.reader-layout{flex:1 1;flex-direction:column;overflow:hidden}.reader-layout,.topbar{display:flex;position:relative}.topbar{align-items:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f2efe9f0;background:var(--bar-bg);border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);flex-shrink:0;gap:8px;padding:6px 12px;z-index:10}.topbar-btn{background:none;border:none;border-radius:8px;color:#2d2926;color:var(--text);flex-shrink:0;font-size:17px;padding:4px;transition:background .18s ease;transition:background var(--ease)}.topbar-btn:hover{background:#00000012;background:var(--border)}.topbar-title{color:#6b5c52;color:var(--text-muted);flex:1 1;font-size:12px;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.reader-scroll{flex:1 1;overflow-x:hidden;overflow-y:auto;scrollbar-color:#0000001a #0000;scrollbar-color:var(--scrollbar) #0000;scrollbar-width:thin}.reader-scroll::-webkit-scrollbar{width:4px}.reader-scroll::-webkit-scrollbar-thumb{background:#0000001a;background:var(--scrollbar);border-radius:2px}.reader-content{color:#2d2926;color:var(--text);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);margin:0 auto;max-width:680px;overflow-wrap:break-word;padding:24px 22px 80px;word-break:break-word}.vertical-mode .reader-scroll{align-items:flex-start;display:flex;overflow-x:auto;overflow-y:hidden}.vertical-mode .reader-content{height:calc(100vh - 90px);margin:0;max-width:none;padding:24px 32px;text-orientation:mixed;width:-webkit-max-content;width:max-content;writing-mode:vertical-rl}.vertical-mode .chapter-content h1,.vertical-mode .chapter-content h2,.vertical-mode .chapter-content h3{margin:0 1em 0 0;text-combine-upright:none}.vertical-mode .chapter-content .epub-p,.vertical-mode .chapter-content p{margin:0 1.2em 0 0;text-indent:1em}.vertical-mode .chapter-content{text-combine-upright:digits 2}.vertical-mode .reader-scroll::-webkit-scrollbar{height:3px}.vertical-mode .reader-scroll::-webkit-scrollbar-thumb{background:#0000001a;background:var(--scrollbar);border-radius:2px}.dpad-hint{bottom:52px;display:flex;gap:4px;opacity:0;pointer-events:none;position:fixed;right:12px;transition:opacity .3s;z-index:50}.dpad-hint.visible{opacity:1}.dpad-hint-btn{align-items:center;background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:6px;color:#6b5c52;color:var(--text-muted);display:flex;font-size:13px;height:28px;justify-content:center;width:28px}.dpad-hint-btn.active{background:#7c6e8a1a;background:var(--accent-soft);border-color:#7c6e8a;border-color:var(--accent);color:#7c6e8a;color:var(--accent)}.chapter-content .epub-h1,.chapter-content h1{font-family:Zen Old Mincho,serif;font-size:1.55em;font-weight:700;line-height:1.4;margin:28px 0 18px}.chapter-content .epub-h2,.chapter-content h2{font-size:1.25em;font-weight:500;margin:22px 0 14px}.chapter-content .epub-h3,.chapter-content h3{font-size:1.08em;font-weight:500;margin:18px 0 10px}.chapter-content .epub-p,.chapter-content p{margin:0 0 1.1em;text-indent:1em}.chapter-content .epub-blockquote,.chapter-content blockquote{border-left:3px solid #7c6e8a;border-left:3px solid var(--accent);color:#6b5c52;color:var(--text-muted);margin:16px 0;padding-left:16px}.chapter-content img{border-radius:4px;display:block;margin:8px 0;max-height:calc(100vh - 100px);max-width:100%;object-fit:contain}.chapter-content .epub-viewable-image{-webkit-tap-highlight-color:transparent;cursor:zoom-in;touch-action:manipulation}.chapter-content ruby{ruby-align:center}.chapter-content rt{color:#6b5c52;color:var(--text-muted);font-size:.52em}.chapter-content a{color:#7c6e8a;color:var(--accent);text-decoration:none}.jp-token{-webkit-tap-highlight-color:transparent;border-radius:2px;cursor:default;padding:0 1px;transition:background .18s ease;transition:background var(--ease)}.jp-content{cursor:pointer}.jp-content:active,.jp-content:hover{background:#7c6e8a38;background:var(--accent-hover);border-radius:3px}.jp-loading{opacity:.7}.bottombar{align-items:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f2efe9f0;background:var(--bar-bg);border-top:1px solid #00000012;border-top:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:8px 14px 5px;position:relative}.nav-btn{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#2d2926;color:var(--text);font-size:12px;padding:5px 14px;transition:all .18s ease;transition:all var(--ease)}.nav-btn:hover:not(:disabled){border-color:#7c6e8a;border-color:var(--accent);color:#7c6e8a;color:var(--accent)}.nav-btn:disabled{cursor:not-allowed;opacity:.28}.chapter-counter{color:#6b5c52;color:var(--text-muted);font-size:11px}.reader-book-progress-track{background:#00000012;background:var(--border);height:3px;left:0;overflow:hidden;position:absolute;right:0;top:0}.reader-book-progress-fill{background:#7c6e8a;background:var(--accent);height:100%;transition:width .18s ease}.dict-popup{animation:pop-in .14s ease;background:#ede8e0;background:var(--popup-bg);border:1px solid #00000012;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 10px 36px #00000052;display:flex;flex-direction:column;max-height:70vh;overflow:hidden;position:fixed;width:290px;z-index:1000}@keyframes pop-in{0%{opacity:0;transform:scale(.94) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.dict-header{align-items:flex-start;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;gap:8px;padding:12px 14px 8px}.dict-word-area{flex:1 1;min-width:0}.dict-word{color:#2d2926;color:var(--text);display:block;font-family:Zen Old Mincho,serif;font-size:24px;line-height:1.2}.dict-inflected{display:block;font-size:12px;margin-top:2px}.dict-close,.dict-inflected{color:#9a8e84;color:var(--text-faint)}.dict-close{background:none;border:none;border-radius:4px;flex-shrink:0;font-size:15px;line-height:1;padding:4px}.dict-close:hover{color:#2d2926;color:var(--text)}.dict-readings{align-items:center;display:flex;flex-wrap:wrap;gap:6px;padding:8px 14px}.dict-reading{background:#7c6e8a1a;background:var(--accent-soft);border-radius:20px;color:#7c6e8a;color:var(--accent);font-family:"Noto Serif JP",serif;font-size:14px;padding:2px 10px}.dict-pos{letter-spacing:.5px;padding:2px 8px}.dict-meanings{display:flex;flex-direction:column;gap:5px;padding:4px 14px 14px}.dict-meaning{color:#2d2926;color:var(--text);font-size:14px;line-height:1.5}.dict-sense{border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:8px}.dict-sense:last-child{border-bottom:none;margin-bottom:0}.dict-sense-header{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px}.dict-pos{background:#00000012;background:var(--border);border-radius:20px;color:#9a8e84;color:var(--text-faint);font-size:10px;letter-spacing:.4px;padding:1px 7px;text-transform:uppercase}.dict-sense-gloss{color:#2d2926;color:var(--text);font-size:14px;line-height:1.5}.jd-example{border-left:2px solid #7c6e8a1a;border-left:2px solid var(--accent-soft);margin-top:6px;padding:6px 10px}.jd-example-ja{font-family:"Noto Serif JP",serif;line-height:1.6}.dict-unknown{font-style:italic}.dict-num,.dict-unknown{color:#9a8e84;color:var(--text-faint)}.dict-num{font-size:12px;margin-right:3px}.dict-status{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:20px;bottom:60px;color:#6b5c52;color:var(--text-muted);font-size:12px;left:50%;padding:6px 16px;position:fixed;transform:translateX(-50%);white-space:nowrap;z-index:500}.sidebar-overlay{animation:fade-in .18s ease;background:#00000061;background:var(--bg-overlay);inset:0;position:fixed;z-index:100}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.sidebar{animation:slide-in .18s ease;background:#f2efe9;background:var(--sidebar-bg);border-right:1px solid #00000012;border-right:1px solid var(--border);bottom:0;display:flex;flex-direction:column;left:0;overflow:hidden;position:fixed;top:0;width:min(300px,85vw);z-index:101}@keyframes slide-in{0%{transform:translateX(-100%)}to{transform:translateX(0)}}.sidebar-header{align-items:flex-start;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;gap:10px;padding:18px 16px}.sidebar-book-info{flex:1 1;min-width:0}.sidebar-title{color:#2d2926;color:var(--text);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:14px;font-weight:500;line-height:1.4;margin-bottom:3px}.sidebar-author{color:#6b5c52;color:var(--text-muted);font-size:12px}.sidebar-book-progress{font-feature-settings:"tnum";color:#9a8e84;color:var(--text-faint);font-size:10px;font-variant-numeric:tabular-nums;margin-top:4px}.sidebar-close{background:none;border:none;color:#9a8e84;color:var(--text-faint);flex-shrink:0;font-size:16px;padding:4px}.sidebar-settings{border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;gap:10px;padding:12px 16px}.setting-row{align-items:center;color:#6b5c52;color:var(--text-muted);display:flex;font-size:13px;justify-content:space-between}.toggle{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:20px;color:#2d2926;color:var(--text);font-size:13px;padding:5px 12px;transition:all .18s ease;transition:all var(--ease)}.toggle.active{border-color:#7c6e8a;border-color:var(--accent);color:#7c6e8a;color:var(--accent)}.stepper{align-items:center;display:flex;gap:8px}.stepper button{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#2d2926;color:var(--text);font-size:13px;height:30px;width:30px}.stepper span{color:#6b5c52;color:var(--text-muted);font-size:13px;min-width:36px;text-align:center}.sidebar-toc-label{color:#9a8e84;color:var(--text-faint);flex-shrink:0;font-size:10px;font-weight:500;letter-spacing:1px;padding:10px 16px 4px;text-transform:uppercase}.sidebar-toc{flex:1 1;overflow-y:auto;scrollbar-color:#0000001a #0000;scrollbar-color:var(--scrollbar) #0000;scrollbar-width:thin}.toc-item{align-items:flex-start;background:none;border:none;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;gap:10px;padding:10px 16px;text-align:left;transition:background .18s ease;transition:background var(--ease);width:100%}.toc-item.active,.toc-item:hover{background:#7c6e8a1a;background:var(--accent-soft)}.toc-item.active .toc-num{color:#7c6e8a;color:var(--accent)}.toc-num{color:#9a8e84;color:var(--text-faint);flex-shrink:0;font-size:11px;min-width:20px;padding-top:2px}.toc-title{color:#2d2926;color:var(--text);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px;line-height:1.5}@media(max-width:480px){.reader-content{padding:22px 16px 48px}.dict-popup{left:10px!important;width:calc(100vw - 20px)}}.dict-suffixes{border-top:1px solid #00000012;border-top:1px solid var(--border);padding:6px 14px 12px}.dict-suffixes-label{color:#9a8e84;color:var(--text-faint);font-size:10px;letter-spacing:.8px;margin-bottom:6px;text-transform:uppercase}.dict-suffix-chips{display:flex;flex-wrap:wrap;gap:6px}.suffix-chip-wrap{position:relative}.suffix-chip{background:#00000012;background:var(--border);border:1px solid #00000012;border:1px solid var(--border);border-radius:20px;color:#6b5c52;color:var(--text-muted);cursor:pointer;display:inline-block;font-family:"Noto Serif JP",serif;font-size:12px;padding:3px 10px;transition:all .18s ease;transition:all var(--ease);-webkit-user-select:none;user-select:none}.suffix-chip.active,.suffix-chip:hover{background:#7c6e8a1a;background:var(--accent-soft);border-color:#7c6e8a;border-color:var(--accent);color:#7c6e8a;color:var(--accent)}.suffix-tooltip{background:#2d2926;background:var(--text);border-radius:8px;bottom:calc(100% + 6px);color:#f2efe9;color:var(--bg);font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:12px;padding:4px 10px;pointer-events:none;white-space:nowrap;z-index:10}.suffix-tooltip,.suffix-tooltip:after{left:50%;position:absolute;transform:translateX(-50%)}.suffix-tooltip:after{border:5px solid #0000;border-top:5px solid var(--text);content:"";top:100%}.dict-surface{color:#6b5c52;color:var(--text-muted);display:block;font-family:"Noto Serif JP",serif;font-size:13px;margin-top:2px}.dict-header-actions{align-items:center;display:flex;flex-shrink:0;gap:4px}.dict-save-btn{background:none;border:none;border-radius:6px;color:#9a8e84;color:var(--text-faint);cursor:pointer;font-size:11px;letter-spacing:.5px;line-height:1;padding:4px 8px;transition:all .18s ease;transition:all var(--ease);white-space:nowrap}.dict-save-btn.saved,.dict-save-btn:hover{color:#7c6e8a;color:var(--accent)}.dict-sentence{border-top:1px solid #00000012;border-top:1px solid var(--border);padding:6px 14px 12px}.dict-sentence-label{color:#9a8e84;color:var(--text-faint);display:block;font-size:10px;letter-spacing:.8px;margin-bottom:4px;text-transform:uppercase}.dict-sentence-text{color:#6b5c52;color:var(--text-muted);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px;line-height:1.6}.vocab-topbar-btn{position:relative}.topbar-vocab-badge{background:#7c6e8a;background:var(--accent);border-radius:7px;color:#fff;font-size:9px;font-weight:600;height:14px;justify-content:center;min-width:14px;padding:0 3px;position:absolute;right:2px;top:2px}.sidebar-vocab-btn,.topbar-vocab-badge{align-items:center;display:flex;font-family:DM Sans,sans-serif;font-family:var(--font-ui)}.sidebar-vocab-btn{background:#7c6e8a1a;background:var(--accent-soft);border:1px solid #7c6e8a;border:1px solid var(--accent);border-radius:8px;border-radius:var(--radius-sm);color:#7c6e8a;color:var(--accent);cursor:pointer;font-size:14px;justify-content:space-between;margin-top:4px;padding:10px 14px;transition:all .18s ease;transition:all var(--ease);width:100%}.sidebar-vocab-btn:hover{background:#7c6e8a38;background:var(--accent-hover)}.sidebar-vocab-count{background:#7c6e8a;background:var(--accent);border-radius:10px;color:#fff;font-size:12px;font-weight:600;padding:2px 8px}.vocab-hint-btn{background:#7c6e8a1a;background:var(--accent-soft);border:1px solid #7c6e8a;border:1px solid var(--accent);border-radius:8px;border-radius:var(--radius-sm);color:#7c6e8a;color:var(--accent);cursor:pointer;font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:13px;text-align:left;width:100%}.vocab-screen{background:#f2efe9;background:var(--bg);display:flex;flex:1 1;flex-direction:column;height:100dvh;overflow:hidden}.vocab-header{align-items:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f2efe9f0;background:var(--bar-bg);border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;gap:12px;padding:12px 16px}.vocab-back-btn{background:none;border:none;border-radius:8px;color:#2d2926;color:var(--text);cursor:pointer;flex-shrink:0;font-size:22px;padding:4px 8px;transition:background .18s ease;transition:background var(--ease)}.vocab-back-btn:hover{background:#00000012;background:var(--border)}.vocab-title{align-items:center;color:#2d2926;color:var(--text);display:flex;flex:1 1;font-size:17px;font-weight:500;gap:8px}.vocab-count{background:#7c6e8a;background:var(--accent);border-radius:10px;color:#fff;font-size:12px;font-weight:600;padding:2px 8px}.vocab-header-actions{display:flex;gap:8px}.vocab-action-btn{align-items:center;background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#6b5c52;color:var(--text-muted);cursor:pointer;display:flex;font-size:16px;height:36px;justify-content:center;transition:all .18s ease;transition:all var(--ease);width:36px}.vocab-action-btn:hover{border-color:#6b5c52;border-color:var(--text-muted)}.clear-btn.confirm{background:#e055551f;border-color:#e05555;color:#e05555}.export-btn{font-size:18px;font-weight:500}.vocab-list{flex:1 1;gap:10px;overflow-y:auto;padding:12px 16px 32px;scrollbar-color:#0000001a #0000;scrollbar-color:var(--scrollbar) #0000;scrollbar-width:thin}.vocab-card,.vocab-list{display:flex;flex-direction:column}.vocab-card{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);cursor:pointer;gap:6px;padding:14px 16px;transition:all .18s ease;transition:all var(--ease)}.vocab-card.expanded,.vocab-card:hover{border-color:#7c6e8a;border-color:var(--accent)}.vocab-card-main{align-items:flex-start;display:flex;gap:8px;justify-content:space-between}.vocab-card-left{align-items:baseline;display:flex;gap:10px}.vocab-word{color:#2d2926;color:var(--text);font-family:Zen Old Mincho,serif;font-size:22px}.vocab-reading{color:#7c6e8a;color:var(--accent);font-family:"Noto Serif JP",serif;font-size:13px}.vocab-card-right{align-items:center;display:flex;flex-shrink:0;gap:8px}.vocab-pos{background:#00000012;background:var(--border);border-radius:4px;font-size:10px;letter-spacing:.5px;padding:2px 6px;text-transform:uppercase}.vocab-date,.vocab-pos{color:#9a8e84;color:var(--text-faint)}.vocab-date{font-size:11px}.vocab-delete-btn{background:none;border:none;border-radius:4px;color:#9a8e84;color:var(--text-faint);cursor:pointer;font-size:13px;padding:4px;transition:color .18s ease;transition:color var(--ease)}.vocab-delete-btn:hover{color:#e05555}.vocab-anki-btn{background:none;border:1px solid #00000012;border:1px solid var(--border);border-radius:4px;color:#6b5c52;color:var(--text-muted);cursor:pointer;font-size:11px;font-weight:700;letter-spacing:-.3px;padding:2px 6px;transition:all .18s ease;transition:all var(--ease)}.vocab-anki-btn:hover{border-color:#7c6e8a;border-color:var(--accent);color:#7c6e8a;color:var(--accent)}.vocab-anki-btn.done{border-color:#4caf50;color:#4caf50}.vocab-anki-btn.error{border-color:#e05555;color:#e05555}.vocab-meanings-preview{align-items:center;color:#6b5c52;color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:13px;gap:2px}.vocab-meaning-sep{margin:0 4px}.vocab-meaning-sep,.vocab-more{color:#9a8e84;color:var(--text-faint)}.vocab-more{font-size:11px;margin-left:4px}.vocab-sentence{border-top:1px solid #00000012;border-top:1px solid var(--border);margin-top:2px;padding-top:8px}.vocab-sentence-label{color:#9a8e84;color:var(--text-faint);display:block;font-size:9px;letter-spacing:.8px;margin-bottom:4px;text-transform:uppercase}.vocab-sentence-text{color:#6b5c52;color:var(--text-muted);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px;line-height:1.7}.vocab-empty{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:12px;justify-content:center;padding:48px 24px;text-align:center}.vocab-empty-icon{font-size:48px}.vocab-empty-text{color:#2d2926;color:var(--text);font-size:18px;font-weight:500}.vocab-empty-sub{color:#6b5c52;color:var(--text-muted);font-size:14px;line-height:1.5;max-width:260px}.library-screen{background:#f2efe9;background:var(--bg);display:flex;flex-direction:column;height:100dvh;overflow-x:hidden;overflow-y:auto}.library-header{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f2efe9f0;background:var(--bar-bg);border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);gap:12px;padding:14px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:50}.library-header,.library-logo{align-items:center;display:flex}.library-logo{flex:1 1;gap:8px}.library-logo .logo-jp{color:#7c6e8a;color:var(--accent);font-family:Zen Old Mincho,serif;font-size:28px;line-height:1}.library-logo .logo-en{color:#2d2926;color:var(--text);font-size:20px;font-weight:300;letter-spacing:2px}.library-import-btn{align-items:center;background:#7c6e8a;background:var(--accent);border:none;border-radius:8px;border-radius:var(--radius-sm);color:#fff;cursor:pointer;display:flex;font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:14px;gap:6px;padding:9px 16px;transition:opacity .18s ease;transition:opacity var(--ease)}.library-import-btn:disabled{cursor:not-allowed;opacity:.5}.library-import-btn.large{font-size:15px;margin-top:16px;padding:12px 24px}.library-list{display:flex;flex-direction:column;gap:10px;padding:12px 16px 32px}.library-empty{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:10px;justify-content:center;padding:48px 24px;text-align:center}.book-card{align-items:stretch;background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);cursor:pointer;display:flex;overflow:hidden;position:relative;transition:all .18s ease;transition:all var(--ease)}.book-card:hover{border-color:#7c6e8a;border-color:var(--accent)}.book-card-spine{background:#7c6e8a;background:var(--accent);flex-shrink:0;opacity:.7;width:5px}.book-card-body{flex:1 1;min-width:0;padding:14px 14px 12px}.book-card-title{color:#2d2926;color:var(--text);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:16px;font-weight:500;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-card-author{color:#6b5c52;color:var(--text-muted);font-size:13px;margin-bottom:6px}.book-card-meta{color:#9a8e84;color:var(--text-faint);font-size:11px}.book-progress{display:flex;flex-direction:column;gap:4px;margin-top:9px}.book-progress-label{font-feature-settings:"tnum";align-items:center;color:#9a8e84;color:var(--text-faint);display:flex;font-size:10px;font-variant-numeric:tabular-nums;justify-content:space-between}.book-progress-label span:first-child{color:#7c6e8a;color:var(--accent);font-weight:600}.book-progress-track{background:#00000012;background:var(--border);border-radius:999px;height:4px;overflow:hidden}.book-progress-fill{background:#7c6e8a;background:var(--accent);border-radius:inherit;height:100%;transition:width .22s ease}.book-card-delete{background:none;border:none;color:#9a8e84;color:var(--text-faint);cursor:pointer;flex-shrink:0;font-size:14px;padding:0 14px;transition:all .18s ease;transition:all var(--ease)}.book-card-delete:hover{color:#e05555}.book-card-delete.confirm{color:#e05555;font-size:16px;font-weight:700}.dict-decomposed{border-top:1px solid #00000012;border-top:1px solid var(--border);padding:6px 14px 10px}.dict-decomposed-item{align-items:baseline;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;font-size:13px;gap:8px;padding:4px 0}.dict-decomposed-item:last-child{border-bottom:none}.dict-decomposed-word{color:#2d2926;color:var(--text);flex-shrink:0;font-family:Zen Old Mincho,serif;font-size:16px}.dict-decomposed-reading{color:#7c6e8a;color:var(--accent);flex-shrink:0;font-family:"Noto Serif JP",serif;font-size:12px}.dict-decomposed-meanings{color:#6b5c52;color:var(--text-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dict-popup-scrollable{flex:1 1;overflow-y:auto;scrollbar-color:#0000001a #0000;scrollbar-color:var(--scrollbar) #0000;scrollbar-width:thin}.dict-popup-scrollable::-webkit-scrollbar{width:3px}.dict-popup-scrollable::-webkit-scrollbar-thumb{background:#0000001a;background:var(--scrollbar)}.vertical-mode .chapter-content img{max-height:100%;max-width:calc(100vh - 100px)}.logo-main{color:#7c6e8a;color:var(--accent);font-family:Zen Old Mincho,"Noto Serif JP",serif;font-size:42px;font-weight:400;letter-spacing:4px}.library-logo .logo-main{font-size:24px;letter-spacing:2.6px}@keyframes star-blink{0%,75%{opacity:1;transform:scale(1)}80%{opacity:0;transform:scale(.6)}85%{opacity:1;transform:scale(1.08)}90%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.logo-star{animation:star-blink 3.5s ease-in-out infinite;color:#7c6e8a;color:var(--accent);display:inline-block;font-size:.78em;vertical-align:.1em}.library-vocab-btn{align-items:center;background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#6b5c52;color:var(--text-muted);cursor:pointer;display:flex;flex-shrink:0;font-size:18px;height:38px;justify-content:center;position:relative;transition:all .18s ease;transition:all var(--ease);width:38px}.library-vocab-btn:hover{border-color:#7c6e8a;border-color:var(--accent);color:#7c6e8a;color:var(--accent)}.library-vocab-badge{align-items:center;background:#7c6e8a;background:var(--accent);border-radius:7px;color:#fff;display:flex;font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:9px;font-weight:600;height:14px;justify-content:center;min-width:14px;padding:0 3px;position:absolute;right:2px;top:2px}.anki-screen{background:#f2efe9;background:var(--bg);display:flex;flex:1 1;flex-direction:column;height:100dvh;overflow:hidden}.anki-header{align-items:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f2efe9f0;background:var(--bar-bg);border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;gap:12px;padding:12px 16px}.anki-body{display:flex;flex:1 1;flex-direction:column;gap:16px;overflow-y:auto;padding:16px}.anki-error{background:#e0555526;border:1px solid #e05555;border-radius:8px;border-radius:var(--radius-sm);color:#e05555;line-height:1.5}.anki-error,.anki-status{font-size:13px;padding:10px 14px}.anki-status{background:#3cb46426;border:1px solid #3cb464;border-radius:8px;border-radius:var(--radius-sm);color:#3cb464}.anki-inline-error{background:#e055551f;color:#e05555;font-size:12px;padding:8px 16px}.anki-section{display:flex;flex-direction:column;gap:8px}.anki-section-title{font-weight:600;letter-spacing:.8px;text-transform:uppercase}.anki-section-sub,.anki-section-title{color:#9a8e84;color:var(--text-faint);font-size:12px}.anki-section-sub{margin-top:-4px}.anki-select{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#2d2926;color:var(--text);cursor:pointer;font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:14px;padding:10px 12px;width:100%}.anki-select.small{flex:1 1;font-size:13px;padding:6px 10px;width:auto}.anki-input{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#2d2926;color:var(--text);font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:14px;padding:10px 12px;width:100%}.anki-input.small{flex:1 1;font-size:13px;padding:6px 10px}.anki-field-row{align-items:center;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;gap:8px;padding:6px 0}.anki-field-row:last-child{border-bottom:none}.anki-field-left{display:flex;flex-direction:column;gap:2px;min-width:80px}.anki-field-label{color:#2d2926;color:var(--text);font-size:13px;font-weight:500}.anki-field-desc{font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:11px}.anki-arrow,.anki-field-desc{color:#9a8e84;color:var(--text-faint)}.anki-arrow{flex-shrink:0;font-size:16px}.anki-toggle-row{align-items:center;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);color:#2d2926;color:var(--text);cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:10px 0}.anki-toggle-row:last-child{border-bottom:none}.anki-toggle-row input[type=checkbox]{cursor:pointer;height:18px;width:18px}.anki-connect-btn{background:#7c6e8a1a;background:var(--accent-soft);border:1px solid #7c6e8a;border:1px solid var(--accent);border-radius:8px;border-radius:var(--radius-sm);color:#7c6e8a;color:var(--accent);cursor:pointer;font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:14px;padding:12px;text-align:center;transition:all .18s ease;transition:all var(--ease)}.anki-connect-btn:hover{background:#7c6e8a38;background:var(--accent-hover)}.anki-connect-btn:disabled{cursor:not-allowed;opacity:.5}.vocab-action-btn.anki-btn{font-size:14px;font-weight:700;letter-spacing:-.5px}.dict-pitch{background:#7c6e8a1a;background:var(--accent-soft);border-radius:6px;color:#7c6e8a;color:var(--accent);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px;margin-left:4px;max-width:100%;padding:3px 6px}.dict-pitch,.tsubasa-pitch-list{align-items:center;display:inline-flex}.tsubasa-pitch-list{flex-wrap:wrap;gap:5px}.tsubasa-pitch-card{align-items:center;display:inline-flex;gap:2px;white-space:nowrap}.tsubasa-pitch-number{font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:10px;line-height:1;opacity:.58;transform:translateY(-.02em)}.tsubasa-pitch-diagram{align-items:flex-start;display:inline-flex;gap:0;line-height:1.05}.tsubasa-pitch-high,.tsubasa-pitch-low{display:inline-block;min-height:1.05em;padding-top:.16em}.tsubasa-pitch-high{border-top:1.35px solid}.tsubasa-pitch-drop{border-right:1.35px solid;display:inline-block;height:.86em;margin-left:-.5px;margin-right:.5px;transform:translateY(.12em)}.dict-audio-btn{background:none;border:none;border-radius:6px;color:#6b5c52;color:var(--text-muted);cursor:pointer;font-size:16px;line-height:1;padding:4px 6px;transition:all .18s ease;transition:all var(--ease)}.dict-audio-btn:hover{color:#7c6e8a;color:var(--accent)}.save-indicator{color:#9a8e84;color:var(--text-faint);font-size:11px;letter-spacing:.5px;transition:opacity .3s,transform .3s;white-space:nowrap}.save-indicator.saved{opacity:.7;transform:scale(1)}.save-indicator.saving{opacity:.4;transform:scale(.95)}.stepper-btn{align-items:center;background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#2d2926;color:var(--text);cursor:pointer;display:flex;font-size:18px;height:32px;justify-content:center;transition:all .18s ease;transition:all var(--ease);width:32px}.stepper-btn:hover{border-color:#7c6e8a;border-color:var(--accent);color:#7c6e8a;color:var(--accent)}.dict-panel{animation:pop-in .14s ease;background:#ede8e0;background:var(--popup-bg);border:1px solid #00000012;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);bottom:44px;box-shadow:0 8px 40px #00000059;display:flex;flex-direction:column;overflow:hidden;position:fixed;top:48px;z-index:1000}.dict-panel-header{align-items:center;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:10px 14px 8px}.dict-panel-inflected{color:#9a8e84;color:var(--text-faint);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px}.dict-panel-scroll{flex:1 1;overflow-y:auto;scrollbar-color:#0000001a #0000;scrollbar-color:var(--scrollbar) #0000;scrollbar-width:thin}.dict-panel-scroll::-webkit-scrollbar{width:3px}.dict-panel-scroll::-webkit-scrollbar-thumb{background:#0000001a;background:var(--scrollbar)}.dict-panel-empty{color:#9a8e84;color:var(--text-faint);font-size:14px;padding:24px 16px;text-align:center}.dict-panel-state{align-items:center;color:#6b5c52;color:var(--text-muted);display:flex;flex-direction:column;gap:9px;justify-content:center;min-height:180px;padding:28px 20px;text-align:center}.dict-panel-state>.mini-spinner{height:22px;margin-bottom:3px;width:22px}.dict-panel-state-title{color:#2d2926;color:var(--text);font-size:14px;font-weight:500}.dict-panel-state-sub{color:#9a8e84;color:var(--text-faint);font-size:12px;line-height:1.5;max-width:260px}.dict-panel-state-symbol{align-items:center;border:1px solid #e055558c;border-radius:50%;color:#e05555;display:flex;font-weight:700;height:30px;justify-content:center;width:30px}.dict-panel-state.error{color:#e05555}.dict-retry-btn{background:#7c6e8a;background:var(--accent);border:0;border-radius:8px;border-radius:var(--radius-sm);color:#fff;font-size:13px;margin-top:5px;padding:8px 18px}.dict-entry-block{padding:12px 14px 10px}.dict-entry-divider{background:#00000012;background:var(--border);height:1px;margin:0 14px}.dict-entry-head{margin-bottom:6px}.dict-entry-word-row{align-items:baseline;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.dict-entry-meta{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.dict-badge{background:#7c6e8a1a;background:var(--accent-soft);border:1px solid #7c6e8a;border:1px solid var(--accent);border-radius:4px;color:#7c6e8a;color:var(--accent);font-size:10px;font-weight:600;padding:1px 6px}.dict-reasons{color:#9a8e84;color:var(--text-faint);font-size:11px;font-style:italic}.dict-entry-actions{display:flex;gap:8px;margin-top:8px}.dict-import-row{align-items:center;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;gap:8px;justify-content:space-between;padding:10px 0}.dict-import-row:last-child{border-bottom:none}.dict-import-name{color:#2d2926;color:var(--text);flex:1 1;font-size:14px}.dict-import-badge{background:#3cb46426;border:1px solid #3cb464;border-radius:4px;color:#3cb464;font-size:11px;padding:2px 8px}.dict-components-section{background:#f2efe9;background:var(--bg);border-top:1px solid #00000012;border-top:1px solid var(--border);padding:8px 14px 12px}.dict-components-label{color:#9a8e84;color:var(--text-faint);font-size:10px;letter-spacing:.8px;margin-bottom:6px;text-transform:uppercase}.dict-component-row{align-items:center;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;flex-wrap:nowrap;gap:6px;padding:5px 0}.dict-component-row:last-child{border-bottom:none}.dict-component-word{color:#2d2926;color:var(--text);flex-shrink:0;font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:16px}.dict-component-reading{color:#7c6e8a;color:var(--accent);flex-shrink:0;font-size:11px}.dict-component-meaning{color:#6b5c52;color:var(--text-muted);flex:1 1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dict-freq{background:#7850c81f;border:1px solid #7850c866;border-radius:4px;color:#8c64dc;font-size:10px;font-weight:600;letter-spacing:-.3px;padding:1px 5px}.stats-card{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);display:flex;flex-direction:column;gap:10px;margin:8px 16px 4px;padding:14px 16px}.stats-top{align-items:flex-start;display:flex;justify-content:space-between}.stats-today{align-items:baseline;display:flex;gap:6px}.stats-today-chars{color:#7c6e8a;color:var(--accent);font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:22px;font-weight:600;letter-spacing:-.5px}.stats-today-label{color:#9a8e84;color:var(--text-faint);font-size:11px}.stats-today-time{color:#6b5c52;color:var(--text-muted);font-size:13px}.stats-right{align-items:flex-end;display:flex;flex-direction:column;gap:3px}.stats-streak{align-items:center;display:flex;gap:3px}.stats-streak-num{color:#f0a030;font-size:15px;font-weight:700}.stats-streak-label{color:#9a8e84;color:var(--text-faint);font-size:11px}.stats-total{align-items:baseline;display:flex;gap:3px}.stats-total-val{color:#6b5c52;color:var(--text-muted);font-size:13px}.stats-total-label{color:#9a8e84;color:var(--text-faint);font-size:10px}.stats-bars{align-items:flex-end;display:flex;gap:4px;height:40px}.stats-bar-col{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:2px;height:100%}.stats-bar-wrap{align-items:flex-end;display:flex;flex:1 1;width:100%}.stats-bar{background:#00000012;background:var(--border);border-radius:2px 2px 0 0;min-height:3px;transition:height .3s ease;width:100%}.stats-bar.active{background:#7c6e8a;background:var(--accent);opacity:.45}.stats-bar.active.today{opacity:1}.stats-bar-label{color:#9a8e84;color:var(--text-faint);font-size:9px}.stats-bar-label.today{color:#7c6e8a;color:var(--accent);font-weight:600}:root{--heatmap-empty:var(--border);--heatmap-1:rgba(var(--accent-rgb,224,96,64),0.25);--heatmap-2:rgba(var(--accent-rgb,224,96,64),0.45);--heatmap-3:rgba(var(--accent-rgb,224,96,64),0.70);--heatmap-4:var(--accent)}.dark{--accent-rgb:224,96,64}.light{--accent-rgb:191,58,40}.heatmap-wrap{display:flex;flex-direction:column;gap:4px}.heatmap-grid{display:flex;flex-wrap:nowrap;gap:2px;max-height:80px;overflow-x:auto;overflow-y:hidden;padding-bottom:4px}.heatmap-week{display:flex;flex-direction:column;flex-shrink:0;gap:2px}.heatmap-day{border-radius:1.5px;flex-shrink:0;height:9px;width:9px}.heatmap-legend{align-items:center;display:flex;gap:3px;justify-content:flex-end}.heatmap-legend-label{color:#9a8e84;color:var(--text-faint);font-size:9px}.heatmap-legend-box{border-radius:1.5px;height:9px;width:9px}.session-btn.active,.session-btn.marking{color:#7c6e8a;color:var(--accent)}.session-btn.marking{animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.session-toast{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:20px;box-shadow:0 4px 16px #0003;color:#2d2926;color:var(--text);font-size:13px;left:50%;padding:6px 14px;pointer-events:none;position:absolute;top:44px;transform:translateX(-50%);white-space:nowrap;z-index:200}.dict-kanji-tap{border-bottom:1px dotted #7c6e8a;border-bottom:1px dotted var(--accent);cursor:pointer;transition:color .15s}.dict-kanji-tap:hover{color:#7c6e8a;color:var(--accent)}.kpop-wrap{animation:pop-in .12s ease;background:#ede8e0;background:var(--popup-bg);border:1px solid #00000012;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 8px 32px #0006;overflow:hidden;position:fixed;z-index:1100}.kpop-loading{color:#9a8e84;color:var(--text-faint);font-size:13px;padding:16px;text-align:center}.kpop-header{align-items:flex-start;background:#ede8e0;background:var(--bg-card);border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;gap:10px;padding:12px 14px 10px}.kpop-char{color:#2d2926;color:var(--text);flex-shrink:0;font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:42px;line-height:1}.kpop-info{display:flex;flex:1 1;flex-direction:column;gap:3px}.kpop-row{align-items:baseline;display:flex;gap:6px}.kpop-label{color:#7c6e8a;color:var(--accent);font-size:10px;font-weight:700;min-width:14px}.kpop-readings{color:#2d2926;color:var(--text);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px}.kpop-meanings{color:#6b5c52;color:var(--text-muted);font-size:12px;margin-top:2px}.kpop-meta{display:flex;gap:4px;margin-top:4px}.kpop-badge{background:#f2efe9;background:var(--bg);border:1px solid #00000012;border:1px solid var(--border);border-radius:3px;color:#9a8e84;color:var(--text-faint);font-size:10px;padding:1px 5px}.kpop-words{padding:8px 14px 12px}.kpop-words-label{color:#9a8e84;color:var(--text-faint);font-size:10px;letter-spacing:.6px;margin-bottom:6px;text-transform:uppercase}.kpop-word-row{align-items:baseline;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;gap:8px;padding:5px 0}.kpop-word-row:last-child{border-bottom:none}.kpop-ruby{color:#2d2926;color:var(--text);flex-shrink:0;font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:16px}.kpop-ruby rt{font-size:9px}.kpop-reading-small{color:#7c6e8a;color:var(--accent);font-size:11px;margin-left:3px}.kpop-word-meaning{color:#6b5c52;color:var(--text-muted);flex:1 1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dict-freq.corpus{background:#50a0dc26;border-color:#50a0dc99;color:#50a0dc}.stats-sessions-btn{background:none;border:none;color:#9a8e84;color:var(--text-faint);cursor:pointer;font-size:11px;padding:4px 0;text-align:left;width:100%}.stats-sessions-btn:hover{color:#6b5c52;color:var(--text-muted)}.stats-sessions-list{display:flex;flex-direction:column;gap:2px;margin-top:4px}.stats-no-sessions{color:#9a8e84;color:var(--text-faint);font-size:12px;padding:8px 0}.stats-session-row{align-items:center;border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:6px 0}.stats-session-row:last-child{border-bottom:none}.stats-session-info{align-items:center;display:flex;gap:8px}.stats-session-date{color:#9a8e84;color:var(--text-faint);font-size:11px}.stats-session-chars{color:#2d2926;color:var(--text);font-size:13px;font-weight:500}.stats-session-time{color:#6b5c52;color:var(--text-muted);font-size:11px}.stats-session-delete{background:none;border:none;border-radius:4px;color:#9a8e84;color:var(--text-faint);cursor:pointer;font-size:13px;padding:4px 6px}.stats-session-delete:hover{background:#e055551a;color:#e05555}:root{--heatmap-future:#0000000a}.dark{--heatmap-future:#ffffff0a}.year-heatmap{background:#ede8e0;background:var(--bg-card);border:1px solid #00000012;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);margin:8px 0 24px;overflow:hidden;padding:14px 16px}.year-heatmap-title{color:#9a8e84;color:var(--text-faint);font-size:12px;font-weight:600;letter-spacing:.5px;margin-bottom:8px}.year-heatmap-months{margin-bottom:2px;margin-left:20px}.year-heatmap-month-cell{font-size:8px}.year-heatmap-body{gap:4px;padding-bottom:4px}.year-heatmap-daylabel{font-size:8px;width:14px}.year-heatmap-day{transition:transform .1s}.year-heatmap-day.today{outline:2px solid #7c6e8a;outline:2px solid var(--accent)}.year-heatmap-legend{align-items:center;display:flex;gap:3px;justify-content:flex-end;margin-top:6px}:root{--heatmap-past-empty:#d1d5db;--heatmap-future:#e9eaec;--heatmap-empty:#d1d5db}.dark{--heatmap-past-empty:#374151;--heatmap-future:#1f2937;--heatmap-empty:#374151}.year-heatmap-wrap{display:flex;flex-direction:column;gap:3px;overflow:hidden}.year-heatmap-months{display:flex;gap:2px;margin-left:0}.year-heatmap-month-cell{color:#9a8e84;color:var(--text-faint);flex-shrink:0;font-size:7px;overflow:visible;white-space:nowrap;width:11px}.year-heatmap-body{display:flex;gap:3px;overflow-x:auto;overflow-y:hidden}.year-heatmap-daylabels{display:flex;flex-direction:column;flex-shrink:0;gap:2px;padding-top:1px}.year-heatmap-daylabel{align-items:center;color:#9a8e84;color:var(--text-faint);display:flex;flex-shrink:0;font-size:7px;height:9px;width:16px}.year-heatmap-grid{display:flex;flex-shrink:0;gap:2px}.year-heatmap-week{display:flex;flex-direction:column;gap:2px}.year-heatmap-day{border-radius:1.5px;flex-shrink:0;height:9px;width:9px}.year-heatmap-day.today{outline:1.5px solid #7c6e8a;outline:1.5px solid var(--accent);outline-offset:1px}.library-footer{font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:11px;letter-spacing:1px;opacity:.5;padding:24px 0 8px;text-align:center}.library-footer,.stats-session-edit{color:#9a8e84;color:var(--text-faint)}.stats-session-edit{background:none;border:none;border-radius:4px;cursor:pointer;font-size:13px;padding:4px 6px}.stats-session-edit:hover{background:#7c6e8a1a;background:var(--accent-soft);color:#7c6e8a;color:var(--accent)}.stats-session-date-input{background:#ede8e0;background:var(--bg-card);border:1px solid #7c6e8a;border:1px solid var(--accent);border-radius:4px;color:#2d2926;color:var(--text);flex:1 1;font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:12px;padding:3px 6px}.session-toast-btn{background:#7c6e8a;background:var(--accent);border:none;border-radius:8px;color:#fff;cursor:pointer;display:block;font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px;margin-top:6px;padding:6px 12px;width:100%}.dict-panel-source{align-items:center;display:flex;gap:8px;min-width:0}.dict-panel .dict-meanings{gap:0;padding:4px 0 2px}.dict-panel .dict-sense{border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);margin:0 0 10px;padding:0 0 10px}.dict-panel .dict-sense:last-child{border-bottom:0;margin-bottom:0}.dict-restriction{color:#7c6e8a;color:var(--accent);font-size:10px;font-style:italic;margin:2px 0 4px}.dict-info,.dict-note{border-left:2px solid #00000012;border-left:2px solid var(--border);color:#6b5c52;color:var(--text-muted);font-size:11px;line-height:1.5;margin-top:5px;padding-left:8px}.dict-info,.dict-language-source{color:#9a8e84;color:var(--text-faint)}.dict-language-source{font-size:10px;font-style:italic;margin-top:5px}.dict-reference{grid-gap:3px 8px;color:#6b5c52;color:var(--text-muted);display:grid;font-size:11px;gap:3px 8px;grid-template-columns:auto 1fr;line-height:1.4;margin-top:6px}.dict-reference>span:first-child{color:#7c6e8a;color:var(--accent);font-size:9px;grid-row:1/-1;letter-spacing:.5px;padding-top:2px;text-transform:uppercase}.dict-reference>span:not(:first-child){grid-column:2}.dict-graphics{display:flex;gap:8px;margin-top:8px;overflow-x:auto;padding-bottom:3px;scrollbar-width:thin}.dict-graphics figure{background:#f2efe9;background:var(--bg);border:1px solid #00000012;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);flex:0 0 auto;overflow:hidden;width:min(210px,100%)}.dict-graphics img{background:#ffffff0a;display:block;max-height:190px;object-fit:contain;width:100%}.dict-graphics figcaption{color:#9a8e84;color:var(--text-faint);font-size:9px;line-height:1.35;padding:5px 7px}.dict-forms{align-items:center;color:#6b5c52;color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:11px;gap:4px;margin:6px 0}.dict-forms>span:first-child{color:#9a8e84;color:var(--text-faint);font-size:9px;letter-spacing:.6px;margin-right:3px;text-transform:uppercase}.dict-forms>span:not(:first-child){background:#f2efe9;background:var(--bg);border:1px solid #00000012;border:1px solid var(--border);border-radius:10px;font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);padding:2px 6px}.dict-attribution{color:#9a8e84;color:var(--text-faint);display:flex;flex-wrap:wrap;font-size:9px;gap:6px;margin-top:5px}.dict-attribution a{border-bottom:1px dotted;color:#9a8e84;color:var(--text-faint);text-decoration:none}.dict-attribution a:hover{color:#7c6e8a;color:var(--accent)}.dict-entry-block+.dict-entry-block{border-top:1px solid #00000012;border-top:1px solid var(--border)}.jd-example{background:#f2efe9;background:var(--bg);border-left:2px solid #7c6e8a;border-left:2px solid var(--accent);border-radius:8px;border-radius:var(--radius-sm);margin-top:7px;padding:7px 10px;position:relative}.jd-example-ja{color:#2d2926;color:var(--text);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:13px;line-height:1.65}.jd-example-en{color:#9a8e84;color:var(--text-faint);font-size:11px;line-height:1.45;margin-top:2px}.vocab-rich-body{display:flex;flex-direction:column;gap:7px;padding-top:6px}.vocab-rich-body .dict-sense{margin-bottom:4px;padding-bottom:7px}.vocab-rich-body .jd-example{margin-top:2px}.session-btn{color:#6b5c52;color:var(--text-muted);font-family:DM Sans,sans-serif;font-family:var(--font-ui);font-size:14px;font-weight:600;letter-spacing:0}.session-btn.active,.session-btn.marking{color:#7c6e8a;color:var(--accent)}@media (max-width:420px){.dict-panel{bottom:42px;top:42px}.dict-entry-block{padding:10px 12px 9px}.dict-word{font-size:22px}.vocab-card{padding:12px}.vocab-card-right{gap:5px}}.dict-frequency-group{align-items:center;display:inline-flex;flex-wrap:wrap;gap:4px}.dict-frequency-group.compact{flex-wrap:nowrap;gap:2px}.dict-frequency-group.compact .dict-freq{font-size:8px;padding:1px 3px;white-space:nowrap}.dict-freq.jpdb{background:#7c6e8a1a;background:var(--accent-soft);border-color:color-mix(in srgb,#7c6e8a 40%,#0000);border-color:color-mix(in srgb,var(--accent) 40%,#0000);color:#7c6e8a;color:var(--accent);font-weight:650;letter-spacing:0}.dict-freq.jpdb.kana{background:#5a91b41a;border-color:#5a91b459;color:color-mix(in srgb,#2d2926 55%,#4f9fc7);color:color-mix(in srgb,var(--text) 55%,#4f9fc7)}.dark .dict-freq.jpdb.kana{color:#82bfdc}.dict-freq.jpdb.ambiguous{border-style:dashed;opacity:.82}.dict-other-label{background:#f2efe9;background:var(--bg);border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);border-top:1px solid #00000012;border-top:1px solid var(--border);color:#9a8e84;color:var(--text-faint);font-size:9px;letter-spacing:.75px;padding:7px 12px 5px;text-transform:uppercase}.dict-entry-other{opacity:.76}.dict-entry-other:hover{opacity:1}.dict-forms>span:not(:first-child)[title]{cursor:help}.vocab-frequency{align-items:center;display:inline-flex;flex-wrap:wrap;gap:3px}.vocab-frequency>span{background:#7c6e8a1a;background:var(--accent-soft);border:1px solid #00000012;border:1px solid var(--border);border-radius:5px;color:#7c6e8a;color:var(--accent);font-size:9px;padding:1px 4px;white-space:nowrap}.anki-batch-feedback{background:#ede8e0;background:var(--bg-card);border-bottom:1px solid #00000012;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:5px;padding:9px 16px 10px}.anki-batch-row{font-feature-settings:"tnum";align-items:center;color:#6b5c52;color:var(--text-muted);display:flex;font-size:11px;font-variant-numeric:tabular-nums;gap:12px;justify-content:space-between}.anki-batch-track{background:#00000012;background:var(--border);border-radius:999px;height:4px;overflow:hidden}.anki-batch-fill{background:#7c6e8a;background:var(--accent);border-radius:inherit;height:100%;transition:width .18s ease}.anki-batch-feedback.done .anki-batch-fill{background:#3cb464}.anki-batch-feedback.partial .anki-batch-fill{background:#7c6e8a;background:var(--accent)}.anki-batch-feedback.error .anki-batch-fill{background:#e05555}.anki-batch-word{color:#9a8e84;color:var(--text-faint);font-family:LINE Seed JP,"Noto Serif JP",Georgia,serif;font-family:var(--font-reading);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.anki-batch-error{color:#e05555;font-size:11px;line-height:1.4}.dict-audio-control{align-items:center;display:inline-flex;gap:5px;min-height:24px}.dict-audio-control.compact{gap:0;min-height:0}.dict-audio-btn.loading{color:#9a8e84;color:var(--text-faint);cursor:wait}.dict-audio-btn.unavailable{color:#9a8e84;color:var(--text-faint);cursor:default;opacity:.55}.dict-audio-btn.error{color:#7c6e8a;color:var(--accent)}.dict-audio-status{color:#9a8e84;color:var(--text-faint);font-size:9px;white-space:nowrap}.dict-audio-status.error,.dict-expand-btn{color:#7c6e8a;color:var(--accent);cursor:pointer}.dict-expand-btn{background:#f2efe9;background:var(--bg);border:0;border-top:1px solid #00000012;border-top:1px solid var(--border);font:500 11px DM Sans,sans-serif;font:500 11px var(--font-ui);letter-spacing:.1px;padding:9px 12px;width:100%}.dict-expand-btn:hover{background:#7c6e8a1a;background:var(--accent-soft)}.dict-expand-btn.secondary{color:#9a8e84;color:var(--text-faint)}.book-progress-fill,.reader-book-progress-fill{will-change:width}.image-viewer-overlay{align-items:center;animation:image-viewer-in .13s ease-out;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080706e0;display:flex;inset:0;justify-content:center;overflow:hidden;position:fixed;touch-action:none;z-index:2400}@keyframes image-viewer-in{0%{opacity:0}to{opacity:1}}.image-viewer-stage{align-items:center;cursor:grab;display:flex;height:100%;justify-content:center;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;width:100%}.image-viewer-stage:active{cursor:grabbing}.image-viewer-image{-webkit-user-drag:none;border-radius:4px;box-shadow:0 18px 60px #00000073;display:block;max-height:88vh;max-width:92vw;object-fit:contain;pointer-events:none;transform-origin:center center;-webkit-user-select:none;user-select:none;will-change:transform}.dict-definition-toggle{background:#0000;border:0;border-top:1px solid #00000012;border-top:1px solid var(--border);color:#7c6e8a;color:var(--accent);cursor:pointer;font:500 10px DM Sans,sans-serif;font:500 10px var(--font-ui);letter-spacing:.1px;padding:8px 4px 2px;text-align:left;width:100%}.dict-definition-toggle:hover{color:#2d2926;color:var(--text)}
/*# sourceMappingURL=main.e031f433.css.map*/
/* ──────────────────────────────────────────────────────────────
   v61.9 — Slumber UI Overhaul
   Thin, pale, restrained light-mode skin. Functionality unchanged.
   ────────────────────────────────────────────────────────────── */
:root,
.light {
  --radius: 10px;
  --radius-sm: 7px;
  --ease: 160ms ease;
  --bg: #f7f2ea;
  --bg-card: #fbf7ef;
  --bg-card-2: #f0e9df;
  --bg-overlay: rgba(42, 38, 43, 0.24);
  --text: #312f32;
  --text-muted: #79716d;
  --text-faint: #aaa09a;
  --border: rgba(77, 69, 64, 0.115);
  --hairline: rgba(77, 69, 64, 0.085);
  --accent: #756f92;
  --accent-2: #8b9488;
  --accent-soft: rgba(117, 111, 146, 0.085);
  --accent-hover: rgba(117, 111, 146, 0.145);
  --bar-bg: rgba(247, 242, 234, 0.88);
  --popup-bg: #fffbf4;
  --sidebar-bg: #fbf7ef;
  --scrollbar: rgba(77, 69, 64, 0.16);
  --shadow-soft: 0 18px 46px rgba(55, 47, 42, 0.10);
  --shadow-panel: 0 22px 70px rgba(55, 47, 42, 0.16);
  color-scheme: light;
}
.dark {
  --bg: #171615;
  --bg-card: #201f1d;
  --bg-card-2: #24221f;
  --bg-overlay: rgba(0,0,0,0.54);
  --text: #e4ded5;
  --text-muted: #a09890;
  --text-faint: #6f6862;
  --border: rgba(255,255,255,0.085);
  --hairline: rgba(255,255,255,0.055);
  --accent: #aaa1c2;
  --accent-2: #a8b09f;
  --accent-soft: rgba(170,161,194,0.105);
  --accent-hover: rgba(170,161,194,0.18);
  --bar-bg: rgba(23, 22, 21, 0.90);
  --popup-bg: #211f1d;
  --sidebar-bg: #1d1c1a;
  --scrollbar: rgba(255,255,255,0.12);
  --shadow-soft: 0 18px 46px rgba(0,0,0,0.24);
  --shadow-panel: 0 22px 70px rgba(0,0,0,0.38);
}

body {
  background:
    radial-gradient(circle at 10% -10%, rgba(166, 172, 188, .16), transparent 30%),
    linear-gradient(180deg, #faf6ee 0%, var(--bg) 44%, #efe8de 100%);
  letter-spacing: 0.005em;
}
.app { background: transparent; }
button, select, input { -webkit-tap-highlight-color: transparent; }
button { font-weight: 400; }

/* Quiet bars */
.topbar,
.bottombar,
.vocab-header,
.library-header,
.anki-header {
  min-height: 43px;
  background: var(--bar-bg);
  backdrop-filter: blur(18px) saturate(1.04);
  -webkit-backdrop-filter: blur(18px) saturate(1.04);
  border-color: var(--hairline);
  box-shadow: none;
}
.topbar { padding: 7px 13px; }
.bottombar { padding: 7px 14px 6px; }
.topbar-title,
.chapter-counter,
.save-indicator {
  font-size: 11px;
  letter-spacing: .04em;
  color: var(--text-faint);
}
.topbar-btn,
.vocab-back-btn,
.dict-close,
.sidebar-close,
.book-card-delete,
.vocab-delete-btn,
.dict-audio-btn {
  border: 1px solid transparent;
  background: transparent;
  color: var(--text-muted);
  opacity: .9;
}
.topbar-btn:hover,
.vocab-back-btn:hover,
.dict-close:hover,
.sidebar-close:hover,
.dict-audio-btn:hover {
  background: var(--accent-soft);
  border-color: var(--hairline);
  color: var(--accent);
}
.reader-book-progress-track { height: 2px; background: var(--hairline); }
.reader-book-progress-fill,
.book-progress-fill { background: linear-gradient(90deg, var(--accent-2), var(--accent)); }

/* Reader: paper-like, thinner text atmosphere */
.reader-content {
  max-width: 700px;
  padding: 30px 24px 82px;
  color: var(--text);
  font-weight: 300;
  text-rendering: optimizeLegibility;
}
.chapter-content {
  font-size: inherit;
  line-height: inherit;
}
.chapter-content h1,
.chapter-content .epub-h1 {
  color: #383437;
  font-size: 1.48em;
  font-weight: 400;
  letter-spacing: .04em;
  margin: 30px 0 22px;
}
.chapter-content h2,
.chapter-content .epub-h2,
.chapter-content h3,
.chapter-content .epub-h3 {
  font-weight: 400;
  color: var(--text-muted);
  letter-spacing: .03em;
}
.chapter-content p,
.chapter-content .epub-p { margin-bottom: 1.18em; }
.chapter-content blockquote,
.chapter-content .epub-blockquote {
  border-left: 1px solid var(--accent);
  background: rgba(255,255,255,.26);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  color: var(--text-muted);
}
.jp-content:hover,
.jp-content:active {
  background: rgba(117,111,146,.12);
  outline: 1px solid rgba(117,111,146,.08);
}
.vertical-mode .reader-content { padding: 30px 34px; }

/* Thin buttons and form controls */
.nav-btn,
.toggle,
.stepper button,
.stepper-btn,
.vocab-action-btn,
.library-vocab-btn,
.anki-select,
.anki-input,
.anki-connect-btn,
.sidebar-vocab-btn,
.library-import-btn,
.error-retry,
.dict-retry-btn,
.vocab-anki-btn,
.dict-save-btn {
  border-radius: 999px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.30);
  color: var(--text-muted);
  box-shadow: none;
}
.nav-btn { padding: 5px 13px; font-size: 11px; letter-spacing: .03em; }
.nav-btn:hover:not(:disabled),
.toggle.active,
.stepper button:hover,
.stepper-btn:hover,
.vocab-action-btn:hover,
.library-vocab-btn:hover,
.vocab-anki-btn:hover,
.dict-save-btn:hover {
  background: var(--accent-soft);
  border-color: rgba(117,111,146,.24);
  color: var(--accent);
}
.library-import-btn,
.error-retry,
.dict-retry-btn,
.anki-connect-btn,
.sidebar-vocab-btn {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: rgba(117,111,146,.22);
}
.library-import-btn:hover,
.anki-connect-btn:hover,
.sidebar-vocab-btn:hover { background: var(--accent-hover); }

/* Drop/import screen */
.dropzone-screen { gap: 22px; }
.logo-main,
.logo-jp {
  color: var(--accent);
  font-weight: 400;
  letter-spacing: .09em;
}
.logo-en {
  font-size: 27px;
  letter-spacing: .18em;
  font-weight: 300;
  color: var(--text-muted);
}
.dropzone-sub { color: var(--text-faint); letter-spacing: .08em; }
.dropzone,
.hint-row {
  background: rgba(255,255,255,.32);
  border: 1px solid var(--border);
  box-shadow: none;
}
.dropzone {
  border-style: solid;
  padding: 34px 26px;
}
.dropzone:hover,
.dropzone.dragging { transform: translateY(-1px); box-shadow: var(--shadow-soft); }
.dropzone-icon,
.vocab-empty-icon { filter: saturate(.65); opacity: .76; }

/* Library/vocab cards: restrained paper slips */
.library-screen,
.vocab-screen,
.anki-screen { background: transparent; }
.library-list,
.vocab-list { gap: 9px; padding-top: 14px; }
.book-card,
.vocab-card,
.anki-section,
.dict-panel,
.dict-popup {
  background: rgba(255,251,244,.80);
  border: 1px solid var(--border);
  box-shadow: none;
}
.book-card,
.vocab-card {
  border-radius: 13px;
}
.book-card:hover,
.vocab-card:hover,
.vocab-card.expanded {
  border-color: rgba(117,111,146,.28);
  background: rgba(255,251,244,.96);
}
.book-card-spine {
  width: 2px;
  opacity: .55;
  background: linear-gradient(180deg, var(--accent), var(--accent-2));
}
.book-card-title,
.vocab-word { font-weight: 400; letter-spacing: .02em; }
.book-card-author,
.book-card-meta,
.vocab-date,
.vocab-more { color: var(--text-faint); }
.book-progress-track { height: 3px; background: var(--hairline); }
.vocab-count,
.topbar-vocab-badge,
.library-vocab-badge,
.sidebar-vocab-count {
  background: var(--accent-soft);
  color: var(--accent);
  border: 1px solid rgba(117,111,146,.18);
  font-weight: 500;
}
.vocab-pos,
.dict-pos {
  background: transparent;
  border: 1px solid var(--hairline);
  border-radius: 999px;
  color: var(--text-faint);
  font-weight: 400;
}

/* Dictionary: pale glass sheet, thin dividers */
.dict-popup,
.dict-panel {
  border-radius: 14px;
  box-shadow: var(--shadow-panel);
  background: rgba(255,251,244,.96);
}
.dict-popup { width: 302px; }
.dict-header,
.dict-panel-header,
.dict-sense,
.dict-entry-divider,
.dict-sentence,
.dict-suffixes,
.dict-decomposed,
.dict-components-section,
.vocab-sentence,
.anki-field-row,
.anki-toggle-row,
.dict-component-row,
.dict-decomposed-item,
.dict-import-row {
  border-color: var(--hairline);
}
.dict-word,
.dict-entry-word-row .dict-word,
.dict-decomposed-word,
.dict-component-word {
  font-weight: 400;
  letter-spacing: .02em;
}
.dict-word { font-size: 25px; }
.dict-reading,
.vocab-reading,
.dict-component-reading,
.dict-decomposed-reading,
.dict-pitch {
  background: transparent;
  color: var(--accent);
  border: none;
  padding-left: 0;
  padding-right: 0;
}
.dict-meaning,
.dict-sense-gloss { line-height: 1.58; }
.jd-example,
.dict-components-section {
  background: rgba(240,233,223,.48);
  border-left: 1px solid rgba(117,111,146,.18);
}
.dict-badge {
  border-radius: 999px;
  background: transparent;
  color: var(--accent);
  border-color: rgba(117,111,146,.25);
  font-weight: 400;
}
.dict-entry-actions .dict-save-btn,
.dict-entry-actions .dict-audio-btn { background: rgba(255,255,255,.25); }
.dict-status {
  background: rgba(255,251,244,.92);
  box-shadow: var(--shadow-soft);
  border-color: var(--hairline);
}

/* Sidebar */
.sidebar-overlay { background: rgba(49,45,47,.22); backdrop-filter: blur(2px); }
.sidebar {
  width: min(292px, 84vw);
  background: rgba(251,247,239,.98);
  border-right: 1px solid var(--hairline);
  box-shadow: 20px 0 60px rgba(55,47,42,.10);
}
.sidebar-header,
.sidebar-settings { border-color: var(--hairline); }
.sidebar-title { font-weight: 400; }
.sidebar-toc-label,
.anki-section-title,
.dict-components-label,
.dict-sentence-label,
.dict-suffixes-label,
.vocab-sentence-label {
  font-weight: 400;
  letter-spacing: .12em;
}
.toc-item {
  border-bottom: 1px solid var(--hairline);
}
.toc-item:hover,
.toc-item.active {
  background: linear-gradient(90deg, var(--accent-soft), transparent);
}
.toc-item.active .toc-title { color: var(--accent); }

/* Anki screen */
.anki-body { gap: 13px; }
.anki-section {
  border-radius: 13px;
  padding: 12px 14px;
}
.anki-select,
.anki-input {
  border-radius: 9px;
  background: rgba(255,255,255,.28);
}
.anki-error,
.anki-status,
.anki-inline-error {
  border-radius: 11px;
  background: rgba(255,255,255,.34);
}

/* Image/viewer hints */
.dpad-hint-btn {
  background: rgba(255,251,244,.88);
  border-color: var(--hairline);
  color: var(--text-faint);
  border-radius: 999px;
}
.dpad-hint-btn.active { background: var(--accent-soft); color: var(--accent); }
.chapter-content img { border-radius: 8px; }

/* Keep tiny screens calm */
@media(max-width:480px){
  .reader-content{padding:26px 18px 62px;}
  .topbar{padding-left:10px;padding-right:10px;}
  .dict-popup{width:calc(100vw - 18px);left:9px !important;border-radius:14px;}
  .library-list,.vocab-list{padding-left:12px;padding-right:12px;}
}


/* ============================================================================
   つばさ — MILK GLASS v2  (visual layer only)
   Calmer for reading: NO background blooms, NO directional gradients.
   Glass now reads as a real frosted *texture* (fine ground-glass grain).
   Tactile press has real "oomph": deep squish in, springy overshoot out,
   quick brightness snap.
   ========================================================================== */

:root{
  --ease: 260ms cubic-bezier(.22,1,.36,1);
  --ease-pop: cubic-bezier(.34,1.85,.5,1);     /* punchy spring w/ overshoot */
  --radius: 18px;
  --radius-sm: 13px;
  --glass-blur: 22px;
  --glass-sat: 175%;
  /* fine frosted-glass grain — flat, non-directional (NOT a gradient).
     Tune presence by changing the slope in the data-URI, or blur/sat above. */
  --milk-noise: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='140'%20height='140'%3E%3Cfilter%20id='n'%3E%3CfeTurbulence%20type='fractalNoise'%20baseFrequency='0.8'%20numOctaves='2'%20stitchTiles='stitch'/%3E%3CfeColorMatrix%20type='saturate'%20values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA%20type='linear'%20slope='0.07'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect%20width='140'%20height='140'%20filter='url(%23n)'/%3E%3C/svg%3E");
}

/* palette: flat milk, lavender accent kept */
:root, .light, html.light, .app.light{
  --bg:#F6F2EC; --bg-card:rgba(255,254,251,.58); --bg-overlay:rgba(46,40,58,.26);
  --text:#34302A; --text-muted:#6E6157; --text-faint:#AB9E91;
  --border:rgba(74,58,96,.11);
  --accent:#8273A0; --accent-rgb:130,115,160;
  --accent-soft:rgba(130,115,160,.12); --accent-hover:rgba(130,115,160,.24);
  --bar-bg:rgba(250,247,243,.62); --popup-bg:rgba(252,250,247,.70);
  --popup-glass:rgba(252,250,247,.56);            /* see-through fill for refractive popups */
  --sidebar-bg:rgba(250,248,244,.62); --scrollbar:rgba(130,115,160,.30);
  --glass-hi:rgba(255,255,255,.85); --glass-edge:rgba(255,255,255,.55);
  --glass-shadow:0 10px 30px rgba(86,72,116,.14), 0 2px 7px rgba(86,72,116,.09);
  --glass-shadow-lift:0 18px 44px rgba(86,72,116,.20), 0 4px 12px rgba(86,72,116,.12);
  --gloss:0;
}
.dark, html.dark, .app.dark{
  --bg:#120F0A; --bg-card:rgba(44,37,29,.52); --bg-overlay:rgba(6,4,2,.50);
  --border:rgba(255,238,214,.085);
  --accent:#e6694a; --accent-rgb:230,105,74;
  --accent-soft:rgba(230,105,74,.14); --accent-hover:rgba(230,105,74,.30);
  --bar-bg:rgba(22,18,12,.58); --popup-bg:rgba(34,28,21,.66);
  --popup-glass:rgba(34,28,21,.50);
  --sidebar-bg:rgba(26,21,16,.62); --scrollbar:rgba(255,210,180,.16);
  --glass-hi:rgba(255,244,232,.16); --glass-edge:rgba(255,238,222,.10);
  --glass-shadow:0 12px 34px rgba(0,0,0,.50), 0 2px 8px rgba(0,0,0,.40);
  --glass-shadow-lift:0 20px 50px rgba(0,0,0,.58), 0 4px 12px rgba(0,0,0,.46);
}
:root, .light{
  --heatmap-1:rgba(var(--accent-rgb,130,115,160),.22);
  --heatmap-2:rgba(var(--accent-rgb,130,115,160),.42);
  --heatmap-3:rgba(var(--accent-rgb,130,115,160),.68);
  --heatmap-4:var(--accent);
}

/* FLAT, calm reading background — no blooms, no gradient */
body{ background: var(--bg) !important; }
.app, .app.library-mode{ background: transparent !important; }
body::before{ content: none !important; }

.reader-scroll::-webkit-scrollbar-thumb,.dict-panel-scroll::-webkit-scrollbar-thumb,
.dict-popup-scrollable::-webkit-scrollbar-thumb{ background:var(--scrollbar); border-radius:99px; }

/* ============================================================================
   GLASS SURFACES — flat frost + fine grain texture + specular edge (no gradient)
   ========================================================================== */
.topbar,.bottombar,.vocab-header,.library-header,.anki-header{
  background: var(--milk-noise), var(--bar-bg) !important;
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  border-color:transparent !important;
}
.vocab-header,.library-header,.anki-header{
  border-bottom:1px solid var(--border) !important;
  box-shadow:inset 0 1px 0 var(--glass-hi), 0 6px 18px rgba(80,66,110,.06);
}
/* reader bars: hairline edge only — NO soft shadow bleeding onto the page */
.topbar{ border-bottom:1px solid var(--border) !important; box-shadow:inset 0 1px 0 var(--glass-hi) !important; }
.bottombar{ border-top:1px solid var(--border) !important; box-shadow:inset 0 1px 0 var(--glass-hi) !important; }

.dict-popup,.dict-panel,.kpop-wrap{
  background: var(--milk-noise), var(--popup-glass) !important;
  /* Subtle "under glass" refraction: low blur lets the text below survive, the
     SVG displacement warps it gently. Engines without url()-in-backdrop support
     fall back to the -webkit- line (plain see-through frost) or, failing that,
     to the translucent fill alone — i.e. the subtle-transparency you asked for. */
  -webkit-backdrop-filter:blur(5px) saturate(155%);
  backdrop-filter:blur(5px) saturate(155%) url(#milk-refract);
  border:1px solid var(--glass-edge) !important; border-radius:22px !important;
  box-shadow:inset 0 1px 0 var(--glass-hi), inset 0 0 0 1px rgba(255,255,255,.05), var(--glass-shadow-lift) !important;
}
.dict-popup{ animation:glass-pop 220ms var(--ease-pop) !important; }
.dict-panel{ animation:glass-pop 200ms var(--ease-pop) !important; }
.kpop-wrap{ animation:glass-pop 190ms var(--ease-pop) !important; }

.sidebar{
  background: var(--milk-noise), var(--sidebar-bg) !important;
  -webkit-backdrop-filter:blur(26px) saturate(180%);
  backdrop-filter:blur(26px) saturate(180%);
  border-right:1px solid var(--glass-edge) !important;
  box-shadow:inset -1px 0 0 var(--glass-hi), var(--glass-shadow-lift) !important;
  animation:glass-slide 280ms cubic-bezier(.22,1,.36,1) !important;
}
.sidebar-overlay{ -webkit-backdrop-filter:blur(5px) saturate(120%); backdrop-filter:blur(5px) saturate(120%); }

.book-card,.vocab-card,.stats-card,.dropzone,.hint-row{
  background: var(--milk-noise), var(--bg-card) !important;
  -webkit-backdrop-filter:blur(12px) saturate(160%);
  backdrop-filter:blur(12px) saturate(160%);
  border:1px solid var(--glass-edge) !important;
  box-shadow:inset 0 1px 0 var(--glass-hi), var(--glass-shadow) !important;
}
.book-card,.vocab-card,.stats-card{ border-radius:18px !important; }
.dropzone{ border:1.5px dashed var(--accent-soft) !important; border-radius:20px !important; }

.book-card,.vocab-card{
  transition:transform 360ms var(--ease-pop), box-shadow var(--ease), border-color var(--ease) !important;
  will-change:transform;
}
.book-card:hover,.vocab-card:hover{ border-color:var(--accent) !important; box-shadow:inset 0 1px 0 var(--glass-hi), var(--glass-shadow-lift) !important; }
.book-card:active,.vocab-card:active{ transform:scale(.955); transition-duration:90ms; }
.book-card-spine{ width:6px !important; opacity:1 !important; background:var(--accent) !important; box-shadow:0 0 12px rgba(var(--accent-rgb),.45); }

.kpop-header,.dict-header,.dict-panel-header{ border-bottom:1px solid var(--border) !important; box-shadow:inset 0 1px 0 var(--glass-hi); }
.image-viewer-overlay{ background:rgba(18,14,12,.62) !important; -webkit-backdrop-filter:blur(16px) saturate(140%); backdrop-filter:blur(16px) saturate(140%); }

/* ============================================================================
   TACTILE CONTROLS — deep squish + bouncy overshoot + brightness snap = OOMPH
   ========================================================================== */
button,.nav-btn,.toggle,.toc-item,.stepper button,.stepper-btn,.topbar-btn,
.session-btn,.vocab-action-btn,.vocab-anki-btn,.vocab-delete-btn,.dict-save-btn,
.dict-close,.anki-connect-btn,.sidebar-close,.vocab-back-btn,.library-vocab-btn,
.vocab-topbar-btn,.sidebar-vocab-btn,.error-retry,.dict-retry-btn,.dict-expand-btn,
.suffix-chip,.dict-audio-btn,.library-import-btn{
  transition:transform 380ms var(--ease-pop), filter 110ms ease, background var(--ease),
             border-color var(--ease), color var(--ease), box-shadow var(--ease) !important;
  -webkit-tap-highlight-color:transparent;
}
button:active,.nav-btn:active,.toggle:active,.stepper button:active,.stepper-btn:active,
.topbar-btn:active,.session-btn:active,.vocab-action-btn:active,.dict-save-btn:active,
.dict-close:active,.anki-connect-btn:active,.sidebar-close:active,.vocab-back-btn:active,
.library-vocab-btn:active,.vocab-topbar-btn:active,.sidebar-vocab-btn:active,.suffix-chip:active,
.dict-audio-btn:active,.dict-expand-btn:active,.library-import-btn:active{
  transform:scale(.87); filter:brightness(1.07); transition-duration:90ms;
}
.toc-item:active{ transform:scale(.97); transition-duration:90ms; }

.nav-btn,.toggle,.stepper button,.stepper-btn,.vocab-action-btn,.vocab-anki-btn,
.anki-connect-btn,.dict-expand-btn,.suffix-chip,.dict-audio-btn,.error-retry,.dict-retry-btn{
  background:var(--bg-card) !important;
  -webkit-backdrop-filter:blur(10px) saturate(150%); backdrop-filter:blur(10px) saturate(150%);
  border:1px solid var(--glass-edge) !important;
  box-shadow:inset 0 1px 0 var(--glass-hi), 0 2px 6px rgba(86,72,116,.10) !important;
}
.nav-btn:hover:not(:disabled),.toggle.active{
  border-color:var(--accent) !important; color:var(--accent) !important;
  box-shadow:inset 0 1px 0 var(--glass-hi), 0 0 0 1px var(--accent-soft), 0 3px 12px rgba(var(--accent-rgb),.18) !important;
}
.toggle{ border-radius:99px !important; }
.toggle.active{ background:var(--accent-soft) !important; }
.topbar-btn{ border-radius:12px !important; }
.topbar-btn:hover{ background:var(--accent-soft) !important; }

.toc-item{ transition:background var(--ease), transform 240ms var(--ease-pop) !important; }
.toc-item:hover,.toc-item.active{ background:var(--accent-soft) !important; }
.toc-item.active{ box-shadow:inset 3px 0 0 var(--accent); }

/* accent buttons — FLAT accent (no gradient), punchy */
.library-import-btn,.dict-save-btn.saved,.vocab-anki-btn.done{
  background:var(--accent) !important; color:#fff !important;
  border:1px solid rgba(255,255,255,.30) !important; border-radius:13px !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45), 0 5px 16px rgba(var(--accent-rgb),.32) !important;
}
.dict-save-btn{ border-radius:11px !important; }
.stepper button,.stepper-btn{ border-radius:11px !important; }

.jp-content:hover,.jp-content:active{ background:var(--accent-soft) !important; border-radius:6px; }

/* subtle pointer specular — big surfaces only, only while touched */
.book-card,.vocab-card,.stats-card,.nav-btn,.toggle,.library-import-btn,.topbar-btn{ position:relative; }
.book-card::after,.vocab-card::after,.stats-card::after,.dict-popup::after,.dict-panel::after,
.kpop-wrap::after,.nav-btn::after,.toggle::after,.library-import-btn::after,.topbar-btn::after{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:radial-gradient(140px circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.4), transparent 55%);
  opacity:var(--gloss,0); transition:opacity 240ms ease; mix-blend-mode:soft-light;
}
.dict-popup::after,.dict-panel::after,.kpop-wrap::after{ z-index:5; }

/* ============================================================================
   REFINEMENTS — flat progress (no gradient/sheen), badges, dividers, dpad, toast
   ========================================================================== */
.reader-book-progress-fill,.book-progress-fill,.anki-batch-fill{
  background:var(--accent) !important; box-shadow:0 0 8px rgba(var(--accent-rgb),.35);
}
.reader-book-progress-track,.book-progress-track{ box-shadow:inset 0 1px 2px rgba(86,72,116,.10); }

.topbar-vocab-badge,.library-vocab-badge,.vocab-count,.sidebar-vocab-count{ box-shadow:0 2px 8px rgba(var(--accent-rgb),.35); }

.dpad-hint{ background:var(--milk-noise), var(--bar-bg) !important;
  -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px);
  border-radius:99px !important; box-shadow:inset 0 1px 0 var(--glass-hi), var(--glass-shadow); }
.dpad-hint-btn.active{ box-shadow:0 0 0 2px var(--accent-soft); }

.session-toast{ background:var(--milk-noise), var(--popup-bg) !important;
  -webkit-backdrop-filter:blur(20px) saturate(170%); backdrop-filter:blur(20px) saturate(170%);
  border:1px solid var(--glass-edge) !important; border-radius:16px !important;
  box-shadow:inset 0 1px 0 var(--glass-hi), var(--glass-shadow-lift) !important;
  animation:glass-pop 240ms var(--ease-pop) !important; }

.loading-spinner,.mini-spinner{ border-color:var(--accent-soft); border-top-color:var(--accent); }

.toc-item,.setting-row,.vocab-card,.anki-field-row,.anki-toggle-row,.dict-sense,
.dict-import-row,.kpop-word-row,.stats-session-row,.dict-component-row{ border-color:var(--border) !important; }

.anki-input,.anki-select,.stats-session-date-input{
  background:var(--bg-card) !important; border:1px solid var(--glass-edge) !important;
  border-radius:11px !important; box-shadow:inset 0 1px 2px rgba(86,72,116,.08); }

/* ============================================================================
   KEYFRAMES + reduced motion
   ========================================================================== */
@keyframes glass-pop{ 0%{opacity:0; transform:scale(.92) translateY(6px);} 55%{opacity:1; transform:scale(1.012) translateY(0);} 100%{opacity:1; transform:scale(1) translateY(0);} }
@keyframes glass-slide{ 0%{transform:translateX(-100%);} 100%{transform:translateX(0);} }
@media (prefers-reduced-motion: reduce){ *{ animation-duration:.001ms !important; } }

/* dark specular tint */
html.dark .book-card::after,html.dark .vocab-card::after,html.dark .stats-card::after,
html.dark .dict-popup::after,html.dark .dict-panel::after,html.dark .kpop-wrap::after,
html.dark .nav-btn::after,html.dark .toggle::after,html.dark .library-import-btn::after,html.dark .topbar-btn::after{
  background:radial-gradient(140px circle at var(--mx,50%) var(--my,50%), rgba(255,230,210,.22), transparent 55%);
}
html.dark .book-card-spine{ box-shadow:0 0 12px rgba(230,105,74,.45); }

/* v61.10 personal-use monolingual dictionary overlay */
.dict-language-toggle{display:inline-flex;align-items:center;margin-left:6px;padding:2px;border:1px solid rgba(80,70,68,.14);border-radius:999px;background:rgba(255,255,255,.38);vertical-align:middle;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
.dict-language-toggle button{appearance:none;border:0;background:transparent;color:rgba(62,52,52,.58);font:inherit;font-size:10px;font-weight:700;line-height:1;padding:4px 7px;border-radius:999px;cursor:pointer;white-space:nowrap}
.dict-language-toggle button.active{background:rgba(255,255,255,.9);color:rgba(45,37,37,.92);box-shadow:0 1px 4px rgba(60,45,45,.12)}
.dict-mode-mono .dict-meanings{display:none!important}
.mono-meanings{display:none;margin-top:8px}
.dict-mode-mono .mono-meanings{display:block}
.mono-definition{font-size:13px;line-height:1.62;color:var(--ink,#322d2c);padding:6px 0;border-top:1px solid rgba(80,70,68,.07)}
.mono-definition:first-child{border-top:0;padding-top:0}
.mono-definition .mono-pos,.mono-pos{display:inline-block;margin-right:5px;color:rgba(70,57,55,.62);font-size:.9em}
.mono-definition .mono-example,.mono-example{display:block;margin:3px 0 0 10px;color:rgba(69,58,57,.72);font-size:.94em}
.mono-definition .mono-ref,.mono-ref{color:rgba(110,78,92,.82)}
.mono-definition .mono-note,.mono-note{display:block;margin-top:4px;color:rgba(65,56,55,.72)}
.mono-image-alt{font-size:.85em;opacity:.7}
.mono-empty{padding:9px 0 7px;font-size:12px;color:rgba(76,65,64,.55)}
.mono-empty.error{color:#9a5d5d}
.mono-loading{display:flex;gap:7px;align-items:center;padding:8px 0;font-size:12px;color:rgba(76,65,64,.55)}
.mono-definition-toggle{margin-top:4px!important}
.dict-mode-mono .dict-component-meaning{display:none!important}
.mono-component-meaning{display:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;opacity:.82}
.dict-mode-mono .mono-component-meaning{display:inline;flex:1}

/* ── v61.11 additive product tools; deliberately does not alter existing reader/card/font sizing ── */
.tsubasa-dict-search-overlay{position:fixed;inset:0;z-index:1600;background:rgba(0,0,0,.28);display:none;align-items:center;justify-content:center;padding:12px;}
.tsubasa-dict-search-overlay.open{display:flex;}
.tsubasa-dict-search-panel{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);display:flex;flex-direction:column;overflow:hidden;background:var(--popup-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 10px 44px rgba(0,0,0,.38);}
.tsubasa-search-head{display:flex;align-items:center;gap:8px;padding:10px 12px 8px;border-bottom:1px solid var(--border);flex-shrink:0;}
.tsubasa-search-back,.tsubasa-search-close{background:none;border:1px solid var(--border);color:var(--text-muted);border-radius:var(--radius-sm);width:32px;height:32px;cursor:pointer;font:inherit;}
.tsubasa-search-back:disabled{opacity:.3;}
.tsubasa-search-input{flex:1;min-width:0;background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:7px 10px;font:inherit;outline:none;}
.tsubasa-search-input:focus{border-color:var(--accent);}
.tsubasa-search-subhead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 12px;border-bottom:1px solid var(--border);flex-shrink:0;}
.tsubasa-search-status{font-size:10px;color:var(--text-faint);}
.tsubasa-search-results{overflow:auto;min-height:120px;padding:4px 0 10px;}
.tsubasa-search-entry{padding:11px 14px;border-bottom:1px solid var(--border);}
.tsubasa-search-entry.component{opacity:.82;}
.tsubasa-search-wordrow{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:5px;}
.tsubasa-search-def{font-size:12px;color:var(--text-muted);line-height:1.6;}
.tsubasa-search-sense{margin:3px 0;}
.tsubasa-search-mono{cursor:pointer;}
.tsubasa-search-empty,.tsubasa-search-results>.mono-loading{padding:28px 16px;text-align:center;color:var(--text-faint);}
.tsubasa-tools-popover{position:fixed;z-index:1550;display:none;gap:6px;padding:8px;background:var(--popup-bg);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 8px 30px rgba(0,0,0,.28);}
.tsubasa-tools-popover.open{display:flex;}
.tsubasa-tools-popover input,.tsubasa-tools-popover select{background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 8px;font:inherit;}
.tsubasa-fluency-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 10px;padding:8px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
.tsubasa-fluency-row>span{display:flex;flex-direction:column;gap:1px;color:var(--text);}
.tsubasa-fluency-row small{color:var(--text-faint);font-size:9px;}
.tsubasa-storage-toast{position:fixed;left:50%;bottom:54px;transform:translateX(-50%) translateY(10px);z-index:1800;background:var(--popup-bg);border:1px solid #e05555;color:var(--text);padding:8px 12px;border-radius:var(--radius-sm);opacity:0;pointer-events:none;transition:all .18s ease;box-shadow:0 6px 24px rgba(0,0,0,.3);}
.tsubasa-storage-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.vocab-card[data-anki-exported="1"] .vocab-anki-btn:not(.sending):not(.error){border-color:color-mix(in srgb,#4caf50 60%,var(--border));}

/* v61.11.2 — auxiliary dictionary is modal: contain its scrolling and stop
   the page underneath from scroll-chaining or moving behind it. */
html.tsubasa-modal-open,html.tsubasa-modal-open body{overflow:hidden;overscroll-behavior:none;touch-action:none;}
.tsubasa-dict-search-overlay{touch-action:none;overscroll-behavior:contain;}
.tsubasa-dict-search-panel{touch-action:auto;}
.tsubasa-search-results{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;}

/* v61.11.3 — the auxiliary dictionary no longer closes on a backdrop tap, so
   it has to READ modal. Darker scrim, and the close control carries weight
   so it is obviously the way out. */
.tsubasa-dict-search-overlay{background:rgba(0,0,0,.52);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);}
.tsubasa-dict-search-panel{box-shadow:0 16px 60px rgba(0,0,0,.5);}
.tsubasa-search-close{background:var(--bg-card);border-color:var(--border);color:var(--text);font-weight:600;}
.tsubasa-search-close:active{background:var(--accent);border-color:var(--accent);color:#fff;}
