:root { --bg: #111318; --panel: #171a20; --panel-strong: #1c2027; --line: #2b313b; --text: #e3e7ee; --muted: #929cab; --accent: #6ea8fe; --hover: rgba(255, 255, 255, 0.07); --title-start: #171b26; --title-end: #12141c; } :root[data-ui-theme="light"] { --bg: #eef2f7; --panel: #ffffff; --panel-strong: #f7f9fc; --line: #d5dde8; --text: #1f2937; --muted: #667386; --accent: #2563eb; --hover: rgba(15, 23, 42, 0.07); --title-start: #ffffff; --title-end: #f1f4f8; } * { box-sizing: border-box; } html, body { margin: 0; width: 100%; height: 100%; overflow: hidden; color: var(--text); background: var(--bg); font-family: "Microsoft YaHei", "PingFang SC", "Segoe UI", sans-serif; } body { display: flex; flex-direction: column; } button, input { font: inherit; } .hidden { display: none !important; } .titlebar { height: 44px; flex: 0 0 44px; display: flex; align-items: center; padding-left: 14px; border-bottom: 1px solid var(--line); background: linear-gradient(135deg, var(--title-start), var(--title-end)); -webkit-app-region: drag; } .brand { min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--accent); font-size: 15px; font-weight: 700; } .brand-logo { width: 25px; height: 25px; border-radius: 6px; } .brand-logo-light { display: none; } :root[data-ui-theme="light"] .brand-logo-dark { display: none; } :root[data-ui-theme="light"] .brand-logo-light { display: block; } .brand-sub { min-width: 0; max-width: 56vw; overflow: hidden; color: var(--muted); font-size: 12px; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; } .titlebar-spacer { flex: 1; } .titlebar-controls { height: 100%; display: flex; -webkit-app-region: no-drag; } .win-btn { width: 46px; border: 0; color: var(--text); background: transparent; cursor: pointer; } .win-btn:hover { background: var(--hover); } .win-close:hover { color: #fff; background: #c42b1c; } .toolbar { min-height: 48px; flex: 0 0 auto; display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-bottom: 1px solid var(--line); background: var(--panel); } .tool-btn, .load-more, .chapter-end, .icon-btn { border: 1px solid var(--line); border-radius: 7px; color: var(--text); background: var(--panel-strong); cursor: pointer; } .tool-btn { height: 32px; padding: 0 13px; } .tool-btn:hover, .load-more:hover, .chapter-end:hover, .icon-btn:hover { border-color: var(--accent); } .tool-btn:disabled { cursor: default; opacity: 0.42; } .chapter-title { min-width: 120px; max-width: 30vw; overflow: hidden; color: var(--text); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; } .width-control { margin-left: auto; display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 12px; } .width-control input { width: 130px; accent-color: var(--accent); } .quality-label { min-width: 54px; color: var(--muted); font-size: 12px; } .reader-layout { min-height: 0; flex: 1; display: flex; } .toc-pane { width: 290px; min-width: 240px; display: flex; flex-direction: column; border-right: 1px solid var(--line); background: var(--panel); } .toc-pane.collapsed { display: none; } .toc-head { flex: 0 0 auto; display: flex; align-items: flex-start; justify-content: space-between; padding: 14px 12px 10px; border-bottom: 1px solid var(--line); } .toc-meta { margin-top: 4px; color: var(--muted); font-size: 12px; } .icon-btn { width: 28px; height: 28px; } .chapter-list { min-height: 0; flex: 1; overflow: auto; padding: 7px; } .chapter-item { width: 100%; min-height: 39px; display: block; padding: 8px 10px; overflow: hidden; border: 0; border-radius: 7px; color: var(--text); background: transparent; text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; } .chapter-item:hover { background: var(--hover); } .chapter-item.active { color: var(--accent); background: color-mix(in srgb, var(--accent) 14%, transparent); } .chapter-item.loading::after { content: " · 加载中"; color: var(--muted); font-size: 11px; } .load-more { min-height: 36px; margin: 8px; flex: 0 0 auto; } .page-scroller { min-width: 0; flex: 1; overflow: auto; overflow-anchor: none; overscroll-behavior: contain; background: var(--bg); } .reader-status { max-width: 720px; margin: 28px auto; padding: 16px; color: var(--muted); text-align: center; } .reader-status.error { color: #e36b66; } .page-stack { width: min(var(--manga-page-width, 900px), 100%); margin: 0 auto; background: #0b0c0f; } .manga-page { position: relative; width: 100%; min-height: 260px; display: flex; align-items: center; justify-content: center; overflow: hidden; color: #8f98a6; background: #11141a; border-bottom: 1px solid #252a33; } .manga-page::before { content: attr(data-placeholder); padding: 30px; text-align: center; } .manga-page.loaded { min-height: 0; } .manga-page.loaded::before { display: none; } .manga-page.error { min-height: 160px; color: #e36b66; cursor: pointer; } .manga-page img { display: block; width: 100%; height: auto; } .chapter-end { min-width: 220px; min-height: 42px; display: block; margin: 24px auto 44px; padding: 0 24px; } @media (max-width: 850px) { .width-control { display: none; } .quality-label { display: none; } .toc-pane { position: absolute; z-index: 5; top: 92px; bottom: 0; box-shadow: 8px 0 24px rgba(0, 0, 0, 0.28); } }