/* ============================================================================
   管理後台深色主題覆寫（單一集中處）

   載入順序：必須排在 _AdminLayout.cshtml 的 @RenderSectionAsync("Styles") 之後，
   否則頁面級 CSS 與 view 內嵌 <style> 會贏過本檔。

   規格：THEME_SYSTEM_PLAN.md §8.7、§9.1、§9.2、§8.9
   ============================================================================ */

/* ---------------------------------------------------------------------------
   1. Surface 層次
   Bootstrap 5.3 深色下 --bs-card-bg / --bs-table-bg 都等於 --bs-body-bg(#212529)，
   卡片與頁面同色，只剩 1px 邊框區隔 —— AdminLTE 後台幾乎全是 card 版面，
   不補這段整個後台會塌成一片平面。

   🔴 必須寫在「元素選擇器」上，不可寫在 [data-bs-theme=dark] 根層：
      bootstrap.min.css 的 .card 規則自身宣告了 --bs-card-bg:var(--bs-body-bg)，
      元素自身宣告永遠壓過從祖先繼承的值，寫在根層會是 no-op。
   --------------------------------------------------------------------------- */
[data-bs-theme="dark"] .card {
    --bs-card-bg: var(--bs-tertiary-bg);        /* #2b3035，比 body #212529 亮一階 */
    --bs-card-cap-bg: rgba(255, 255, 255, .03);
}

[data-bs-theme="dark"] .table {
    --bs-table-bg: var(--bs-tertiary-bg);
}

[data-bs-theme="dark"] .modal-content,
[data-bs-theme="dark"] .dropdown-menu,
[data-bs-theme="dark"] .list-group-item,
[data-bs-theme="dark"] .accordion-item {
    background-color: var(--bs-tertiary-bg);
}

[data-bs-theme="dark"] .small-box,
[data-bs-theme="dark"] .info-box {
    /* AdminLTE 4 rc3 未對這兩個版面元件提供任何 dark 規則 */
    background-color: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}

/* 🔴 卡片標題文字（生產實測發現）
   AdminLTE 有第二條 .card-header 規則：
       .card-header { color: var(--lte-card-variant-color); background-color: var(--lte-card-variant-bg) }
   而 --lte-card-variant-color 預設為 #000，且 rc3 對它「0 條」dark 覆寫
   → 深色下所有卡片標題（含 .card-title 與其圖示，因其繼承自 .card-header）都是純黑壓在深色卡片上，
     幾乎不可讀。同理 --lte-direct-chat-color。
   Bootstrap 自己的 --bs-card-cap-color 一併補上（值為空時繼承，但顯式指定較穩）。 */
[data-bs-theme="dark"] .card {
    --lte-card-variant-color: var(--bs-body-color);
    --lte-direct-chat-color: var(--bs-body-color);
    --bs-card-cap-color: var(--bs-body-color);
    --bs-card-title-color: var(--bs-body-color);
}

[data-bs-theme="dark"] .card-header,
[data-bs-theme="dark"] .card-header .card-title,
[data-bs-theme="dark"] .card-header > i {
    color: var(--bs-body-color);
}

/* ---------------------------------------------------------------------------
   2. Bootstrap 固定色工具類
   [data-bs-theme=dark] 區塊「不」重定義 --bs-light-rgb / --bs-dark-rgb，
   於是 .bg-light 深色下仍是近白色區塊、.text-dark 是深色字壓在深色底（隱形）。
   全站用量：bg-light 29、text-dark 39、bg-white 5、table-light 2。

   🔴 刻意「不」用翻轉 --bs-light-rgb / --bs-dark-rgb 的作法（雖然只要兩行）：
      那會連帶改到所有消費同一組變數的工具類。實測全站有 7 處 `badge bg-dark`，
      .badge 預設白字，翻轉後底色變淺灰而字仍白 → 徽章整個不可讀。
      同理 --bs-white-rgb 更不能動（21 處刻意的 .text-white）。
      改為只針對真正出問題的兩個工具類做外科式覆寫，其餘語意完全不變。
   --------------------------------------------------------------------------- */
[data-bs-theme="dark"] .bg-light {
    background-color: var(--bs-tertiary-bg) !important;
}

[data-bs-theme="dark"] .text-dark {
    color: var(--bs-body-color) !important;
}

[data-bs-theme="dark"] .bg-white {
    background-color: var(--bs-tertiary-bg) !important;
}

[data-bs-theme="dark"] .table-light {
    --bs-table-bg: var(--bs-secondary-bg);
    --bs-table-color: var(--bs-body-color);
}

/* 表格語意列（table-warning／danger／success／info／primary）
   Bootstrap 5.3 這幾個類別寫死淺色底（如 warning #fff3cd）＋黑字，不隨主題切換；
   列內的 .text-muted 卻會跟著深色主題變成淺灰 ⇒ 淺黃底上的淺灰字幾乎看不見
   （2026-09-14 owner 實報：營運事件頁未讀列的內文與待辦現況說明）。
   改用主題自帶的 *-bg-subtle／*-border-subtle 深色調，字色回到正文色。 */
[data-bs-theme="dark"] .table-warning,
[data-bs-theme="dark"] .table-danger,
[data-bs-theme="dark"] .table-success,
[data-bs-theme="dark"] .table-info,
[data-bs-theme="dark"] .table-primary {
    --bs-table-color: var(--bs-body-color);
    --bs-table-striped-color: var(--bs-body-color);
    --bs-table-active-color: var(--bs-body-color);
    --bs-table-hover-color: var(--bs-body-color);
    --bs-table-striped-bg: rgba(255, 255, 255, .04);
    --bs-table-active-bg: rgba(255, 255, 255, .08);
    --bs-table-hover-bg: rgba(255, 255, 255, .06);
    color: var(--bs-table-color);
}

[data-bs-theme="dark"] .table-warning {
    --bs-table-bg: var(--bs-warning-bg-subtle);
    --bs-table-border-color: var(--bs-warning-border-subtle);
}

[data-bs-theme="dark"] .table-danger {
    --bs-table-bg: var(--bs-danger-bg-subtle);
    --bs-table-border-color: var(--bs-danger-border-subtle);
}

[data-bs-theme="dark"] .table-success {
    --bs-table-bg: var(--bs-success-bg-subtle);
    --bs-table-border-color: var(--bs-success-border-subtle);
}

[data-bs-theme="dark"] .table-info {
    --bs-table-bg: var(--bs-info-bg-subtle);
    --bs-table-border-color: var(--bs-info-border-subtle);
}

[data-bs-theme="dark"] .table-primary {
    --bs-table-bg: var(--bs-primary-bg-subtle);
    --bs-table-border-color: var(--bs-primary-border-subtle);
}

/* ---------------------------------------------------------------------------
   3. 側邊欄
   側欄 aside 自帶 data-bs-theme="dark"（永久深色，淺色主題下是設計特色）。
   深色主題下 --bs-secondary-bg(#343a40) 仍比 --bs-body-bg(#212529) 淺一階，
   層次成立；但兩色每通道只差 19，對比約 1.19:1 —— 右邊框是必要而非強化。
   另：admin-custom.css 的 box-shadow 用 rgba(black) 打在深色底上等於隱形。
   --------------------------------------------------------------------------- */
[data-bs-theme="dark"] .app-sidebar {
    border-right: 1px solid var(--bs-border-color);
    box-shadow: none;
}

/* ---------------------------------------------------------------------------
   4. _AdminLayout.cshtml 內嵌 <style> 的 SignalR 狀態點（硬編碼白/黃/紅邊框）
   --------------------------------------------------------------------------- */
[data-bs-theme="dark"] .signalr-status-dot {
    border-color: var(--bs-body-bg) !important;
}

/* ---------------------------------------------------------------------------
   5. 第三方套件（vendor CSS 全無 dark 支援：Toastr 0、SweetAlert2 0、
      Select2 0、Flatpickr 0；DataTables 有部分官方深色 token）
   --------------------------------------------------------------------------- */

/* Select2：本體與 bs5-theme 皆為 0 個 CSS 變數、0 個 dark 選擇器，只能整組覆寫 */
[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-selection,
[data-bs-theme="dark"] .select2-container--default .select2-selection--single,
[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple {
    background-color: var(--bs-body-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-selection__rendered,
[data-bs-theme="dark"] .select2-container--default .select2-selection__rendered {
    color: var(--bs-body-color) !important;
}

/* 多選標籤（select2 multiple 的已選項目）。
   bs5-theme 把 choice 的文字色寫死為淺色模式的 #212529 且背景透明，
   深色底下等於「深底深字」——標籤只看得到 × ，選了什麼完全看不見。
   （既有覆寫只涵蓋 selection / rendered，沒涵蓋 choice 本身。） */
[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-selection__choice,
[data-bs-theme="dark"] .select2-container--default .select2-selection__choice {
    background-color: var(--bs-tertiary-bg) !important;
    border-color: var(--bs-border-color) !important;
    color: var(--bs-body-color) !important;
}

[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-selection__choice__display,
[data-bs-theme="dark"] .select2-container--default .select2-selection__choice__display {
    color: var(--bs-body-color) !important;
}

/* 移除鈕：淺色模式下是深色字，深色底需反轉 */
[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-selection__choice__remove,
[data-bs-theme="dark"] .select2-container--default .select2-selection__choice__remove {
    color: var(--bs-secondary-color) !important;
}

[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-selection__choice__remove:hover,
[data-bs-theme="dark"] .select2-container--default .select2-selection__choice__remove:hover {
    color: var(--bs-danger) !important;
    background-color: transparent !important;
}

[data-bs-theme="dark"] .select2-dropdown {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .select2-container--default .select2-search--dropdown .select2-search__field,
[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-search .select2-search__field {
    background-color: var(--bs-body-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .select2-container--default .select2-results__option[aria-selected="true"],
[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-results__option--selected {
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .select2-container--default .select2-results__option--highlighted[aria-selected],
[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-results__option--highlighted {
    background-color: var(--bs-primary);
    color: #fff;
}

[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__choice {
    background-color: var(--bs-secondary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

/* Toastr：硬編碼背景色，僅需修正關閉鈕與標題對比 */
[data-bs-theme="dark"] .toast-close-button {
    color: #fff;
    opacity: .8;
}

/* SweetAlert2 */
[data-bs-theme="dark"] .swal2-popup {
    background-color: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .swal2-title,
[data-bs-theme="dark"] .swal2-html-container {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .swal2-input,
[data-bs-theme="dark"] .swal2-textarea,
[data-bs-theme="dark"] .swal2-select {
    background-color: var(--bs-body-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

/* Flatpickr：本地無 themes/dark.css，直接覆寫（避免新增 vendor 資產） */
[data-bs-theme="dark"] .flatpickr-calendar {
    background: var(--bs-tertiary-bg);
    box-shadow: 0 3px 13px rgba(0, 0, 0, .6);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .flatpickr-months .flatpickr-month,
[data-bs-theme="dark"] .flatpickr-weekdays,
[data-bs-theme="dark"] .flatpickr-weekday {
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
    fill: var(--bs-body-color);
}

[data-bs-theme="dark"] .flatpickr-day {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .flatpickr-day:hover {
    background: var(--bs-secondary-bg);
    border-color: var(--bs-secondary-bg);
}

[data-bs-theme="dark"] .flatpickr-day.flatpickr-disabled,
[data-bs-theme="dark"] .flatpickr-day.prevMonthDay,
[data-bs-theme="dark"] .flatpickr-day.nextMonthDay {
    color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .flatpickr-months .flatpickr-prev-month svg,
[data-bs-theme="dark"] .flatpickr-months .flatpickr-next-month svg {
    fill: var(--bs-body-color);
}

/* DataTables：官方 bs5 整合已帶部分深色 token，補分頁與搜尋框 */
[data-bs-theme="dark"] .dataTables_wrapper .dataTables_filter input,
[data-bs-theme="dark"] .dataTables_wrapper .dataTables_length select {
    background-color: var(--bs-body-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .dataTables_wrapper .dataTables_info,
[data-bs-theme="dark"] .dataTables_wrapper .dataTables_paginate {
    color: var(--bs-body-color) !important;
}

/* ---------------------------------------------------------------------------
   6. 深色豁免名單（強制保持淺色）

   郵件模板預覽：郵件在收件端永遠是淺底，且 Email/EditTemplate.cshtml 是用
   $('#previewContent').html(...) 直接注入頁面 DOM（非 iframe 隔離），
   郵件 HTML 中未指定顏色的文字會繼承頁面深色 --bs-body-color → 白底淺灰字的假預覽。
   --------------------------------------------------------------------------- */
[data-bs-theme="dark"] #previewContent {
    color-scheme: light;
    background: #fff !important;
    color: #212529 !important;
}

/* ---------------------------------------------------------------------------
   8. 第二輪獵殺：vendor 硬編碼、局部 token、view 內嵌 <style> 的淺色殘留

   生產實測（卡片標題與導覽列圖示隱形）後展開的全站掃描結果。共通根因：
   前一輪的替換規則以「色值字面」為鍵（只涵蓋 hex 與 white），漏掉三種形態 ——
     (a) vendor CSS 變數有淺色預設值但該版本無 dark 覆寫（如 --lte-card-variant-color）
     (b) rgba(0,0,0,x) 形式的前景色
     (c) 「固定色背景 + 會隨主題翻轉的 token 當前景」（如白字壓恆黃的 badge）
   對比值皆為 WCAG 實算，基準：body #212529 / card #2b3035 / 文字 #dee2e6。
   --------------------------------------------------------------------------- */

/* 8.1 --flyping-* 是唯一沒有 dark 覆寫的自訂 token 組（--api-key-* / --rs-* 已補）。
       --flyping-dark:#343a40 壓在卡片 #2b3035 上僅 1.16:1。
       §1 只覆寫了 .card-header .card-title，.card-body 內的 .card-title 沒救到。 */
[data-bs-theme="dark"] .card-title,
[data-bs-theme="dark"] .empty-state h4 {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .card-subtitle,
[data-bs-theme="dark"] .empty-state,
[data-bs-theme="dark"] .breadcrumb-item + .breadcrumb-item::before {
    color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .breadcrumb-item a:hover {
    color: var(--bs-emphasis-color);   /* 原 #343a40，一 hover 就隱形（1.34:1） */
}

/* 8.2 admin-custom.css 把 alert 背景硬寫成淺色漸層，深色文字 token 壓上去讀不到。
       .btn-close 在深色被 --bs-btn-close-filter 翻白，白 × 壓淺綠更慘（1.25:1）。 */
[data-bs-theme="dark"] .alert-success {
    background: var(--bs-success-bg-subtle);
    border-color: var(--bs-success-border-subtle);
    color: var(--bs-success-text-emphasis);
}

[data-bs-theme="dark"] .alert-danger[data-valmsg-summary="true"],
[data-bs-theme="dark"] .alert-danger[data-valmsg-summary="true"] li {
    background: var(--bs-danger-bg-subtle);
    border-color: var(--bs-danger-border-subtle);
    color: var(--bs-danger-text-emphasis);
}

/* 8.3 「固定色背景 + 會翻轉的 token 當前景」陷阱：
       --bs-emphasis-color 淺色=#000、深色=#fff，壓在恆為 #ffc107 的黃底上 → 1.63:1。
       原規則帶 !important，此處亦需。 */
[data-bs-theme="dark"] .badge-warning,
[data-bs-theme="dark"] .confirm-modal .modal-header {
    color: #000 !important;
}

/* 8.4 AdminLTE vendor 硬編碼白底表頭（rc3 對此規則 0 條 dark 覆寫），
       字色來自 admin-custom 的 var(--bs-secondary-color) → 白底白字 1.22:1。 */
[data-bs-theme="dark"] .table.table-head-fixed thead tr:first-child th {
    background-color: var(--bs-tertiary-bg);
}

/* 8.5 白色 loading 遮罩（三個檔各自定義，皆缺 dark）。
       .form-loading::after 由 ui-utils.js 觸發，全站表單送出時整塊變白。 */
[data-bs-theme="dark"] .loading-overlay,
[data-bs-theme="dark"] .form-loading::after,
[data-bs-theme="dark"] .card-refresh-overlay {
    background: rgba(0, 0, 0, .6) !important;
}

/* .loading-spinner 全站有多個互相衝突的定義（旋轉圓環 vs 文字容器），
   限縮為「遮罩的直接子節點」才安全。 */
[data-bs-theme="dark"] .loading-overlay > .loading-spinner {
    background-color: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}

/* 8.6 ApiKeys.cshtml 把全域 .dropdown-item 寫死 #212529（無頁面前綴），
       連導覽列的通知選單／使用者選單／主題切換選單一起汙染。
       該頁部分規則在 media query 內帶 !important，此處亦需。 */
[data-bs-theme="dark"] .dropdown-item {
    color: var(--bs-dropdown-link-color) !important;
}

[data-bs-theme="dark"] .dropdown-item:hover,
[data-bs-theme="dark"] .dropdown-item:focus {
    background-color: var(--bs-dropdown-link-hover-bg) !important;
    color: var(--bs-dropdown-link-hover-color) !important;
}

/* 8.7 檔案瀏覽器 */
[data-bs-theme="dark"] .file-name,
[data-bs-theme="dark"] .context-menu-item {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .file-list-table thead th {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border-bottom-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .file-list-table tbody tr:hover,
[data-bs-theme="dark"] .context-menu-item:hover {
    background: var(--bs-secondary-bg);
}

[data-bs-theme="dark"] .context-menu {
    border-color: var(--bs-border-color);
}

/* 8.8 檔案編輯器（管理員用它改生產 VPN 節點設定檔，不可讀＝高風險） */
[data-bs-theme="dark"] .editor-toolbar {
    background: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .editor-title {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .editor-info,
[data-bs-theme="dark"] .editor-title i {
    color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .file-path {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .editor-container.fullscreen {
    background: var(--bs-body-bg);
}

/* 8.9 安全設定頁（Security/SystemsManagement.cshtml）
       其淺灰漸層表頭配上本檔 §1 把 .card-header 文字改成淺色，反而互害。 */
[data-bs-theme="dark"] .sec-card .card-header {
    background: var(--bs-secondary-bg);
}

[data-bs-theme="dark"] .scope-block > .scope-title {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .scope-block {
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .sec-scope-note,
[data-bs-theme="dark"] .field-hint {
    color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .sticky-actions {
    background: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
}

/* 8.10 view 內嵌 <style> 的白／淺底容器（同一類型批次處理）：
        全部是「淺底 + 未宣告 color」→ 繼承 #dee2e6，1.10~1.30:1。
        涵蓋 AdvancedAnalytics/Index、Users/Statistics、Subscriptions/PendingReview、
        Security/AuditLogs、Auth/LoginSuccess。
        （原亦涵蓋 UserNotification/* 與 SmartNotification/*，該兩組孤兒頁已於 2026-09-13 移除；
          規則本身仍為上列現役頁面所需，不可刪。） */
[data-bs-theme="dark"] .chart-card,
[data-bs-theme="dark"] .analytics-card,
[data-bs-theme="dark"] .broadcast-card,
[data-bs-theme="dark"] .category-card,
[data-bs-theme="dark"] .channel-card,
[data-bs-theme="dark"] .login-card {
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .analysis-section,
[data-bs-theme="dark"] .demo-section,
[data-bs-theme="dark"] .filter-card,
[data-bs-theme="dark"] .chart-container,
[data-bs-theme="dark"] .date-range-form,
[data-bs-theme="dark"] .configuration-progress,
[data-bs-theme="dark"] .search-form,
[data-bs-theme="dark"] .preference-header,
[data-bs-theme="dark"] .template-header,
[data-bs-theme="dark"] .template-preview,
[data-bs-theme="dark"] .recipient-count,
[data-bs-theme="dark"] .performance-table th {
    background: var(--bs-secondary-bg);
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .step-label {
    color: var(--bs-secondary-color);
}

/* 8.11 可讀但明顯是淺色殘留者 */
[data-bs-theme="dark"] .progress {
    background-color: var(--bs-secondary-bg);   /* Servers.cshtml 寫死 #e9ecef 蓋掉深色軌道 */
}

[data-bs-theme="dark"] .dropdown-menu {
    border: 1px solid var(--bs-border-color);   /* 原 rgba(0,0,0,.15)，深色下邊框消失 */
}

[data-bs-theme="dark"] .navbar .logout-btn:hover,
[data-bs-theme="dark"] .navbar .logout-btn:focus,
[data-bs-theme="dark"] .navbar .logout-btn:active {
    background-color: rgba(255, 255, 255, .08);  /* 原 rgba(0,0,0,.05)，深色下無 hover 回饋 */
}

[data-bs-theme="dark"] .small-box .small-box-icon,
[data-bs-theme="dark"] .small-box .icon {
    color: rgba(255, 255, 255, .15);             /* 原 rgba(0,0,0,.15)，深底上隱形 */
}

/* 8.12 第三方套件遺漏部件（§5 未涵蓋者） */
[data-bs-theme="dark"] .swal2-validation-message {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .swal2-radio,
[data-bs-theme="dark"] .swal2-checkbox,
[data-bs-theme="dark"] .swal2-range {
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .swal2-footer {
    border-top-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .select2-container--bootstrap-5 .select2-selection__placeholder,
[data-bs-theme="dark"] .select2-container--default .select2-selection__placeholder {
    color: var(--bs-secondary-color);
}

/* 8.13 目前 0 用量但已存在的地雷，先行封堵 */
[data-bs-theme="dark"] .badge-light {
    background-color: var(--bs-secondary-bg) !important;
    color: var(--bs-body-color) !important;
}

[data-bs-theme="dark"] .text-bg-light {
    color: var(--bs-body-color) !important;
    background-color: var(--bs-tertiary-bg) !important;
}

/* ---------------------------------------------------------------------------
   9. 第三輪（互動態 / §8.10 漏頁 / 局部 token 混用淺底）

   第三輪掃描專攻前兩輪的靜態盲區：只在 hover/selected/展開等狀態才出現的顏色，
   以及沒被任何 CSS 檔命中卻實際渲染的組合。
   9.1 是第二輪 §2（.text-dark → 淺色）親手製造的回歸：機械翻轉沒考慮「淺底配深字」
   的慣用組合。教訓同前——翻轉工具類必須看它實際搭配的背景。
   --------------------------------------------------------------------------- */

/* 9.1 §2 的 .text-dark→淺色 反噬 .bg-warning/.bg-info 的「淺底配深字」慣用法。
       .bg-warning(#ffc107)/.bg-info(#0dcaf0) 背景不隨主題變，text-dark 本就是配它們的深字，
       被 §2 翻成淺色後 → 淺字壓淺黃/淺青 ≈1.2:1 隱形。
       影響最廣：shared partial _StatusBadge.cshtml:25（pending/processing/waiting/suspended/
       inactive 五種狀態，散佈訂閱/付款/用戶各狀態欄）+ 多處 JS 動態注入。
       專屬選擇器 (0,3,0) 勝過 §2 的 (0,2,0)，只翻這兩個淺底組合。 */
[data-bs-theme="dark"] .bg-warning.text-dark,
[data-bs-theme="dark"] .bg-info.text-dark {
    color: #000 !important;
}

/* 9.2 AdvancedAnalytics 未被 §8.10 涵蓋的告警/洞察/優先級卡
       （§8.10 只列了 Index，這幾頁是淺底 + 完全沒設 color → 繼承 #dee2e6 ≈1.1:1）。
       保留各卡自帶的 border-left 語意色。
       （原亦涵蓋已移除的 SmartNotification/*；規則仍為 AdvancedAnalytics 所需。） */
[data-bs-theme="dark"] .risk-high,
[data-bs-theme="dark"] .risk-medium,
[data-bs-theme="dark"] .risk-low,
[data-bs-theme="dark"] .risk-critical,
[data-bs-theme="dark"] .security-alert,
[data-bs-theme="dark"] .behavior-insight,
[data-bs-theme="dark"] .performance-alert,
[data-bs-theme="dark"] .priority-high,
[data-bs-theme="dark"] .priority-medium,
[data-bs-theme="dark"] .priority-low,
[data-bs-theme="dark"] .test-result {
    background: var(--bs-tertiary-bg) !important;
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

/* 9.3 ApplicationSettings 政策差異檢視（外層 <pre id="policyDiff"> 無 bg-light，
       內層 span 淺綠/粉/黃底且無 color → 繼承淺字 ≈1.1:1 全隱形）。
       改用半透明語意底，保留新增綠/刪除紅/變更黃的語意。 */
[data-bs-theme="dark"] #policyDiff .diff-add    { background: rgba(46, 160, 67, .22);  color: var(--bs-body-color); }
[data-bs-theme="dark"] #policyDiff .diff-remove { background: rgba(248, 81, 73, .22);  color: var(--bs-body-color); }
[data-bs-theme="dark"] #policyDiff .diff-change { background: rgba(210, 153, 34, .25); color: var(--bs-body-color); }

/* 9.4 remote-support 中繼跳徽章：--rs-accent 翻成淺藍字了，但 background:#dbeafe 是硬編碼
       沒跟著翻 → 淺藍字壓淺藍底 ≈1.5:1。（同組其他 hop 狀態都用會一起翻的 token，僅此混用。） */
[data-bs-theme="dark"] .rs-hop-status--intermediate {
    background: rgba(96, 165, 250, .15);
}

/* 9.5 FileBrowser 選取態/拖放態（互動缺陷，§8.7 只救了 thead 與 tr:hover，沒救 .selected）。
       選取一列後：淺底 + .file-name(被 §8.7 翻成淺色) = 淺字壓淺底，整列不可讀。 */
[data-bs-theme="dark"] .file-list-table tbody tr.selected,
[data-bs-theme="dark"] .file-card.selected {
    background: var(--bs-secondary-bg) !important;
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .file-drop-zone:hover,
[data-bs-theme="dark"] .file-drop-zone.dragover {
    background-color: var(--bs-secondary-bg);
}

[data-bs-theme="dark"] .cut-item {
    background-color: rgba(255, 193, 7, .15) !important;
}

/* 9.6 WireGuard QR 容器：白框是掃描的必要條件（QR 需要 quiet-zone 對比）。
       .bg-white 被 §2 翻成深色會讓白框消失；若後端 PNG 為透明底，黑碼壓深底就掃不到。
       豁免此容器，強制保持白底。 */
[data-bs-theme="dark"] .qr-code-container {
    background: #fff !important;
}

/* 9.7 remote-support 少數固定色徽章（深字壓淺底，本身可讀但是深色卡片中的淺色孤島，
       與同頁已翻半透明的其他品質徽章視覺不一致）。 */
[data-bs-theme="dark"] .rs-badge--quality-excellent { color: #5eead4; background: rgba(20, 184, 166, .15); }
[data-bs-theme="dark"] .rs-badge--quality-poor      { color: #fdba74; background: rgba(234, 88, 12, .15); }
[data-bs-theme="dark"] .rs-chip                      { color: #a5b4fc; background: rgba(67, 56, 202, .2); }

/* 9.8 ApiKeys 下拉自訂 webkit 捲軸硬編碼淺色（color-scheme:dark 本會給深捲軸，被此覆蓋） */
[data-bs-theme="dark"] .dropdown-menu::-webkit-scrollbar-track { background: var(--bs-tertiary-bg); }
[data-bs-theme="dark"] .dropdown-menu::-webkit-scrollbar-thumb { background: var(--bs-secondary-bg); }

/* ---------------------------------------------------------------------------
   7. 列印：深色態下 --bs-body-color ≈ #dee2e6，瀏覽器預設不印背景但照印文字色
      → 白紙上的淺灰字。訂單/發票是商用輸出，必須強制白底黑字。
   --------------------------------------------------------------------------- */
@media print {
    :root,
    [data-bs-theme="dark"] {
        --bs-body-bg: #fff !important;
        --bs-body-color: #000 !important;
        --bs-card-bg: #fff !important;
        --bs-tertiary-bg: #fff !important;
        --bs-secondary-bg: #fff !important;
        color-scheme: light !important;
    }

    [data-bs-theme="dark"] body,
    [data-bs-theme="dark"] .card,
    [data-bs-theme="dark"] .table,
    [data-bs-theme="dark"] .modal-content {
        background: #fff !important;
        color: #000 !important;
    }
}
