:root{--bg: #16181d;--bg-panel: #1d2026;--bg-hover: #23262d;--border: #2c3038;--text: #d5d9e0;--text-muted: #8a919e;--accent: #4fb3bf;--ok: #5cb872;--err: #d9605c;--warn: #d9a05c;--font-ui: system-ui, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, monospace;--topbar-h: 41px;--sidebar-w: 280px}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:var(--text);background:var(--bg-hover);border:1px solid var(--border);border-radius:4px;padding:5px 12px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button[type=submit]{background:var(--accent);border-color:var(--accent);color:#10131a;font-weight:600}.btn-secondary{background:transparent}.btn-danger{color:var(--err);border-color:var(--err);background:transparent}.btn-danger:hover:not(:disabled){border-color:var(--err);background:#d9605c1f}input[type=text],input[type=search],input[type=number],input[type=date],input[type=password],textarea,select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:5px 8px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}input[type=color]{width:40px;height:28px;padding:0;border:1px solid var(--border);border-radius:4px;background:var(--bg);cursor:pointer}.icon-btn{background:transparent;border:none;padding:2px 6px;border-radius:3px;color:var(--text-muted);line-height:1}.icon-btn:hover:not(:disabled){color:var(--text);background:var(--bg-hover);border:none}.muted{color:var(--text-muted)}.error-text{color:var(--err);margin:4px 0}.field{display:flex;flex-direction:column;gap:4px}.field-label{font-size:12px;color:var(--text-muted)}.field-row{display:flex;gap:12px}.field-row .field{flex:1}.inline-form{display:flex;gap:8px}.inline-form input{min-width:220px}.layout{display:flex;flex-direction:column;height:100%}.auth-checking{height:100%;display:flex;align-items:center;justify-content:center}.topbar{display:flex;align-items:center;gap:10px;padding:8px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:600;letter-spacing:.02em;color:var(--text)}.brand svg{border-radius:4px;flex-shrink:0}.brand:hover{text-decoration:none;color:var(--accent)}.topbar-spacer{flex:1}.topbar-action{color:var(--text-muted);font-family:var(--font-mono);font-size:12px;border:1px solid var(--border);border-radius:3px;padding:2px 8px;white-space:nowrap}.topbar-action:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.topbar-iconbtn{display:inline-flex;align-items:center;padding:3px 6px}.layout-body{flex:1;display:flex;min-height:0}.rail{width:44px;flex-shrink:0;border-right:1px solid var(--border);background:var(--bg-panel);display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;min-height:0}.rail-item{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;color:var(--text-muted);flex-shrink:0}.rail-item:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.rail-active{color:var(--text);background:var(--bg-hover)}.rail-sep{width:20px;height:1px;background:var(--border);margin:3px 0;flex-shrink:0}.rail-scroll{display:flex;flex-direction:column;align-items:center;gap:4px;overflow-y:auto;scrollbar-width:none;min-height:0;padding:4px 0;width:100%}.rail-chip{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;background:#555;color:#fff;font-size:10px;font-weight:700;font-family:var(--font-mono);text-shadow:0 1px 1px rgba(0,0,0,.35)}.rail-item.rail-active .rail-chip{box-shadow:0 0 0 2px var(--bg-panel),0 0 0 4px var(--accent)}.rail-tip{position:fixed;left:50px;transform:translateY(-50%);background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;padding:3px 8px;font-size:12px;color:var(--text);white-space:nowrap;z-index:80;pointer-events:none;box-shadow:0 2px 8px #0000004d}.page{flex:1;overflow-y:auto;width:100%;min-width:0;padding:20px max(16px,calc((100% - 1100px)/2))}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:12px}.page-title{margin:0;font-size:18px}.sidebar{width:var(--sidebar-user-w, var(--sidebar-w));flex-shrink:0;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0;overflow-y:auto}.sidebar-resizer{width:5px;cursor:col-resize;flex-shrink:0;background:transparent}.sidebar-resizer:hover{background:var(--border)}body.col-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.col-resizing iframe{pointer-events:none}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}.tab{background:transparent;border:none;border-bottom:2px solid transparent;border-radius:0;color:var(--text-muted);padding:6px 10px}.tab:hover:not(:disabled){color:var(--text);border-color:transparent}.tab-active{color:var(--text);border-bottom-color:var(--accent)}.tab-count{color:var(--text-muted);font-size:12px;font-family:var(--font-mono)}.settings-page{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.settings-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:8px 16px 0;border-bottom:1px solid var(--border);flex-shrink:0}.settings-tab{padding:5px 14px;font-size:13px;color:var(--text-muted);border:1px solid transparent;border-bottom:none;border-radius:5px 5px 0 0}.settings-tab:hover{color:var(--text);text-decoration:none}.settings-tab-active{color:var(--text);background:var(--bg-panel);border-color:var(--border);margin-bottom:-1px}.rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.row{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;color:var(--text)}.row:hover{border-color:var(--accent);text-decoration:none}.row-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.row-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;max-width:45%}.row-desc{color:var(--text-muted);font-size:13px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-actions{visibility:hidden;margin-left:auto;display:flex;gap:2px}.row:hover .row-actions{visibility:visible}.badge{font-size:11px;font-family:var(--font-mono);padding:1px 6px;border-radius:3px;border:1px solid var(--border);color:var(--text-muted);white-space:nowrap}.badge-ok{color:var(--ok);border-color:var(--ok)}.badge-warn{color:var(--warn);border-color:var(--warn)}.badge-err{color:var(--err);border-color:var(--err)}.card-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:5px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.card:hover{border-color:var(--accent)}.card h3{margin:0;font-size:14px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:var(--text-muted);font-weight:600;font-size:12px;padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:5px 8px;border-bottom:1px solid var(--border)}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:var(--bg-hover)}.table-section td{font-weight:600;color:var(--warn);padding-top:14px;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.ctxmenu{position:fixed;z-index:150;min-width:170px;max-width:240px;width:max-content;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;box-shadow:0 4px 14px #0006;padding:4px;display:flex;flex-direction:column}.rowmenu{position:relative;display:inline-flex}.rowmenu-list{position:absolute;top:100%;right:0;z-index:30;min-width:170px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;box-shadow:0 4px 14px #0006;padding:4px;display:flex;flex-direction:column}.rowmenu-item{background:transparent;border:none;border-radius:3px;text-align:left;padding:6px 10px;white-space:nowrap}.rowmenu-item:hover:not(:disabled){background:var(--bg-hover);border:none}.rowmenu-danger{color:var(--err)}.rowmenu-sep{height:1px;background:var(--border);margin:4px 6px}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:8px 10px 8px 14px;font-size:13px;z-index:500;box-shadow:0 4px 18px #00000059;max-width:min(92vw,560px)}.toast-error{border-left:3px solid var(--err)}.toast-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast-undo{color:var(--accent);font-weight:600;background:none;border:none;cursor:pointer;flex-shrink:0}.confirm-message{margin:0 0 4px;line-height:1.5;white-space:pre-line}.palette-overlay{position:fixed;inset:0;z-index:300;background:#00000073;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 0}.palette{width:min(560px,100%);background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 40px #0000008c;display:flex;flex-direction:column;max-height:70vh}.palette input{border:none;border-bottom:1px solid var(--border);border-radius:8px 8px 0 0;background:transparent;padding:12px 14px;font-size:15px}.palette input:focus{outline:none}.palette-list{overflow-y:auto;padding:6px}.palette-group{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:8px 10px 3px}.palette-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;padding:6px 10px;border-radius:4px;font-size:14px;color:var(--text);cursor:pointer}.palette-hi{background:var(--bg-hover);color:var(--accent)}.palette-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-hint{font-size:11px;color:var(--text-muted);white-space:nowrap;margin-left:auto}.palette-empty{padding:10px 12px}.palette-foot{font-size:11px;padding:6px 12px;border-top:1px solid var(--border)}.modal-overlay{position:fixed;inset:0;background:#0000008c;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px 16px}.modal{width:100%;max-width:440px;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;max-height:80vh;display:flex;flex-direction:column}.modal-wide{max-width:720px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border)}.modal-title{font-weight:600}.modal-body{padding:14px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.modal-actions-split{justify-content:space-between}.modal-actions-split>div{display:flex;gap:8px}.move-list{display:flex;flex-direction:column;max-height:40vh;overflow-y:auto;border:1px solid var(--border);border-radius:4px;padding:4px}.move-option{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:3px;cursor:pointer}.move-option:hover{background:var(--bg-hover)}kbd{font-family:var(--font-mono);font-size:11px;padding:1px 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:3px;background:var(--bg)}@media(max-width:720px){.rail,.sidebar-resizer,.row-desc{display:none}.row-actions{visibility:visible}.drawer-overlay{position:fixed;inset:0;background:#00000080;z-index:40}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:50;width:min(85vw,320px);transform:translate(-100%);transition:transform .18s ease-out;border-right:1px solid var(--border)}.sidebar-open{transform:translate(0)}.inline-form{flex:1}.inline-form input{min-width:0;flex:1}.modal-overlay{padding:4vh 8px 8px}}@media print{:root{--bg: #fff;--bg-panel: #fff;--bg-hover: #fff;--border: #bbb;--text: #000;--text-muted: #555;--accent: #000}.topbar,.rail,.sidebar,.toast,.modal-overlay,.palette-overlay,.ctxmenu,.row-actions{display:none!important}.page{overflow:visible;padding:0}}:root{--bg-reader: #0b0c0f;--sepia-bg: #f4ecd8;--sepia-text: #5b4636;--light-bg: #fafafa;--light-text: #1a1a1a;--reader-bar-h: 44px}.topbar-count{font-family:var(--font-mono);font-size:11px;color:var(--accent);margin-left:4px}.mobile-nav{display:none}.lib-toolbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:14px}.lib-toolbar input[type=search]{flex:1;min-width:160px}.lib-toolbar select{max-width:150px}.lib-count{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);white-space:nowrap}.view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:4px;overflow:hidden}.view-toggle .icon-btn{border-radius:0;padding:5px 7px}.view-toggle .icon-btn.active{background:var(--bg-hover);color:var(--text)}.book-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:14px 12px}.book-card{display:flex;flex-direction:column;gap:4px;color:var(--text);min-width:0}.book-card:hover{text-decoration:none}.book-card:hover .book-cover{border-color:var(--accent)}.book-cover{position:relative;aspect-ratio:2 / 3;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;overflow:hidden}.book-cover img{width:100%;height:100%;object-fit:cover;display:block}.book-cover-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:28px;font-weight:700;color:var(--text-muted)}.book-cover-badge{position:absolute;top:4px;right:4px;background:#000000b3}.book-cover-badge-left{right:auto;left:4px}.book-cover-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:#0000008c}.book-cover-bar>span{display:block;height:100%;background:var(--accent)}.book-card-title{font-size:13px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-card-sub,.book-card-extra{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-card-extra{font-family:var(--font-mono);font-size:11px}.row-cover{width:28px;height:40px;flex-shrink:0;border-radius:2px;overflow:hidden;background:var(--bg);border:1px solid var(--border)}.row-cover img{width:100%;height:100%;object-fit:cover;display:block}.row-cover-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}.row-meta{display:flex;gap:6px;align-items:center;flex-shrink:0}.book-head{display:flex;gap:20px;margin-bottom:18px}.book-head-cover{width:160px;flex-shrink:0;display:flex;flex-direction:column;gap:6px}.book-head-cover.editable .book-cover{cursor:pointer}.book-head-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.book-title{margin:0;font-size:20px;line-height:1.3;display:flex;align-items:center;gap:8px}.book-title .icon-btn{color:var(--warn)}.book-authors{color:var(--text-muted)}.book-facts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.book-facts select{padding:2px 6px;font-size:12px}.book-desc{font-size:13px;color:var(--text-muted);white-space:pre-line;max-height:4.6em;overflow:hidden;margin:0}.book-desc-open{max-height:none}.book-desc-toggle{align-self:flex-start;padding:0;background:none;border:none;color:var(--accent);font-size:12px}.book-desc-toggle:hover:not(:disabled){border:none;text-decoration:underline}.book-actions{display:flex;flex-wrap:wrap;gap:6px}.book-actions button,.book-actions a.btn{display:inline-flex;align-items:center;gap:6px}a.btn{font:inherit;color:var(--text);background:var(--bg-hover);border:1px solid var(--border);border-radius:4px;padding:5px 12px}a.btn:hover{border-color:var(--accent);text-decoration:none}a.btn-primary{background:var(--accent);border-color:var(--accent);color:#10131a;font-weight:600}.tag-chips{display:flex;flex-wrap:wrap;gap:4px}.tag-chip{font-size:11px;font-family:var(--font-mono);padding:1px 7px;border-radius:999px;border:1px solid var(--border);color:var(--text-muted)}a.tag-chip:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px 0 8px;flex-wrap:wrap}.section-title{margin:0;font-size:15px}.section-head-actions{display:flex;gap:6px;flex-wrap:wrap}.ch-row{padding:5px 10px;gap:8px}.ch-num{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);width:64px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-title a{color:inherit}.ch-read .ch-title{color:var(--text-muted)}.ch-meta{font-size:12px;color:var(--text-muted);white-space:nowrap}.ch-progress{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);width:44px;text-align:right;flex-shrink:0}.ch-progress-done{color:var(--ok)}.ch-current{border-color:var(--accent)}.reader{position:fixed;inset:0;background:var(--bg-reader);color:var(--text);overflow:hidden;user-select:none;-webkit-user-select:none}.reader-sepia{background:var(--sepia-bg)}.reader-light{background:var(--light-bg)}.reader-top,.reader-bottom{position:absolute;left:0;right:0;z-index:5;display:flex;align-items:center;gap:8px;height:var(--reader-bar-h);padding:0 10px;background:var(--bg-panel);transition:opacity .18s,transform .18s}.reader-top{top:0;border-bottom:1px solid var(--border)}.reader-bottom{bottom:0;border-top:1px solid var(--border);height:calc(var(--reader-bar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}.reader-ui-hidden .reader-top{opacity:0;transform:translateY(-100%);pointer-events:none}.reader-ui-hidden .reader-bottom{opacity:0;transform:translateY(100%);pointer-events:none}.reader-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.reader-title strong{font-weight:600}.reader-title .muted{font-size:12px}.reader-top select{max-width:38vw;font-size:12px;padding:3px 6px}.reader-top .icon-btn,.reader-bottom .icon-btn{display:inline-flex;align-items:center;padding:5px 6px}.reader-top a.icon-btn{color:var(--text-muted)}.reader-top a.icon-btn:hover{color:var(--text);background:var(--bg-hover);text-decoration:none}.reader-counter{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);white-space:nowrap;min-width:64px;text-align:center}.reader-slider{flex:1;accent-color:var(--accent);min-width:0}.reader-slider-rtl{direction:rtl}.reader-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.reader-spread{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.reader-img{display:block;object-fit:contain}.fit-height .reader-img{max-height:100%;max-width:100%;width:auto;height:auto}.fit-height .reader-spread-double .reader-img{max-width:50%}.fit-width .reader-stage{overflow-y:auto;align-items:flex-start}.fit-width .reader-spread{height:auto;align-items:flex-start}.fit-width .reader-img{width:100%;height:auto;max-width:none}.fit-width .reader-spread-double .reader-img{width:50%}.fit-original .reader-stage{overflow:auto;align-items:flex-start;justify-content:flex-start}.fit-original .reader-spread{width:auto;height:auto;min-width:100%;min-height:100%;align-items:flex-start}.fit-original .reader-img{width:auto;height:auto;max-width:none}.reader-img-loading{opacity:.4}.reader-zones{position:absolute;inset:0;z-index:3;display:flex}.reader-zone{flex:1;cursor:pointer}.reader-zone-center{flex:1.2;cursor:default}.reader-webtoon{position:absolute;inset:0;overflow-y:auto;display:flex;flex-direction:column;align-items:center}.reader-webtoon img{display:block;width:min(100%,900px);height:auto;min-height:40vh;background:var(--bg-panel)}.reader-status{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text-muted);z-index:2;padding:20px;text-align:center}.reader-status .error-text{max-width:480px}.reader-menu{position:absolute;top:calc(var(--reader-bar-h) + 4px);right:8px;z-index:6;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:10px;min-width:250px;max-width:calc(100vw - 16px);box-shadow:0 4px 14px #0006}.reader-menu-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--text-muted)}.seg{display:inline-flex;border:1px solid var(--border);border-radius:4px;overflow:hidden}.seg button{border:none;border-radius:0;background:transparent;padding:3px 9px;font-size:12px;color:var(--text-muted)}.seg button:hover:not(:disabled){color:var(--text);border:none}.seg .seg-active{background:var(--bg-hover);color:var(--text)}.reader-end{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;background:#0009}.reader-end-panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:16px 20px;display:flex;flex-direction:column;gap:10px;align-items:center;max-width:90vw}.reader-end-panel p{margin:0}.reader-end-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.epub-frame{position:absolute;top:var(--reader-bar-h);bottom:calc(var(--reader-bar-h) + env(safe-area-inset-bottom));left:0;right:0}.epub-edge{position:absolute;top:var(--reader-bar-h);bottom:calc(var(--reader-bar-h) + env(safe-area-inset-bottom));width:8%;min-width:28px;z-index:3;cursor:pointer}.epub-edge-left{left:0}.epub-edge-right{right:0}.epub-toc{position:absolute;top:var(--reader-bar-h);bottom:calc(var(--reader-bar-h) + env(safe-area-inset-bottom));right:0;width:min(85vw,320px);z-index:6;background:var(--bg-panel);border-left:1px solid var(--border);overflow-y:auto;padding:8px;color:var(--text)}.epub-toc a{display:block;padding:5px 8px;border-radius:3px;color:var(--text);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.epub-toc a:hover{background:var(--bg-hover);text-decoration:none}.epub-toc .toc-sub{padding-left:14px}.epub-toc-empty{padding:8px}.pdf-stage{position:absolute;top:var(--reader-bar-h);bottom:calc(var(--reader-bar-h) + env(safe-area-inset-bottom));left:0;right:0;overflow:auto;display:flex;justify-content:center;align-items:flex-start}.pdf-stage canvas{display:block;margin:0 auto}.pdf-zones{position:absolute;top:var(--reader-bar-h);bottom:calc(var(--reader-bar-h) + env(safe-area-inset-bottom));left:0;right:0;z-index:3;display:flex;pointer-events:none}.pdf-zones .reader-zone{pointer-events:auto;flex:0 0 15%}.pdf-zones .reader-zone-center{flex:1;pointer-events:none}.search-form{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.search-form input[type=search]{flex:1;min-width:180px}.search-more{display:flex;justify-content:center;gap:8px;margin-top:16px}.search-hint{margin:0 0 12px;font-size:13px}.dl-row{padding:6px 10px;gap:10px}.dl-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dl-title .muted{font-size:12px}.dl-progress{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);width:60px;text-align:right;flex-shrink:0}.dl-bar{width:90px;height:4px;background:var(--bg);border:1px solid var(--border);border-radius:2px;overflow:hidden;flex-shrink:0}.dl-bar>span{display:block;height:100%;background:var(--accent)}.dl-error{font-size:12px;color:var(--err);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.settings-form{display:flex;flex-direction:column;gap:12px;max-width:560px}.check{display:flex;gap:8px;align-items:center;cursor:pointer}.check input{accent-color:var(--accent)}.field-help{font-size:12px;color:var(--text-muted);margin:0}.about-body{display:flex;flex-direction:column;gap:10px;max-width:560px;line-height:1.6}.about-body h2{font-size:15px;margin:12px 0 0}.about-body code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-panel);border:1px solid var(--border);border-radius:3px;padding:0 4px}.src-row{padding:6px 10px}.src-url{color:var(--text-muted);font-size:12px;font-family:var(--font-mono);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-shared{color:var(--accent);border-color:var(--accent);white-space:nowrap}.share-members{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.share-member{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:6px}.share-member-name{font-weight:600}.share-member-actions{display:flex;align-items:center;gap:6px}.share-suggestions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.share-suggestion{padding:4px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg)}.share-suggestion:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.share-hint{margin-top:12px;font-size:12px}.share-add-row{display:flex;gap:6px}.share-add-row input{flex:1;min-width:0}.share-role{padding:4px 6px;font-size:13px}.upload-drop{border:1px dashed var(--border);border-radius:4px;padding:18px 12px;text-align:center;color:var(--text-muted);cursor:pointer;font-size:13px}.upload-drop:hover,.upload-drop-over{border-color:var(--accent);color:var(--text)}.upload-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;max-height:30vh;overflow-y:auto;font-size:13px}.upload-list li{display:flex;justify-content:space-between;gap:8px;align-items:center}.upload-list li>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-bar{height:6px;background:var(--bg);border:1px solid var(--border);border-radius:3px;overflow:hidden}.upload-bar>span{display:block;height:100%;background:var(--accent);transition:width .15s}.import-errors{margin:0;padding-left:18px;font-size:13px}.palette-icon{width:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted)}@media(max-width:720px){.mobile-nav{display:flex;position:fixed;left:0;right:0;bottom:0;height:calc(50px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);background:var(--bg-panel);z-index:35}.mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-muted);font-size:10px}.mobile-nav-item:hover{text-decoration:none}.mobile-nav-active{color:var(--accent)}.layout-body{padding-bottom:calc(50px + env(safe-area-inset-bottom))}.page{padding:14px 12px}.book-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px 8px}.book-head{flex-direction:column;align-items:center;text-align:center;gap:12px}.book-head-cover{width:130px}.book-facts,.book-actions,.tag-chips{justify-content:center}.book-desc-toggle{align-self:center}.ch-meta,.dl-bar{display:none}.ch-num{width:46px}.lib-toolbar select{max-width:110px}.reader-top select{max-width:30vw}.reader-counter{min-width:52px}}@media(max-width:720px){.book-desc{text-align:left}}@media(max-width:720px){.ch-secondary{display:none}}
