        /* Page-specific styles */
        body {
            background: var(--bg-secondary);
            padding: 0;
            overflow-x: hidden;
        }

        .reader-shell {
            /* --reader-content-max 在下方 WeRead-inspired 层统一定义为 38rem */
        }

        /* Book Search Panel */
        .book-search-panel {
            position: fixed;
            top: 0; right: 0;
            width: min(420px, 100vw);
            height: 100vh;
            background: var(--reader-surface, var(--paper-2));
            border-left: 1px solid var(--reader-border, var(--line));
            box-shadow: -8px 0 32px -12px rgba(0,0,0,.15);
            z-index: 350;
            transform: translateX(100%);
            transition: transform .25s ease;
            display: flex;
            flex-direction: column;
        }
        .book-search-panel.open { transform: translateX(0); }
        .book-search-header {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 14px 16px;
            border-bottom: 1px solid var(--reader-border, var(--line));
        }
        .book-search-input {
            flex: 1;
            border: 1px solid var(--reader-border, var(--line));
            border-radius: var(--radius-sm);
            padding: 9px 12px;
            font-size: .9rem;
            font-family: var(--sans);
            background: var(--paper-2);
            color: var(--ink);
            outline: none;
        }
        .book-search-input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
        .book-search-close {
            width: 32px; height: 32px;
            border: none; background: transparent;
            color: var(--ink-mute); cursor: pointer;
            font-size: 1rem; border-radius: var(--radius-sm);
        }
        .book-search-close:hover { background: var(--bg-tertiary); color: var(--ink); }
        .book-search-results {
            flex: 1;
            overflow-y: auto;
            padding: 8px;
        }
        .book-search-hint {
            text-align: center;
            color: var(--ink-mute);
            font-family: var(--ui-sans);
            font-size: .82rem;
            padding: 24px 0;
        }
        .book-search-result {
            padding: 12px 14px;
            border-radius: var(--radius-sm);
            cursor: pointer;
            transition: background .15s;
        }
        .book-search-result:hover { background: var(--bg-tertiary); }
        .book-search-chapter {
            font-family: var(--ui-sans);
            font-size: .68rem;
            font-weight: 600;
            color: var(--accent);
            letter-spacing: .03em;
        }
        .book-search-title {
            font-family: var(--serif);
            font-size: .88rem;
            font-weight: 600;
            color: var(--ink);
            margin-left: 8px;
        }
        .book-search-snippet {
            margin: 6px 0 0;
            font-family: var(--serif);
            font-size: .82rem;
            line-height: 1.5;
            color: var(--ink-soft);
        }
        .book-search-snippet mark {
            background: var(--accent-soft);
            color: var(--accent-ink);
            border-radius: 2px;
            padding: 0 1px;
        }
        .book-search-summary{font-family:var(--ui-sans);font-size:.78rem;color:var(--ink-mute);padding:8px 14px 4px;border-bottom:1px solid var(--reader-border,var(--line));margin-bottom:4px}
        .book-search-result-header{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
        .book-search-hit-count{font-family:var(--ui-sans);font-size:.65rem;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:1px 7px;margin-left:auto}
        .book-search-result .book-search-snippet:nth-child(n+3){margin-top:2px;padding-top:4px;border-top:1px dashed var(--reader-border,var(--line))}
        .book-search-empty{text-align:center;padding:40px 20px;color:var(--ink-mute)}
        .book-search-empty-icon{font-size:2rem;margin-bottom:12px;opacity:.4}
        .book-search-empty-hint{font-size:.76rem;margin-top:8px;opacity:.7}
        mark.search-highlight{background:var(--accent-soft);color:var(--accent-ink);border-radius:2px;padding:0 2px;animation:search-highlight-pulse 1.5s ease 1}
        @keyframes search-highlight-pulse{0%{background:var(--accent);color:var(--paper-2)}100%{background:var(--accent-soft);color:var(--accent-ink)}}
        @media (max-width: 768px) {
            .book-search-panel { width: 100vw; }
        }

        /* Reading Progress Bar */
        .reading-progress {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 3px;
            background: transparent;
            z-index: 9999;
        }

        .reading-progress-fill {
            height: 100%;
            background: linear-gradient(90deg, var(--reader-accent), color-mix(in srgb, var(--reader-accent), #fff 30%));
            transition: width 0.15s ease-out;
            border-radius: 0 2px 2px 0;
        }


        .header-content {
            max-width: min(1240px, calc(100vw - 32px));
            margin: 0 auto;
            min-width: 0;
        }

        /* Top utility bar: back link left, controls right */
        .header-toolbar {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: var(--spacing-3);
            margin-bottom: 0;
            flex-wrap: wrap;
        }

        .back-link {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 5px;
            min-height: 36px;
            padding: 4px 2px;
            border: none;
            border-radius: 0;
            background: transparent;
            color: var(--ink-mute);
            text-decoration: none;
            font-size: var(--font-size-sm);
            font-weight: var(--font-weight-medium);
            transition: color var(--transition-base);
            white-space: nowrap;
        }

        .back-link:hover {
            color: var(--accent);
            text-decoration: none;
            background: transparent;
            border-color: transparent;
            transform: none;
        }


        /* Book info: two-row layout */
        .book-row {
            display: block;
            min-width: 0;
        }

        .book-title {
            font-family: var(--serif);
            font-size: clamp(.95rem, 1.4vw, 1.15rem);
            font-weight: 600;
            letter-spacing: -.01em;
            text-shadow: none;
            line-height: 1.3;
            flex: 1;
            min-width: 0;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .book-meta {
            display: flex;
            flex-wrap: wrap;
            gap: 2px;
            flex-shrink: 0;
            align-items: baseline;
        }

        .book-meta-item:not(:last-child)::after {
            content: "·";
            margin-left: 2px;
            opacity: .5;
        }

        .book-status {
            font-family: var(--ui-sans);
            font-size: .72rem;
            font-weight: 500;
            white-space: nowrap;
            color: var(--ink-mute);
        }

        .book-status.completed {
            background: none;
            color: var(--ok);
        }

        .book-status.in_progress, .book-status.writing {
            background: none;
            color: var(--warn);
        }

        .book-status.partial, .book-status.failed {
            background: none;
            color: var(--err);
        }

        .book-meta-item.partial-error {
            color: var(--err);
            font-size: .72rem;
            max-width: 300px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .book-sub-row {
            display: flex;
            align-items: center;
            gap: var(--spacing-2);
            font-size: .76rem;
            color: var(--ink-mute);
            opacity: 1;
            margin-top: 2px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            min-width: 0;
        }

        .book-sub-row .separator {
            opacity: 0.4;
        }

        /* Download Dropdown */
        .download-dropdown {
            position: relative;
        }

        .download-menu {
            display: none;
            position: absolute;
            top: calc(100% + var(--spacing-2));
            right: 0;
            background: var(--bg-elevated);
            border: 1px solid var(--border-color);
            border-radius: var(--radius-md);
            box-shadow: var(--shadow-lg);
            min-width: 180px;
            z-index: var(--z-dropdown);
            overflow: hidden;
        }

        .download-menu.open {
            display: block;
        }

        .download-menu-item {
            display: flex;
            align-items: center;
            gap: var(--spacing-2);
            width: 100%;
            padding: var(--spacing-3) var(--spacing-4);
            background: none;
            border: none;
            color: var(--text-primary);
            font-size: var(--font-size-sm);
            cursor: pointer;
            transition: background var(--transition-fast);
            text-align: left;
        }


        /* Toolbar Divider */
        .toolbar-divider {
            width: 1px;
            height: 20px;
            background: var(--line);
            flex-shrink: 0;
        }


        /* Inline Settings in Toolbar */
        .toolbar-settings {
            display: flex;
            align-items: center;
            gap: var(--spacing-2);
        }

        

        


        


        

        

        

        


        

        

        

        

        /* Reader Layout */
        .reader-container {
            max-width: min(1680px, calc(100vw - 32px));
            margin: 0 auto;
            padding: clamp(var(--spacing-3), 2.2vw, var(--spacing-6));
            display: grid;
            grid-template-columns: 260px minmax(0, 1fr);
            gap: clamp(var(--spacing-3), 2vw, var(--spacing-6));
            min-height: calc(100vh - 200px);
            min-width: 0;
        }

        /* Sidebar */
        .sidebar {
            background: var(--paper-2);
            border-radius: var(--radius);
            padding: var(--spacing-4);
            border: 1px solid var(--line);
            box-shadow: none;
            height: fit-content;
            max-height: calc(100vh - 200px);
            overflow-y: auto;
            position: sticky;
            top: var(--spacing-5);
        }

        .sidebar-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: var(--spacing-2);
            margin-bottom: var(--spacing-3);
            padding-bottom: var(--spacing-2);
            border-bottom: 1px solid var(--border-color);
        }

        .sidebar-title {
            font-family: var(--serif);
            font-size: var(--font-size-base);
            font-weight: 600;
            margin-bottom: 0;
            color: var(--ink);
            padding-bottom: 0;
            border-bottom: none;
            letter-spacing: -.01em;
        }

        /* 书名条已删（2026-08-15）：书名常驻阅读器顶栏，侧栏不重复 */

        .chapter-list {
            list-style: none;
            padding: 0;
            margin: 0;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        .chapter-item {
            display: grid;
            grid-template-columns: auto 1fr;
            align-items: start;
            gap: 8px;
            padding: 7px 10px;
            background: transparent;
            border-radius: var(--radius-xs);
            cursor: pointer;
            transition: background .15s,color .15s;
            border: none;
            border-left: 2px solid transparent;
        }

        .chapter-item:hover {
            background: var(--bg-tertiary);
            border-left-color: transparent;
            border-color: transparent;
            transform: none;
        }

        .chapter-item.active {
            background: var(--accent-soft);
            border-left-color: var(--accent);
            font-weight: 600;
            border-color: transparent;
            box-shadow: none;
        }

        .chapter-item.failed {
            opacity: 0.55;
            background: transparent;
        }


        .chapter-title {
            color: var(--ink-soft);
            font-family: var(--ui-sans);
            font-size: var(--font-size-sm);
            line-height: 1.4;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
            overflow: hidden;
        }


        /* Content Area */
        .content-area {
            background: var(--paper-2);
            border-radius: var(--radius);
            padding: clamp(var(--spacing-3), 2vw, var(--spacing-6));
            border: 1px solid var(--line);
            box-shadow: none;
            min-height: 500px;
            min-width: 0;
        }

        .loading {
            text-align: center;
            padding: var(--spacing-16) var(--spacing-5);
            color: var(--ink-mute);
            font-family: var(--ui-sans);
            font-size: var(--font-size-sm);
            letter-spacing: .02em;
        }

        .spinner {
            border: 2px solid var(--line);
            border-top-color: var(--accent);
            border-radius: var(--radius-full);
            width: 26px;
            height: 26px;
            animation: spin .8s linear infinite;
            margin: 0 auto var(--spacing-4);
        }

        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }

        .chapter-header {
            margin-bottom: var(--spacing-6);
            padding-bottom: var(--spacing-4);
            border-bottom: none;
            max-width: var(--reader-content-max);
            margin-inline: auto;
            position: relative;
        }
        /* 章题下短细线：杂志式起始仪式（替代整条通栏线） */
        .chapter-header::after {
            content: "";
            display: block;
            width: 36px;
            height: 2px;
            margin-top: var(--spacing-4);
            background: color-mix(in srgb, var(--lux-accent, var(--accent)) 55%, transparent);
            border-radius: 2px;
        }


        .chapter-title-display {
            font-family: var(--serif);
            font-size: clamp(1.4rem, 2.8vw, 1.9rem);
            font-weight: 600;
            letter-spacing: -.02em;
            color: var(--text-primary);
            margin-bottom: var(--spacing-2);
            line-height: 1.25;
        }

        .chapter-tokens {
            margin-top: var(--spacing-3);
            font-size: var(--font-size-sm);
            color: var(--color-info);
            font-weight: var(--font-weight-medium);
        }

        .chapter-content {
            animation: chapterFadeIn .38s ease-out;
        }
        @keyframes chapterFadeIn {
            from { opacity: 0; transform: translateY(6px); }
            to { opacity: 1; transform: translateY(0); }
        }
        /* 章末收束：分隔点 + 本章完（翻章前的呼吸位） */
        .chapter-end-mark {
            text-align: center;
            margin: var(--spacing-8) 0 var(--spacing-6);
            font-family: var(--ui-sans);
            font-size: var(--text-2xs, 11px);
            letter-spacing: .32em;
            text-indent: .32em;   /* 抵消最后一字的字距，保证视觉居中 */
            color: var(--reader-text-secondary, var(--ink-mute));
            opacity: .8;
        }
        .chapter-end-mark::before {
            content: "◆";
            display: block;
            font-size: 8px;
            letter-spacing: 0;
            text-indent: 0;
            margin-bottom: 10px;
            color: color-mix(in srgb, var(--lux-accent, var(--accent)) 60%, transparent);
        }
        .chapter-content {
            font-size: 0.95rem;
            line-height: 1.68;
            color: var(--text-primary);
            max-width: var(--reader-content-max);
            width: 100%;
            margin-inline: auto;
            overflow-wrap: break-word;
            word-break: break-word;
            min-width: 0;
        }


        .chapter-content h2 {
            margin-top: var(--spacing-8);
            margin-bottom: var(--spacing-4);
            color: var(--color-primary);
        }

        .chapter-content h3 {
            margin-top: var(--spacing-6);
            margin-bottom: var(--spacing-3);
            color: var(--accent-2);
        }






        /* Footer */
        .page-footer {
            text-align: center;
            padding: var(--spacing-5);
        }

        .page-footer a {
            color: var(--text-tertiary);
            text-decoration: none;
            font-size: var(--font-size-sm);
            transition: color var(--transition-fast);
        }

        .page-footer a:hover {
            color: var(--text-secondary);
        }

        .failed-warning {
            background: var(--color-warning-bg);
            border: 1px solid var(--color-warning);
            color: var(--color-alert-caution-text);
            padding: var(--spacing-4);
            border-radius: var(--radius-md);
            margin: 0 auto var(--spacing-5);
            max-width: var(--reader-content-max);
        }


        /* Strong override: 正文衬线，跟随主题（Editorial/Midnight 用 Fraunces，Mono 用无衬线） */
        .reader-shell .chapter-content.markdown-body {
            font-family: var(--serif);
            font-size: calc(clamp(15px, 1.05rem + 0.1vw, 17px) * var(--reader-font-scale, 1));
            line-height: var(--reader-line-height, 1.85);
            letter-spacing: 0.005em;
        }
        .reader-shell .chapter-content.markdown-body h3 {
            font-family: var(--serif);
            letter-spacing: -.015em;
        }

        .markdown-body pre {
            background: var(--bg-secondary);
            border: 1px solid var(--border-color);
            border-radius: var(--radius-md);
            padding: var(--spacing-4);
            margin: var(--spacing-4) 0;
            overflow-x: auto;
        }

        .markdown-body code {
            background: var(--bg-secondary);
            padding: var(--spacing-1) var(--spacing-2);
            border-radius: var(--radius-xs);
            font-family: var(--mono);
            font-size: 0.88em;
        }
        .markdown-body pre code {
            font-family: var(--mono);
            font-size: 0.9rem;
            line-height: 1.6;
        }


        .markdown-body table {
            border-collapse: collapse;
            width: 100%;
            margin: var(--spacing-4) 0;
        }

        .markdown-body table td {
            border: 1px solid var(--border-color);
            padding: var(--spacing-2) var(--spacing-3);
        }

        .markdown-body table th {
            background: var(--bg-secondary);
            font-weight: var(--font-weight-semibold);
        }

        .markdown-body table tr:nth-child(2n) {
            background: var(--bg-secondary);
        }

        .markdown-body a {
            color: var(--reader-accent, var(--color-primary));
            text-decoration: underline;
            text-decoration-color: color-mix(in srgb, var(--reader-accent, var(--color-primary)) 30%, transparent);
            text-underline-offset: 0.2em;
            text-decoration-thickness: 1px;
            transition: text-decoration-color 0.2s;
        }

        .markdown-body a:hover {
            text-decoration-color: var(--reader-accent, var(--color-primary));
        }

        .markdown-body img {
            max-width: 100%;
            height: auto;
            border-radius: var(--radius-md);
            margin: var(--spacing-4) 0;
        }

        /* Mobile */
        @media (max-width: 768px) {
            html,
            body {
                max-width: 100%;
                overflow-x: hidden;
            }

            .header {
                padding: var(--spacing-2) var(--spacing-3);
            }

            .reader-container {
                width: 100%;
                max-width: 100%;
                grid-template-columns: 1fr;
                gap: var(--spacing-4);
                padding: var(--spacing-4);
            }

            .header-toolbar {
                gap: var(--spacing-1);
                margin-bottom: var(--spacing-2);
                justify-content: flex-start;
            }

            .toolbar-right {
                width: 100%;
                flex-direction: row;
                flex-wrap: wrap;
                align-items: center;
                justify-content: flex-start;
                gap: 6px;
            }

            .toolbar-divider {
                display: none;
            }

            .download-dropdown .header-btn {
                justify-content: center;
            }

            /* 移动端按钮紧凑：只留图标，藏文字 label */
            .header-btn {
                min-height: 38px;
                min-width: 38px;
                padding: 6px 8px;
                font-size: 0;
            }
            .header-btn svg {
                font-size: 1.05rem;
            }
            /* 主题按钮 / 下载按钮里的文字标签在移动端隐藏，靠 title 提示 */
            .header-btn #favText {
                display: none;
            }

            /* 三主题控件移动端：只留色块圆点，藏文字 */
            .theme-seg-btn { padding: 5px 6px; }
            .theme-seg-btn .theme-seg-label { display: none; }
            .theme-seg-btn .theme-seg-swatch { width: 15px; height: 15px; }

            .toolbar-settings {
                justify-content: flex-start;
                gap: 6px;
            }

            .markdown-body {
                width: 100%;
                max-width: 100%;
                min-width: 0;
            }

            .sidebar {
                order: 2;
                max-height: min(36vh, 260px);
                position: static;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
            }

            .content-area {
                order: 1;
                padding: var(--spacing-4) var(--spacing-3);
            }

            .sidebar-title {
                font-size: var(--font-size-base);
            }

            .chapter-item {
                padding: var(--spacing-2) var(--spacing-3);
                min-height: 44px;
                display: grid;
                grid-template-columns: auto 1fr;
                align-items: start;
            }

            .chapter-title-display {
                font-size: var(--font-size-2xl);
            }

            .failed-warning {
                max-width: none;
                margin-left: 0;
                margin-right: 0;
            }

            .chapter-content {
                padding: 0;
                max-width: var(--reader-content-max);
            }

            .markdown-body {
                /* font-size/line-height 由 reader-final.css 终值层 !important 统一（原 14px/1.62 死值已删） */
                overflow-wrap: anywhere;
                word-break: break-word;
            }

            .chapter-content :where(h1, h2, h3, h4, h5, h6, p, li, blockquote, span, strong, em) {
                overflow-wrap: anywhere;
                word-break: break-word;
            }

            .chapter-content > * {
 max-width: var(--reader-content-max);
            }

            .chapter-content p {
                text-align: left;
                margin-bottom: var(--spacing-4);
            }

            .markdown-body table {
                display: block;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                white-space: nowrap;
            }

            .code-block {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                max-width: 100%;
            }

            .chapter-content table {
                max-width: 100%;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }

            .download-menu {
                left: 0;
                right: 0;
                min-width: 0;
            }
        }

        @media (max-width: 600px) {
            .header-toolbar {
                margin-bottom: var(--spacing-2);
            }

            .toolbar-right {
                gap: var(--spacing-1);
            }

            .book-title {
                font-size: var(--font-size-base);
            }

            .book-row {
                flex-direction: column;
                gap: var(--spacing-1);
            }

            .book-sub-row {
                font-size: var(--font-size-xs);
            }

            .book-meta-item, .book-status {
                font-size: 10px;
                padding: 1px var(--spacing-2);
            }

            .reader-container {
                padding: var(--spacing-2);
                gap: var(--spacing-3);
            }

            .header-btn {
                padding: var(--spacing-1) var(--spacing-3);
                font-size: var(--font-size-xs);
                min-height: 44px;
            }

            .toolbar-divider {
                height: 16px;
            }

            

            

            

            

            

            

            

            

            

            

            .sidebar {
                max-height: min(34vh, 240px);
                padding: var(--spacing-3);
                -webkit-overflow-scrolling: touch;
            }

            .content-area {
                padding: var(--spacing-3);
                min-height: 350px;
            }

            .chapter-header {
                margin-bottom: var(--spacing-4);
                padding-bottom: var(--spacing-3);
            }

            .chapter-title-display {
                font-size: var(--font-size-lg);
            }

            .chapter-content {
                padding: 0;
            }



            .download-menu {
                left: 0;
                right: 0;
                min-width: 0;
            }
        }

        @media (max-width: 480px) {
            .header-toolbar {
                margin-bottom: var(--spacing-1);
            }

            .book-title {
                font-size: var(--font-size-sm);
            }

            .book-sub-row {
                display: none;
            }

            .chapter-title-display {
                font-size: var(--font-size-base);
            }

            /* 正文 14px/1.58 死值已删：reader-final.css 移动端终值层 !important 统一 */

            .sidebar {
                padding: var(--spacing-2);
                max-height: min(32vh, 220px);
            }

            .chapter-item {
                padding: var(--spacing-2) var(--spacing-3);
                font-size: var(--font-size-xs);
                min-height: 44px;
                display: grid;
                grid-template-columns: auto 1fr;
                align-items: start;
            }


        }

        /* WeRead-inspired visual refresh (UI only) */
        .reader-shell {
            /* 阅读区 token 全部映射 design-system 语义 token，
               editorial / midnight / mono 三全局主题切换时自动跟随，不写死色值 */
            --reader-content-max: 42rem;
            /* Aa 面板：字号/行距/栏宽可调，由 reader.html 的 JS 动态覆写 */
            --reader-font-scale: 1;
            --reader-line-height: 1.85;
            --reader-bg: var(--paper);
            --reader-bg-soft: var(--paper-3);
            --reader-surface: var(--paper-2);
            --reader-surface-soft: var(--paper-3);
            --reader-text: var(--ink);
            --reader-text-muted: var(--ink-mute);
            --reader-text-secondary: var(--ink-soft);
            --reader-border: var(--line);
            --reader-sidebar-border: var(--line);
            --reader-accent: var(--accent);
            --reader-accent-strong: var(--accent-ink);
            --reader-header-bg: color-mix(in srgb, var(--paper) 86%, transparent);
            --reader-sidebar-bg: transparent;
            --reader-chapter-hover: color-mix(in srgb, var(--accent) 6%, transparent);
            --reader-item-hover: color-mix(in srgb, var(--accent) 6%, transparent);
            --reader-item-active: transparent;
        }

        body.reader-shell {
            background: var(--reader-bg);
            color: var(--reader-text);
        }

        .header.header-hidden {
            transform: translateY(-100%);
            opacity: 0;
            pointer-events: none;
        }

        .dark .header {
            background: var(--reader-header-bg, rgba(13, 17, 23, 0.9));
            box-shadow: 0 1px 8px rgba(0, 0, 0, 0.2);
        }

        .book-title {
            color: var(--reader-text);
            text-shadow: none;
        }


        /* 状态色由 design-system 的 --ok/--warn token 统一提供（见文件首部基础层） */


        .header-btn:hover {
            background: var(--reader-surface-soft);
            color: var(--reader-text);
            border-color: var(--reader-accent);
            transform: translateY(-1px);
        }

        .toolbar-divider {
            background: var(--reader-border);
        }

        

        

        

        

        

        

        .reader-container {
            max-width: min(1240px, calc(100vw - 32px));
            margin: 0 auto;
            grid-template-columns: 260px minmax(0, 1fr);
            gap: clamp(var(--spacing-3), 1.8vw, var(--spacing-6));
            padding: clamp(var(--spacing-3), 1.8vw, var(--spacing-6));
        }

        .sidebar {
            background: var(--reader-sidebar-bg, #efe9dd);
            border: 1px solid var(--reader-sidebar-border, var(--reader-border));
            box-shadow: none;
            scrollbar-width: thin;
            scrollbar-color: var(--reader-border) transparent;
        }



        .chapter-item {
            display: flex;
            align-items: baseline;
            gap: 0;
            padding: 11px 12px 11px 14px;
            cursor: pointer;
            transition: background 0.18s ease, color 0.18s ease;
            font-size: 14px;
            color: var(--reader-text-secondary);
            background: transparent;
            border: none;
            border-radius: 10px;
            position: relative;
            transform: none;
            box-shadow: none;
            min-height: auto;
        }

        .dark .chapter-item {
            background: transparent;
        }

        .chapter-item:hover {
            background: var(--reader-item-hover, var(--reader-chapter-hover, rgba(0,0,0,0.04)));
            color: var(--reader-text);
            transform: none;
            box-shadow: none;
        }

        .dark .chapter-item:hover {
            background: var(--reader-chapter-hover, var(--bg-tertiary));
        }

        .chapter-item.active {
            background: var(--reader-item-active, var(--reader-chapter-hover, rgba(0,0,0,0.04)));
            color: var(--reader-text);
            font-weight: 500;
            box-shadow: none;
        }

        /* dark 下的 active 底色已由 token 化 hover/active 规则统一处理 */

        .chapter-item.active::before {
            content: "";
            position: absolute;
            left: 0;
            top: 50%;
            transform: translateY(-50%);
            width: 3px;
            height: 18px;
            border-radius: 0 999px 999px 0;
            background: var(--reader-accent);
        }

        .chapter-number {
            flex-shrink: 0;
            width: auto;
            height: auto;
            display: inline;
            align-items: initial;
            justify-content: initial;
            border-radius: 0;
            background: transparent;
            font-family: var(--lux-serif);
            font-style: italic;
            font-size: 13px;
            font-weight: 400;
            font-variant-numeric: tabular-nums;
            color: var(--reader-text-secondary);
            border: 0;
            padding: 0;
            min-width: 20px;
            margin: 0 9px 0 0;
            white-space: nowrap;
        }
        .chapter-item.active .chapter-number {
            background: transparent;
            color: var(--reader-accent);
            font-weight: 600;
        }

        .chapter-title {
            color: var(--reader-text);
            font-size: 14px;
            font-weight: 400;
            line-height: 1.4;
            -webkit-line-clamp: 1;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            display: block;
            -webkit-box-orient: unset;
        }

        .chapter-item.active .chapter-title {
            color: var(--reader-accent);
        }

        .content-area {
            background: var(--reader-surface);
            border-radius: 16px;
            border: 1px solid var(--reader-border);
            padding: clamp(16px, 3vw, 36px);
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
            min-height: 500px;
        }

        .dark .content-area {
            background: var(--reader-surface);
            box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
        }


        .chapter-title-display {
            font-size: clamp(1.5rem, 2vw, 2.2rem);
            font-weight: 700;
            color: var(--reader-text);
            line-height: 1.3;
            margin-bottom: 0.3em;
        }


        .markdown-body {
            color: var(--reader-text);
            font-family: var(--serif);
            font-size: calc(clamp(15px, 0.8vw + 9.5px, 16.5px) * var(--reader-font-scale, 1));
            line-height: var(--reader-line-height, 1.8);
            letter-spacing: 0;
            text-rendering: optimizeLegibility;
            -webkit-font-smoothing: antialiased;
            min-width: 0;
        }

        .reader-shell .chapter-content.markdown-body {
            font-size: calc(clamp(15.5px, 0.85vw + 10px, 17.5px) * var(--reader-font-scale, 1));
            line-height: var(--reader-line-height, 1.75);
        }

        .chapter-content p {
            text-align: left;
            margin-bottom: 0.95em;
            text-indent: 2em;
            color: var(--reader-text);
            text-wrap: pretty;
        }


        .chapter-content h2 {
            font-size: 1.5em;
            font-weight: 700;
            margin: 2.5em 0 1.2em;
        }

        .chapter-content h3 {
            font-size: 1.25em;
            font-weight: 600;
            margin: 1.5em 0 0.8em;
            color: var(--reader-accent);
        }

        .failed-warning {
            border-color: color-mix(in srgb, var(--accent) 40%, var(--line));
            background: var(--accent-soft);
            color: var(--accent-ink);
        }






        .download-menu {
            border-color: var(--reader-border);
            background: var(--reader-surface);
        }


        @media (max-width: 900px) {
            .reader-container {
                grid-template-columns: 1fr;
                max-width: 100% !important;
                margin: 0 !important;
                padding: var(--spacing-3);
            }
            .header-content {
                max-width: 100% !important;
                margin: 0 !important;
            }

            .content-area {
                order: 1;
 max-width: 100%;
 margin: 0;
            }
            /* 移动端正文元素全部占满宽度，不居中留白 */

            .sidebar {
                order: 2;
                position: static;
                max-height: min(38vh, 280px);
            }
        }

        @media (max-width: 768px) {
            .header {
                padding: var(--spacing-2) var(--spacing-3);
            }

            .book-row {
                gap: var(--spacing-2);
            }

            .book-title {
                font-size: var(--font-size-lg);
                white-space: normal;
                overflow: visible;
            }

            

            .reader-container {
                width: 100%;
                max-width: 100%;
                padding: var(--spacing-2);
                gap: var(--spacing-3);
            }

            .content-area {
                padding: var(--spacing-4) var(--spacing-3);
                border-radius: var(--radius-lg);
            }

            .chapter-title-display {
                font-size: clamp(1.2rem, 4.8vw, 1.45rem);
            }

            .chapter-content * {
                min-width: 0;
                box-sizing: border-box;
            }

            .chapter-content :where(pre, table, .code-block, .code-block-wrapper, .diagram-block, .katex-display, img, svg, canvas) {
                max-width: 100%;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }
        }

        @media (max-width: 480px) {
            .book-title {
                font-size: var(--font-size-base);
            }

            .reader-container {
                padding: 8px;
                gap: 10px;
            }

            .content-area {
                padding: var(--spacing-3) var(--spacing-2);
            }

            .sidebar {
                border-radius: var(--radius-lg);
            }
        }
        /* Enhanced Markdown Styles */
        .code-block {
            background: var(--bg-secondary);
            border: 1px solid var(--border-color);
            border-radius: var(--radius-md);
            padding: var(--spacing-4);
            margin: var(--spacing-4) 0;
            overflow-x: auto;
        }

        .code-block-wrapper {
            margin: var(--spacing-4) 0;
            border: 1px solid var(--border-color);
            border-radius: var(--radius-md);
            overflow: hidden;
            background: var(--bg-elevated);
        }

        .code-block-toolbar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: var(--spacing-2);
            padding: var(--spacing-2) var(--spacing-3);
            background: var(--bg-secondary);
            border-bottom: 1px solid var(--border-color-light);
            min-width: 0;
        }

        .code-block-language {
            font-family: var(--font-family-mono);
            font-size: var(--font-size-xs);
            color: var(--text-secondary);
            text-transform: lowercase;
            letter-spacing: 0.02em;
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .code-block-wrapper .code-block {
            margin: 0;
            border: none;
            border-radius: 0;
        }

        .code-block code {
            background: transparent;
            padding: 0;
            border-radius: 0;
            font-family: var(--font-family-mono);
            font-size: var(--font-size-sm);
            line-height: var(--line-height-relaxed);
        }

        /* midnight 主题下 hljs 暗色 token 覆盖 — github.min.css 是浅色主题，
           暗模式下需要手动覆盖关键 token 颜色，否则代码区刺眼 */
        .dark .hljs { color: #c9d1d9; background: transparent; }
        .dark .hljs-comment, .dark .hljs-quote { color: #8b949e; }
        .dark .hljs-keyword, .dark .hljs-selector-tag, .dark .hljs-type { color: #ff7b72; }
        .dark .hljs-string, .dark .hljs-attr, .dark .hljs-template-tag { color: #a5d6ff; }
        .dark .hljs-number, .dark .hljs-literal { color: #79c0ff; }
        .dark .hljs-title, .dark .hljs-function .hljs-title, .dark .hljs-section { color: #d2a8ff; }
        .dark .hljs-built_in, .dark .hljs-class .hljs-title { color: #ffa657; }
        .dark .hljs-variable, .dark .hljs-name { color: #ffa657; }
        .dark .hljs-meta { color: #8b949e; }
        .dark .code-block-wrapper { background: #161b22; border-color: #30363d; }
        .dark .code-block-toolbar { background: #0d1117; border-bottom-color: #30363d; }

        /* h4-h6 补样式 — AI 生成的书可能有四级标题 */
        .chapter-content h4, .markdown-body h4 {
            font-family: var(--serif); font-weight: 600;
            font-size: 1.1em; margin: 1.5em 0 0.6em; color: var(--text-primary);
        }
        .chapter-content h5, .markdown-body h5 {
            font-family: var(--serif); font-weight: 600;
            font-size: 1.05em; margin: 1.3em 0 0.5em; color: var(--text-secondary);
        }
        .chapter-content h6, .markdown-body h6 {
            font-family: var(--ui-sans); font-weight: 600;
            font-size: .9em; margin: 1.2em 0 0.4em; color: var(--text-tertiary);
            text-transform: uppercase; letter-spacing: .04em;
        }

        .katex {
            font-size: 1.1em;
        }

        .katex-display {
            margin: var(--spacing-5) 0;
            overflow-x: auto;
            overflow-y: hidden;
        }

        @media (max-width: 768px) {
            .code-block-toolbar {
                padding: var(--spacing-2);
            }

            .code-copy-btn {
                min-height: 40px;
                font-size: var(--font-size-sm);
            }

        }

        .markdown-body ol {
            padding-left: var(--spacing-6);
            margin: var(--spacing-4) 0;
        }

        .markdown-body li {
            margin: var(--spacing-2) 0;
        }

        .markdown-body hr {
            height: 2px;
            padding: 0;
            margin: var(--spacing-6) 0;
            background: var(--border-color);
            border: none;
        }

        /* Render polish: cleaner reading blocks */
        .code-block {
            background: transparent;
            border: none;
            padding: var(--spacing-4);
            margin: 0;
        }

        .code-block code {
            font-size: 13px;
            line-height: 1.58;
        }

        .markdown-body blockquote {
            border-left: 3px solid var(--reader-accent);
            padding: 1em 1.5em;
            margin: 1.5em 0;
            background: rgba(0,0,0,0.02);
            border-radius: 0 8px 8px 0;
            font-style: italic;
            color: var(--reader-text-muted, var(--text-secondary));
        }

        .markdown-body table {
            display: block;
            width: 100%;
            overflow-x: auto;
            border-radius: 10px;
            border: 1px solid var(--reader-border, var(--border-color));
            background: var(--reader-surface, var(--bg-elevated));
        }

        .markdown-body table th {
            background: var(--reader-surface-soft, var(--bg-secondary));
        }

        .markdown-body table td {
            border-color: var(--reader-border, var(--border-color));
            white-space: nowrap;
        }

        .chapter-content :where(pre, table, .code-block, .code-block-wrapper, .diagram-block, .katex-display, .diagram-source) {
            max-width: 100%;
            min-width: 0;
            box-sizing: border-box;
        }

        @media (max-width: 768px) {
            .code-block {
                padding: var(--spacing-3);
            }

            .code-block code {
                font-size: 13px;
                line-height: 1.5;
            }

            .markdown-body table {
                font-size: 13px;
            }

            .chapter-content :where(pre, table, .code-block, .code-block-wrapper, .diagram-block, .katex-display, img, svg, canvas) {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }
        }

        /* Reader controls + compact chapter drawer */
        /* 阅读区配色变量：从 design-system 语义 token 派生，跟随全局主题（纸/夜/墨）自动适配。
           阅读区独立主题（sepia/white/green）已移除，全局主题已足够。 */
        .reader-shell {
            --reader-bg: var(--paper);
            --reader-bg-soft: var(--paper-3);
            --reader-surface: var(--paper-2);
            --reader-surface-soft: var(--paper-3);
        }

        /* dark（midnight）下无需覆盖：--reader-* 全部引用主题感知的 design token，自动翻转到深色 */

        

        

        

        

        

        

        .sidebar-toggle-btn {
            min-width: 104px;
            justify-content: center;
        }

        .sidebar-close-btn {
            border: 1px solid var(--reader-border, var(--border-color));
            background: var(--reader-surface, var(--bg-elevated));
            color: var(--reader-text-muted, var(--text-secondary));
            border-radius: var(--radius-full);
            width: 32px;
            height: 32px;
            cursor: pointer;
            display: none;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }

        .sidebar-close-btn:hover {
            color: var(--reader-text, var(--text-primary));
            border-color: var(--reader-accent, var(--color-primary));
        }

        .sidebar {
            padding: var(--spacing-3);
            max-height: calc(100vh - 150px);
        }

        .chapter-list {
            gap: 6px;
        }

        .chapter-item {
            min-height: 44px;
            padding: 8px 10px;
            border-radius: 10px;
            gap: 8px;
        }

        .chapter-number {
            font-size: 10px;
            padding: 2px 6px;
            margin-top: 0;
        }

        .chapter-title {
            font-size: 13px;
            line-height: 1.35;
            -webkit-line-clamp: 1;
        }

        .reader-shell.sidebar-hidden .reader-container {
            grid-template-columns: minmax(0, 1fr);
        }

        .reader-shell.sidebar-hidden .sidebar {
            display: none;
        }

        .sidebar-backdrop {
            display: none;
        }

        @media (max-width: 900px) {
            .reader-shell.sidebar-hidden .sidebar {
                display: block;
            }

            .sidebar {
                position: fixed;
                top: 0;
                left: 0;
                width: min(84vw, 320px);
                height: 100vh;
                max-height: 100vh;
                border-radius: 0 var(--radius-xl) var(--radius-xl) 0;
                z-index: calc(var(--z-modal) + 3);
                transform: translateX(-108%);
                transition: transform var(--transition-base);
                overflow-y: auto;
            }

            .reader-shell.sidebar-drawer-open .sidebar {
                transform: translateX(0);
            }

            .sidebar-backdrop {
                position: fixed;
                inset: 0;
                background: rgba(8, 12, 18, 0.48);
                z-index: calc(var(--z-modal) + 2);
            }

            .reader-shell.sidebar-drawer-open .sidebar-backdrop {
                display: block;
            }

            .sidebar-close-btn {
                display: inline-flex;
            }

            .chapter-title {
                -webkit-line-clamp: 2;
            }
        }

        @media (max-width: 768px) {
            .download-dropdown .header-btn {
                min-height: 44px;
                justify-content: center;
            }

            .back-link-inline {
                min-height: 44px;
                align-self: flex-start;
                margin-left: 0;
                max-width: 100%;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            
        }

        @media (max-width: 600px) {
            .back-link-inline {
                padding: var(--spacing-1) var(--spacing-3);
                font-size: var(--font-size-xs);
            }
        }


        .header-toolbar {
            justify-content: flex-start;
            align-items: center;
            gap: var(--spacing-1);
            margin-bottom: 4px;
        }

        .toolbar-right {
            flex: 1;
            min-width: 0;
            justify-content: flex-start;
            gap: var(--spacing-1);
        }

        .back-link {
            min-height: 36px;
            padding: 6px 10px;
            font-size: 13px;
            border-radius: var(--radius-full);
        }

        

        .back-link-inline {
            order: 99;
            margin-left: auto;
            margin-right: 0;
            white-space: nowrap;
        }


        .book-title {
            font-size: clamp(0.96rem, 0.85vw, 1.1rem);
            line-height: 1.28;
            margin: 0;
        }


        .book-status {
            font-size: 10px;
            padding: 1px 6px;
        }

        /* 副标题行恢复显示：有 subtitle 时才渲染内容（见 reader.html renderSubRow） */
        .book-sub-row {
            font-size: 12.5px;
        }


        @media (max-width: 768px) {
            .header {
                padding: 8px 10px;
            }

            .header-toolbar {
                align-items: flex-start;
                gap: 6px;
                margin-bottom: 4px;
            }

            .toolbar-right {
                order: 1;
                width: 100%;
                display: grid;
                grid-template-columns: repeat(2, minmax(0, 1fr));
                gap: 6px;
            }

            .toolbar-right > * {
                min-width: 0;
            }

            .toolbar-settings {
                grid-column: 1 / -1;
                justify-content: flex-end;
            }

            .toolbar-divider {
                display: none;
            }

            

            .back-link-inline {
                order: 2;
                margin-left: auto;
                min-height: 38px;
                align-self: center;
                font-size: 12px;
                padding: 6px 10px;
            }

            .book-title {
                font-size: 14px;
                line-height: 1.3;
            }

            .book-status {
                font-size: 10px;
                padding: 1px 6px;
            }
        }

        @media (max-width: 600px) {
            .sidebar-toggle-btn {
                grid-column: 1 / -1;
            }

            .book-row {
                flex-direction: row;
                align-items: center;
                gap: 6px;
            }

            .book-meta {
                width: auto;
                max-width: 52%;
                justify-content: flex-end;
                overflow: hidden;
            }
        }

        /* Header layout refinement: denser top bar with stronger alignment */
        .header-content {
            max-width: min(1760px, calc(100vw - 16px));
        }


        .back-link-inline {
            order: 0;
            margin: 0;
            justify-self: start;
        }


        .book-meta {
            display: flex;
            align-items: center;
            gap: 6px;
            flex-wrap: wrap;
        }

        .book-status {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-height: 22px;
            padding: 2px 8px;
            line-height: 1;
            white-space: nowrap;
        }

        .book-meta-item.meta-author {
            justify-content: flex-start;
            max-width: min(42vw, 360px);
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .sidebar-toggle-btn {
            min-width: 92px;
        }

        .book-row {
            align-items: center;
            gap: 8px;
        }


        .book-meta {
            justify-content: flex-end;
        }

        @media (max-width: 900px) {
            .header {
                padding: 8px 10px;
            }

            .header-toolbar {
                grid-template-columns: 1fr;
                gap: 6px;
                margin-bottom: 5px;
            }

            .back-link-inline {
                width: 100%;
                justify-self: stretch;
                justify-content: center;
                order: 2;
            }

            .toolbar-right {
                order: 1;
                width: 100%;
                display: grid;
                grid-template-columns: repeat(3, minmax(0, 1fr));
                gap: 6px;
                justify-content: stretch;
            }

            .toolbar-right > * {
                min-width: 0;
            }

            

            

            .toolbar-settings {
                grid-column: 1 / -1;
                justify-content: space-between;
            }

            

            

            .book-row {
                flex-direction: column;
                align-items: flex-start;
                gap: 4px;
            }

            .book-title {
                width: 100%;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                font-size: 14px;
            }

            .book-meta {
                width: 100%;
                max-width: 100%;
                justify-content: flex-start;
                gap: 4px;
            }
        }

        @media (max-width: 480px) {
            .header {
                padding: 6px 8px;
            }

            .back-link {
                min-height: 38px;
                padding: 6px 8px;
                font-size: 12px;
            }

            .toolbar-right {
                gap: 5px;
            }
        }

        /* Header final layout: desktop + mobile aligned, single source of truth */
        .header-toolbar {
            display: grid;
            grid-template-columns: minmax(0, 1fr) auto;
            grid-template-areas: "controls back";
            align-items: center;
            gap: 8px;
            margin-bottom: 6px;
        }

        .toolbar-right {
            grid-area: controls;
            min-width: 0;
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 6px;
            justify-content: flex-start;
        }

        .back-link-inline {
            grid-area: back;
            margin: 0;
            justify-self: end;
            min-height: 38px;
            padding: 6px 10px;
            font-size: 12.5px;
        }

        .back-link {
            min-height: 38px;
            padding: 6px 10px;
            font-size: 12.5px;
        }

        :root:not(.dark) .header {
            background: var(--reader-header-bg, rgba(255, 252, 247, 0.85));
            border-bottom: 1px solid rgba(0, 0, 0, 0.06);
            box-shadow: 0 1px 8px rgba(0, 0, 0, 0.04);
        }

        :root:not(.dark) .back-link {
            background: var(--bg-tertiary);
            border: 1px solid var(--reader-border);
            color: var(--reader-text);
        }

        :root:not(.dark) .back-link:hover {
            background: var(--reader-chapter-hover, rgba(0,0,0,0.04));
            border-color: var(--reader-accent);
            color: var(--reader-text);
        }

        :root:not(.dark) .header 

        :root:not(.dark) .header 


        :root:not(.dark) .header 

        :root:not(.dark) .header 

        :root:not(.dark) .header 

        :root:not(.dark) .book-status {
            background: rgba(0, 0, 0, 0.04);
            border-color: var(--reader-border);
            color: var(--reader-text-muted);
        }

        :root:not(.dark) .header .book-title {
            color: var(--reader-text);
            text-shadow: none;
        }

        :root:not(.dark) .header .book-meta {
            color: var(--reader-text-muted);
        }

        :root:not(.dark) .header .book-sub-row {
            color: var(--reader-text-muted);
        }

        @media (max-width: 900px) {
            .header {
                padding: 8px 8px 6px;
            }

            .header-content {
                max-width: min(100vw - 10px, 1280px);
            }

            .header-toolbar {
                display: grid;
                grid-template-columns: auto minmax(0, 1fr);
                align-items: start;
                column-gap: 6px;
                row-gap: 6px;
                margin-bottom: 6px;
            }

            .back-link-inline {
                grid-column: 1;
                grid-row: 1;
                min-height: 32px;
                padding: 5px 9px;
                font-size: 11.5px;
                line-height: 1;
                align-self: start;
            }

            .toolbar-right {
                grid-column: 2;
                grid-row: 1;
                min-width: 0;
                display: grid;
                grid-template-columns: minmax(0, 1fr) auto;
                grid-template-areas:
                    "theme settings"
                    "download toc";
                gap: 6px;
                align-items: center;
                justify-items: stretch;
            }

            

            .toolbar-settings {
                grid-area: settings;
                min-width: 0;
                justify-content: flex-end;
                gap: 6px;
            }

            .download-dropdown {
                grid-area: download;
                width: 100%;
            }

            .toolbar-right > .sidebar-toggle-btn {
                grid-area: toc;
                width: 100%;
                min-width: 0;
                position: relative;
                z-index: 2;
                gap: 4px;
            }

            .toolbar-divider {
                display: none;
            }

            .toolbar-right > .sidebar-toggle-btn {
                width: 100%;
                min-height: 32px;
                justify-content: center;
                padding: 4px 8px;
                font-size: 11.5px;
                line-height: 1;
            }

            .download-dropdown .header-btn span:not(.icon) {
                display: none;
            }

            .toolbar-right > .sidebar-toggle-btn #sidebarToggleText {
                display: inline;
                font-size: 11px;
                line-height: 1;
            }

            

            

            

            

            

            

            .book-row {
                display: block;
                margin-top: 2px;
            }

            .book-title {
                width: 100%;
                font-size: 13.5px;
                line-height: 1.3;
                white-space: normal;
                overflow: hidden;
                text-overflow: initial;
                display: -webkit-box;
                -webkit-line-clamp: 2;
                -webkit-box-orient: vertical;
            }

            .book-meta {
                width: 100%;
                max-width: 100%;
                margin-top: 4px;
                gap: 4px;
                justify-content: flex-start;
                flex-wrap: nowrap;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: none;
            }

            .book-meta-item.meta-author {
                max-width: 58vw;
            }

            .book-meta::-webkit-scrollbar {
                display: none;
            }

            .book-sub-row {
                display: none;
            }

            .sidebar {
                transform: translateX(-108%) !important;
            }

            .reader-shell.sidebar-drawer-open .sidebar {
                transform: translateX(0) !important;
            }

            .sidebar-backdrop {
                display: none;
            }

            .reader-shell.sidebar-drawer-open .sidebar-backdrop {
                display: block;
            }
        }

        @media (max-width: 480px) {
            .header {
                padding: 6px 6px 4px;
            }

            .toolbar-right {
                column-gap: 5px;
                row-gap: 5px;
            }

            .back-link-inline {
                min-height: 32px;
                padding: 4px 8px;
                font-size: 11px;
            }

            .toolbar-right > .sidebar-toggle-btn {
                min-height: 32px;
                font-size: 11px;
                padding: 4px 6px;
            }

            .toolbar-settings {
                gap: 4px;
            }

            

            .book-title {
                font-size: 13px;
                line-height: 1.28;
            }
        }

        /* Mobile one-line toolbar: all controls on top in a single row */
        @media (max-width: 900px) {
            .header-toolbar {
                display: flex !important;
                flex-wrap: nowrap !important;
                align-items: center;
                gap: 4px;
                justify-content: flex-start;
                overflow: hidden;
            }

            .back-link-inline {
                order: 0;
                flex: 0 0 auto;
                min-height: 32px;
                padding: 4px 8px;
                font-size: 11px;
                white-space: nowrap;
                max-width: 96px;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .toolbar-right {
                flex: 1 1 auto !important;
                min-width: 0;
                display: flex !important;
                flex-wrap: nowrap !important;
                align-items: center;
                gap: 4px;
                overflow: visible;
            }

            .toolbar-right > * {
                flex: 0 0 auto !important;
                width: auto !important;
                min-width: 0;
            }

            

            .download-dropdown .header-btn span:not(.icon) {
                display: none;
            }

            .toolbar-right > .sidebar-toggle-btn #sidebarToggleText {
                display: none;
            }

            .toolbar-settings {
                display: inline-flex;
                align-items: center;
                gap: 4px;
                min-width: 0;
            }

            

            

            

            

            

            
        }

        /* Final mobile reading polish: cleaner mixed text/image flow */
        .reader-shell .chapter-content.markdown-body {
            color: var(--reader-text, var(--text-primary));
        }

        .reader-shell .chapter-content.markdown-body :where(p, li) {
            text-align: justify;
            text-justify: inter-ideograph;
            text-align-last: auto;
            overflow-wrap: break-word;
            word-break: normal;
            hyphens: auto;
        }

        .reader-shell .chapter-content.markdown-body p {
            margin: 0 0 1em;
        }

        .reader-shell .chapter-content.markdown-body :where(h1, h2, h3, h4, h5, h6) {
            text-align: left;
            word-break: normal;
            overflow-wrap: break-word;
        }

        .reader-shell .chapter-content.markdown-body :where(ul, ol) {
            margin: 0.8em 0 1em;
            padding-left: 1.25em;
        }

        .reader-shell .chapter-content.markdown-body img {
            display: block;
            margin: 0.95em auto;
            max-width: 100%;
            height: auto;
        }

        .reader-shell .chapter-content.markdown-body :where(.code-block-wrapper, .diagram-block, blockquote, table, .katex-display) {
            margin: 1em 0;
        }

        @media (max-width: 768px) {
            .reader-shell .content-area {
                padding: var(--spacing-3) var(--spacing-3);
            }

            .reader-shell .chapter-content.markdown-body {
                font-size: 14px;
                line-height: 1.78;
                letter-spacing: 0.01em;
            }

            .reader-shell .chapter-content.markdown-body :where(pre, .code-block, .diagram-source, table) {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }

            .reader-shell .chapter-content.markdown-body :where(pre, code, .code-block, .diagram-source code) {
                text-align: left;
                word-break: normal;
                overflow-wrap: normal;
                hyphens: none;
            }

        }

        /* 旧版冷色对比守卫已移除：标题与目录颜色统一由 --reader-*（= design token）提供，
           在 editorial/midnight/mono 下都保持同一套纸墨语言 */

        /* Final mobile override: one-row controls, no clipping, stable drawer/menu on iPhone/Safari */
        @media (max-width: 900px) {
            .header {
                padding: calc(env(safe-area-inset-top) + 6px) 8px 4px !important;
            }

            .header-content {
                max-width: 100% !important;
            }

            /* ── 移动端工具栏：统一 36px 方形图标按钮 ── */
            .header-toolbar {
                display: flex !important;
                align-items: center;
                flex-wrap: nowrap !important;
                justify-content: space-between;
                gap: 4px;
                margin-bottom: 6px;
                padding: 0;
                border-radius: 0;
                overflow: visible;
            }

            /* 所有移动端工具栏按钮统一尺寸 — 44px 触摸目标 (Apple HIG) */
            .header-toolbar .header-btn,
            .header-toolbar .back-link-inline {
                flex: 0 0 auto;
                width: 40px !important;
                height: 40px !important;
                min-width: 44px !important;
                min-height: 44px !important;
                padding: 0 !important;
                margin: 0 2px !important;
                border-radius: 50% !important;
                justify-content: center !important;
                align-items: center !important;
                font-size: 0 !important; /* 隐藏文字 */
                gap: 0 !important;
            }

            .header-toolbar .header-btn svg,
            .header-toolbar .header-btn .icon,
            .header-toolbar .back-link-inline svg,
            .header-toolbar .back-link-inline .icon {
                font-size: 18px;
                width: 18px;
                height: 18px;
                flex-shrink: 0;
            }

            /* 隐藏所有按钮的文字 span */
            .header-toolbar .header-btn > span:not(.icon):not(.format-badge),
            .header-toolbar .sidebar-toggle-btn #sidebarToggleText,
            .header-toolbar .back-link-inline .back-link-text,
            .header-toolbar .fav-btn #favText {
                display: none !important;
            }

            /* 返回按钮：左边对齐 */
            .back-link-inline {
                background: transparent !important;
                border: 1px solid transparent !important;
            }

            /* 下载按钮：移动端也是 38x38 圆形图标按钮 */
            .header-toolbar .download-dropdown {
                display: flex !important;
                align-items: center;
            }
            .header-toolbar .download-dropdown .header-btn {
                width: 38px !important;
                height: 38px !important;
                min-width: 38px !important;
                padding: 0 !important;
                border-radius: 50% !important;
                justify-content: center !important;
                font-size: 0 !important;
            }
            .header-toolbar .download-dropdown .header-btn .icon {
                font-size: 18px !important;
            }

            .toolbar-right {
                display: flex !important;
                flex: 1 1 auto;
                width: auto !important;
                min-width: 0;
                align-items: center;
                flex-wrap: nowrap !important;
                justify-content: flex-end !important;
                gap: 4px;
                overflow: visible !important;
            }

            .toolbar-right > * {
                flex: 0 0 auto !important;
                width: auto !important;
                min-width: 0;
            }

            .toolbar-divider {
                display: none !important;
            }

            /* 移动端工具栏做减法：隐藏低频控件（收藏/语言/主题/Aa popover），显示「更多」按钮 */
            .fav-btn { display: none !important; }
            .toolbar-settings { display: none !important; }
            .aa-dropdown { display: none !important; }
            .mobile-more-btn { display: inline-flex !important; }

            /* mobile-more-btn 的 SVG 圆点 */
            .mobile-more-btn svg {
                opacity: 0.8;
            }

            

            

            

            

            

            :root:not(.dark) .header-toolbar {
                background: transparent;
                border: none;
                box-shadow: none;
            }

            .dark .header-toolbar {
                background: rgba(18, 26, 37, 0.68);
                border: 1px solid rgba(86, 104, 128, 0.34);
                box-shadow: inset 0 1px 0 rgba(173, 193, 221, 0.08);
            }

            :root:not(.dark) 

            .dark 

            

            :root:not(.dark) 

            :root:not(.dark) .download-menu {
 background: var(--bg-elevated);
 border: 1px solid var(--line);
 color: var(--ink);
 -webkit-text-fill-color: var(--ink);
            }

            :root:not(.dark) 

            :root:not(.dark) .download-menu-item {
 color: var(--ink);
 -webkit-text-fill-color: var(--ink);
 background: transparent;
                font-weight: 500;
            }

            :root:not(.dark) 

            :root:not(.dark) .download-menu-item:hover {
 color: var(--accent);
 -webkit-text-fill-color: var(--accent);
 background: var(--accent-soft);
            }

            :root:not(.dark) .download-menu-item + .download-menu-item {
 border-top-color: var(--line);
            }

            :root:not(.dark) 

            .dark 

            .dark .download-menu {
                background: var(--bg-elevated) !important;
 border: 1px solid var(--line);
 color: var(--ink);
 -webkit-text-fill-color: var(--ink);
            }

            .dark 

            .dark .download-menu-item {
 color: var(--ink);
 -webkit-text-fill-color: var(--ink);
 background: transparent;
                font-weight: 500;
            }

            .dark 

            .dark .download-menu-item:hover {
 color: var(--accent);
 -webkit-text-fill-color: var(--accent);
 background: var(--accent-soft);
            }

            .dark .download-menu-item + .download-menu-item {
 border-top-color: var(--line);
            }

            .dark 

            #themeMenu 

            #themeMenu 

            #downloadMenu .download-menu-item * {
 color: inherit;
 -webkit-text-fill-color: inherit;
 text-shadow: none;
 opacity: 1;
            }

            #downloadMenu .download-menu-item {
 opacity: 1;
 visibility: visible;
            }

            

            .reader-container {
                grid-template-columns: 1fr !important;
                max-width: 100% !important;
                padding: 8px !important;
                gap: 8px !important;
            }

            .sidebar {
                position: fixed !important;
                top: 0;
                left: 0;
                background: var(--paper) !important;
                width: min(84vw, 320px);
                height: 100vh;
                height: 100dvh;
                max-height: 100dvh;
                transform: translateX(-104%) !important;
                transition: transform var(--transition-base);
                z-index: calc(var(--z-modal) + 19);
 display: block;
                border-radius: 0 14px 14px 0;
            }

            .reader-shell.sidebar-drawer-open .sidebar {
                transform: translateX(0) !important;
            }

            .sidebar-backdrop {
                position: fixed !important;
                inset: 0;
                background: rgba(8, 12, 18, 0.48);
                z-index: calc(var(--z-modal) + 18);
                display: none !important;
            }

            .reader-shell.sidebar-drawer-open .sidebar-backdrop {
                display: block !important;
            }

            .book-row {
                display: block !important;
                gap: 6px;
            }

            .book-title {
                width: 100%;
                font-size: 14px !important;
                line-height: 1.36;
                white-space: normal !important;
                overflow: hidden;
                text-overflow: initial;
                display: -webkit-box;
                -webkit-line-clamp: 3;
                -webkit-box-orient: vertical;
            }

            .book-meta {
                width: 100%;
                margin-top: 4px;
                justify-content: flex-start !important;
                align-items: center;
                flex-wrap: nowrap !important;
                gap: 4px;
                overflow-x: auto;
                scrollbar-width: none;
            }

            .book-status {
                display: none !important;
            }

            .book-meta::-webkit-scrollbar {
                display: none;
            }

            .book-status {
                min-height: 20px;
                font-size: 10px;
                padding: 1px 6px;
            }

            .book-meta-item.meta-author {
                max-width: 44vw !important;
            }

            .book-sub-row {
                display: none !important;
            }
        }

        @media (max-width: 480px) {
            .back-link-inline {
                font-size: 11px;
                padding: 4px 8px;
            }

            .toolbar-right {
                gap: 5px;
            }

            

            

            .header-toolbar {
                padding: 3px 5px;
                border-radius: 12px;
            }
        }

        .menu-sheet-header {
            display: none;
        }

        /* Mobile bottom sheets for theme/download to avoid iOS dropdown glitches */
        @media (max-width: 900px) {
            .menu-sheet-backdrop {
                position: fixed;
                inset: 0;
                background: rgba(6, 12, 20, 0.46);
                backdrop-filter: blur(2px);
                -webkit-backdrop-filter: blur(2px);
                opacity: 0;
                pointer-events: none;
                z-index: calc(var(--z-modal) + 16);
                transition: opacity 0.22s ease;
            }

            .reader-shell.mobile-menu-open .menu-sheet-backdrop {
                opacity: 1;
                pointer-events: auto;
            }

            #themeMenu

            .menu-sheet-handle {
                display: block;
                width: 42px;
                height: 4px;
                border-radius: 999px;
                margin: 2px auto 10px;
                background: rgba(78, 111, 161, 0.38);
            }

            .dark .menu-sheet-handle {
                background: rgba(164, 183, 209, 0.42);
            }

            .menu-sheet-header {
                display: flex;
                align-items: center;
                justify-content: space-between;
                gap: 8px;
                margin: 0 0 8px;
                padding: 0 2px;
            }

            .menu-sheet-title {
                font-size: 13px;
                font-weight: 650;
                color: inherit;
                -webkit-text-fill-color: inherit;
            }

            .menu-sheet-close {
                width: 32px;
                min-width: 32px;
                height: 32px;
                border-radius: 999px;
                border: 1px solid var(--line);
                background: var(--paper);
                color: var(--ink);
                -webkit-text-fill-color: var(--ink);
                font-size: 14px;
                line-height: 1;
                cursor: pointer;
            }

            .dark .menu-sheet-close {
                border-color: var(--line);
                background: var(--paper-2);
                color: var(--ink);
                -webkit-text-fill-color: var(--ink);
            }

            #themeMenu

            #downloadMenu.download-menu {
 display: block;
            }

            #themeMenu

            #themeMenu 

            #downloadMenu .download-menu-item + .download-menu-item {
 border-top: none;
            }
        }

        /* Mobile Action Sheets V2: detached from header to avoid iOS menu glitches */
        #mobileDownloadSheet,
        #mobileMoreSheet {
            display: none;
        }

        @media (max-width: 900px) {
            /* Disable old in-header dropdowns on mobile */
            #themeMenu,
            #downloadMenu {
 display: none;
            }

            #mobileActionBackdrop {
 display: block;
                position: fixed;
                inset: 0;
                background: rgba(7, 12, 20, 0.5);
                opacity: 0;
                pointer-events: none;
                z-index: calc(var(--z-modal) + 24);
                transition: opacity 0.2s ease;
            }

            #mobileDownloadSheet {
 display: block;
            }

            .reader-shell.mobile-action-open #mobileActionBackdrop {
                opacity: 1;
                pointer-events: auto;
            }

            .mobile-action-sheet {
                display: block;
                position: fixed;
                left: 10px;
                right: 10px;
                bottom: calc(env(safe-area-inset-bottom) + 10px);
                background: var(--bg-elevated);
                border: 1px solid var(--border-color);
                border-radius: 16px;
                box-shadow: 0 16px 44px rgba(7, 12, 20, 0.35);
                padding: 10px;
                z-index: calc(var(--z-modal) + 25);
                max-height: min(68vh, 520px);
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                opacity: 0;
                pointer-events: none;
                transform: translate3d(0, 115%, 0);
                transition: transform 0.22s ease, opacity 0.18s ease;
            }

            .mobile-action-sheet.open {
                opacity: 1;
                pointer-events: auto;
                transform: translate3d(0, 0, 0);
            }

            .mobile-action-sheet-header {
                display: flex;
                align-items: center;
                justify-content: space-between;
                gap: 8px;
                margin-bottom: 8px;
                padding-bottom: 8px;
                border-bottom: 1px solid var(--border-color-light);
            }

            .mobile-action-sheet-title {
                font-size: 14px;
                font-weight: 650;
                color: var(--text-primary);
            }

            .mobile-action-sheet-close {
                width: 32px;
                min-width: 32px;
                height: 32px;
                border-radius: 999px;
                border: 1px solid var(--border-color);
                background: var(--bg-secondary);
                color: var(--text-primary);
                font-size: 14px;
                line-height: 1;
                cursor: pointer;
            }

            .mobile-action-list {
                display: flex;
                flex-direction: column;
                gap: 8px;
            }

            .mobile-action-item {
                min-height: 48px;
                border-radius: 12px;
                border: 1px solid var(--border-color);
                background: var(--bg-secondary);
                color: var(--text-primary);
                font-size: 14px;
                font-weight: 500;
                text-align: left;
                padding: 0 12px;
                cursor: pointer;
                width: 100%;
            }

            .mobile-action-item.active {
                border-color: color-mix(in srgb, var(--reader-accent) 45%, transparent);
                background: color-mix(in srgb, var(--reader-accent) 14%, transparent);
                font-weight: 600;
            }
        }

        /* WeChat Read: chapter fade-in animation */
        @keyframes fadeInUp {
            from { opacity: 0; transform: translateY(12px); }
            to { opacity: 1; transform: translateY(0); }
        }
        /* 只让章节标题淡入，正文不动（沉浸感优先） */
        .chapter-header {
            animation: fadeInUp 0.4s ease-out;
        }

        /* WeChat Read: theme transition smoothing */
        .content-area {
            transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
        }

        /* WeChat Read: safe-area insets */
        @supports (padding: env(safe-area-inset-bottom)) {
            .mobile-action-sheet { padding-bottom: env(safe-area-inset-bottom); }
        }

        /* 更多菜单的分区标签和 chip 按钮 */
        .mobile-action-section-label{padding:10px 16px 4px;font-family:var(--ui-sans,var(--sans));font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-mute)}
        .mobile-action-inline{display:flex;gap:8px;padding:0 16px 8px;flex-wrap:wrap}
        /* Aa 字号/行距 chip 用等宽网格，防止 5 选项换行 */
        #mobileAaFont{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
        #mobileAaLine{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
        #mobileAaFont .mobile-action-chip,#mobileAaLine .mobile-action-chip{justify-content:center;padding:8px 4px}
        .mobile-action-chip{
            display:inline-flex;align-items:center;gap:5px;
            padding:8px 14px;border-radius:var(--radius-sm);
            border:1px solid var(--line-strong);background:var(--paper-2);color:var(--ink-soft);
            font-family:var(--ui-sans,var(--sans));font-size:.82rem;font-weight:500;cursor:pointer;
            transition:border-color .15s,color .15s;
        }
        .mobile-action-chip:hover,.mobile-action-chip:active{border-color:var(--accent);color:var(--accent)}
        .mobile-action-chip .theme-seg-swatch{width:12px;height:12px;border-radius:50%;border:1px solid var(--border-color-dark)}

        /* ============================================================
           JOBS-LEVEL REDESIGN — Final Authority Override
           "Design is not just what it looks like and feels like.
            Design is how it works." — Steve Jobs
           ============================================================ */

        /* --- Sidebar: restrained editorial drawer（仅桌面端，移动端走 drawer 模式） --- */
        @media (min-width: 901px) {
            .sidebar {
                background: transparent !important;
                border: none !important;
                box-shadow: none !important;
                border-radius: 0 !important;
                padding: 12px 8px 12px 0 !important;
                position: sticky;
                top: 92px;
                max-height: calc(100vh - 122px);
                overflow-y: auto;
                scrollbar-width: thin;
                -webkit-mask-image: linear-gradient(to bottom, black 92%, transparent 100%);
                mask-image: linear-gradient(to bottom, black 92%, transparent 100%);
            }
            .sidebar::-webkit-scrollbar { width: 4px; }
            .sidebar::-webkit-scrollbar-thumb { background: var(--reader-border, var(--line)); border-radius: 4px; }
            .sidebar::-webkit-scrollbar-track { background: transparent; }
        }

        .sidebar-header {
            padding: 0 4px 12px 4px;
            margin-bottom: 10px;
            border-bottom: 1px solid color-mix(in srgb, var(--reader-sidebar-border, var(--reader-border)) 88%, transparent) !important;
        }
        .sidebar-title {
            /* font-family 自第二代块迁入（lux-mono 是唯一未被本块覆盖而需要存活的属性） */
            font-family: var(--lux-mono);
            font-size: 11px !important;
            font-weight: 600 !important;
            text-transform: uppercase;
            letter-spacing: 0.22em;
            color: var(--reader-text-secondary, #999) !important;
            opacity: 0.88;
        }
        .sidebar-close-btn {
            display: none;
        }

        /* Chapter list styling is defined earlier using theme variables. */
        .chapter-item.failed .chapter-title {
            text-decoration: line-through;
            opacity: 0.5;
        }

        /* --- Header: Ultra-minimal frosted bar --- */
        .header {
 background: var(--reader-header-bg, rgba(255, 252, 247, 0.92));
 backdrop-filter: blur(12px);
 -webkit-backdrop-filter: blur(12px);
 color: var(--reader-text, #2c2416);
 box-shadow: none;
 border-bottom: 0.5px solid rgba(0, 0, 0, 0.08);
            padding: 10px clamp(16px, 3vw, 32px) !important;
            position: sticky;
            top: 0;
            z-index: 100;
            transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                        background-color 0.3s ease !important;
        }
        /* 顶部渐变细线：品牌感的点睛之笔 */
        .reader-shell .header::before {
            content: "";
            position: absolute;
            left: 0;
            right: 0;
            top: 0;
            height: 2px;
            background: linear-gradient(90deg,
                var(--lux-accent, var(--accent)),
                color-mix(in srgb, var(--gold, #B0832A) 55%, transparent) 45%,
                var(--lux-accent, var(--accent)));
            opacity: .6;
            pointer-events: none;
        }
        .dark .header {
 border-bottom-color: rgba(255, 255, 255, 0.06);
        }
        .header.header-hidden {
            transform: translateY(-100%);
            pointer-events: none;
        }

        /* --- Header buttons: Ghost style --- */
        /* mobile-more-btn 默认隐藏，≤900px 时由 @media 规则覆盖显示 */
        .header-btn.mobile-more-btn { display: none; }
        .header-btn {
            background: transparent !important;
            border: 1px solid rgba(0, 0, 0, 0.1) !important;
            color: var(--reader-text, #333) !important;
            border-radius: 20px !important;
            padding: 6px 14px !important;
            font-size: 13px !important;
            font-family: var(--ui-sans);
            font-weight: 500;
            cursor: pointer;
            transition: all 0.15s ease !important;
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            gap: var(--spacing-1);
            white-space: nowrap;
            min-height: auto !important;
            min-width: auto !important;
            height: auto;
            width: auto;
        }
        .header-btn:hover {
            background: rgba(0, 0, 0, 0.05) !important;
            border-color: rgba(0, 0, 0, 0.15) !important;
            color: var(--ink);
            transform: none !important;
            text-decoration: none;
            box-shadow: none;
        }
        .header-btn:active {
 transform: scale(0.95);
        }
        .dark .header-btn {
 border-color: rgba(255, 255, 255, 0.12);
 color: var(--reader-text, #e6edf3);
        }
        .dark .header-btn:hover {
 background: transparent;
        }

        /* --- Book title in header: Restrained --- */
        .book-row {
            margin-top: 2px;
        }
        .book-title {
            font-size: clamp(14px, 1.5vw, 17px) !important;
            font-weight: 600 !important;
            color: var(--reader-text, #2c2416) !important;
 -webkit-text-fill-color: var(--reader-text, #2c2416);
 background: none;
 -webkit-background-clip: unset;
            line-height: 1.3;
        }
        .book-meta-item {
            background: rgba(0, 0, 0, 0.04);
            border: none;
            color: var(--reader-text-secondary, #888) !important;
            font-size: 11px !important;
            padding: 2px 8px !important;
            border-radius: 10px;
            white-space: nowrap;
        }
        .dark .book-meta-item {
 background: transparent;
 color: var(--reader-text-secondary, #8b949e);
        }

        /* --- Content area: Paper-white card, almost no border --- */
        .content-area {
            background: var(--reader-surface, #fffdf5) !important;
            border: none !important;
            border-radius: 0 !important;
            padding: 0 clamp(16px, 3vw, 36px) clamp(16px, 3vw, 36px) !important;
            box-shadow: none !important;
        }
        .dark .content-area {
            box-shadow: 0 0 0 0.5px rgba(255, 255, 255, 0.06),
                        0 2px 8px rgba(0, 0, 0, 0.2) !important;
        }

        /* --- Chapter header: Clean hierarchy --- */
        .chapter-header {
            margin-bottom: .8em !important;
            padding-bottom: .5em !important;
            padding-top: 0 !important;
            margin-top: 0 !important;
            border-bottom: 1px solid var(--reader-border, #e8dcc8) !important;
        }
        .chapter-number-display {
 font-size: 13px;
 font-weight: 500;
            text-transform: uppercase;
            letter-spacing: 0.06em;
 color: var(--reader-accent);
 margin-bottom: 6px;
        }
        .chapter-summary {
 font-size: 15px;
 color: var(--reader-text-secondary, #7a6e5d);
 margin-top: 10px;
 font-style: normal;
            line-height: 1.6;
        }

        /* --- Typography: The soul of reading --- */
        .chapter-content, .markdown-body {
 font-family: var(--serif);
            font-size: clamp(15px, 0.75vw + 10px, 16px) !important;
            line-height: 1.75 !important;
            letter-spacing: 0;
            color: var(--reader-text, #2c2416) !important;
 -webkit-font-smoothing: antialiased;
            text-rendering: optimizeLegibility;
        }
        .chapter-content p {
            margin-bottom: 0.75em !important;
            text-indent: 2em;
            text-align: left;
        }
        .chapter-content blockquote p {
            text-indent: 0;
        }
        .markdown-body h3 + p {
            text-indent: 0;
        }
        .chapter-content h1, .markdown-body h1 {
 font-size: 1.5em;
 font-weight: 600;
 margin: 2em 0 0.9em;
 color: var(--reader-text, #2c2416);
        }
        .chapter-content h2, .markdown-body h2 {
 font-size: 1.4em;
 font-weight: 700;
 margin: 1.6em 0 0.6em;
            padding-bottom: 0.5em;
            border-bottom: 1px solid var(--reader-border, #e8dcc8);
 border-left: none;
 padding-left: 0;
 color: var(--reader-text, #2c2416);
        }
        .chapter-content h3, .markdown-body h3 {
 font-size: 1.2em;
 font-weight: 600;
 margin: 1.3em 0 0.5em;
 color: var(--reader-text, #2c2416);
        }

        /* --- Blockquote: Elegant whisper --- */
        .chapter-content blockquote, .markdown-body blockquote {
 border-left: 2px solid var(--reader-accent);
 padding: 0.8em 1.2em;
 margin: 1.5em 0;
 background: transparent;
 color: var(--reader-text-secondary, #7a6e5d);
            font-style: normal;
        }

        /* --- Navigation: Pill buttons --- */

        /* --- Progress bar: Hair-thin accent line --- */
        .reading-progress {
            height: 2px !important;
            background: transparent !important;
        }
        .reading-progress-fill {
            background: var(--reader-accent) !important;
            border-radius: 0 !important;
        }

        /* --- Download & Theme menus: Clean cards --- */
        .download-menu, 
        .download-menu-item {
 border-radius: 8px;
            padding: 8px 14px !important;
            font-size: 13px !important;
            border: none !important;
            background: transparent !important;
            color: var(--reader-text, #333) !important;
 margin: 0;
        }
        .download-menu-item:hover {
 background: rgba(0, 0, 0, 0.04);
        }
        .download-menu-item + .download-menu-item {
 border-top: none;
 margin-top: 0;
        }
        
        
        

        /* --- Fade-in: 只用于章节标题，正文不动 --- */
        @keyframes subtleFadeIn {
            from { opacity: 0; transform: translateY(8px); }
            to { opacity: 1; transform: translateY(0); }
        }

        /* --- Reader container: Tighter grid --- */
        .reader-container {
            gap: clamp(20px, 2vw, 36px) !important;
        }

        /* --- Dark mode menu refinements --- */

        /* --- Mobile: Even cleaner --- */
        @media (max-width: 900px) {
            .sidebar {
                background: var(--reader-surface, #fffdf5) !important;
                padding: 20px !important;
                border-radius: 16px 16px 0 0 !important;
                max-height: 60vh;
            }
            .sidebar-header { padding: 0 0 12px 0; }
        }
        @media (max-width: 768px) {
            .header { padding: 8px 16px !important; }
            .content-area { padding: clamp(10px, 3vw, 18px) !important; border-radius: 0 !important; }
            .chapter-content, .markdown-body { font-size: calc(15.5px * var(--reader-font-scale, 1)) !important; line-height: var(--reader-line-height, 1.75) !important; }
        }
        @media (max-width: 480px) {
            .content-area { padding: 10px !important; }
            .chapter-content, .markdown-body { font-size: calc(15px * var(--reader-font-scale, 1)) !important; line-height: var(--reader-line-height, 1.7) !important; }
        }

        /* Mobile header: keep title tidy; toolbar uses the existing scroll strip */
        @media (max-width: 768px) {
            .book-title {
                white-space: normal !important;
                overflow: hidden;
                display: -webkit-box;
                -webkit-line-clamp: 2;
                -webkit-box-orient: vertical;
                word-break: break-word;
            }
        }

        /* ============================================================
           PREMIUM READING LAYER — Editorial luxury (theme-adaptive)
           Sits on top of the minimal base; uses --reader-* tokens so it
           harmonises with white / sepia / green / dark reading themes.
           ============================================================ */
        .reader-shell {
            --lux-accent: var(--reader-accent);
            --lux-serif: "Fraunces", "Noto Serif SC", "Source Han Serif SC", Georgia, serif;
            --lux-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
        }

        /* --- Page: a fine, weighty book leaf --- */
        .reader-shell .content-area {
            position: relative;
            overflow: hidden;
 border: none;
            border-radius: 0 !important;
            padding: 0 clamp(24px, 6vw, 96px) clamp(32px, 5vw, 72px) !important;
 box-shadow: none;
        }
        html.dark .reader-shell .content-area {
 box-shadow: none;
        }
        .reader-shell .content-area::before {
            content: "";
            position: absolute;
            top: 0; left: 0; right: 0;
            height: 3px;
            background: linear-gradient(90deg,
                transparent,
                color-mix(in srgb, var(--lux-accent) 40%, transparent),
                transparent);
            opacity: 0.9;
        }

        /* --- Chapter opener: a frontispiece --- */
        .reader-shell .chapter-header {
            position: relative;
	 border-bottom: none;
	 padding-bottom: .5em;
	 margin-bottom: .8em;
            margin-top: 0;
        }
        .reader-shell .chapter-header::after {
            content: "";
            position: absolute;
            left: 0; bottom: 0;
            width: 100%; height: 1px;
            background: linear-gradient(90deg,
                color-mix(in srgb, var(--lux-accent) 25%, transparent) 40%,
                transparent 72%);
            opacity: 0.55;
        }
        .reader-shell .chapter-number-display {
            display: inline-flex;
            align-items: center;
            gap: 10px;
	 font-family: var(--lux-mono);
	 font-size: 11px;
	 font-weight: 600;
	 letter-spacing: 0.18em;
            text-transform: uppercase;
	 color: var(--lux-accent);
	 margin-bottom: 8px;
        }
        .reader-shell .chapter-number-display::before {
            content: "";
            width: 22px; height: 1px;
            background: currentColor;
            opacity: 0.65;
        }
        .reader-shell .chapter-title-display {
 font-family: var(--lux-serif);
 font-weight: 600;
 font-size: clamp(1.15rem, 1.6vw, 1.45rem);
 letter-spacing: -0.015em;
 line-height: 1.16;
 color: var(--reader-text, #2c2416);
        }
        .reader-shell .chapter-summary {
 font-family: "Noto Serif SC", Georgia, serif;
 font-style: normal;
 font-weight: 400;
 font-size: 0.92rem;
 line-height: 1.8;
 color: var(--reader-text-secondary, #7a6e5d);
 margin-top: 16px;
            padding-left: 16px;
            border-left: 3px solid var(--lux-accent);
        }
        .reader-shell .chapter-quality-card {
            margin-top: 18px;
            padding: 18px 20px;
            border-radius: 18px;
            border: 1px solid color-mix(in srgb, var(--lux-accent) 24%, var(--reader-border, #e8dcc8));
            background:
                radial-gradient(circle at top right, color-mix(in srgb, var(--lux-accent) 12%, transparent), transparent 42%),
                linear-gradient(180deg, color-mix(in srgb, var(--reader-surface, #fffdf5) 92%, #fff), var(--reader-bg-soft, rgba(139, 115, 70, 0.06)));
            box-shadow: 0 18px 36px rgba(44, 36, 22, 0.08);
        }
        .reader-shell .chapter-quality-eyebrow {
 font-family: var(--lux-mono);
            font-size: 10px;
            letter-spacing: 0.24em;
            text-transform: uppercase;
            color: var(--reader-text-secondary, #7a6e5d);
            margin-bottom: 9px;
        }
        .reader-shell .chapter-quality-title {
 font-family: var(--lux-serif);
            font-size: 1.02rem;
            font-weight: 600;
            color: var(--reader-text, #2c2416);
            margin-bottom: 8px;
        }
        .reader-shell .chapter-quality-copy {
            font-size: 0.95rem;
            line-height: 1.72;
            color: var(--reader-text-secondary, #7a6e5d);
        }
        .reader-shell .chapter-quality-flags {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-top: 14px;
        }
        .reader-shell .chapter-quality-chip {
            display: inline-flex;
            align-items: center;
            min-height: 32px;
            padding: 0 12px;
            border-radius: 999px;
            border: 1px solid color-mix(in srgb, var(--lux-accent) 18%, var(--reader-border, #e8dcc8));
            background: color-mix(in srgb, var(--reader-surface, #fffdf5) 88%, transparent);
            color: var(--reader-text, #2c2416);
 font-family: var(--lux-mono);
            font-size: 11px;
            letter-spacing: 0.03em;
            white-space: nowrap;
        }
        /* --- Lead paragraph: 中文用首行缩进，不用西式 drop-cap --- */
        .reader-shell .chapter-content p.lead-para {
 text-indent: 2em;
 text-align: start;
        }
        .reader-shell .chapter-content p.lead-para::first-letter {
            /* drop-cap 已移除：中文首行缩进与首字下沉不兼容 */
            float: none;
            font-size: inherit;
            line-height: inherit;
            padding: 0;
            margin: 0;
            color: inherit;
        }

        /* --- Masthead: publication wordmark + chips --- */
        .reader-shell .header .book-title {
 font-family: var(--lux-serif);
 font-weight: 600;
            letter-spacing: -0.005em;
        }
        .reader-shell .book-meta-item {
 font-family: var(--lux-mono);
 font-size: 10.5px;
            letter-spacing: 0.03em;
        }

        /* --- Chapter navigation: ghost links --- */
        .reader-shell .nav-dir {
 font-weight: 600;
 white-space: nowrap;
        }
        

        @media (max-width: 768px) {
            .reader-shell .content-area {
                border-radius: 16px !important;
                padding: 0 clamp(16px, 4vw, 24px) clamp(20px, 5vw, 28px) !important;
            }
            .reader-shell .chapter-content p.lead-para::first-letter {
                font-size: 2.8em;
            }
            .reader-shell .chapter-quality-flags {
                gap: 7px;
            }
        }

        /* ============================================================
           TOOLBAR — clean, aligned editorial control bar (desktop)
           Back-link left · controls right, every control 36px tall,
           unified warm-paper pill styling via --reader-* tokens so it
           harmonises across white / sepia / green / dark themes.
           Scoped to >=901px to preserve the verified mobile strip.
           ============================================================ */
        @media (min-width: 901px) {
            /* 精简 Header：隐藏低频控件和移动端按钮，只留目录+下载+阅读主题 */
            .reader-shell .toolbar-settings {
                display: none !important;
            }
            .reader-shell .header-toolbar {
 display: flex;
 align-items: center;
 justify-content: space-between;
 gap: 8px;
 flex-wrap: nowrap;
 margin-bottom: 8px;
            }
            .reader-shell .toolbar-right {
 display: inline-flex;
 align-items: center;
 gap: 4px;
 flex: 0 0 auto;
 flex-wrap: nowrap;
 justify-content: flex-end;
            }
            /* Back to Library → left edge */
            .reader-shell .back-link-inline {
 order: -1;
 margin: 0;
            }
            /* 紧凑按钮：32px高、小圆角、图标+短文字 */
            .reader-shell .back-link {
 height: 32px;
 min-height: 32px;
 display: inline-flex;
 align-items: center;
 gap: 5px;
 padding: 0 10px;
 border-radius: var(--radius-sm);
 font-size: .78rem;
 font-weight: 500;
 letter-spacing: 0;
 background: transparent;
 border: 1px solid transparent;
 color: var(--reader-text, #2c2416);
 box-shadow: none;
 white-space: nowrap;
 transition: border-color .15s, color .15s, background .15s;
            }
            .reader-shell .back-link:hover {
 border-color: var(--reader-border, #e8dcc8);
 color: var(--reader-accent, var(--accent));
 background: var(--reader-surface-soft, var(--paper-3));
 transform: none;
            }
            /* 「返回图书馆」专属：有辨识度的胶囊按钮 */
            .reader-shell .back-link-inline {
 background: color-mix(in srgb, var(--reader-surface-soft, var(--paper-3)) 70%, transparent);
 border: 1px solid color-mix(in srgb, var(--reader-border, #e8dcc8) 60%, transparent);
 border-radius: 999px;
 padding: 0 14px;
 color: var(--reader-text-secondary, var(--ink-mute));
 font-weight: 600;
 gap: 6px;
 transition: all .18s cubic-bezier(.2,.7,.2,1);
            }
            .reader-shell .back-link-inline:hover {
 border-color: color-mix(in srgb, var(--lux-accent, var(--accent)) 40%, var(--reader-border, #e8dcc8));
 color: var(--lux-accent, var(--accent));
 background: color-mix(in srgb, var(--lux-accent, var(--accent)) 8%, var(--reader-surface, var(--paper-2)));
 transform: translateY(-1px);
            }
            .reader-shell .back-link-inline .icon {
                transition: transform .18s ease;
            }
            .reader-shell .back-link-inline:hover .icon {
                transform: translateX(-2px);
            }
            .reader-shell .mobile-more-btn { display: none !important; }
            .reader-shell .toolbar-divider {
 height: 22px;
 width: 1px;
 margin: 0 2px;
 background: var(--reader-border, #e8dcc8);
            }
            .reader-shell .toolbar-settings {
                display: inline-flex !important;
 align-items: center;
 gap: 10px;
 height: 36px;
            }
            /* 主题切换控件：精致胶囊，带层次感 */
            .reader-shell .toolbar-settings .theme-segmented {
 background: color-mix(in srgb, var(--reader-surface-soft, var(--paper-3)) 78%, transparent);
 border: 1px solid color-mix(in srgb, var(--reader-border, #e8dcc8) 72%, transparent);
 box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 1px 3px rgba(35,27,14,.06);
 padding: 3px;
 border-radius: 999px;
 transition: border-color .18s;
            }
            .reader-shell .toolbar-settings .theme-segmented:hover {
 border-color: color-mix(in srgb, var(--lux-accent, var(--accent)) 42%, var(--reader-border, #e8dcc8));
            }
            .reader-shell .toolbar-settings .theme-seg-btn {
 padding: 5px 9px;
 border-radius: 999px;
 font-size: .7rem;
 font-weight: 600;
 transition: background .16s, color .16s, box-shadow .16s;
            }
            .reader-shell .toolbar-settings .theme-seg-btn.active {
 background: var(--reader-surface, var(--paper-2));
 color: var(--lux-accent, var(--accent));
 box-shadow: 0 1px 4px rgba(35,27,14,.12);
            }
            .reader-shell .toolbar-settings .theme-seg-swatch {
 width: 10px;
 height: 10px;
            }
            /* language + dark toggle styled below for all viewports */
        }


        /* ===== Refined editorial TOC numerals ===== */
        .reader-shell .chapter-item {
            position: relative !important;
            grid-template-columns: 36px minmax(0, 1fr) !important;
            gap: 12px !important;
            align-items: center !important;
            min-height: 50px !important;
            padding: 10px 14px !important;
            border-radius: 14px !important;
            border: 1px solid transparent !important;
 border-left: 0;
            background: transparent !important;
 box-shadow: none;
            transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease !important;
        }
        .reader-shell .chapter-item::before {
 content: "";
 position: absolute;
 left: 6px;
 top: 12px;
 bottom: 12px;
 width: 2px;
 border-radius: 999px;
 background: transparent;
 transition: background 0.18s ease, opacity 0.18s ease;
        }
        .reader-shell .chapter-item:hover {
            background: color-mix(in srgb, var(--reader-surface, #FFFCF6) 56%, transparent) !important;
 border-color: color-mix(in srgb, var(--reader-border, #E3D9C5) 72%, transparent);
 color: var(--reader-text, #1B1A16);
        }
        .reader-shell .chapter-item.active {
            background: color-mix(in srgb, var(--reader-surface, #FFFCF6) 86%, var(--reader-bg-soft, #EFE7D6)) !important;
 border-color: color-mix(in srgb, var(--reader-text, #1B1A16) 12%, var(--reader-border, #E3D9C5));
 color: var(--reader-text, #1B1A16);
        }
        .reader-shell .chapter-number {
 display: inline-flex;
 align-items: center;
 justify-content: flex-start;
            width: 22px !important;
            min-width: 22px !important;
            height: auto !important;
 text-align: left;
            font-family: var(--lux-serif), "Iowan Old Style", Georgia, serif !important;
            font-style: italic !important;
            font-size: 0.88rem !important;
            font-weight: 500 !important;
 letter-spacing: 0.02em;
 font-variant-numeric: tabular-nums;
            color: color-mix(in srgb, var(--reader-text, #1B1A16) 62%, var(--reader-text-muted, #8B826F)) !important;
 margin: 0;
 flex-shrink: 0;
            white-space: nowrap !important;
 border-radius: 0;
 border: 0;
 background: transparent;
 box-shadow: none;
            opacity: 0.82;
 transition: color 0.18s ease, opacity 0.18s ease;
        }
        .reader-shell .chapter-title {
            font-size: 0.9rem !important;
            line-height: 1.42 !important;
 letter-spacing: -0.012em;
            font-weight: 500 !important;
            color: color-mix(in srgb, var(--reader-text, #1B1A16) 78%, var(--reader-text-muted, #8B826F)) !important;
        }
        .reader-shell .chapter-item:hover .chapter-number {
 color: color-mix(in srgb, var(--reader-text, #1B1A16) 76%, var(--reader-text-muted, #8B826F));
 background: transparent;
            opacity: 1;
        }
        .reader-shell .chapter-item:hover .chapter-title {
 color: var(--reader-text, #1B1A16);
        }
        .reader-shell .chapter-item.active .chapter-number {
            color: var(--reader-accent, #B05A2E) !important;
 border-color: transparent;
 background: transparent;
 box-shadow: none;
            opacity: 1;
        }
        .reader-shell .chapter-item.active .chapter-title {
            color: color-mix(in srgb, var(--reader-text, #1B1A16) 90%, var(--reader-accent, #B05A2E)) !important;
 font-weight: 600;
        }
        .reader-shell .chapter-item.failed .chapter-number {
 color: color-mix(in srgb, var(--reader-accent, #C8432A) 74%, var(--reader-text, #1B1A16));
 border-color: transparent;
 background: transparent;
        }
        @media (max-width: 900px) {
            .reader-shell .chapter-item {
                grid-template-columns: 32px minmax(0, 1fr) !important;
                gap: 10px !important;
                padding: 10px 12px !important;
            }
            .reader-shell .chapter-number {
                width: 18px !important;
                min-width: 18px !important;
                height: auto !important;
                font-size: 0.8rem !important;
            }
        }

        /* ===== Favorite button ===== */
        .reader-shell .fav-btn .fav-ico {
            font-size: 1.05em;
            line-height: 1;
            transition: transform 0.18s ease;
        }
        .reader-shell .fav-btn.is-favorite {
 color: var(--reader-accent, #C8432A);
 border-color: color-mix(in srgb, var(--reader-accent, #C8432A) 45%, transparent);
 background: color-mix(in srgb, var(--reader-accent, #C8432A) 8%, transparent);
        }
        .reader-shell .fav-btn.is-favorite .fav-ico {
            transform: scale(1.12);
        }

        /* ===== Final download polish: quiet, premium, predictable ===== */
        .reader-shell #downloadMenu.download-menu {
 min-width: 238px;
 padding: 8px;
 border-radius: 18px;
            background:
                linear-gradient(180deg, color-mix(in srgb, var(--reader-surface, #FFFCF6) 96%, #fff 4%), var(--reader-bg, #F4EEE2)) !important;
 border-color: color-mix(in srgb, var(--reader-border, #CFC2A6) 82%, transparent);
 box-shadow: 0 24px 54px -28px rgba(23, 16, 7, 0.44), inset 0 1px 0 rgba(255,255,255,0.42);
        }
        .reader-shell #mobileDownloadSheet .mobile-action-item {
            position: relative;
 display: grid;
            grid-template-columns: 36px minmax(0, 1fr);
            align-items: center;
 gap: 11px;
 min-height: 48px;
 border-radius: 13px;
 border: 1px solid transparent;
 background: transparent;
 color: var(--reader-text, #1B1A16);
 font-weight: 620;
            letter-spacing: -0.01em;
 transition: background 0.16s ease, border-color 0.16s ease, transform 0.16s ease, opacity 0.16s ease;
        }
        .reader-shell #mobileDownloadSheet .mobile-action-item:hover {
 background: color-mix(in srgb, var(--reader-surface, #FFFCF6) 70%, var(--reader-bg-soft, #EFE7D6));
 border-color: color-mix(in srgb, var(--reader-border, #CFC2A6) 74%, var(--reader-accent, #C8432A) 26%);
            transform: translateY(-1px);
        }
        .reader-shell .mobile-action-item:disabled {
            opacity: 0.56;
 cursor: progress;
 transform: none;
        }
        .reader-shell .format-badge {
            width: 34px;
            height: 32px;
            border-radius: 10px;
            display: inline-grid;
            place-items: center;
            font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
            font-size: 0.62rem;
            font-weight: 800;
            letter-spacing: 0.04em;
            color: color-mix(in srgb, var(--reader-text, #1B1A16) 78%, var(--reader-accent, #C8432A));
            background: color-mix(in srgb, var(--reader-bg-soft, #EFE7D6) 74%, transparent);
            border: 1px solid color-mix(in srgb, var(--reader-border, #CFC2A6) 78%, transparent);
        }
        .reader-shell .format-label {
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .reader-shell .mobile-action-item.is-regenerate {
 color: color-mix(in srgb, var(--reader-accent, #C8432A) 86%, var(--reader-text, #1B1A16));
 background: color-mix(in srgb, var(--reader-accent, #C8432A) 8%, transparent);
        }
        .reader-shell .mobile-action-item.is-regenerate .format-badge {
            color: var(--reader-accent, #C8432A);
            background: color-mix(in srgb, var(--reader-accent, #C8432A) 12%, var(--reader-surface, #FFFCF6));
            border-color: color-mix(in srgb, var(--reader-accent, #C8432A) 34%, var(--reader-border, #CFC2A6));
        }
        body.download-busy .reader-shell #downloadBtn {
 border-color: color-mix(in srgb, var(--reader-accent, #C8432A) 58%, var(--reader-border, #CFC2A6));
 background: color-mix(in srgb, var(--reader-accent, #C8432A) 10%, var(--reader-surface, #FFFCF6));
        }
        .download-status {
            position: fixed;
            right: max(18px, env(safe-area-inset-right));
            bottom: max(18px, env(safe-area-inset-bottom));
            z-index: calc(var(--z-toast, 10000) + 4);
            width: min(380px, calc(100vw - 32px));
            display: grid;
            grid-template-columns: 40px minmax(0, 1fr);
            gap: 12px;
            align-items: center;
            padding: 14px 15px;
            border-radius: 18px;
            border: 1px solid color-mix(in srgb, var(--reader-border, #CFC2A6) 78%, transparent);
            background:
                linear-gradient(180deg, color-mix(in srgb, var(--reader-surface, #FFFCF6) 94%, transparent), color-mix(in srgb, var(--reader-bg, #F4EEE2) 94%, transparent));
            box-shadow: 0 28px 70px -34px rgba(18, 12, 4, 0.58), inset 0 1px 0 rgba(255,255,255,0.45);
            backdrop-filter: blur(18px) saturate(1.08);
            color: var(--reader-text, #1B1A16);
            opacity: 0;
            pointer-events: none;
            transform: translate3d(0, 14px, 0) scale(0.98);
            transition: opacity 0.2s ease, transform 0.2s ease;
        }
        .download-status.show {
            opacity: 1;
            transform: translate3d(0, 0, 0) scale(1);
        }
        .download-status-icon {
            width: 40px;
            height: 40px;
            border-radius: 13px;
            display: grid;
            place-items: center;
            background: color-mix(in srgb, var(--reader-accent, #C8432A) 10%, var(--reader-surface, #FFFCF6));
            color: var(--reader-accent, #C8432A);
            border: 1px solid color-mix(in srgb, var(--reader-accent, #C8432A) 22%, var(--reader-border, #CFC2A6));
            font-size: 1rem;
        }
        .download-status.is-busy .download-status-icon::before {
            content: "";
            width: 16px;
            height: 16px;
            border-radius: 50%;
            border: 2px solid color-mix(in srgb, var(--reader-accent, #C8432A) 18%, transparent);
            border-top-color: var(--reader-accent, #C8432A);
            animation: spin 0.8s linear infinite;
        }
        .download-status:not(.is-busy) .download-status-icon::before {
            content: "✓";
            font-weight: 800;
        }
        .download-status.is-error .download-status-icon::before {
            content: "!";
        }
        .download-status-title {
            font-size: 0.9rem;
            font-weight: 720;
            line-height: 1.25;
            letter-spacing: -0.015em;
        }
        .download-status-detail {
            margin-top: 4px;
            color: var(--reader-text-muted, #8B826F);
            font-size: 0.78rem;
            line-height: 1.45;
        }
        .download-status-progress {
            grid-column: 1 / -1;
            height: 2px;
            border-radius: 999px;
            overflow: hidden;
            background: color-mix(in srgb, var(--reader-border, #CFC2A6) 50%, transparent);
        }
        .download-status-progress::before {
            content: "";
            display: block;
            width: 42%;
            height: 100%;
            border-radius: inherit;
            background: linear-gradient(90deg, transparent, var(--reader-accent, #C8432A), transparent);
            transform: translateX(-110%);
        }
        .download-status.is-busy .download-status-progress::before {
            animation: downloadSweep 1.25s ease-in-out infinite;
        }
        .download-status:not(.is-busy) .download-status-progress::before {
            width: 100%;
            transform: translateX(0);
            background: var(--reader-accent, #C8432A);
        }
        .download-status.is-error .download-status-progress::before {
            background: var(--err, #B23A2E);
        }
        @keyframes downloadSweep {
            to { transform: translateX(260%); }
        }
        @media (max-width: 700px) {
            .download-status {
                left: 12px;
                right: 12px;
                bottom: max(12px, env(safe-area-inset-bottom));
                width: auto;
            }
        }

        /* ============================================================
           目录侧栏克制化（参考微信读书）
           ============================================================ */

        /* 侧栏宽度收窄到 248px（隐藏目录时恢复单列，不被 !important 破坏） */
        /* 侧栏宽度收窄到 248px（仅桌面端，移动端 sidebar 走 drawer 不占列） */
        @media (min-width: 901px) {
            .reader-shell:not(.sidebar-hidden) .reader-container {
 grid-template-columns: 248px minmax(0, 1fr);
            }
        }

        /* 目录项更紧凑 */
        .reader-shell .chapter-list {
 gap: 2px;
        }

        .reader-shell .chapter-item {
            position: relative !important;
 display: grid;
            grid-template-columns: 22px minmax(0, 1fr) !important;
            align-items: start !important;
            gap: 8px !important;
            min-height: 38px !important;
            padding: 6px 8px 6px 14px !important;
            border-radius: 6px !important;
            background: transparent !important;
            border: none !important;
            transition: background 0.15s ease !important;
        }

        /* active：左侧色条 + 颜色，不用背景色块 */
        .reader-shell .chapter-item.active {
            background: transparent !important;
        }
        .reader-shell .chapter-item.active::before {
 content: "";
 position: absolute;
 left: 2px;
 top: 50%;
 transform: translateY(-50%);
 width: 3px;
 height: 16px;
 border-radius: 2px;
 background: var(--reader-accent, #C8432A);
        }
        .reader-shell .chapter-item:hover {
            background: color-mix(in srgb, var(--reader-surface, #FFFCF6) 50%, transparent) !important;
        }

        /* 章节号：更小更淡 */
        .reader-shell .chapter-number {
            font-family: var(--ui-sans) !important;
            font-style: normal !important;
            font-size: .72rem !important;
            font-weight: 400 !important;
            color: var(--reader-text-muted, #8B826F) !important;
            opacity: .55 !important;
            white-space: nowrap !important;
        }
        .reader-shell .chapter-item.active .chapter-number {
            color: var(--reader-accent, #C8432A) !important;
            opacity: 1 !important;
        }

        /* 章节标题：允许两行换行，不截断 */
        .reader-shell .chapter-title {
 display: -webkit-box;
 -webkit-box-orient: vertical;
 -webkit-line-clamp: 2;
 line-clamp: 2;
 overflow: hidden;
 text-overflow: ellipsis;
 white-space: normal;
            font-size: .84rem !important;
            line-height: 1.4 !important;
            font-weight: 400 !important;
            color: color-mix(in srgb, var(--reader-text, #1B1A16) 78%, var(--reader-text-muted, #8B826F)) !important;
        }
        .reader-shell .chapter-item.active .chapter-title {
            color: var(--reader-text, #1B1A16) !important;
        }

        @media (max-width: 900px) {
            .reader-shell .chapter-item {
                min-height: 42px !important;
                padding: 7px 10px 7px 16px !important;
            }
            .reader-shell .chapter-title {
                font-size: .82rem !important;
            }
        }

        /* ═══ 书籍信息页（参考微信读书开页）═══ */
        .book-cover-page {
            max-width: 680px;
            margin: 0 auto;
            padding: clamp(40px, 8vh, 80px) 24px 48px;
            text-align: center;
            animation: fadeInUpCover 0.4s ease-out;
        }
        @keyframes fadeInUpCover {
            from { opacity: 0; transform: translateY(16px); }
            to { opacity: 1; transform: translateY(0); }
        }
        .book-cover-page .cover-visual {
            width: 180px;
            height: 240px;
            margin: 0 auto 34px;
            border-radius: 4px 8px 8px 4px;
            position: relative;
            overflow: hidden;
            box-shadow:
                0 2px 4px rgba(30,23,10,.14),
                0 24px 48px -16px rgba(30,23,10,.44);
            background: linear-gradient(158deg, var(--reader-surface-soft, #efe6d6), var(--reader-surface, #e8dcc8));
        }
        .book-cover-page .cover-visual::before {
            content: "";
            position: absolute;
            left: 0; top: 0; bottom: 0;
            width: 8px;
            background: linear-gradient(90deg, rgba(0,0,0,.38), rgba(255,255,255,.10) 55%, rgba(0,0,0,.16));
            z-index: 2;
        }
        /* 地面接触阴影：书"放"在纸面上的落影（微信读书式悬浮感） */
        .book-cover-page .cover-visual::after {
            content: "";
            position: absolute;
            left: 50%; bottom: -18px;
            width: 82%; height: 18px;
            transform: translateX(-50%);
            background: radial-gradient(ellipse at center, rgba(30,23,10,.30), transparent 68%);
            filter: blur(6px);
            z-index: -1;
        }
        .book-cover-page .cover-img {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            object-fit: cover;
            border-radius: inherit;
        }
        .book-cover-page .cover-text-fallback {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 16px 12px 16px 18px;
            font-family: var(--serif);
            font-weight: 600;
            font-size: .82rem;
            line-height: 1.4;
            color: var(--reader-text);
            text-align: center;
            word-break: break-word;
        }
        .book-cover-page .cover-title {
            font-family: var(--serif);
            font-weight: 600;
            font-size: clamp(1.5rem, 3vw, 2rem);
            line-height: 1.3;
            color: var(--reader-text);
            margin: 0 0 8px;
            letter-spacing: -.015em;
        }
        .book-cover-page .cover-subtitle {
            font-family: var(--ui-sans);
            font-size: .88rem;
            color: var(--reader-text-secondary, var(--ink-mute));
            margin: 0 0 18px;
            line-height: 1.5;
        }
        .book-cover-page .cover-meta {
            font-family: var(--ui-sans);
            font-size: .76rem;
            color: var(--reader-text-secondary, var(--ink-mute));
            margin: 0 0 24px;
            display: flex;
            justify-content: center;
            gap: 6px;
            flex-wrap: wrap;
        }
        .book-cover-page .cover-meta span:not(:last-child)::after {
            content: "·";
            margin-left: 6px;
            opacity: .5;
        }
        .book-cover-page .cover-desc {
            font-family: var(--ui-sans);
            font-size: .86rem;
            line-height: 1.8;
            color: var(--reader-text-secondary, var(--ink-soft));
            text-align: left;
            max-width: 540px;
            margin: 0 auto 32px;
            display: -webkit-box;
            -webkit-line-clamp: 4;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }
        .book-cover-page .cover-actions {
            display: flex;
            flex-direction: column;
            gap: 10px;
            align-items: center;
        }
        .book-cover-page .cover-btn {
            font-family: var(--ui-sans);
            font-weight: 600;
            font-size: .9rem;
            padding: 13px 40px;
            border-radius: 999px;
            border: none;
            cursor: pointer;
            transition: transform .18s cubic-bezier(.2,.7,.2,1), box-shadow .18s, opacity .18s;
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            gap: 8px;
        }
        .book-cover-page .cover-btn-primary {
            background: var(--accent);
            color: #fff;
            box-shadow: 0 1px 2px rgba(0,0,0,.08);
        }
        .book-cover-page .cover-btn-primary:hover {
            background: var(--accent-ink);
            transform: translateY(-1px);
            box-shadow: 0 6px 18px color-mix(in srgb, var(--accent) 32%, transparent);
        }
        .book-cover-page .cover-btn-secondary {
            background: transparent;
            color: var(--reader-text-secondary, var(--ink-mute));
            border: 1px solid var(--reader-border, #e8dcc8);
        }
        .book-cover-page .cover-btn-secondary:hover {
            border-color: var(--lux-accent, var(--accent));
            color: var(--lux-accent, var(--accent));
        }

/* ── 书籍评分（豆瓣/微信读书式星级）── */
.book-cover-page .cover-rating {
    max-width: 30rem; margin: 16px auto 0; text-align: center;
}
.book-cover-page .rating-display {
    font-family: var(--ui-sans); font-size: .82rem; color: var(--ink-soft); margin-bottom: 12px;
    display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap;
}
.book-cover-page .rating-score-big {
    font-family: var(--serif); font-size: 1.5rem; font-weight: 700; color: var(--accent); line-height: 1;
}
.book-cover-page .rating-score-ai {
    font-size: .72rem; color: var(--ink-mute);
}
.book-cover-page .rating-stars {
    display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap;
}
.book-cover-page .rating-label {
    font-family: var(--ui-sans); font-size: .74rem; color: var(--ink-mute); letter-spacing: .02em;
}
.book-cover-page .stars { display: inline-flex; gap: 4px; }
.book-cover-page .star-btn {
    width: 22px; height: 22px; cursor: pointer; color: var(--line-strong);
    transition: color .12s ease, transform .12s ease; flex: none;
}
.book-cover-page .star-btn:hover { transform: scale(1.18); }
.book-cover-page .star-btn.active { color: var(--gold); }
.book-cover-page .star-btn.preview-on { color: var(--gold); }
