/* ============================================================================
   module-ui.css — 模组系统 2.0 的界面样式（index.html 与 admin.html 共用）
   ----------------------------------------------------------------------------
   ⚠️ 三条纪律（v2.20 审计结论 A3/A4）：
     1) **只写 .mod-* / .gx-* 前缀的类**，绝不写全局选择器（body/button/…）——
        后台 admin.html 自带 inline <style>，且**不引 style.css**，这里污染了会毁后台版式；
     2) 不依赖 style.css 的变量，自己在 .mod-root 里定义一份（两个页面都能用）；
     3) 图标沿用站点口径：emoji 默认字符带 VS15（&#65038;）表示单色线条；
        数据图标（物品/图鉴）不加 —— 见 DESIGN §4.26。
   ============================================================================ */

.mod-root, .gx-root, .md-ed, .sf-md-wrap, .md-ed-modal {
    /* 站点主题色（与 style.css 的变量同值，但这里是自带一份，后台也能用） */
    /* 正文字体：站点 --font-body 是无衬线；模组详情一律用它，不用 --font-display 那套装饰标题体 */
    --mod-body-font: var(--font-body, 'Noto Sans SC', 'Source Han Sans SC', 'Microsoft YaHei', 'PingFang SC', sans-serif);
    --mod-gold: #c99e4a;
    --mod-gold-dim: rgba(201, 158, 74, 0.35);
    --mod-red: #d44d5e;
    --mod-green: #6ac46a;
    --mod-bg: #14141a;
    --mod-bg2: #1a1a20;
    --mod-bg3: #101014;
    --mod-border: #26262e;
    --mod-text: #c8c0b0;
    --mod-text-dim: #8a7a60;
    --mod-num: 'Bahnschrift', 'DIN Alternate', 'Segoe UI', 'Microsoft YaHei', sans-serif;
    --mod-body: 'Noto Sans SC', 'Microsoft YaHei', 'PingFang SC', sans-serif;
    --mod-display: 'ZCOOL XiaoWei', 'Noto Serif SC', 'SimSun', serif;
}

/* ---------- 通用小件 ---------- */
.mod-root, .mod-root * { box-sizing: border-box; }
.mod-btn { padding: 5px 11px; border-radius: 7px; border: 1px solid var(--mod-border);
    background: rgba(20, 20, 26, 0.8); color: #a8a08e; font-size: 12px; cursor: pointer;
    font-family: var(--mod-body); transition: all .15s; }
.mod-btn:hover { border-color: var(--mod-gold-dim); color: #ded2b8; }
.mod-btn.is-on { border-color: var(--mod-gold); background: rgba(201, 158, 74, 0.14); color: #ffd080; }
.mod-btn.is-danger { border-color: rgba(212, 77, 94, 0.35); color: #c0707c; }
.mod-btn.is-danger:hover { border-color: var(--mod-red); color: #ff8ba0; }
.mod-btn[disabled] { opacity: .45; cursor: not-allowed; }
.mod-chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px;
    font-size: 11px; border: 1px solid var(--mod-border); color: #9a9284; background: rgba(255,255,255,0.02); }
.mod-chip.is-public { border-color: rgba(106, 196, 106, 0.45); color: #9ee09e; }
.mod-chip.is-table { border-color: rgba(201, 158, 74, 0.45); color: #ffd080; }
.mod-chip.is-keeper { border-color: rgba(212, 77, 94, 0.45); color: #ff9aa9; }
.mod-empty { padding: 22px 0; text-align: center; color: #5a5540; font-size: 12.5px; }
.mod-lab { font-size: 11px; color: var(--mod-text-dim); letter-spacing: .08em; }

/* ---------- 视口 / 布局 ---------- */
.mod-theater { position: relative; display: flex; flex-direction: column; gap: 10px;
    max-width: 1200px; margin: 0 auto; padding: 0 2rem 2rem; }
.mod-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding: 8px 10px; border-radius: 10px; background: var(--mod-bg);
    border: 1px solid var(--mod-border); }
.mod-bar-sep { width: 1px; height: 16px; background: var(--mod-border); margin: 0 3px; }
.mod-bar-spacer { flex: 1 1 auto; }
.mod-body { min-height: 320px; }

/* ---------- 卡片墙（万智牌式） ---------- */
.mod-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.mod-card { position: relative; display: flex; flex-direction: column; cursor: pointer;
    border: 1px solid var(--mod-border); border-radius: 10px; overflow: hidden;
    background: var(--mod-bg2); transition: transform .15s, border-color .15s, box-shadow .15s; }
.mod-card:hover { transform: translateY(-2px); border-color: var(--mod-gold-dim);
    box-shadow: 0 6px 20px rgba(0,0,0,.5); }
.mod-card.is-keeper { border-color: rgba(212, 77, 94, 0.28); }
.mod-card-cover { position: relative; width: 100%; aspect-ratio: 3 / 2; background: var(--mod-bg3);
    display: flex; align-items: center; justify-content: center; overflow: hidden; }
.mod-card-cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.mod-card-glyph { font-size: 30px; color: #4a4030; }
.mod-card-head { display: flex; align-items: baseline; gap: 6px; padding: 8px 10px 2px; }
.mod-card-title { font-family: var(--mod-display); font-size: 14px; color: #e6dcc4;
    line-height: 1.3; flex: 1 1 auto; min-width: 0; }
.mod-card-type { font-size: 10.5px; color: var(--mod-text-dim); }
.mod-card-hint { padding: 0 10px 9px; font-size: 11.5px; color: #7a7160; line-height: 1.5;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mod-card-flags { position: absolute; right: 6px; top: 6px; display: flex; gap: 4px; }
.mod-card-flag { padding: 1px 6px; border-radius: 999px; font-size: 10px; background: rgba(10,10,14,.82);
    border: 1px solid var(--mod-border); color: #9a9284; }
.mod-card-flag.is-climax { border-color: var(--mod-gold); color: #ffd080; }
.mod-card-flag.is-free { border-color: rgba(106, 196, 106, .45); color: #9ee09e; }

/* ---------- 大卡（点开） ---------- */
.mod-sheet { display: grid; grid-template-columns: 260px 1fr; gap: 16px; padding: 14px;
    background: var(--mod-bg2); border: 1px solid var(--mod-border); border-radius: 12px; }
.mod-sheet-cover { width: 100%; aspect-ratio: 3 / 2; border-radius: 8px; overflow: hidden;
    background: var(--mod-bg3); display: flex; align-items: center; justify-content: center; }
.mod-sheet-cover img { width: 100%; height: 100%; object-fit: cover; }
.mod-sheet h3 { font-family: var(--mod-display); font-size: 20px; color: #e6dcc4; margin: 0 0 6px; }
.mod-sheet-body { font-size: 13px; line-height: 1.85; color: var(--mod-text); }
.mod-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 6px; margin-top: 10px; }
.mod-field { display: flex; gap: 6px; padding: 6px 9px; border-radius: 7px; background: rgba(255,255,255,.02);
    border: 1px solid var(--mod-border); font-size: 12px; }
.mod-field .k { color: var(--mod-text-dim); flex: 0 0 auto; }
.mod-field .v { color: var(--mod-text); flex: 1 1 auto; min-width: 0; word-break: break-word; }
.mod-field.is-secret { border-color: rgba(212, 77, 94, .35); }
.mod-field.is-secret .v { color: #ff9aa9; }
.mod-attrs { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.mod-attr { padding: 3px 8px; border-radius: 6px; background: rgba(255,255,255,.03);
    border: 1px solid var(--mod-border); font-size: 11.5px; color: #a8a08e; font-family: var(--mod-num); }
.mod-attr b { color: #ded2b8; margin-left: 4px; }

/* ---------- 时间线（泳道 + 分支 + 同时发生） ---------- */
.mod-tl { display: flex; flex-direction: column; gap: 8px; }
.mod-tl-lane { display: flex; align-items: stretch; gap: 8px; }
.mod-tl-lanelab { flex: 0 0 92px; display: flex; align-items: center; gap: 6px;
    font-size: 11.5px; color: #a8a08e; }
.mod-tl-lanelab i { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.mod-tl-track { position: relative; flex: 1 1 auto; min-height: 62px; border-radius: 8px;
    background: rgba(255,255,255,.015); border: 1px dashed rgba(201,158,74,.12); }
.mod-beat { position: absolute; top: 8px; transform: translateX(-50%); min-width: 74px; max-width: 128px;
    padding: 5px 8px; border-radius: 8px; background: var(--mod-bg); border: 1px solid var(--mod-border);
    font-size: 11px; color: #b8b0a0; cursor: pointer; text-align: center; }
.mod-beat:hover { border-color: var(--mod-gold-dim); color: #ded2b8; }
.mod-beat.is-climax { border-color: var(--mod-gold); color: #ffd080; }
.mod-beat.is-done { border-style: solid; border-color: rgba(106,196,106,.5); }
.mod-beat.is-current { box-shadow: 0 0 0 2px rgba(201,158,74,.35); }
.mod-sync { position: absolute; top: 4px; height: 54px; border-left: 2px solid rgba(201,158,74,.45);
    border-right: 2px solid rgba(201,158,74,.45); border-radius: 4px; pointer-events: none; }
.mod-sync-lab { position: absolute; top: -2px; left: 50%; transform: translateX(-50%);
    font-size: 9.5px; color: var(--mod-gold); background: var(--mod-bg3); padding: 0 4px; }

/* ---------- 关系图（画布） ---------- */
.gx-wrap { position: relative; width: 100%; height: 460px; border-radius: 10px; overflow: hidden;
    border: 1px solid var(--mod-border); background:
      repeating-linear-gradient(to right, rgba(201,158,74,.06) 0 1px, transparent 1px 50px),
      repeating-linear-gradient(to bottom, rgba(201,158,74,.06) 0 1px, transparent 1px 50px),
      #0e0e12; cursor: grab; }
.gx-wrap.is-editing { cursor: crosshair; }
.gx-world { position: absolute; left: 0; top: 0; width: 1600px; height: 900px; transform-origin: 0 0; }
.gx-edges { position: absolute; left: 0; top: 0; pointer-events: none; }
.gx-edge { fill: none; stroke-linecap: round; }
.gx-edge-lab { font-size: 11px; fill: #a8a08e; pointer-events: none; }
.gx-node { position: absolute; width: 104px; margin: -34px 0 0 -52px; text-align: center; cursor: pointer; }
.gx-node-face { width: 68px; height: 68px; margin: 0 auto; border-radius: 50%; border: 2px solid #4a443c;
    background: var(--mod-bg3); overflow: hidden; display: flex; align-items: center; justify-content: center;
    font-size: 22px; color: var(--mod-gold); }
.gx-node-face img { width: 100%; height: 100%; object-fit: cover; }
.gx-node-name { margin-top: 3px; font-size: 11px; color: #ada48c; white-space: nowrap;
    text-shadow: 0 1px 3px #000, 0 0 7px #000; }
.gx-node.is-keeper .gx-node-face { border-color: var(--mod-red); }
.gx-node.is-selected .gx-node-face { box-shadow: 0 0 0 3px rgba(201,158,74,.5); }
.gx-port { position: absolute; width: 10px; height: 10px; border-radius: 50%; background: var(--mod-gold);
    border: 1px solid #2a2419; opacity: 0; transition: opacity .12s; }
.gx-wrap.is-editing .gx-node:hover .gx-port { opacity: .95; }

/* ---------- linter 徽章 ---------- */
.mod-lint { display: flex; flex-direction: column; gap: 3px; max-height: 180px; overflow-y: auto;
    font-size: 11.5px; }
.mod-lint-row { display: flex; gap: 7px; align-items: baseline; padding: 3px 7px; border-radius: 6px;
    background: rgba(255,255,255,.02); cursor: pointer; }
.mod-lint-row:hover { background: rgba(201,158,74,.08); }
.mod-lint-lv { flex: 0 0 auto; font-family: var(--mod-num); font-weight: bold; }
.mod-lint-row.is-E .mod-lint-lv { color: var(--mod-red); }
.mod-lint-row.is-W .mod-lint-lv { color: #c9a055; }
.mod-lint-row.is-I .mod-lint-lv { color: #7a8a90; }
.mod-lint-badge { padding: 2px 9px; border-radius: 999px; font-size: 11.5px; border: 1px solid var(--mod-border); }
.mod-lint-badge.is-E { border-color: rgba(212,77,94,.5); color: #ff9aa9; }
.mod-lint-badge.is-W { border-color: rgba(201,158,74,.45); color: #ffd080; }
.mod-lint-badge.is-ok { border-color: rgba(106,196,106,.5); color: #9ee09e; }

/* ---------- 编辑器：左树 / 中表单 / 右预览 ---------- */
.mod-edit { display: grid; grid-template-columns: 250px 1fr 300px; gap: 12px; align-items: start; }
.mod-tree { border: 1px solid var(--mod-border); border-radius: 10px; background: var(--mod-bg2);
    max-height: 560px; overflow-y: auto; font-size: 12.5px; }
.mod-tree-row { display: flex; align-items: center; gap: 6px; padding: 6px 9px; cursor: pointer;
    border-bottom: 1px solid rgba(255,255,255,.03); color: #a8a08e; }
.mod-tree-row:hover { background: rgba(201,158,74,.07); color: #ded2b8; }
.mod-tree-row.is-on { background: rgba(201,158,74,.12); color: #ffd080; }
.mod-tree-row.is-act { font-family: var(--mod-display); letter-spacing: .04em; }
.mod-tree-grp { padding: 6px 9px 3px; font-size: 10.5px; color: #6a6040; letter-spacing: .1em; }
.mod-form { border: 1px solid var(--mod-border); border-radius: 10px; background: var(--mod-bg2); padding: 12px; }
.mod-form-row { margin-bottom: 10px; }
.mod-form-row > label { display: block; font-size: 11.5px; color: var(--mod-text-dim); margin-bottom: 4px; }
.mod-input, .mod-textarea, .mod-select { width: 100%; padding: 7px 9px; border-radius: 6px;
    background: var(--mod-bg3); border: 1px solid var(--mod-border); color: #d0d0c8; font-size: 13px;
    font-family: var(--mod-body); }
.mod-input:focus, .mod-textarea:focus, .mod-select:focus { outline: none; border-color: var(--mod-gold-dim); }
.mod-textarea { min-height: 84px; resize: vertical; line-height: 1.7; }
.mod-preview { border: 1px solid var(--mod-border); border-radius: 10px; background: var(--mod-bg2);
    padding: 12px; position: sticky; top: 10px; }
.mod-save-dot { font-size: 11.5px; color: #5a5540; font-family: var(--mod-num); }
.mod-save-dot.is-saving { color: #c9a055; }
.mod-save-dot.is-saved { color: #7fae7f; }
.mod-save-dot.is-offline { color: var(--mod-red); }

/* ---------- 剧场：幕 / 地图钉 / 筛选 / 大卡浮层 ---------- */
.mod-act { padding: 10px 12px; margin-bottom: 10px; border-radius: 10px; background: var(--mod-bg2);
    border: 1px solid var(--mod-border); border-left: 3px solid var(--mod-gold); }
.mod-act-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.mod-act-no { font-family: var(--mod-num); font-size: 11.5px; color: var(--mod-gold); letter-spacing: .08em; }
.mod-act-title { font-family: var(--mod-display); font-size: 16px; color: #e6dcc4; }
.mod-act-sum { font-size: 12.5px; color: var(--mod-text-dim); line-height: 1.7; margin-bottom: 8px; }
.mod-filter { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.mod-mapwrap { margin-bottom: 16px; }
.mod-map { position: relative; width: 100%; border-radius: 10px; overflow: hidden;
    border: 1px solid var(--mod-border); background: var(--mod-bg3); line-height: 0; }
.mod-map > img, .mod-map > svg { width: 100%; height: auto; display: block; }
.mod-pin { position: absolute; transform: translate(-50%, -50%); cursor: pointer; text-align: center; line-height: 1.4; }
.mod-pin-dot { display: block; width: 12px; height: 12px; margin: 0 auto; border-radius: 50%;
    background: var(--mod-gold); box-shadow: 0 0 0 3px rgba(201, 158, 74, .28); }
.mod-pin:hover .mod-pin-dot { background: #ffd080; }
.mod-pin-lab { display: inline-block; margin-top: 3px; font-size: 11px; color: #efe4cb; white-space: nowrap;
    background: rgba(10, 10, 14, .82); border: 1px solid var(--mod-gold-dim); border-radius: 6px; padding: 1px 6px; }
.mod-sheet-ov { position: fixed; inset: 0; z-index: 60; background: rgba(6, 6, 10, .72); overflow-y: auto; padding: 40px 16px; }
.mod-sheet-wrap { max-width: 760px; margin: 0 auto; background: var(--mod-bg2); border: 1px solid var(--mod-border);
    border-radius: 12px; padding: 18px; box-shadow: 0 18px 50px rgba(0, 0, 0, .6); }
.mod-theater .mod-bar .mod-input { background: var(--mod-bg3); }

/* ---------- 跑团桌 / KP 工作台（会话层：.sess- 前缀同样只在本文件里出现） ---------- */
.sess-root { display: flex; flex-direction: column; gap: 10px; }
.sess-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; padding-bottom: 6px; border-bottom: 1px solid var(--mod-border); }
.sess-title { font-size: 18px; color: #e6dcc4; }
.sess-code b { font-family: var(--mod-num); color: var(--mod-gold); letter-spacing: .12em; }
.sess-lab { font-size: 12px; color: var(--mod-text-dim); }
.sess-sub { font-size: 12px; color: var(--mod-text-dim); margin-top: 2px; }
.sess-board { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding: 8px 10px;
    background: var(--mod-bg3); border: 1px solid var(--mod-border); border-radius: 8px; }
.sess-act { font-size: 14px; color: var(--mod-text); }
.sess-scene, .sess-timer { font-size: 13px; color: var(--mod-gold); }
.sess-seats { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
.sess-seat { font-size: 12px; padding: 2px 8px; border-radius: 999px; background: var(--mod-bg2);
    border: 1px solid var(--mod-border); color: var(--mod-text-dim); }
.sess-seat.is-me { border-color: var(--mod-gold); color: var(--mod-gold); }
.sess-seat.is-off { opacity: .5; }
.sess-wall { display: flex; gap: 8px; flex-wrap: wrap; }
.sess-log { max-height: 320px; overflow-y: auto; padding: 8px 10px; background: var(--mod-bg3);
    border: 1px solid var(--mod-border); border-radius: 8px; font-size: 13px; line-height: 1.9; }
.sess-line { color: var(--mod-text); }
.sess-line.is-mine { color: var(--mod-gold); }
.sess-line.is-whisper { color: #b08ad0; font-style: italic; }
.sess-line.is-dice { color: #8fd0b0; }
.sess-num { font-family: var(--mod-num); font-size: 15px; color: #d8f0c0; }
.sess-line.is-check { color: #d0b08f; }
.sess-line.is-card { color: #c9b8e0; }
.sess-line.is-act { color: var(--mod-gold); text-align: center; letter-spacing: .04em; }
.sess-line.is-timer { color: #d0a0a0; }
.sess-line.is-rel { color: #9fc0d0; }
.sess-line.is-sys { color: var(--mod-text-dim); font-size: 12px; }
.sess-input { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.sess-entry { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 8px 0; }
.sess-kp { margin-top: 8px; padding: 10px; border: 1px dashed var(--mod-gold-dim); border-radius: 8px;
    background: rgba(201, 158, 74, .05); display: flex; flex-direction: column; gap: 8px; }
.sess-kp-row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }

@media (max-width: 900px) {
    .mod-edit { grid-template-columns: 1fr; }
    .mod-sheet { grid-template-columns: 1fr; }
    .mod-preview { position: static; }
    .mod-theater { padding: 0 1rem 2rem; }
}

/* ============================================================================
   阅读页（v2.20.7）：模组详情就是这一块。口径 —— 宽度收口、字号够大、层级清楚。
   这里的所有字号必须 >= 13px（tools/test-module.js 的 §14 有断言盯着）。
   ========================================================================== */
.mod-reader {
    max-width: 1000px;
    margin: 0 auto;
    padding: 0 2rem 4rem;
}
.mod-reader-head {
    display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
    padding: 0 0 14px; margin-bottom: 10px; border-bottom: 1px solid var(--mod-border);
}
.mod-reader-title {
    font-size: 26px; color: #e6dcc4; margin: 0; letter-spacing: .02em;
}
.mod-reader-meta { font-size: 14px; color: var(--mod-text-dim); }
.mod-reader-meta i { color: var(--mod-border); font-style: normal; margin: 0 4px; }
.mod-reader .detail-tabs { margin: 14px 0 18px; }
.mod-reader .dtab { font-size: 15px; }
.mod-reader-cover {
    display: block; width: 100%; max-height: 320px; object-fit: cover;
    border-radius: 10px; margin-bottom: 18px; border: 1px solid var(--mod-border);
}
.mod-reader-empty { color: var(--mod-text-dim); font-size: 15px; }
.mod-reader .modal-section { font-size: 16px; }
.mod-reader .modal-section p { font-size: 16px; }
.mod-reader .ch-chapter-title { font-size: 20px; font-family: inherit; }
.mod-reader-fig { margin: 18px 0; }
.mod-reader-fig img { width: 100%; border-radius: 10px; border: 1px solid var(--mod-border); }
.mod-reader-fig figcaption { font-size: 14px; color: var(--mod-text-dim); text-align: center; margin-top: 6px; }
.mod-reader-block { margin: 24px 0; }
.mod-reader-block-t {
    font-size: 15px; color: var(--mod-gold); letter-spacing: .06em; margin-bottom: 10px;
    padding-bottom: 6px; border-bottom: 1px dashed var(--mod-gold-dim);
}
.mod-reader-hint { font-size: 13px; color: var(--mod-text-dim); letter-spacing: 0; }
.mod-reader-list { margin: 0; padding-left: 22px; }
.mod-reader-list li { font-size: 15px; color: var(--mod-text); line-height: 1.9; }
.mod-reader-cards { display: flex; gap: 12px; flex-wrap: wrap; }
.mod-reader-cards .mod-card { width: 250px; }
.mod-reader-truth { color: #d8c8a8; }
.mod-reader-keeper-ch { margin: 26px 0; }
.mod-reader-table { width: 100%; border-collapse: collapse; margin-top: 4px; }
.mod-reader-table th, .mod-reader-table td {
    text-align: left; font-size: 15px; padding: 9px 10px; border-bottom: 1px solid var(--mod-border);
    color: var(--mod-text); vertical-align: top;
}
.mod-reader-table th { color: var(--mod-text-dim); font-size: 13px; font-weight: normal; }
.mod-reader-secret {
    font-size: 13px; color: #d0a0a0; border: 1px solid #6a3a3a; border-radius: 4px; padding: 0 5px; margin-left: 4px;
}
.mod-reader-details { margin: 22px 0; border: 1px solid var(--mod-border); border-radius: 8px; background: var(--mod-bg3); }
.mod-reader-details summary { cursor: pointer; padding: 11px 14px; font-size: 15px; color: var(--mod-text-dim); }
.mod-reader-mapwrap { padding: 0 14px 14px; }
.mod-flow-act {
    margin-bottom: 14px; padding: 12px 14px; border-radius: 8px;
    background: var(--mod-bg3); border: 1px solid var(--mod-border);
}
.mod-flow-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.mod-flow-no { font-size: 13px; color: var(--mod-gold); letter-spacing: .08em; }
.mod-flow-title { font-size: 17px; color: #e6dcc4; }
.mod-flow-lab { font-size: 13px; color: var(--mod-text-dim); margin-left: auto; }
.mod-flow-row { display: flex; gap: 10px; padding: 3px 0; }
.mod-flow-k { flex: 0 0 68px; font-size: 13px; color: var(--mod-text-dim); }
.mod-flow-v { flex: 1; font-size: 15px; color: var(--mod-text); line-height: 1.8; }
.mod-flow-v .mod-reader-list { margin: 0; }

/* ============================================================================
   场景块（模组 3.0）：正文按成熟模组的写法展开 ——
   读白 → 玩家可见 → 检定 → 这里能拿到 → KP 信息（仅 KP）→ 玩家可能怎么走 → 卡住时 → 守秘人注意
   字号一律 >= 13px（与阅读页同一口径）。
   ========================================================================== */
.mod-scene { display: flex; flex-direction: column; gap: 16px; }
.mod-scene-readaloud {
    border-left: 3px solid var(--mod-gold); background: rgba(201, 158, 74, .07);
    border-radius: 0 8px 8px 0; padding: 12px 16px;
}
.mod-scene-tag { font-size: 13px; color: var(--mod-gold); letter-spacing: .06em; margin-bottom: 6px; }
.mod-scene-readaloud-body { font-size: 16px; line-height: 2; color: #e8ddc0; font-style: normal; }
.mod-scene-sec { display: flex; flex-direction: column; gap: 8px; }
.mod-scene-h {
    font-size: 14px; color: var(--mod-text-dim); letter-spacing: .08em;
    border-bottom: 1px dashed var(--mod-border); padding-bottom: 5px;
}
.mod-scene-keeper {
    border-left: 3px solid #a05060; background: rgba(160, 80, 96, .10);
    border-radius: 0 8px 8px 0; padding: 12px 16px;
}
.mod-scene-keeper .mod-scene-tag { color: #d0909c; }
.mod-scene-keeper-body { font-size: 15px; line-height: 1.95; color: #e0c8cc; }
.mod-check { background: var(--mod-bg3); border: 1px solid var(--mod-border); border-radius: 8px; padding: 10px 14px; margin-bottom: 8px; }
.mod-check-head { font-size: 15px; color: #9fc0d0; margin-bottom: 6px; }
.mod-check-diff { font-size: 13px; color: var(--mod-text-dim); margin-left: 8px; }
.mod-check-row { font-size: 15px; line-height: 1.9; color: var(--mod-text); display: flex; gap: 8px; }
.mod-check-k { flex: 0 0 60px; font-size: 13px; color: var(--mod-text-dim); white-space: nowrap; }
.mod-check-k.ok { color: #8fd0b0; }
.mod-check-k.no { color: #d09494; }
.mod-finds { display: flex; flex-direction: column; gap: 8px; }
.mod-find { background: var(--mod-bg2); border: 1px solid var(--mod-border); border-radius: 8px; padding: 10px 14px; }
.mod-find-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.mod-find-title { font-size: 16px; color: #e6dcc4; }
.mod-find-type { font-size: 13px; color: var(--mod-text-dim); }
.mod-find-keeper { font-size: 13px; color: #d0a0a0; border: 1px solid #6a3a3a; border-radius: 4px; padding: 0 5px; }
.mod-find-meta { font-size: 13px; color: var(--mod-gold); margin-top: 4px; }
.mod-find-body { font-size: 15px; line-height: 1.9; color: var(--mod-text); margin-top: 6px; }
.mod-find-points { font-size: 13px; color: #9fc0d0; margin-top: 6px; }
.mod-hint-box {
    font-size: 15px; line-height: 1.9; color: var(--mod-text);
    background: var(--mod-bg3); border: 1px dashed var(--mod-gold-dim); border-radius: 8px; padding: 10px 14px;
}
.mod-notes li { color: #d0b8a8; }

/* 阅读说明（排版上把「这些块是什么」讲清楚；已经取消卡片墙，线索/物品/讲义都在章节内） */
.mod-howto {
    margin: 0 0 18px; padding: 12px 16px; border-radius: 8px;
    background: var(--mod-bg3); border: 1px dashed var(--mod-border);
}
.mod-howto summary { cursor: pointer; font-size: 14px; color: var(--mod-gold); letter-spacing: .04em; }
.mod-howto .mod-reader-list { margin-top: 10px; }
.mod-howto .mod-reader-list li { font-size: 14px; line-height: 1.9; color: var(--mod-text-dim); }
.mod-howto .mod-reader-list li b { color: var(--mod-text); }
.mod-howto-player {
    font-size: 14px; line-height: 1.9; color: var(--mod-text-dim);
    border-style: solid; border-color: var(--mod-border);
}
.mod-howto-player b { color: var(--mod-gold); }

/* 页头面包屑（替代原来那个语义不明的「返回列表」按钮） */
.mod-reader-crumb {
    font-size: 13px; cursor: pointer; font-family: inherit; color: var(--mod-text-dim);
    background: transparent; border: 1px solid var(--mod-border); border-radius: 4px; padding: 3px 10px;
}
.mod-reader-crumb:hover { color: var(--mod-gold); border-color: var(--mod-gold-dim); }
/* 守密人信息底栏：退出保密模式 */
.mod-reader-keeperbar { margin: 26px 0 0; text-align: right; }
.mod-reader-exit {
    font-size: 13px; cursor: pointer; font-family: inherit; color: #d0909c;
    background: transparent; border: 1px solid #6a3a3a; border-radius: 4px; padding: 4px 12px;
}
.mod-reader-exit:hover { background: rgba(160, 80, 96, .12); }

/* 场景块时间标签与时间表场景列表 */
.mod-tt { display: flex; flex-direction: column; gap: 10px; }
.mod-tt-row {
    background: var(--mod-bg3); border: 1px solid var(--mod-border);
    border-radius: 8px; padding: 10px 14px;
}
.mod-tt-row.is-terminal { border-color: var(--mod-gold-dim); background: rgba(201, 158, 74, .08); }
.mod-tt-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.mod-tt-date { font-size: 14px; color: var(--mod-gold); letter-spacing: .02em; }
.mod-tt-label { font-size: 16px; color: #e6dcc4; }
.mod-tt-end {
    margin-left: auto; font-size: 13px; color: var(--mod-gold);
    border: 1px solid var(--mod-gold-dim); border-radius: 4px; padding: 1px 7px;
}
.mod-tt-branch { font-size: 14px; color: var(--mod-text-dim); margin-top: 4px; }
.mod-tt-scenes { font-size: 13px; color: var(--mod-text-dim); margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.mod-tt-scene {
    font-size: 13px; color: var(--mod-text); background: var(--mod-bg2);
    border: 1px solid var(--mod-border); border-radius: 999px; padding: 2px 10px;
}

/* 正文的排列切换（按时间 / 按地点）：文字与按钮必须排在一行且不重叠 */

/* 场景块的头：标题独占一行，元信息压成一行小字（第几幕 · 时间 · 地点）——不再堆一排标签 */
.mod-scene-title {
    font-size: 20px; color: var(--mod-gold); margin: 0 0 8px; padding-bottom: 8px;
    border-bottom: 1px solid var(--mod-border); font-family: inherit;
}
.mod-scene-meta {
    font-size: 13px; color: var(--mod-text-dim); margin: -2px 0 4px; line-height: 1.9;
}
.mod-scene-meta i { color: var(--mod-border); font-style: normal; margin: 0 6px; }

/* 章节导航：带编号、字号够大、可换行、悬停看全名（用户：看不到第几章、字太小看不全） */
.mod-scene-nav { gap: 8px !important; }
.mod-scene-nav .ch-main-tab {
    font-size: 14px !important; padding: 8px 14px !important; line-height: 1.5;
    font-family: var(--mod-body-font) !important;   /* 站点类 .ch-main-tab 自带衬线标题体，这里必须显式覆盖 */
    letter-spacing: 0 !important;
    display: inline-flex; align-items: center; gap: 7px; max-width: 100%; white-space: normal; text-align: left;
}
.mod-nav-no {
    font-size: 13px; color: var(--mod-gold); border: 1px solid var(--mod-gold-dim);
    border-radius: 3px; padding: 0 5px; flex: 0 0 auto;
}
.mod-scene-nav .ch-main-tab.active .mod-nav-no { color: #1a1a1e; background: var(--mod-gold); }
/* 调查员卡 */
.mod-pcs { display: flex; flex-direction: column; gap: 14px; }
.mod-pc { background: var(--mod-bg2); border: 1px solid var(--mod-border); border-radius: 10px; padding: 14px 16px; }
.mod-pc-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.mod-pc-name { font-size: 17px; color: #e6dcc4; }
.mod-pc-meta { font-size: 13px; color: var(--mod-text-dim); }
.mod-pc-sec { display: flex; gap: 10px; margin: 6px 0; }
.mod-pc-k { flex: 0 0 84px; font-size: 13px; color: var(--mod-text-dim); }
.mod-pc-v { flex: 1; font-size: 15px; line-height: 1.9; color: var(--mod-text); }
.mod-pc-secret {
    margin-top: 10px; padding: 10px 12px; border-left: 3px solid #a05060;
    background: rgba(160, 80, 96, .10); border-radius: 0 8px 8px 0; font-size: 15px; line-height: 1.9; color: #e0c8cc;
}
/* 讲义 */
.mod-reader-hint-line { font-size: 13px; color: var(--mod-text-dim); margin-bottom: 12px; }
.mod-handouts { display: flex; flex-direction: column; gap: 14px; }
.mod-handout { background: var(--mod-bg2); border: 1px solid var(--mod-border); border-radius: 10px; padding: 14px 16px; }
.mod-handout-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.mod-handout-title { font-size: 17px; color: #e6dcc4; }
.mod-handout-kind { font-size: 13px; color: var(--mod-gold); border: 1px solid var(--mod-gold-dim); border-radius: 999px; padding: 1px 9px; }
.mod-handout-from { font-size: 13px; color: var(--mod-text-dim); }
.mod-handout-body { font-size: 16px; line-height: 2; color: var(--mod-text); }
.mod-handout-body p { margin: 0 0 10px; }
.mod-handout-img { max-width: 100%; border-radius: 8px; margin-top: 10px; border: 1px solid var(--mod-border); }

/* 出品信息（作者 / 译者 / 出处 / 授权）——小字，压在简介页底部 */
.mod-reader-credits {
    font-size: 13px; color: var(--mod-text-dim); line-height: 1.9;
    margin-top: 16px; padding-top: 12px; border-top: 1px dashed var(--mod-border);
}

/* 预设调查员卡上的动作按钮 */
.mod-pc-actions { margin-left: auto; display: inline-flex; gap: 8px; }
.mod-pc-btn {
    font-size: 13px; font-family: inherit; cursor: pointer; padding: 3px 11px; border-radius: 4px;
    color: var(--mod-gold); background: transparent; border: 1px solid var(--mod-gold-dim);
}
.mod-pc-btn:hover { background: rgba(201, 158, 74, .1); }

/* 预设调查员的第三个动作：打印卡面（描边幽灵按钮，别抢主按钮的视觉） */
.mod-pc-btn-ghost { color: var(--mod-text-dim); border-color: var(--mod-border); }
.mod-pc-btn-ghost:hover { color: var(--mod-text); border-color: var(--mod-text-dim); background: transparent; }

/* ============================================================================
   模组 4.0：文档式阅读（正文只存一份 Markdown）
   ----------------------------------------------------------------------------
   · 版心 820px / 正文 17px / 行高 1.95 / 段间 1em；字号行距由 --doc-fs / --doc-lh 控制
   · .mod-docbar 与 .mod-docfoot 默认走 position: sticky（top:8px / bottom:10px）；
     `.is-docfallback` 是兜底：sticky 被祖先 overflow 裁掉时，JS 给 body 加这个类改走 fixed
   · .md-* 是 Markdown 渲染器的命名空间（importer.js 输出），只在本文件里定义样式
   ============================================================================ */

/* ---------- 外层：吸顶条 / 目录 / 正文 / 底部导航 ---------- */
.mod-docwrap {
    position: relative; max-width: 820px; margin: 0 auto; padding: 0 0 40px;
    font-family: var(--mod-body); font-size: var(--doc-fs, 17px); line-height: var(--doc-lh, 1.95);
}
.mod-docbar {
    position: sticky; top: 8px; z-index: 5;
    display: flex; align-items: center; gap: 10px;
    padding: 8px 12px; border: 1px solid rgba(90, 80, 60, .25); border-radius: 10px;
    background: rgba(246, 241, 230, .97); color: #2c2922;
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.mod-doc-cur {
    flex: 1 1 auto; min-width: 0; font-size: 14px; color: #5a5040;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mod-doc-progress {
    flex: 0 0 140px; height: 2px; border-radius: 2px;
    background: rgba(90, 80, 60, .2); overflow: hidden;
}
.mod-doc-progress i { display: block; height: 100%; width: 0; background: var(--mod-gold); transition: width .2s; }
.mod-doc-toc-btn, .mod-doc-set, .mod-doc-prev, .mod-doc-next {
    font-family: inherit; font-size: 13px; line-height: 1; cursor: pointer;
    padding: 7px 11px; border-radius: 7px; border: 1px solid rgba(90, 80, 60, .28);
    background: transparent; color: #5a5040; white-space: nowrap;
}
.mod-doc-toc-btn:hover, .mod-doc-set:hover, .mod-doc-prev:hover, .mod-doc-next:hover {
    border-color: var(--mod-gold); color: #8a5f22;
}
.mod-doc-prev[disabled], .mod-doc-next[disabled] { opacity: .35; cursor: not-allowed; }
.mod-doc-prev[disabled]:hover, .mod-doc-next[disabled]:hover { border-color: rgba(90, 80, 60, .28); color: #5a5040; }

.mod-doc-toc {
    position: absolute; left: 0; right: 0; top: 54px; z-index: 6;
    display: flex; flex-direction: column; gap: 2px;
    max-height: 54vh; overflow-y: auto; padding: 8px;
    border: 1px solid rgba(90, 80, 60, .25); border-radius: 10px;
    background: rgba(250, 246, 238, .99); box-shadow: 0 12px 30px rgba(0, 0, 0, .35);
}
.mod-doc-toc[hidden] { display: none; }
/* 从底部「☰ 目录」点开：贴在底栏上方浮起来（滚动到正文中段也看得见） */
.mod-doc-toc.is-float {
    /* 从底栏点开：作为底栏内的上拉面板（整行、可滚动），滚到哪都在眼前 */
    position: static; left: auto; right: auto; top: auto; bottom: auto;
    width: 100%; max-height: 42vh; margin: 0 0 8px;
    transform: none; z-index: auto;
    background: rgba(16, 16, 20, .98);
    border-color: rgba(201, 158, 74, .28);
    box-shadow: 0 12px 30px rgba(0, 0, 0, .55);
}
.mod-docfoot { position: sticky; flex-wrap: wrap; }   /* 保证绝对定位的子元素有参照 */
.mod-doc-toc.is-float button { color: #cfc6b2; }
.mod-doc-toc.is-float button:hover { background: rgba(201, 158, 74, .12); color: #ffd080; }
.mod-doc-toc.is-float button.is-on { color: #c99e4a; font-weight: 600; }
.mod-doc-toc button {
    font-family: inherit; font-size: 14px; text-align: left; cursor: pointer;
    padding: 9px 12px; border-radius: 6px; border: none; background: transparent;
    color: #5a5040; line-height: 1.5;
}
.mod-doc-toc button:hover { background: rgba(201, 158, 74, .14); color: #3a3020; }
.mod-doc-toc button.is-on { color: #8a5f22; background: rgba(201, 158, 74, .16); }

.mod-doc {
    padding: 34px 40px 10px; margin-top: 12px;
    background: #f5f0e4; color: #2c2922; border-radius: 12px;
    font-size: var(--doc-fs, 17px); line-height: var(--doc-lh, 1.95);
    overflow-wrap: break-word;
}
.mod-docfoot {
    position: sticky; bottom: 10px; z-index: 5;
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    margin-top: 16px; padding: 8px 10px;
    border: 1px solid rgba(90, 80, 60, .25); border-radius: 10px;
    background: rgba(246, 241, 230, .97);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.mod-doc-setpanel {
    position: absolute; right: 0; top: 54px; z-index: 7; width: 250px;
    padding: 12px 14px; border: 1px solid rgba(90, 80, 60, .25); border-radius: 10px;
    background: rgba(250, 246, 238, .99); box-shadow: 0 12px 30px rgba(0, 0, 0, .35);
    color: #2c2922;
}
.mod-doc-setpanel[hidden] { display: none; }
.mod-doc-setrow { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.mod-doc-setrow span { flex: 0 0 34px; font-size: 12px; color: #7a6a50; }
.mod-doc-setrow button {
    flex: 1 1 0; font-family: inherit; font-size: 12px; cursor: pointer; padding: 5px 0;
    border-radius: 6px; border: 1px solid rgba(90, 80, 60, .28); background: transparent; color: #5a5040;
}
.mod-doc-setrow button.is-on { border-color: var(--mod-gold); color: #8a5f22; background: rgba(201, 158, 74, .16); }
.mod-doc-sethint { font-size: 11px; color: #7a6a50; line-height: 1.6; }

/* 墨黑主题（默认是纸白） */
.mod-docwrap.is-ink .mod-doc { background: #131318; color: #cec6b8; }
.mod-docwrap.is-ink .md-read { background: rgba(201, 158, 74, .10); }
.mod-docwrap.is-ink .md-code { background: #0c0c10; color: #cfc7b8; }
.mod-docwrap.is-ink .md-table th { background: rgba(201, 158, 74, .16); }
.mod-docwrap.is-ink .mod-docbar,
.mod-docwrap.is-ink .mod-docfoot {
    background: rgba(10, 10, 14, .96); border-color: var(--mod-border); color: var(--mod-text);
}
.mod-docwrap.is-ink .mod-doc-cur { color: #a8a095; }
.mod-docwrap.is-ink .mod-doc-progress { background: rgba(255, 255, 255, .12); }
.mod-docwrap.is-ink .mod-doc-toc-btn,
.mod-docwrap.is-ink .mod-doc-set,
.mod-docwrap.is-ink .mod-doc-prev,
.mod-docwrap.is-ink .mod-doc-next { border-color: var(--mod-border); color: #a8a095; }
.mod-docwrap.is-ink .mod-doc-toc-btn:hover,
.mod-docwrap.is-ink .mod-doc-set:hover,
.mod-docwrap.is-ink .mod-doc-prev:hover,
.mod-docwrap.is-ink .mod-doc-next:hover { border-color: var(--mod-gold-dim); color: #ffd080; }
.mod-docwrap.is-ink .mod-doc-toc,
.mod-docwrap.is-ink .mod-doc-setpanel {
    background: rgba(8, 8, 12, .98); border-color: var(--mod-border); color: var(--mod-text);
}
.mod-docwrap.is-ink .mod-doc-toc button { color: #a8a095; }
.mod-docwrap.is-ink .mod-doc-toc button:hover { background: rgba(201, 158, 74, .10); color: #e6dcc4; }
.mod-docwrap.is-ink .mod-doc-toc button.is-on { color: var(--mod-gold); background: rgba(201, 158, 74, .12); }
.mod-docwrap.is-ink .mod-doc-setrow span { color: var(--mod-text-dim); }
.mod-docwrap.is-ink .mod-doc-setrow button { border-color: var(--mod-border); color: #a8a095; }
.mod-docwrap.is-ink .mod-doc-setrow button.is-on { border-color: var(--mod-gold); color: #ffd080; background: rgba(201, 158, 74, .12); }
.mod-docwrap.is-ink .mod-doc-sethint { color: var(--mod-text-dim); }

/* sticky 失效时的兜底（JS 给 body 加 .is-docfallback） */
.is-docfallback .mod-docwrap { padding-top: 62px; padding-bottom: 66px; }
.is-docfallback .mod-docbar {
    position: fixed; top: 8px; left: 50%; transform: translateX(-50%);
    width: min(820px, calc(100% - 24px)); z-index: 30;
}
.is-docfallback .mod-docfoot {
    position: fixed; bottom: 10px; left: 50%; transform: translateX(-50%);
    width: min(820px, calc(100% - 24px)); z-index: 30; margin-top: 0;
}
.is-docfallback .mod-doc-toc { position: fixed; top: 62px; left: 50%; transform: translateX(-50%); width: min(820px, calc(100% - 24px)); }
/* 上拉面板优先：兜底 fixed 规则不能把它顶到吸顶条下面去（这就是「目录总在顶部」的元凶） */
.is-docfallback .mod-doc-toc.is-float {
    position: static; top: auto; left: auto; right: auto; transform: none; width: 100%;
    max-height: 42vh; margin: 0 0 8px;
}
.is-docfallback .mod-doc-setpanel { position: fixed; top: 62px; right: 12px; }

/* ---------- 正文排版 ---------- */
.mod-doc p { margin: 0 0 1em; }
.mod-doc h1, .mod-doc h2, .mod-doc h3, .mod-doc h4 { font-family: inherit; line-height: 1.35; }
.mod-doc h1 { font-size: 2em; margin: 0 0 .7em; letter-spacing: .01em; }
.mod-doc h2 { font-size: 1.5em; margin: 2.5em 0 1em; }
.mod-doc h2::before {
    content: ''; display: block; width: 38px; height: 2px;
    background: var(--mod-gold); margin: 0 0 14px;
}
.mod-doc h3 { font-size: 1.2em; margin: 1.9em 0 .7em; }
.mod-doc h4 { font-size: 1.05em; margin: 1.5em 0 .6em; color: #6a5a42; }
.mod-doc ul, .mod-doc ol { margin: 0 0 1em; padding-left: 1.5em; }
.mod-doc li { margin: .35em 0; }
.mod-doc blockquote {
    margin: 1.4em 0; padding: .55em 1.1em; border-left: 3px solid var(--mod-gold);
    background: rgba(201, 158, 74, .09); border-radius: 0 6px 6px 0; color: #5a4f3e;
}
.mod-doc blockquote p { margin: .3em 0; }
.mod-doc hr { border: none; border-top: 1px solid rgba(90, 80, 60, .3); margin: 2.2em 0; }
.mod-doc a { color: #8a5f22; text-decoration: underline; text-underline-offset: 2px; }
.mod-doc a:hover { color: #b07a2a; }
.mod-doc strong { font-weight: 700; color: #1f1c16; }
.mod-doc em { font-style: italic; }
.mod-doc code {
    font-family: Consolas, 'Courier New', monospace; font-size: .92em;
    padding: .1em .35em; border-radius: 4px; background: rgba(90, 80, 60, .14); color: #5a3f1e;
}
.mod-docwrap.is-ink .mod-doc strong { color: #f0e8d8; }
.mod-docwrap.is-ink .mod-doc a { color: #d8ae66; }
.mod-docwrap.is-ink .mod-doc code { background: rgba(255, 255, 255, .1); color: #e0cfa8; }
.mod-docwrap.is-ink .mod-doc blockquote { color: #b8ab94; }
.mod-docwrap.is-ink .mod-doc h4 { color: #b8a88c; }

.mod-doc .md-table {
    width: 100%; border-collapse: collapse; margin: 1.4em 0; font-size: .94em; line-height: 1.6;
}
.mod-doc .md-table th, .mod-doc .md-table td {
    border: 1px solid rgba(90, 80, 60, .28); padding: 8px 10px; text-align: left; vertical-align: top;
}
.mod-doc .md-table th { background: rgba(201, 158, 74, .16); font-weight: 700; }
.mod-doc .md-fig { margin: 1.8em 0; text-align: center; }
.mod-doc .md-fig img { max-width: 100%; height: auto; border-radius: 8px; display: inline-block; }
.mod-doc .md-fig figcaption { margin-top: .5em; font-size: 13px; color: #7a6a50; }
.mod-doc .md-fig-bad {
    display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px;
    border: 1px dashed rgba(160, 80, 96, .5); color: #a04450;
}
.mod-doc .md-code {
    margin: 1.4em 0; padding: 14px 16px; border-radius: 8px; overflow-x: auto;
    background: #1b1b22; color: #d8d0c0; font-size: .9em; line-height: 1.7;
}
.mod-doc .md-code code { background: none; padding: 0; color: inherit; font-size: 1em; }
.mod-doc .md-warn {
    margin: 1.2em 0; padding: 9px 13px; border-radius: 6px; font-size: 13px;
    border: 1px solid rgba(201, 158, 74, .45); background: rgba(201, 158, 74, .10); color: #7a5a22;
}

/* 读白 / 守密人 / 发放物 / 检定 */
.mod-doc .md-read {
    margin: 1.6em 0; padding: 14px 18px; border-left: 3px solid var(--mod-gold);
    background: rgba(201, 158, 74, .12); border-radius: 0 8px 8px 0;
}
.mod-doc .md-read-tag {
    font-size: 12px; letter-spacing: .14em; color: #8a5f22; margin-bottom: 6px;
}
.mod-doc .md-read p:last-child, .mod-doc .md-kp p:last-child,
.mod-doc .md-handout p:last-child, .mod-doc .md-check p:last-child { margin-bottom: 0; }
.mod-doc .md-box {
    margin: 1.5em 0; padding: 14px 18px; color: #cfc6b8;
    border: 1px solid var(--box-tone, rgba(146, 132, 108, .28));
    border-radius: 6px;
    background: var(--box-bg, #18171a);
}
.mod-doc .md-box[data-tone="warm"] { --box-bg: #241a1b; --box-tone: rgba(164, 104, 78, .36); }
.mod-doc .md-box[data-tone="cool"] { --box-bg: #141d23; --box-tone: rgba(92, 130, 148, .36); }
.mod-doc .md-box[data-tone="neutral"] { --box-bg: #18171a; --box-tone: rgba(146, 132, 108, .28); }
.mod-doc .md-box a { color: #d8ae66; }
.mod-doc .md-box p:last-child { margin-bottom: 0; }
.mod-doc .md-kp {
    margin: 1.4em 0; padding: 12px 16px; border-left: 3px solid #a05060;
    background: rgba(160, 80, 96, .10); border-radius: 0 8px 8px 0;
}
.mod-doc .md-kp-tag { font-size: 12px; letter-spacing: .14em; color: #8a3f4d; margin-bottom: 4px; }
.mod-doc .md-kp details { margin-top: 6px; }
.mod-doc .md-kp summary { cursor: pointer; font-size: 13px; color: #7a6a50; }
.mod-doc .md-handout {
    margin: 1.6em 0; padding: 14px 18px; border: 1px dashed rgba(201, 158, 74, .55);
    border-radius: 8px; background: rgba(201, 158, 74, .06);
}
.mod-doc .md-handout-tag { font-size: 12px; letter-spacing: .1em; color: #8a5f22; margin-bottom: 6px; }
.mod-doc .md-check {
    margin: 1.4em 0; border: 1px solid rgba(201, 158, 74, .38); border-radius: 8px;
    overflow: hidden; background: rgba(255, 255, 255, .35);
}
.mod-doc .md-check-h {
    padding: 8px 14px; background: rgba(201, 158, 74, .16); color: #7a5220;
    font-size: 14px; letter-spacing: .04em;
}
.mod-doc .md-check-row {
    padding: 8px 14px; border-top: 1px solid rgba(90, 80, 60, .18); font-size: .95em;
}
.mod-doc .md-check-ok { color: #356b3f; }
.mod-doc .md-check-no { color: #96323f; }
.mod-doc .md-check-push { color: #6a5a44; }
.mod-docwrap.is-ink .mod-doc .md-check { background: rgba(255, 255, 255, .03); }
.mod-docwrap.is-ink .mod-doc .md-check-h { color: #e0c080; }
.mod-docwrap.is-ink .mod-doc .md-check-ok { color: #8fd09a; }
.mod-docwrap.is-ink .mod-doc .md-check-no { color: #e08a96; }
.mod-docwrap.is-ink .mod-doc .md-check-push { color: #c0b49e; }
.mod-docwrap.is-ink .mod-doc .md-read-tag,
.mod-docwrap.is-ink .mod-doc .md-handout-tag { color: #d8ae66; }
.mod-docwrap.is-ink .mod-doc .md-kp-tag { color: #d08a96; }
.mod-docwrap.is-ink .mod-doc .md-fig figcaption,
.mod-docwrap.is-ink .mod-doc .md-kp summary { color: #a89a80; }
.mod-docwrap.is-ink .mod-doc .md-warn { color: #e0c080; }

/* 3.0 场景块：沿用原来的场景样式，只把字号交给阅读设置 */
.mod-doc-legacy { padding-top: 18px; }
.mod-doc-legacy .mod-scene-title { font-family: inherit; }
.mod-doc-legacy .modal-section { font-size: inherit; line-height: inherit; color: inherit; }

/* ---------- 窄屏：目录变全屏抽屉，版心 100% ---------- */
@media (max-width: 720px) {
    .mod-docwrap { max-width: 100%; }
    .mod-doc { padding: 20px 18px 6px; border-radius: 8px; font-size: 16px; }
    .mod-doc h1 { font-size: 1.6em; }
    .mod-doc h2 { font-size: 1.3em; margin-top: 2em; }
    .mod-docbar { gap: 6px; padding: 6px 8px; }
    .mod-doc-cur { font-size: 13px; }
    .mod-doc-progress { flex: 0 0 70px; }
    .mod-doc-toc-btn, .mod-doc-set, .mod-doc-prev, .mod-doc-next { padding: 7px 9px; }
    .mod-doc-toc {
        position: fixed; inset: 0; top: 0; left: 0; right: 0; bottom: 0; max-height: none;
        padding: 18px 16px 28px; border-radius: 0; z-index: 40; background: rgba(250, 246, 238, .99);
    }
    .mod-docwrap.is-ink .mod-doc-toc { background: rgba(10, 10, 14, .99); }
    .mod-doc-toc button { font-size: 16px; padding: 13px 10px; }
    .mod-doc-setpanel { right: 8px; top: 52px; width: calc(100% - 16px); max-width: 300px; }
}

/* ---------- 打印：只留正文 ---------- */
@media print {
    .mod-docbar, .mod-doc-toc, .mod-docfoot, .mod-doc-setpanel { display: none !important; }
    .mod-docwrap { max-width: 100%; padding: 0; }
    .mod-doc, .mod-docwrap.is-ink .mod-doc {
        background: #fff !important; color: #000 !important; padding: 0; border-radius: 0;
    }
    .mod-doc * { color: #000 !important; background: none !important; }
    .mod-doc .md-read, .mod-doc .md-check { break-inside: avoid; page-break-inside: avoid; }
    .mod-doc .md-read, .mod-doc .md-kp, .mod-doc .md-handout, .mod-doc .md-check, .mod-doc .md-box { border-color: #888 !important; }
}

/* ============================================================================
   写作同源：Markdown 编辑器（投稿页 / 后台共用 md-editor.js）
   ============================================================================ */
.sf-md-wrap { margin-top: 10px; }
.sf-md-import { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.sf-md-import button {
    font-family: inherit; font-size: 13px; cursor: pointer; padding: 7px 13px;
    border-radius: 7px; border: 1px solid var(--mod-gold-dim);
    background: rgba(201, 158, 74, .08); color: var(--mod-gold);
}
.sf-md-import button:hover { background: rgba(201, 158, 74, .16); }

.md-ed { border: 1px solid var(--mod-border); border-radius: 10px; overflow: hidden; background: var(--mod-bg2); max-width: 1100px; margin-left: auto; margin-right: auto; }
.md-ed-bar {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    padding: 7px 9px; border-bottom: 1px solid var(--mod-border); background: var(--mod-bg);
}
.md-ed-tool {
    font-family: inherit; font-size: 12px; cursor: pointer; padding: 5px 9px;
    border-radius: 6px; border: 1px solid var(--mod-border);
    background: transparent; color: #a8a095;
}
.md-ed-tool:hover { border-color: var(--mod-gold-dim); color: #ffd080; }
.md-ed-sep { width: 1px; height: 16px; background: var(--mod-border); margin: 0 3px; }
.md-ed-spacer { flex: 1 1 auto; }
.md-ed-view { display: flex; border: 1px solid var(--mod-border); border-radius: 6px; overflow: hidden; }
.md-ed-view button {
    font-family: inherit; font-size: 12px; cursor: pointer; padding: 5px 10px;
    border: none; background: transparent; color: #8a8272;
}
.md-ed-view button.is-on { background: rgba(201, 158, 74, .16); color: #ffd080; }
.md-ed-main { display: grid; grid-template-columns: 1fr 1fr; min-height: 420px; }
.md-ed-pane { min-width: 0; display: flex; flex-direction: column; }
.md-ed-pane + .md-ed-pane { border-left: 1px solid var(--mod-border); }
@media (max-width: 720px) {
    .md-ed-main { grid-template-columns: 1fr; }
    .md-ed-pane + .md-ed-pane { border-left: none; border-top: 1px solid var(--mod-border); }
    .md-ed-ta { min-height: 300px; }
    .md-ed-wrap { min-height: 300px; }
}
.md-ed-h {
    padding: 6px 12px; font-size: 11px; letter-spacing: .1em; color: var(--mod-text-dim);
    border-bottom: 1px solid var(--mod-border); background: rgba(255, 255, 255, .02);
}
/* 高亮镜像层：textarea 的文字透明，实际文字画在 .md-ed-hl 上；两层的字体 / 行高 / 内边距逐项一致 */
.md-ed-wrap { position: relative; flex: 1 1 auto; min-height: 380px; display: flex; flex-direction: column; }
.md-ed-wrap.is-drop { outline: 2px dashed var(--mod-gold-dim); outline-offset: -4px; }
.md-ed-hl, .md-ed-ta {
    box-sizing: border-box;
    padding: 14px 16px;
    font-family: Consolas, 'Courier New', monospace;
    font-size: 13.5px;
    line-height: 1.85;
    letter-spacing: normal;
    tab-size: 4;
    white-space: pre-wrap;
    overflow-wrap: break-word;
    word-break: normal;
}
.md-ed-hl {
    position: absolute; inset: 0; z-index: 0; margin: 0;
    overflow: hidden; pointer-events: none;
    color: #d0d0c8; background: #141418;
    white-space: normal;          /* 行间 \n 交给 .hl-line 自己的 pre-wrap，避免多出空行 */
}
.md-ed-hl .hl-line {
    display: block; min-height: 1.85em;
    white-space: pre-wrap;
}
.md-ed-ta {
    position: relative; z-index: 1;
    flex: 1 1 auto; width: 100%; min-height: 380px; resize: vertical;
    border: none; outline: none;
    background: transparent; color: transparent; caret-color: #e8e0d0;
}
.md-ed-ta::placeholder { color: #6f6a60; }
.md-ed-ta::selection { background: rgba(201, 158, 74, .28); color: transparent; }
.md-ed-tool:disabled { opacity: .55; cursor: default; }
.md-ed-tool.is-busy { border-color: var(--mod-gold-dim); color: #ffd080; }

/* 围栏块配色：左竖线 + 淡背景；首尾围栏行加粗，细边框用 inset 阴影（不占行高，不会错位） */
.md-ed-hl .hl-kp { --hl-c: #d44d5e; --hl-bg: rgba(212, 77, 94, .08); background: var(--hl-bg); box-shadow: inset 3px 0 0 var(--hl-c); }
.md-ed-hl .hl-read { --hl-c: #c99e4a; --hl-bg: rgba(201, 158, 74, .07); background: var(--hl-bg); box-shadow: inset 3px 0 0 var(--hl-c); }
.md-ed-hl .hl-handout { --hl-c: #6ea0dc; --hl-bg: rgba(110, 160, 220, .08); background: var(--hl-bg); box-shadow: inset 3px 0 0 var(--hl-c); }
.md-ed-hl .hl-check { --hl-c: #78c8a0; --hl-bg: rgba(120, 200, 160, .08); background: var(--hl-bg); box-shadow: inset 3px 0 0 var(--hl-c); }
.md-ed-hl .hl-kp.hl-fence { color: #ff9fae; font-weight: 700; }
.md-ed-hl .hl-read.hl-fence { color: #ffd080; font-weight: 700; }
.md-ed-hl .hl-handout.hl-fence { color: #b9d4f2; font-weight: 700; }
.md-ed-hl .hl-check.hl-fence { color: #b5e6cc; font-weight: 700; }
.md-ed-hl .hl-start { box-shadow: inset 0 1px 0 var(--hl-c), inset 3px 0 0 var(--hl-c); }
.md-ed-hl .hl-end { box-shadow: inset 0 -1px 0 var(--hl-c), inset 3px 0 0 var(--hl-c); }
.md-ed-hl .hl-start.hl-end { box-shadow: inset 0 1px 0 var(--hl-c), inset 0 -1px 0 var(--hl-c), inset 3px 0 0 var(--hl-c); }
.md-ed-hl .hl-open { outline: 1px dashed #d44d5e; outline-offset: -1px; }
.md-ed-prev { flex: 1 1 auto; overflow-y: auto; max-height: 620px; padding: 14px 18px; }
.md-ed-prev .mod-doc { margin: 0; padding: 18px 20px; border-radius: 8px; }
.md-ed-prev .mod-docbar, .md-ed-prev .mod-docfoot, .md-ed-prev .mod-doc-toc,
.md-ed-prev .mod-doc-setpanel { display: none; }
.md-ed-foot {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    padding: 7px 11px; border-top: 1px solid var(--mod-border); background: var(--mod-bg);
    font-size: 12px; color: var(--mod-text-dim);
}
.md-ed-stat { white-space: nowrap; }
.md-ed-lint { display: flex; gap: 8px; flex-wrap: wrap; }
.md-ed-lint-item { padding: 1px 8px; border-radius: 999px; border: 1px solid var(--mod-border); font-size: 11px; }
.md-ed-lint-item.is-w { border-color: rgba(201, 158, 74, .5); color: #d8ae66; }
.md-ed-lint-item.is-i { border-color: var(--mod-border); color: #9a9284; }
.md-ed-lint-empty { color: #6ac46a; font-size: 11px; }
.md-ed-ro .md-ed-hl { color: #8a8272; }
.md-ed-ro .md-ed-ta { color: transparent; caret-color: transparent; }

/* 长文 / 输入中：textarea 文字正常可见；镜像层只画底色/边框，避免每次按键整页重排 */
.md-ed-big .md-ed-ta,
.md-ed-typing .md-ed-ta { color: #d0d0c8; }
.md-ed-big .md-ed-hl,
.md-ed-typing .md-ed-hl { color: transparent; }
.md-ed-big .md-ed-hl .hl-line { color: transparent; font-weight: normal; }
.md-ed-typing .md-ed-hl .hl-line { color: transparent; }
.md-ed-ro.md-ed-big .md-ed-ta,
.md-ed-ro.md-ed-typing .md-ed-ta { color: #8a8272; caret-color: transparent; }

.md-ed-modal {
    position: fixed; inset: 0; z-index: 9998; display: flex; align-items: center; justify-content: center;
    background: rgba(0, 0, 0, .82);
}
.md-ed-modal-box {
    width: 680px; max-width: 94vw; max-height: 88vh; overflow-y: auto;
    padding: 20px 22px; border: 1px solid var(--mod-border); border-radius: 10px;
    background: #1a1a1e; color: var(--mod-text); font-family: var(--mod-body);
}
.md-ed-modal-t { font-size: 16px; color: var(--mod-gold); margin: 0 0 6px; }
.md-ed-modal-tip { font-size: 12px; color: var(--mod-text-dim); line-height: 1.7; margin-bottom: 10px; }
.md-ed-modal textarea {
    width: 100%; min-height: 180px; box-sizing: border-box; resize: vertical;
    padding: 10px 12px; border-radius: 6px; border: 1px solid var(--mod-border);
    background: #141418; color: #d0d0c8; font-family: Consolas, monospace; font-size: 13px;
}
.md-ed-import-file {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin: 12px 0 4px; padding: 12px; border: 1px dashed var(--mod-border); border-radius: 8px;
    background: rgba(255,255,255,.018);
}
.md-ed-import-pick {
    font-family: inherit; font-size: 12.5px; cursor: pointer; padding: 7px 14px;
    border-radius: 7px; border: 1px solid var(--mod-gold-dim); background: rgba(201,158,74,.12); color: #ffd080;
}
.md-ed-import-pick:hover { background: rgba(201,158,74,.2); }
.md-ed-import-name { color: var(--mod-text-dim); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-ed-import-apply:disabled { opacity: .38; cursor: default; }
.md-ed-modal-row { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0; }
.md-ed-modal-row button {
    font-family: inherit; font-size: 12px; cursor: pointer; padding: 6px 12px;
    border-radius: 6px; border: 1px solid var(--mod-border); background: transparent; color: #a8a095;
}
.md-ed-modal-row button:hover { border-color: var(--mod-gold-dim); color: #ffd080; }
.md-ed-modal-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.md-ed-modal-foot .md-ed-primary {
    font-family: inherit; font-size: 13px; cursor: pointer; padding: 7px 16px; border-radius: 7px;
    border: 1px solid var(--mod-gold-dim); background: rgba(201, 158, 74, .14); color: #ffd080;
}
.md-ed-modal-foot button {
    font-family: inherit; font-size: 13px; cursor: pointer; padding: 7px 16px; border-radius: 7px;
    border: 1px solid var(--mod-border); background: transparent; color: #a8a095;
}

/* 导入校对面板（阶段 C）：左边逐条改级别，右边实时预览 */
.md-ed-modal-box.is-correct { width: 1040px; }
.md-ed-modal-box.is-correct .md-ed-import-only { display: none; }
.md-ed-modal-box.is-drag { outline: 2px dashed var(--mod-gold-dim); outline-offset: -6px; }
.md-ed.is-drag { outline: 2px dashed var(--mod-gold-dim); outline-offset: -4px; }

.md-ed-correct { margin-top: 10px; }
.md-ed-correct-head {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding-bottom: 8px; border-bottom: 1px solid var(--mod-border);
    font-size: 13px; color: var(--mod-text);
}
.md-ed-correct-stat { color: var(--mod-text-dim); font-size: 12px; }
.md-ed-correct-head button, .md-ed-crow button {
    font-family: inherit; font-size: 12px; cursor: pointer; padding: 5px 10px;
    border-radius: 6px; border: 1px solid var(--mod-border); background: transparent; color: #a8a095;
}
.md-ed-correct-head button:hover, .md-ed-crow button:hover { border-color: var(--mod-gold-dim); color: #ffd080; }
.md-ed-correct-warn {
    margin: 8px 0; padding: 7px 10px; border-radius: 6px; font-size: 12px; line-height: 1.7;
    border: 1px solid rgba(201, 158, 74, .35); background: rgba(201, 158, 74, .06); color: #d8ae66;
}
.md-ed-correct-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; margin-top: 10px; }
@media (max-width: 860px) { .md-ed-correct-body { grid-template-columns: 1fr; } }
.md-ed-correct-list { max-height: 52vh; overflow-y: auto; padding-right: 4px; }
.md-ed-correct-hint { font-size: 11px; color: var(--mod-text-dim); margin-bottom: 6px; line-height: 1.6; }
.md-ed-crow {
    display: flex; align-items: center; gap: 6px; padding: 6px 0;
    border-bottom: 1px dashed rgba(255, 255, 255, .05);
}
.md-ed-crow select {
    flex: 0 0 auto; font-family: inherit; font-size: 12px; padding: 4px 5px; border-radius: 5px;
    border: 1px solid var(--mod-border); background: #141418; color: #d0d0c8;
}
.md-ed-crow-t {
    flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 12.5px; color: #d0d0c8;
}
.md-ed-crow.is-del .md-ed-crow-t { color: #7a7266; text-decoration: line-through; }
.md-ed-crow-empty { padding: 14px 4px; color: var(--mod-text-dim); font-size: 12.5px; line-height: 1.7; }
.md-ed-correct-prev { min-width: 0; border-left: 1px solid var(--mod-border); padding-left: 12px; }
.md-ed-correct-prev-h { font-size: 11px; color: var(--mod-text-dim); margin-bottom: 6px; }
.md-ed-correct-prev .md-ed-prev { max-height: 52vh; padding: 0; overflow-y: auto; }
.md-ed-correct-prev .md-ed-prev .mod-doc { padding: 12px 14px; }

/* 后台的文档模式宿主 */
.mod-doced { border: 1px solid var(--mod-border); border-radius: 10px; margin: 10px 0; overflow: hidden; }
.mod-doced-bar {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding: 8px 10px; margin: 10px 0;
    border: 1px solid var(--mod-border); border-radius: 10px; background: var(--mod-bg);
}
.mod-doced-bar button {
    font-family: inherit; font-size: 13px; cursor: pointer; padding: 6px 12px; border-radius: 7px;
    border: 1px solid var(--mod-border); background: transparent; color: #a8a095;
}
.mod-doced-bar button.is-on { border-color: var(--mod-gold); color: #ffd080; background: rgba(201, 158, 74, .12); }
.mod-doced-tip { font-size: 12px; color: var(--mod-text-dim); }

/* ===== 阅读区配色修正（用户：背景太亮，恢复暗色） =====
   默认就是暗色（纸白主题已按用户要求移除）。 */
/* 单独使用时（例如编辑器右侧预览、或没有 .mod-docwrap 外壳）也要有默认暗色变量，
   否则 var(--doc-bg/--doc-fg) 落空会退回旧规则的深底深字，预览看起来「标题看不见」。 */
.mod-doc {
    --doc-bg: #14141a; --doc-fg: #cec6b8; --doc-strong: #f0e8d8; --doc-dim: #8f8570;
}
.mod-docwrap { --doc-bg: #14141a; --doc-bg2: #101016; --doc-fg: #cec6b8; --doc-dim: #8f8570; --doc-strong: #f0e8d8; }

/* 文档本体：暗色（唯一主题） */
.mod-doc {
    background: var(--doc-bg) !important;
    color: var(--doc-fg) !important;
    border: 1px solid var(--mod-border);
}
.mod-doc strong { color: var(--doc-strong); }
.mod-doc h1, .mod-doc h2, .mod-doc h3 { color: var(--doc-strong); }
.mod-doc h4 { color: var(--doc-dim); }
.mod-doc blockquote { color: var(--doc-dim); background: rgba(201, 158, 74, .08); }
.mod-doc code { color: #e0cfa8; background: rgba(255, 255, 255, .08); }
.mod-doc a { color: #d8ae66; }
.mod-doc .md-table th { background: rgba(201, 158, 74, .14); color: var(--doc-strong); }
.mod-doc .md-table th, .mod-doc .md-table td { border-color: rgba(255, 255, 255, .1); }
.mod-doc .md-fig figcaption { color: var(--doc-dim); }
.mod-doc hr { border-top-color: rgba(255, 255, 255, .12); }

/* 顶栏 / 底栏默认暗色（与站点同色系） */
.mod-docbar, .mod-docfoot {
    background: rgba(12, 12, 16, .96) !important;
    border-color: rgba(201, 158, 74, .22) !important;
    color: var(--mod-text) !important;
    outline: none !important;
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .45), inset 0 0 0 1px rgba(201, 158, 74, .04) !important;
}
.mod-docbar:focus, .mod-docbar:focus-within,
.mod-docfoot:focus, .mod-docfoot:focus-within { outline: none !important; }
.mod-doc-cur { color: #b8ad96 !important; }
.mod-doc-progress { background: rgba(255, 255, 255, .12) !important; }
.mod-doc-toc-btn, .mod-doc-set, .mod-doc-prev, .mod-doc-next,
.mod-doc-foot-toc, .mod-doc-top {
    font-family: inherit; font-size: 13px; line-height: 1; cursor: pointer;
    padding: 7px 11px; border-radius: 7px; white-space: nowrap;
    border: 1px solid var(--mod-border); background: transparent; color: #a8a095;
}
.mod-doc-toc-btn:hover, .mod-doc-set:hover, .mod-doc-prev:hover, .mod-doc-next:hover,
.mod-doc-foot-toc:hover, .mod-doc-top:hover { border-color: var(--mod-gold-dim); color: #ffd080; }
.mod-doc-prev[disabled], .mod-doc-next[disabled] { opacity: .35; cursor: not-allowed; }

/* 底部：四个按钮均分，窄屏自动两行 */
.mod-doc-back {
    flex: 0 0 auto; white-space: nowrap; cursor: pointer; font-family: inherit;
    font-size: 12px; padding: 5px 9px; border-radius: 6px;
    border: 1px solid var(--mod-border); background: transparent; color: var(--mod-text-dim);
}
.mod-doc-back:hover { border-color: var(--mod-gold-dim); color: #ffd080; }
.mod-docfoot { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mod-docfoot .mod-doc-prev, .mod-docfoot .mod-doc-next { flex: 1 1 96px; text-align: center; }
.mod-docfoot .mod-doc-foot-toc, .mod-docfoot .mod-doc-top { flex: 0 0 auto; }

/* 目录：改成**固定浮层**（以前绝对定位在文档顶部，从底部点开根本看不见） */
.mod-doc-toc {
    position: fixed !important; top: 74px !important; left: 50% !important; right: auto !important;
    transform: translateX(-50%);
    width: min(620px, calc(100vw - 28px)); max-height: 68vh;
    z-index: 70; padding: 10px; border-radius: 12px;
    background: rgba(10, 10, 14, .985) !important;
    border: 1px solid var(--mod-border);
    box-shadow: 0 24px 60px rgba(0, 0, 0, .7);
}
.mod-doc-toc button { color: #b8ad96 !important; }
.mod-doc-toc button:hover { background: rgba(201, 158, 74, .12) !important; color: #f0e3c8 !important; }
.mod-doc-toc button.is-on { color: var(--mod-gold) !important; background: rgba(201, 158, 74, .14) !important; }
/* Aa 面板同样固定，避免从底部点开看不到 */
/* Aa 设置面板：贴回按钮下方（之前误改成固定右上角，离按钮很远） */
.mod-docbar { position: sticky; }
.mod-doc-setpanel {
    position: absolute !important; top: calc(100% + 8px) !important; right: 0 !important; left: auto !important;
    z-index: 70; padding: 12px 14px; min-width: 232px;
    background: rgba(10, 10, 14, .985) !important; color: #cec6b8;
    border: 1px solid var(--mod-border); border-radius: 12px;
    box-shadow: 0 18px 44px rgba(0, 0, 0, .7);
}
.mod-doc-setrow span { color: var(--doc-dim, #8f8570) !important; }
.mod-doc-setrow button { border-color: var(--mod-border) !important; color: #a8a095 !important; }
.mod-doc-setrow button.is-on { border-color: var(--mod-gold) !important; color: #ffd080 !important; background: rgba(201, 158, 74, .12) !important; }
.mod-doc-sethint { color: var(--doc-dim, #8f8570) !important; }

/* 纸白主题已按用户要求移除：模组阅读区只有暗色。 */

@media (max-width: 720px) {
    .mod-docbar { gap: 6px; padding: 7px 9px; }
    .mod-doc-progress { flex: 0 0 64px; }
    .mod-docfoot .mod-doc-prev, .mod-docfoot .mod-doc-next { flex: 1 1 40%; }
    .mod-docfoot .mod-doc-foot-toc, .mod-docfoot .mod-doc-top { flex: 1 1 40%; }
    .mod-doc-toc { top: 66px !important; width: calc(100vw - 20px); }
}
@media print {
    .mod-docfoot, .mod-doc-foot-toc, .mod-doc-top { display: none !important; }
}

/* 四类块：暗色为默认（不再依赖 .mod-docwrap.is-ink 包裹，编辑器预览也能正确显示）
   纸白主题已移除，所以这些覆盖直接写在 .mod-doc 作用域里。 */
.mod-doc .md-read { background: rgba(201, 158, 74, .10); border-left-color: var(--mod-gold); }
.mod-doc .md-read-tag { color: #d8ae66; }
.mod-doc .md-kp { background: rgba(212, 77, 94, .07); border-left-color: #d44d5e; }
.mod-doc .md-kp-tag { color: #e08a96; }
.mod-doc .md-kp summary { color: #b8ab94; }
.mod-doc .md-handout { background: rgba(110, 160, 220, .07); border-color: rgba(110, 160, 220, .32); }
.mod-doc .md-handout-tag { color: #9cc0e8; }
.mod-doc .md-check { background: rgba(255, 255, 255, .035); border-color: rgba(201, 158, 74, .3); }
.mod-doc .md-check-h { background: rgba(201, 158, 74, .14); color: #e0c080; }
.mod-doc .md-check-row { border-top-color: rgba(255, 255, 255, .1); }
.mod-doc .md-check-ok { color: #8fd09a; }
.mod-doc .md-check-no { color: #e08a96; }
.mod-doc .md-check-push { color: #c0b49e; }
@media print {
    .mod-doc .md-read, .mod-doc .md-kp, .mod-doc .md-handout, .mod-doc .md-check {
        background: transparent !important; color: #000 !important;
    }
}

/* 收起右侧预览：编辑区占满宽度（投稿页与后台共用） */
.md-ed.md-ed-solo .md-ed-main { grid-template-columns: 1fr; }
.md-ed.md-ed-solo .md-ed-pane:last-child { display: none; }
.md-ed-pv[data-pv="off"] { border-color: var(--mod-gold-dim); color: #ffd080; }
@media (max-width: 720px) {
    .md-ed-pv { display: inline-flex; }
}

/* ============================================================================
   预设调查员 · 真实车卡（阅读页卡面 + 投稿/后台编辑器）
   ----------------------------------------------------------------------------
   · 阅读页只用既有 .mod-pc / .mod-pc-sec 骨架，这里补属性/技能/头像的排版
   · .sf-pcs 是投稿页与后台共用的编辑器（pcs-editor.js），暗色、简洁、不做花活
   ============================================================================ */
.mod-pc-portrait {
    width: 52px; height: 68px; flex: 0 0 auto; overflow: hidden;
    border: 1px solid var(--mod-border); border-radius: 6px; background: #14141a;
}
.mod-pc-portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mod-pc-attrs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
}
@media (max-width: 720px) {
    .mod-pc-attrs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.mod-pc-attr {
    display: inline-flex; align-items: baseline; gap: 5px;
    padding: 2px 8px; border-radius: 4px;
    background: rgba(201, 158, 74, .07); border: 1px solid rgba(201, 158, 74, .18);
}
.mod-pc-attr small { font-size: 11px; color: var(--mod-text-dim); }
.mod-pc-attr strong { font-size: 15px; color: #e6dcc4; }
.mod-pc-der { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 13px; color: var(--mod-text-dim); }
.mod-pc-skills { display: flex; flex-wrap: wrap; gap: 3px 12px; font-size: 13px; line-height: 1.9; }
.mod-pc-skill { color: var(--mod-text); }
.mod-pc-skill b { color: var(--mod-gold); font-weight: 600; }
.mod-pc-skill-empty { color: var(--mod-text-dim); }

/* 编辑器：投稿页 #sfPcsBox / 后台 #admPcsBox */
.sf-pcs { display: flex; flex-direction: column; gap: 10px; }
.sf-pcs-empty {
    font-size: 12px; color: #666660; padding: 10px 12px;
    border: 1px dashed #2a2a2e; border-radius: 6px; background: #121216;
}
/* 投稿页头像模式：只显示人物按钮，详情点开看 */
.sf-pcs-avatars { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; }
.sf-pc-mini { position: relative; width: 96px; flex: 0 0 auto; display: flex; flex-direction: column; }
.sf-pc-mini-btn {
    display: block; width: 100%; aspect-ratio: 3 / 4; padding: 0; cursor: pointer;
    border: 1px solid #2e2a24; border-radius: 7px; overflow: hidden;
    background: linear-gradient(160deg, #1b1a18, #101014);
    position: relative; font-family: inherit; transition: border-color .16s ease, transform .16s ease;
}
.sf-pc-mini-btn:hover, .sf-pc-mini-btn:focus-visible {
    border-color: #c99e4a; outline: none; transform: translateY(-1px);
}
.sf-pc-mini-btn img {
    width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform .2s ease, filter .2s ease;
}
.sf-pc-mini-btn:hover img { transform: scale(1.035); filter: brightness(1.06); }
.sf-pc-mini-ph {
    width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
    font-size: 30px; color: #6a6040; background: radial-gradient(circle at 35% 25%, #252320, #101014);
}
.sf-pc-mini-name {
    padding: 5px 2px 0; font-size: 12px; color: #d6c9ae; text-align: center;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    transition: color .16s ease;
}
.sf-pc-mini-btn:hover ~ .sf-pc-mini-name,
.sf-pc-mini:focus-within .sf-pc-mini-name { color: #ffd080; }
.sf-pc-mini-del {
    position: absolute; top: -6px; right: -6px; width: 20px; height: 20px; z-index: 2;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%; border: 1px solid #4a3a3a; background: #1a1a1e;
    color: #a88a8a; font-size: 11px; line-height: 1; cursor: pointer; padding: 0;
    box-shadow: 0 2px 6px rgba(0,0,0,.35);
}
.sf-pc-mini-del:hover { color: #fff; background: #8b3a3a; border-color: #d44d5e; }

/* 人物详情弹窗（投稿页头像模式） */
.sf-pc-detail-overlay {
    position: fixed; inset: 0; z-index: 3000; display: flex; align-items: center; justify-content: center;
    padding: 22px; background: rgba(0,0,0,.72); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px);
}
.sf-pc-detail-box {
    position: relative; width: min(680px, 94vw); max-height: 88vh; overflow: auto;
    padding: 22px 24px 20px; border: 1px solid #3a3326; border-radius: 10px;
    background: #131317; color: #d6cdb9; box-shadow: 0 24px 80px rgba(0,0,0,.55);
}
.sf-pc-detail-close {
    position: absolute; top: 10px; right: 12px; width: 24px; height: 24px;
    border-radius: 50%; border: 1px solid #2e2a24; background: transparent;
    color: #8a7a60; cursor: pointer; line-height: 1; font-size: 13px;
}
.sf-pc-detail-close:hover { border-color: #d44d5e; color: #d44d5e; }
.sf-pc-detail-hero { display: flex; gap: 18px; align-items: center; margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid #26221c; }
.sf-pc-detail-av {
    width: 92px; height: 122px; flex: 0 0 auto; overflow: hidden; border-radius: 7px;
    border: 1px solid #3a3326; background: #101014;
    display: flex; align-items: center; justify-content: center;
}
.sf-pc-detail-av img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-pc-detail-ph { font-size: 32px; color: #6a6040; }
.sf-pc-detail-id { min-width: 0; }
.sf-pc-detail-id h3 { margin: 0 0 5px; color: #e6d8b8; font-size: 22px; font-weight: 500; letter-spacing: .04em; }
.sf-pc-detail-meta { font-size: 12.5px; color: #a8987a; line-height: 1.7; }
.sf-pc-detail-src { margin-top: 4px; font-size: 11px; color: #6a6040; }
.sf-pc-detail-sec { margin: 15px 0 0; }
.sf-pc-detail-sec h4 { margin: 0 0 6px; font-size: 11px; font-weight: 500; letter-spacing: .16em; color: #c99e4a; }
.sf-pc-detail-sec p { margin: 0; font-size: 13px; line-height: 1.85; color: #cfc6b2; word-break: break-word; }
.sf-pc-detail-sec p + p { margin-top: 6px; }
.sf-pc-detail-secret { color: #d0a0aa !important; border-left: 2px solid #7a4a54; padding-left: 10px; }
.sf-pc-detail-attrs { display: grid; grid-template-columns: repeat(auto-fill, minmax(82px, 1fr)); gap: 6px; }
.sf-pc-detail-attrs span { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; padding: 5px 8px; border: 1px solid #26221c; border-radius: 4px; background: #17171b; }
.sf-pc-detail-attrs em { font-style: normal; font-size: 11px; color: #8a7a60; white-space: nowrap; }
.sf-pc-detail-attrs b { font-size: 14px; color: #e6d8b8; font-weight: 500; white-space: nowrap; }
.sf-pc-detail-chips { display: flex; flex-wrap: wrap; gap: 5px 10px; font-size: 12.5px; line-height: 1.9; color: #b8a888; }
.sf-pc-detail-chips span { padding: 2px 8px; border: 1px solid #26221c; border-radius: 999px; background: #17171b; }
.sf-pc-detail-chips b { color: #e6d8b8; font-weight: 500; }
.sf-pc-detail-kvs { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 5px 12px; font-size: 12px; }
.sf-pc-detail-kv { display: flex; justify-content: space-between; gap: 8px; border-bottom: 1px dotted #26221c; padding-bottom: 3px; }
.sf-pc-detail-kv span { color: #8a7a60; }
.sf-pc-detail-kv b { color: #d6cdb9; font-weight: 500; }
.sf-pc-detail-gear { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.9; color: #cfc6b2; }
@media (max-width: 560px) {
    .sf-pc-mini { width: 78px; }
    .sf-pc-mini-name { font-size: 11px; }
    .sf-pcs-drop { margin-top: 12px; }
    .sf-pc-detail-overlay { padding: 10px; }
    .sf-pc-detail-box { width: 100%; max-height: 92vh; padding: 18px 16px; }
    .sf-pc-detail-hero { gap: 12px; }
    .sf-pc-detail-av { width: 70px; height: 94px; }
    .sf-pc-detail-id h3 { font-size: 18px; }
}

.sf-pc { border: 1px solid #2a2a2e; background: #141418; border-radius: 6px; padding: 10px 12px; }
.sf-pc-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.sf-pc-no { font-size: 12px; color: #c99e4a; }
.sf-pc-src { font-size: 11px; color: #6a6040; }
.sf-pc-ops { margin-left: auto; display: inline-flex; gap: 4px; }
.sf-pc-op {
    font-size: 11px; line-height: 1.4; padding: 2px 7px; cursor: pointer; font-family: inherit;
    color: #8a7a60; background: transparent; border: 1px solid #2a2a2e; border-radius: 3px;
}
.sf-pc-op:hover { color: #e6d8b8; border-color: #4a4030; }
.sf-pc-op-del:hover { color: #d44d5e; border-color: #8b3a3a; }
.sf-pc-body { display: flex; gap: 10px; margin-top: 8px; }
.sf-pc-av {
    width: 56px; height: 72px; flex: 0 0 auto; overflow: hidden; border-radius: 5px;
    border: 1px solid #2a2a2e; background: #101014;
    display: flex; align-items: center; justify-content: center; color: #4a4538; font-size: 11px;
}
.sf-pc-av img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-pc-fields { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.sf-pc-row { display: flex; gap: 6px; flex-wrap: wrap; }
.sf-pc-row .sf-pc-f { flex: 1; min-width: 120px; }
.sf-pc-label { font-size: 11px; color: #8a7a60; }
.sf-pc-label b { color: #d48a96; font-weight: 400; }
.sf-pc-f {
    width: 100%; box-sizing: border-box; background: #0e0e10; border: 1px solid #222226;
    border-radius: 4px; color: #d0d0c8; font-size: 12px; padding: 6px 8px; font-family: inherit;
    resize: vertical; outline: none;
}
.sf-pc-f:focus { border-color: #4a4030; }
.sf-pc-sum { margin-top: 7px; font-size: 11px; color: #6a6040; line-height: 1.7; }
.sf-pc-sum b { color: #b8a888; font-weight: 500; }

/* 选车卡弹窗 */
.sf-pc-pick-list { display: flex; flex-direction: column; gap: 8px; max-height: 52vh; overflow-y: auto; padding-right: 4px; }
.sf-pc-pick {
    display: flex; align-items: center; gap: 10px; cursor: pointer;
    border: 1px solid #2a2a2e; background: #16161a; border-radius: 6px; padding: 8px 10px;
}
.sf-pc-pick:hover { border-color: #4a4030; background: #1a1a20; }
.sf-pc-pick input { accent-color: #c99e4a; width: 15px; height: 15px; flex: 0 0 auto; }
.sf-pc-pick-av {
    width: 40px; height: 50px; flex: 0 0 auto; overflow: hidden; border-radius: 4px;
    border: 1px solid #2a2a2e; background: #101014; display: flex; align-items: center; justify-content: center;
    color: #4a4538; font-size: 16px;
}
.sf-pc-pick-av img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-pc-pick-info { flex: 1; min-width: 0; }
.sf-pc-pick-name { font-size: 14px; color: #e6d8b8; }
.sf-pc-pick-meta { font-size: 11px; color: #8a7a60; margin-top: 2px; }
.sf-pc-pick-dead { font-size: 11px; color: #d44d5e; }
.sf-pc-pick-foot { display: flex; justify-content: flex-end; align-items: center; gap: 8px; margin-top: 12px; }
.sf-pc-pick-count { margin-right: auto; font-size: 12px; color: #8a7a60; }
.sf-pc-pick-empty { font-size: 13px; color: #8a7a60; padding: 18px 4px; text-align: center; }

/* 选车卡弹窗（index / admin 都只引 module-ui.css，所以不复用 style.css 的 .kpv2-*） */
.sf-pc-pick-overlay {
    position: fixed; inset: 0; z-index: 9999; background: rgba(0, 0, 0, .8);
    display: none; align-items: center; justify-content: center;
}
.sf-pc-pick-overlay.show { display: flex; }
.sf-pc-pick-box {
    width: 620px; max-width: 94vw; max-height: 86vh; display: flex; flex-direction: column;
    background: #16161a; border: 1px solid #2a2a2e; border-radius: 8px;
    box-shadow: 0 18px 60px rgba(0, 0, 0, .55); color: #c8c8c0;
}
.sf-pc-pick-head {
    display: flex; align-items: center; gap: 10px; padding: 14px 18px;
    border-bottom: 1px solid #2a2a2e; flex: 0 0 auto;
}
.sf-pc-pick-title { font-size: 16px; color: #c99e4a; flex: 1; }
.sf-pc-pick-close {
    width: 26px; height: 26px; border-radius: 50%; border: 1px solid #3a3a3e;
    background: transparent; color: #8a7a60; cursor: pointer; font-size: 12px; font-family: inherit;
}
.sf-pc-pick-close:hover { border-color: #d44d5e; color: #d44d5e; }
.sf-pc-pick-body { padding: 12px 18px; overflow-y: auto; flex: 1 1 auto; min-height: 0; }
.sf-pc-pick-cancel {
    padding: 6px 14px; font-size: 13px; font-family: inherit; cursor: pointer;
    color: #c8c8c0; background: #222228; border: 1px solid #3a3a3e; border-radius: 4px;
}
.sf-pc-pick-cancel:hover { border-color: #c99e4a; }
.sf-pc-pick-ok {
    padding: 6px 14px; font-size: 13px; font-family: inherit; cursor: pointer;
    color: #141416; background: #c99e4a; border: 1px solid #c99e4a; border-radius: 4px; font-weight: 600;
}
.sf-pc-pick-ok:hover { background: #d4a855; }
.sf-pc-pick.is-dead { opacity: .55; cursor: not-allowed; }

/* 预设调查员 · 拖拽上传人物卡（.json / 图片） */
.sf-pcs-drop {
    display: flex; align-items: center; gap: 12px; padding: 12px 14px; margin-top: 16px; margin-bottom: 8px;
    border: 1px dashed #3a3a3e; border-radius: 6px; background: #121216; cursor: pointer;
    transition: border-color .15s, background .15s, box-shadow .15s;
}
.sf-pcs-drop:hover { border-color: #5a4a30; background: #16161a; }
.sf-pcs-drop.is-drop {
    border-color: #c99e4a; background: rgba(201, 158, 74, .08);
    box-shadow: inset 0 0 0 1px rgba(201, 158, 74, .35);
}
.sf-pcs-drop.is-busy { opacity: .6; pointer-events: none; }
.sf-pcs-drop-ico { font-size: 20px; color: #c99e4a; flex: 0 0 auto; }
.sf-pcs-drop-txt { flex: 1; min-width: 0; }
.sf-pcs-drop-txt b { display: block; font-size: 12px; color: #c8c8c0; font-weight: 400; }
.sf-pcs-drop-txt small { display: block; margin-top: 2px; font-size: 11px; color: #6a6040; }
.sf-pc.is-selected { border-color: #c99e4a; box-shadow: inset 0 0 0 1px rgba(201, 158, 74, .35); }
.sf-pc-op.is-on { color: #141416; background: #c99e4a; border-color: #c99e4a; }

/* 目录分级：幕（#）粗一点、不缩进；节（##）缩进并弱一点 */
.mod-doc-toc .mod-doc-toc-lv1 {
    font-size: 14.5px;
    font-weight: 600;
    color: #e6dcc4;
    letter-spacing: .02em;
    margin-top: 4px;
}
.mod-doc-toc .mod-doc-toc-lv1 + .mod-doc-toc-lv2 { margin-top: 0; }
.mod-doc-toc .mod-doc-toc-lv2 {
    font-size: 13.5px;
    padding-left: 22px;
    color: #b8ad96;
    position: relative;
}
.mod-doc-toc .mod-doc-toc-lv2::before {
    content: "";
    position: absolute;
    left: 10px; top: 50%;
    width: 6px; height: 1px;
    background: rgba(201, 158, 74, .45);
}

/* 后台「审核预览」里的阅读页：admin.html 不加载 style.css，
   .detail-tabs / .dtab / .dpanel / .mod-reader-crumb 这些只有 style.css 里的样式，
   于是预览里标签变成裸文字、返回按钮像个怪框。这里给 .subp-reader 作用域补一份。 */
.subp-reader .mod-reader { max-width: 100%; margin: 0; padding: 0; }
/* 预览窗自己已经有标题/作者/时间，阅读页那套页头就别重复了 */
.subp-reader .mod-reader-head { display: none; }
.subp-reader .mod-reader-crumb { display: none; }

.subp-reader .detail-tabs {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--mod-border);
    margin: 2px 0 14px;
    overflow-x: auto;
    scrollbar-width: none;
}
.subp-reader .detail-tabs::-webkit-scrollbar { height: 0; }
.subp-reader .dtab {
    padding: 9px 16px;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    color: #888880;
    font-family: var(--mod-body);
    font-size: 13.5px;
    cursor: pointer;
    white-space: nowrap;
    transition: color .18s, border-color .18s;
}
.subp-reader .dtab:hover { color: #c8c8c0; }
.subp-reader .dtab.active { color: var(--mod-gold); border-bottom-color: var(--mod-gold); }
.subp-reader .detail-panels { }
.subp-reader .dpanel { display: none; }
.subp-reader .dpanel.active { display: block; }

/* 预览里的正文：去掉吸顶条与翻页（弹窗内部滚动，吸顶会打架） */
.subp-reader .mod-docbar { display: none; }
.subp-reader .mod-docfoot { display: none; }
.subp-reader .mod-doc { border: none; padding: 0; background: transparent !important; }
.subp-reader .mod-docwrap { padding-bottom: 12px; }

/* 预览里的预设调查员：卡片不要撑太宽 */
.subp-reader .mod-pc { max-width: 100%; }

/* 后台 admin.html 的按钮基线很粗糙，预览里的通用按钮统一一下 */
.subp-reader button { font-family: var(--mod-body); }

/* 审核预览弹窗（后台 admin.html 不加载 style.css，所以放这里） */
.subp-overlay {
    position: fixed;
    inset: 0;
    z-index: 12000;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, .8);
    padding: 20px;
}
.subp-overlay.show { display: flex; }
.subp-modal {
    display: flex;
    flex-direction: column;
    width: min(1080px, 96vw);
    height: min(88vh, 980px);
    background: #14141a;
    border: 1px solid #2a2a32;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .7);
}
.subp-head {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid #24242a;
    background: linear-gradient(180deg, #191920, #14141a);
}
.subp-head-main { flex: 1 1 auto; min-width: 0; }
.subp-title { font-size: 18px; color: #e6dcc4; font-weight: 600; }
.subp-meta { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 5px; font-size: 12px; color: #8a8272; }
.subp-chip { color: #ffd080; background: rgba(201, 158, 74, .12); border: 1px solid rgba(201, 158, 74, .35); padding: 1px 8px; border-radius: 999px; }
.subp-x {
    flex: 0 0 auto; width: 30px; height: 30px; border-radius: 8px; cursor: pointer;
    border: 1px solid #2a2a32; background: transparent; color: #a8a095; font-size: 14px;
}
.subp-x:hover { color: #ffd080; border-color: rgba(201, 158, 74, .5); }
.subp-body { flex: 1 1 auto; overflow-y: auto; padding: 16px 18px 8px; }
.subp-reader .mod-docbar { top: 0; }
.subp-reader .mod-docwrap { max-width: 100%; }
.subp-reader .mod-docfoot { display: none; }
.subp-note {
    border: 1px solid #4d8a5e;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 12.5px;
    color: #cfc7b8;
    background: rgba(20, 20, 26, .6);
    margin-bottom: 12px;
    line-height: 1.6;
}
.subp-note .subp-dim { color: #8a7a60; }
.subp-lint { margin-top: 6px; color: #a8a095; }
.subp-diff { margin-top: 6px; color: #c99e4a; }
.subp-foot {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 12px 18px;
    border-top: 1px solid #24242a;
    background: #16161c;
}
.subp-btn {
    font-family: inherit; font-size: 13px; padding: 8px 18px; border-radius: 8px; cursor: pointer;
    border: 1px solid #2f2f38; background: transparent; color: #cfc7b8;
}
.subp-btn:hover { border-color: rgba(201, 158, 74, .6); color: #ffd080; }
.subp-btn-primary { border-color: rgba(201, 158, 74, .6); background: rgba(201, 158, 74, .16); color: #ffe0a0; }
.subp-btn-danger { border-color: rgba(212, 77, 94, .5); color: #ff9aa9; }
.subp-empty { padding: 40px; text-align: center; color: #8a8272; }
.subp-other { max-width: 760px; }
.subp-kvs { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; font-size: 12.5px; color: #cfc7b8; }
.subp-kv { background: rgba(255, 255, 255, .04); border: 1px solid #2a2a32; border-radius: 6px; padding: 2px 8px; }
.subp-img { max-width: 320px; max-height: 220px; border-radius: 8px; display: block; margin-bottom: 10px; }
.subp-imgs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.subp-imgs img { width: 120px; height: 90px; object-fit: cover; border-radius: 6px; }
.subp-text { font-size: 14px; line-height: 1.8; color: #cfc7b8; }

/* 简介页的作者署名行（作者可点击进主页） */
.mod-reader-credits-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px 8px;
    margin: 0 0 14px;
    padding: 10px 12px;
    border: 1px solid var(--mod-border);
    border-radius: 8px;
    background: rgba(255, 255, 255, .02);
    font-size: 12.5px;
    color: #a8a095;
}
.mod-reader-credits-row i { color: #4a4740; font-style: normal; }
.mod-reader-credit-k { color: #7a6a50; }
.mod-reader-credit-v { color: #cfc7b8; }
.mod-reader-author {
    font-family: inherit;
    font-size: 12.5px;
    padding: 1px 8px;
    border-radius: 999px;
    cursor: pointer;
    color: var(--mod-gold);
    border: 1px solid rgba(201, 158, 74, .4);
    background: rgba(201, 158, 74, .1);
    transition: all .18s;
}
.mod-reader-author:hover { color: #ffd080; border-color: rgba(201, 158, 74, .8); background: rgba(201, 158, 74, .2); }

/* 编辑器布局：编辑 / 分栏 / 预览 三态（整栏切换）+ 预览里的章节目录 */
.md-ed-lays { display: inline-flex; gap: 2px; margin-right: 8px; }
.md-ed-lay {
    font-family: inherit;
    font-size: 12.5px;
    padding: 5px 9px;
    border-radius: 6px;
    cursor: pointer;
    border: 1px solid transparent;
    background: transparent;
    color: #8a8272;
    white-space: nowrap;
}
.md-ed-lay:hover { color: #d8cbb0; border-color: var(--mod-border); }
.md-ed-lay.is-on { color: #ffd080; border-color: rgba(201, 158, 74, .55); background: rgba(201, 158, 74, .12); }

/* 只编辑：隐藏预览 */
.md-ed.md-ed-lay-edit .md-ed-main { grid-template-columns: 1fr; }
.md-ed.md-ed-lay-edit .md-ed-pane + .md-ed-pane { display: none; }
/* 只预览：隐藏编辑区（两个区域整栏来回切换） */
.md-ed.md-ed-lay-preview .md-ed-main { grid-template-columns: 1fr; }
.md-ed.md-ed-lay-preview .md-ed-pane:first-child { display: none; }
.md-ed.md-ed-lay-preview .md-ed-pane + .md-ed-pane { border-left: none; }
.md-ed.md-ed-lay-preview .md-ed-prev { min-height: 520px; }

/* 预览里的章节目录 */
.md-ed-toc {
    margin: 6px 0 8px;
    max-height: 232px;
    overflow-y: auto;
    padding: 8px 10px;
    border: 1px solid var(--mod-border);
    border-radius: 8px;
    background: rgba(20, 20, 26, .7);
}
.md-ed-toc[hidden] { display: none; }
.md-ed-toc-t { font-size: 11.5px; color: #8a7a60; letter-spacing: .06em; margin-bottom: 6px; }
.md-ed-toc-i {
    display: block;
    width: 100%;
    text-align: left;
    font-family: inherit;
    font-size: 13px;
    line-height: 1.5;
    padding: 4px 8px;
    border: none;
    border-radius: 5px;
    background: transparent;
    color: #b8ad96;
    cursor: pointer;
}
.md-ed-toc-i:hover { background: rgba(201, 158, 74, .12); color: #f0e3c8; }
.md-ed-toc-i.lv1 { font-weight: 600; color: #e6dcc4; margin-top: 2px; }
.md-ed-toc-i.lv2 { padding-left: 18px; }
.md-ed-toc-i.lv3 { padding-left: 30px; font-size: 12.5px; color: #9a917e; }
.md-ed-toc-empty { font-size: 12.5px; color: #8a8272; line-height: 1.7; padding: 4px 2px; }

/* 工具栏「清空」：危险色，和普通工具按钮区分 */
.md-ed-clear { color: #e08a96 !important; border-color: rgba(212, 77, 94, .35) !important; }
.md-ed-clear:hover { color: #ffb3bf !important; border-color: rgba(212, 77, 94, .8) !important; background: rgba(212, 77, 94, .12) !important; }

/* ===== 后台「预览」整屏外壳（固定头部 + 内容区滚动，永不超出屏幕） ===== */
.mod-theater-shell {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}
.mod-theater-head {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    border-bottom: 1px solid rgba(201, 158, 74, .18);
    background: rgba(14, 14, 18, .98);
}
.mod-theater-title { color: #c99e4a; font-size: 14px; }
.mod-theater-owner { color: #8a7a60; font-size: 12px; }
.mod-theater-spacer { flex: 1; }
.mod-theater-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 14px 16px 28px;
    overscroll-behavior: contain;
}
.mod-theater-body > #modTheater { max-width: 1180px; margin: 0 auto; }
/* 预览里的正文不再自己滚（避免出现两条滚动条） */
.mod-theater-body .mod-doc-wrap,
.mod-theater-body .mod-doc { max-height: none !important; overflow: visible !important; }

/* 审核预览弹窗也别超过屏幕 */
.subp-modal { height: min(88vh, 980px); max-height: calc(100vh - 20px); }
.subp-body { min-height: 0; }

/* ===== 怪物设定卡（投稿页与后台共用 MonstersEditor） ===== */
.mod-mst { display: block; }
.mod-mst-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.mod-mst-title { color: #c9b48a; font-size: 13px; letter-spacing: .04em; }
.mod-mst-hint { color: #7d7566; font-size: 12px; }
.mod-mst-list { display: flex; flex-direction: column; gap: 8px; }
.mod-mst-empty { color: #7d7566; font-size: 12.5px; padding: 10px 12px; border: 1px dashed rgba(201,158,74,.22); border-radius: 8px; }
.mod-mst-card { border: 1px solid rgba(201,158,74,.18); border-radius: 10px; background: rgba(20,20,26,.6); overflow: hidden; }
.mod-mst-card-h { display: flex; align-items: center; gap: 10px; padding: 9px 12px; cursor: pointer; }
.mod-mst-card-h b { color: #e6dcc4; font-size: 13.5px; font-weight: 600; }
.mod-mst-tag { color: #9a917e; font-size: 12px; }
.mod-mst-grow { flex: 1; }
.mod-mst-del { background: transparent; border: 1px solid rgba(212,77,94,.35); color: #e08a96; border-radius: 6px; padding: 2px 9px; font-size: 12px; cursor: pointer; font-family: inherit; }
.mod-mst-del:hover { border-color: rgba(212,77,94,.8); color: #ffb3bf; }
.mod-mst-body { display: none; padding: 4px 12px 12px; border-top: 1px solid rgba(201,158,74,.12); }
.mod-mst-card.is-open .mod-mst-body { display: block; }
.mod-mst-line { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 8px; }
.mod-mst-f { display: flex; flex-direction: column; gap: 3px; }
.mod-mst-f > span { color: #8a7a60; font-size: 11.5px; }
.mod-mst-f input, .mod-mst-f textarea {
    background: #141418; border: 1px solid #26262c; border-radius: 6px; color: #d8d2c4;
    font-size: 13px; padding: 7px 9px; font-family: inherit; width: 100%; box-sizing: border-box;
}
.mod-mst-f textarea { resize: vertical; min-height: 62px; }
.mod-mst-wide { margin-top: 6px; }
.mod-mst-attrs { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin: 8px 0; }
.mod-mst-attr { display: flex; flex-direction: column; gap: 3px; }
.mod-mst-attr > span { color: #8a7a60; font-size: 11px; }
.mod-mst-attr input {
    background: #141418; border: 1px solid #26262c; border-radius: 6px; color: #d8d2c4;
    font-size: 13px; padding: 6px 8px; font-family: inherit; width: 100%; box-sizing: border-box;
}
.mod-mst-add {
    margin-top: 8px; width: 100%; padding: 9px; border-radius: 8px; cursor: pointer;
    background: rgba(201,158,74,.06); border: 1px dashed rgba(201,158,74,.35);
    color: #c9b48a; font-size: 13px; font-family: inherit;
}
.mod-mst-add:hover { border-color: rgba(201,158,74,.7); color: #ffd080; background: rgba(201,158,74,.12); }
@media (max-width: 700px) {
    .mod-mst-line { grid-template-columns: 1fr; }
    .mod-mst-attrs { grid-template-columns: repeat(3, 1fr); }
}

/* ===== 阅读页「预设怪物」（模组怪物设定卡） ===== */
.mod-mons { margin-top: 22px; }
.mod-mons-h { color: #c9b48a; font-size: 14px; letter-spacing: .04em; margin-bottom: 10px; }
.mod-mons-h span { color: #8a7a60; font-size: 12px; margin-left: 6px; }
.mod-mon { border: 1px solid rgba(201,158,74,.16); border-radius: 10px; background: rgba(20,20,26,.55); padding: 12px 14px; margin-bottom: 10px; }
.mod-mon-h { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.mod-mon-h b { color: #e6dcc4; font-size: 15px; }
.mod-mon-tag { color: #9a917e; font-size: 12px; border: 1px solid rgba(201,158,74,.2); border-radius: 999px; padding: 1px 8px; }
.mod-mon-stats { display: flex; flex-wrap: wrap; gap: 4px 10px; margin: 6px 0 8px; font-size: 12.5px; }
.mod-mon-k { color: #8a7a60; }
.mod-mon-v { color: #d8d2c4; margin-left: 2px; }
.mod-mon-desc { color: #b8b0a0; font-size: 14px; line-height: 1.85; }

.mod-mst-imgrow { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.mod-mst-imgrow input { flex: 1; min-width: 200px; }
.mod-mst-up {
    flex: 0 0 auto; padding: 7px 12px; border-radius: 6px; cursor: pointer; font-family: inherit; font-size: 12.5px;
    background: rgba(201,158,74,.08); border: 1px solid rgba(201,158,74,.35); color: #c9b48a;
}
.mod-mst-up:hover { border-color: rgba(201,158,74,.8); color: #ffd080; }
.mod-mst-thumb { width: 64px; height: 43px; object-fit: cover; border-radius: 6px; border: 1px solid rgba(201,158,74,.25); }

/* ===== 阅读页「神话生物」页（文章式，不用卡片墙） ===== */
.mod-mons-reader { display: flex; flex-direction: column; gap: 26px; }
.mod-mon-article { border-top: 1px solid rgba(201,158,74,.14); padding-top: 18px; }
.mod-mon-article:first-child { border-top: none; padding-top: 0; }
.mod-mon-title { font-family: var(--font-serif, serif); font-size: 21px; color: #f0e6d2; margin: 0 0 6px; letter-spacing: .02em; }
.mod-mon-meta { color: #a89a80; font-size: 13px; margin: 0 0 12px; letter-spacing: .04em; }
.mod-mon-img { display: block; width: 100%; max-width: 640px; border-radius: 8px; margin: 0 0 14px; }
.mod-mon-stats { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0 0 12px; font-size: 13px; }
.mod-mon-desc { color: #cfc7b6; font-size: 16px; line-height: 1.95; margin: 0; white-space: pre-wrap; }
.mod-empty-sub { display: inline-block; margin-top: 8px; color: #8a7a60; font-size: 13px; }

/* 怪物卡主图：拖拽区高亮 */
.mod-mst-drop { border: 1px dashed transparent; border-radius: 8px; padding: 3px; transition: border-color .15s, background .15s; }
.mod-mst-drop.is-drag { border-color: rgba(201,158,74,.85); background: rgba(201,158,74,.1); }
.mod-mst-thumb { cursor: pointer; }

/* ===== 怪物卡：从神话图鉴选择 ===== */
.mod-mst-actions { display: flex; gap: 8px; margin-top: 8px; }
.mod-mst-actions .mod-mst-add { flex: 1; margin-top: 0; }
.mod-mst-pick {
    flex: 0 0 auto; padding: 9px 14px; border-radius: 8px; cursor: pointer; font-family: inherit; font-size: 13px;
    background: rgba(140,170,200,.08); border: 1px dashed rgba(140,170,200,.38); color: #a9c2d8;
}
.mod-mst-pick:hover { border-color: rgba(160,200,230,.8); color: #cfe6f7; background: rgba(140,170,200,.14); }

.mod-mst-picker { position: fixed; inset: 0; z-index: 13000; display: none; align-items: center; justify-content: center; background: rgba(0,0,0,.72); }
.mod-mst-picker.is-open { display: flex; }
.mod-mst-picker-box {
    width: min(760px, 94vw); max-height: min(78vh, 720px); display: flex; flex-direction: column;
    background: #14141a; border: 1px solid #2c2c34; border-radius: 12px; overflow: hidden;
}
.mod-mst-picker-h { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid rgba(201,158,74,.16); }
.mod-mst-picker-h b { color: #c9b48a; font-size: 14px; white-space: nowrap; }
.mod-mst-picker-q {
    flex: 1; padding: 7px 10px; border-radius: 7px; border: 1px solid #2a2a32; background: #101014;
    color: #d8d2c4; font-family: inherit; font-size: 13px;
}
.mod-mst-picker-x { background: transparent; border: 1px solid #33333b; color: #9a917e; border-radius: 7px; padding: 5px 10px; cursor: pointer; font-family: inherit; }
.mod-mst-picker-x:hover { color: #d8d2c4; border-color: #4a4a55; }
.mod-mst-picker-list { flex: 1; min-height: 0; overflow-y: auto; padding: 10px 12px 16px; display: flex; flex-direction: column; gap: 6px; }
.mod-mst-picker-i {
    display: flex; flex-direction: column; gap: 2px; text-align: left; cursor: pointer;
    padding: 9px 12px; border-radius: 8px; border: 1px solid rgba(255,255,255,.06);
    background: rgba(255,255,255,.02); color: inherit; font-family: inherit;
}
.mod-mst-picker-i:hover { border-color: rgba(201,158,74,.5); background: rgba(201,158,74,.08); }
.mod-mst-picker-t { color: #e6dcc4; font-size: 14px; }
.mod-mst-picker-m { color: #9a917e; font-size: 12px; }
.mod-mst-picker-s { color: #8a8272; font-size: 11.5px; letter-spacing: .02em; }
.mod-mst-picker-empty { color: #8a7a60; font-size: 13px; padding: 18px 6px; text-align: center; }

/* 审核列表里的「修订稿」徽标 + 预览里的冲突提示 */
.mod-rev-badge {
    display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 999px;
    font-size: 11.5px; color: #e0b25a; background: rgba(201,158,74,.14);
    border: 1px solid rgba(201,158,74,.45);
}
.subp-diff.is-warn { color: #f0c36a; border-color: rgba(201,158,74,.5); background: rgba(201,158,74,.1); }

/* ===== 正文搜索（吸顶条） ===== */
.mod-docfind { display: inline-flex; align-items: center; gap: 4px; }
.mod-find-in {
    width: 128px; padding: 4px 8px; border-radius: 6px;
    background: rgba(255, 255, 255, .04); border: 1px solid rgba(201, 158, 74, .35);
    color: #e8e0d0; font-family: inherit; font-size: 12.5px;
}
.mod-find-in:focus { outline: none; border-color: rgba(201, 158, 74, .85); background: rgba(255, 255, 255, .07); }
.mod-find-in::placeholder { color: #7d7566; }
.mod-find-n { min-width: 36px; text-align: center; font-size: 11px; color: #8a7a60; font-variant-numeric: tabular-nums; }
.mod-find-prev, .mod-find-next, .mod-find-go {
    width: 22px; height: 22px; padding: 0; border-radius: 5px; cursor: pointer; font-family: inherit; font-size: 12px;
    background: transparent; border: 1px solid rgba(201, 158, 74, .3); color: #c9b48a;
}
.mod-find-prev:hover, .mod-find-next:hover, .mod-find-go:hover { border-color: rgba(201, 158, 74, .8); color: #ffd080; }
::highlight(mod-find) { background: rgba(201, 158, 74, .32); }
::highlight(mod-find-cur) { background: #c99e4a; color: #14141a; }

/* ===== 正文底栏：左「搜索」/ 右「上一节 · 目录 · 顶部 · 下一节」，一行放得下 ===== */
.mod-docfoot {
    flex-wrap: nowrap;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
}
.mod-docfoot .mod-docfind {
    flex: 0 1 auto;
    min-width: 0;
    margin: 0 18px 0 0;
}
.mod-docfoot .mod-docfind-in { width: 140px; min-width: 90px; flex: 1 1 auto; }
.mod-docfoot-nav { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; flex-wrap: nowrap; }
.mod-doc-prev, .mod-doc-next { flex: 0 0 auto; }
@media (max-width: 760px) {
    .mod-docfoot { flex-wrap: wrap; row-gap: 8px; }
    .mod-docfoot .mod-find { width: 100%; margin-right: 0; }
    .mod-docfoot-nav { flex: 1 1 auto; flex-wrap: wrap; justify-content: flex-end; }
}

/* 审核预览「体检」块：全部列出来，可滚动、可折叠 */
.subp-lintbox { display: block; }
.subp-lint-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.subp-lint-cnt { color: #b8ad96; font-size: 12.5px; }
.subp-lint-btn {
    margin-left: auto; padding: 3px 10px; border-radius: 6px; cursor: pointer;
    font-family: inherit; font-size: 12px; background: transparent;
    border: 1px solid rgba(201, 158, 74, .35); color: #c9b48a;
}
.subp-lint-btn:hover { border-color: rgba(201, 158, 74, .8); color: #ffd080; }
.subp-lint { margin-top: 8px; max-height: 168px; overflow-y: auto; display: flex; flex-direction: column; gap: 3px; }
.subp-lint-i { font-size: 12.5px; line-height: 1.6; color: #d8d2c4; }
.subp-lint-lv { display: inline-block; min-width: 52px; margin-right: 8px; font-size: 11.5px; }
.subp-lint-i.is-err  .subp-lint-lv { color: #ff8a95; }
.subp-lint-i.is-warn .subp-lint-lv { color: #e0b25a; }
.subp-lint-i.is-info .subp-lint-lv { color: #8fb4c8; }
.subp-lint-tip { margin-top: 8px; color: #8a8272; font-size: 12px; line-height: 1.7; }
.subp-lint-tip b { color: #b8ad96; }

/* ===== 阅读页「图片」页：瓦片墙 ===== */
.mod-gal { display: block; }
.mod-gal-h { color: #c9b48a; font-size: 13.5px; letter-spacing: .04em; margin-bottom: 12px; }
.mod-gal-tip { color: #7d7566; font-size: 12px; margin-left: 8px; }
.mod-gal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.mod-gal-i {
    display: block; cursor: zoom-in; position: relative; border-radius: 10px; overflow: hidden;
    border: 1px solid rgba(201, 158, 74, .18); background: rgba(20, 20, 26, .6);
    text-decoration: none; transition: border-color .15s, transform .15s;
}
.mod-gal-i:hover { border-color: rgba(201, 158, 74, .6); transform: translateY(-2px); }
.mod-gal-i img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.mod-gal-cap {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 10px 7px;
    font-size: 12px; color: #e8e0d0; line-height: 1.5;
    background: linear-gradient(transparent, rgba(8, 8, 10, .82));
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
@media (max-width: 640px) { .mod-gal-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; } }

/* ===== 图片墙：页内大图（点击空白关闭 / 滚轮缩放 / 拖拽平移） ===== */
.mod-gal-ov {
    position: fixed; inset: 0; z-index: 15000;   /* 高于后台预览浮层(13000)与剧场(12000) */ display: none;
    align-items: center; justify-content: center; padding: 24px;
    background: rgba(6, 6, 8, .95); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
.mod-gal-ov.is-open { display: flex; }
.mod-gal-fig {
    position: relative; margin: 0;
    width: min(92vw, 1500px); height: min(84vh, 1000px);
    display: flex; align-items: center; justify-content: center;
    overflow: hidden;                 /* 放大也只在框内，不越出浮窗 */
    border: 1px solid rgba(201, 158, 74, .18); border-radius: 8px;
    background: rgba(0, 0, 0, .28);
    cursor: default; touch-action: none;
}
.mod-gal-big {
    max-width: 100%; max-height: 100%;
    border-radius: 4px;
    transform-origin: center center; will-change: transform;
    user-select: none; -webkit-user-drag: none;
    cursor: grab;
}
.mod-gal-big.is-grabbing { cursor: grabbing; }
.mod-gal-big.is-zoomed { cursor: grab; }
.mod-gal-x, .mod-gal-prev, .mod-gal-next {
    position: absolute; z-index: 2; display: flex; align-items: center; justify-content: center;
    background: rgba(20, 20, 24, .72); border: 1px solid rgba(201, 158, 74, .28);
    color: #e8e0d0; font-family: inherit; cursor: pointer; border-radius: 50%;
}
.mod-gal-x { top: 16px; right: 18px; width: 38px; height: 38px; font-size: 16px; }
.mod-gal-prev, .mod-gal-next { top: 50%; transform: translateY(-50%); width: 44px; height: 44px; font-size: 26px; line-height: 1; }
.mod-gal-prev { left: 18px; }
.mod-gal-next { right: 18px; }
.mod-gal-x:hover, .mod-gal-prev:hover, .mod-gal-next:hover { border-color: rgba(201, 158, 74, .85); color: #ffd080; }
.mod-gal-idx, .mod-gal-zoom {
    position: absolute; bottom: 18px; z-index: 2; font-size: 12.5px; color: #b9ad93;
    background: rgba(20, 20, 24, .7); padding: 4px 10px; border-radius: 6px;
}
.mod-gal-idx { left: 50%; transform: translateX(-50%); }
.mod-gal-zoom { right: 20px; font-variant-numeric: tabular-nums; }
.mod-gal-cap2 {
    position: absolute; left: 50%; bottom: 52px; transform: translateX(-50%);
    max-width: 80vw; color: #e8e0d0; font-size: 13px; text-align: center;
    background: rgba(12, 12, 15, .72); padding: 5px 12px; border-radius: 6px;
}
@media (max-width: 640px) {
    .mod-gal-ov { padding: 10px; }
    .mod-gal-prev { left: 6px; } .mod-gal-next { right: 6px; }
    .mod-gal-big { max-width: 96vw; max-height: 78vh; }
}

/* ===== 后台审核预览：全屏阅读模式（与前台模组详情同款） ===== */
.subp-rdr-ov {
    position: fixed; inset: 0; z-index: 14000;
    display: flex; flex-direction: column;
    background: #0b0b0e;
}
.subp-rdr-top {
    flex: 0 0 auto; display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
    padding: 10px 18px; border-bottom: 1px solid rgba(201, 158, 74, .18);
    background: rgba(14, 14, 18, .96);
}
.subp-rdr-back {
    padding: 6px 12px; border-radius: 7px; cursor: pointer; font-family: inherit; font-size: 13px;
    background: transparent; border: 1px solid rgba(201, 158, 74, .35); color: #c9b48a;
}
.subp-rdr-back:hover { border-color: rgba(201, 158, 74, .85); color: #ffd080; }
.subp-rdr-title { font-size: 17px; color: #e8e0d0; letter-spacing: .04em; }
.subp-rdr-meta { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: #8a8272; }
.subp-rdr-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.subp-rdr-badges {
    flex: 0 0 auto; max-height: 30vh; overflow-y: auto;
    padding: 10px 18px; border-bottom: 1px solid rgba(201, 158, 74, .12);
    background: rgba(12, 12, 15, .9);
}
.subp-rdr-badges .subp-lintbox, .subp-rdr-badges .subp-diff, .subp-rdr-badges .subp-note { margin: 0 0 8px; }
.subp-rdr-body { flex: 1 1 auto; overflow-y: auto; padding: 18px 16px 40px; }
@media (max-width: 720px) {
    .subp-rdr-actions { margin-left: 0; width: 100%; }
    .subp-rdr-body { padding: 12px 8px 32px; }
}

/* ===== 阅读页标签基础样式（后台没有 style.css，必须自带一份；与前台数值一致） ===== */
.mod-reader .detail-tabs {
    display: flex; gap: 0; border-bottom: 2px solid #2a2a2e; margin-bottom: 20px; overflow-x: auto;
}
.mod-reader .dtab {
    padding: 10px 18px; background: none; border: none; color: #888880; font-size: 14px;
    cursor: pointer; font-family: inherit; border-bottom: 2px solid transparent;
    margin-bottom: -2px; transition: all .2s; white-space: nowrap;
}
.mod-reader .dtab:hover { color: #c8c8c0; }
.mod-reader .dtab.active { color: #c99e4a; border-bottom-color: #c99e4a; }
.mod-reader .detail-tabs::-webkit-scrollbar { height: 0; }
.mod-reader .dpanel { display: none; }
.mod-reader .dpanel.active { display: block; }

/* 后台审核预览：顶部管理栏已有标题，隐藏阅读页自带页头；正文限宽居中，和前台观感一致 */
.subp-rdr-body .mod-reader-head { display: none; }
.subp-rdr-body .mod-reader { max-width: 920px; margin: 0 auto; }

/* ===== 标签切换：面板淡入上移，跟帷幕里切换标签的手感一致 ===== */
@keyframes modPanelIn {
    /* 只动透明度：带 transform 的祖先会把 position:fixed 的浮层当成参照系（目录就贴到顶部去了） */
    from { opacity: 0; }
    to   { opacity: 1; }
}
.mod-reader .dpanel.active { animation: modPanelIn .22s cubic-bezier(.22, .61, .36, 1) both; }
/* 标签本身：底色与下划线渐变，点了有反馈 */
.mod-reader .dtab { transition: color .18s ease, border-bottom-color .18s ease, background-color .18s ease; }
.mod-reader .dtab:hover { background: rgba(201, 158, 74, .06); }
@media (prefers-reduced-motion: reduce) {
    .mod-reader .dpanel.active { animation: none; }
}

/* ===== 底栏「章节目录」浮层（独立于正文里那套 nav 定位） ===== */
.mod-toc-sheet {
    position: fixed; inset: 0; z-index: 200; display: flex; align-items: flex-end; justify-content: center;
    background: rgba(0, 0, 0, .55); opacity: 0; transition: opacity .18s ease;
}
.mod-toc-sheet.is-open { opacity: 1; }
.mod-toc-sheet-panel {
    width: min(92vw, 620px); max-height: 66vh; margin-bottom: 72px;
    display: flex; flex-direction: column;
    background: #14141a; border: 1px solid rgba(201, 158, 74, .3); border-radius: 12px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .7);
    transform: translateY(12px); transition: transform .2s cubic-bezier(.22, .61, .36, 1);
}
.mod-toc-sheet.is-open .mod-toc-sheet-panel { transform: none; }
.mod-toc-sheet-head {
    flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between;
    padding: 12px 16px; border-bottom: 1px solid rgba(201, 158, 74, .18);
    color: #e6dcc4; font-size: 14px; letter-spacing: .06em;
}
.mod-toc-sheet-x {
    width: 28px; height: 28px; border-radius: 50%; cursor: pointer; font-family: inherit; font-size: 14px;
    background: transparent; border: 1px solid rgba(201, 158, 74, .3); color: #c9b48a;
}
.mod-toc-sheet-x:hover { border-color: rgba(201, 158, 74, .85); color: #ffd080; }
.mod-toc-sheet-body { flex: 1 1 auto; overflow-y: auto; padding: 8px; display: flex; flex-direction: column; gap: 2px; }
.mod-toc-sheet-item {
    text-align: left; font-family: inherit; font-size: 14px; line-height: 1.5; cursor: pointer;
    padding: 9px 12px; border-radius: 7px; border: none; background: transparent; color: #cfc6b2;
}
.mod-toc-sheet-item.lv2 { padding-left: 26px; font-size: 13.5px; color: #b8ad96; }
.mod-toc-sheet-item:hover { background: rgba(201, 158, 74, .12); color: #ffd080; }
.mod-toc-sheet-item.is-on { color: #c99e4a; font-weight: 600; }

/* 怪物卡里的理智损失（见到它掉多少） */
.mod-mon-san { margin-top: 6px; font-size: 13px; color: #b8a8cc; }
.mod-mon-san b { color: #e6c8ff; margin-left: 4px; }

/* ===== 图鉴「丰富字段」编辑器（投稿 / 后台共用 mythos-rich.js） ===== */
.mod-mr-host { display: flex; flex-direction: column; gap: 14px; }
.mod-mr-sec { border: 1px solid rgba(201, 158, 74, .16); border-radius: 10px; padding: 12px 14px; background: rgba(255, 255, 255, .015); }
.mod-mr-sec-h { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
.mod-mr-sec-h b { font-size: 13px; color: #d8c9a6; letter-spacing: .04em; }
.mod-mr-sec-h small { font-size: 11.5px; color: #7d7565; }
.mod-mr-in, .mod-mr-ta {
    width: 100%; font-family: inherit; font-size: 13px; color: #e6dcc4;
    background: #141418; border: 1px solid #26262c; border-radius: 6px; padding: 7px 9px;
}
.mod-mr-in:focus, .mod-mr-ta:focus { outline: none; border-color: rgba(201, 158, 74, .7); }
.mod-mr-ta { resize: vertical; line-height: 1.6; margin-top: 6px; }
.mod-mr-stack { display: flex; flex-direction: column; gap: 6px; }
.mod-mr-item {
    border: 1px dashed rgba(255, 255, 255, .08);
    border-radius: 8px;
    padding: 9px 10px;
    margin-bottom: 8px;
}
.mod-mr-item-h { display: flex; align-items: center; gap: 8px; }
.mod-mr-item-h .mod-mr-t { flex: 1 1 auto; width: auto; min-width: 0; }

.mod-mr-inline { margin-top: 6px; }
/* 删除：卡片右上角的小按钮（不随输入框拉高，后台/前台同一套） */
.mod-mr-item .mod-mr-del {
    flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
    height: 26px; padding: 0 10px; line-height: 1;
    -webkit-appearance: none; appearance: none; box-sizing: border-box;
    font-family: inherit; font-size: 11.5px; color: #b08a90; cursor: pointer;
    background: rgba(212, 77, 94, .06); border: 1px solid rgba(212, 77, 94, .3); border-radius: 5px;
}
.mod-mr-del:hover { color: #ff9aa4; border-color: rgba(212, 77, 94, .75); }
.mod-mr-host .mod-mr-add, .mod-mr-fold .mod-mr-add {
    display: inline-flex; align-items: center; justify-content: center;
    height: 28px; padding: 0 12px; line-height: 1;
    -webkit-appearance: none; appearance: none; box-sizing: border-box;
    align-self: flex-start; font-family: inherit; font-size: 12.5px; color: #c9a86a; cursor: pointer;
    background: rgba(201, 158, 74, .06); border: 1px dashed rgba(201, 158, 74, .45); border-radius: 6px;
}
.mod-mr-add:hover { background: rgba(201, 158, 74, .12); border-color: rgba(201, 158, 74, .8); }
.mod-mr-grid6 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.mod-mr-attr { display: flex; flex-direction: column; gap: 4px; font-size: 11.5px; color: #8f8674; }
.mod-mr-adv { border: 1px solid rgba(255, 255, 255, .07); border-radius: 10px; padding: 10px 14px; }
.mod-mr-adv summary { cursor: pointer; font-size: 13px; color: #b8a888; }
.mod-mr-adv[open] summary { margin-bottom: 8px; }
@media (max-width: 720px) { .mod-mr-grid6 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* 图鉴编辑器的折叠区块：空着收起，有内容展开 */
.mod-mr-fold { border: 1px solid rgba(201, 158, 74, .16); border-radius: 10px; background: rgba(255,255,255,.015); }
.mod-mr-fold > summary { cursor: pointer; padding: 10px 14px; font-size: 13px; color: #d8c9a6; display: flex; align-items: baseline; gap: 8px; }
.mod-mr-fold > summary small { color: #7d7565; font-size: 11.5px; }
.mod-mr-fold-n { font-size: 11px; color: #c9a86a; border: 1px solid rgba(201,158,74,.4); border-radius: 999px; padding: 0 6px; }
.mod-mr-fold-body { padding: 0 14px 12px; }
.mod-mr-fold[open] > summary { border-bottom: 1px solid rgba(255,255,255,.06); margin-bottom: 10px; }

/* ── 神话生物页（阅读页）：统一成“数据卡”版式 ────────────────────────────
   标题 + 类别/风险胶囊 → 主图 → 一句概述 → 六维 → 理智/护甲/技能 → 攻击 → 特殊能力 → 说明
   旧版攻击/能力/说明三块没有任何样式，全部挤成默认段落，因此重做这一组规则。 */
.mod-mons-reader { display: flex; flex-direction: column; gap: 34px; }
.mod-mon-article {
  border: 1px solid rgba(201,158,74,.14); border-radius: 14px;
  background: rgba(18,18,24,.55); padding: 22px 24px 24px;
}
.mod-mon-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.mod-mon-title { font-family: var(--font-serif, serif); font-size: 22px; color: #f0e6d2; margin: 0; letter-spacing: .02em; }
.mod-mon-meta { display: flex; gap: 6px; flex-wrap: wrap; }
.mod-mon-chip { font-size: 12px; color: #c9b48a; border: 1px solid rgba(201,158,74,.28); border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
.mod-mon-chip.is-risk { color: #d98b8b; border-color: rgba(200,90,90,.35); }
.mod-mon-figure { margin: 14px 0 16px; }
.mod-mon-img { display: block; width: 100%; height: auto; border-radius: 10px; }
.mod-mon-lead { color: #ded5c2; font-size: 15.5px; line-height: 1.9; margin: 0 0 16px; }
.mod-mon-stats { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; margin: 0 0 14px; }
.mod-mon-stat { background: rgba(201,158,74,.06); border: 1px solid rgba(201,158,74,.14); border-radius: 8px; padding: 7px 4px; text-align: center; }
.mod-mon-stat i { display: block; font-style: normal; font-size: 11px; color: #8a7a60; letter-spacing: .08em; }
.mod-mon-stat b { display: block; font-size: 17px; color: #e8dfcc; font-weight: 600; margin-top: 2px; }
.mod-mon-facts { display: flex; flex-direction: column; gap: 6px; margin: 0 0 4px; }
.mod-mon-fact { display: flex; gap: 12px; font-size: 13.5px; line-height: 1.75; }
.mod-mon-lab { flex: 0 0 64px; color: #8a7a60; letter-spacing: .06em; }
.mod-mon-val { color: #cfc7b6; }
.mod-mon-val.is-san { color: #e6c8ff; }
.mod-mon-val.is-mono { font-family: ui-monospace, Consolas, monospace; font-size: 12.5px; }
.mod-mon-sec { margin-top: 18px; }
.mod-mon-h4 {
  font-size: 12px; color: #c9b48a; letter-spacing: .18em; font-weight: 600;
  margin: 0 0 10px; padding-left: 9px; border-left: 2px solid rgba(201,158,74,.5);
}
.mod-mon-atk, .mod-mon-abil { list-style: none; margin: 0; padding: 0; }
.mod-mon-atk li, .mod-mon-abil li { padding: 9px 0; border-top: 1px dashed rgba(201,158,74,.14); }
.mod-mon-atk li:first-child, .mod-mon-abil li:first-child { border-top: none; padding-top: 0; }
.mod-mon-atk-h { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; font-size: 14.5px; }
.mod-mon-atk-h b { color: #e6dcc4; }
.mod-mon-dmg { color: #d9b06a; font-size: 14px; }
.mod-mon-note { color: #a89a80; font-size: 13px; line-height: 1.75; margin: 4px 0 0; }
.mod-mon-abil b { color: #e6dcc4; font-size: 14.5px; }
.mod-mon-abil p { color: #b8b0a0; font-size: 14px; line-height: 1.85; margin: 4px 0 0; }
.mod-mon-prose p { color: #b8b0a0; font-size: 14.5px; line-height: 1.9; margin: 0 0 8px; }
.mod-mon-prose p:last-child { margin-bottom: 0; }
@media (max-width: 640px) {
  .mod-mon-article { padding: 16px; }
  .mod-mon-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .mod-mon-fact { flex-direction: column; gap: 2px; }
  .mod-mon-lab { flex: none; }
}

/* 神话生物主图：点击放大（浮窗） */
.mod-mon-img { cursor: zoom-in; }
.mod-img-ov {
  position: fixed; inset: 0; z-index: 4000; display: none;
  align-items: center; justify-content: center;
  background: rgba(6,6,9,.93); padding: 4vh 4vw;
  backdrop-filter: blur(2px);
}
.mod-img-ov.is-open { display: flex; }
.mod-img-ov img {
  max-width: 100%; max-height: 100%;
  border-radius: 8px; box-shadow: 0 24px 70px rgba(0,0,0,.65);
  cursor: default;
}
.mod-img-close {
  position: fixed; top: 18px; right: 22px; width: 40px; height: 40px;
  border-radius: 50%; border: 1px solid rgba(201,158,74,.35);
  background: rgba(20,20,26,.82); color: #e6dcc4;
  font-size: 22px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
}
.mod-img-close:hover { border-color: rgba(201,158,74,.8); color: #ffd080; }

/* 阅读页署名行里的来源徽章 */
.mod-origin-tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:4px;font-size:11px;line-height:1;border:1px solid transparent}
.mod-origin-original{color:#9fc59a;border-color:rgba(120,170,110,.35);background:rgba(120,170,110,.08)}
.mod-origin-adapted{color:#d8b878;border-color:rgba(201,158,74,.4);background:rgba(201,158,74,.08)}
.mod-origin-reprint{color:#9db8d8;border-color:rgba(120,150,190,.4);background:rgba(120,150,190,.08)}

/* 伤害预设 chips + 快捷添加（投稿/后台共用的技能行） */
.mod-mr-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.mod-mr-chip{padding:4px 8px;font-family:inherit;font-size:11px;line-height:1;border-radius:5px;cursor:pointer;color:#b8ac94;background:rgba(255,255,255,.03);border:1px solid #2c2c34;transition:all .15s ease}
.mod-mr-chip:hover{color:#ffe6ae;border-color:rgba(201,158,74,.55);background:rgba(201,158,74,.08)}
.mod-mr-chip.is-clear{color:#8a8070}
.mod-mr-quick{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed #26262e}
.mod-mr-quick>span{font-size:11px;color:#6f6656;letter-spacing:.06em}
.mod-mr-qbtn{padding:4px 9px;font-family:inherit;font-size:11.5px;line-height:1;border-radius:999px;cursor:pointer;color:#9fc59a;background:rgba(120,170,110,.06);border:1px solid rgba(120,170,110,.3);transition:all .15s ease}
.mod-mr-qbtn:hover{color:#c8e6c0;border-color:rgba(120,170,110,.6);background:rgba(120,170,110,.12)}

/* 正文底栏：NPC / 神话生物 / 图片 快捷链接 */
.mod-docquick { display: flex; align-items: center; justify-content: center; flex: 1 1 auto; min-width: 0; }
.mod-docquick-inner { display: inline-flex; align-items: center; padding: 4px; border-radius: 10px;
  border: 1px solid rgba(201, 158, 74, .22); background: rgba(201, 158, 74, .05); }
.mod-docquick-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 12px; border: 0; border-radius: 7px; cursor: pointer;
  font-family: inherit; font-size: 12.5px; line-height: 1; color: #b6a98f;
  background: transparent; transition: color .15s ease, background .15s ease;
}
.mod-docquick-btn i { font-style: normal; font-size: 11px; color: #c99e4a; opacity: .9; }
.mod-docquick-btn:hover { color: #ffe6ae; background: rgba(201, 158, 74, .10); }
.mod-docquick-sep { width: 1px; height: 14px; background: rgba(201, 158, 74, .16); flex: 0 0 auto; }
@media (max-width: 720px) {
  .mod-docquick { order: 3; flex-basis: 100%; justify-content: flex-start; margin-top: 2px; }
}

/* 字号设置移到底栏：面板向上弹 */
.mod-doc-setwrap { position: relative; display: inline-flex; align-items: center; flex: 0 0 auto; }
.mod-docfoot .mod-doc-setpanel { top: auto !important; bottom: calc(100% + 8px) !important; left: auto !important; right: 0 !important; max-height: calc(100vh - 120px); overflow-y: auto; }

/* 后台预览与前台同步：保留底栏，字号设置可用 */
.subp-reader .mod-docfoot { display: flex; }

/* 阅读设置面板（深色，底栏向上弹） */
.mod-doc-setpanel {
    position: absolute !important;
    top: auto !important; bottom: calc(100% + 10px) !important;
    left: auto !important; right: 0 !important;
    width: 264px !important; min-width: 264px !important;
    padding: 12px 14px 10px !important;
    max-height: none !important; overflow: visible !important;
    background: linear-gradient(180deg, #17171d 0%, #101014 100%) !important;
    border: 1px solid rgba(201,158,74,.34) !important;
    border-radius: 12px !important;
    box-shadow: 0 18px 44px rgba(0,0,0,.72), 0 0 0 1px rgba(0,0,0,.25) !important;
    color: #cec6b8 !important;
    z-index: 70 !important;
}
.mod-doc-setpanel::after {
    content: ''; position: absolute; right: 18px; bottom: -6px; width: 10px; height: 10px;
    background: #101014; border-right: 1px solid rgba(201,158,74,.34); border-bottom: 1px solid rgba(201,158,74,.34);
    transform: rotate(45deg);
}
.mod-doc-setrow { display: flex; align-items: center; gap: 8px; margin-bottom: 9px; }
.mod-doc-setrow:last-child { margin-bottom: 0; }
.mod-doc-setrow > span { flex: 0 0 32px; font-size: 11.5px; color: #8b8371 !important; letter-spacing: .08em; }
.mod-doc-setrow button {
    flex: 1 1 0; padding: 6px 0; border-radius: 7px; cursor: pointer;
    border: 1px solid #2e2e36 !important; background: #15151b !important;
    color: #a8a095 !important; font-family: inherit; font-size: 12px;
    transition: border-color .15s, background .15s, color .15s;
}
.mod-doc-setrow button:hover { border-color: rgba(201,158,74,.55) !important; color: #e6dcc4 !important; }
.mod-doc-setrow button.is-on {
    border-color: rgba(201,158,74,.75) !important;
    background: rgba(201,158,74,.16) !important;
    color: #ffd99a !important;
    box-shadow: inset 0 0 0 1px rgba(201,158,74,.12);
}

/* 非正文标签的底部快捷切换：切到 NPC/神话/图片后仍能继续切 */
.mod-reader-quickfoot {
    position: sticky; bottom: 10px; z-index: 6;
    display: flex; justify-content: center; margin-top: 14px;
}
.mod-reader-quickfoot-inner {
    display: inline-flex; align-items: center; padding: 4px;
    border-radius: 10px; border: 1px solid rgba(201,158,74,.24);
    background: rgba(12,12,16,.96); backdrop-filter: blur(6px);
}
.mod-reader-quickfoot .mod-docquick-btn { color: #a89c86; }
.mod-reader-quickfoot .mod-docquick-btn.is-on { color: #ffd99a; background: rgba(201,158,74,.14); }

/* ===== 投稿/后台正文：可视化编辑（左侧窄目录 + 右侧所见即所得） ===== */
.md-ed-visualmode .md-ed-bar { border-radius: 10px 10px 0 0; }
.md-ed-visualmain {
    display: grid; grid-template-columns: 176px minmax(0, 1fr); gap: 12px;
    padding: 10px; background: #0d0d11; border: 1px solid var(--mod-border); border-top: 0;
}
.md-ed-vtoc {
    display: flex; flex-direction: column; min-width: 0;
    max-height: 72vh; overflow-y: auto;
    background: #121217; border: 1px solid #26262d; border-radius: 9px;
}
.md-ed-vtoc-h {
    position: sticky; top: 0; z-index: 1; padding: 10px 12px 8px;
    font-size: 11px; letter-spacing: .16em; color: #8b7350;
    background: #121217; border-bottom: 1px solid #22222a;
}
.md-ed-vtoc-list { padding: 6px; }
.md-ed-vtoc-item {
    display: block; width: 100%; text-align: left; border: 0; border-radius: 6px;
    padding: 6px 8px; background: transparent; color: #9e9482; cursor: pointer;
    font-family: inherit; font-size: 11.5px; line-height: 1.55;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.md-ed-vtoc-item.lv2 { padding-left: 19px; color: #8b8371; font-size: 11px; }
.md-ed-vtoc-item:hover { background: rgba(201,158,74,.10); color: #e8cf9a; }
.md-ed-vtoc-empty { padding: 14px 9px; color: #615b4c; font-size: 11px; }
.md-ed-vsurface {
    min-width: 0; max-height: 72vh; overflow-y: auto;
    border: 1px solid #26262d; border-radius: 9px;
    background: #15151b;
    scrollbar-width: thin; scrollbar-color: rgba(201,158,74,.55) transparent;
}
.md-ed-vsurface::-webkit-scrollbar { width: 8px; }
.md-ed-vsurface::-webkit-scrollbar-thumb { background: rgba(201,158,74,.48); border-radius: 8px; }
.md-ed-visual {
    min-height: 62vh; padding: 26px 34px 40px; outline: none;
    color: #d7cfbf; font-size: 15.5px; line-height: 1.95;
    overflow-wrap: break-word;
}
.md-ed-visual:focus { box-shadow: inset 0 0 0 1px rgba(201,158,74,.18); }
.md-ed-visual:empty::before { content: '在这里写正文：标题、读白、KP 信息、图片都可以直接编辑…'; color: #5f5a4c; }
.md-ed-visual h1 { font-size: 1.9em; color: #f0e6d2; margin: .2em 0 .7em; letter-spacing: .03em; }
.md-ed-visual h2 { font-size: 1.45em; color: #e8cf9a; margin: 1.3em 0 .55em; padding-bottom: .2em; border-bottom: 1px solid rgba(201,158,74,.22); }
.md-ed-visual h3 { font-size: 1.16em; color: #cbbf9f; margin: 1.1em 0 .45em; }
.md-ed-visual p { margin: 0 0 .9em; }
.md-ed-visual blockquote { margin: .8em 0; padding: 8px 14px; border-left: 2px solid rgba(201,158,74,.55); background: rgba(201,158,74,.06); color: #c9bfa9; }
.md-ed-visual ul, .md-ed-visual ol { margin: .5em 0 1em 1.45em; padding: 0; }
.md-ed-visual li { margin: .2em 0; }
.md-ed-visual img { max-width: 100%; border-radius: 8px; margin: 8px 0; }
.md-ed-visual hr { border: 0; border-top: 1px solid #2d2d36; margin: 1.4em 0; }
.md-ed-visual table { border-collapse: collapse; width: 100%; margin: .8em 0; font-size: .94em; }
.md-ed-visual th, .md-ed-visual td { border: 1px solid #33333d; padding: 6px 9px; text-align: left; }
.md-ed-visual th { background: rgba(201,158,74,.10); color: #e8cf9a; }
.md-ed-visual code { background: rgba(201,158,74,.10); color: #e0c58f; padding: .08em .35em; border-radius: 4px; font-size: .92em; }
.md-ed-visual pre { background: #0b0b0f; border: 1px solid #25252d; padding: 12px; border-radius: 8px; overflow-x: auto; }
.md-ed-visual .md-read { margin: 1em 0; padding: 12px 15px; border: 1px solid rgba(90,170,190,.32); border-left: 3px solid #5aaabe; border-radius: 7px; background: rgba(90,170,190,.07); }
.md-ed-visual .md-read-tag, .md-ed-visual .md-kp-tag, .md-ed-visual .md-handout-tag, .md-ed-visual .md-check-h { font-size: 10.5px; letter-spacing: .14em; color: #7fc4d4; margin-bottom: 6px; }
.md-ed-visual .md-kp { margin: 1em 0; padding: 12px 15px; border: 1px solid rgba(201,158,74,.28); border-left: 3px solid #c99e4a; border-radius: 7px; background: rgba(201,158,74,.06); }
.md-ed-visual .md-kp-tag { color: #d7b06a; }
.md-ed-visual .md-kp details summary { cursor: pointer; color: #b9aa8c; font-size: 11.5px; margin-bottom: 5px; }
.md-ed-visual .md-handout { margin: 1em 0; padding: 12px 15px; border: 1px dashed rgba(120,180,130,.4); border-radius: 7px; }
.md-ed-visual .md-handout-tag { color: #8fc49a; }
.md-ed-visual .md-check { margin: 1em 0; padding: 12px 15px; border: 1px solid rgba(190,140,190,.3); border-radius: 7px; }
.md-ed-visual .md-check-h { color: #c79bc7; }
.md-ed-visual .md-box {
    margin: 1em 0; padding: 12px 15px; color: #cfc6b8;
    border: 1px solid var(--box-tone, rgba(146, 132, 108, .28));
    border-radius: 6px;
    background: var(--box-bg, #18171a);
}
.md-ed-visual .md-box[data-tone="warm"] { --box-bg: #241a1b; --box-tone: rgba(164, 104, 78, .36); }
.md-ed-visual .md-box[data-tone="cool"] { --box-bg: #141d23; --box-tone: rgba(92, 130, 148, .36); }
.md-ed-visual .md-box[data-tone="neutral"] { --box-bg: #18171a; --box-tone: rgba(146, 132, 108, .28); }
.md-ed-visual .md-box a { color: #d8ae66; }
.md-ed-visual .md-box p:last-child { margin-bottom: 0; }
.md-ed-visual .md-ed-empty { color: #5f5a4c; }
@media (max-width: 760px) {
    .md-ed-visualmain { grid-template-columns: 132px minmax(0, 1fr); gap: 8px; padding: 8px; }
    .md-ed-visual { padding: 18px 16px 30px; font-size: 14.5px; }
    .md-ed-vtoc { max-height: 62vh; }
    .md-ed-vsurface { max-height: 62vh; }
}

/* 成品预览：阅读页排版的全屏浮层 */
.md-ed-preview-overlay {
    position: fixed; inset: 0; z-index: 220; padding: 24px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,.78); backdrop-filter: blur(4px);
}
.md-ed-preview-box {
    width: min(1180px, calc(100vw - 40px)); height: min(90vh, 980px);
    display: flex; flex-direction: column; overflow: hidden;
    background: #0d0d11; border: 1px solid rgba(201,158,74,.28);
    border-radius: 12px; box-shadow: 0 26px 70px rgba(0,0,0,.65);
}
.md-ed-preview-head {
    display: flex; align-items: center; justify-content: space-between; gap: 14px;
    padding: 12px 16px; border-bottom: 1px solid #26262d; background: #121217;
}
.md-ed-preview-title { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
.md-ed-preview-title span { font-size: 10.5px; letter-spacing: .16em; color: #8b7350; flex: 0 0 auto; }
.md-ed-preview-title b { font-family: var(--font-display); font-size: 17px; color: #e8cf9a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.md-ed-preview-x {
    flex: 0 0 auto; padding: 6px 12px; border-radius: 6px; cursor: pointer;
    border: 1px solid #33333d; background: #17171d; color: #c9bfa9; font-family: inherit; font-size: 12px;
}
.md-ed-preview-x:hover { border-color: rgba(201,158,74,.6); color: #ffd99a; }
.md-ed-preview-body { flex: 1; min-height: 0; overflow-y: auto; padding: 22px 26px 40px; }
.md-ed-preview-doc.mod-doc {
    max-width: 900px; margin: 0 auto; padding: 34px 46px 44px;
    background: #15151b; color: #d7cfbf; border: 1px solid #26262d; border-radius: 10px;
    font-size: 15.5px; line-height: 1.95;
}
.md-ed-preview-doc.mod-doc h1 { color: #f0e6d2; }
.md-ed-preview-doc.mod-doc h2 { color: #e8cf9a; border-bottom-color: rgba(201,158,74,.22); }
.md-ed-preview-doc.mod-doc img { max-width: 100%; border-radius: 8px; }
.md-ed-preview-doc.mod-doc .md-read { background: rgba(90,170,190,.07); border-color: rgba(90,170,190,.3); }
.md-ed-preview-doc.mod-doc .md-kp { background: rgba(201,158,74,.06); border-color: rgba(201,158,74,.28); }

/* 阶段 11：窄屏阅读器标签行——操作按钮换到第二行，避免挤压标签 */
@media (max-width: 820px) {
  .mod-reader .detail-tabs { flex-wrap: wrap; overflow-x: visible; row-gap: 6px; }
  .mod-reader .detail-tabs .dtab { padding: 8px 12px; }
  .mod-reader .kp-mod-tab-actions { margin-left: 0 !important; width: 100%; justify-content: flex-end; position: static; padding-left: 0; padding-bottom: 6px; }
}

