/* P3-15 (2026-11-12): 深色模式 + 字号调节 + 页脚联系方式补强。
   机制: CSS 变量 + html.qj-dark 类切换, 无第三方库。
   - 默认跟随系统: <head> 内联 bootstrap 脚本(见 qjf_shared_css() 与 wp_head 注入)
     在首绘前读 localStorage(qj-theme) 或 matchMedia('(prefers-color-scheme: dark)'),
     无存储选择时跟随系统, 有存储选择时以存储为准; 无 JS 时保持浅色(安全默认)。
   - 持久化: localStorage 键 qj-theme (dark|light)、qj-font-size (small|medium|large),
     逻辑见 assets/js/a11y.js, 控件在顶栏(深色开关)与抽屉(显示设置区)。
   - 字号: body 级 zoom 缩放(legacy CSS 全是 px, 改 html 字号对 px 无效)。
     small 0.92 / medium 1 / large 1.12; Tailwind rem 部分随 zoom 一起缩放, 不另设字号。
   - 作用域: qijiku-front 自有 chrome(顶栏/抽屉/搜索条/页脚/自带模板模块)。
     Puock 文章正文为主题自有样式, 本文件给 body/.puock-bg/.entry-content 与尾部组件
     一组深色覆盖(真黑文章, 2026-11-13 用户定: 卡片改深色、文字改浅色)。
   加载位置: qjf_shared_css() 末位(自带模板)、wp_enqueue_scripts(子页面),
   在 bundle.css/tailwind.css 之后, 变量与覆盖才能生效。 */
:root {
  --qj-surface: #FFFFFF;
  --qj-surface-2: #F5F7FA;
  --qj-skeleton: #E9EDF3;
  --qj-ask-entry-bg: linear-gradient(135deg, #EEF3FE 0%, #FFF0F3 100%);
  --qj-ask-chat-bg: #F5F7FB;
  --qj-notice-bg: #FFF7E0;
  --qj-notice-bd: #F3E3B3;
  --qj-notice-ink: #6B4E12;
}
html.qj-dark {
  --qj-bg: #10141B;
  --qj-surface: #1A2029;
  --qj-surface-2: #232B37;
  --qj-skeleton: #232B37;
  --qj-ink: #E8ECF2;
  --qj-gray: #9AA7B8;
  --qj-line: #2B3644;
  --qj-mist: #1E2A3D;
  --qj-shadow-card: 0 8px 24px rgba(0, 0, 0, 0.35);
  --qj-ask-entry-bg: linear-gradient(135deg, #1B2740 0%, #2A1E2E 100%);
  --qj-ask-chat-bg: #161C26;
  --qj-notice-bg: #2A2113;
  --qj-notice-bd: #4A3A17;
  --qj-notice-ink: #E8C86A;
  color-scheme: dark;
}
html.qj-dark body {
  background: var(--qj-bg);
  color: var(--qj-ink);
}
/* ---- 顶栏 / 抽屉 / 搜索条(白底硬编码面) ---- */
html.qj-dark .qj-topbar {
  background: var(--qj-surface);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
}
html.qj-dark .qj-nav > a,
html.qj-dark .qj-nav-drop > a,
html.qj-dark .qj-nav-drop-btn,
html.qj-dark .qj-search-ic,
html.qj-dark .qj-burger {
  color: var(--qj-ink);
}
html.qj-dark .qj-nav-sub {
  background: var(--qj-surface);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
}
html.qj-dark .qj-nav-sub a {
  color: var(--qj-ink);
}
html.qj-dark .qj-searchbar {
  background: var(--qj-surface);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}
html.qj-dark .qj-searchbar input,
html.qj-dark .qj-drawer-search input {
  background: var(--qj-surface-2);
  color: var(--qj-ink);
}
html.qj-dark .qj-drawer {
  background: var(--qj-surface);
}
html.qj-dark .qj-drawer-x {
  color: var(--qj-gray);
}
html.qj-dark .qj-task {
  background: var(--qj-surface);
  border-color: var(--qj-line);
}
html.qj-dark .qj-task-go {
  color: var(--qj-line);
}
html.qj-dark .qj-drawer-gzh {
  background: var(--qj-mist);
}
/* 组合锁 logo 是深色字透明底, 深色顶栏/抽屉下反色后可读(蓝标经 hue-rotate 回到蓝色系) */
html.qj-dark .qj-topbar .qj-logo-combined,
html.qj-dark .qj-drawer-head .qj-logo-combined {
  filter: invert(1) hue-rotate(180deg);
}
/* ---- 自带模板模块(白底硬编码面) ---- */
html.qj-dark .qj-mod,
html.qj-dark .qj-card,
html.qj-dark .qj-topic-card,
html.qj-dark .qj-topic-arrow,
html.qj-dark .qj-follow-card,
html.qj-dark .qjs-item,
html.qj-dark .qjs-empty,
html.qj-dark .qjs-pager a,
html.qj-dark .qjs-btn,
html.qj-dark .qjs-filters,
html.qj-dark .sw-hot-card,
html.qj-dark .sw-card,
html.qj-dark .sw-frow button {
  background: var(--qj-surface);
  border-color: var(--qj-line);
}
html.qj-dark .qj-topic-feature {
  background: linear-gradient(135deg, #1B2740 0%, #18202E 100%);
  border-color: var(--qj-line);
}
html.qj-dark .qj-topic-feature-ic,
html.qj-dark .qj-topic-feature-tag,
html.qj-dark .qj-topic-feature-sit {
  background: var(--qj-surface);
  border-color: var(--qj-line);
}
html.qj-dark .qj-topic-card-ic {
  background: var(--qj-surface-2);
}
html.qj-dark .qj-topic-card-badge,
html.qj-dark .qj-topic-card-sit {
  background: var(--qj-mist);
}
html.qj-dark .qj-topic-scroll-fade {
  background: linear-gradient(to right, rgba(26, 32, 41, 0), var(--qj-surface) 85%);
}
html.qj-dark .qj-topic-chip {
  background: var(--qj-mist);
  border-color: var(--qj-line);
  color: var(--qj-ink);
}
html.qj-dark .qj-notice {
  background: var(--qj-notice-bg);
  border-color: var(--qj-notice-bd);
  color: var(--qj-notice-ink);
}
html.qj-dark .qj-follow-close {
  background: var(--qj-surface);
  color: var(--qj-ink);
}
html.qj-dark .qj-searchbar input,
html.qj-dark .qjs-box input,
html.qj-dark .qj-hero-search input,
html.qj-dark .qjs-inputwrap input,
html.qj-dark .sw-search input {
  background: var(--qj-surface-2);
  color: var(--qj-ink);
}
html.qj-dark .qjs-hero {
  background: linear-gradient(135deg, var(--qj-mist) 0%, var(--qj-surface) 70%);
}
html.qj-dark .qjs-item-gzh {
  background: #3A2F10;
  color: #E8C86A;
}
html.qj-dark .qj-tabsbar {
  background: var(--qj-surface-2);
}
html.qj-dark .qj-entry:hover {
  background: var(--qj-mist);
}
/* ---- 问小管家(白底硬编码面) ---- */
html.qj-dark .qj-ask-entry {
  background: var(--qj-ask-entry-bg);
  border-color: #2E3D5C;
}
html.qj-dark .qj-ask-entry-greet,
html.qj-dark .qj-ask-chat-head-name,
html.qj-dark .qj-ask-chat-hot-title {
  color: var(--qj-ink);
}
html.qj-dark .qj-ask-entry-avatar,
html.qj-dark .qj-ask-entry-chip,
html.qj-dark .qj-ask-entry-input,
html.qj-dark .qj-ask-chat-head,
html.qj-dark .qj-ask-chat-hot,
html.qj-dark .qj-ask-chat-hot-chip,
html.qj-dark .qj-ask-chat-bubble,
html.qj-dark .qj-ask-chat-card {
  background: var(--qj-surface);
  border-color: var(--qj-line);
  color: var(--qj-ink);
}
html.qj-dark .qj-ask-chat {
  background: var(--qj-ask-chat-bg);
  border-color: var(--qj-line);
}
html.qj-dark .qj-ask-chat-close {
  background: var(--qj-surface-2);
  color: var(--qj-ink);
}
html.qj-dark .qj-ask-chat-hot-link {
  background: var(--qj-mist);
  border-color: var(--qj-line);
}
/* 2026-11-13 Worker A (P0-2)：软件库筛选卡与 A–Z 栏深色样式——此前两者用硬编码白底，
   深色下 --qj-ink/--qj-gray 已变亮色，白底亮字近乎看不见（实测底 rgb(255,255,255)、字 rgb(232,236,242)）。
   另补排序/最近看过按钮、计数徽标与平台 pill 的深色色值（#1250D6 在深底上不亮，改 #8FB4F8）。 */
html.qj-dark .sw-filterbar {
  background: var(--qj-surface);
  border-color: var(--qj-line);
}
html.qj-dark .sw-az {
  background: rgba(26, 32, 41, .96);
  box-shadow: 0 4px 16px rgba(0, 0, 0, .35);
}
html.qj-dark .sw-sort button,
html.qj-dark .sw-views button {
  background: var(--qj-surface);
  border-color: var(--qj-line);
  color: var(--qj-ink);
}
html.qj-dark .sw-q-clear {
  background: var(--qj-surface-2);
  color: var(--qj-gray);
}
html.qj-dark .sw-fb-n,
html.qj-dark .sw-pf,
html.qj-dark .sw-dl.on {
  color: #8FB4F8;
}
html.qj-dark .sw-dl {
  background: var(--qj-surface-2);
}
html.qj-dark .sw-frow button i,
html.qj-dark .sw-fchips button i,
html.qj-dark .sw-views button .n {
  background: var(--qj-surface-2);
  color: var(--qj-gray);
}
/* ---- 页脚 ---- */
html.qj-dark .qj-legal-row {
  border-color: var(--qj-line);
  color: var(--qj-gray);
}
/* P3-15: 页脚第二联系渠道——站内留言入口(/contact/ 真实页面, 非新编联系方式) */
.qj-f-contact-link {
  display: inline-block;
  margin-top: 8px;
  font-size: 12px;
  color: #C7D0DE;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.qj-f-contact-link:hover {
  color: #FFFFFF;
}
/* ---- Puock 文章页真黑(2026-11-13, 用户定: 文章也全黑) ----
   2026-11-13 实测: 夜间模式文章页首屏 82% 白、仅 15% 黑, 用户指"就屏幕边是黑的"。
   根因: 文章卡片 .p-block 是 Puock 硬编码白底, 手机上卡片占满屏, 深色只剩顶栏与
   面包屑边; 白卡设计只在桌面端成立(居中卡片+深色边距), 手机上不成立。
   修法: 卡片改深色、文字改回浅色(真黑文章)。1.59.1-1.59.3 的白卡口径(正文深字、
   td 浅底)至此作废, 本块以深色为准; pre 的深底 #282C34 在深卡上本来就对, 保留。
   结构注意: .entry-content 内除正文外还含尾部组件(关注卡/尾部卡/相关/评分/详情),
   h3 与链接须分开处理——正文 h3 是蓝字(改提亮蓝 #8FB4F8), 尾部 h3 嵌在
   .qjfad-card(白字蓝渐变)/.qja-card(深字白卡改深卡后改浅字)内, 用更高特异度覆盖。
   不动: 白底二维码是图片本身(扫码必需); 蓝渐变关注卡 .qjfad-card 与蓝底 h2
   白字在蓝上对比度正常; 行内 code 是粉字透明底, 深底上对比度约 5.1。 */
html.qj-dark body.qj-unified-nav .p-block {
  background-color: var(--qj-surface);
  border-color: var(--qj-line);
}
html.qj-dark body.qj-unified-nav .puock-bg {
  background-color: var(--qj-surface);
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .puock-text,
html.qj-dark body.qj-unified-nav .entry-content,
html.qj-dark body.qj-unified-nav .entry-content-box {
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .entry-content strong,
html.qj-dark body.qj-unified-nav .entry-content li {
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .entry-content h3 {
  color: #8FB4F8;
}
html.qj-dark body.qj-unified-nav .entry-content .qjfad-card h3 {
  color: #FFFFFF;
}
html.qj-dark body.qj-unified-nav .entry-content .qja-card-head h3 {
  /* article.css 用 !important 定了 #161A23, 此处必须同级 !important 才能压过 */
  color: var(--qj-ink) !important;
}
html.qj-dark body.qj-unified-nav .entry-content a {
  color: #8FB4F8;
}
html.qj-dark body.qj-unified-nav .entry-content .qjfad-card a {
  color: #FFFFFF;
}
html.qj-dark body.qj-unified-nav .entry-content .table td {
  background-color: var(--qj-surface-2);
  color: var(--qj-ink);
  border-color: var(--qj-line);
}
html.qj-dark body.qj-unified-nav .entry-content .table th {
  background-color: #1B2740;
  color: var(--qj-ink);
  border-color: var(--qj-line);
}
html.qj-dark body.qj-unified-nav .entry-content blockquote {
  background-color: var(--qj-surface-2);
  color: var(--qj-ink);
  border-color: var(--qj-line);
}
html.qj-dark body.qj-unified-nav .entry-content pre {
  background-color: #282C34 !important;
  color: #ABB2BF !important;
  border-color: #3A3F4B;
}
/* v1.59.4 (2026-11-13, 主窗并行合入): 浅色模式代码块同病——pre 是 hljs One Dark 配色(字 #ABB2BF)
   却配了浅底 #FAFAFA, 对比度 2.04 近乎看不清; hljs token 色按深底设计, 改深字会连带
   打乱高亮色, 故浅色下同样给深底 #282C34, 与深色模式同一对色, 对比度 6.57。
   本规则不分深浅全量生效, 深色规则原样保留(同值, 无冲突、无回归)。 */
body.qj-unified-nav .entry-content pre {
  background-color: #282C34 !important;
  color: #ABB2BF !important;
  border-color: #3A3F4B;
}
/* 尾部组件: 尾部卡/详情卡改深色, 描述卡改深底, 其内文字改浅色 */
html.qj-dark body.qj-unified-nav .qja-card,
html.qj-dark body.qj-unified-nav .qj-detail {
  background-color: var(--qj-surface);
  border-color: var(--qj-line);
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .qjdsc-card {
  background-color: var(--qj-surface-2);
  border-color: var(--qj-line);
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .qj-related {
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .qj-art-tail,
html.qj-dark body.qj-unified-nav .qj-art-fav-row {
  color: var(--qj-gray);
}
/* 取链卡 .qj-getcard(qj-article-pilot 内联样式, 本文件用更高特异度覆盖) */
html.qj-dark body.qj-unified-nav .qj-getcard {
  background: #1B2740;
  border-color: #2E3D5C;
}
html.qj-dark body.qj-unified-nav .qj-getcard-head,
html.qj-dark body.qj-unified-nav .qj-getcard-body b {
  color: #8FB4F8;
}
html.qj-dark body.qj-unified-nav .qj-getcard-body,
html.qj-dark body.qj-unified-nav .qj-getcard-qr span,
html.qj-dark body.qj-unified-nav .qj-getcard-off {
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .qj-getcard-off a {
  color: #8FB4F8;
}
html.qj-dark body.qj-unified-nav .qj-getcard-time {
  background: var(--qj-surface-2);
  color: #8FB4F8;
  border-color: #2E3D5C;
}
html.qj-dark body.qj-unified-nav .qj-getcard-qr {
  background: var(--qj-surface-2);
  border-color: #2E3D5C;
}
html.qj-dark body.qj-unified-nav .qj-pwd {
  background: var(--qj-surface-2);
  color: #8FB4F8;
  border-color: #2E3D5C;
}
/* 评分卡 .qj-rate(ratings.css 浅底, 本文件覆盖) */
html.qj-dark body.qj-unified-nav .qj-rate {
  background: var(--qj-surface);
  border-color: var(--qj-line);
}
html.qj-dark body.qj-unified-nav .qj-rate-title {
  color: var(--qj-ink);
  /* 该标题是 H2, 自带浅底 #EEF3FE, 须清掉才露出深色卡底 */
  background-color: transparent;
}
html.qj-dark body.qj-unified-nav .qj-rate-vote {
  background: var(--qj-surface-2);
  border-color: var(--qj-line);
  color: var(--qj-ink);
}
html.qj-dark body.qj-unified-nav .qj-rate-vote:disabled {
  background: var(--qj-surface-2);
  color: var(--qj-gray);
}
/* ---- 字号调节: body 级 zoom(见文件头说明) ---- */
html.qj-font-sm body {
  zoom: 0.92;
}
html.qj-font-lg body {
  zoom: 1.12;
}
/* ---- 深色开关按钮(顶栏, 与放大镜/汉堡同款) ---- */
.qj-theme-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: 0;
  padding: 12px;
  cursor: pointer;
  color: #2A3542;
  flex: none;
}
.qj-theme-btn svg {
  width: 20px;
  height: 20px;
  display: block;
}
.qj-theme-btn:hover {
  color: var(--qj-primary);
}
.qj-theme-btn:focus-visible {
  outline: 2px solid var(--qj-primary);
  outline-offset: 2px;
  border-radius: 6px;
}
.qj-theme-btn .qj-ic-sun {
  display: none;
}
html.qj-dark .qj-theme-btn .qj-ic-moon {
  display: none;
}
html.qj-dark .qj-theme-btn .qj-ic-sun {
  display: block;
}
html.qj-dark .qj-theme-btn {
  color: var(--qj-ink);
}
/* ---- 抽屉显示设置区 ---- */
.qj-drawer-a11y {
  border-top: 1px solid var(--qj-line);
  padding: 12px 0 2px;
  margin: 0 0 12px;
}
.qj-drawer-a11y-t {
  display: block;
  font-size: 12px;
  font-weight: 700;
  color: var(--qj-gray);
  letter-spacing: 1px;
  margin-bottom: 10px;
}
.qj-a11y-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
  font-size: 13px;
  color: var(--qj-ink);
}
.qj-a11y-toggle {
  border: 1px solid var(--qj-line);
  background: var(--qj-mist);
  color: var(--qj-primary-dark);
  border-radius: 999px;
  padding: 6px 14px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}
.qj-a11y-toggle[aria-pressed="true"] {
  background: var(--qj-primary);
  border-color: var(--qj-primary);
  color: #FFFFFF;
}
.qj-font-seg {
  display: inline-flex;
  border: 1px solid var(--qj-line);
  border-radius: 999px;
  overflow: hidden;
}
.qj-font-seg button {
  border: 0;
  background: var(--qj-surface);
  color: var(--qj-ink);
  font-size: 13px;
  font-weight: 700;
  padding: 6px 12px;
  cursor: pointer;
}
.qj-font-seg button + button {
  border-left: 1px solid var(--qj-line);
}
.qj-font-seg button[aria-pressed="true"] {
  background: var(--qj-primary);
  color: #FFFFFF;
}
