/* ==========================================================================
   GDNote 超强暗色（Ultralist）覆盖层 (dark-ultralist.css)
   --------------------------------------------------------------------------
   背景：普通暗色层 dark.css 只能通过 CSS 规则覆盖"类名"，而页面里存在
   大量通过内联 style="background: ..." / style="background-color: ..."
   硬编码的自定义背景色（渐变卡片、pre 代码块、公告区、危险卡等）。
   内联样式优先级高于选择器，普通 CSS（即使带 !important 之外的选择器
   组合）无法覆盖它们——除非声明带 !important，且 !important 的优先级
   高于内联（非 !important）样式。因此本文件统一用 !important 强制压暗。

   启用条件：<html class="ultralist"> 且 <body class="dark-mode">。
   由 dark-ultralist.js 在用户开启设置时给 <html> 打上 ultralist 类，
   并在暗色模式下真正生效。未开启 / 亮色模式下，本文件无任何效果。

   顺序约定（重要）：更具体的"语义规则"（渐变、危险红、公告、pre、
   遮罩放行）放在前；通用的 .ultralist-tamed 兜底放在最后，并用
   :where() 把它降为零优先级，这样即使语义规则写在更前面，也能覆盖
   这条兜底（级联中零优先级的声明可被任意非零规则覆盖）。
   ========================================================================== */

/* ---------------------------------------------------------------------------
   1. 浅色渐变信息卡：把亮色渐变压成暗色渐变（保留层次，不拍平）
   ---------------------------------------------------------------------------
   关键：渐变是否转换由 dark-ultralist.js 判断——只有"平均亮度偏亮"
   的渐变才会被打上 .ultralist-gradient-tamed；原本就是深色/接近黑的
   渐变会被打 .ultralist-keep 放行，保持原样（避免"本就是黑却仍被改黑"）。
   这里只对 .ultralist-gradient-tamed 生效，颜色按视觉语义细分。
   这些卡片常见写法：style="background:linear-gradient(90deg,#e0eaff,#f5f7fa)"
---------------------------------------------------------------------------- */
/* 通用浅色渐变 -> 暗蓝渐变 */
html.ultralist body.dark-mode .ultralist-gradient-tamed {
  background:
    linear-gradient(90deg, rgba(110, 168, 254, 0.14) 0%, rgba(31, 34, 35, 1) 100%) !important;
  color: var(--dark-text, #e8e6e3) !important;
}

/* 红色系警示渐变（js-warning 等浅红底） -> 暗红渐变 */
html.ultralist body.dark-mode .ultralist-gradient-tamed[style*="ffebee"],
html.ultralist body.dark-mode .ultralist-gradient-tamed[style*="fff5f5"],
html.ultralist body.dark-mode .ultralist-gradient-tamed[style*="ff5252"] {
  background:
    linear-gradient(90deg, rgba(234, 134, 143, 0.16) 0%, rgba(31, 34, 35, 1) 100%) !important;
  border-color: var(--dark-danger, #ea868f) !important;
}

/* 黄色系警示渐变（2FA guest、实验性） -> 暗黄渐变 */
html.ultralist body.dark-mode .ultralist-gradient-tamed[style*="fffbe0"],
html.ultralist body.dark-mode .ultralist-gradient-tamed[style*="ffe066"] {
  background:
    linear-gradient(90deg, rgba(199, 155, 45, 0.22) 0%, rgba(31, 34, 35, 1) 100%) !important;
  border-color: var(--dark-warning, #ffda6a) !important;
}

/* ---------------------------------------------------------------------------
   2. 危险红卡片（account_manage 等 style="background:#dc3545"）：
   保留红色语义，但压暗并给出可读文字
---------------------------------------------------------------------------- */
html.ultralist body.dark-mode [style*="dc3545"] {
  background-color: rgba(234, 134, 143, 0.16) !important;
  background-image: none !important;
  color: var(--dark-danger, #ea868f) !important;
  border-color: var(--dark-danger, #ea868f) !important;
}

/* ---------------------------------------------------------------------------
   3. 公告 / 代码块等使用内联实色背景的元素
---------------------------------------------------------------------------- */
/* #bulletin-text 等在暗色下露出的浅绿底 */
html.ultralist body.dark-mode #bulletin-text,
html.ultralist body.dark-mode [style*="e8f3ee"],
html.ultralist body.dark-mode [style*="f0f4f0"] {
  background-color: var(--dark-bg-raised, #1f2223) !important;
  color: var(--dark-text, #e8e6e3) !important;
}

/* <pre> 代码输出框（response.html 等 style="background:#f8f9fa"） */
html.ultralist body.dark-mode pre[style],
html.ultralist body.dark-mode [style*="f8f9fa"] {
  background-color: var(--dark-bg-inset, #151718) !important;
  color: var(--dark-text, #e8e6e3) !important;
  border-color: var(--dark-border, #3a3d3f) !important;
}

/* ---------------------------------------------------------------------------
   4. 半透明覆盖层 / 遮罩 / 原本深色背景：由 JS 标为 .ultralist-keep 放行
   这类元素保持原始样式（含"本就是深色/半透明"的渐变与遮罩）。注意：
   通用兜底 [style] 规则不设置背景，因此这里也不必设置背景，避免覆盖
   元素原有的内联背景/渐变；仅让文字跟随继承，维持"放行原样"。
---------------------------------------------------------------------------- */
html.ultralist body.dark-mode .ultralist-keep,
html.ultralist body.dark-mode .ultralist-keep[style] {
  color: inherit !important;
}

/* ---------------------------------------------------------------------------
   4b. Ultralist 下把"亮色实底的彩色 badge/背景"全部转为 outline 描边样式
   背景：整片亮色实底（bg-primary/success/danger/warning/info/...）在暗色下
   过于刺眼；若不经语义规则处理，会落到通用兜底 .ultralist-tamed 被压成
   灰扑扑的色块。因此 Ultralist 把这些 .bg-* 统一转成"透明底 + 彩色描边 +
   彩色文字"的 outline 风格（类似 bg-outline-primary / bg-outline-danger），
   既保留语义又彻底避免刺眼。
   colour 对照：primary→蓝、secondary→灰、success→绿、danger→红、
   warning→黄、info→青、light→浅灰、dark→淡色文字。
   颜色全部取自 dark.css 的 --dark-* 语义变量（含回退值）。
---------------------------------------------------------------------------- */
html.ultralist body.dark-mode .bg-primary,
html.ultralist body.dark-mode .badge.bg-primary {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-primary, #6ea8fe) !important;
  color: var(--dark-primary, #6ea8fe) !important;
}
/* 注意：.bg-secondary / .bg-light 在 dark.css 中有一条带较长 :not() 排除链
   的"中性面"规则（把非 badge/btn 的它们换成浮起色/覆盖色）。为避免其抢
   背景，此处用相同的 :not() 链镜像提升特异性；因本文件后加载，同特异性
   下本规则胜出，从而在 Ultralist 下真正转为 outline。 */
html.ultralist body.dark-mode .bg-secondary:not(.card-header):not(.card-footer):not(.navbar):not(.badge):not(.btn):not(.progress-bar),
html.ultralist body.dark-mode .badge.bg-secondary {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-secondary, #8b959e) !important;
  color: var(--dark-secondary, #8b959e) !important;
}
html.ultralist body.dark-mode .bg-success,
html.ultralist body.dark-mode .badge.bg-success {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-success, #75b798) !important;
  color: var(--dark-success, #75b798) !important;
}
html.ultralist body.dark-mode .bg-danger,
html.ultralist body.dark-mode .badge.bg-danger {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-danger, #ea868f) !important;
  color: var(--dark-danger, #ea868f) !important;
}
html.ultralist body.dark-mode .bg-warning,
html.ultralist body.dark-mode .badge.bg-warning {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-warning, #ffda6a) !important;
  color: var(--dark-warning, #ffda6a) !important;
}
html.ultralist body.dark-mode .bg-info,
html.ultralist body.dark-mode .badge.bg-info {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-info, #6edff6) !important;
  color: var(--dark-info, #6edff6) !important;
}
html.ultralist body.dark-mode .bg-light:not(.card-header):not(.card-footer):not(.navbar):not(.alert),
html.ultralist body.dark-mode .badge.bg-light {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-light, #c3c6c9) !important;
  color: var(--dark-light, #c3c6c9) !important;
}
html.ultralist body.dark-mode .bg-dark,
html.ultralist body.dark-mode .badge.bg-dark {
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--dark-text, #e8e6e3) !important;
  color: var(--dark-text, #e8e6e3) !important;
}
/* 这些 outline badge/背景 内的 FontAwesome 图标跟随所在元素的彩色文字，
   避免它们仍显示为默认/白色而破坏 outline 的语义配色。 */
html.ultralist body.dark-mode .bg-primary [class*="fa"],
html.ultralist body.dark-mode .bg-secondary [class*="fa"],
html.ultralist body.dark-mode .bg-success [class*="fa"],
html.ultralist body.dark-mode .bg-danger [class*="fa"],
html.ultralist body.dark-mode .bg-warning [class*="fa"],
html.ultralist body.dark-mode .bg-info [class*="fa"],
html.ultralist body.dark-mode .bg-light [class*="fa"],
html.ultralist body.dark-mode .bg-dark [class*="fa"] {
  color: inherit !important;
}
/* 消除 badge 的 padding 圆角差异，让 outline 边框贴合 */
html.ultralist body.dark-mode .badge.bg-primary,
html.ultralist body.dark-mode .badge.bg-secondary,
html.ultralist body.dark-mode .badge.bg-success,
html.ultralist body.dark-mode .badge.bg-danger,
html.ultralist body.dark-mode .badge.bg-warning,
html.ultralist body.dark-mode .badge.bg-info,
html.ultralist body.dark-mode .badge.bg-light,
html.ultralist body.dark-mode .badge.bg-dark {
  border-radius: 0.375rem !important;
}

/* ---------------------------------------------------------------------------
   5. 通用兜底（放在最后，且 .ultralist-tamed 用 :where() 降为零优先级）
   - 所有带内联 style 的元素：文字 / 边框改暗（不设背景，避免拍平一切）
   - JS 标记的 .ultralist-tamed：作为最后防线，压暗那些没有任何语义规则
     命中的亮色实色背景。
   :where() 使 .ultralist-tamed 的优先级降至 0，因此前文任何针对具体
   内联色的语义规则（渐变、dc3545、bulletin、pre）都能覆盖它。
---------------------------------------------------------------------------- */
html.ultralist body.dark-mode [style]:not(.modal):not(.modal *):not(.modal-backdrop) {
  color: var(--dark-text, #e8e6e3) !important;
  border-color: var(--dark-border, #3a3d3f) !important;
  border-top-color: var(--dark-border, #3a3d3f) !important;
  border-bottom-color: var(--dark-border, #3a3d3f) !important;
  border-left-color: var(--dark-border, #3a3d3f) !important;
  border-right-color: var(--dark-border, #3a3d3f) !important;
}

/* 零优先级兜底：仅当没有其它规则命中该元素背景时才生效。
   排除 Bootstrap modal 体系，避免破坏 modal 过渡动画与蒙版。 */
html.ultralist body.dark-mode :where(.ultralist-tamed:not(.modal):not(.modal *):not(.modal-backdrop)) {
  background-color: var(--dark-bg-raised, #1f2223) !important;
  background-image: none !important;
  color: var(--dark-text, #e8e6e3) !important;
  border-color: var(--dark-border, #3a3d3f) !important;
}

/* ---------------------------------------------------------------------------
   6. 让颜色过渡更柔和，避免强制切换时生硬闪烁
   ---------------------------------------------------------------------------
   注意：这里绝不能用 `[style]` 选择器设置 transition，否则会覆盖 Bootstrap
   modal 的 transform 过渡（transition 简写会清空其它 transition-*），从而
   破坏模态框的打开/关闭动画。只对真正被强制压暗的 .ultralist-tamed 元素
   加背景色过渡，且排除 modal 体系。
---------------------------------------------------------------------------- */
html.ultralist body.dark-mode :where(.ultralist-tamed:not(.modal):not(.modal *):not(.modal-backdrop)) {
  transition: background-color 0.15s ease, color 0.15s ease;
}

/* ---------------------------------------------------------------------------
   7. FontAwesome 图标适配
   FontAwesome 4 的 .fa 不设默认 color，随父级继承。暗色下"白色/浅色"图标
   （text-white / text-light，常见于按钮、卡片标题）会显得刺眼，这里将其
   降为暗色下中性可读的颜色；而带语义色（text-primary/success/... 等）的
   图标保留彩色（由 dark.css 的 text-* 规则单独处理）。
---------------------------------------------------------------------------- */
/* 白色/浅色图标 -> 降为暗色中性文字 */
html.ultralist body.dark-mode i.text-white[class*="fa"],
html.ultralist body.dark-mode i.text-light[class*="fa"],
html.ultralist body.dark-mode span.text-white[class*="fa"],
html.ultralist body.dark-mode span.text-light[class*="fa"],
html.ultralist body.dark-mode font.text-white[class*="fa"],
html.ultralist body.dark-mode font.text-light[class*="fa"],
html.ultralist body.dark-mode [class*="fa "].text-white,
html.ultralist body.dark-mode [class*="fa "].text-light {
  color: var(--dark-text, #e8e6e3) !important;
}
/* 在深色实色背景（如 bg-primary 卡片）上的白色图标仍保持浅色，保证可读 */
html.ultralist body.dark-mode .bg-primary .text-white[class*="fa"],
html.ultralist body.dark-mode .bg-success .text-white[class*="fa"],
html.ultralist body.dark-mode .bg-danger .text-white[class*="fa"],
html.ultralist body.dark-mode .bg-info .text-white[class*="fa"],
html.ultralist body.dark-mode .bg-secondary .text-white[class*="fa"],
html.ultralist body.dark-mode .ultralist-keep .text-white[class*="fa"] {
  color: #f5f5f5 !important;
}

/* ==========================================================================
   说明
   --------------------------------------------------------------------------
   - 本文件仅当 <html class="ultralist"> 且 <body class="dark-mode"> 时生效。
   - 与 dark.css 的差异：dark.css 覆盖"类"；本文件专治"内联 style"。
   - 半透明 / 本身深色的遮罩会由 JS 标为 .ultralist-keep 被放行。
   - 若某元素被误伤，可临时在该元素加 class="ultralist-keep" 豁免。
   ========================================================================== */
