/* ============================================================
 * 全能阅读器 Reader + 文档阅读器 DocView 扩展样式
 * 全部使用 Win3.1 调色板变量，字体沿用系统像素字体
 * ============================================================ */

/* ---------- 窗口骨架 ---------- */
.rdr-w .win-client { display: flex; flex-direction: column; }
.rdr-root { display: flex; flex-direction: column; height: 100%; min-height: 0; background: var(--face, #c0c0c0); }
.rdr-bar { display: flex; flex-wrap: wrap; gap: 2px; align-items: center; padding: 3px; border-bottom: 1px solid #808080; }
.rdr-bar .btn31 { min-width: 0; }
.rdr-mini { height: 20px; font-size: 12px; max-width: 148px; }
.rdr-body { flex: 1; min-height: 0; display: flex; background: var(--face, #c0c0c0); }
.rdr-full .rdr-side, .rdr-full .rdr-mid { display: none !important; }

/* ---------- 订阅侧栏 ---------- */
.rdr-side { flex: 0 0 226px; min-width: 226px; display: flex; flex-direction: column; border-right: 1px solid #808080; background: var(--face, #c0c0c0); }
.rdr-side-top { padding: 3px; border-bottom: 1px solid #a0a0a0; }
.rdr-side-top .input31 { width: 100%; box-sizing: border-box; }
.rdr-tree { flex: 1; min-height: 0; overflow: auto; padding: 2px 0; background: #fff; border: 2px inset var(--face, #c0c0c0); margin: 2px; }
.rdr-tn { display: flex; align-items: center; gap: 4px; padding: 1px 3px; font-size: 12px; cursor: var(--cur-hand, pointer); white-space: nowrap; }
.rdr-tn:hover { background: #e8eef8; }
.rdr-tn.active { background: #0000a8; color: #fff; }
.rdr-tn.active .rdr-tn-n { color: #fff; }
.rdr-tn.drop { outline: 2px dotted #0000a8; outline-offset: -2px; }
.rdr-tn-t { flex: 1; overflow: hidden; text-overflow: ellipsis; }
.rdr-tn-n { color: #606060; font-size: 11px; }
.rdr-side-head { padding: 4px 4px 2px; font-size: 11px; color: #505050; border-bottom: 1px solid #d0d0d0; margin: 4px 2px 2px; }
.rdr-side-foot { display: flex; flex-wrap: wrap; gap: 2px; padding: 3px; border-top: 1px solid #a0a0a0; }
.rdr-side-foot .btn31 { min-width: 0; font-size: 11px; }

/* ---------- 中栏 ---------- */
.rdr-mid { flex: 0 0 372px; min-width: 260px; display: flex; flex-direction: column; border-right: 1px solid #808080; background: var(--face, #c0c0c0); }
.rdr-mid-top { padding: 3px; border-bottom: 1px solid #808080; display: flex; flex-direction: column; gap: 2px; }
.rdr-tabs { display: flex; flex-wrap: wrap; gap: 2px; }
.rdr-tab { font-size: 11px; min-width: 0; }
.rdr-tab.active { border: 2px inset var(--face, #c0c0c0); background: #dcdcdc; }
.rdr-srow { display: flex; flex-wrap: wrap; gap: 2px; align-items: center; }
.rdr-srow .input31 { flex: 1; min-width: 70px; }
.rdr-date { max-width: 116px; flex: 0 0 auto !important; }
.rdr-hist { display: flex; flex-wrap: wrap; gap: 3px; align-items: center; }
.rdr-histlab { font-size: 11px; color: #505050; }
.rdr-histq { font-size: 11px; min-width: 0; padding: 0 4px; }
.rdr-list { flex: 1; min-height: 0; overflow: auto; background: #fff; border: 2px inset var(--face, #c0c0c0); margin: 2px; }
.rdr-lhead { position: sticky; top: 0; z-index: 2; padding: 3px 5px; font-size: 11px; background: var(--face, #c0c0c0); border-bottom: 1px solid #808080; color: #202020; }
.rdr-empty { padding: 14px 10px; font-size: 12px; color: #707070; }
.rdr-big { font-size: 13px; }
.rdr-item { position: relative; padding: 6px 8px; border-bottom: 1px solid #e4e4e4; cursor: var(--cur-hand, pointer); }
.rdr-item:hover { background: #eef3fb; }
.rdr-item.sel { background: #d6e2f5; }
.rdr-item.read .rdr-it { color: #808080; font-weight: normal; }
.rdr-it { font-size: 12px; font-weight: bold; line-height: 1.45; }
.rdr-im { font-size: 11px; color: #606060; margin-top: 2px; }
.rdr-iex { font-size: 11px; color: #505050; margin-top: 3px; line-height: 1.5; }
.rdr-isn { font-size: 11px; color: #303030; background: #fffbe6; margin-top: 3px; padding: 2px 4px; border-left: 3px solid #ffd400; }
.rdr-iact { position: absolute; right: 4px; top: 4px; display: flex; gap: 1px; opacity: 0; }
.rdr-item:hover .rdr-iact, .rdr-item.sel .rdr-iact { opacity: 1; }
.rdr-minib { min-width: 0 !important; padding: 0 3px !important; font-size: 11px !important; height: 17px; line-height: 1; }
.rdr-cimg { display: block; width: 100%; height: 92px; object-fit: cover; image-rendering: pixelated; border: 1px solid #b0b0b0; margin-bottom: 4px; }
.rdr-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 6px; padding: 6px; }
.rdr-cards .rdr-item { border: 1px solid #c8c8c8; }
.rdr-mag { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 6px; }
.rdr-mag .rdr-item.first { grid-column: 1 / -1; }
.rdr-compact .rdr-item { padding: 3px 6px; }
.rdr-compact .rdr-it { font-weight: normal; }
mark { background: #ffe066; color: inherit; }
mark[data-q] { background: #ffd6a5; }

/* ---------- 阅读窗格 ---------- */
/* ⚠️ p123①：`scrollbar-gutter: stable` —— 纵向滚动条槽位**恒定预留**。
   没有这一条时，「分页阅读」把正文切高之后 `.rdr-pane` 才长出滚动条，
   阅读区宽度会突然少掉 16px（实测 455 → 439）；而 A4 纸宽是在**还没有滚动条**时
   算出来的（419）⇒ 纸比阅读区宽 16px、右边被裁。预留槽位后宽度恒定，量到的
   可用宽恒为 403，纸宽不再随「滚动条出现与否」变化。 */
.rdr-pane { position: relative; flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; overflow: auto; scrollbar-gutter: stable; background: #fff; }
.rdr-prog { flex: none; height: 5px; background: #d8d8d8; border-bottom: 1px solid #a0a0a0; }
.rdr-prog i { display: block; height: 100%; width: 0; background: #0000a8; }
.rdr-phead { flex: none; padding: 10px 16px 6px; border-bottom: 1px solid #d0d0d0; }
.rdr-ptitle { font-size: 17px; font-weight: bold; line-height: 1.4; margin-bottom: 4px; }
.rdr-pmeta { font-size: 11px; color: #606060; }
.rdr-tag { display: inline-block; background: #e8e8e8; border: 1px solid #c0c0c0; padding: 0 3px; margin-left: 2px; color: #404040; }
.rdr-pacts { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 6px; }
.rdr-pacts .btn31 { min-width: 0; font-size: 11px; }
.rdr-tocbox { margin-top: 6px; padding: 4px 6px; border: 1px dashed #b0b0b0; font-size: 11px; }
.rdr-toclink { display: block; color: var(--rdr-link, #0000a8); text-decoration: none; cursor: var(--cur-hand, pointer); padding: 1px 0; }
.rdr-toclink:hover { text-decoration: underline; }
/* ⚠️ p47：pbody 原来写 `flex:1`（→ flex-basis:0）会把滚动容器 `.rdr-pane` 的内容盒
   压成「正好一屏高」：正文的溢出只是**可见溢出**，不撑高内容盒 ⇒ `position:sticky`
   底栏的包含块只有一屏，滚动时跟着一起跑，钉不住（用户报告「阅读进度随页面滚动」）。
   改成 `flex:1 0 auto`（basis=内容自然高、不收缩）：正文高时内容盒被撑高 → sticky 生效；
   正文矮时 grow:1 仍会吃掉剩余空间 → 短文章的版面与原来完全一致。 */
.rdr-pbody { flex: 1 0 auto; min-height: auto; display: flex; flex-direction: column; }
/* 竖排例外：`.rdr-content.rdr-vert{height:100%}` 需要一个**确定高度**的父盒，
   父盒一旦变成内容高，百分比高度退化成 auto，竖排会整列塌掉 ⇒ 只有竖排时保留 flex:1。 */
.rdr-pane:has(> .rdr-pbody > .rdr-content.rdr-vert) > .rdr-pbody { flex: 1 1 auto; min-height: 0; }
.rdr-content { flex: 0 0 auto; font-size: 15px; line-height: 1.8; word-wrap: break-word; }
/* p118⑥：文档 / 古籍的引导卡外层。里层整套类名（.gb-notice / .gb-notice-t / .gb-openbtn…）
   都来自文章应用，定义在 css/gbook.css；这里只给外层在 `.rdr-pbody` 里的定位。
   ⚠️ 不要在这里重设 padding / 字号 —— 一改两边就不「一样」了。 */
.rdr-docnotice { flex: 0 0 auto; align-self: stretch; }
.rdr-content img { max-width: 100%; height: auto; image-rendering: auto; }
.rdr-content a { color: var(--rdr-link, #0000a8); }
.rdr-content table { border-collapse: collapse; margin: 8px 0; }
.rdr-content td, .rdr-content th { border: 1px solid #b0b0b0; padding: 2px 6px; }
.rdr-content pre { background: #f4f4f4; border: 1px solid #d0d0d0; padding: 8px; overflow: auto; font-size: 12px; }
.rdr-content blockquote { margin: 8px 0; padding: 2px 10px; border-left: 4px solid #b0b0b0; color: #505050; }
.rdr-frame { width: 100%; height: 78vh; border: 0; background: #fff; }
.rdr-galbox { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 16px; }
.rdr-gal { max-width: 190px; max-height: 150px; border: 1px solid #808080; image-rendering: pixelated; cursor: var(--cur-hand, pointer); }
/* 底部工具条：阅读进度报告（字数 / 阅读时间 / 阅读进度 / 阅读形式 / 自动滚动）常驻于此。
   ⚠️ 必须「不透明底 + 叠在正文之上」：正文盒子按早期量到的 pane 高度算高，
   重排后可能比 pbody 高出一截，而这条栏原先是透明的 ⇒ 正文从栏里透出来，
   看起来就像「进度报告压在文字上面」。background-color:inherit 跟随主题底色。
   ⚠️ 而且 pane 本身就是滚动容器（overflow:auto）⇒ 这条栏原先是**跟着正文一起滚**的
   （用户报告：阅读进度随页面滚动跑到了正文中间）。用 position:sticky + bottom:0
   把它钉在滚动视口的底边 —— 不动 DOM 结构，也不用给 pbody 改成新滚动容器。 */
.rdr-pfoot {
  flex: none;
  position: sticky;
  bottom: 0;
  z-index: 6;
  padding: 3px 6px; border-top: 1px solid #a0a0a0;
  background-color: inherit;
}
.rdr-pfoot-in { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 11px; }
.rdr-fin { color: #505050; }
.rdr-fin:hover { color: #0000a8; }

/* 竖排：真正的竖排文本框（文字自上而下、列自右向左，横向滚动） */
.rdr-content.rdr-vert {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  height: 100%;
  max-width: none !important;
  margin: 6px !important;
  column-count: 1 !important;
  overflow-x: auto;
  overflow-y: hidden;
  line-height: 1.9;
}
.rdr-content.rdr-vert h1, .rdr-content.rdr-vert h2,
.rdr-content.rdr-vert h3, .rdr-content.rdr-vert h4 { margin-block: 0 1.2em; margin-inline: 0; }
.rdr-content.rdr-vert p { margin: 0 0 0 1.2em; }
.rdr-content.rdr-vert ul, .rdr-content.rdr-vert ol { margin-inline: 0 1em; }
.rdr-content.rdr-vert img { max-height: 78%; max-width: none; }
.rdr-content.rdr-vert pre { max-height: 60%; }

/* 分页阅读：每页一张卡片 */
.rdr-pag { background: #808080; padding: 10px; }
.rdr-pag-page { background: #fff; box-sizing: border-box; margin: 0 auto 12px; padding: 34px 30px; box-shadow: 2px 2px 0 rgba(0, 0, 0, .35); }

/* ---------- 选择工具条 / 右键菜单 / 表单 ---------- */
.rdr-selbar { position: fixed; z-index: 9600; display: flex; gap: 2px; padding: 2px; background: var(--face, #c0c0c0); border: 2px outset var(--face, #c0c0c0); box-shadow: 2px 2px 0 rgba(0, 0, 0, .3); }
.rdr-selbar .btn31 { min-width: 0; font-size: 11px; }
.rdr-menu { position: fixed; z-index: 9600; min-width: 132px; background: var(--face, #c0c0c0); border: 2px outset var(--face, #c0c0c0); box-shadow: 2px 2px 0 rgba(0, 0, 0, .3); padding: 1px; }
.rdr-mi { padding: 3px 8px; font-size: 12px; cursor: var(--cur-hand, pointer); }
.rdr-mi:hover { background: #0000a8; color: #fff; }
.rdr-form { padding: 4px 2px; max-height: 62vh; overflow: auto; }
.rdr-srow2 { display: flex; align-items: center; gap: 5px; padding: 3px 0; }
.rdr-srow2 .input31 { flex: 1; min-width: 90px; }
.rdr-slab { flex: 0 0 118px; text-align: right; font-size: 12px; white-space: nowrap; }
.rdr-note { font-size: 11px; color: #505050; padding: 3px 0 6px; white-space: pre-wrap; }
.rdr-note2 { display: flex; align-items: center; gap: 6px; font-size: 12px; padding: 3px 0; border-bottom: 1px dotted #c0c0c0; }
.rdr-note2 .btn31 { min-width: 0; font-size: 11px; margin-left: auto; }
.rdr-snum { display: flex; align-items: center; gap: 2px; flex: 1; }
.rdr-snum .input31 { width: 72px; flex: 0 0 auto; }
.rdr-snum .btn31 { min-width: 0; width: 20px; padding: 0; font-size: 10px; height: 19px; }
.rdr-col { width: 26px; height: 19px; padding: 0; border: 1px solid #808080; }

/* ---------- DocView 扩展：页面容器 / 分栏线 / 竖排文本框 ---------- */
.dv-page { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; }
.dv-src { flex: none; padding: 3px 10px; font-size: 11px; color: #505050; border-bottom: 1px solid #d8d8d8; background: var(--face, #c0c0c0); }
.dv-cover { margin-bottom: 0; }
.dv-content.dv-rule { column-rule: 1px solid #b0b0b0 !important; }
.dv-content.dv-v {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  height: 100%;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  padding: 16px 20px;
  line-height: 2;
}
.dv-content.dv-v h1, .dv-content.dv-v h2, .dv-content.dv-v h3 { margin-block: 0 1.2em; }
.dv-content.dv-v p { margin: 0 0 0 1.2em; }
.dv-content.dv-v img { max-height: 76%; max-width: none; }
.dv-vpage .dv-cover, .dv-vpage .dv-src { max-height: 26%; }

/* ---------- 文章应用：文档目录 ---------- */
.blog-folder .bf-n { color: #606060; }
.rdr-rows { padding: 0; }

/* ============================================================
 * p30：旧阅读器（DocView）增强界面 + 新阅读器左右比例拖拽条
 * ============================================================ */
.dv-body { flex: 1; min-height: 0; display: flex; }
.dv-page { flex: 1 1 auto; min-width: 0; position: relative; overflow: hidden; display: flex; flex-direction: column; }
.dv-prog { flex: none; height: 4px; background: #d8d8d8; border-bottom: 1px solid #a0a0a0; }
.dv-prog i { display: block; height: 100%; width: 0; background: #0000a8; }
.dv-split { flex: none; width: 6px; cursor: var(--cur-ew, ew-resize); background: var(--face, #c0c0c0); border-left: 1px solid #fff; border-right: 1px solid #808080; }
.dv-split:hover { background: #d8d8d8; }
body.rdr-col-drag * { cursor: var(--cur-ew, ew-resize) !important; user-select: none; }
body.rdr-row-drag * { cursor: var(--cur-ns, ns-resize) !important; user-select: none; }
.dv-info { flex: 0 0 250px; min-width: 140px; overflow: auto; background: #fff; border-left: 1px solid #808080; padding: 4px; }
.dv-sec { border: 1px solid #c0c0c0; margin-bottom: 5px; }
.dv-sec-h { padding: 2px 5px; font-size: 11px; font-weight: bold; background: var(--face, #c0c0c0); border-bottom: 1px solid #b0b0b0; cursor: var(--cur-hand, pointer); user-select: none; }
.dv-sec-b { padding: 4px 6px; max-height: 260px; overflow: auto; }
.dv-none { font-size: 11px; color: #707070; }
.dv-srow { display: flex; gap: 6px; font-size: 11px; padding: 1px 0; border-bottom: 1px dotted #e0e0e0; }
.dv-slab { flex: 0 0 78px; color: #505050; }
.dv-sval { flex: 1; text-align: right; }
.dv-note { font-size: 11px; padding: 3px 0; border-bottom: 1px dotted #d8d8d8; }
.dv-note .btn31 { float: right; }
.dv-foot { flex: none; padding: 3px 6px; border-top: 1px solid #808080; font-size: 11px; }
.dv-foot-in { display: flex; flex-wrap: wrap; }
.dv-fin { color: #505050; }
.dv-unit { font-size: 11px; color: #505050; }
.dv-group { display: inline-flex; align-items: center; gap: 2px; margin-right: 6px; }
.dv-glab { font-size: 11px; color: #303030; cursor: var(--cur-hand, pointer); user-select: none; white-space: nowrap; }
.dv-glab:hover { color: #0000a8; text-decoration: underline; }
.dv-gbtns { display: inline-flex; flex-wrap: wrap; gap: 2px; align-items: center; }
.dv-findrow { display: inline-flex; align-items: center; gap: 2px; margin-left: 6px; }
.dv-find { width: 108px; height: 19px; font-size: 11px; }
.dv-fcount { font-size: 11px; color: #505050; min-width: 34px; text-align: center; }
.dv-info .rdr-toclink { font-size: 11px; }
.dv-info .rdr-toclink:hover { background: #eef3fb; }
.dv-vert .dv-info { display: none; }
.dv-vert .dv-side { display: flex; }
.dv-a4 { column-count: 1; }

/* 新阅读器：左右栏比例拖拽条 */
.rdr-vsplit { flex: none; width: 6px; cursor: var(--cur-ew, ew-resize); background: var(--face, #c0c0c0); border-left: 1px solid #fff; border-right: 1px solid #808080; }
.rdr-hsplit { flex: none; width: 5px; cursor: var(--cur-ew, ew-resize); background: var(--face, #c0c0c0); border-left: 1px solid #fff; border-right: 1px solid #808080; }
.rdr-vsplit:hover, .rdr-hsplit:hover { background: #d8d8d8; }

/* ============================================================
 * p33：正文可选中（高亮 / 批注 / 复制的前提）+ A4 模式灰底
 * ============================================================ */
.dv-content, .dv-content *, .dv-mdsrc, .dv-src,
.rdr-content, .rdr-content *, .rdr-ptitle, .rdr-pmeta, .rdr-toclink,
.rdr-galbox, .rdr-galbox *, .sr-snippet, .bbs-content {
  user-select: text !important;
  -webkit-user-select: text !important;
}
.dv-content, .rdr-content { cursor: var(--cur-text, text); }
.dv-page.dv-paper { background: #808080 !important; }
.dv-page.dv-paper .dv-content { padding: 14px 0; }
.dv-page.dv-paper .dv-a4 { box-shadow: 3px 3px 0 rgba(0, 0, 0, .45); }
.dv-page.dv-paper .dv-pages-n { color: #fff; }

/* ============================================================
 * p35：工具条等宽对齐 / 竖排侧栏 / 笔记卡 / 设置对齐 / 主题模板
 * ============================================================ */

/* ---------- 工具条：同一组按钮等宽、上下左右对齐 ---------- */
.dv-toolbar { align-items: flex-start; }
.dv-group { display: inline-flex; align-items: flex-start; gap: 3px; margin-right: 8px; }
.dv-gbtns { display: inline-flex; flex-wrap: wrap; gap: 3px; align-items: stretch; }
.dv-toolbar .btn31, .dv-gbtns .btn31 { flex: 0 0 auto; height: 21px; padding: 1px 6px 2px; text-align: center; white-space: nowrap; }
.dv-glab { line-height: 21px; }
.dv-findrow { display: inline-flex; align-items: center; gap: 3px; }
.dv-findrow .btn31 { flex: 0 0 26px; width: 26px; padding: 0; text-align: center; }

/* 置灰禁用（Word 分页模式下的竖排按钮等） */
.btn31:disabled, .btn31.dv-dis { color: #808080 !important; text-shadow: 1px 1px 0 #fff; cursor: default; }
.btn31.dv-on { font-weight: bold; }

/* ---------- 竖排模式：侧栏压缩、小标题在按钮上方、按钮竖排对齐 ---------- */
.dv-vert .dv-side {
  display: flex; flex-direction: column; gap: 0; padding: 8px 7px;
  border-left: 1px solid #808080; overflow-y: auto; background: var(--face);
}
.dv-vgroup { margin: 0 0 8px; }
.dv-vgroup .dv-glab { display: block; font-size: 11px; font-weight: bold; color: #303030; margin: 0 0 3px; line-height: 1.3; }
.dv-vgroup .dv-gbtns { display: block; }
.dv-vgroup .btn31 { display: block; width: 100%; margin: 0 0 3px; padding: 2px 3px; text-align: center; white-space: normal; }
.dv-vgroup select.dv-font { width: 100%; margin: 0 0 3px; height: 20px; font-size: 11px; }
.dv-vgroup .dv-zval { display: block; text-align: center; font-size: 11px; color: #303030; }
.dv-vert .dv-split { width: 5px; cursor: var(--cur-ew, ew-resize); }
/* 竖排时统计/笔记/目录面板移到页面下方，三栏并排 */
.dv-vert .dv-info {
  display: flex; gap: 6px; align-items: stretch;
  width: 100%; max-height: 216px; border-top: 1px solid #808080; border-left: 0; padding: 5px;
}
.dv-vert .dv-sec { flex: 1 1 0; min-width: 0; margin: 0; }
.dv-vert .dv-sec-b { max-height: 150px; }

/* ---------- 笔记行 / 悬浮卡（Win3.1 风格） ---------- */
.dv-note { display: flex; align-items: center; gap: 5px; padding: 2px 1px; border-bottom: 1px dotted #d8d8d8; cursor: default; }
.dv-note-tx { flex: 1 1 auto; min-width: 0; font-size: 11px; line-height: 1.45; overflow: hidden; }
.dv-note-tx i { color: #505050; }
.rdr-minib { min-width: 0; flex: 0 0 auto; padding: 1px 4px 2px; font-size: 10px; height: 19px; line-height: 1.2; }
.dv-tip {
  position: fixed; z-index: 100060; min-width: 168px; max-width: 300px;
  background: var(--face, #c0c0c0); border: 2px outset var(--face, #c0c0c0);
  box-shadow: 3px 3px 0 rgba(0, 0, 0, .35); padding: 5px 7px; font-size: 11px; color: #000;
}
.dv-tip-h { font-weight: bold; border-bottom: 1px solid #808080; padding-bottom: 2px; margin-bottom: 3px; }
.dv-tip-t { font-style: italic; margin-bottom: 2px; }
/* p121⑥：浮窗里 `.dv-tip-t` 是「」引起来的**原文**、`.dv-tip-c` 是**注解内容**。
   两者原来都是继承来的 #000 ⇒ 分不清。注解内容改蓝（Win3.1 深蓝，与管理員徽章同色）。 */
.dv-tip-c { white-space: pre-wrap; color: #000080; }
.dv-tip-f { margin-top: 4px; text-align: right; }
.rdr-notelist { max-height: 300px; overflow: auto; border: 1px solid #a0a0a0; background: #fff; padding: 3px; }

/* ---------- 阅读设置 / 笔记设置：全部对齐 ---------- */
.rdr-srow2 { display: flex; align-items: center; gap: 6px; padding: 3px 0; }
.rdr-slab { flex: 0 0 128px; text-align: right; font-size: 12px; white-space: nowrap; }
.rdr-srow2 .rdr-wide { width: 196px; flex: 0 0 196px; }
.rdr-srow2 .rdr-tgl { width: 196px; flex: 0 0 196px; text-align: center; }
.rdr-srow2 .rdr-snum .input31 { width: 74px; }
.rdr-srow2 .rdr-snum .btn31 { width: 22px; min-width: 22px; height: 20px; padding: 0; text-align: center; flex: 0 0 22px; }
.rdr-themerow { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; flex: 1; }
.rdr-themerow .rdr-wide { flex: 1 1 130px; min-width: 120px; }
.rdr-themerow .rdr-col { width: 24px; height: 20px; padding: 0; border: 1px solid #808080; }
.rdr-form .rdr-note { font-size: 11px; color: #505050; padding-top: 6px; }

/* ---------- p35b：A4 纸面永不越界 / 工具条不挤占正文 ---------- */
.dv-content .dv-a4 { max-width: 100%; overflow-wrap: break-word; word-break: break-word; }
.dv-content { overflow-wrap: break-word; }
.dv-toolbar { flex: none; max-height: 54%; overflow-y: auto; }
.dv-body { min-height: 110px; }

/* ---------- p36：新阅读器「全部文章」标题可点击（用旧版全能阅读器打开） ---------- */
.rdr-itlink { cursor: var(--cur-hand, pointer); }
.rdr-itlink:hover { text-decoration: underline; color: var(--rdr-link, #0000a8); }

/* ============================================================
 * p37：新全能阅读器——正文与左栏留间距 + 操作按钮等长等宽
 * ============================================================ */
/* 正文区左右留出 gutter，避免紧贴左栏（订阅 / 列表）边框 */
.rdr-pbody { padding-left: 18px; padding-right: 18px; box-sizing: border-box; }
.rdr-pbody > .rdr-galbox { padding-left: 0; padding-right: 0; }
/* 操作按钮：由 __eqButtons 统一宽度，换行后各行严格对齐 */
.rdr-pacts { justify-content: flex-start; }
.rdr-pacts .btn31 { flex: 0 0 auto; white-space: nowrap; text-align: center; }
/* 竖排正文不需要额外 gutter（自身已有 margin） */
.rdr-content.rdr-vert { margin-left: 6px !important; }

/* ---------- 书签（16×16 像素图标） ---------- */
.bm-ico {
  display: inline-block; width: 16px; height: 16px; flex: 0 0 auto;
  vertical-align: text-top; margin-right: 5px; cursor: pointer; line-height: 1;
}
.bm-ico svg { display: block; width: 16px; height: 16px; image-rendering: pixelated; }
/* 竖排：图标置于段落上方 */
.bm-ico-v { display: inline-block; margin-right: 0; margin-bottom: 4px; }
/* 新建书签：拾取模式 */
.bm-picking, .bm-picking * { cursor: crosshair !important; }
.bm-picking > p:hover, .bm-picking > li:hover, .bm-picking > blockquote:hover,
.bm-picking > h1:hover, .bm-picking > h2:hover, .bm-picking > h3:hover, .bm-picking > h4:hover,
.bm-picking > pre:hover { outline: 1px dashed #c00000; }
.rdr-note2 { border: 1px solid #b0b0b0; background: #fff; margin: 4px 0; padding: 4px 6px; cursor: pointer; }
.rdr-bmh { font-size: 13px; color: #000; }
.rdr-bmm { font-size: 11px; color: #505050; margin-top: 2px; }


/* ============================================================
 * p41：旧全能阅读器（DocView）
 *   · 全部按钮等长等宽，且上下左右严格对齐
 *   · 工具条下缘可上下拖动调整高度
 *   · 竖排时目录/笔记/统计移到页面下方并压缩占位
 * ============================================================ */
/* 统一按钮宽高：由一个 CSS 变量下发，JS 只负责算宽度。
   这样做的好处是横条与竖栏共用同一个宽度 ⇒ 两处按钮严格等长宽。 */
.dv-root { --dv-btn-w: auto; --dv-btn-h: 21px; }
.dv-toolbar .btn31, .dv-vgroup .btn31 { height: var(--dv-btn-h); }
.dv-toolbar .btn31 { width: var(--dv-btn-w); }

/* 每个分组独占一行，组内按钮在行内换行 ⇒ 换行后列与列对齐（参考图布局） */
.dv-toolbar > .dv-group { flex: 1 1 100%; min-width: 0; }
.dv-toolbar .dv-gbtns { flex: 1 1 auto; min-width: 0; }

/* 竖排侧栏：同一个宽度；单行不折行（折行会把按钮撑高，破坏等高） */
.dv-vgroup .btn31 {
  display: block; width: var(--dv-btn-w); margin: 0 0 3px;
  padding: 2px 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 纯图标键（▼▲×）：保持正方形，不跟随统一宽度，否则会变成大长条 */
.dv-findrow .btn31.dv-ico {
  flex: 0 0 var(--dv-btn-h); width: var(--dv-btn-h); padding: 0; text-align: center;
}
/* 工具条被拖成固定高度时，行从顶部起排（别被 align-content:stretch 拉开） */
.dv-toolbar { align-content: flex-start; }

/* ---------- 工具条下缘的拖动把手（上下拖动调整工具条高度） ---------- */
.dv-bargrip {
  flex: none; height: 6px; position: relative;
  cursor: var(--cur-ns, ns-resize);
  background: var(--face, #c0c0c0);
  border-bottom: 1px solid #808080;
}
.dv-bargrip::after {
  content: ''; position: absolute; left: 50%; top: 2px; margin-left: -16px;
  width: 32px; height: 2px; background: #808080; box-shadow: 0 1px 0 #fff;
}
.dv-bargrip:hover { background: #d8d8d8; }
.dv-vert .dv-bargrip { display: none; }

/* ---------- 竖排：面板在页面下方，压到最小占位 ---------- */
.dv-vert .dv-info {
  max-height: 124px; padding: 4px 5px;
  border-top: 1px solid #808080; border-left: 0;
}
.dv-vert .dv-sec:first-child { flex: 1.7 1 0; }   /* 目录比笔记/统计宽一点 */
.dv-vert .dv-sec-b { max-height: 78px; }

/* 组名列固定宽度：各组按钮左边缘落在同一条竖线上（最左那一列也对齐） */
.dv-root { --dv-glab-w: auto; }
.dv-toolbar > .dv-group > .dv-glab { flex: 0 0 var(--dv-glab-w); width: var(--dv-glab-w); }
/* 横条 / 竖栏的内边距统一：否则量出来的自然宽度差 6px，
   两个方向的「统一宽度」就会不一致（横 165 / 竖 159） */
.dv-vgroup .btn31 { padding: 1px 6px 2px; }
