/**
 * Final dark-mode normalization layer.
 *
 * This file is enqueued after every conditional front-end stylesheet so
 * page-specific light colors cannot override the shared dark theme.
 */

html.dark {
    color-scheme: dark;
    --bs-heading-color: var(--qm-text-primary);
    --bs-form-control-bg: var(--qm-bg-dark-800);
    --bs-form-control-disabled-bg: var(--qm-bg-dark-700);
    --bs-highlight-bg: rgba(245, 158, 11, 0.24);
    --bs-primary-text-emphasis: #ff9b95;
    --bs-secondary-text-emphasis: var(--qm-text-secondary);
    --bs-success-text-emphasis: #86efac;
    --bs-info-text-emphasis: #7dd3fc;
    --bs-warning-text-emphasis: #fde68a;
    --bs-danger-text-emphasis: #fca5a5;
    --bs-light-bg-subtle: var(--qm-bg-dark-700);
    --bs-dark-bg-subtle: var(--qm-bg-dark-800);
}

html.dark body {
    background-color: var(--qm-page-bg);
    color: var(--qm-text-secondary);
}

html.dark body :is(input, select, textarea, .form-control, .form-select) {
    background-color: var(--qm-bg-dark-800);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-primary);
}

html.dark body :is(input, textarea, .form-control)::placeholder {
    color: var(--qm-text-lighter);
    opacity: 1;
}

html.dark body :is(input, select, textarea, .form-control, .form-select):disabled {
    background-color: var(--qm-bg-dark-700);
    color: var(--qm-text-muted);
    opacity: 0.72;
}

html.dark body :is(.form-check-input, input[type="checkbox"], input[type="radio"]) {
    border-color: rgba(255, 255, 255, 0.24);
}

html.dark body :is(.form-check-input, input[type="checkbox"], input[type="radio"]):checked {
    background-color: var(--qm-primary);
    border-color: var(--qm-primary);
}

html.dark body :is(.btn-close, .accordion-button)::after {
    filter: invert(1) grayscale(1) brightness(1.8);
}

html.dark body :is(.dropdown-menu, .offcanvas, .modal-content, .popover, .toast) {
    background-color: var(--qm-bg-dark-800);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(.dropdown-item, .offcanvas-title, .toast-header) {
    color: var(--qm-text-secondary);
}

html.dark body .dropdown-item:hover,
html.dark body .dropdown-item:focus,
html.dark body .dropdown-item.active {
    background-color: var(--qm-bg-dark-600);
    color: var(--qm-text-primary);
}

html.dark body .toast-header {
    background-color: var(--qm-bg-dark-700);
    border-color: var(--qm-border-dark-600);
}

html.dark body :is(.alert-light, .badge.text-bg-light) {
    background-color: var(--qm-bg-dark-700) !important;
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary) !important;
}

html.dark body :is(.border, .border-top, .border-end, .border-bottom, .border-start) {
    border-color: var(--qm-border-dark-600) !important;
}

html.dark body :is(.bg-white, .bg-light, .bg-body, .bg-body-secondary, .bg-body-tertiary) {
    background-color: var(--qm-bg-dark-800) !important;
}

html.dark body :is(.text-dark, .text-black, .text-body, .text-body-emphasis) {
    color: var(--qm-text-primary) !important;
}

html.dark body :is(.text-muted, .text-secondary, .text-body-secondary, .text-black-50) {
    color: var(--qm-text-muted) !important;
}

html.dark body ::selection {
    background: var(--qm-primary-rgba-35);
    color: #ffffff;
}

html.dark body * {
    scrollbar-color: var(--qm-bg-dark-600) transparent;
}

/* Shared cards, lists, filters and empty states. */
html.dark body :is(
    .qm-post-list-item,
    .qm-card,
    .qm-archive-advanced-filter__panel,
    .qm-archive-advanced-filter__summary,
    .qm-material-gallery-card,
    .qm-material-gallery-filters,
    .qm-material-gallery-categories,
    .qm-cards-empty,
    .qm-post-list-empty,
    .qm-empty-state,
    .qm-board-empty
) {
    background-color: var(--qm-color-surface);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(
    .qm-post-list-title,
    .qm-post-list-title a,
    .qm-card-title,
    .qm-card-title a,
    .qm-material-gallery-card__title,
    .qm-archive-advanced-filter__label,
    .qm-cards-empty strong,
    .qm-post-list-empty strong,
    .qm-empty-state strong
) {
    color: var(--qm-text-primary);
}

html.dark body :is(
    .qm-post-list-excerpt,
    .qm-post-list-meta,
    .qm-card-excerpt,
    .qm-card-time,
    .qm-card-stats,
    .qm-material-gallery-card__desc,
    .qm-material-gallery-sort-label,
    .qm-cards-empty-text,
    .qm-post-list-empty-text
) {
    color: var(--qm-text-muted);
}

html.dark body :is(
    .qm-category-btn,
    .qm-sort-tab,
    .qm-sort-select,
    .qm-material-gallery-category-pill,
    .qm-material-gallery-sort-item,
    .qm-category-scroll-control
) {
    background-color: var(--qm-bg-dark-600);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(
    .qm-category-btn,
    .qm-sort-tab,
    .qm-material-gallery-category-pill,
    .qm-material-gallery-sort-item
):is(:hover, .active, .is-active) {
    background-color: var(--qm-primary-rgba-18);
    border-color: var(--qm-primary-rgba-30);
    color: #ff9b95;
}

/* Search and command surfaces. */
html.dark body :is(
    .qm-search-modal-content,
    .qm-search-input-wrapper,
    .qm-search-suggestions,
    .qm-search-footer,
    .qm-popular-searches,
    .qm-ai-search-summary
) {
    background-color: var(--qm-bg-dark-800);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(.qm-search-input, .qm-suggestion-item, .qm-search-history-item, .qm-popular-search-item) {
    color: var(--qm-text-secondary);
}

html.dark body :is(.qm-suggestion-item, .qm-search-history-item, .qm-popular-search-item):hover {
    background-color: var(--qm-bg-dark-600);
    color: var(--qm-text-primary);
}

html.dark body :is(.qm-search-section-header, .qm-search-modal-close, .qm-clear-history) {
    color: var(--qm-text-muted);
}

/* Article, material and software detail surfaces. */
html.dark body :is(
    .qm-material-hero,
    .qm-material-preview__card,
    .qm-material-story,
    .qm-material-files,
    .qm-material-files__item,
    .qm-material-scenarios,
    .qm-material-scenarios__item,
    .qm-material-author,
    .qm-material-collection,
    .qm-material-related,
    .qm-material-related__card,
    .qm-material-side-card,
    .qm-software-download-section,
    .qm-download-card
) {
    background-color: var(--qm-color-surface);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(
    .qm-material-hero__title,
    .qm-material-hero__headline,
    .qm-material-story__lead,
    .qm-material-side-card__title,
    .qm-material-related__title,
    .qm-material-files__item strong,
    .qm-material-scenarios__item strong
) {
    color: var(--qm-text-primary);
}

html.dark body :is(
    .qm-material-hero__summary,
    .qm-material-side-card__hint,
    .qm-material-related__excerpt,
    .qm-material-related__meta,
    .qm-material-author__stats
) {
    color: var(--qm-text-muted);
}

html.dark body :is(
    .qm-material-hero__metric,
    .qm-material-side-card__panel,
    .qm-material-side-card__ghost,
    .qm-material-preview__placeholder,
    .qm-material-related__thumb-fallback
) {
    background-color: var(--qm-bg-dark-600);
    border-color: var(--qm-border-dark-600);
}

/* Points mall: late additions and mobile-only surfaces. */
html.dark body :is(
    .qm-points-mobile-overview,
    .qm-points-mobile-overview__stat,
    .qm-points-user-card,
    .qm-points-user-card__stat,
    .qm-points-stage__nav,
    .qm-points-card,
    .qm-points-history__list,
    .qm-points-history__empty,
    .qm-points-detail__hero-card,
    .qm-points-detail__content-card,
    .qm-points-detail__meta-card,
    .qm-points-cart-modal__dialog
) {
    background-color: var(--qm-color-surface);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(
    .qm-points-stage__nav-item,
    .qm-points-mobile-tabs__item,
    .qm-points-user-card__action,
    .qm-points-cart-modal__item,
    .qm-points-cart-modal__qty,
    .qm-points-cart-modal__remove,
    .qm-points-cart-modal__close
) {
    background-color: var(--qm-bg-dark-600);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(
    .qm-points-shelf__title,
    .qm-points-user-card__name,
    .qm-points-card__title,
    .qm-points-detail__title,
    .qm-points-cart-modal__title,
    .qm-points-cart-modal__item-title
) {
    color: var(--qm-text-primary) !important;
}

/* Editor, community, account and AI panels. */
html.dark body :is(
    .qm-editor-card,
    .qm-editor-header,
    .qm-editor-toolbar,
    .qm-editor-sidebar,
    .qm-editor-bottom-bar,
    .qm-category-dropdown__menu,
    .qm-download-link-modal__body,
    .qm-download-link-modal__header,
    .qm-download-link-modal__footer,
    .qm-community-report-modal__dialog,
    .qm-community-share-sheet__dialog,
    .qm-board-compose,
    .qm-board-topic-list,
    .qm-ai-assistant-panel,
    .qm-ai-assistant-menu,
    .qm-ai-assistant-input-area,
    .qm-ai-recent-posts__body,
    .qm-ai-topic-summary-card,
    .qimeng-stats-wrapper
) {
    background-color: var(--qm-color-surface);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(
    .qm-editor-card__head,
    .qm-editor-card__body,
    .qm-category-dropdown__option,
    .qm-community-share-sheet__preview,
    .qm-community-share-sheet__link-row,
    .qm-community-report-modal__notice,
    .qm-ai-message--assistant,
    .qm-ai-recent-posts__item
) {
    background-color: var(--qm-bg-dark-700);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-secondary);
}

html.dark body :is(
    .qm-editor-card__toggle-title,
    .qm-editor-panel-heading,
    .qm-community-report-modal__heading,
    .qm-community-share-sheet__heading,
    .qm-ai-assistant-identity,
    .qm-ai-recent-posts__title,
    .qm-ai-topic-summary-head
) {
    color: var(--qm-text-primary);
}

/* Payment flows share one variable bridge, including dynamically mounted modals. */
html.dark {
    --qimeng-payment-bg: var(--qm-bg-dark-800);
    --qimeng-payment-surface: var(--qm-bg-dark-700);
    --qimeng-payment-border: var(--qm-border-dark-600);
    --qimeng-payment-text: var(--qm-text-primary);
    --qimeng-payment-muted: var(--qm-text-muted);
    --qimeng-payment-primary-soft: rgba(21, 198, 107, 0.14);
    --qimeng-payment-alipay-soft: rgba(34, 119, 243, 0.16);
    --qimeng-payment-epay-soft: rgba(255, 106, 61, 0.16);
    --qimeng-payment-disabled: #56585d;
    --qimeng-payment-backdrop: rgba(0, 0, 0, 0.68);
    --qimeng-payment-shadow: 0 18px 48px rgba(0, 0, 0, 0.36);
    --qimeng-payment-modal-shadow: 0 24px 64px rgba(0, 0, 0, 0.48);
}

html.dark body :is(
    .qm-vip-order-strip,
    .qm-vip-order-method,
    .qm-vip-order-total,
    .qm-vip-pay__disabled,
    .qimeng-payment-method-modal__card,
    .qimeng-payment-method-modal__method,
    .qimeng-payment-method-modal__empty,
    .qimeng-payment-method-modal__license-row
) {
    background-color: var(--qimeng-payment-surface);
    border-color: var(--qimeng-payment-border);
    color: var(--qimeng-payment-text);
}

html.dark body :is(
    .qm-vip-order-method--active,
    .qimeng-payment-method-modal__method.is-active
) {
    background-color: var(--qimeng-payment-primary-soft);
}

html.dark body .qimeng-payment-method-modal__method.is-active:is([data-gateway="alipay"], [data-gateway="alipay_f2f"]) {
    background-color: var(--qimeng-payment-alipay-soft);
}

html.dark body .qimeng-payment-method-modal__method.is-active[data-gateway="epay"] {
    background-color: var(--qimeng-payment-epay-soft);
}

html.dark body :is(
    .qimeng-payment-method-modal__qr,
    .qimeng-payment-method-modal__qr-img
) {
    background-color: #ffffff;
}

/* VIP agreement page. */
html.dark {
    --qm-vip-page-bg: var(--qm-gray-dark-page);
    --qm-vip-surface: var(--qm-gray-dark-surface);
    --qm-vip-text: var(--qm-text-primary);
    --qm-vip-text-muted: var(--qm-text-muted);
    --qm-vip-shadow-md: 0 18px 40px rgba(0, 0, 0, 0.28);
}

html.dark body.qm-vip-page-bg {
    background: var(--qm-vip-page-bg);
    color: var(--qm-vip-text);
}

html.dark body .qm-vip-agreement__surface {
    background: var(--qm-vip-surface);
    box-shadow: var(--qm-vip-shadow-md);
}

html.dark body :is(.qm-vip-agreement__header, .qm-vip-agreement__section) {
    border-color: var(--qm-border-dark-600);
}

/* Sales page uses a private palette, so switch its tokens as one system. */
html.dark {
    --qs-white: var(--qm-gray-dark-surface);
    --qs-gray-50: var(--qm-gray-dark-page);
    --qs-gray-100: var(--qm-gray-dark-surface-raised);
    --qs-gray-300: #66686e;
    --qs-gray-500: var(--qm-gray-dark-text-muted);
    --qs-gray-700: var(--qm-gray-dark-text);
    --qs-gray-900: var(--qm-gray-dark-text-heading);
    --qs-warm-50: #3b2e2c;
    --qs-white-a08: rgba(255, 255, 255, 0.08);
    --qs-white-a12: rgba(255, 255, 255, 0.12);
    --qs-white-a25: rgba(255, 255, 255, 0.25);
    --qs-white-a30: rgba(255, 255, 255, 0.3);
    --qs-white-a78: rgba(50, 51, 53, 0.78);
    --qs-white-a96: rgba(50, 51, 53, 0.96);
    --qs-ink-a04: rgba(0, 0, 0, 0.12);
    --qs-ink-a05: rgba(0, 0, 0, 0.16);
    --qs-ink-a06: rgba(0, 0, 0, 0.2);
    --qs-ink-a07: rgba(0, 0, 0, 0.24);
    --qs-ink-a09: rgba(0, 0, 0, 0.28);
    --qs-ink-a10: rgba(0, 0, 0, 0.32);
    --qs-ink-a12: rgba(0, 0, 0, 0.36);
    --qs-ink-a16: rgba(0, 0, 0, 0.44);
    --qs-page-surface: rgba(50, 51, 53, 0.92);
    --qs-page-surface-soft: rgba(45, 46, 49, 0.9);
}

html.dark body.qm-sale-page-bg,
html.dark body .qm-sale,
html.dark body .qm-sale-fluid-background {
    background: var(--qm-gray-dark-page);
    color: var(--qm-text-secondary);
}

html.dark body .qm-sale-fluid-background {
    background-image: linear-gradient(180deg, var(--qm-gray-dark-surface), var(--qm-gray-dark-page));
}

html.dark body :is(
    .qm-sale-header,
    .qm-sale-mobile-menu,
    .qm-sale-browser,
    .qm-sale-mini-window,
    .qm-sale-capability-card,
    .qm-sale-gallery__panel,
    .qm-sale-timeline__panel,
    .qm-sale-plan-card,
    .qm-sale-license-card,
    .qm-sale-modal__dialog
) {
    border-color: var(--qm-border-dark-600);
    background-color: var(--qm-gray-dark-surface);
    color: var(--qm-text-secondary);
    box-shadow: 0 18px 44px rgba(0, 0, 0, 0.24);
}

html.dark body :is(.qm-sale-capabilities, .qm-sale-showcase, .qm-sale-plans, .qm-sale-updates) {
    background: var(--qm-gray-dark-surface);
}

html.dark body :is(
    .qm-sale h1,
    .qm-sale h2,
    .qm-sale h3,
    .qm-sale-capability-card__head,
    .qm-sale-plan-card__price
) {
    color: var(--qm-text-primary) !important;
}

html.dark body :is(
    .qm-sale-skip,
    .qm-sale-brand__mark,
    .qm-sale-button--compact,
    .qm-sale-button--primary,
    .qm-sale-capability-card__icon,
    .qm-sale-capability-card__art-icon,
    .qm-sale-capability-card__link:hover,
    .qm-sale-device-tabs button.is-active,
    .qm-sale-plan-filter button.is-active,
    .qm-sale-plan-card__badge,
    .qm-sale-plan-card.is-featured .qm-sale-plan-card__button,
    .qm-sale-gallery__controls button:hover,
    .qm-sale-section-head--light h2
) {
    color: #ffffff !important;
}

html.dark body :is(
    .qm-sale-skip,
    .qm-sale-button--compact,
    .qm-sale-device-tabs button.is-active,
    .qm-sale-plan-filter button.is-active,
    .qm-sale-plan-card.is-featured .qm-sale-plan-card__button,
    .qm-sale-gallery__controls button:hover
) {
    background: var(--qm-primary);
    border-color: var(--qm-primary);
}

html.dark body .qm-sale-showcase {
    background: var(--qm-gray-dark-page);
}

html.dark body .qm-sale-button--light {
    background: #ffffff;
    color: #242428 !important;
}

html.dark body .qm-sale-modal__backdrop {
    background: rgba(0, 0, 0, 0.72);
}

@media (prefers-reduced-motion: reduce) {
    html.dark body *,
    html.dark body *::before,
    html.dark body *::after {
        scroll-behavior: auto !important;
    }
}

/* ================================================================
 * 全站暗色模式统一规范 —— 最终兜底层
 * ================================================================
 * 本文件为全站最后加载的暗色归一化层（priority 1100）。
 * 统一规则：
 *   1. 选择器一律使用 html.dark body 前缀（特异性最高，防组件层覆盖）；
 *   2. 颜色一律引用 .dark 令牌（--qm-bg-dark-* / --qm-text-* / --qm-glass-*），
 *      禁止在暗色规则里硬编码新的十六进制浅色；
 *   3. 针对内联样式（style="background:..."）用 [style*=] 属性选择器 + !important 兜底；
 *   4. 毛玻璃组件统一走 --qm-glass-* 令牌，由 variables.css 的 .dark 块控制。
 * ================================================================ */

/* ---------- 1. 毛玻璃表面统一 ----------
 * 暗色下所有玻璃组件使用深色玻璃令牌；浅色模式不受影响（0px blur / 原色）。
 */
html.dark body :is(
    .qm-header-glass,
    .qm-header-initial-glass,
    .qm-sidebar-user-header-glass,
    .qm-task-glass,
    .qm-membership-glass,
    .qm-glass-surface
) {
    background-color: var(--qm-glass-bg);
    border-color: var(--qm-glass-border);
    -webkit-backdrop-filter: blur(var(--qm-glass-blur-radius)) saturate(180%);
    backdrop-filter: blur(var(--qm-glass-blur-radius)) saturate(180%);
    box-shadow: var(--qm-glass-shadow);
}

/* 侧边栏用户卡毛玻璃：保持其专用层级（比通用玻璃更亮一档） */
html.dark body .qm-sidebar-user-header-glass {
    background-color: var(--qm-glass-bg-strong);
}

/* ---------- 2. 社区话题组件兜底（theme-assets.php 内联 CSS 注入，原无暗色规则） ---------- */
html.dark body .qm-community-topic__menu-panel {
    background-color: var(--qm-bg-dark-800) !important;
    border-color: var(--qm-border-dark-600) !important;
    color: var(--qm-text-secondary) !important;
}

html.dark body .qm-community-topic__menu-group--secondary {
    border-top-color: var(--qm-border-dark-600) !important;
}

html.dark body .qm-community-topic__media-nav {
    background-color: var(--qm-bg-dark-700) !important;
    border-color: var(--qm-border-dark-600) !important;
    color: var(--qm-text-secondary) !important;
}

html.dark body .qm-community-topic__media-nav:hover:not(:disabled) {
    background-color: var(--qm-bg-dark-600) !important;
    color: var(--qm-text-primary) !important;
}

html.dark body .qm-community-topic__media-status,
html.dark body .qm-community-topic__status {
    background-color: rgba(255, 255, 255, 0.06) !important;
    color: var(--qm-text-muted) !important;
}

html.dark body .qm-topic-type-badge {
    background-color: rgba(255, 255, 255, 0.05) !important;
    border-color: rgba(255, 255, 255, 0.1) !important;
    color: var(--qm-text-secondary) !important;
}

html.dark body .qm-topic-action {
    background-color: rgba(255, 255, 255, 0.04) !important;
    border-color: var(--qm-border-dark-600) !important;
    color: var(--qm-text-secondary) !important;
}

html.dark body .qm-community-topic__menu > summary:hover {
    background-color: rgba(255, 255, 255, 0.06) !important;
    color: var(--qm-text-primary) !important;
}

/* ---------- 3. AI 助手统计卡片内联白底兜底（ai-assistant.php 内联 style） ---------- */
html.dark body [style*="background: white"],
html.dark body [style*="background:white"],
html.dark body [style*="background: #fff"],
html.dark body [style*="background:#fff"] {
    background-color: var(--qm-bg-dark-800) !important;
    border-color: var(--qm-border-dark-600) !important;
    color: var(--qm-text-secondary) !important;
}

html.dark body [style*="background: #f9fafb"],
html.dark body [style*="background:#f9fafb"] {
    background-color: var(--qm-bg-dark-700) !important;
    border-color: var(--qm-border-dark-600) !important;
    color: var(--qm-text-secondary) !important;
}

/* ---------- 4. 客服聊天面板残留浅色（footer.php 内联 CSS，补充暗色规则） ---------- */
html.dark body .qm-support-chat-rating {
    background-color: var(--qm-bg-dark-700) !important;
    border-color: var(--qm-border-dark-600) !important;
}

html.dark body .qm-support-chat-modal__btn--danger,
html.dark body .qm-support-chat-modal__preview-remove {
    background-color: rgba(244, 63, 94, 0.14) !important;
    border-color: rgba(244, 63, 94, 0.24) !important;
    color: #fda4af !important;
}

/* ---------- 5. 表单自动填充兜底（浏览器 autofill 在暗色下默认浅黄/白） ---------- */
html.dark body :is(input, textarea, select):-webkit-autofill,
html.dark body :is(input, textarea, select):-webkit-autofill:hover,
html.dark body :is(input, textarea, select):-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 1000px var(--qm-bg-dark-800) inset !important;
    -webkit-text-fill-color: var(--qm-text-primary) !important;
    caret-color: var(--qm-text-primary) !important;
    border-color: var(--qm-border-dark-600) !important;
    transition: background-color 9999s ease-out 0s;
}

/* ---------- 6. 内容图片全局兜底（防白底图刺眼；头像/emoji/图标不处理） ---------- */
html.dark body :is(
    .qm-article-content img,
    .qm-article-main-content img,
    .qm-article-hero img,
    .qm-post-card__cover img,
    .qm-card-cover img,
    .qm-related-item img,
    .post-card img,
    .qm-material-preview img,
    .qm-software-detail-screenshot img,
    .entry-content img
):not(.emoji):not([class*="emoji"]):not([class*="avatar"]):not([class*="logo"]) {
    filter: brightness(0.93) contrast(1.03);
    transition: filter 0.2s ease;
}

html.dark body :is(
    .qm-article-content img,
    .qm-article-main-content img,
    .qm-article-hero img
):hover {
    filter: brightness(1) contrast(1);
}

/* 白底截图容器：暗色下给深色底 */
html.dark body :is(
    .qm-article-content img[style*="background"],
    .qm-software-detail-screenshot,
    .qm-material-preview,
    .qm-screenshot-wrap,
    .image-box,
    .wp-caption
) {
    background-color: var(--qm-bg-dark-800) !important;
}

/* 懒加载图片占位 */
html.dark body .qm-lazy-img,
html.dark body img[data-src][src*="data:image"] {
    background-color: var(--qm-bg-dark-700);
}

/* ---------- 7. 空状态 / 占位 / 加载态统一 ---------- */
html.dark body :is(
    .qm-empty-state,
    .qm-cards-empty,
    .qm-post-list-empty,
    .qm-board-empty,
    .qm-drafts-empty,
    .qm-posts-loading,
    .qm-posts-error
) {
    background-color: var(--qm-bg-dark-800);
    border-color: var(--qm-border-dark-600);
    color: var(--qm-text-muted);
}

html.dark body :is(.qm-empty-state i, .qm-cards-empty i, .qm-post-list-empty i) {
    color: var(--qm-text-lighter);
}

/* ---------- 8. 移动端底部固定层：玻璃化统一 ---------- */
@media (max-width: 991.98px) {
    html.dark body :is(
        .mobile-bottom-bar,
        .qm-mobile-nav,
        .qm-mobile-menu,
        .qm-mobile-search__panel,
        .qm-mobile-bottom-toolbar
    ) {
        background-color: var(--qm-glass-bg-strong) !important;
        border-color: var(--qm-glass-border) !important;
        -webkit-backdrop-filter: blur(var(--qm-glass-blur-radius-mobile)) saturate(180%);
        backdrop-filter: blur(var(--qm-glass-blur-radius-mobile)) saturate(180%);
    }
}

/* ---------- 9. 全局滚动条（暗色） ---------- */
html.dark body * {
    scrollbar-width: thin;
    scrollbar-color: var(--qm-bg-dark-600) transparent;
}

html.dark body ::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

html.dark body ::-webkit-scrollbar-thumb {
    background-color: var(--qm-bg-dark-600);
    border-radius: 8px;
    border: 2px solid transparent;
    background-clip: content-box;
}

html.dark body ::-webkit-scrollbar-thumb:hover {
    background-color: var(--qm-bg-dark-600);
}

html.dark body ::-webkit-scrollbar-track {
    background: transparent;
}

/* ---------- 10. 头像 / Logo 透明底兜底（避免白底圆块） ---------- */
html.dark body :is(
    .avatar,
    .qm-avatar,
    .qm-user-avatar img,
    .site-logo img,
    .qm-brand img
) {
    background: transparent;
}

/* ---------- 11. 收款码 / 二维码等必须保持白底的图片（不反转） ---------- */
html.dark body [style*="background:#fff"][style*="border-radius"]:has(img[src*="qrcode"]),
html.dark body [style*="background: #fff"][style*="border-radius"]:has(img[src*="qrcode"]),
html.dark body img[src*="qrcode"],
html.dark body img[src*="qr_code"] {
    background-color: #ffffff !important;
    filter: none !important;
}
