:root{color-scheme:light;--bg: #f5f3ef;--surface: #fffdf9;--surface-2: #eeeae2;--text: #26231f;--muted: #6b655c;--line: #ded8ce;--accent: #c4402a;--accent-strong: #a63420;--accent-soft: #f7ddd7;--on-accent: #fff;--on-danger: #fff;--on-ok: #fff;--ok: #2f7d4f;--ok-soft: #dcf0e2;--warn: #8a5a12;--warn-soft: #f7e8c8;--danger: #b3402b;--danger-soft: #f8ddd6;--shadow: 0 10px 30px rgba(48, 40, 31, .08);--radius: 18px;--radius-sm: 12px;--focus: 0 0 0 3px color-mix(in srgb, var(--accent) 45%, transparent);--topbar-h: 58px}[data-theme=dark]{color-scheme:dark;--bg: #161514;--surface: #211f1c;--surface-2: #2c2925;--text: #ece7df;--muted: #aaa299;--line: #3a3631;--accent: #ff704f;--accent-strong: #ff9b80;--accent-soft: #4a2c26;--on-accent: #241410;--on-danger: #2a120c;--on-ok: #10261a;--ok: #7fc79b;--ok-soft: #22382b;--warn: #e5b968;--warn-soft: #3d3221;--danger: #ff9b85;--danger-soft: #402520;--shadow: 0 10px 30px rgba(0, 0, 0, .3)}*{box-sizing:border-box}html{min-height:100%;background:var(--bg);-webkit-text-size-adjust:100%;scroll-padding-bottom:104px}body{margin:0;min-height:100%;background:radial-gradient(circle at 100% 0,var(--accent-soft),transparent 34rem),var(--bg);color:var(--text);font:16px/1.6 -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;overflow-wrap:anywhere}button,input,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img{max-width:100%}mark{background:color-mix(in srgb,var(--accent) 26%,transparent);color:inherit;border-radius:4px;padding:0 2px}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:6px}#app:focus-visible{box-shadow:none}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:12px;top:-48px;z-index:100;padding:8px 14px;border-radius:0 0 12px 12px;background:var(--accent);color:var(--on-accent);transition:top .15s ease}.skip-link:focus{top:0}.muted{color:var(--muted)}.small{font-size:13px}.noscript{padding:80px 20px;text-align:center}.route-progress{position:fixed;top:0;left:0;right:0;z-index:90;height:3px;pointer-events:none;opacity:0;transition:opacity .15s ease}.route-progress.active{opacity:1}.route-progress>i{display:block;width:36%;height:100%;border-radius:0 999px 999px 0;background:var(--accent);animation:route-progress 1s ease-in-out infinite}.route-progress.done>i{width:100%;transform:none;animation:none;transition:width .2s ease}@keyframes route-progress{0%{transform:translate(-100%)}to{transform:translate(320%)}}.app{width:min(980px,100%);min-height:100vh;min-height:100dvh;margin:0 auto;padding:env(safe-area-inset-top) 0 calc(84px + env(safe-area-inset-bottom))}.main{padding:16px 16px 40px;min-height:calc(100dvh - var(--topbar-h) - 72px)}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;height:calc(var(--topbar-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) 16px 0;background:color-mix(in srgb,var(--bg) 88%,transparent);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:.02em;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--accent);color:var(--on-accent)}.brand-mark svg{width:20px;height:20px}.topbar-title{flex:1;min-width:0;font-size:15px;font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.reader-mode .topbar-title{position:absolute;left:50%;transform:translate(-50%);max-width:min(58vw,30rem);text-align:center;pointer-events:none}body.reader-mode #themeButton{margin-left:auto}.icon-button{display:grid;place-items:center;width:38px;height:38px;border:1px solid transparent;border-radius:12px;background:transparent;cursor:pointer}.icon-button:hover{background:var(--surface-2)}.icon-button svg{width:21px;height:21px}.footer{padding:28px 16px calc(96px + env(safe-area-inset-bottom));color:var(--muted);font-size:13px;text-align:center}.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;margin-bottom:10px}.footer-chip{display:inline-flex;align-items:center;min-height:28px;padding:0;border:0;background:none;color:inherit;font-family:inherit;font-size:14px;line-height:1.6;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.footer-chip:hover{color:var(--accent)}.footer-chip.active{color:var(--accent);font-weight:600}.footer-meta{margin:8px 0 0;color:var(--muted);font-size:12px;opacity:.75}.footer-note{margin:0 auto;max-width:620px;line-height:1.7}.tabbar{position:fixed;left:50%;bottom:max(10px,env(safe-area-inset-bottom));z-index:30;transform:translate(-50%);display:grid;grid-template-columns:repeat(4,68px);padding:7px 8px;border:1px solid var(--line);border-radius:22px;background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:var(--shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:opacity .2s ease,transform .2s ease}.tabbar a{display:grid;place-items:center;gap:2px;min-height:44px;color:var(--muted);font-size:11px;border-radius:14px}.tabbar a.active{color:var(--accent)}.tabbar svg{width:21px;height:21px}body.reader-mode .tabbar,body.reader-mode .footer{display:none}body.reader-mode .app{padding-bottom:0}body.reader-mode .main{padding:0}.source-select{position:relative}.source-trigger{gap:6px}.source-trigger .caret{font-size:10px;color:var(--muted)}.source-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:25;min-width:200px;padding:8px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow)}.source-option{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;font-size:14px;cursor:pointer}.source-option:hover{background:var(--surface-2)}.source-option input{width:16px;height:16px;accent-color:var(--accent)}.source-option.off{color:var(--muted)}.source-hint{margin:6px 10px 4px;color:var(--muted);font-size:12px;line-height:1.5}.button,.chapter-link,.book-card,.drawer-item{scroll-margin-block:104px 104px}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 18px;border:1px solid transparent;border-radius:14px;background:var(--accent);color:var(--on-accent);font-weight:600;cursor:pointer;transition:background .15s ease,transform .12s ease}.button:hover{background:var(--accent-strong)}.button:active{transform:scale(.98)}.button svg{width:18px;height:18px}.button.secondary{background:var(--surface);border-color:var(--line);color:var(--text)}.button.secondary:hover{background:var(--surface-2)}.button.danger{background:var(--danger)}.button.compact{min-height:36px;padding:0 12px;border-radius:12px;font-size:14px}.button[disabled]{opacity:.5;cursor:not-allowed}.link-button{border:0;background:none;padding:2px 0;color:var(--accent);cursor:pointer;font-size:14px;text-decoration:underline;text-underline-offset:3px}.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:12px;line-height:1.5;white-space:nowrap}.tag.source-shuxiang{background:var(--accent-soft);color:var(--accent-strong)}[data-theme=dark] .tag.source-shuxiang{background:#4a2c26;color:#ffb9a6}.tag.source-shuqi{background:#e2ecf8;color:#2c5d8f}.tag.source-qidian{background:#f6e0dc;color:#9c3b28}.tag.source-toggle{border:0;cursor:pointer;font-family:inherit}.tag.source-toggle:hover{filter:brightness(.96)}[data-theme=dark] .tag.source-toggle:hover{filter:brightness(1.15)}.source-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}[data-theme=dark] .tag.source-shuqi{background:#22344a;color:#9dc2e8}[data-theme=dark] .tag.source-qidian{background:#43261f;color:#f0a794}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.danger{background:var(--danger-soft);color:var(--danger)}.tag.ok{background:var(--ok-soft);color:var(--ok)}.chip-button{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text);font-size:14px;cursor:pointer}.chip-button:hover{border-color:var(--accent)}.chip-button.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.chip-button.muted{color:var(--muted)}.chip{display:inline-flex;align-items:center;gap:2px;padding-right:4px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}.chip .chip-button{border:0;background:none}.chip-x{width:26px;height:26px;border:0;border-radius:50%;background:transparent;color:var(--muted);cursor:pointer;line-height:1}.chip-x:hover{background:var(--surface-2);color:var(--danger)}.state-block{padding:56px 18px;text-align:center;color:var(--muted)}.state-icon{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 14px;border-radius:18px;background:var(--surface-2);color:var(--accent)}.state-icon svg{width:28px;height:28px}.state-block h2{margin:0 0 6px;color:var(--text);font-size:20px}.state-block p{margin:0 auto 18px;max-width:460px}.state-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center}.spinner{width:22px;height:22px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}.empty{padding:36px 16px;text-align:center;color:var(--muted)}.empty .button{margin-top:12px}.section-title{display:flex;align-items:baseline;gap:10px;margin:26px 0 12px}.section-title h2{margin:0;font-size:18px}.section-title span{color:var(--muted);font-size:13px}.section-title .chip-button{margin-left:auto}.notice{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 14px;margin-bottom:12px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:14px}.notice.warn{background:var(--warn-soft);color:var(--warn)}.notice-actions{display:flex;gap:6px;margin-left:auto}.load-done{padding:18px;text-align:center;color:var(--muted);font-size:13px}.search-more{min-height:12px}.hero{padding:22px 0 6px}.hero h1{margin:0 0 10px;font-size:clamp(26px,5vw,36px);letter-spacing:-.02em;line-height:1.25}.hero-sub{margin:0 0 18px;max-width:620px;color:var(--muted)}.hero-sub b{color:var(--text)}.searchbar{display:flex;gap:10px}.searchbar input{flex:1;min-width:0;height:50px;padding:0 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);outline:none}.searchbar input:focus{border-color:var(--accent);box-shadow:var(--focus)}.hero-words,.history-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}.row-label{color:var(--muted);font-size:13px}.word-row{display:flex;flex-wrap:wrap;gap:8px}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 0}.filter-group{display:flex;flex-wrap:wrap;gap:6px}.filter-field select{height:34px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.book-card{display:grid;grid-template-columns:84px minmax(0,1fr);gap:14px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color .15s ease,transform .15s ease}.book-card:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));transform:translateY(-1px)}.book-card .cover{width:84px;aspect-ratio:3 / 4;object-fit:cover;border-radius:10px;background:var(--surface-2)}.book-card h3{margin:0 0 4px;font-size:16px;line-height:1.4}.book-card .meta{color:var(--muted);font-size:13px}.book-card .abstract{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:6px 0;color:var(--muted);font-size:13px}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.chip-button.tag{padding:2px 9px;min-height:24px;font-size:12px}.book-card.history-card{grid-template-columns:78px minmax(0,1fr) auto;align-items:center}.history-delete{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:0 10px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--muted);cursor:pointer}.history-delete svg{width:16px;height:16px}.history-delete:hover{color:var(--danger);border-color:var(--danger)}.empty-inline{margin:0 0 4px;padding:8px 2px;color:var(--muted);font-size:14px}.shelf-storage{margin-top:30px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);scroll-margin-block:120px}.storage-head{display:flex;gap:12px;align-items:flex-start}.storage-icon{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:12px;background:var(--surface-2);color:var(--accent)}.storage-icon svg{width:21px;height:21px}.storage-head h2{margin:0 0 3px;font-size:15px}.storage-head p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}.storage-meter{height:6px;margin:14px 0 10px;border-radius:999px;background:var(--surface-2);overflow:hidden}.storage-meter>i{display:block;width:0;height:100%;border-radius:999px;background:var(--accent);transition:width .3s ease}.storage-foot{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;font-size:13px}.storage-clear{min-height:36px;padding:0 13px;border:1px solid color-mix(in srgb,var(--danger) 40%,var(--line));border-radius:12px;background:transparent;color:var(--danger);font-size:13px}.storage-clear:hover{background:var(--danger-soft)}.local-data{padding:14px;border:1px dashed var(--line);border-radius:var(--radius)}.inline-switch{display:flex;gap:8px;width:min(420px,100%)}.inline-switch input{flex:1;min-width:0;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.breadcrumb{display:flex;gap:8px;padding:6px 0 14px;color:var(--muted);font-size:13px}.breadcrumb a:hover{color:var(--accent)}.detail{display:grid;grid-template-columns:180px minmax(0,1fr);gap:22px}.detail .cover{width:180px;aspect-ratio:3 / 4;object-fit:cover;border-radius:var(--radius);background:var(--surface-2);box-shadow:var(--shadow)}.detail h1{margin:0 0 6px;font-size:clamp(22px,4vw,30px)}.detail .meta{color:var(--muted)}.detail .abstract{margin:12px 0 4px;line-height:1.8}.detail .abstract.clamped{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.latest{margin:10px 0;padding:10px 14px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:14px}.latest a{color:var(--accent)}.detail-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px}@media(max-width:640px){.detail-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.detail-actions .button{width:100%;padding:0 10px;font-size:15px;white-space:nowrap}.detail-actions .tag.ok{grid-column:1 / -1;justify-self:start}.detail-actions form,.detail-actions .inline-switch{grid-column:1 / -1}}.progress{height:6px;margin-top:12px;overflow:hidden;border-radius:999px;background:var(--surface-2)}.progress>i{display:block;height:100%;width:0;background:var(--accent);transition:width .2s}.source-list{display:grid;gap:8px;margin-top:10px}.source-item{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 10px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:14px}.chapter-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:2px 6px;padding:6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.chapter-link{display:flex;gap:8px;align-items:center;min-height:44px;padding:9px 12px;border-radius:10px;font-size:15px}.chapter-link span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chapter-link:hover{background:var(--surface-2)}.chapter-link.active{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}body.reader-mode{overscroll-behavior:none}body.reader-mode .topbar{position:fixed;left:0;right:0;height:calc(46px + env(safe-area-inset-top));gap:6px}body.reader-mode .brand{display:none}body.reader-mode .topbar-title{font-size:14px}.reader{--reader-chrome-top: 78px;--reader-chrome-bottom: calc(74px + env(safe-area-inset-bottom)) ;position:fixed;inset:calc(46px + env(safe-area-inset-top)) 0 0;display:flex;flex-direction:column;background:var(--reader-bg, var(--bg));color:var(--reader-text, var(--text))}.reader-head{position:absolute;top:0;left:0;right:0;z-index:22;padding:8px 12px 6px;background:color-mix(in srgb,var(--reader-bg, var(--bg)) 88%,transparent);backdrop-filter:blur(14px);transition:transform .22s ease,opacity .22s ease,visibility 0s linear 0s}.reader-head-row{position:relative;display:flex;align-items:center;gap:6px;min-height:52px}.reader-head-actions{display:flex;align-items:center;gap:4px;margin-left:auto}.reader-title-wrap{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;pointer-events:none}.reader-title-wrap>*{flex:none}.reader-title{margin:0;max-width:min(56%,26rem);line-height:1.3;font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-progress{max-width:min(64%,30rem);color:var(--reader-muted, var(--muted));font-size:11px;line-height:1.35;text-align:center}.reader-bar{height:2px;margin-top:7px;border-radius:999px;background:color-mix(in srgb,var(--reader-muted, var(--muted)) 14%,transparent)}.reader-bar>i{display:block;height:100%;width:0;border-radius:999px;background:color-mix(in srgb,var(--reader-text, var(--text)) 60%,transparent)}.reader-banner{position:relative;z-index:21;margin-top:var(--reader-chrome-top, 78px);padding:8px 14px;background:var(--warn-soft);color:var(--warn);font-size:13px}.reader-banner a{text-decoration:underline}.reader-viewport{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.reader-content{max-width:46rem;margin:0 auto;padding:calc(var(--reader-chrome-top, 78px) + 18px) calc(var(--reader-margin, 20px) + env(safe-area-inset-left)) calc(var(--reader-chrome-bottom, 74px) + 18px) calc(var(--reader-margin, 20px) + env(safe-area-inset-right));font-family:var(--reader-font);font-size:var(--reader-font-size, 19px);line-height:var(--reader-line-height, 1.9)}.reader-viewport.with-banner .reader-content{padding-top:18px}.reader-content p{margin:0 0 var(--reader-para-gap, 14px);text-align:justify}.reader-content p.dialogue{text-indent:0}.reader .muted{color:var(--reader-muted, var(--muted))}.reader-end{max-width:46rem;margin:0 auto;padding:12px 20px calc(var(--reader-chrome-bottom, 74px) + 20px);text-align:center}.reader-nav{position:absolute;left:0;right:0;bottom:0;z-index:22;display:flex;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--reader-bg, var(--bg)) 90%,transparent);backdrop-filter:blur(14px);transition:transform .22s ease,opacity .22s ease,visibility 0s linear 0s}.reader-nav .button{flex:1}body.chrome-hidden .reader-head{transform:translateY(-110%);opacity:0;visibility:hidden;transition:transform .22s ease,opacity .22s ease,visibility 0s linear .22s}body.chrome-hidden .reader-nav{transform:translateY(120%);opacity:0;visibility:hidden;pointer-events:none;transition:transform .22s ease,opacity .22s ease,visibility 0s linear .22s}.reader .icon-button:hover,.reader .icon-button:focus-visible{background:color-mix(in srgb,var(--reader-text, var(--text)) 14%,transparent)}.reader .icon-button.active{color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}.reader .button.secondary{background:color-mix(in srgb,var(--reader-text, var(--text)) 8%,transparent);border-color:color-mix(in srgb,var(--reader-text, var(--text)) 22%,transparent);color:var(--reader-text, var(--text))}.reader .button.secondary:hover{background:color-mix(in srgb,var(--reader-text, var(--text)) 16%,transparent)}.reader-end-note{margin:0 0 6px;color:var(--reader-muted, var(--muted));font-size:13px;text-align:center}.reader[data-mode=page] .reader-viewport{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory}.reader[data-mode=page] .reader-content{height:100%;max-width:none;margin:0;column-width:var(--page-w, 100vw);column-gap:28px;column-fill:auto;padding-top:calc(var(--reader-chrome-top, 78px) + 8px);padding-bottom:calc(var(--reader-chrome-bottom, 74px) + 8px)}.reader[data-mode=page] .reader-viewport.with-banner .reader-content{padding-top:8px}.reader[data-mode=page] .reader-content p{break-inside:auto}.reader[data-mode=page] .reader-end{display:none}.reader[data-mode=page] .reader-viewport{scroll-snap-type:x mandatory}.reader[data-mode=page] .reader-content>*{scroll-snap-align:start}.reader-mark{background:color-mix(in srgb,var(--accent) 40%,transparent)}.reader-drawer{position:fixed;top:calc(46px + env(safe-area-inset-top));bottom:0;left:0;z-index:40;width:min(88vw,380px);display:flex;flex-direction:column;background:color-mix(in srgb,var(--reader-bg, var(--bg)) 96%,var(--reader-text, var(--text)));color:var(--reader-text, var(--text));border-right:1px solid color-mix(in srgb,var(--reader-text, var(--text)) 16%,transparent);transform:translate(-102%);transition:transform .22s ease;box-shadow:var(--shadow)}.reader-drawer.open{transform:translate(0)}.drawer-head{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid color-mix(in srgb,var(--reader-text, var(--text)) 14%,transparent)}.drawer-title{flex:1;margin:0;font-size:16px;font-weight:700}.drawer-count{color:var(--reader-muted, var(--muted));font-size:13px}.drawer-body{flex:1;overflow:auto;padding:8px}.drawer-item{display:flex;gap:8px;align-items:center;width:100%;padding:9px 10px;border:0;border-radius:10px;background:transparent;color:inherit;text-align:left;font-size:14px;cursor:pointer}.drawer-item:hover{background:color-mix(in srgb,var(--reader-text, var(--text)) 9%,transparent)}.drawer-item.active{background:color-mix(in srgb,var(--accent) 20%,transparent);color:inherit;font-weight:600}.drawer-index{min-width:2.4em;color:var(--muted);font-size:12px}.drawer-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-settings{position:fixed;right:12px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:35;width:min(340px,calc(100vw - 24px));padding:12px;border:1px solid color-mix(in srgb,var(--reader-text, var(--text)) 16%,transparent);border-radius:var(--radius);background:color-mix(in srgb,var(--reader-bg, var(--bg)) 96%,var(--reader-text, var(--text)));color:var(--reader-text, var(--text));box-shadow:var(--shadow);opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity .18s ease,transform .18s ease}.reader-settings.open{opacity:1;pointer-events:auto;transform:translateY(0)}.settings-row{display:flex;gap:10px;align-items:center;padding:6px 0}.settings-label{width:44px;color:var(--reader-muted, var(--muted));font-size:13px;flex:none}.settings-body{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.settings-body output{min-width:24px;text-align:center}.swatch{width:30px;height:30px;border:2px solid color-mix(in srgb,var(--reader-text, var(--text)) 24%,transparent);border-radius:10px;background:var(--swatch);cursor:pointer}.swatch.active{border-color:var(--accent);box-shadow:var(--focus)}.reader-tap-hint{position:fixed;left:50%;bottom:calc(70px + env(safe-area-inset-bottom));z-index:25;transform:translate(-50%);padding:4px 12px;border-radius:999px;background:color-mix(in srgb,var(--surface) 80%,transparent);color:var(--muted);font-size:11px;pointer-events:none;opacity:0;transition:opacity .2s ease}.reader:hover .reader-tap-hint{opacity:0}.overlay{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:20px;background:#14100c73}.dialog{width:min(420px,100%);padding:22px;border-radius:var(--radius);background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.dialog h2{margin:0 0 8px;font-size:18px}.dialog p{margin:0 0 18px;color:var(--muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:10px}.toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));z-index:70;display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;background:#23201d;color:#fff;font-size:14px;transform:translate(-50%,12px);opacity:0;pointer-events:none;transition:.2s;max-width:calc(100vw - 32px)}.toast.show{opacity:1;transform:translate(-50%)}.toast.show.has-action{pointer-events:auto}.toast-error{background:var(--danger);color:var(--on-danger)}.toast-success{background:var(--ok);color:var(--on-ok)}.toast-action{border:0;background:#ffffff2e;color:#fff;border-radius:999px;padding:4px 10px;cursor:pointer}.prose{max-width:42rem;margin:0 auto}.prose h1{margin:8px 0 18px;font-size:clamp(24px,4vw,30px)}.prose h2{margin:26px 0 8px;font-size:17px}.prose h3{margin:18px 0 6px;font-size:15px}.prose p,.prose li{color:var(--text);line-height:1.85}.prose ul{padding-left:1.2em;display:grid;gap:6px}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.changelog-entry{padding-top:8px;border-top:1px solid var(--line);margin-top:18px}@media(max-width:640px){.main{padding:12px 12px 32px}.hero{padding-top:12px}.searchbar{flex-direction:row}.book-grid{grid-template-columns:1fr}.detail{grid-template-columns:108px minmax(0,1fr);gap:14px}.detail .cover{width:108px}.detail-actions .button{flex:1 1 44%}.history-card{grid-template-columns:70px minmax(0,1fr) auto}.history-delete span{display:none}.tabbar{width:calc(100% - 20px);grid-template-columns:repeat(4,1fr);bottom:max(8px,env(safe-area-inset-bottom))}.toast{bottom:calc(80px + env(safe-area-inset-bottom))}.reader-tap-hint{display:none}.chapter-list{grid-template-columns:1fr;padding:4px}.chapter-link{min-height:46px}.reader-head{padding-top:4px}.reader-title{max-width:min(33%,26rem)}.reader-head-actions{gap:2px}.reader-head-actions .icon-button{width:36px;height:36px}body.reader-mode .brand{display:none}}@media(max-width:380px){.detail{grid-template-columns:96px minmax(0,1fr)}.detail .cover{width:96px}.tabbar{grid-template-columns:repeat(4,1fr)}}@media(min-width:1100px){.app{width:min(1080px,100%)}}@media(orientation:landscape)and (max-height:500px){.reader-head{padding-bottom:2px}.reader-nav{padding-top:6px;padding-bottom:6px}.reader-settings{bottom:12px;max-height:80vh;overflow:auto}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media print{.topbar,.tabbar,.footer,.reader-nav,.reader-head{display:none}.reader{position:static}.reader-viewport{overflow:visible}}.reader-settings .chip-button{background:color-mix(in srgb,var(--reader-text, var(--text)) 7%,transparent);border-color:color-mix(in srgb,var(--reader-text, var(--text)) 20%,transparent);color:inherit}.reader-settings .chip-button.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.reader-settings .chip-button:hover{border-color:var(--accent)}
