:root{--ui-font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--read-font: Georgia, "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--ui-font);background:#f2f0eb;color:#333;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.btn-primary{background:#4a7bd0;color:#fff;padding:8px 18px;border-radius:8px;font-size:14px;transition:background .15s}.btn-primary:hover{background:#3d6abf}.btn-ghost{padding:7px 14px;border-radius:8px;font-size:13px;color:#666;border:1px solid #d8d4cc;background:transparent;transition:all .15s}.btn-ghost:hover{border-color:#b8b2a6;color:#333}.dialog-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:200;animation:fadein .15s}.dialog{background:#fff;border-radius:14px;padding:22px 24px;width:min(440px,calc(100vw - 48px));box-shadow:0 12px 40px #0000002e}.dialog h3{margin:0 0 6px;font-size:17px}.dialog-hint{margin:0 0 14px;font-size:13px;color:#999}.dialog input,.dialog textarea{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:8px;font-size:16px;outline:none;transition:border-color .15s;font-family:inherit;resize:vertical}.dialog input:focus,.dialog textarea:focus{border-color:#4a7bd0}.export-textarea{font-size:13px!important;white-space:pre}.import-progress{margin-top:12px}.import-bar-head{font-size:13px;color:#666;margin-bottom:8px}.import-list{max-height:180px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.import-item{display:flex;align-items:baseline;gap:8px;font-size:13px;padding:6px 10px;border-radius:6px;background:#f7f5f0}.import-item.ok .import-mark{color:#3e8b52}.import-item.exists .import-mark{color:#b08a3e}.import-item.fail{background:#fbeeee}.import-item.fail .import-mark{color:#d05050}.import-mark{flex:none;font-weight:700}.import-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-reason{flex:none;max-width:45%;font-size:12px;color:#d05050;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dialog-error{margin-top:8px;font-size:12px;color:#d05050}.dialog-actions{display:flex;align-items:center;margin-top:16px;gap:10px}.dialog-spacer{flex:1}.shelf-page{max-width:980px;margin:0 auto;padding:32px 24px 60px}.shelf-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.shelf-header h1{font-size:26px;font-weight:700;margin:0;letter-spacing:1px}.shelf-actions{display:flex;gap:10px;align-items:center}.shelf-empty-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.search-dialog{width:min(560px,calc(100vw - 32px));display:flex;flex-direction:column;max-height:min(680px,88vh)}.search-bar{display:flex;gap:10px;margin-bottom:12px}.search-bar input{flex:1}.search-bar .btn-primary{flex:none}.search-bar .btn-primary:disabled{opacity:.5;cursor:default}.search-body{flex:1;min-height:120px;overflow-y:auto;margin:0 -6px;padding:0 6px}.search-tip{text-align:center;color:#999;font-size:13px;padding:26px 10px}.search-tip.error{color:#d05050;display:flex;flex-direction:column;align-items:center;gap:12px}.search-note{font-size:12px;color:#b08a3e;background:#faf5e8;border-radius:8px;padding:8px 12px;margin-bottom:10px}.pulse{animation:pulse 1.2s infinite}.sr-list{display:flex;flex-direction:column;gap:8px}.sr-item{text-align:left;padding:12px 14px;border:1px solid #e8e4da;border-radius:10px;background:#fff;transition:border-color .15s,box-shadow .15s;display:flex;flex-direction:column;gap:5px}.sr-item:hover{border-color:#4a7bd0;box-shadow:0 3px 12px #4a7bd01f}.sr-title{font-size:14px;font-weight:600;color:#333;line-height:1.45;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.sr-snippet{font-size:12px;color:#8f8a80;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sr-host{font-size:11px;color:#4a7bd0;background:#eef3fc;border-radius:5px;padding:2px 7px;align-self:flex-start}.book-detail{display:flex;gap:16px;padding:16px;background:#faf8f3;border:1px solid #e8e4da;border-radius:12px}.bd-cover{flex:none;width:96px;height:132px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#ffffffeb;font-size:34px;font-family:var(--read-font);box-shadow:2px 4px 10px #0000002e}.bd-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.bd-title{font-size:17px;font-weight:700}.bd-meta{font-size:13px;color:#8f8a80;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bd-note{font-size:12px;color:#b08a3e}.bd-actions{display:flex;gap:10px;margin-top:auto;padding-top:10px;flex-wrap:wrap}.bd-actions .btn-primary:disabled{opacity:.6;cursor:default}.search-back{padding:5px 12px;font-size:12px}.source-badge{color:#3e8b52!important;background:#e6f3ea!important}.sr-item.from-source .sr-title{font-size:15px}.source-list{display:flex;flex-direction:column;gap:8px}.source-empty{text-align:center;color:#a19b8f;font-size:13px;padding:16px 0}.source-item{display:flex;align-items:center;gap:6px;border:1px solid #e8e4da;border-radius:10px;padding:10px 12px;background:#fff;transition:opacity .2s}.source-item.off{opacity:.5}.source-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:10px;cursor:pointer}.source-toggle input{accent-color:#3e8b52;margin:0;flex:none;width:16px;height:16px}.source-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.source-name{font-weight:600;font-size:14px;color:#333}.source-url{font-size:11px;color:#b0aaa0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.source-add{display:flex;flex-direction:column;gap:8px}.source-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.source-head h3{margin:0}.source-section{font-size:12px;font-weight:600;color:#a19b8f;letter-spacing:1px;margin:14px 0 8px;padding-bottom:6px;border-bottom:1px solid #eee9df}.source-dialog{width:min(460px,calc(100vw - 32px))}.source-add-btn{width:100%;margin-top:2px}.source-add-btn:disabled{opacity:.45;cursor:default}.source-tip{margin:0;font-size:12px;color:#b0aaa0;line-height:1.6;text-align:center}.shelf-empty{text-align:center;padding:90px 0;color:#8a857b}.shelf-empty-icon{font-size:52px;margin-bottom:14px}.shelf-empty p{margin:6px 0;font-size:16px;color:#6a655c}.shelf-empty-hint{font-size:13px!important;color:#a49e92!important;margin-bottom:22px!important}.shelf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.book-card{position:relative;display:flex;gap:14px;padding:16px;background:#fff;border-radius:12px;cursor:pointer;transition:box-shadow .15s,transform .15s;border:1px solid rgba(0,0,0,.05)}.book-card:hover{box-shadow:0 6px 20px #3c321e1f;transform:translateY(-2px)}.book-cover{flex:none;width:78px;height:106px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#ffffffeb;font-size:30px;font-family:var(--read-font);box-shadow:2px 3px 8px #0000002e}.book-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;padding-top:2px}.book-title{font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-meta{font-size:12px;color:#a19b8f}.book-last{font-size:13px;color:#7b766c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:auto}.book-remove{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:50%;font-size:11px;color:#999;opacity:0;transition:opacity .15s,background .15s}.book-card:hover .book-remove{opacity:1}.book-remove:hover{background:#f0ece4;color:#d05050}.reader-root{--bg: #f7f2e5;--fg: #3a352c;--muted: #a29a89;--bar-bg: rgba(247, 242, 229, .94);--border: rgba(58, 53, 44, .12);--accent: #8a6d3f;--ph-bg: transparent;min-height:100vh;background:var(--bg);color:var(--fg);transition:background .25s,color .25s}.theme-white{--bg: #ffffff;--fg: #262626;--muted: #b0b0b0;--bar-bg: rgba(255, 255, 255, .94);--border: rgba(0, 0, 0, .1);--accent: #3478f6}.theme-green{--bg: #c9e5cc;--fg: #2b3a32;--muted: #7f9a88;--bar-bg: rgba(201, 229, 204, .94);--border: rgba(43, 58, 50, .12);--accent: #3e7a52}.theme-night{--bg: #17191f;--fg: #9aa0ab;--muted: #565b66;--bar-bg: rgba(23, 25, 31, .94);--border: rgba(154, 160, 171, .14);--accent: #7d95d6}.reader-topbar{position:fixed;top:0;left:0;right:0;min-height:56px;padding:calc(6px + env(safe-area-inset-top)) 12px 6px;display:flex;align-items:center;gap:10px;background:var(--bar-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:100;transition:transform .25s ease,opacity .25s}.reader-topbar.hidden{transform:translateY(-100%);opacity:0;pointer-events:none}.icon-btn{width:34px;height:34px;border-radius:8px;font-size:17px;color:var(--fg);display:flex;align-items:center;justify-content:center;transition:background .15s}.icon-btn:hover{background:#7f7f7f24}.topbar-titles{flex:1;min-width:0;line-height:1.25}.topbar-book{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-chapter{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:10px;flex:none}.topbar-progress{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.source-link{display:inline-flex;align-items:center;gap:3px;padding:6px 10px;border-radius:8px;font-size:12px;color:var(--fg);text-decoration:none;border:1px solid var(--border);transition:background .15s,border-color .15s;white-space:nowrap}.source-link:hover{background:#7f7f7f1f;border-color:var(--accent)}.source-icon{font-size:12px;color:var(--muted)}.reader-list{max-width:700px;margin:0 auto;padding:76px 28px 110px}.chapter{animation:chapter-in .3s ease}@keyframes chapter-in{0%{opacity:0}to{opacity:1}}.chapter-head{text-align:center;margin:34px 0 30px}.chapter-book{font-size:12px;color:var(--muted);margin-bottom:8px;letter-spacing:2px}.chapter-head h2{margin:0;font-size:calc(var(--fs, 19px) + 3px);font-family:var(--read-font);font-weight:600;line-height:1.5}.chapter p{font-family:var(--read-font);font-size:var(--fs, 19px);line-height:var(--read-lh, 1.9);text-align:justify;text-indent:2em;margin:0 0 var(--para-gap, .9em)}.chapter-skeleton{padding-top:40px}.skeleton-title{height:26px;width:45%;margin:0 auto 30px;border-radius:6px;background:linear-gradient(90deg,var(--border) 25%,transparent 60%);background-color:var(--border);animation:pulse 1.2s infinite}.skeleton-line{height:calc(var(--fs, 19px) * var(--read-lh, 1.9));margin:0 0 .9em;border-radius:4px;background-color:var(--border);animation:pulse 1.2s infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.chapter-error{padding:40px 0;text-align:center;color:#d05050;font-size:14px;display:flex;flex-direction:column;align-items:center;gap:12px}.reader-end{text-align:center;padding:30px 0 10px;min-height:64px}.end-loading{font-size:13px;color:var(--muted);animation:pulse 1.2s infinite}.end-finish{font-size:13px;color:var(--muted);letter-spacing:2px}.end-error{display:flex;flex-direction:column;align-items:center;gap:10px;font-size:13px;color:#d05050}.reader-bottombar{position:fixed;bottom:0;left:0;right:0;min-height:54px;display:flex;justify-content:space-around;align-items:center;padding:4px 8px calc(4px + env(safe-area-inset-bottom));background:var(--bar-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border);z-index:100;transition:transform .25s ease,opacity .25s}.reader-bottombar.hidden{transform:translateY(100%);opacity:0;pointer-events:none}.reader-bottombar button{font-size:14px;color:var(--fg);padding:8px 18px;border-radius:8px;transition:background .15s}.reader-bottombar button:hover:not(:disabled){background:#7f7f7f24}.reader-bottombar button:disabled{color:var(--muted);opacity:.45;cursor:default}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:300;animation:fadein .18s}@keyframes fadein{0%{opacity:0}to{opacity:1}}.drawer{position:absolute;left:0;top:0;bottom:0;width:min(380px,86vw);background:var(--bg);display:flex;flex-direction:column;box-shadow:8px 0 30px #00000026;animation:slide-in .22s ease}@keyframes slide-in{0%{transform:translate(-30px);opacity:0}to{transform:none;opacity:1}}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:16px 14px 12px 20px;border-bottom:1px solid var(--border)}.drawer-title{font-size:16px;font-weight:600}.drawer-sub{font-size:12px;color:var(--muted);margin-top:3px}.drawer-list{flex:1;overflow-y:auto;padding:8px 0}.drawer-list button{display:block;width:100%;text-align:left;padding:10px 20px;font-size:14px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s}.drawer-list button:hover{background:#7f7f7f1a}.drawer-list button.cur{color:var(--accent);font-weight:600;background:#7f7f7f14}.drawer-tip{padding:20px;text-align:center;font-size:13px;color:var(--muted)}.drawer-tip.error{color:#d05050}.settings-sheet{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:min(500px,calc(100vw - 24px));max-height:82vh;overflow-y:auto;background:var(--bg);border-radius:16px 16px 0 0;box-shadow:0 -8px 40px #0003;padding:18px 22px calc(14px + env(safe-area-inset-bottom));animation:sheet-up .22s ease}@keyframes sheet-up{0%{transform:translate(-50%,30px);opacity:0}to{transform:translate(-50%);opacity:1}}.settings-row{display:flex;align-items:center;gap:16px;padding:10px 0}.settings-label{flex:none;width:42px;font-size:14px;color:var(--muted)}.stepper{display:flex;align-items:center;gap:8px}.stepper button{min-width:40px;padding:6px 10px;border-radius:8px;font-size:13px;border:1px solid var(--border);transition:all .15s}.stepper button:hover{border-color:var(--accent)}.stepper span{min-width:32px;text-align:center;font-size:15px;font-variant-numeric:tabular-nums}.stepper.wide button{min-width:44px}.stepper button.on{border-color:var(--accent);color:var(--accent);font-weight:600}.theme-swatches{display:flex;gap:14px}.swatch{width:38px;height:38px;border-radius:50%;border:2px solid transparent;box-shadow:inset 0 0 0 1px #00000014;transition:transform .15s,box-shadow .15s}.swatch:hover{transform:scale(1.1)}.swatch.paper{background:#f7f2e5}.swatch.white{background:#fff}.swatch.green{background:#c9e5cc}.swatch.night{background:#17191f}.settings-close{width:100%;margin-top:10px;border-color:var(--border)!important;color:var(--muted)!important}.settings-section{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:1px;margin:14px 0 2px;padding-bottom:6px;border-bottom:1px solid var(--border)}.settings-section:first-child{margin-top:0}.settings-hint{margin:8px 0 0;font-size:12px;color:var(--muted)}.rule-list{margin-top:10px;display:flex;flex-direction:column;gap:8px}.rule-item{display:flex;align-items:center;gap:8px}.rule-item input[type=text],.rule-item>input{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:16px;background:transparent;color:var(--fg);outline:none}.rule-item input:focus{border-color:var(--accent)}.rule-item.invalid input:first-child{border-color:#d05050}.rule-arrow{flex:none;color:var(--muted);font-size:13px}.rule-regex{flex:none;display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);padding:6px;border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid transparent}.rule-regex.on{color:var(--accent);border-color:var(--border)}.rule-regex input{accent-color:var(--accent);margin:0}.rule-del{flex:none;width:30px;height:30px;border-radius:50%;font-size:12px;color:var(--muted);transition:all .15s}.rule-del:hover{background:#d050501f;color:#d05050}.rule-add-btn{flex:none;padding:8px 12px}.rule-preset{margin-top:10px;font-size:12px;color:var(--accent);padding:4px 0}.chapter p.tts-para{background:#7f7f7f12;border-radius:6px;transition:background .3s}.tts-sent{border-radius:4px;transition:background .2s}.tts-sent.on{background:#7f7f7f38;background:color-mix(in srgb,var(--accent) 22%,transparent)}.chapter-head h2.tts-head-on{color:var(--accent)}.tts-voice-select{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--fg);font-size:14px;outline:none}.tts-voice-select:focus{border-color:var(--accent)}.tts-actions{margin-top:12px;gap:10px}.tts-main-btn{flex:1;padding:10px}.tts-mini{position:fixed;bottom:calc(68px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:5px 7px;border-radius:999px;background:var(--bar-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);box-shadow:0 6px 24px #00000029;z-index:110;transition:bottom .25s ease}.tts-mini.raised{bottom:calc(20px + env(safe-area-inset-bottom))}.tts-mini button{min-width:36px;height:36px;border-radius:50%;font-size:15px;color:var(--fg);display:flex;align-items:center;justify-content:center;transition:background .15s}.tts-mini button:hover{background:#7f7f7f24}.tts-mini-play{font-size:17px;color:var(--accent)}.tts-mini-rate{font-size:12px;font-variant-numeric:tabular-nums}.tts-mini-stop{font-size:13px;color:var(--muted)}.tts-toast{position:fixed;top:calc(72px + env(safe-area-inset-top));left:50%;transform:translate(-50%);background:#141416c7;color:#fff;font-size:13px;padding:8px 16px;border-radius:10px;z-index:400;animation:fadein .15s;pointer-events:none}html.reader-immersive{scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-y:none}html.reader-immersive::-webkit-scrollbar{display:none;width:0;height:0}@media (hover: none){.book-remove{opacity:1}}@media (max-width: 640px){.reader-list{padding:calc(70px + env(safe-area-inset-top)) 16px calc(96px + env(safe-area-inset-bottom))}.source-text{display:none}.source-link{padding:7px 9px}.shelf-page{padding:calc(16px + env(safe-area-inset-top)) 16px 40px}.shelf-grid{grid-template-columns:1fr}.shelf-header h1{font-size:22px}.shelf-actions .btn-ghost{padding:7px 10px}.search-dialog{max-height:88vh}.book-detail{flex-direction:column;text-align:center}.bd-cover{align-self:center}.bd-meta{white-space:normal}.bd-actions{justify-content:center}.reader-bottombar button{padding:12px 16px;font-size:15px}.reader-topbar{gap:6px}.topbar-titles{gap:0}.drawer{width:86vw}.dialog{width:calc(100vw - 32px)}.settings-sheet{width:calc(100vw - 16px);padding:16px 14px calc(12px + env(safe-area-inset-bottom))}.rule-item{flex-wrap:wrap}.rule-item>input{flex:1 1 42%;font-size:16px}.rule-add-btn{flex:1}.stepper button,.stepper.wide button{min-width:46px;padding:9px 10px}.tts-mini{gap:0;padding:4px 5px}.tts-mini button{min-width:34px;height:34px}}.source-err{font-size:12px;color:#b08a3e;padding:6px 10px}
