/* ==========================================================================
 * LensCabin 后台 · 双主题视觉层（昼间白 / 夜间深色）
 * 文件：static/merchant/theme.css
 *
 * 结构：
 *   1) :root                                    昼间 token
 *   2) html[data-theme="dark"]                  夜间 token
 *   3) 组件覆盖规则                             全部引用 var()，两套主题共用
 *
 * 切换：theme-switch.js 按本地时间自动选，并在 <html> 上写 data-theme；
 *       用户手动选择存 localStorage，优先于时间。
 * 回滚：删掉 theme.css 的 link（或 admin.css 里的内联段）即回到原始皮肤。
 * 注意：本文件注释内不得出现块注释结束符，改动时留意。
 * ========================================================================== */

/* ===================== 昼间（默认）：白底 + 冷灰分层 =====================
 * 不打 data-theme 时即为此套，JS 失效也安全降级到明亮模式。
 */
:root {
  /* 层次：页面底 → 面 → 次级面 → 悬停面 */
  --bg:          #f5f6f8;
  --surface:     #ffffff;
  --surface-2:   #f7f8fa;
  --surface-3:   #eff1f5;
  --surface-4:   #e5e8ee;

  /* 边框 */
  --line:        #e3e6ec;
  --line-soft:   #edeff3;
  --line-strong: #ccd1da;

  /* 文字 */
  --text:        #16181d;
  --text-2:      #5b6270;
  --text-3:      #656c7a;
  --text-inv:    #ffffff;

  /* 强调与语义 */
  --accent:      #b3322a;
  --accent-hi:   #92271f;
  --accent-dim:  rgba(179, 50, 42, 0.08);
  /* accent-text：用于「彩字压淡色底」场景（标签/激活Tab/数值），
     昼间深红 #92271f（淡底 7.4:1）／夜间亮红 #f07268（深底 6.2:1）。
     直接拿 --accent 当文字色在夜间只有 3.7:1，别改回去。 */
  --accent-text: #92271f;
  --accent-border: rgba(179, 50, 42, 0.30);
  --accent-hover:  rgba(179, 50, 42, 0.10);
  --success:     #0f8a5f;
  --success-dim: rgba(15, 138, 95, 0.09);
  --success-border: rgba(15, 138, 95, 0.28);
  --success-hover:  rgba(15, 138, 95, 0.16);
  --success-text: #0a6b49;
  --warning:     #b0741a;
  --warning-dim: rgba(176, 116, 26, 0.10);
  --warning-border: rgba(176, 116, 26, 0.28);
  --warning-hover:  rgba(176, 116, 26, 0.16);
  --warning-text: #7f5408;
  --danger:      #c53636;
  --danger-dim:  rgba(197, 54, 54, 0.09);
  --danger-border: rgba(197, 54, 54, 0.28);
  --danger-hover:  rgba(197, 54, 54, 0.16);
  --danger-text: #a32a2a;
  --info:        #2f6fd0;
  --info-dim:    rgba(47, 111, 208, 0.09);
  --info-border: rgba(47, 111, 208, 0.28);
  --info-hover:  rgba(47, 111, 208, 0.16);
  --info-text:   #255089;
  /* purple：大屏渠道/品类第四色（原大屏写死 #9b59b6，接入主题后按 AA 调过） */
  --purple:      #7c5cbf;
  --purple-dim:  rgba(124, 92, 191, 0.09);
  --purple-border: rgba(124, 92, 191, 0.28);
  --purple-hover:  rgba(124, 92, 191, 0.16);
  --purple-text: #5b448f;

  /* 尺寸与阴影（浅色靠 1px 边框 + 极轻投影，不用重阴影） */
  --radius:      10px;
  --radius-lg:   14px;
  --radius-pill: 999px;
  --shadow:      0 1px 2px rgba(16, 24, 40, 0.05);
  --shadow-lg:   0 16px 40px rgba(16, 24, 40, 0.13);
  --ring:        0 0 0 3px rgba(179, 50, 42, 0.16);

  --font:        'Inter', 'Noto Sans SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono:   'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* 组件级语义（两种主题必须都定义，否则切换后失效） */
  --header-bg:   rgba(255, 255, 255, 0.88);
  --table-head-bg: #f1f3f7;
  --table-head-fg: #5b6270;
  --input-bg:    #ffffff;
  --knob:        #ffffff;
  --on-accent:   #ffffff;
  --switch-off:  #ccd1da;
  --sidebar-border: #e3e6ec;
  --stripe:      rgba(16, 24, 40, 0.016);
  --scrollbar:   #ccd1da;
  --scrollbar-hover: #b4bac5;
  --overlay:     rgba(16, 24, 40, 0.40);
  --sel-bg:      rgba(179, 50, 42, 0.16);
  --sel-fg:      #16181d;
  --btn-close-filter: none;

  /* 覆盖旧变量，让仍按老变量写法的局部样式一起跟过来 */
  --ink:         #16181d;
  --ink-soft:    #2c313b;
  --gilt:        #b3322a;
  --gilt-dark:   #8f271f;
  --gilt-light:  #656c7a;
  --cream:       #f5f6f8;
  --paper:       #ffffff;
  --muted:       #5b6270;
  --border:      #e3e6ec;
  --card-bg:     #ffffff;
  --content-bg:  #f5f6f8;
  --sidebar-bg:  #ffffff;
  --sidebar-hover: #f3f5f8;
  --sidebar-active: #eef1f6;
  --sidebar-text: #5b6270;
  --sidebar-text-active: #16181d;
  --font-serif:  var(--font);
  --sidebar-w:   230px;
  --sidebar-accent: var(--accent);
  --accent-hover-color: #92271f;
  --text-secondary: #5b6270;
}

/* ===================== 夜间：深灰分层 + 高对比 =====================
 * <html data-theme="dark"> 时生效。靠边框分层，阴影只做极轻贴地感。
 */
html[data-theme="dark"] {
  --bg:          #0d0e10;
  --surface:     #16181d;
  --surface-2:   #1c1f25;
  --surface-3:   #20242b;
  --surface-4:   #272c34;

  --line:        #2a3039;
  --line-soft:   #21252c;
  --line-strong: #3a4150;

  --text:        #e8eaed;
  --text-2:      #a0a6af;
  --text-3:      #8b919a;
  --text-inv:    #0d0e10;

  /* 夜间强调色压暗到 #cf3d2c / hover #bf3524：亮红 #e8503f 配白字只有 3.72:1、hover 2.82:1，
     均低于 AA 4.5。压暗后白字 4.82:1、hover 5.60:1，且深底上仍明显（4.0:1）。别改回去。 */
  --accent:      #cf3d2c;
  --accent-hi:   #bf3524;
  --accent-dim:  rgba(207, 61, 44, 0.14);
  --accent-text: #f07268;
  --accent-border: rgba(207, 61, 44, 0.30);
  --accent-hover:  rgba(207, 61, 44, 0.14);
  --success:     #34d399;
  --success-dim: rgba(52, 211, 153, 0.13);
  --success-border: rgba(52, 211, 153, 0.28);
  --success-hover:  rgba(52, 211, 153, 0.22);
  --success-text: #a7f3d0;
  --warning:     #f5a524;
  --warning-dim: rgba(245, 165, 36, 0.13);
  --warning-border: rgba(245, 165, 36, 0.28);
  --warning-hover:  rgba(245, 165, 36, 0.22);
  --warning-text: #fbd38d;
  --danger:      #f05252;
  --danger-dim:  rgba(240, 82, 82, 0.13);
  --danger-border: rgba(240, 82, 82, 0.28);
  --danger-hover:  rgba(240, 82, 82, 0.22);
  --danger-text: #ffb4b4;
  --info:        #5b9eff;
  --info-dim:    rgba(91, 158, 255, 0.13);
  --info-border: rgba(91, 158, 255, 0.28);
  --info-hover:  rgba(91, 158, 255, 0.20);
  --info-text:   #bfdbfe;
  /* purple：大屏渠道/品类第四色（浅紫 #a78bfa 在深底 6.6:1） */
  --purple:      #a78bfa;
  --purple-dim:  rgba(167, 139, 250, 0.13);
  --purple-border: rgba(167, 139, 250, 0.28);
  --purple-hover:  rgba(167, 139, 250, 0.22);
  --purple-text: #d3c2f7;

  --shadow:      0 1px 2px rgba(0, 0, 0, 0.40);
  --shadow-lg:   0 18px 48px rgba(0, 0, 0, 0.55);
  --ring:        0 0 0 3px rgba(207, 61, 44, 0.22);

  --header-bg:   rgba(17, 19, 22, 0.92);
  --table-head-bg: #1c1f25;
  --table-head-fg: #8b919a;
  --input-bg:    #101216;
  --knob:        #ffffff;
  --on-accent:   #ffffff;
  --switch-off:  #3a4049;
  --sidebar-border: #1a1d22;
  --stripe:      rgba(255, 255, 255, 0.012);
  --scrollbar:   #2c313a;
  --scrollbar-hover: #3a4049;
  --overlay:     rgba(0, 0, 0, 0.62);
  --sel-bg:      rgba(207, 61, 44, 0.30);
  --sel-fg:      #ffffff;
  --btn-close-filter: invert(1) grayscale(1) brightness(1.6);

  --ink:         #e8eaed;
  --ink-soft:    #cfd3d9;
  --gilt:        #cf3d2c;
  --gilt-dark:   #e8907f;
  --gilt-light:  #8b919a;
  --cream:       #0d0e10;
  --paper:       #14161a;
  --muted:       #a0a6af;
  --border:      #2a3039;
  --card-bg:     #16181d;
  --content-bg:  #0d0e10;
  --sidebar-bg:  #08090b;
  --sidebar-hover: #15171b;
  --sidebar-active: #1b1e23;
  --sidebar-text: #8b919a;
  --sidebar-text-active: #ffffff;
  --accent-hover-color: #bf3524;
  --text-secondary: #a0a6af;
}


html, body {
  background: var(--bg) !important;
  color: var(--text) !important;
  font-family: var(--font) !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.font-serif, .font-display {
  font-family: var(--font) !important;
  letter-spacing: 0 !important;
  font-weight: 650 !important;
}

::selection { background: var(--sel-bg); color: var(--sel-fg); }

/* 滚动条 */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--scrollbar); border-radius: 6px; border: 2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-hover); }

/* ==================== 布局骨架 ==================== */
.admin-wrapper { background: var(--bg) !important; }
.admin-content,
.content,
.main-content { background: var(--bg) !important; color: var(--text) !important; }
/* flex 子项默认 min-width:auto，宽表格会把整个骨架撑出横向滚动条 */
.admin-content,
.main-content { min-width: 0 !important; }

/* ==================== 侧边栏 ==================== */
.admin-sidebar {
  background: var(--sidebar-bg) !important;
  border-right: 1px solid var(--sidebar-border) !important;
}
.admin-sidebar .brand,
.admin-sidebar .brand span,
.admin-sidebar .brand small {
  color: var(--text) !important;
  letter-spacing: 0.3px;
}
.admin-sidebar .brand small { color: var(--text-3) !important; font-weight: 500; }

.admin-sidebar .nav-link,
.admin-sidebar .nav-link span,
.admin-sidebar .menu-group > .nav-link {
  color: var(--sidebar-text) !important;
  border-radius: 7px;
  transition: background .14s ease, color .14s ease;
}
.admin-sidebar .nav-link:hover,
.admin-sidebar .nav-link:hover span,
.admin-sidebar .menu-group > .nav-link:hover {
  background: var(--sidebar-hover) !important;
  color: var(--text) !important;
}
.admin-sidebar .nav-link.active,
.admin-sidebar .nav-link.active span,
.admin-sidebar .menu-group > .nav-link.active {
  background: var(--sidebar-active) !important;
  color: var(--sidebar-text-active) !important;
  font-weight: 600;
}
/* 指示条改由结构层伪元素绘制，这里不再用 inset 阴影（圆角会削成「(」形） */
/* 子菜单容器透明（白天不要暗块）。只作用于容器 —— 此前把 .menu-sub a 一起写进
   background:transparent !important，二级激活的底色被这条一并压掉，
   生产里二级菜单只剩一条 3px 竖条，用户看不出当前在哪一页 */
.admin-sidebar .menu-sub { background: transparent !important; }
.admin-sidebar .menu-sub a { color: var(--sidebar-text) !important; }
.admin-sidebar .menu-sub a:hover { color: var(--text) !important; background: var(--sidebar-hover) !important; }
/* 二级激活：写在 hover 之后，同特异性下激活态胜出 */
.admin-sidebar .menu-sub a.active {
  color: var(--accent) !important;
  background: var(--sidebar-active) !important;
  font-weight: 600;
}
.admin-sidebar .badge-counter {
  background: var(--accent) !important;
  color: var(--on-accent) !important;
  border-radius: var(--radius-pill);
}

/* 侧边栏折叠按钮 / 分隔线 */
.admin-sidebar .menu-toggle,
.admin-sidebar .nav-link-top { color: var(--sidebar-text) !important; }
.admin-sidebar .menu-toggle:hover { color: var(--text) !important; }
.admin-sidebar hr,
.admin-sidebar .divider { border-color: var(--sidebar-border) !important; }

/* 子菜单小标题（进销存管理）：原先内联写死 rgba(255,255,255,.35)，昼间白底不可见。
   度量已移到 merchant.css，本层只管颜色：--text-3 实色昼 5.28:1 / 夜 6.2:1 过 AA（规矩 152）。
   注意：弱化小字禁用 opacity 半透明，会与背景混色跌破 4.5:1（坑 #29）。 */
.admin-sidebar .menu-sub-header { color: var(--text-3); }

/* ==================== 顶栏 ==================== */
.admin-header {
  background: var(--header-bg) !important;
  border-bottom: 1px solid var(--line) !important;
  backdrop-filter: saturate(140%) blur(10px);
  color: var(--text) !important;
}
.admin-header .page-title,
.admin-header h1,
.admin-header h2 { color: var(--text) !important; font-weight: 650; letter-spacing: -0.2px; }

.global-search {
  background: var(--surface-2) !important;
  border: 1px solid var(--line) !important;
  border-radius: 8px !important;
  color: var(--text) !important;
}
.global-search:focus-within { border-color: var(--line-strong) !important; box-shadow: var(--ring); }
.global-search input { background: transparent !important; color: var(--text) !important; }
.global-search input::placeholder { color: var(--text-3) !important; }

.store-switch,
.view-toggle,
.icon-btn {
  background: var(--surface-2) !important;
  border: 1px solid var(--line) !important;
  color: var(--text-2) !important;
  border-radius: 8px !important;
}
.store-switch:hover,
.view-toggle:hover,
.icon-btn:hover { background: var(--surface-3) !important; color: var(--text) !important; }
.view-toggle.active, .view-toggle .active {
  background: var(--surface-4) !important;
  color: var(--text) !important;
}

.user-menu { background: transparent !important; color: var(--text) !important; }
.user-menu-dropdown,
.dropdown-item,
.col-control-popup {
  background: var(--surface-2) !important;
  border: 1px solid var(--line) !important;
  color: var(--text) !important;
  border-radius: 10px;
  box-shadow: var(--shadow-lg) !important;
}
.user-menu-item, .dropdown-item { color: var(--text-2) !important; }
.user-menu-item:hover, .dropdown-item:hover { background: var(--surface-3) !important; color: var(--text) !important; }
.dropdown-divider { border-color: var(--line) !important; }

/* ==================== 卡片 ==================== */
.card {
  background: var(--surface) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--radius) !important;
  box-shadow: none !important;
  color: var(--text) !important;
}
.card-header {
  background: transparent !important;
  border-bottom: 1px solid var(--line-soft) !important;
  color: var(--text) !important;
  font-weight: 650;
}
.card-body { color: var(--text) !important; }
.card-title { color: var(--text) !important; font-weight: 650; letter-spacing: -0.1px; }
.card-footer { background: transparent !important; border-top: 1px solid var(--line-soft) !important; }

/* KPI 卡片 */
.kpi-card,
.kpi-card-light {
  background: var(--surface) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--radius) !important;
  box-shadow: none !important;
  color: var(--text) !important;
}
/* 左侧 2px 强调条（原黑金版没有，深色工具风用彩色竖条区分指标） */
.kpi-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  width: 2px !important;
  height: 100% !important;
  background: var(--accent) !important;
  border-radius: 2px 0 0 2px;
}
/* 原 120px 金色径向光晕：工具风不需要装饰性光斑，直接去掉 */
.kpi-card::after {
  display: none !important;
}
.kpi-card.cyan::before { background: var(--info) !important; }
.kpi-card.green::before { background: var(--success) !important; }
.kpi-card.orange::before { background: var(--warning) !important; }
.kpi-card.red::before,
.kpi-card.purple::before { background: var(--accent) !important; }

/* KPI 内部已有 .stat 结构的页（老页面）一起深色化 */
.kpi-card .stat {
  background: var(--surface-2) !important;
  border: 1px solid var(--line-soft);
  border-radius: 8px !important;
}
.kpi-card .stat .k { color: var(--text-3) !important; }
.kpi-card .stat .v,
.kpi-card .stat .v .unit {
  color: var(--text) !important;
  font-family: var(--font-mono) !important;
}
.kpi-card .stat .delta.up { color: var(--success) !important; }
.kpi-card .stat .delta.down { color: var(--danger) !important; }
.kpi-card .btn-light {
  background: var(--surface-3) !important;
  color: var(--text) !important;
  border-color: var(--line-strong) !important;
}
.kpi-card .btn-light:hover { background: var(--surface-4) !important; }

.kpi-label { color: var(--text-3) !important; letter-spacing: 0.6px; text-transform: uppercase; font-size: 11px !important; }
.kpi-value { color: var(--text) !important; font-family: var(--font-mono) !important; font-weight: 600 !important; letter-spacing: -0.5px; }
.kpi-value .unit, .kpi-sub { color: var(--text-3) !important; }
.kpi-sub .up { color: var(--success) !important; }
.kpi-sub .down { color: var(--danger) !important; }

/* 通用统计小块 */
.stat { color: var(--text) !important; }
.stat .k, .stat .label { color: var(--text-3) !important; }
.stat .v, .stat .value, .v { color: var(--text) !important; }

/* ==================== 表格 ==================== */
.table {
  color: var(--text) !important;
  border-color: var(--line) !important;
  --bs-table-bg: transparent;
  --bs-table-color: var(--text);
  --bs-table-border-color: var(--line-soft);
}
.table > :not(caption) > * > * {
  background: transparent !important;
  border-bottom-color: var(--line-soft) !important;
  color: var(--text) !important;
  box-shadow: none !important;
}
.table thead th,
.table > thead > tr > th {
  background: var(--table-head-bg) !important;
  color: var(--table-head-fg) !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  border-bottom: 1px solid var(--line) !important;
  white-space: nowrap;
}
.table tbody tr { transition: background .12s ease; }
.table tbody tr:hover > *,
.table-hover tbody tr:hover > * {
  background: var(--surface-2) !important;
  color: var(--text) !important;
}
.table td { color: var(--text-2) !important; vertical-align: middle; }
.table td strong, .table td b { color: var(--text) !important; font-weight: 600; }
.table-striped tbody tr:nth-of-type(odd) > * { background: var(--stripe) !important; }
.table .sortable { color: var(--text-3) !important; cursor: pointer; }
.table .sortable:hover { color: var(--text) !important; }
.sort-icon { color: var(--text-3) !important; }

/* ==================== 徽章 / 状态 ==================== */
.badge {
  border-radius: 6px !important;
  font-weight: 600 !important;
  font-size: 11.5px !important;
  padding: 3px 8px !important;
  letter-spacing: 0.2px;
  border: 1px solid transparent;
}
.badge.bg-success, .badge-success { background: var(--success-dim) !important; color: var(--success-text) !important; border-color: var(--success-border); }
.badge.bg-danger, .badge-danger { background: var(--danger-dim) !important; color: var(--danger-text) !important; border-color: var(--danger-border); }
.badge.bg-warning, .badge-warning { background: var(--warning-dim) !important; color: var(--warning-text) !important; border-color: var(--warning-border); }
.badge.bg-info, .badge-info { background: var(--info-dim) !important; color: var(--info-text) !important; border-color: var(--info-border); }
.badge.bg-secondary, .badge-secondary { background: var(--surface-3) !important; color: var(--text-2) !important; border-color: var(--line); }
.badge.bg-primary { background: var(--accent-dim) !important; color: var(--accent-text) !important; border-color: var(--accent-border); }
.badge.st-ACTIVE, .badge.st-INACTIVE {
  background: var(--surface-3) !important;
  color: var(--text-2) !important;
}
.badge.st-ACTIVE { background: var(--success-dim) !important; color: var(--success-text) !important; }

.text-danger { color: var(--danger) !important; }
.text-success { color: var(--success) !important; }
.text-warning { color: var(--warning) !important; }
.text-muted, .text-secondary { color: var(--text-3) !important; }

/* ==================== 按钮 ==================== */
.btn {
  border-radius: 8px !important;
  font-weight: 550 !important;
  font-size: 13px !important;
  padding: 7px 14px !important;
  border: 1px solid transparent;
  transition: background .14s ease, border-color .14s ease, color .14s ease;
  box-shadow: none !important;
}
.btn:focus, .btn:focus-visible { box-shadow: var(--ring) !important; outline: none !important; }

.btn-primary {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: var(--on-accent) !important;
}
.btn-primary:hover { background: var(--accent-hi) !important; border-color: var(--accent-hi) !important; }

.btn-secondary, .btn-light, .btn-default, .btn-outline-secondary {
  background: var(--surface-2) !important;
  border-color: var(--line) !important;
  color: var(--text) !important;
}
.btn-secondary:hover, .btn-light:hover, .btn-default:hover, .btn-outline-secondary:hover {
  background: var(--surface-3) !important;
  border-color: var(--line-strong) !important;
  color: var(--text) !important;
}

.btn-outline-primary {
  background: transparent !important;
  border-color: var(--accent-border) !important;
  color: var(--accent-text) !important;
}
.btn-outline-primary:hover { background: var(--accent-dim) !important; border-color: var(--accent) !important; }

.btn-outline-danger {
  background: transparent !important;
  border-color: var(--danger-border) !important;
  color: var(--danger-text) !important;
}
.btn-outline-danger:hover { background: var(--danger-dim) !important; border-color: var(--danger) !important; }

/* 语义按钮：深色下不用高饱和实心块，改「暗底 + 彩字 + 细边」，悬停加深 */
.btn-success {
  background: var(--success-dim) !important;
  border-color: var(--success-border) !important;
  color: var(--success-text) !important;
}
.btn-success:hover { background: var(--success-hover) !important; border-color: var(--success) !important; }

.btn-danger {
  background: var(--danger-dim) !important;
  border-color: var(--danger-border) !important;
  color: var(--danger-text) !important;
}
.btn-danger:hover { background: var(--danger-hover) !important; border-color: var(--danger) !important; }

.btn-warning {
  background: var(--warning-dim) !important;
  border-color: var(--warning-border) !important;
  color: var(--warning-text) !important;
}
.btn-warning:hover { background: var(--warning-hover) !important; border-color: var(--warning) !important; }

.btn-link { color: var(--accent-text) !important; }
.btn-sm { padding: 4px 10px !important; font-size: 12px !important; }

/* ==================== 表单 ==================== */
.form-control, .form-select {
  background: var(--input-bg) !important;
  border: 1px solid var(--line) !important;
  color: var(--text) !important;
  border-radius: 8px !important;
  font-size: 13px !important;
  transition: border-color .14s ease, box-shadow .14s ease;
}
.form-control::placeholder { color: var(--text-3) !important; }

/* 未挂 .form-control 的裸控件（页面内联样式的表单最多）：不给底色就是浏览器默认白底，
   夜间的浅色文字压上去整格看不见（2026-10-24 装修页输入框实证）。这里只给默认值，
   不加 !important，页面自己写的样式仍可覆盖。 */
input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="file"]):not([type="range"]):not([type="color"]):not([type="hidden"]),
select, textarea {
  background-color: var(--input-bg);
  color: var(--text);
  border-color: var(--line);
}
.form-control:focus, .form-select:focus {
  background: var(--input-bg) !important;
  border-color: var(--accent) !important;
  color: var(--text) !important;
  box-shadow: var(--ring) !important;
}
.form-control:disabled, .form-control[readonly] {
  background: var(--surface-2) !important;
  color: var(--text-3) !important;
  border-color: var(--line-soft) !important;
}
.form-label, label { color: var(--text-2) !important; font-size: 12.5px; font-weight: 550; }
.form-text, .help-text { color: var(--text-3) !important; }
.input-group-text {
  background: var(--surface-2) !important;
  border-color: var(--line) !important;
  color: var(--text-2) !important;
}
.form-check-input {
  background-color: var(--input-bg) !important;
  border-color: var(--line-strong) !important;
}
.form-check-input:checked { background-color: var(--accent) !important; border-color: var(--accent) !important; }
.form-check-input:focus { box-shadow: var(--ring) !important; }
.form-check-label { color: var(--text-2) !important; }

/* 下拉选项（原生 select 弹层） */
select option { background: var(--surface-2); color: var(--text); }

/* ==================== Alert ==================== */
.alert {
  border-radius: var(--radius) !important;
  border: 1px solid var(--line) !important;
  background: var(--surface-2) !important;
  color: var(--text) !important;
}
.alert-danger  { background: var(--danger-dim) !important;  border-color: var(--danger-border) !important;  color: var(--danger-text) !important; }
.alert-success { background: var(--success-dim) !important; border-color: var(--success-border) !important; color: var(--success-text) !important; }
.alert-warning { background: var(--warning-dim) !important; border-color: var(--warning-border) !important; color: var(--warning-text) !important; }
.alert-info    { background: var(--info-dim) !important;    border-color: var(--info-border) !important; color: var(--info-text) !important; }

/* ==================== Toast ==================== */
.toast-item {
  background: var(--surface-3) !important;
  border: 1px solid var(--line-strong) !important;
  color: var(--text) !important;
  border-radius: var(--radius) !important;
  box-shadow: var(--shadow-lg) !important;
}

/* ==================== Skeleton ==================== */
.skeleton, .skeleton-line, .skeleton-block {
  background: linear-gradient(90deg, var(--surface-2) 25%, var(--surface-3) 37%, var(--surface-2) 63%) !important;
  background-size: 400% 100% !important;
  border-radius: 6px;
}

/* ==================== 空状态 ==================== */
.empty-state { color: var(--text-3) !important; }
.empty-state svg, .empty-state img { opacity: .5; filter: grayscale(1); }
.empty-state .empty-title, .empty-state h3, .empty-state h4 { color: var(--text-2) !important; }
.empty-state .empty-desc, .empty-state p { color: var(--text-3) !important; }

/* ==================== 抽屉 / Modal ==================== */
.drawer,
.drawer-content,
.modal-content,
.offcanvas {
  background: var(--surface) !important;
  border: 1px solid var(--line) !important;
  color: var(--text) !important;
  box-shadow: var(--shadow-lg) !important;
}
.drawer-header, .modal-header {
  background: transparent !important;
  border-bottom: 1px solid var(--line-soft) !important;
  color: var(--text) !important;
}
.drawer-body, .modal-body { color: var(--text-2) !important; }
.modal-footer { background: transparent !important; border-top: 1px solid var(--line-soft) !important; }
.modal-overlay, .drawer-overlay, .modal-backdrop {
  background: var(--overlay) !important;
}
.modal-backdrop.show { opacity: .7 !important; }
.info-block {
  background: var(--surface-2) !important;
  border: 1px solid var(--line-soft) !important;
  border-radius: 8px;
  color: var(--text-2) !important;
}
.info-block .label, .info-block .k { color: var(--text-3) !important; }
.info-block .value, .info-block .v { color: var(--text) !important; }
.btn-close { filter: var(--btn-close-filter); opacity: .55; }
.btn-close:hover { opacity: 1; }

/* ==================== 商品卡片视图 ==================== */
.product-card {
  background: var(--surface) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--radius) !important;
  box-shadow: none !important;
  transition: border-color .16s ease, transform .16s ease;
}
.product-card:hover { border-color: var(--line-strong) !important; transform: translateY(-1px); }
.product-card .card-img, .product-card img { background: var(--surface-2) !important; }
.card-price { color: var(--accent-hi) !important; font-family: var(--font-mono) !important; font-weight: 600; }

/* 缩略图占位 */
.card-img, .thumb, .sku-thumb, .product-thumb { background: var(--surface-2) !important; }

/* ==================== 批量操作条 / 筛选栏 ==================== */
.batch-bar {
  background: var(--surface-3) !important;
  border: 1px solid var(--line-strong) !important;
  color: var(--text) !important;
  border-radius: var(--radius) !important;
  box-shadow: var(--shadow-lg) !important;
}
.filter-bar, .filters, .toolbar {
  background: var(--surface) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--radius) !important;
  color: var(--text-2) !important;
}

/* ==================== 状态开关 / 滑块 ==================== */
.status-switch { color: var(--text-2) !important; }
.status-switch .status-slider,
.status-slider {
  background: var(--switch-off) !important;
  border: none !important;
  transition: background .16s ease;
}
.status-switch .status-slider::before,
.status-slider::before { background: var(--knob) !important; }
.status-switch .status-toggle:checked + .status-slider,
.status-switch .status-toggle:checked + .status-slider { background: var(--accent) !important; }
.status-switch .status-toggle:focus + .status-slider { box-shadow: var(--ring) !important; }
.status-switch .status-text { color: var(--text-2) !important; }
.status-switch.st-INACTIVE .status-slider { background: var(--switch-off) !important; }
.status-switch.st-INACTIVE .status-text { color: var(--text-3) !important; }
.status-toggle.on, .status-switch.on, .status-toggle.active {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
}

/* ==================== 分页 ==================== */
.pagination { gap: 4px; }
.pagination .page-link,
.pagination a, .pagination button, .pagination .page-item {
  background: var(--surface-2) !important;
  border: 1px solid var(--line) !important;
  color: var(--text-2) !important;
  border-radius: 7px !important;
  font-size: 12.5px;
}
.pagination .page-link:hover,
.pagination a:hover, .pagination button:hover {
  background: var(--surface-3) !important;
  color: var(--text) !important;
  border-color: var(--line-strong) !important;
}
.pagination .active .page-link,
.pagination .page-item.active .page-link,
.pagination a.active, .pagination button.active {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: var(--on-accent) !important;
  font-weight: 600;
}
.pagination .disabled .page-link,
.pagination .page-item.disabled .page-link { color: var(--text-3) !important; opacity: .5; }

/* ==================== 文本工具 ==================== */
h1, h2, h3, h4, h5, h6 { color: var(--text) !important; font-weight: 650; letter-spacing: -0.2px; }
p, span, div, label, td, th, li { border-color: var(--line-soft); }
hr { border-color: var(--line) !important; opacity: 1; }
code, pre, .sku-id, .mono { font-family: var(--font-mono) !important; color: var(--text-2) !important; }
pre { background: var(--surface-2) !important; border: 1px solid var(--line) !important; border-radius: 8px; }

/* 链接 */
a { color: var(--text) !important; }
a:hover { color: var(--accent-hi) !important; }
/* 表格里的链接：用 --accent-text（夜间亮红），--accent-hi 夜间是压暗给白字当底色的，
   拿来当 12px 小字只有 2.9:1（2026-10-24 列表「管理/档案」实证）。 */
.table a { color: var(--accent-text) !important; }
.table a:hover { color: var(--accent-text) !important; }
/* 表格里当操作按钮用的链接，别被上面的红字规则染成红字 */
.table a.btn-outline-secondary, .table a.btn-secondary, .table a.btn-light, .table a.btn-default { color: var(--text) !important; }
.table a.btn-outline-primary { color: var(--accent-text) !important; }
.table a.btn-outline-danger { color: var(--danger-text) !important; }
.table a.btn-outline-success { color: var(--success-text) !important; }

/* 表格内的空白占位 / 加载 */
.table .empty, .table .no-data { color: var(--text-3) !important; }

/* Bootstrap 工具类的深色修正 */
.bg-white, .bg-light { background: var(--surface) !important; color: var(--text) !important; }
/* .text-dark / .text-black / .text-body 是 Bootstrap 的「浅底深字」工具类，
   夜间底已经变深，必须跟着翻成亮字，否则整行字消失（2026-10-24 store-config「功能开关」实证）。 */
.text-dark, .text-black, .text-body { color: var(--text) !important; }
.text-muted { color: var(--text-3) !important; }

/* 顶栏头像：底色是红金渐变圆，字母必须压在深红上（夜间 --ink 翻亮后
   白底白字 2.0:1，2026-10-24 巡检实证）。渐变钉成深红，字钉成白色。 */
.admin-header .user-avatar {
  background: linear-gradient(135deg, #8f271f 0%, #cf3d2c 100%) !important;
  color: #fff !important;
}
.border, .border-top, .border-bottom, .border-start, .border-end { border-color: var(--line) !important; }
.shadow-sm, .shadow, .shadow-lg { box-shadow: none !important; }
.list-group-item {
  background: var(--surface) !important;
  border-color: var(--line-soft) !important;
  color: var(--text-2) !important;
}
.nav-tabs { border-bottom-color: var(--line) !important; }
.nav-tabs .nav-link { color: var(--text-3) !important; border: none !important; }
.nav-tabs .nav-link.active {
  color: var(--text) !important;
  background: transparent !important;
  border-bottom: 2px solid var(--accent) !important;
}
.progress { background: var(--surface-3) !important; border-radius: var(--radius-pill); }
.progress-bar { background: var(--accent) !important; }
.dropdown-menu {
  background: var(--surface-2) !important;
  border: 1px solid var(--line) !important;
  box-shadow: var(--shadow-lg) !important;
}


/* ==================== 细节修正（两种主题通用） ==================== */
/* KPI 左侧竖条：上下各收 6px，避开卡片 10px 圆角，否则圆角处会露出直角 */
.kpi-card::before {
  top: 6px !important;
  height: calc(100% - 12px) !important;
  border-radius: 2px !important;
}
