.library-boot{background:var(--bg-color);justify-content:center;align-items:center;min-height:100vh;display:flex}.library{background:var(--bg-color);min-height:100vh;color:var(--text-color);font-family:var(--font-ui)}.library-dragover{outline:3px dashed var(--color-primary);outline-offset:-12px}.library-header{z-index:5;justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-6);background:var(--toolbar-bg);border-bottom:1px solid var(--toolbar-border);flex-wrap:wrap;display:flex;position:sticky;top:0}.library-app-name{font-family:var(--font-reading);font-size:var(--text-3xl);letter-spacing:-.03em;margin:0;font-weight:700;line-height:1.1}.library-tagline{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--text-secondary)}.library-actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;flex:320px;justify-content:flex-end;display:flex}.library-search{max-width:420px;padding:var(--space-3) var(--space-4);font:inherit;font-size:var(--text-base);color:var(--text-color);background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-full);outline:none;flex:220px}.library-search:focus{border-color:var(--border-focus);box-shadow:var(--focus-ring)}.library-own-btn{padding:var(--space-3) var(--space-5);font:inherit;font-size:var(--text-sm);color:var(--color-primary);border:1.5px solid var(--color-primary);border-radius:var(--radius-full);cursor:pointer;transition:background var(--transition-fast);background:0 0;font-weight:600}.library-own-btn:hover:not(:disabled){background:var(--color-primary-subtle)}.library-own-btn:disabled{opacity:.5;cursor:default}.library-error{margin:var(--space-4) var(--space-6) 0;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-danger);background:var(--color-danger-subtle);border-radius:var(--radius-sm)}.library-main{padding:var(--space-4) var(--space-6) var(--space-10);max-width:1400px;margin:0 auto}.library-section+.library-section{margin-top:var(--space-8)}.library-section-title{margin:var(--space-4) 0 var(--space-4);font-size:var(--text-lg);color:var(--text-secondary);font-weight:600}.library-empty{color:var(--text-muted);font-size:var(--text-base)}.library-grid{gap:var(--space-6) var(--space-5);grid-template-columns:repeat(auto-fill,minmax(132px,1fr));display:grid}.library-card{gap:var(--space-1);text-align:left;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;min-width:0;padding:0;display:flex}.library-card:disabled{cursor:default}.library-card:focus-visible{outline:none}.library-card:focus-visible .library-cover{box-shadow:var(--focus-ring), var(--page-shadow)}.library-cover{aspect-ratio:2/3;border-radius:var(--radius-sm);background:var(--bg-recessed);box-shadow:var(--page-shadow);transition:transform var(--transition-fast), box-shadow var(--transition-fast);margin-bottom:var(--space-1);position:relative;overflow:hidden}.library-card:hover:not(:disabled) .library-cover{transform:translateY(-3px);box-shadow:0 8px 24px #5a46322e}.library-cover-img{object-fit:cover;width:100%;height:100%;filter:var(--image-filter);display:block}.library-cover-placeholder{justify-content:center;gap:var(--space-2);width:100%;height:100%;padding:var(--space-3);box-sizing:border-box;color:#fff;text-align:center;flex-direction:column;display:flex}.library-cover-placeholder-title{font-family:var(--font-reading);font-size:var(--text-base);-webkit-line-clamp:5;-webkit-box-orient:vertical;font-weight:700;line-height:1.25;display:-webkit-box;overflow:hidden}.library-cover-placeholder-author{font-size:var(--text-xs);opacity:.85}.library-cover-progress{justify-content:center;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:#fff;background:#2c241999;flex-direction:column;font-weight:600;display:flex;position:absolute;inset:0}.library-card-title{font-size:var(--text-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.library-card-author{font-size:var(--text-xs);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.library-notice{margin:var(--space-4) var(--space-6) 0;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--text-color);background:var(--color-accent-subtle);border-radius:var(--radius-sm)}.library-section-head{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.library-filters{gap:var(--space-1);background:var(--bg-recessed);border-radius:var(--radius-full);padding:3px;display:flex}.library-filter{padding:var(--space-1) var(--space-4);font:inherit;font-size:var(--text-sm);color:var(--text-secondary);border-radius:var(--radius-full);cursor:pointer;background:0 0;border:none}.library-filter.active{color:var(--text-color);background:var(--bg-elevated);font-weight:600;box-shadow:0 1px 3px #5a463226}.library-paid-badge{top:var(--space-2);right:var(--space-2);padding:2px var(--space-2);font-size:var(--text-xs);color:#fff;border-radius:var(--radius-full);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#2c2419bf;align-items:center;gap:4px;font-weight:700;display:inline-flex;position:absolute}.library-paid-badge.owned{background:#2e7d50e0}.unlock-overlay{z-index:50;padding:var(--space-4);background:var(--overlay-bg);justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.unlock-dialog{width:100%;max-width:440px;max-height:calc(100vh - 2 * var(--space-4));padding:var(--space-6);color:var(--text-color);background:var(--bg-elevated);border-radius:var(--radius-lg);box-shadow:var(--modal-shadow);font-family:var(--font-ui);box-sizing:border-box;position:relative;overflow-y:auto}.unlock-close{top:var(--space-3);right:var(--space-3);padding:var(--space-1);color:var(--text-secondary);border-radius:var(--radius-full);cursor:pointer;background:0 0;border:none;display:flex;position:absolute}.unlock-close:hover:not(:disabled){background:var(--bg-recessed)}.unlock-book{gap:var(--space-4);padding-right:var(--space-6);align-items:flex-start;display:flex}.unlock-cover{aspect-ratio:2/3;border-radius:var(--radius-sm);background:var(--bg-recessed);box-shadow:var(--page-shadow);flex:0 0 88px;overflow:hidden}.unlock-cover .library-cover-placeholder-title{font-size:var(--text-xs)}.unlock-title{font-family:var(--font-reading);font-size:var(--text-xl);margin:0;font-weight:700;line-height:1.25}.unlock-author{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--text-secondary)}.unlock-price{margin:var(--space-2) 0 0;font-size:var(--text-lg);font-weight:700}.unlock-message{margin:var(--space-4) 0 0;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);background:var(--color-accent-subtle);border-radius:var(--radius-sm)}.unlock-buy-block{margin-top:var(--space-5)}.unlock-buy{padding:var(--space-3) var(--space-5);font-size:var(--text-base);text-align:center;color:var(--text-on-primary);background:var(--color-primary);border-radius:var(--radius-full);transition:background var(--transition-fast);font-weight:700;text-decoration:none;display:block}.unlock-buy:hover{background:var(--color-primary-hover)}.unlock-hint{margin:var(--space-2) 0 0;font-size:var(--text-xs);color:var(--text-secondary);line-height:1.5}.unlock-form{margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--border-color)}.unlock-label{margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:600;display:block}.unlock-row{gap:var(--space-2);display:flex}.unlock-input{min-width:0;padding:var(--space-3) var(--space-4);font:inherit;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:var(--text-sm);color:var(--text-color);background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--radius-sm);outline:none;flex:1}.unlock-input:focus{border-color:var(--border-focus);box-shadow:var(--focus-ring)}.unlock-submit{padding:var(--space-3) var(--space-5);font:inherit;font-size:var(--text-sm);color:var(--color-primary);border:1.5px solid var(--color-primary);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;font-weight:700}.unlock-submit:hover:not(:disabled){background:var(--color-primary-subtle)}.unlock-submit:disabled{opacity:.5;cursor:default}.unlock-error{margin:var(--space-3) 0 0;font-size:var(--text-sm);color:var(--color-danger)}@media (width<=600px){.library-header{padding:var(--space-4)}.library-main{padding:var(--space-3) var(--space-4) var(--space-8)}.library-grid{gap:var(--space-5) var(--space-3);grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.library-app-name{font-size:var(--text-2xl)}}:root{--color-primary:#c4924a;--color-primary-hover:#b07e38;--color-primary-light:#fdf5ea;--color-primary-subtle:#c4924a1a;--color-secondary:#7a6b58;--color-secondary-hover:#6a5b48;--color-tertiary:#a0783c;--color-tertiary-subtle:#a0783c1a;--color-accent:#d4a574;--color-accent-subtle:#d4a57426;--color-accent-bg:#d4a57440;--color-success:#5a8a4a;--color-danger:#c44545;--color-danger-subtle:#c445451a;--bg-color:#faf6f0;--bg-elevated:#fff;--bg-recessed:#f0ebe3;--text-color:#2c2419;--text-secondary:#7a6b58;--text-muted:#a09080;--text-on-primary:#fff;--page-color:#fff;--page-shadow:0 2px 20px #5a46321a, 0 0 1px #5a46320f;--toolbar-bg:#faf6f0;--toolbar-border:#e8e0d4;--panel-bg:#faf6f0;--panel-shadow:0 4px 24px #5a46321f;--border-color:#e8e0d4;--border-focus:var(--color-primary);--image-filter:none;--hover-bg:#5a46320d;--active-bg:#c4924a1a;--focus-ring:0 0 0 2px #c4924a66;--overlay-bg:#2c241966;--modal-bg:#fff;--modal-shadow:0 16px 48px #2c241933, 0 0 1px #2c24191a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-reading:Georgia, "Times New Roman", serif;--font-mono:"SF Mono", "Cascadia Code", "Consolas", monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.9rem;--text-lg:1rem;--text-xl:1.125rem;--text-2xl:1.5rem;--text-3xl:2rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease}[data-theme=dark]{--color-primary:#d4a574;--color-primary-hover:#e0b588;--color-primary-light:#2a2318;--color-primary-subtle:#d4a5741f;--color-secondary:#8a8078;--color-secondary-hover:#9a908a;--color-tertiary:#c4924a;--color-tertiary-subtle:#c4924a1f;--color-accent:#d4a574;--color-accent-subtle:#d4a57426;--color-accent-bg:#d4a57433;--color-success:#6aaf5c;--color-danger:#e06060;--color-danger-subtle:#e060601f;--bg-color:#1c1c1e;--bg-elevated:#2c2c2e;--bg-recessed:#141414;--text-color:#e8e0d4;--text-secondary:#a09890;--text-muted:#6a6058;--text-on-primary:#1c1c1e;--page-color:#242424;--page-shadow:0 2px 20px #0006, 0 0 1px #0003;--toolbar-bg:#1c1c1e;--toolbar-border:#3a3a3c;--panel-bg:#2c2c2e;--panel-shadow:0 4px 24px #0006;--border-color:#3a3a3c;--image-filter:none;--hover-bg:#ffffff0f;--active-bg:#d4a5741f;--focus-ring:0 0 0 2px #d4a57466;--overlay-bg:#0009;--modal-bg:#2c2c2e;--modal-shadow:0 16px 48px #00000080, 0 0 1px #0000004d}[data-theme=sepia]{--color-primary:#b07e38;--color-primary-hover:#9a6e28;--color-primary-light:#f5edd5;--color-primary-subtle:#b07e381a;--color-secondary:#7a6b58;--color-secondary-hover:#6a5b48;--color-tertiary:#a0783c;--color-tertiary-subtle:#a0783c1a;--color-accent:#c4924a;--color-accent-subtle:#c4924a1f;--color-accent-bg:#c4924a40;--color-success:#5a8a4a;--color-danger:#b05050;--color-danger-subtle:#b050501a;--bg-color:#f4ecd8;--bg-elevated:#faf4e8;--bg-recessed:#ede5d0;--text-color:#3d2e1e;--text-secondary:#7a6b58;--text-muted:#a09080;--text-on-primary:#fff;--page-color:#faf4e8;--page-shadow:0 2px 16px #5a46321f, 0 0 1px #5a463214;--toolbar-bg:#f4ecd8;--toolbar-border:#d8ceb8;--panel-bg:#faf4e8;--panel-shadow:0 4px 24px #5a46321f;--border-color:#d8ceb8;--image-filter:sepia(25%) saturate(85%) brightness(98%);--hover-bg:#5a46320f;--active-bg:#b07e381a;--focus-ring:0 0 0 2px #b07e3866;--overlay-bg:#3d2e1e66;--modal-bg:#faf4e8;--modal-shadow:0 16px 48px #5a463233, 0 0 1px #5a46321a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{font-family:var(--font-ui);font-size:var(--text-base);background-color:var(--bg-color);color:var(--text-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-slow), color var(--transition-slow);line-height:1.5;overflow:hidden}button{cursor:pointer;color:inherit;font:inherit;background:0 0;border:none;line-height:1}button:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-sm);outline:none}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}select:focus-visible,input:focus-visible{box-shadow:var(--focus-ring);outline:none}.uploader-container{height:100vh;padding:var(--space-6);background:#f8f5f0;flex-direction:column;justify-content:center;align-items:center;transition:border .2s;display:flex;position:relative;overflow:hidden}.uploader-container.uploader-dragover{outline:3px dashed var(--color-primary);outline-offset:-12px;background:#f0eae0}.uploader-content{text-align:center;align-items:center;gap:var(--space-4);flex-direction:column;flex:1;justify-content:center;width:100%;max-width:360px;display:flex}.uploader-book-icon{width:140px;height:120px;margin-bottom:var(--space-2);filter:drop-shadow(0 8px 24px #c4924a4d)}.uploader-book-icon svg{width:100%;height:100%}.uploader-app-name{color:#2c1a0e;letter-spacing:-.03em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:3rem;font-weight:700;line-height:1}.uploader-tagline{font-size:var(--text-base);color:#9a8a7a;margin:0;line-height:1.5}.uploader-cta-btn{width:100%;max-width:280px;padding:var(--space-4) var(--space-6);background:var(--color-primary);color:#fff;font-size:var(--text-lg);border-radius:var(--radius-full);cursor:pointer;transition:all var(--transition-fast);margin-top:var(--space-4);border:none;font-weight:600;display:block;box-shadow:0 4px 16px #c4924a59}.uploader-cta-btn:hover{background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:0 6px 20px #c4924a73}.uploader-cta-btn:active{transform:translateY(0)}.uploader-drop-hint{font-size:var(--text-sm);color:#9a8a7a;margin-top:var(--space-1)}.uploader-loading{align-items:center;gap:var(--space-3);color:var(--color-secondary);font-size:var(--text-base);margin-top:var(--space-4);flex-direction:column;display:flex}.uploader-spinner{border:3px solid #c4924a33;border-top-color:var(--color-primary);border-radius:50%;width:36px;height:36px;animation:.9s linear infinite spin}.uploader-error{margin-top:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--color-danger);font-size:var(--text-sm);text-align:center;background:#c4454514;border:1px solid #c4454540;max-width:280px}.uploader-terms{bottom:var(--space-5);text-align:center;font-size:var(--text-xs);color:#b0a090;position:absolute;left:0;right:0}.reader-layout{background-color:var(--bg-color);flex-direction:column;height:100vh;display:flex;overflow:hidden}.reader-body{flex:1;display:flex;position:relative;overflow:hidden}.reader-main{padding:var(--space-4);flex:1;justify-content:center;align-items:center;display:flex;overflow:hidden}.flipbook-container{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.flipbook-empty{justify-content:center;align-items:center;gap:var(--space-3);height:400px;color:var(--text-muted);font-size:var(--text-lg);flex-direction:column;display:flex}.flipbook-empty:before{content:"";border:3px solid var(--border-color);border-top-color:var(--color-primary);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.flipbook{box-shadow:var(--page-shadow);border-radius:var(--radius-sm)}.flipbook-tts-overlay{z-index:10;pointer-events:all;padding:var(--space-3);justify-content:flex-start;align-items:flex-start;display:flex;position:absolute;inset:0}.flipbook-tts-badge{border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--color-primary);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);letter-spacing:.02em;transition:all var(--transition-fast);background:#c4924a26;border:1px solid #c4924a4d;align-items:center;gap:5px;padding:4px 10px;font-weight:600;display:inline-flex}.flipbook-tts-badge.paused{color:var(--text-muted);background:#5a46321a;border-color:#5a463233}.flipbook-tts-dot{background:var(--color-primary);border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:1.4s ease-in-out infinite ttsPulse}@keyframes ttsPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.page{background-color:var(--page-color);color:var(--text-color);transition:background-color var(--transition-slow);filter:brightness(var(--page-brightness,100%));position:relative;overflow:hidden}.page-inner{word-wrap:break-word;overflow-wrap:break-word;width:100%;height:calc(100% - 28px);overflow:hidden}.page-inner img{border-radius:var(--radius-sm);object-fit:contain;max-width:100%;height:auto;max-height:90%;filter:var(--image-filter);transition:filter var(--transition-slow);margin:.5em auto;display:block}.page-inner svg{width:auto;max-width:100%;height:auto;max-height:100%;filter:var(--image-filter);transition:filter var(--transition-slow);margin:0 auto;display:block}.page-inner .svg-page div,.page-inner .svg-page svg{width:100%;max-width:100%;height:100%;max-height:100%}.page-inner figure{text-align:center;margin:.8em 0}.page-inner figcaption{color:var(--text-muted);font-size:.85em;font-style:italic;font-family:var(--font-ui);margin-top:.4em}.page-inner>img:only-child,.page-inner>div>img:only-child,.page-inner>figure:only-child img{max-height:95%;margin:auto}.page-inner h1{color:var(--text-color);letter-spacing:-.01em;margin:1em 0 .5em;font-size:1.6em;font-weight:700;line-height:1.25}.page-inner h2{color:var(--color-secondary);margin:.9em 0 .4em;font-size:1.35em;font-weight:600;line-height:1.3}.page-inner h3,.page-inner h4,.page-inner h5,.page-inner h6{color:var(--color-secondary);margin:.8em 0 .3em;font-weight:600;line-height:1.35}.page-inner p{-webkit-hyphens:auto;hyphens:auto;margin:.6em 0}.page-inner blockquote{border-left:3px solid var(--color-primary);padding-left:var(--space-4);color:var(--text-secondary);margin:.8em 0;font-style:italic}.page-inner a{color:var(--color-primary);text-underline-offset:2px;text-decoration:underline;text-decoration-thickness:1px}.page-inner code{font-family:var(--font-mono);background:var(--bg-recessed);border-radius:3px;padding:2px 5px;font-size:.85em}.page-number{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--text-muted);letter-spacing:.04em;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.reader-toolbar{height:52px;padding:0 var(--space-3);background:var(--toolbar-bg);border-bottom:1px solid var(--toolbar-border);z-index:10;flex-shrink:0;align-items:center;display:flex;position:relative}.reader-toolbar-btn{border-radius:var(--radius-full);width:40px;height:40px;color:var(--text-secondary);transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.reader-toolbar-btn:hover{background:var(--hover-bg);color:var(--text-color)}.reader-toolbar-title{text-align:center;padding:0 var(--space-2);flex:1;min-width:0}.reader-toolbar-title span{font-size:var(--text-sm);color:var(--text-color);text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em;font-weight:600;display:block;overflow:hidden}.reader-toolbar-actions{align-items:center;gap:var(--space-1);flex-shrink:0;display:flex}.reader-page-count{top:var(--space-3);right:var(--space-4);font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;letter-spacing:.04em;pointer-events:none;z-index:5;background:var(--bg-color);border-radius:var(--radius-full);border:1px solid var(--border-color);padding:2px 6px;font-weight:500;position:absolute}.bottom-bar{background:var(--toolbar-bg);border-top:1px solid var(--toolbar-border);flex-direction:column;flex-shrink:0;display:flex;position:relative}.bottom-bar-main{height:60px;padding:0 var(--space-2);justify-content:space-around;align-items:center;display:flex}.bottom-bar-btn{border-radius:var(--radius-md);height:52px;transition:all var(--transition-fast);color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;max-width:72px;display:flex}.bottom-bar-btn:hover{background:var(--hover-bg);color:var(--text-color)}.bottom-bar-btn.active{color:var(--color-primary)}.bottom-bar-btn-label{letter-spacing:.03em;text-transform:uppercase;font-size:9px;font-weight:500}.bottom-bar-themes{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-4) var(--space-3);display:flex}.theme-tab{max-width:100px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-sm);transition:all var(--transition-fast);color:var(--text-secondary);text-align:center;border:1.5px solid #0000;flex:1;font-weight:500}.theme-tab:hover{background:var(--hover-bg)}.theme-tab.active{background:var(--color-primary);color:var(--text-on-primary);border-color:var(--color-primary);font-weight:600}.theme-tab-light{color:#2c2419;background:#fff;border-color:#e8e0d4}.theme-tab-dark{color:#e8e0d4;background:#1c1c1e;border-color:#3a3a3c}.theme-tab-sepia{color:#3d2e1e;background:#faf4e8;border-color:#d8ceb8}.brightness-popover{background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:min(320px,90vw);padding:var(--space-4);z-index:30;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 -4px 24px #0000001f}.brightness-popover-header{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-color);margin-bottom:var(--space-3);font-weight:600;display:flex}.brightness-value{font-variant-numeric:tabular-nums;color:var(--color-primary);margin-left:auto}.brightness-slider-row{align-items:center;gap:var(--space-3);color:var(--text-muted);display:flex}.brightness-slider{appearance:none;background:var(--bg-recessed);border-radius:var(--radius-full);cursor:pointer;height:6px;accent-color:var(--color-primary);outline:none;flex:1}.more-popover{bottom:calc(100% + 8px);right:var(--space-4);background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-lg);min-width:180px;padding:var(--space-2) 0;z-index:30;position:absolute;box-shadow:0 -4px 24px #0000001f}.more-popover-item{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--text-color);transition:background var(--transition-fast);text-align:left;display:flex}.more-popover-item:hover{background:var(--hover-bg)}.modal-handle{background:var(--border-color);border-radius:var(--radius-full);width:36px;height:4px;margin:var(--space-3) auto var(--space-1);flex-shrink:0}.font-card-group{gap:var(--space-2);display:flex}.font-card{padding:var(--space-3) var(--space-2) var(--space-2);border:1.5px solid var(--border-color);border-radius:var(--radius-md);transition:all var(--transition-fast);cursor:pointer;background:0 0;flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.font-card:hover{border-color:var(--color-primary)}.font-card.active{border-color:var(--color-primary);background:var(--color-primary-subtle)}.font-card-preview{color:var(--text-color);font-size:22px;font-weight:500;line-height:1.1}.font-card-label{font-size:var(--text-xs);color:var(--text-color);font-weight:600}.font-card-sub{color:var(--text-muted);font-size:9px}.settings-slider-track{align-items:center;gap:var(--space-3);display:flex}.settings-slider-track input[type=range]{flex:1}.settings-slider-end-label{color:var(--text-secondary);flex-shrink:0;line-height:1}.settings-overlay{background:var(--overlay-bg);z-index:50;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.settings-modal{background:var(--modal-bg);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:420px;max-height:85vh;box-shadow:var(--modal-shadow);padding:0 var(--space-5) var(--space-5);animation:.3s slideUp;overflow-y:auto}.settings-modal-header{padding:var(--space-4) 0 var(--space-3);background:var(--modal-bg);z-index:1;justify-content:center;align-items:center;display:flex;position:sticky;top:0}.settings-modal-title{font-size:var(--text-xl);color:var(--text-color);letter-spacing:-.01em;font-weight:700}.settings-section{margin-bottom:var(--space-5)}.settings-section-title{font-size:var(--text-sm);color:var(--text-color);margin-bottom:var(--space-3);font-weight:600}.pill-group{gap:var(--space-2);display:flex}.pill-btn{padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-sm);border:1.5px solid var(--border-color);transition:all var(--transition-fast);text-align:center;color:var(--text-secondary);background:0 0;flex:1;font-weight:500}.pill-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.pill-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:var(--text-on-primary);font-weight:600}.settings-slider{gap:var(--space-2);flex-direction:column;display:flex}.settings-slider-header{font-size:var(--text-sm);color:var(--text-color);justify-content:space-between;align-items:center;font-weight:600;display:flex}.settings-slider-value{color:var(--text-secondary);font-variant-numeric:tabular-nums;font-weight:600}.settings-slider input[type=range]{appearance:none;background:var(--bg-recessed);border-radius:var(--radius-full);cursor:pointer;outline:none;width:100%;height:6px}.settings-slider input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--color-primary);cursor:pointer;border-radius:50%;width:20px;height:20px;box-shadow:0 1px 4px #00000026}.settings-slider input[type=range]::-moz-range-thumb{background:var(--color-primary);cursor:pointer;border:none;border-radius:50%;width:20px;height:20px;box-shadow:0 1px 4px #00000026}.alignment-group{gap:var(--space-2);display:flex}.alignment-btn{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1.5px solid var(--border-color);color:var(--text-secondary);transition:all var(--transition-fast);flex:1;justify-content:center;align-items:center;display:flex}.alignment-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.alignment-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:var(--text-on-primary)}.settings-reset{text-align:center;width:100%;padding:var(--space-2);font-size:var(--text-sm);color:var(--text-muted);transition:color var(--transition-fast);margin-bottom:var(--space-3);display:block}.settings-reset:hover{color:var(--color-primary)}.settings-done-btn{width:100%;padding:var(--space-3);border-radius:var(--radius-full);background:var(--color-primary);color:var(--text-on-primary);font-size:var(--text-base);transition:all var(--transition-fast);font-weight:600}.settings-done-btn:hover{background:var(--color-primary-hover);box-shadow:0 4px 12px #c4924a4d}.tts-controls{gap:var(--space-4);flex-direction:column;display:flex}.tts-error{margin:0 0 var(--space-4);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-danger);background:var(--color-danger-subtle);border-radius:var(--radius-sm)}.tts-engine-selector{gap:var(--space-1);background:var(--bg-recessed);border-radius:var(--radius-full);padding:3px;display:flex}.tts-engine-btn{justify-content:center;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--text-muted);transition:all var(--transition-fast);white-space:nowrap;flex:1;font-weight:500;display:flex}.tts-engine-btn:hover:not(:disabled){color:var(--text-color)}.tts-engine-btn.active{background:var(--bg-elevated);color:var(--color-primary);font-weight:600;box-shadow:0 1px 3px #00000014}.tts-engine-btn:disabled{opacity:.5;cursor:not-allowed}.tts-spinner{animation:1.5s linear infinite spin}.tts-bar{background:var(--bg-elevated);border-top:1px solid var(--border-color);z-index:40;padding:var(--space-2) var(--space-5) var(--space-4);animation:.25s slideUp;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 20px #00000014}[data-theme=dark] .tts-bar{background:#1c1c1e;border-color:#3a3a3c}.tts-bar-close{top:var(--space-2);right:var(--space-3);border-radius:var(--radius-full);width:28px;height:28px;color:var(--text-muted);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;position:absolute}.tts-bar-close:hover{background:var(--hover-bg);color:var(--text-color)}.tts-progress{align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.tts-progress-bar{background:var(--bg-recessed);border-radius:var(--radius-full);flex:1;height:3px;overflow:hidden}.tts-progress-fill{background:var(--color-primary);border-radius:var(--radius-full);height:100%;transition:width .4s}.tts-progress-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:center;min-width:28px}.tts-playback{justify-content:center;align-items:center;gap:var(--space-4);display:flex}.tts-btn-skip{border-radius:var(--radius-full);width:44px;height:44px;color:var(--text-secondary);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;position:relative}.tts-btn-skip:hover{background:var(--hover-bg);color:var(--text-color)}.tts-btn-skip-label{pointer-events:none;color:var(--text-muted);font-size:8px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-60%)}.tts-btn-play{border-radius:var(--radius-full);background:var(--color-primary);color:#fff;width:56px;height:56px;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;box-shadow:0 2px 12px #c4924a59}.tts-btn-play:hover{background:var(--color-primary-hover);transform:scale(1.05)}.tts-speed-btn{font-size:var(--text-sm);color:var(--text-secondary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:all var(--transition-fast);font-variant-numeric:tabular-nums;text-align:center;min-width:40px;font-weight:600}.tts-speed-btn:hover{background:var(--hover-bg);color:var(--text-color)}.tts-player-modal{max-height:92vh}.tts-player-header{padding:0 0 var(--space-4);justify-content:space-between;align-items:center;display:flex}.tts-player-header-title{font-size:var(--text-base);color:var(--text-muted);letter-spacing:.02em;font-weight:600}.tts-player-close{border-radius:var(--radius-full);width:36px;height:36px;color:var(--text-muted);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.tts-player-close:hover{background:var(--hover-bg);color:var(--text-color)}.tts-player-book{align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.tts-player-cover{border-radius:var(--radius-sm);background:var(--bg-recessed);flex-shrink:0;justify-content:center;align-items:center;width:64px;height:88px;display:flex;overflow:hidden;box-shadow:0 4px 12px #0000001f}.tts-player-cover-img{object-fit:cover;width:100%;height:100%}.tts-player-cover-placeholder{color:#fff9;background:linear-gradient(135deg,#c4924a,#8b5e2a);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.tts-player-book-info{flex:1;min-width:0}.tts-player-now-playing{font-size:var(--text-xs);color:var(--color-primary);letter-spacing:.06em;text-transform:uppercase;margin-bottom:var(--space-1);font-weight:600;display:inline-block}.tts-player-title{font-size:var(--text-lg);color:var(--text-color);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.tts-player-chapter{font-size:var(--text-xs);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}.tts-player-waveform{height:48px;margin-bottom:var(--space-3);padding:0 var(--space-2);justify-content:center;align-items:center;gap:3px;display:flex}.tts-waveform-bar{background:var(--color-primary);opacity:.5;border-radius:2px;width:3px;min-height:4px;transition:height .3s}.tts-waveform-bar.animating{opacity:.85;animation:1.2s ease-in-out infinite alternate waveform}@keyframes waveform{0%{opacity:.5;transform:scaleY(.4)}to{opacity:.9;transform:scaleY(1)}}.tts-player-progress-row{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.tts-player-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:center;min-width:36px}.tts-player-progress-bar{background:var(--bg-recessed);border-radius:var(--radius-full);flex:1;height:4px;overflow:hidden}.tts-player-progress-fill{background:var(--color-primary);border-radius:var(--radius-full);height:100%;transition:width .4s}.tts-player-controls{justify-content:center;align-items:center;gap:var(--space-6);margin-bottom:var(--space-5);display:flex}.tts-player-skip{border-radius:var(--radius-full);width:48px;height:48px;color:var(--text-secondary);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.tts-player-skip:hover{background:var(--hover-bg);color:var(--text-color)}.tts-player-play-btn{border-radius:var(--radius-full);background:var(--color-primary);color:#fff;width:72px;height:72px;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;box-shadow:0 4px 20px #c4924a73}.tts-player-play-btn:hover{background:var(--color-primary-hover);transform:scale(1.05)}.tts-player-pills{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;justify-content:center;display:flex}.tts-player-pill{align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);border:1.5px solid var(--border-color);font-size:var(--text-sm);color:var(--text-secondary);transition:all var(--transition-fast);background:0 0;font-weight:500;display:flex}.tts-player-pill:hover{border-color:var(--color-primary);color:var(--color-primary)}.tts-player-pill.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}.tts-voice-list{border:1px solid var(--border-color);border-radius:var(--radius-md);margin-bottom:var(--space-4);max-height:200px;overflow:hidden auto}.tts-voice-item{width:100%;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);transition:background var(--transition-fast);text-align:left;justify-content:space-between;align-items:center;display:flex}.tts-voice-item:last-child{border-bottom:none}.tts-voice-item:hover{background:var(--hover-bg)}.tts-voice-item.active{background:var(--color-primary-subtle)}.tts-voice-info{flex-direction:column;gap:1px;display:flex}.tts-voice-name{font-size:var(--text-sm);color:var(--text-color);font-weight:500}.tts-voice-lang{font-size:var(--text-xs);color:var(--text-muted)}.tts-notice{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);background:var(--color-accent-subtle);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--text-secondary);border:1px solid #d4a57433;line-height:1.5;display:flex}.tts-notice code{font-family:var(--font-mono);background:#0000000f;border-radius:3px;padding:1px 4px;font-size:.9em}.toc-panel{background:var(--panel-bg);border-right:1px solid var(--border-color);z-index:20;width:340px;height:100%;box-shadow:var(--panel-shadow);transition:background-color var(--transition-slow);flex-direction:column;display:flex;position:absolute;top:0;left:0}.toc-header{padding:var(--space-4) var(--space-5);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.toc-header h2{font-size:var(--text-2xl);color:var(--text-color);letter-spacing:-.02em;font-weight:700}.toc-header-actions{align-items:center;gap:var(--space-2);display:flex}.toc-close{border-radius:var(--radius-full);width:36px;height:36px;color:var(--text-muted);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.toc-close:hover{background:var(--hover-bg);color:var(--text-color)}.toc-tabs{padding:0 var(--space-5);border-bottom:1px solid var(--border-color);flex-shrink:0;gap:0;display:flex}.toc-tab{padding:var(--space-3) var(--space-2);font-size:var(--text-sm);color:var(--text-muted);transition:all var(--transition-fast);text-align:center;border-bottom:2px solid #0000;flex:1;font-weight:500}.toc-tab:hover{color:var(--text-color)}.toc-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.toc-nav{padding:var(--space-2) 0;scrollbar-width:thin;scrollbar-color:var(--border-color) transparent;flex:1;overflow-y:auto}.toc-nav::-webkit-scrollbar{width:5px}.toc-nav::-webkit-scrollbar-track{background:0 0}.toc-nav::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.toc-list,.toc-sublist{list-style:none}.toc-item{align-items:center;display:flex}.toc-link{padding:var(--space-3) var(--space-5);font-size:var(--text-sm);text-align:left;transition:all var(--transition-fast);color:var(--text-secondary);border-left:3px solid #0000;border-radius:0;flex:1;justify-content:space-between;align-items:center;display:flex}.toc-link:hover{background:var(--hover-bg);color:var(--text-color);border-left-color:var(--color-primary)}.toc-link.active{background:var(--color-accent-bg);color:var(--text-color);border-left-color:var(--color-primary);font-weight:600}.toc-link-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.toc-link-page{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;margin-left:var(--space-3);flex-shrink:0}.toc-part{padding:var(--space-3) var(--space-5);font-size:var(--text-sm);color:var(--text-color);margin-top:var(--space-2);font-weight:700}.toc-empty{padding:var(--space-6) var(--space-5);color:var(--text-muted);font-size:var(--text-sm);text-align:center;line-height:1.6}.toc-search-input{height:36px;padding:0 var(--space-3);border:1.5px solid var(--color-primary);border-radius:var(--radius-full);background:var(--bg-recessed);color:var(--text-color);font-size:var(--text-sm);font-family:var(--font-ui);outline:none;flex:1}.toc-search-input::placeholder{color:var(--text-muted)}.toc-notes-placeholder{padding:var(--space-10) var(--space-5);justify-content:center;align-items:center;gap:var(--space-4);color:var(--text-muted);flex-direction:column;display:flex}.bookmark-add-section{padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--border-color)}.bookmark-add-btn{width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);background:var(--color-primary);color:var(--text-on-primary);font-size:var(--text-sm);transition:all var(--transition-fast);font-weight:600}.bookmark-add-btn:hover{background:var(--color-primary-hover);box-shadow:0 2px 8px #c4924a40}.bookmark-item{align-items:center;display:flex}.bookmark-remove{border-radius:var(--radius-full);width:32px;height:32px;font-size:var(--text-xl);color:var(--text-muted);margin-right:var(--space-2);transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.bookmark-remove:hover{background:var(--color-danger-subtle);color:var(--color-danger)}
