:root{--reader-sidebar-width: 260px;--reader-content-max: 680px;--reader-progress-height: 3px;--reader-radius-sm: 6px;--reader-radius-md: 10px;--reader-radius-lg: 14px}.reading-progress-bar{position:fixed;top:0;left:0;right:0;z-index:110;height:var(--reader-progress-height);background:transparent;pointer-events:none}.reading-progress-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),#60a5fa,#818cf8);transition:width .1s linear;border-radius:0 2px 2px 0;box-shadow:0 0 6px #3b82f666;pointer-events:none}.reader-mobile-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;position:sticky;top:0;z-index:50;background:var(--background);border-bottom:1px solid var(--border);gap:.5rem}@media(min-width:768px){.reader-mobile-header{display:none}}.reader-back-link{display:inline-flex;align-items:center;gap:.25rem;font-size:.8125rem;font-weight:550;color:var(--accent);padding:.35rem .5rem;border-radius:var(--reader-radius-sm);transition:background .2s;white-space:nowrap;text-decoration:none}.reader-back-link:hover{background:var(--muted)}.reader-mobile-title{font-size:.8rem;font-weight:600;color:var(--foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%;text-align:center}.reader-toc-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--muted);border:1px solid var(--border);cursor:pointer;transition:all .2s;color:var(--text-secondary)}.reader-toc-btn:hover{color:var(--accent);border-color:var(--accent)}.reader-wrapper{display:flex;min-height:calc(100vh - 64px);max-width:1024px;margin:0 auto;position:relative}.reader-sidebar{display:none;width:var(--reader-sidebar-width);flex-shrink:0;height:calc(100vh - 64px);position:sticky;top:64px;overflow-y:auto;padding:1.25rem .75rem;background:var(--background);border-right:1px solid var(--border)}@media(min-width:768px){.reader-sidebar{display:block}}.reader-sidebar::-webkit-scrollbar{width:4px}.reader-sidebar::-webkit-scrollbar-track{background:transparent}.reader-sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.75rem;margin-bottom:.75rem;border-bottom:1px solid var(--border)}.sidebar-back{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;font-weight:500;color:var(--accent);text-decoration:none;padding:.3rem .5rem;border-radius:var(--reader-radius-sm);transition:background .2s}.sidebar-back:hover{background:var(--muted)}.sidebar-title{font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.toc-list{display:flex;flex-direction:column;gap:.1rem}.toc-link{display:flex;align-items:center;gap:.4rem;padding:.4rem .5rem;border-radius:var(--reader-radius-sm);font-size:1rem;color:var(--foreground);line-height:1.4;transition:all .2s ease;text-decoration:none}.toc-link:hover{background:var(--muted)}.toc-link.active{background:var(--accent);color:#fff;font-weight:500}.toc-num{font-size:.85rem;color:var(--text-secondary);flex-shrink:0;min-width:1.5em;text-align:right}.toc-link.active .toc-num{color:#ffffffb3}.toc-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toc-part-label{font-size:.7rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;padding:.75rem .5rem .25rem;margin-top:.25rem;border-top:1px solid var(--border)}.toc-part-label:first-of-type{border-top:none;margin-top:0;padding-top:0}.reader-content{flex:1;min-width:0;padding:0}@media(min-width:768px){.reader-content{padding:0 2.5rem}}.reader-article{max-width:var(--reader-content-max);margin:0 auto;padding:0 1.25rem}@media(min-width:768px){.reader-article{padding:0}}.reader-article-header{padding:2rem 0 1.5rem}.reader-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem}.reader-en-title{font-size:.85rem;color:var(--text-secondary);font-weight:450}.reader-group-badge{display:inline-block;padding:.2rem .6rem;font-size:.7rem;font-weight:500;border-radius:20px;background:var(--muted);color:var(--accent);border:1px solid var(--border)}.reader-title{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;line-height:1.3;color:var(--foreground);margin:0}.markdown-content{font-size:1.0625rem;line-height:1.85;color:var(--foreground);word-break:break-word;padding-bottom:2rem}@media(min-width:768px){.markdown-content{font-size:1.1rem;line-height:1.9}}.markdown-content h1{font-size:1.7rem;font-weight:700;letter-spacing:-.02em;line-height:1.3;margin-top:2.5rem;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--border);color:var(--foreground)}.markdown-content h2{font-size:1.35rem;font-weight:650;letter-spacing:-.01em;margin-top:2.2rem;margin-bottom:.75rem;color:var(--foreground)}.markdown-content h3{font-size:1.15rem;font-weight:600;margin-top:1.8rem;margin-bottom:.5rem;color:var(--foreground)}.markdown-content h4,.markdown-content h5,.markdown-content h6{font-size:1.05rem;font-weight:600;margin-top:1.5rem;margin-bottom:.4rem;color:var(--foreground)}.markdown-content p{margin-bottom:1.2em}.markdown-content blockquote{margin:1.5rem 0;padding:.75rem 1.25rem;border-left:3px solid var(--accent);background:var(--muted);border-radius:0 var(--reader-radius-md) var(--reader-radius-md) 0;color:var(--foreground)}.markdown-content blockquote p{margin-bottom:.5rem}.markdown-content blockquote p:last-child{margin-bottom:0}.markdown-content ul,.markdown-content ol{margin:1rem 0;padding-left:1.5rem}.markdown-content li{margin-bottom:.4rem}.markdown-content ul li{list-style-type:disc}.markdown-content ol li{list-style-type:decimal}.code-block-wrapper{margin:1.5rem 0;border-radius:var(--reader-radius-lg);border:1px solid var(--border);overflow:hidden;background:var(--muted)}.code-block-header{display:flex;align-items:center;justify-content:space-between;padding:.35rem 1rem;background:color-mix(in srgb,var(--muted) 85%,black);border-bottom:1px solid var(--border)}.code-lang{font-size:.72rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.code-copy-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .5rem;border-radius:4px;border:1px solid var(--border);background:transparent;font-size:.72rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s;white-space:nowrap}.code-copy-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--card-bg)}.code-copy-btn.copied{color:#22c55e;border-color:#22c55e}.code-copy-btn svg{flex-shrink:0}.code-block{padding:1rem 1.25rem;overflow-x:auto;font-size:.875rem;line-height:1.6;margin:0;background:transparent}.code-block code{font-family:SF Mono,Fira Code,Fira Mono,Menlo,monospace;color:var(--foreground)}.markdown-content p>code,.markdown-content li>code{padding:.15em .4em;border-radius:4px;background:var(--muted);color:var(--accent);font-size:.85em;border:1px solid var(--border)}html[data-theme=dark] .markdown-content p>code,html[data-theme=dark] .markdown-content li>code{background:#2997ff1a;border-color:#2997ff33}.markdown-content img{max-width:100%;height:auto;border-radius:var(--reader-radius-lg);margin:1.5rem auto;display:block;box-shadow:0 2px 12px #0000000f}html[data-theme=dark] .markdown-content img{box-shadow:0 2px 12px #0000004d}.reader-figure{margin:1.5rem auto;text-align:center}.reader-figure figcaption{margin-top:.4rem;font-size:.8125rem;color:var(--text-secondary);font-style:italic}.markdown-content table{width:100%;margin:1.5rem 0;border-collapse:collapse;font-size:.9rem;overflow-x:auto;display:block}.markdown-content th,.markdown-content td{padding:.6rem .75rem;border:1px solid var(--border);text-align:left}.markdown-content th{background:var(--muted);font-weight:600}.markdown-content hr{margin:2rem 0;border:none;height:1px;background:var(--border)}.markdown-content a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.markdown-content a:hover{opacity:.8}.markdown-content strong{font-weight:650}.markdown-content em{font-style:italic}.reader-nav{margin-top:3rem;padding:1.25rem 0;border-top:1px solid var(--border)}.reader-nav-inner{display:flex;justify-content:space-between;align-items:stretch;gap:1rem}.reader-nav-link{display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem;border-radius:var(--reader-radius-md);background:var(--card-bg);border:1px solid var(--border);transition:all .25s ease;text-decoration:none;flex:1;max-width:50%}.reader-nav-link:hover{border-color:var(--accent);box-shadow:0 2px 12px #0071e314}.reader-nav-link.prev{justify-content:flex-start}.reader-nav-link.next{justify-content:flex-end;text-align:right}.reader-nav-text{display:flex;flex-direction:column;gap:.15rem;min-width:0}.reader-nav-label{font-size:.75rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.reader-nav-title{font-size:.875rem;font-weight:600;color:var(--foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.reader-nav-link svg{flex-shrink:0;color:var(--accent);transition:transform .2s}.reader-nav-link.prev:hover svg{transform:translate(-3px)}.reader-nav-link.next:hover svg{transform:translate(3px)}.toc-overlay{position:fixed;inset:0;z-index:200;background:#0006;opacity:0;pointer-events:none;transition:opacity .3s ease}.toc-overlay.show{opacity:1;pointer-events:auto}.toc-drawer{position:fixed;bottom:0;left:0;right:0;z-index:210;max-height:75vh;overflow-y:auto;background:var(--background);border-radius:16px 16px 0 0;padding:1.25rem 1.25rem 2rem;transform:translateY(100%);transition:transform .35s cubic-bezier(.25,.1,.25,1);box-shadow:0 -4px 24px #0000001a}.toc-drawer.open{transform:translateY(0)}.toc-drawer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.toc-drawer-title{font-size:1rem;font-weight:600;color:var(--foreground)}.toc-drawer-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--muted);border:none;cursor:pointer;transition:background .2s;color:var(--text-secondary)}.toc-drawer-close:hover{background:color-mix(in srgb,var(--muted) 80%,black)}.toc-drawer-list{display:flex;flex-direction:column;gap:.3rem}.toc-drawer-link{display:flex;align-items:center;gap:.4rem;padding:.6rem .75rem;border-radius:var(--reader-radius-sm);font-size:1rem;color:var(--foreground);line-height:1.4;transition:background .2s;text-decoration:none}.toc-drawer-link:hover{background:var(--muted)}.toc-drawer-link.active{background:var(--accent);color:#fff;font-weight:500}.toc-drawer-num{font-size:.85rem;color:var(--text-secondary);flex-shrink:0;min-width:1.6em;text-align:right}.toc-drawer-link.active .toc-drawer-num{color:#ffffffb3}.toc-drawer-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.book-header{text-align:center;padding:2.5rem 0 2rem}.book-cover{width:100%;max-width:600px;height:400px;border-radius:16px;box-shadow:0 8px 32px #0000001f;margin:0 auto 1.5rem;display:block}html[data-theme=dark] .book-cover{box-shadow:0 8px 32px #0006}.book-title{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;color:var(--foreground)}.book-subtitle{font-size:1rem;color:var(--text-secondary);margin-top:.4rem}.chapter-grid{display:flex;flex-direction:column;gap:.6rem;max-width:600px;margin:0 auto}.chapter-card{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:12px;background:var(--card-bg);border:1px solid var(--border);transition:all .25s ease;cursor:pointer;text-decoration:none}.chapter-card:hover{border-color:var(--accent);box-shadow:0 2px 12px #0071e314;transform:translate(3px)}.chapter-card-num{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--muted);font-size:.75rem;font-weight:600;color:var(--accent);flex-shrink:0}.chapter-card-body{flex:1;min-width:0}.chapter-card-title{font-size:.9375rem;font-weight:600;color:var(--foreground);line-height:1.3}.chapter-card-subtitle{font-size:.8125rem;color:var(--text-secondary);margin-top:.15rem;line-height:1.3}.chapter-card-arrow{color:var(--text-secondary);flex-shrink:0;opacity:.5;transition:all .25s}.chapter-card:hover .chapter-card-arrow{opacity:1;color:var(--accent);transform:translate(2px)}.chapter-group-title{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);padding:1.25rem 0 .4rem;margin-top:.5rem;border-top:1px solid var(--border)}.chapter-group-title:first-child{border-top:none;margin-top:0;padding-top:0}.part-header{display:flex;align-items:baseline;gap:.75rem;padding:1.75rem 0 .5rem;margin-top:.75rem;border-top:2px solid var(--accent)}.part-header:first-of-type{border-top:none;margin-top:0;padding-top:0}.part-name{font-size:1.1rem;font-weight:700;color:var(--foreground);letter-spacing:-.01em}.part-pages{font-size:.75rem;font-weight:500;color:var(--text-secondary);background:var(--muted);padding:.15rem .55rem;border-radius:10px;border:1px solid var(--border)}.chapter-stats{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:center;padding:.75rem 1rem;border-radius:12px;background:var(--muted);margin-bottom:1.5rem;font-size:.8125rem;color:var(--text-secondary)}.chapter-stats span{font-weight:500;color:var(--foreground)}.chapter-card.read{border-color:var(--accent);border-style:solid;position:relative}.chapter-card.read:after{content:"✅ 已读";position:absolute;top:-6px;right:-6px;font-size:.65rem;background:var(--accent);color:#fff;padding:.1rem .4rem;border-radius:8px;line-height:1.4;box-shadow:0 2px 6px #0000001f;white-space:nowrap}@media(max-width:767px){:where(main),:where(.app-layout){max-width:100%!important}.reader-wrapper{max-width:100%}.markdown-content img{max-width:100%!important;height:auto!important}.code-block-wrapper,.markdown-content pre{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.markdown-content table{overflow-x:auto;display:block}.markdown-content{word-break:break-word;overflow-wrap:break-word}.reader-article{padding:0 .75rem 4rem}.reader-article-header{padding:1rem 0}.reader-title{font-size:1.35rem}.markdown-content{font-size:unset;line-height:unset}.reader-nav{margin-top:2rem}.reader-nav-inner{flex-direction:column;gap:.5rem}.reader-nav-link{max-width:100%}.reader-sidebar{display:none!important}.reading-progress-bar{display:block}}@media(min-width:768px){:where(main),:where(.app-layout){max-width:1024px!important}}
