/* ==========================================================================
   flat-industrial-clean.css · 全局强制清洗层（第十八 / 十九轮）
   --------------------------------------------------------------------------
   定位：**放在所有样式表最后**（模板 head 里排在 win2000.css 与
        flat-industrial.css 之后），是一层"反拟物总闸"。
   目标：把全站残留的阴影 / 死黑深边 / 纯白高光 / 凸起按键一次性抹平。
   回退：删掉模板里那一行 <link> 即可；本层不改任何 HTML、Go 模板与 JS。

   与 flat-industrial.css 的关系：
     · 那份负责「三级灰阶 + 组件配色 + 播放器修复」等结构化改造；
     · 本份负责「全局强制清零 + 若干值重新定标」；
     · 本份在后，凡两者冲突处（表头底色、窗口线色、按下位移…）以本份为准。

   章节：
     1 全局反拟物重置（阴影 / 3D 边框 / 边框宽度）   2 内凹工作区
     3 外凸按键（3.2 补回被刷平的当前态）            4 ListView 表头
     5 桌面底色 + 窗口外框                          6 正文带框组件
     7 亮字色标签 → 墨色（7b 伪元素）               8 别名兼容
     9 **移动端（<768px）扁平工业总则**：6px 安全边距 / 通栏对齐 /
       1px 哑光单线 / 输入框与按键纯平基底
   ========================================================================== */

/* ==========================================================================
   1. 全局反拟物重置
   ========================================================================== */

/* 1.1 强制清空全站所有阴影（含伪元素）
     为什么用"重复类"写法：主题里有 211 个选择器声明了 box-shadow/text-shadow，
     最重的一条达到 8 个类权重，普通 `body.w2k#top *`（1 类）压不住它们。
     `body.w2k.w2k…` 在同一元素上重复同一个类，每个重复都计入权重 —— 7 个重复
     即 (1 id, 7 类, 2 型)，足以压过主题全部阴影规则；body 本身就带 w2k 类
     （主题全部规则都依赖它），所以不存在漏匹配。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top *,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top *::before,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top *::after {
  box-shadow: none !important;
  text-shadow: none !important;
}

/* 1.2 废除浏览器原生 3D 边框关键字（inset / outset / groove / ridge）
     实测主题自身 0 处使用（只用 solid / dotted），但浏览器 UA 默认会给
     fieldset / hr / table 等套上 groove / inset，这里一并收敛为实线。
     注意：**不动 dotted / dashed** —— 正文链接的 1px 点线、目录树的虚点线
     都是刻意设计（第 1 / 29 节）。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(fieldset, legend, hr, table, thead, tbody,
    tr, th, td, button, input, select, textarea, iframe, progress, meter,
    .win-window, .win-inset, .win-outset, .win-btn, .w2k-card, .w2k-btn, .w2k-dt,
    .w2k-details, .table-scroll, .code-block-wrapper, .prose-paper, .paper-audio-player) {
  border-style: solid !important;
}

/* 1.3 所有视窗 / 面板 / 卡片的边框宽度统一为 1px（0 宽度的保持 0，不会凭空长出线） */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.win-window, .win-inset, .win-outset, .win-btn,
    .w2k-window, .w2k-card, .w2k-btn, .w2k-tbtn, .w2k-view-btn, .w2k-dt, .w2k-details,
    .table-scroll, .code-block-wrapper, .prose-paper, .paper-download-card,
    .paper-hide-lock, .paper-callout, .paper-audio-player, .paper-audio-playlist,
    .paper-audio-cover, .paper-gallery-more, .paper-gallery-loadmore, .compact-filter,
    .taxonomy-tile, .magazine-section) {
  border-width: 1px !important;
}

/* ==========================================================================
   2. 内凹工作区与卡片：1px 中性灰单线 + 柔和乳白
   ========================================================================== */
html:not(.dark) body.w2k#top :is(.win-inset, .win-sunken, .table-container-inset,
    .article-body-inset, .w2k-main, .w2k-sidebar, .w2k-pane, .w2k-dt, .w2k-details,
    .w2k-metalist, .table-scroll, .code-block-wrapper) {
  box-shadow: none !important;
  border: 1px solid #c0bcb4 !important;
  background-color: #faf9f6 !important;
}
html.dark body.w2k#top :is(.win-inset, .win-sunken, .table-container-inset,
    .article-body-inset, .w2k-main, .w2k-sidebar, .w2k-pane, .w2k-dt, .w2k-details,
    .w2k-metalist, .table-scroll, .code-block-wrapper) {
  box-shadow: none !important;
  border: 1px solid #333333 !important;
  background-color: #1e1e1e !important;
}
/* 阅读区保持纯净白（扁平化不牺牲可读性） */
html:not(.dark) body.w2k#top :is(.prose-paper, .reading-content, #article-content) {
  background-color: #ffffff !important;
  border-color: #c0bcb4 !important;
}
html.dark body.w2k#top :is(.prose-paper, .reading-content, #article-content) {
  background-color: #181818 !important;
  border-color: #333333 !important;
}

/* 工作区面板（主面板 / 侧栏 / 各个 pane）同样回到柔和乳白。
   这里用 `#top#top` 重复同一个 id：第 16 节那条规则把 `#w2k-client` 写在
   :is() 里，权重因此含 1 个 id（2 id 级），普通 1 id 规则压不住；
   重复 id 与它同权重、且本层在后，故生效。 */
html:not(.dark) body.w2k#top#top :is(.w2k-main, .w2k-sidebar, .w2k-pane, .win-inset) {
  background-color: #faf9f6 !important;
  border-color: #c0bcb4 !important;
  box-shadow: none !important;
}
html.dark body.w2k#top#top :is(.w2k-main, .w2k-sidebar, .w2k-pane, .win-inset) {
  background-color: #1e1e1e !important;
  border-color: #333333 !important;
  box-shadow: none !important;
}
/* 但正文阅读卡必须仍然纯白（它同时带 .prose-paper，需要单独钉回来） */
html:not(.dark) body.w2k#top#top .prose-paper { background-color: #ffffff !important; }

/* ==========================================================================
   3. 外凸按键与面板：纯平工控表面，点击不再下沉
   ========================================================================== */
html:not(.dark) body.w2k#top :is(.win-outset, .win-btn, .toolbar-btn, .win-thin-outset,
    .w2k-raised, .w2k-thin-raised, .w2k-card, .w2k-btn, .w2k-tbtn, .w2k-view-btn,
    .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .collapse-code, .code-tools button,
    .paper-gallery-switcher button, .paper-gallery-prev, .paper-gallery-next,
    .paper-gallery-pages, .paper-audio-icon, .compact-pill, .filter-trigger,
    .front-page-btn, .archive-pages a, .archive-pagination a, .w2k-btn-default,
    .paper-download-card, .paper-hide-lock, .w2k-metabadge, .reading-action,
    .reading-actions, .reading-actions-single, .hide-lock-form button,
    .w2k-lb-close, .w2k-lb-nav) {
  box-shadow: none !important;
  background-image: none !important;
  background-color: #dcd8cf !important;
  border: 1px solid #b8b4ac !important;
}
html.dark body.w2k#top :is(.win-outset, .win-btn, .toolbar-btn, .win-thin-outset,
    .w2k-raised, .w2k-thin-raised, .w2k-card, .w2k-btn, .w2k-tbtn, .w2k-view-btn,
    .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .collapse-code, .code-tools button,
    .paper-gallery-switcher button, .paper-gallery-prev, .paper-gallery-next,
    .paper-gallery-pages, .paper-audio-icon, .compact-pill, .filter-trigger,
    .front-page-btn, .archive-pages a, .archive-pagination a, .w2k-btn-default,
    .paper-download-card, .paper-hide-lock, .w2k-metabadge, .reading-action,
    .reading-actions, .reading-actions-single, .hide-lock-form button,
    .w2k-lb-close, .w2k-lb-nav) {
  box-shadow: none !important;
  background-image: none !important;
  background-color: #333333 !important;
  border: 1px solid #3a3a3a !important;
}
/* 悬浮：微亮一级 */
html:not(.dark) body.w2k#top :is(.win-btn, .toolbar-btn, .w2k-btn, .w2k-tbtn,
    .w2k-view-btn, .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .collapse-code,
    .paper-gallery-switcher button, .paper-gallery-prev, .paper-gallery-next,
    .paper-audio-icon, .compact-pill, .filter-trigger, .front-page-btn,
    .archive-pages a, .archive-pagination a, .hide-lock-form button, .w2k-lb-close,
    .w2k-lb-nav):hover {
  background-color: #e5e2da !important;
  border-color: #b8b4ac !important;
}
html.dark body.w2k#top :is(.win-btn, .toolbar-btn, .w2k-btn, .w2k-tbtn,
    .w2k-view-btn, .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .collapse-code,
    .paper-gallery-switcher button, .paper-gallery-prev, .paper-gallery-next,
    .paper-audio-icon, .compact-pill, .filter-trigger, .front-page-btn,
    .archive-pages a, .archive-pagination a, .hide-lock-form button, .w2k-lb-close,
    .w2k-lb-nav):hover {
  background-color: #3f3f3f !important;
  border-color: #4a4a4a !important;
}
/* 按下：取消一切下沉/凹陷位移（含第 8/9 节的 .is-pressed 反馈） */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.win-btn, .toolbar-btn, .w2k-btn, .w2k-tbtn,
    .w2k-view-btn, .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .compact-pill,
    .paper-gallery-loadmore, .paper-audio-icon, .reading-action, .hide-lock-form button,
    .w2k-lb-close, .w2k-lb-nav):active,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.w2k-btn.is-pressed, .reading-action.is-pressed,
    .paper-gallery-loadmore.is-pressed) {
  transform: none !important;
  box-shadow: none !important;
}

/* ---------- 3.2 补回被第 3 节刷平的"当前态"（第 19 轮修正） ----------
   第 3 节用的是 `html:not(.dark) body.w2k#top :is(…)` = (1,3,2)，
   比 flat-industrial.css 第 17 节 `.is-active/.is-selected` 那条
   `body.w2k#top :is(.w2k-view-btn.is-active, …)` = (1,3,1) 高一级，
   于是"选中"底色（#c9c5bd）被普通态底色（#dcd8cf）刷平 ——
   视图切换按钮与筛选药丸的选中/未选中长得一模一样（第 18 轮遗留缺陷）。
   这里用 7 重复类把权重抬到 (1,9,1)：既压过第 3 节的普通态，
   也压过第 3 节带 :hover 的那条 (1,4,2) —— 否则鼠标悬停选中项时
   会退回"看起来没选中"的浅色。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.w2k-view-btn.is-active, .compact-pill.is-active,
    .filter-trigger.is-selected) {
  background-color: #c9c5bd !important;
  background-image: none !important;
  border-color: #b4b0a8 !important;
  box-shadow: none !important;
  transform: none !important;
}
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.w2k-view-btn.is-active,
    .compact-pill.is-active, .filter-trigger.is-selected) {
  /* 暗色下"当前态"必须换色相，不能只调灰阶：
     第 9.4 节的暗色普通态本身就在 #2c2c2c~#3f3f3f 这一档，
     若当前态也写 #3f3f3f，选中与未选中会完全同色（实测确认）。
     沿用第 16 轮播放器"暗色选中 = 去饱和蓝"的语言，一眼可辨。 */
  background-color: #3a506b !important;
  border-color: #4d6580 !important;
}

/* ==========================================================================
   4. ListView：哑光平坦标尺（22px / 无上左白边 / 右底各 1px）
   ========================================================================== */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.win-listview th, .win-detail-table th,
    .w2k-dt-head th, .w2k-details-head th, table.win-propsheet thead th) {
  height: 22px !important;
  padding: 0 6px !important;
  background-color: #d4d0c8 !important;
  background-image: none !important;
  color: var(--text) !important;
  font-weight: 400 !important;
  font-size: 11.5px !important;
  line-height: 20px !important;
  text-align: left !important;
  border-top: none !important;
  border-left: none !important;
  border-right: 1px solid #c4c0b8 !important;
  border-bottom: 1px solid #a8a49c !important;
  box-shadow: none !important;
}
/* 暗色表头同样要抬权重：上面那条是 7 重复类 (1,8,1)，
   而 `html.dark body.w2k#top :is(…)` 只有 (1,3,2) —— 压不住，
   结果暗色下表头仍是浅色 #d4d0c8 配浅色文字，字几乎看不见（实测确认）。
   这里补成 7 重复类 (1,9,2)，比上面高一级。 */
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.win-listview th, .win-detail-table th,
    .w2k-dt-head th, .w2k-details-head th, table.win-propsheet thead th) {
  background-color: #2c2c2c !important;
  color: var(--text) !important;
  border-right-color: #333333 !important;
  border-bottom-color: #383838 !important;
}
body.w2k#top :is(.win-listview th, .win-detail-table th, .w2k-dt-head th):last-child { border-right: none !important; }

/* ==========================================================================
   5. 主视窗外框 与 全局桌面背景
   ========================================================================== */
/* 第 19 轮：桌面底色改由 flat-industrial.css 的 --flat-desktop 统一定义
   （#3a6ea5 经典 Windows 桌面蓝），本层不再写死色值，避免两处各说各话。
   .desktop-bg 是外部片段惯用的别名，一起接住。 */
html:not(.dark) { background-color: var(--flat-desktop, #3a6ea5) !important; }
html.dark { background-color: var(--flat-desktop, #1b2b40) !important; }
html:not(.dark) body.w2k#top,
html:not(.dark) body.w2k#top :is(#desktop-container, .w2k-desktop, .desktop-bg) { background-color: var(--flat-desktop, #3a6ea5) !important; }
html.dark body.w2k#top,
html.dark body.w2k#top :is(#desktop-container, .w2k-desktop, .desktop-bg) { background-color: var(--flat-desktop, #1b2b40) !important; }

body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.win-window, #app-window, .main-window-wrapper, .w2k-window) {
  box-shadow: none !important;
  border: 1px solid #9e9a92 !important;
}
/* 暗色窗口线：同样被上面的 7 重复类压住（:is() 里的 #app-window 让两条都是 2 id，
   但上面多 6 个类），暗色下窗口框会留一条偏亮的 #9e9a92。这里补齐重复类。 */
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.win-window, #app-window, .main-window-wrapper, .w2k-window) {
  border-color: #3a3a3a !important;
}

/* ==========================================================================
   6. 正文带框组件：1px 单线 + 6px 内敛微边距（不贴外壁）
   ========================================================================== */
html:not(.dark) body.w2k#top :is(.code-block-wrapper, .table-scroll, .paper-download-card,
    .paper-hide-lock, .paper-callout, .paper-audio-player, .paper-gallery, .download-box,
    .file-download-card, .protected-content-box, .protected-box, .password-note,
    .callout-box, .alert-box, .system-report-block, .code-window) {
  border: 1px solid #c0bcb4 !important;
  box-shadow: none !important;
}
html.dark body.w2k#top :is(.code-block-wrapper, .table-scroll, .paper-download-card,
    .paper-hide-lock, .paper-callout, .paper-audio-player, .paper-gallery, .download-box,
    .file-download-card, .protected-content-box, .protected-box, .password-note,
    .callout-box, .alert-box, .system-report-block, .code-window) {
  border: 1px solid #333333 !important;
  box-shadow: none !important;
}
/* 移动端与最外层边缘保持 6px 微边距（等价于第 39/40 节的 --w2k-mod-gap） */
@media (max-width: 767px) {
  body.w2k#top :is(.prose-paper, .reading-content) > :is(.code-block-wrapper, pre,
      .table-scroll, .paper-download-card, .paper-hide-lock, .paper-callout,
      .paper-gallery, .paper-audio-player) {
    margin-left: calc(6px - var(--w2k-read-pad, 12px)) !important;
    margin-right: calc(6px - var(--w2k-read-pad, 12px)) !important;
  }
  body.w2k#top .reading-article > :is(.paper-audio-player, .paper-video-shell) {
    margin-left: 7px !important;
    margin-right: 7px !important;
  }
}

/* ==========================================================================
   7. 亮字色标签 → 墨色
   --------------------------------------------------------------------------
   主题里有 60 个选择器把 --hilight（浅色下是近白）当"凸起面刻字"的亮字色用，
   再配一条深色 text-shadow 做刻蚀效果。本层第 1.1 节已经把 text-shadow 全部
   清零，若不同时改字色，这些标签就会变成"白字白底、看不见"。
   这里统一改成 --text（浅色墨黑 / 暗色浅灰，两端都可读），
   正好也就是扁平工业风要的"平印文字"。
   ========================================================================== */
html:not(.dark) body.w2k#top :is(#paper-audio-play-icon,
        .archive-category,
        .archive-pages a,
        .archive-pagination a,
        .archive-pagination span.is-disabled,
        .code-tools button,
        .collapse-code,
        .compact-clear,
        .compact-filter,
        .compact-pill:hover,
        .copy-code,
        .download-code em,
        .filter-trigger,
        .front-page-btn,
        .hide-lock-form button,
        .paper-audio-icon,
        .paper-download-card,
        .paper-gallery .paper-photo-link:hover,
        .paper-gallery[data-gallery] .paper-photo-link:hover,
        .paper-gallery-loadmore,
        .paper-gallery-more,
        .paper-gallery-next,
        .paper-gallery-pages,
        .paper-gallery-prev,
        .paper-gallery-switcher button,
        .paper-hide-lock,
        .paper-photo-link:focus-visible,
        .paper-photo-link:hover,
        .post-category,
        .prose-paper .paper-hide-lock,
        .reading-action,
        .reading-actions,
        .reading-actions-single,
        .text-card-category,
        .w2k-breadcrumb,
        .w2k-btn,
        .w2k-btn-default,
        .w2k-btn-search,
        .w2k-card,
        .w2k-dt-head th,
        .w2k-lb-close,
        .w2k-lb-nav,
        .w2k-lb-window,
        .w2k-metabadge,
        .w2k-raised,
        .w2k-tag-chip,
        .w2k-tbtn,
        .w2k-thin-raised,
        .w2k-toc-toggle,
        .w2k-toolbar,
        .w2k-tool-btn,
        .w2k-view-btn,
        .win-outset,
        .win-thin-outset,
        table.win-propsheet thead th) {
  color: var(--text) !important;
  text-shadow: none !important;
}
html.dark body.w2k#top :is(#paper-audio-play-icon,
        .archive-category,
        .archive-pages a,
        .archive-pagination a,
        .archive-pagination span.is-disabled,
        .code-tools button,
        .collapse-code,
        .compact-clear,
        .compact-filter,
        .compact-pill:hover,
        .copy-code,
        .download-code em,
        .filter-trigger,
        .front-page-btn,
        .hide-lock-form button,
        .paper-audio-icon,
        .paper-download-card,
        .paper-gallery .paper-photo-link:hover,
        .paper-gallery[data-gallery] .paper-photo-link:hover,
        .paper-gallery-loadmore,
        .paper-gallery-more,
        .paper-gallery-next,
        .paper-gallery-pages,
        .paper-gallery-prev,
        .paper-gallery-switcher button,
        .paper-hide-lock,
        .paper-photo-link:focus-visible,
        .paper-photo-link:hover,
        .post-category,
        .prose-paper .paper-hide-lock,
        .reading-action,
        .reading-actions,
        .reading-actions-single,
        .text-card-category,
        .w2k-breadcrumb,
        .w2k-btn,
        .w2k-btn-default,
        .w2k-btn-search,
        .w2k-card,
        .w2k-dt-head th,
        .w2k-lb-close,
        .w2k-lb-nav,
        .w2k-lb-window,
        .w2k-metabadge,
        .w2k-raised,
        .w2k-tag-chip,
        .w2k-tbtn,
        .w2k-thin-raised,
        .w2k-toc-toggle,
        .w2k-toolbar,
        .w2k-tool-btn,
        .w2k-view-btn,
        .win-outset,
        .win-thin-outset,
        table.win-propsheet thead th) {
  color: var(--text) !important;
  text-shadow: none !important;
}

/* ==========================================================================
   8. 别名兼容（外部片段惯用的 .win-* / .toolbar-btn 命名同样生效）
   ========================================================================== */
body.w2k#top :is(.toolbar-btn, .win-tool-btn) {
  background-color: #dcd8cf !important;
  border: 1px solid #b8b4ac !important;
  box-shadow: none !important;
}
body.w2k#top :is(.toolbar-btn, .win-tool-btn):hover { background-color: #e5e2da !important; }
body.w2k#top :is(.toolbar-btn, .win-tool-btn):active { transform: none !important; }
body.w2k#top :is(.article-body-inset, .table-container-inset) {
  background-color: #faf9f6 !important;
  border: 1px solid #c0bcb4 !important;
  box-shadow: none !important;
}

/* 7b. 同上，但目标带伪元素（:is() 不能包含伪元素，故单列） */
html:not(.dark) body.w2k#top .paper-audio-progress::-moz-range-thumb,
html:not(.dark) body.w2k#top .paper-audio-progress::-webkit-slider-thumb,
html:not(.dark) body.w2k#top .w2k-sidebar-title::after,
html.dark body.w2k#top .paper-audio-progress::-moz-range-thumb,
html.dark body.w2k#top .paper-audio-progress::-webkit-slider-thumb,
html.dark body.w2k#top .w2k-sidebar-title::after {
  color: var(--text) !important;
  text-shadow: none !important;
}

/* ==========================================================================
   9. 移动端（<768px）：扁平工业总则（第十九轮）
   --------------------------------------------------------------------------
   桌面分支（≥768px）完全不受影响 —— 本节全部包在 @media (max-width: 767px) 内。
   用 767 而不是 768：站内桌面规则起点是 min-width: 768px，这里若写 768，
   正好 768px 宽的那一列会同时吃到两边规则、互相覆盖。
   ========================================================================== */
@media (max-width: 767px) {

  /* ---------- 9.1 外层安全边距：全站唯一来源，收成 6px ---------- */
  /* win2000.css 第 37 节的窗口宽度公式是
       width: calc(100% - 2 * var(--w2k-safe)) + margin-left/right: auto
     把 --w2k-safe 从 4px 提到 6px，可视结果就是"外层主容器两端各留 6px 安全边距"，
     全站只有这一个数字需要维护。
     为什么不按字面在 #w2k-client 上写 `padding: 0 6px`：
       · 窗口自身已有 4px 侧边距，叠加后变成 10px —— 手机上白扔 20px 正文宽度；
       · 标题栏 / 菜单栏 / 状态栏是 #w2k-client 的**兄弟节点**，给 client 加内边距
         只会把内容区往中间推，顶部两条导航栏原地不动，立刻出现两条基准线，
         与下面 9.2 要求的"通栏对齐"直接冲突。 */
  body.w2k#top { --w2k-safe: 6px; }

  /* ---------- 9.2 通栏对齐：标题栏 / 菜单栏 / 面包屑 / 正文外框 / 状态栏同一条竖线 ---------- */
  /* 标题栏、菜单栏、状态栏是窗口的直接子元素，左边缘 = 窗口内沿；
     而面包屑与正文卡在 .w2k-pane-doc（列表页是 .w2k-main）内部，被那 1px 边框
     又推进去 1px，于是"顶部两栏"与"正文"之间永远有一级 1px 台阶（dpr≥2 的真机上
     就是 2~3 个物理像素的锯齿）。
     移动端直接去掉这两类内容面板的左右边框：整列由最外层窗口自己那道
     1px #9e9a92 收口，从此全站一条通栏竖线。
     上/下边框是条带之间的横向分隔，保留。
     ⚠ 这条规则本体写在 9.5（本节末尾）—— 因为 9.3 会给 .w2k-main 这类
       .win-inset 元素重新写上 border-*-width: 1px，且两者权重相同、9.3 在后。 */
  /* 一律 100% 通栏、清掉任何私加的左右外边距（与 win2000.css 第 37 节同值，
     这里再钉一遍，保证后续新增模块也自动落在同一条线上） */
  body.w2k#top .w2k-window > *,
  body.w2k#top #w2k-client,
  body.w2k#top #w2k-client > *,
  body.w2k#top :is(.w2k-breadcrumb, .reading-article, .article-region, .prose-paper,
      .w2k-statusbar) {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  /* ---------- 9.3 全站 1px 哑光单线：禁止 2px 以上黑边与高光白边 ---------- */
  /* 只写 border-*-width、不写 border-style：没有 style 的边不会显形，
     所以这里既能"把粗边一律压到 1px"，又不会给本来只有左边一条语义色条的
     引用块凭空补出四条边。（.paper-callout 刻意不在名单里 —— 它的左侧是
     按提示类型变色的语义色条，不属于"拟物黑边"。）
     阴影部分第 1 节已全局清零，这里再对组件钉一遍，作为移动端自证。 */
  body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.win-window, .win-inset, .win-outset, .win-btn,
      .w2k-window, .w2k-card, .w2k-dt, .w2k-details, .w2k-metalist, .table-scroll,
      .code-block-wrapper, .prose-paper, .paper-download-card, .paper-hide-lock,
      .paper-audio-player, .paper-audio-playlist, .paper-audio-cover, .paper-gallery,
      .paper-gallery-more, .paper-gallery-loadmore, .compact-filter, .taxonomy-tile,
      .magazine-section, .download-box, .file-download-card, .protected-content-box,
      .protected-box, .password-note, .callout-box, .alert-box, .system-report-block,
      .code-window, .reading-content pre, .reading-content blockquote,
      input, textarea, select, button) {
    box-shadow: none !important;
    text-shadow: none !important;
    border-top-width: 1px !important;
    border-right-width: 1px !important;
    border-bottom-width: 1px !important;
    border-left-width: 1px !important;
  }

  /* ---------- 9.4 输入框与按键：纯平基底，取消一切凸起 ---------- */
  /* 搜索框 / 文本域：微暖白 #f7f6f2 + 1px #b8b4ac + 12px 墨黑。
     必须排除 range（音频进度条）、checkbox、radio ——
     给 range 套底色会把播放器进度条整条刷成米白。 */
  html:not(.dark) body.w2k#top :is(input:not([type="range"]):not([type="checkbox"]):not([type="radio"]),
      textarea, select) {
    background-color: #f7f6f2 !important;
    background-image: none !important;
    border: 1px solid #b8b4ac !important;
    box-shadow: none !important;
    color: #111111 !important;
    font-size: 12px !important;
  }
  html.dark body.w2k#top :is(input:not([type="range"]):not([type="checkbox"]):not([type="radio"]),
      textarea, select) {
    background-color: #262626 !important;
    border: 1px solid #3a3a3a !important;
    color: #dcdcdc !important;
  }
  /* 文字按键：同样纯平（无浮雕、无投影、无下沉）。
     · 排除 .is-active / .is-selected —— 它们是"选中"的唯一视觉线索，
       不能被普通态底色刷平（第 3.2 节已把选中底色钉回 #c9c5bd）；
     · 图标型按键（标题栏 22px 高的最小化/最大化/关闭、播放器图标、灯箱翻页、
       画廊胶囊箭头）不套 12px 字号，否则会被字号顶开变形，只统一线色与底色。 */
  html:not(.dark) body.w2k#top :is(.w2k-btn, .w2k-btn-default, .compact-pill,
      .filter-trigger, .front-page-btn, .archive-pages a, .archive-pagination a,
      .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .collapse-code, .reading-action,
      .hide-lock-form button, .paper-gallery-pages, .toolbar-btn,
      .w2k-tbtn, .paper-audio-icon, .w2k-lb-close, .w2k-lb-nav,
      .paper-gallery-prev, .paper-gallery-next):not(.is-active):not(.is-selected) {
    background-color: #f7f6f2 !important;
    background-image: none !important;
    border: 1px solid #b8b4ac !important;
    box-shadow: none !important;
  }
  html:not(.dark) body.w2k#top :is(.w2k-btn, .w2k-btn-default, .compact-pill,
      .filter-trigger, .front-page-btn, .archive-pages a, .archive-pagination a,
      .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .collapse-code, .reading-action,
      .hide-lock-form button, .paper-gallery-pages, .toolbar-btn):not(.is-active):not(.is-selected) {
    color: #111111 !important;
    font-size: 12px !important;
  }
  /* 按钮文字色必须再补一次：第 7 节那条 `--hilight → var(--text)` 的规则
     :is() 里含 `#paper-audio-play-icon` 这个 id —— 按 CSS 规范，:is() 整体的
     权重取参数里最高的那个，于是第 7 节实际是 (2,2,2)，比上面这条 (1,5,2) 还高，
     按钮文字会被它按回 var(--text)。这里用重复 id（#top#top）抬到 (2,5,2)，
     与第 5 节 / 第 2 节压 #w2k-client 用的是同一个手法。
     结果：输入框与文字按键统一 12px #111111 扎实墨黑，与用户要求逐字一致。 */
  html:not(.dark) body.w2k#top#top :is(.w2k-btn, .w2k-btn-default, .compact-pill,
      .filter-trigger, .front-page-btn, .archive-pages a, .archive-pagination a,
      .w2k-tool-btn, .w2k-toc-toggle, .copy-code, .collapse-code, .reading-action,
      .hide-lock-form button, .paper-gallery-pages, .toolbar-btn):not(.is-active):not(.is-selected) {
    color: #111111 !important;
    font-size: 12px !important;
  }
  /* 图标型按键（标题栏三键 / 播放器图标 / 灯箱翻页 / 画廊胶囊箭头）只统一底色与线色，
     字号保持原值 —— 12px 会把 22px 高的标题栏按钮和 40px 的封面图形顶变形。 */
  html:not(.dark) body.w2k#top#top :is(.w2k-tbtn, .paper-audio-icon, .w2k-lb-close,
      .w2k-lb-nav, .paper-gallery-prev, .paper-gallery-next) {
    color: var(--text) !important;
  }
  html.dark body.w2k#top :is(.w2k-btn, .w2k-btn-default, .compact-pill, .filter-trigger,
      .front-page-btn, .archive-pages a, .archive-pagination a, .w2k-tool-btn,
      .w2k-toc-toggle, .copy-code, .collapse-code, .reading-action,
      .hide-lock-form button, .paper-gallery-pages, .toolbar-btn, .w2k-tbtn,
      .paper-audio-icon, .w2k-lb-close, .w2k-lb-nav, .paper-gallery-prev,
      .paper-gallery-next):not(.is-active):not(.is-selected) {
    background-color: #2c2c2c !important;
    border: 1px solid #3a3a3a !important;
    color: #dcdcdc !important;
    box-shadow: none !important;
  }

  /* ---------- 9.5 收口：内容面板左右边框归零（必须放在 9.3 之后） ---------- */
  /* 9.3 为了"禁止 2px 以上黑边"会给 .w2k-main 这类 .win-inset 元素重新声明
     border-*-width: 1px，与本条同层级却排在后面，会把左右的 0 又写回 1px
     （第一版实测 .w2k-main 的 border-left-width 仍是 1px）。
     更坑的是：即使把本条放到文件最后、权重与 9.3 持平，`… :is(…)` 写法在
     实测中仍然抢不过 9.3（同为 body.w2k×7#top 前缀 + 单个类参数的 :is()，
     浏览器给出的层叠结果却把 9.3 排在前）。
     因此这里不再赌权重持平，改用**重复 id** 的显式选择器：两个 id 级
     (2,1,1) 稳压所有单 id 规则，也与第 2 / 5 节压 #w2k-client、#app-window
     用的是同一个手法。 */
  body.w2k#top#top .w2k-pane,
  body.w2k#top#top .w2k-pane-doc,
  body.w2k#top#top .w2k-main {
    border-left-width: 0 !important;
    border-right-width: 0 !important;
  }
}

/* ==========================================================================
   10. 第二十轮：引用/提示框语义色条、分类与标签索引、播放器 Hover、
       归档底色、正文顶线、移动端暗黑播放器
   --------------------------------------------------------------------------
   本节所有规则一律用 `body.w2k×7#top`（必要时再加 `html:not(.dark)`）
   把权重抬到 (1,9,x) 之上，因为要同时压过：
     · 第 1.3 节的边框宽度总闸 (1,8,1)
     · 第 6 节的框式组件统一线 (1,3,2)
     · 第 9.3 节移动端宽度上限 (1,8,2)
   不靠"位置更靠后"取胜（第 19 轮已证明那样不可靠）。
   ========================================================================== */

/* ---------- 10.1 正文引用块：3px 工业灰左条 + 左圆角微胶囊 ---------- */
/* 主题原来是 border-left: 3px solid var(--w2k-shadow)（近黑），第 15 轮被统一成
   1px 灰线，两侧都"硬"。这里改成工业灰 #7a828e 的 3px 条 + 4px 左圆角，
   底色换柔和乳白，不再是死黑竖线也不再是四边等宽的死板方框。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.prose-paper blockquote, .reading-content blockquote) {
  border-left: 3px solid #7a828e !important;
  border-top-left-radius: 4px !important;
  border-bottom-left-radius: 4px !important;
  padding: 8px 12px !important;
}
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.prose-paper blockquote,
    .reading-content blockquote) {
  background-color: #f7f6f2 !important;
  color: var(--text) !important;
}
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.prose-paper blockquote,
    .reading-content blockquote) {
  background-color: #232323 !important;
  color: var(--text) !important;
}

/* ---------- 10.2 提示框：工业警示色条（按语义分色） ---------- */
/* 第 15 轮把 .paper-callout 的左侧语义色条一并刷成灰线，导致"注意 / 警告 / 提示"
   与普通信息框长得完全一样（第 19 轮已记录为待办）。这里按类型恢复：
     默认 / warning / tip → 琥珀金 #d97706（暖橙，工业警示色）
     info                → 中性钢蓝 #3a6ea5
     success             → 工业绿   #15803d
     danger / error      → 工业红   #b91c1c
   同一族里只换色相、不换粗细（都是 3px + 4px 左圆角），标题与正文一律墨黑。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout, .callout-box, .alert-box) {
  border-left: 3px solid #d97706 !important;
  border-top-left-radius: 4px !important;
  border-bottom-left-radius: 4px !important;
  box-shadow: none !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout.callout-info, .callout-box.callout-info,
    .alert-box.callout-info) { border-left-color: #3a6ea5 !important; }
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout.callout-success, .callout-box.callout-success,
    .alert-box.callout-success) { border-left-color: #15803d !important; }
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout.callout-danger, .paper-callout.callout-error,
    .callout-box.callout-danger, .alert-box.callout-danger) { border-left-color: #b91c1c !important; }
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout.callout-warning, .paper-callout.callout-tip,
    .paper-callout.callout-primary, .callout-box.callout-warning) { border-left-color: #d97706 !important; }

html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout, .callout-box, .alert-box),
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout, .callout-box, .alert-box) * {
  color: var(--text) !important;
}
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout.callout-warning,
    .paper-callout.callout-tip, .paper-callout.callout-primary) { background-color: #fbf9f4 !important; }
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-callout.callout-info { background-color: #f5f8fb !important; }
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-callout.callout-success { background-color: #f5faf6 !important; }
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout.callout-danger,
    .paper-callout.callout-error) { background-color: #fdf6f6 !important; }
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout, .callout-box, .alert-box) {
  background-color: #262019 !important;
  color: var(--text) !important;
}
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-callout.callout-info { background-color: #1c2229 !important; }
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-callout.callout-success { background-color: #1a231c !important; }
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-callout.callout-danger,
    .paper-callout.callout-error) { background-color: #261a1a !important; }

/* ---------- 10.3 分类索引：容器内衬 + Hover 白底白字修复 ---------- */
/* ① 外层网格原本 padding: 0 0 18px，第一张卡片紧贴网格边框（网格自己也有 1px 线），
      在大视窗里就是"顶死外框"。给 10/12px 内衬把它推开。 */
html:not(.dark) body.w2k#top :is(.taxonomy-grid) {
  padding: 10px 12px !important;
}
/* ② Hover 白底白字：flat 层的 `--flat-pane-hover`（#faf9f6，近白）覆盖了底色，
   而主题 `.taxonomy-tile:hover { color: var(--select-text) }` 把文字设成纯白，
   两边一叠加就是"白底白字、标题描述全隐形"。这里强制浅底 + 纯黑字。 */
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .taxonomy-tile:hover {
  background-color: #faf9f5 !important;
  border-color: #9e9a92 !important;
  color: #0a0a0a !important;
}
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .taxonomy-tile:hover * {
  color: #0a0a0a !important;
}
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .taxonomy-tile:hover { background-color: #3a3a3a !important; }
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .taxonomy-tile:hover * { color: var(--text) !important; }

/* ---------- 10.4 标签索引：紧凑工控徽章 + 右上角计数气泡 ---------- */
/* 原来是 140×58 的竖排小卡片（名称一行 + "N 篇内容 →"一行），在手机上一屏只能
   放两个，像缩水版文章卡。改成 inline-flex 徽章：高 32px、最小宽 105px、
   外距 6px、弹性换行密集排布，计数挪到右上角气泡。
   注：计数气泡需要模板里有一个独立元素承载数字（见 publicpage.html 的
   <em class="taxonomy-count">），纯 CSS 无法从 "{{.Count}} 篇内容 →" 里
   只取数字；若不想动模板，把下面这条 `small { display:none }` 删掉即可回退成
   徽章内显示"N 篇内容 →"。 */
body.w2k#top .taxonomy-grid.is-tags {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: flex-start !important;
  gap: 0 !important;
  grid-template-columns: none !important;
  padding: 10px 12px !important;
}
body.w2k#top .taxonomy-grid.is-tags .taxonomy-tile {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  width: auto !important;
  min-width: 105px !important;
  height: 32px !important;
  max-width: none !important;
  min-height: 0 !important;
  margin: 6px !important;
  padding: 0 10px !important;
  gap: 4px !important;
  position: relative !important;
  overflow: visible !important;
}
/* 名称里已带 "#" 前缀，去掉继承来的文件夹图标，避免"标签挂文件夹"的错位语义 */
body.w2k#top .taxonomy-grid.is-tags .taxonomy-tile::before {
  display: none !important;
}
body.w2k#top .taxonomy-grid.is-tags .taxonomy-tile strong {
  font-size: 12px !important;
  font-weight: 400 !important;
  white-space: nowrap !important;
  color: var(--text) !important;
}
body.w2k#top .taxonomy-grid.is-tags .taxonomy-tile small {
  display: none !important;
}
body.w2k#top .taxonomy-grid.is-tags .taxonomy-tile .taxonomy-count {
  position: absolute !important;
  top: -5px !important;
  right: -5px !important;
  background-color: #4a5568 !important;
  color: #ffffff !important;
  font-size: 10px !important;
  line-height: 1 !important;
  padding: 1px 5px !important;
  border-radius: 10px !important;
  font-family: Consolas, "Liberation Mono", Menlo, "Courier New", monospace !important;
  font-variant-numeric: tabular-nums;
}

/* ---------- 10.5 播放器：非选中行 Hover = 柔和灰底黑字 ---------- */
/* 实测复现：flat 层 `.paper-audio-track:not(.is-active):not(.is-playing):hover`
   = (1,5,1) 把底色设成 --flat-hover = rgba(255,255,255,.62)（在纯白歌单上≈白），
   而主题 `.paper-audio-track:hover` / `:hover *` 把文字设成 --select-text = #fff，
   flat 那条又没重置字色 → 悬停整行"白底白字"，歌名与序号全隐身。
   这里底色与字色一起钉死：柔灰底 + 墨黑字；只有正在播放的选中项保持深蓝反白。 */
body.w2k#top .paper-audio-track:not(.is-active):not(.is-playing):hover,
body.w2k#top .paper-audio-track:not(.is-active):not(.is-playing):focus-visible {
  background-color: #e5e2da !important;
  color: #111111 !important;
  cursor: pointer !important;
}
body.w2k#top .paper-audio-track:not(.is-active):not(.is-playing):hover *,
body.w2k#top .paper-audio-track:not(.is-active):not(.is-playing):focus-visible * {
  color: #111111 !important;
}
/* 旧别名（.music-playlist-box li）一并接住，避免外部片段用老类名时漏修 */
body.w2k#top .music-playlist-box li:not(.active):not(.playing):hover {
  background-color: #e5e2da !important;
  color: #111111 !important;
}
body.w2k#top .music-playlist-box li:not(.active):not(.playing):hover * {
  color: #111111 !important;
}
html.dark body.w2k#top .paper-audio-track:not(.is-active):not(.is-playing):hover {
  background-color: #3a3a3a !important;
  color: #e2e8f0 !important;
}
html.dark body.w2k#top .paper-audio-track:not(.is-active):not(.is-playing):hover * {
  color: #e2e8f0 !important;
}
/* 选中 / 正在播放的深蓝反白契约由第 16 轮维护（桌面暗色 #3a506b），
   本节的移动端暗色皮肤在 10.8 里单独覆盖为 #1e3a5f，不动桌面。 */

/* ---------- 10.6 归档工作区：去掉刺眼死白 ---------- */
/* 主题里 --window 在浅色下就是 #ffffff，归档年份框与每一行都是纯白，
   大面积反光。改成工控浅灰 #f7f6f2 + 单线分割 #e4e0d7。 */
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .archive-year-list {
  background-color: #f7f6f2 !important;
}
/* ⚠ 第 21 轮修正：行底色必须带 :not(:hover)。
   第 20 轮这里写成无条件 !important（权重 (1,8,1)），压过了主题的
   `.archive-timeline-item:hover{background:var(--select-bg)!important}` (1,3,1)，
   结果悬停时底色不再变深、文字却被 `.archive-timeline-item:hover *` 刷成纯白 ——
   整行标题变成浅底白字、直接看不见（与分类卡、播放器行同一类病，只是这次是自己踩的）。
   悬停态交还给主题的深灰选中底色，浅灰只负责静态观感。 */
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .archive-timeline-item:not(:hover) {
  background-color: #f7f6f2 !important;
}
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .archive-timeline-item {
  border-bottom: 1px solid #e4e0d7 !important;
}
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .archive-timeline-item:last-child {
  border-bottom: 0 !important;
}
/* 年份框本体（含年份标题条）也统一到同一族底色，避免"白框套灰行"的花边 */
html:not(.dark) body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .archive-year {
  background-color: #f7f6f2 !important;
  border-color: #ddd9d0 !important;
  box-shadow: none !important;
}

/* ---------- 10.7 正文顶部：消除面包屑与正文交界的横向亮线 ---------- */
/* 两道线叠在交界处：① .w2k-pane-doc 的上边框（紧贴面包屑下沿）
   ② 正文阅读卡自己的上边框（#article-content）。两条都去掉，
   让面包屑条带色差本身承担分隔，正文从窗口内沿整片展开。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .w2k-pane-doc {
  border-top-width: 0 !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(#article-content, .prose-paper, .reading-content) {
  border-top-width: 0 !important;
  box-shadow: none !important;
}

/* ---------- 10.8 移动端暗黑播放器：单线扁平化 ---------- */
@media (max-width: 767px) {
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-audio-playlist {
    background-color: #1a1a1a !important;
    border: 1px solid #333333 !important;
    box-shadow: none !important;
  }
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-audio-track {
    background-color: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid #2a2a2a !important;
    min-height: 28px !important;
    color: #cbd5e1 !important;
  }
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-audio-track:last-child {
    border-bottom: 0 !important;
  }
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-audio-track.is-active,
      .paper-audio-track.is-playing) {
    background-color: #1e3a5f !important;
    color: #e2e8f0 !important;
    border-bottom-color: #1e3a5f !important;
  }
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-audio-track.is-active,
      .paper-audio-track.is-playing) * {
    color: #e2e8f0 !important;
  }
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-audio-track .paper-audio-index,
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-audio-track .paper-audio-track-artist {
    color: #94a3b8 !important;
  }
  /* 播放器外壳（控制台 + 歌单）在暗色下同样只留 1px 深线，去掉亮边与厚底 */
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-audio-player, .paper-audio-main,
      .paper-audio-control) {
    border-color: #333333 !important;
    box-shadow: none !important;
  }
  html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-audio-player {
    background-color: #1a1a1a !important;
  }
}

/* ==========================================================================
   11. 第二十一轮：面包屑去线、视频壳一体成型、控制器间距、归档胶囊悬停
   ========================================================================== */

/* ---------- 11.1 面包屑下沿：去掉那条贯穿线（保留 8px 呼吸） ---------- */
/* 第 20 轮已经拆掉 .w2k-pane-doc 的上边框与正文卡上边框，交界处最后剩下的
   就是面包屑自己的 border-bottom（--flat-toolbar-line 1px，实测 rgb(178,174,165)）。
   margin-bottom: 8px 是第 16 轮定的，这里一并钉住，避免被别的规则改掉。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .w2k-breadcrumb {
  border-bottom: 0 !important;
  margin-bottom: 8px !important;
}

/* ---------- 11.2 视频详情页：播放区一体成型 ---------- */
/* 主题把 .paper-video-shell 当"凹陷灰底播放区"：face 灰底 + 3px 内衬 + 四边明暗立体边，
   .paper-video-player 又自带一圈明暗边框 —— 叠起来就是播放器四周多余的暗色包裹线。
   视频区块整体交还给纯黑视窗：外壳去边去衬，播放器去边，四周只留正文留白分隔。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-video-shell, .reading-stage) {
  background-color: #000000 !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-video-player,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .paper-video-player :is(video, .art-video-player) {
  border: 0 !important;
  box-shadow: none !important;
  background-color: #000000 !important;
}

/* ---------- 11.3 音乐播放器：控制器与歌单之间的 8px 呼吸 ---------- */
/* 结构是 [.paper-audio-main 控制器] → [.win-groove 刻线] → [.paper-audio-playlist 歌单]，
   原来刻线上下都是 0：进度条与歌单首行都贴着刻线（压迫感）。
   这里控制器底边 8px、歌单顶边 8px，刻线正好落在中间。
   别名 .music-player-controls / .music-playlist-box 一并接住。
   （win2000.css 第 36.2 节给桌面分支的 6px 被本条以更高权重覆盖为 8px。） */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-audio-main, .music-player-controls) {
  margin-bottom: 8px !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-audio-playlist, .music-playlist-box) {
  margin-top: 8px !important;
}

/* ---------- 11.4 归档胶囊：悬停白字隐身修复 ---------- */
/* 主题里 .archive-timeline-item:hover * / .archive-item:hover * 把后代文字一律刷成
   --select-text(#ffffff)，而分类胶囊自己底色还是 --face(#d4d0c8)：
   白字压在浅灰上，悬停反而看不清（与第 20 轮修的分类卡、播放器行同一类病）。
   悬停时给胶囊换上工业深蓝底 + 纯白字 + 同色边框，取消过渡避免闪。
   权重说明：这里必须用**重复 id**（body.w2k#top#top）。
   第 7 节那条 `--hilight → var(--text)` 规则的 :is() 里含 #paper-audio-play-icon，
   整条是 (2,2,2)，而 .archive-category 正在它的名单里 —— 用单 id 写会拿到墨色，
   深蓝底上再压墨色字同样看不清。 */
body.w2k#top#top :is(.archive-timeline-item, .archive-item)
    :is(.archive-category, .archive-tag, .badge) {
  transition: none !important;
}
body.w2k#top#top :is(.archive-timeline-item, .archive-item):hover
    :is(.archive-category, .archive-tag, .badge) {
  background-color: #0a246a !important;
  color: #ffffff !important;
  border-color: #0a246a !important;
}

/* ==========================================================================
   12. 第二十二轮：目录树贴边、视频内衬、正文图片居左、细滚动条、
       歌单容量、右下角返回顶部悬浮键
   ========================================================================== */

/* ---------- 12.1 目录树节点：图标与左侧竖线拉开 ---------- */
/* 主题里 .w2k-tree-kids 有一条 dotted 竖向引导线，而其子节点只有
   `padding-left: 2px` —— 图标几乎贴在引导线上（暗色下尤其明显）。
   根节点/分组标题原本 4px，一并统一到 8px。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .w2k-tree-node,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .w2k-tree-summary,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top .w2k-tree-kids .w2k-tree-node {
  padding-left: 8px !important;
}

/* ---------- 12.2 视频播放区：内衬 8/10px 呼吸 ---------- */
/* 第 21 轮把视频外壳的灰框与描边整体去掉、改成纯黑一体成型；
   本轮在此基础上加内衬，让画面与底部全屏控制条不再顶死容器边缘。
   仍然 border: 0（不会把第 21 轮清掉的那圈线再请回来），内衬也是黑的。 */
body.w2k#top#top :is(.paper-video-shell, .reading-stage) {
  padding: 8px 10px !important;
  box-sizing: border-box !important;
}

/* ---------- 12.3 正文普通配图：居左对齐（原来 margin: 12px auto 居中） ---------- */
/* 选择器照抄 win2000.css 第 7246 行的排除名单（相册/播放器/下载卡/头像里的图不能被波及），
   只把水平外边距 auto → 0；用重复 id 压过那条 (1,9,3) 的规则。 */
body.w2k#top#top :is(.reading-content, .prose-paper, .prose, article.reading-article)
    img:not(.paper-photo-image):not(.gallery-img):not(.paper-gallery img):not(.paper-audio-player img):not(.paper-video-shell img):not(.paper-download-card img):not(.w2k-avatar img) {
  display: block !important;
  margin: 12px 0 !important;
  max-width: 100% !important;
  max-height: 70vh !important;
  object-fit: contain !important;
}

/* ---------- 12.4 代码面 / 系统报告：5px 极细横向滑动槽 ---------- */
/* 主题第 7 节给全站套了 Win98 滚动条皮肤：16px 粗 + 40 度点阵轨道 + 立体滑块 +
   两端 16×16 箭头按钮。代码块横向滚动时这条 16px 的槽非常抢戏，
   这里只对代码面/系统报告收成 5px 静态细槽（含按钮归零），其余滚动条保持 Win98 皮肤。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.reading-content, .prose-paper, .prose) pre::-webkit-scrollbar,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.system-report-block, .code-window)::-webkit-scrollbar {
  height: 5px !important;
  width: 5px !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.reading-content, .prose-paper, .prose) pre::-webkit-scrollbar-track,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.system-report-block, .code-window)::-webkit-scrollbar-track {
  background: transparent !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.reading-content, .prose-paper, .prose) pre::-webkit-scrollbar-thumb,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.system-report-block, .code-window)::-webkit-scrollbar-thumb {
  background-color: #b8b4ac !important;
  background-image: none !important;
  border: 0 !important;
  border-radius: 2px !important;
  box-shadow: none !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.reading-content, .prose-paper, .prose) pre::-webkit-scrollbar-button,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.system-report-block, .code-window)::-webkit-scrollbar-button {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
}
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.reading-content, .prose-paper, .prose) pre::-webkit-scrollbar-corner,
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.system-report-block, .code-window)::-webkit-scrollbar-corner {
  background: transparent !important;
}
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.reading-content, .prose-paper, .prose) pre::-webkit-scrollbar-thumb,
html.dark body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.system-report-block, .code-window)::-webkit-scrollbar-thumb {
  background-color: #444444 !important;
}
/* Firefox 只能给到 thin（≈6px）+ 指定颜色，语义等价 */
@supports not selector(::-webkit-scrollbar) {
  body.w2k#top :is(.reading-content, .prose-paper, .prose) pre,
  body.w2k#top :is(.system-report-block, .code-window) {
    scrollbar-width: thin;
    scrollbar-color: #b8b4ac transparent;
  }
  html.dark body.w2k#top :is(.reading-content, .prose-paper, .prose) pre,
  html.dark body.w2k#top :is(.system-report-block, .code-window) {
    scrollbar-color: #444444 transparent;
  }
}

/* ---------- 12.5 歌单容量：默认 18 条（468px）后内部滚动 ---------- */
/* 主题原值 max-height: 260px（约 12 条）。行高 26px（PC）/28px（移动端暗色），
   18 条 ≈ 468px。别名 .music-playlist-box 一并接住。 */
body.w2k.w2k.w2k.w2k.w2k.w2k.w2k#top :is(.paper-audio-playlist, .music-playlist-box) {
  max-height: 468px !important;
  overflow-y: auto !important;
}

/* ---------- 12.6 右下角「回到顶部」悬浮键 ---------- */
/* 结构与样式分层：节点由 w2kShellClose 输出，是 .w2k-window 的最后一个子元素
   （第 23 轮从"窗口外面的兄弟节点"挪进来，见 §13.1），
   默认 opacity:0 + pointer-events:none 完全不可见不可点；
   滚过 300px 由 win2000.js 加 .is-visible 淡入。 */
body.w2k#top#top #w2k-totop {
  position: fixed !important;          /* 窄/中屏：浮在窗口内侧右下角（§13.1 有外侧模式） */
  right: 24px !important;
  bottom: 32px !important;
  left: auto !important;
  z-index: 50 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 28px !important;
  height: 28px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 1px solid #9e9a92 !important;
  border-radius: 0 !important;
  background-color: #dcd8cf !important;
  background-image: none !important;
  box-shadow: none !important;
  color: #111111 !important;
  font-family: var(--w2k-font, Segoe UI, Tahoma, sans-serif) !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s ease, background-color .12s ease;
}
body.w2k#top#top #w2k-totop.is-visible {
  opacity: 1;
  pointer-events: auto;
}
body.w2k#top#top #w2k-totop:hover {
  background-color: #edeae1 !important;
  border-color: #7a766e !important;
}
body.w2k#top#top #w2k-totop:active {
  transform: none !important;
}
html.dark body.w2k#top#top #w2k-totop {
  background-color: #2c2c2c !important;
  border-color: #3a3a3a !important;
  color: #dcdcdc !important;
}
html.dark body.w2k#top#top #w2k-totop:hover {
  background-color: #3a3a3a !important;
  border-color: #4a4a4a !important;
}
/* 尊重"减少动态效果"：淡入淡出改为瞬时 */
@media (prefers-reduced-motion: reduce) {
  body.w2k#top#top #w2k-totop { transition: none; }
}

/* ==========================================================================
   13. 第二十三轮：「返回顶部」吸附主视窗右外侧、视频播放器缩宽居中
   ========================================================================== */

/* ---------- 13.1 悬浮键吸附到主视窗右外边框 ---------- */
/* 前置条件（DOM）：按钮必须是 .w2k-window 的子元素，且 .w2k-window 要能作为
   定位祖先。节点已在模板 w2kShellClose 里放进窗口内部；这里补 position: relative。
   安全性已实测：list / post 两页共 11 个 absolute/fixed 元素的矩形在加上这条后
   一个都没动（表格行热区挂在 <tr> 上、相册封面挂在卡片上、弹层挂在过滤栏上），
   也没有产生横向溢出。 */
body.w2k#top .w2k-window {
  position: relative !important;
}

/* 窗口上限 1400px（--w2k-window-max）+ 桌面左右各 18px 内衬 = 1468px，
   再给按钮留 34px（28 宽 + 6 间隙）→ 视口 ≥1470px 时窗口右侧才真的有空位。
   低于这个宽度就用 §12.6 的"贴窗口内侧右下角"，避免按钮被挤出视口、
   在页面上拉出一条横向滚动条。 */
@media (min-width: 1470px) {
  body.w2k#top#top #w2k-totop {
    /* 用 sticky 而不是 absolute：absolute 会把按钮钉死在"窗口最底部"，
       只有滚到页面底部才看得见；sticky 让它一路贴着视口下沿、悬在窗口右外侧，
       滚到页面底部时又正好停在状态栏旁边（= 需求里的"对齐视窗底部"）。 */
    position: sticky !important;
    left: auto !important;
    right: auto !important;
    bottom: 2px !important;
    align-self: flex-end !important;      /* 作为 flex 子项先靠到内容右缘 */
    margin-right: -34px !important;       /* 再整体右移：紧贴边框线外 6px */
    margin-left: 0 !important;
  }
}

/* 想改成"绝对钉在窗口右下角"（只有滚到底部才看得到），把上面那段换成：
   position: absolute !important; left: 100% !important; right: auto !important;
   margin-left: 6px !important; bottom: 2px !important; */

/* ---------- 13.2 视频播放器：缩宽居中，做回"内嵌显示器" ---------- */
/* 真类名 .paper-video-shell（同带 .reading-stage），不是 .video-detail-container /
   #video-player-container。第 21 轮去掉的是那圈灰框线、第 22 轮补了 8/10px 黑色内衬，
   本轮再把宽度收到 88% 并水平居中：两侧留出均匀的工业灰底过渡带，
   外壳重新给一道 1px #b8b4ac 细线（纯黑视窗 + 细边框 = 内嵌显示器）。 */
body.w2k#top#top :is(.paper-video-shell, .reading-stage) {
  max-width: 88% !important;
  margin: 14px auto !important;
  border: 1px solid #b8b4ac !important;
  background-color: #000000 !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
}
html.dark body.w2k#top#top :is(.paper-video-shell, .reading-stage) {
  border-color: #3a3a3a !important;
}
/* 播放器本体：只去掉边框/投影、保持纯黑。
   ⚠ 不要在这里写 width/height：app.css 在移动端刻意给 .paper-video-player 设了
     `height: clamp(255px, 68vw, 295px) !important; min-height: 255px !important;
      aspect-ratio: auto !important`（防止 artplayer 载入前塌陷），
     任何 height/width 覆盖都会把这套移动端高度顶掉。
   真正需要"铺满 + 保持比例"的是里面的 <video> 元素，见下一条。 */
body.w2k#top#top .paper-video-player {
  border: 0 !important;
  box-shadow: none !important;
  background-color: #000000 !important;
}
/* 内层 <video>：铺满宽度、按自身比例算高（16:9 时正好贴满外壳；
   移动端外壳被 clamp 到 255~295px 时上下留黑边，正是纯黑视窗该有的样子）。
   .art-video-player 那一层由 artplayer 自己设尺寸，这里不动它，避免控制条错位。 */
body.w2k#top#top .paper-video-player video {
  width: 100% !important;
  height: auto !important;
  display: block !important;
  border: 0 !important;
  box-shadow: none !important;
  background-color: #000000 !important;
}