/* ==========================================================================
   言行GEO 全局样式系统
   Version: 1.2.0
   Author: 言行计算机软件有限公司
   Description: AI驱动的全域营销智能平台通用样式系统
   Copyright: © 2025 言行计算机软件有限公司 版权所有
   ========================================================================== */

/* ==========================================================================
   1. CSS变量定义 (主题配置) - 优化颜色对比度
   ========================================================================== */
:root {
  /* 主色调 - 增加饱和度提升可识别性 */
  --primary-color: #2563eb;
  --primary-dark: #1d4ed8;
  --primary-light: #60a5fa;
  --secondary-color: #0891b2;
  --accent-color: #7c3aed;
  --success-color: #059669;
  --warning-color: #d97706;
  --danger-color: #dc2626;
  --info-color: #2563eb;
  
  /* 背景色 - 优化对比度 */
  --dark-bg: #0f172a;
  --darker-bg: #020617;
  --light-bg: #f8fafc;
  --card-bg: rgba(30, 41, 59, 0.7);
  --overlay-bg: rgba(15, 23, 42, 0.9);
  --input-bg: #1e293b;
  --input-bg-light: #ffffff;
  
  /* 文本色 - 增加对比度 */
  --text-primary: #f1f5f9;
  --text-secondary: #cbd5e1;
  --text-muted: #94a3b8;
  --text-dark: #0f172a;
  --text-light: #f8fafc;
  
  /* 边框和阴影 */
  --border-color: rgba(255, 255, 255, 0.15);
  --border-light: #e2e8f0;
  --border-radius-sm: 8px;
  --border-radius: 12px;
  --border-radius-lg: 16px;
  --border-radius-xl: 20px;
  
  --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.1);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
  --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1);
  --shadow-2xl: 0 25px 50px rgba(0, 0, 0, 0.25);
  
  /* 渐变 - 增加对比度 */
  --gradient-primary: linear-gradient(135deg, #2563eb 0%, #0891b2 100%);
  --gradient-primary-horizontal: linear-gradient(90deg, #2563eb 0%, #0891b2 100%);
  --gradient-dark: linear-gradient(135deg, #0f172a 0%, #020617 100%);
  --gradient-light: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
  
  /* 间距 */
  --spacing-xs: 0.25rem;
  --spacing-sm: 0.5rem;
  --spacing-md: 1rem;
  --spacing-lg: 1.5rem;
  --spacing-xl: 2rem;
  --spacing-2xl: 3rem;
  --spacing-3xl: 4rem;
  
  /* 字体大小 */
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;
  --text-5xl: 3rem;
  --text-6xl: 3.75rem;
  
  /* 字体粗细 */
  --font-light: 300;
  --font-normal: 400;
  --font-medium: 500;
  --font-semibold: 600;
  --font-bold: 700;
  --font-extrabold: 800;
  
  /* 过渡动画 */
  --transition-fast: 0.15s ease;
  --transition-normal: 0.3s ease;
  --transition-slow: 0.5s ease;
  
  /* Z-index层级 */
  --z-dropdown: 1000;
  --z-sticky: 1020;
  --z-fixed: 1030;
  --z-modal-backdrop: 1040;
  --z-modal: 1050;
  --z-popover: 1060;
  --z-tooltip: 1070;
  
  /* 容器宽度 */
  --container-xs: 100%;
  --container-sm: 540px;
  --container-md: 720px;
  --container-lg: 960px;
  --container-xl: 1140px;
  --container-xxl: 1320px;
}

/* 浅色主题变量 - 优化对比度 */
[data-theme="light"] {
  --dark-bg: #f8fafc;
  --darker-bg: #e2e8f0;
  --card-bg: rgba(255, 255, 255, 0.95);
  --overlay-bg: rgba(255, 255, 255, 0.95);
  --input-bg: #ffffff;
  --input-bg-light: #ffffff;
  --text-primary: #0f172a;
  --text-secondary: #334155;
  --text-muted: #64748b;
  --text-dark: #020617;
  --border-color: rgba(0, 0, 0, 0.15);
  --border-light: #cbd5e1;
  
  /* 浅色主题下调整部分颜色对比度 */
  --success-color: #047857;
  --warning-color: #b45309;
  --danger-color: #b91c1c;
  --info-color: #1d4ed8;
  
  /* 调整渐变 */
  --gradient-dark: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 100%);
}

/* 深色主题增强 */
[data-theme="dark"] {
  --dark-bg: #0f172a;
  --darker-bg: #020617;
  --card-bg: rgba(30, 41, 59, 0.8);
  --input-bg: #1e293b;
  --text-primary: #f1f5f9;
  --text-secondary: #cbd5e1;
  --text-muted: #94a3b8;
  --border-color: rgba(255, 255, 255, 0.2);
}

/* ==========================================================================
   2. 基础重置与全局样式
   ========================================================================== */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
  background-color: var(--dark-bg);
  color: var(--text-primary);
  line-height: 1.6;
  overflow-x: hidden;
  min-height: 100vh;
  transition: background-color var(--transition-normal);
}

/* 滚动条样式 */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: rgba(30, 41, 59, 0.5);
  border-radius: 5px;
}

::-webkit-scrollbar-thumb {
  background: var(--primary-color);
  border-radius: 5px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--primary-dark);
}

/* 选择文本样式 */
::selection {
  background-color: var(--primary-color);
  color: white;
}

/* 链接 */
a {
  color: var(--primary-color);
  text-decoration: none;
  transition: color var(--transition-fast);
}

a:hover {
  color: var(--primary-light);
}

/* 图片 */
img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* ==========================================================================
   3. 排版系统
   ========================================================================== */
h1, h2, h3, h4, h5, h6 {
  font-weight: var(--font-bold);
  line-height: 1.2;
  margin-bottom: var(--spacing-md);
}

h1 {
  font-size: var(--text-4xl);
  margin-bottom: var(--spacing-lg);
}

h2 {
  font-size: var(--text-3xl);
  margin-bottom: var(--spacing-md);
}

h3 {
  font-size: var(--text-2xl);
  margin-bottom: var(--spacing-md);
}

h4 {
  font-size: var(--text-xl);
  margin-bottom: var(--spacing-sm);
}

h5 {
  font-size: var(--text-lg);
  margin-bottom: var(--spacing-sm);
}

h6 {
  font-size: var(--text-base);
  margin-bottom: var(--spacing-sm);
}

p {
  margin-bottom: var(--spacing-md);
  color: var(--text-primary);
}

.text-primary {
  color: var(--text-primary);
}

.text-secondary {
  color: var(--text-secondary);
}

.text-muted {
  color: var(--text-muted);
}

.text-gradient {
  background: var(--gradient-primary-horizontal);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.text-center {
  text-align: center;
}

.text-left {
  text-align: left;
}

.text-right {
  text-align: right;
}

.font-light { font-weight: var(--font-light); }
.font-normal { font-weight: var(--font-normal); }
.font-medium { font-weight: var(--font-medium); }
.font-semibold { font-weight: var(--font-semibold); }
.font-bold { font-weight: var(--font-bold); }
.font-extrabold { font-weight: var(--font-extrabold); }

.lead {
  font-size: var(--text-xl);
  font-weight: var(--font-normal);
  line-height: 1.7;
}

/* ==========================================================================
   4. 布局系统
   ========================================================================== */
.container {
  width: 100%;
  padding-right: var(--spacing-md);
  padding-left: var(--spacing-md);
  margin-right: auto;
  margin-left: auto;
}

@media (min-width: 576px) {
  .container {
    max-width: var(--container-sm);
  }
}

@media (min-width: 768px) {
  .container {
    max-width: var(--container-md);
  }
}

@media (min-width: 992px) {
  .container {
    max-width: var(--container-lg);
  }
}

@media (min-width: 1200px) {
  .container {
    max-width: var(--container-xl);
  }
}

@media (min-width: 1400px) {
  .container {
    max-width: var(--container-xxl);
  }
}

.container-fluid {
  width: 100%;
  padding-right: var(--spacing-md);
  padding-left: var(--spacing-md);
  margin-right: auto;
  margin-left: auto;
}

.row {
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-1 * var(--spacing-md));
  margin-left: calc(-1 * var(--spacing-md));
}

.col {
  flex: 1 0 0%;
  padding-right: var(--spacing-md);
  padding-left: var(--spacing-md);
}

/* ==========================================================================
   5. 背景与装饰元素
   ========================================================================== */
.background-gradient {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -10;
  background: var(--gradient-dark);
}

/* ==========================================================================
   6. 按钮组件 - 优化对比度
   ========================================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.75rem;
  border-radius: var(--border-radius);
  font-weight: var(--font-semibold);
  font-size: var(--text-base);
  text-decoration: none;
  transition: all var(--transition-normal);
  border: none;
  cursor: pointer;
  text-align: center;
  gap: 0.5rem;
  min-height: 52px;
  position: relative;
  overflow: hidden;
  user-select: none;
  white-space: nowrap;
}

.btn::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.15);
  opacity: 0;
  transition: opacity var(--transition-fast);
}

.btn:hover::after {
  opacity: 1;
}

.btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  pointer-events: none;
}

/* 按钮变体 - 优化对比度 */
.btn-primary {
  background: var(--gradient-primary);
  color: white;
  box-shadow: 0 4px 15px rgba(37, 99, 235, 0.4);
}

.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(37, 99, 235, 0.5);
}

.btn-secondary {
  background: rgba(255, 255, 255, 0.15);
  color: white;
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.25);
}

.btn-secondary:hover {
  background: rgba(255, 255, 255, 0.2);
  transform: translateY(-2px);
}

.btn-outline {
  background: transparent;
  color: var(--primary-color);
  border: 2px solid var(--primary-color);
}

.btn-outline:hover {
  background: var(--primary-color);
  color: white;
}

.btn-success {
  background: var(--success-color);
  color: white;
}

.btn-warning {
  background: var(--warning-color);
  color: white;
}

.btn-danger {
  background: var(--danger-color);
  color: white;
}

.btn-info {
  background: var(--info-color);
  color: white;
}

/* 按钮大小 */
.btn-sm {
  padding: 0.5rem 1rem;
  font-size: var(--text-sm);
  min-height: 40px;
}

.btn-lg {
  padding: 1rem 2rem;
  font-size: var(--text-lg);
  min-height: 60px;
}

.btn-xl {
  padding: 1.25rem 2.5rem;
  font-size: var(--text-xl);
  min-height: 70px;
}

/* ==========================================================================
   7. 表单组件 - 修复输入框文字颜色对比度问题
   ========================================================================== */
.form-group {
  margin-bottom: var(--spacing-lg);
}

.form-label {
  display: block;
  margin-bottom: var(--spacing-sm);
  color: var(--text-secondary);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
}

.form-control {
  width: 100%;
  padding: 1rem 1.25rem;
  background: var(--input-bg);
  border: 1px solid var(--border-color);
  border-radius: var(--border-radius);
  font-size: var(--text-base);
  color: var(--text-primary);
  transition: all var(--transition-normal);
  outline: none;
  appearance: none;
  -webkit-appearance: none;
  /* 确保文字对比度 */
  caret-color: var(--primary-color);
}

.form-control::placeholder {
  color: var(--text-muted);
  opacity: 0.8;
}

.form-control:focus {
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.3);
  background: var(--input-bg);
}

.form-control:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  background: rgba(30, 41, 59, 0.4);
}

/* 输入框文字颜色对比度优化 */
input.form-control,
textarea.form-control,
select.form-control {
  color: var(--text-primary) !important;
}

/* 确保选择框文字颜色 */
select.form-control option {
  color: var(--text-primary);
  background: var(--input-bg);
}

select.form-control option:disabled {
  color: var(--text-muted);
}

/* 文本区域特定样式 */
textarea.form-control {
  min-height: 120px;
  resize: vertical;
}

/* 输入框组 */
.input-group {
  display: flex;
  border-radius: var(--border-radius);
  overflow: hidden;
  border: 1px solid var(--border-color);
  background: var(--input-bg);
}

.input-group .form-control {
  border: none;
  border-radius: 0;
  flex: 1;
}

.input-group-prepend,
.input-group-append {
  display: flex;
  align-items: center;
  padding: 0 1rem;
  background: rgba(0, 0, 0, 0.1);
  color: var(--text-secondary);
  font-weight: var(--font-medium);
  min-width: 60px;
}

.input-group-prepend {
  border-right: 1px solid var(--border-color);
}

.input-group-append {
  border-left: 1px solid var(--border-color);
}

/* 复选框和单选框 */
.form-check {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: var(--spacing-sm);
}

.form-check-input {
  width: 1.25rem;
  height: 1.25rem;
  border: 1px solid var(--border-color);
  border-radius: 4px;
  background: var(--input-bg);
  cursor: pointer;
  position: relative;
}

.form-check-input:checked {
  background: var(--primary-color);
  border-color: var(--primary-color);
}

.form-check-input:checked::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 0.75rem;
  height: 0.75rem;
  background: white;
  border-radius: 2px;
}

.form-check-label {
  color: #f1f5f9;
  cursor: pointer;
  font-size: var(--text-sm);
}

/* 复选框和单选框文字颜色 - 确保白色 */
.custom-control-label,
.custom-checkbox label,
input[type="checkbox"] + label,
.form-check label,
.checkbox label,
label.custom-checkbox {
  color: #f1f5f9 !important;
}

/* Dcat Admin 复选框样式 */
.vs-checkbox-primary .vs-checkbox,
.vs-checkbox--label {
  color: #f1f5f9 !important;
}

/* 表单中的复选框标签 */
.dcat-form .form-check-label,
.checkbox-inline label {
  color: #f1f5f9 !important;
}

/* 范围选择器 */
.form-range {
  width: 100%;
  height: 0.5rem;
  background: var(--input-bg);
  border-radius: 0.5rem;
  outline: none;
  -webkit-appearance: none;
}

.form-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 1.25rem;
  height: 1.25rem;
  background: var(--primary-color);
  border-radius: 50%;
  cursor: pointer;
}

.form-range::-moz-range-thumb {
  width: 1.25rem;
  height: 1.25rem;
  background: var(--primary-color);
  border-radius: 50%;
  cursor: pointer;
  border: none;
}

/* ==========================================================================
   8. 卡片组件 - 优化对比度
   ========================================================================== */
.card {
  background: var(--card-bg);
  backdrop-filter: blur(10px);
  border: 1px solid var(--border-color);
  border-radius: var(--border-radius-lg);
  transition: all var(--transition-normal);
  overflow: hidden;
}

.card.glass {
  background: rgba(30, 41, 59, 0.5);
  backdrop-filter: blur(15px);
}

.card:hover {
  transform: translateY(-5px);
  border-color: rgba(37, 99, 235, 0.4);
  box-shadow: var(--shadow-xl);
}

.card-body {
  padding: var(--spacing-xl);
}

.card-title {
  font-size: var(--text-xl);
  font-weight: var(--font-bold);
  margin-bottom: var(--spacing-md);
  color: var(--text-primary);
}

.card-text {
  color: var(--text-secondary);
  margin-bottom: var(--spacing-lg);
}

.card-footer {
  padding: var(--spacing-lg) var(--spacing-xl);
  border-top: 1px solid var(--border-color);
  background: rgba(0, 0, 0, 0.1);
}

/* ==========================================================================
   9. 导航组件
   ========================================================================== */
.navbar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: var(--z-fixed);
  padding: 1rem 0;
  background: rgba(15, 23, 42, 0.95);
  backdrop-filter: blur(15px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  transition: all var(--transition-normal);
}

.navbar.scrolled {
  padding: 0.75rem 0;
  background: rgba(15, 23, 42, 0.98);
}

/* ==========================================================================
   10. 移动端菜单
   ========================================================================== */
.mobile-menu {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background: rgba(15, 23, 42, 0.98);
  backdrop-filter: blur(20px);
  z-index: var(--z-modal);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 5rem 2rem 2rem;
}

/* ==========================================================================
   11. 页脚组件 - 优化对比度
   ========================================================================== */
.footer {
  background: rgba(0, 0, 0, 0.3);
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding: 4rem 0 2rem;
}

.footer-about {
  color: var(--text-secondary);
  margin-bottom: 1.5rem;
  line-height: 1.7;
}

.footer-heading {
  font-size: var(--text-lg);
  font-weight: var(--font-bold);
  margin-bottom: 1.5rem;
  color: var(--text-primary);
}

.footer-links a {
  color: var(--text-secondary);
  text-decoration: none;
  transition: color var(--transition-fast);
}

.footer-links a:hover {
  color: var(--primary-color);
}

/* ==========================================================================
   12. 徽章和标签 - 优化对比度
   ========================================================================== */
.badge {
  display: inline-block;
  padding: 0.375rem 0.75rem;
  font-size: var(--text-xs);
  font-weight: var(--font-semibold);
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: var(--border-radius-sm);
}

.badge-primary {
  background: var(--primary-color);
  color: white;
}

.badge-secondary {
  background: var(--secondary-color);
  color: white;
}

.badge-success {
  background: var(--success-color);
  color: white;
}

.badge-warning {
  background: var(--warning-color);
  color: white;
}

.badge-danger {
  background: var(--danger-color);
  color: white;
}

.badge-info {
  background: var(--info-color);
  color: white;
}

.badge-gradient {
  background: var(--gradient-primary);
  color: white;
}

.badge-outline {
  background: transparent;
  border: 1px solid currentColor;
}

.badge-outline-primary {
  color: var(--primary-color);
  border-color: var(--primary-color);
}

/* ==========================================================================
   13. 警报组件 - 优化对比度
   ========================================================================== */
.alert {
  padding: 1rem 1.25rem;
  border-radius: var(--border-radius);
  margin-bottom: var(--spacing-md);
  border: 1px solid transparent;
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}

.alert-content {
  flex: 1;
}

.alert-title {
  font-weight: var(--font-semibold);
  margin-bottom: 0.25rem;
}

.alert-message {
  font-size: var(--text-sm);
}

.alert-primary {
  background: rgba(37, 99, 235, 0.15);
  color: var(--primary-color);
  border-color: rgba(37, 99, 235, 0.4);
}

.alert-secondary {
  background: rgba(8, 145, 178, 0.15);
  color: var(--secondary-color);
  border-color: rgba(8, 145, 178, 0.4);
}

.alert-success {
  background: rgba(5, 150, 105, 0.15);
  color: var(--success-color);
  border-color: rgba(5, 150, 105, 0.4);
}

.alert-warning {
  background: rgba(217, 119, 6, 0.15);
  color: var(--warning-color);
  border-color: rgba(217, 119, 6, 0.4);
}

.alert-danger {
  background: rgba(220, 38, 38, 0.15);
  color: var(--danger-color);
  border-color: rgba(220, 38, 38, 0.4);
}

.alert-info {
  background: rgba(37, 99, 235, 0.15);
  color: var(--info-color);
  border-color: rgba(37, 99, 235, 0.4);
}

/* ==========================================================================
   14. 工具提示和弹出框 - 优化对比度
   ========================================================================== */
.tooltip {
  position: relative;
  display: inline-block;
}

.tooltip .tooltip-text {
  visibility: hidden;
  width: max-content;
  max-width: 200px;
  background: rgba(15, 23, 42, 0.95);
  color: white;
  text-align: center;
  padding: 0.75rem 1rem;
  border-radius: var(--border-radius);
  position: absolute;
  z-index: var(--z-tooltip);
  font-size: var(--text-sm);
  line-height: 1.4;
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.2);
  opacity: 0;
  transition: opacity var(--transition-normal);
  box-shadow: var(--shadow-lg);
}

.tooltip:hover .tooltip-text {
  visibility: visible;
  opacity: 1;
}

/* ==========================================================================
   15. 动画类
   ========================================================================== */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translateY(-30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    transform: translateX(-30px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    transform: translateX(30px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* ==========================================================================
   16. 实用工具类 - 新增对比度类
   ========================================================================== */
/* 文本对比度 */
.high-contrast-text {
  color: var(--text-primary) !important;
}

.medium-contrast-text {
  color: var(--text-secondary) !important;
}

.low-contrast-text {
  color: var(--text-muted) !important;
}

/* 背景对比度 */
.high-contrast-bg {
  background: var(--darker-bg) !important;
  color: var(--text-primary) !important;
}

.medium-contrast-bg {
  background: var(--card-bg) !important;
  color: var(--text-primary) !important;
}

.low-contrast-bg {
  background: rgba(255, 255, 255, 0.05) !important;
  color: var(--text-secondary) !important;
}

/* 边框对比度 */
.high-contrast-border {
  border-color: var(--border-color) !important;
}

/* 不透明度 */
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: 0.25; }
.opacity-50 { opacity: 0.5; }
.opacity-75 { opacity: 0.75; }
.opacity-100 { opacity: 1; }

/* 背景 */
.bg-primary { background-color: var(--primary-color); color: white; }
.bg-secondary { background-color: var(--secondary-color); color: white; }
.bg-success { background-color: var(--success-color); color: white; }
.bg-warning { background-color: var(--warning-color); color: white; }
.bg-danger { background-color: var(--danger-color); color: white; }
.bg-info { background-color: var(--info-color); color: white; }
.bg-dark { background-color: var(--dark-bg); color: var(--text-primary); }
.bg-light { background-color: var(--light-bg); color: var(--text-dark); }
.bg-transparent { background-color: transparent; }

/* 阴影 */
.shadow-sm { box-shadow: var(--shadow-sm); }
.shadow-md { box-shadow: var(--shadow-md); }
.shadow-lg { box-shadow: var(--shadow-lg); }
.shadow-xl { box-shadow: var(--shadow-xl); }
.shadow-2xl { box-shadow: var(--shadow-2xl); }
.shadow-none { box-shadow: none; }

/* ==========================================================================
   17. 网格系统
   ========================================================================== */
.grid {
  display: grid;
  gap: var(--spacing-lg);
}

.grid-1 { grid-template-columns: repeat(1, 1fr); }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
.grid-5 { grid-template-columns: repeat(5, 1fr); }
.grid-6 { grid-template-columns: repeat(6, 1fr); }

/* ==========================================================================
   18. 表单状态样式
   ========================================================================== */
/* 成功状态 */
.form-control.is-valid {
  border-color: var(--success-color);
  background: rgba(5, 150, 105, 0.1);
}

.form-control.is-valid:focus {
  border-color: var(--success-color);
  box-shadow: 0 0 0 3px rgba(5, 150, 105, 0.3);
}

.valid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: var(--text-sm);
  color: var(--success-color);
}

.form-control.is-valid ~ .valid-feedback {
  display: block;
}

/* 错误状态 */
.form-control.is-invalid {
  border-color: var(--danger-color);
  background: rgba(220, 38, 38, 0.1);
}

.form-control.is-invalid:focus {
  border-color: var(--danger-color);
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.3);
}

.invalid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: var(--text-sm);
  color: var(--danger-color);
}

.form-control.is-invalid ~ .invalid-feedback {
  display: block;
}

/* ==========================================================================
   31. SweetAlert2 弹窗样式优化 - 完全重写
   ========================================================================== */
/* SweetAlert2 基础样式优化 */
.swal2-popup {
  background: var(--card-bg) !important;
  color: var(--text-primary) !important;
  border-radius: var(--border-radius-lg) !important;
  border: 1px solid var(--border-color) !important;
  box-shadow: var(--shadow-2xl) !important;
  backdrop-filter: blur(20px) !important;
}

.swal2-title {
  color: var(--text-primary) !important;
  font-weight: var(--font-bold) !important;
  font-size: var(--text-2xl) !important;
}

.swal2-html-container,
.swal2-content {
  color: var(--text-secondary) !important;
  font-size: var(--text-base) !important;
  line-height: 1.6 !important;
}

/* 弹窗内所有文字强制使用主题颜色 */
.swal2-popup p,
.swal2-popup div,
.swal2-popup span,
.swal2-popup strong,
.swal2-popup em,
.swal2-popup b,
.swal2-popup i,
.swal2-popup label {
  color: var(--text-secondary) !important;
}

/* 弹窗内标题文字 */
.swal2-popup h1,
.swal2-popup h2,
.swal2-popup h3,
.swal2-popup h4,
.swal2-popup h5,
.swal2-popup h6 {
  color: var(--text-primary) !important;
}

/* 确认按钮 */
.swal2-confirm {
  background: var(--gradient-primary) !important;
  color: white !important;
  border: none !important;
  padding: 0.75rem 2rem !important;
  border-radius: var(--border-radius) !important;
  font-weight: var(--font-semibold) !important;
  font-size: var(--text-base) !important;
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3) !important;
  transition: all var(--transition-normal) !important;
  min-height: 48px !important;
}

.swal2-confirm:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 6px 16px rgba(37, 99, 235, 0.4) !important;
}

.swal2-confirm:active {
  transform: translateY(0) !important;
}

/* 取消按钮 */
.swal2-cancel {
  background: rgba(255, 255, 255, 0.1) !important;
  color: var(--text-secondary) !important;
  border: 1px solid var(--border-color) !important;
  padding: 0.75rem 2rem !important;
  border-radius: var(--border-radius) !important;
  font-weight: var(--font-semibold) !important;
  font-size: var(--text-base) !important;
  transition: all var(--transition-normal) !important;
  min-height: 48px !important;
}

.swal2-cancel:hover {
  background: rgba(255, 255, 255, 0.15) !important;
  transform: translateY(-2px) !important;
}

/* 输入框 */
.swal2-input {
  background: var(--input-bg) !important;
  border: 1px solid var(--border-color) !important;
  border-radius: var(--border-radius) !important;
  color: var(--text-primary) !important;
  padding: 0.75rem 1rem !important;
  font-size: var(--text-base) !important;
}

.swal2-input::placeholder {
  color: var(--text-muted) !important;
}

.swal2-input:focus {
  border-color: var(--primary-color) !important;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.2) !important;
  background: var(--input-bg) !important;
}

/* 选择框 */
.swal2-select {
  background: var(--input-bg) !important;
  border: 1px solid var(--border-color) !important;
  border-radius: var(--border-radius) !important;
  color: var(--text-primary) !important;
  padding: 0.75rem 1rem !important;
}

/* 图标样式优化 */
.swal2-icon {
  border-width: 4px !important;
}

.swal2-icon.swal2-success {
  border-color: var(--success-color) !important;
  color: var(--success-color) !important;
}

.swal2-icon.swal2-success [class^="swal2-success-line"] {
  background-color: var(--success-color) !important;
}

.swal2-icon.swal2-success .swal2-success-ring {
  border-color: rgba(5, 150, 105, 0.3) !important;
}

.swal2-icon.swal2-error {
  border-color: var(--danger-color) !important;
  color: var(--danger-color) !important;
}

.swal2-icon.swal2-error [class^="swal2-x-mark-line"] {
  background-color: var(--danger-color) !important;
}

.swal2-icon.swal2-warning {
  border-color: var(--warning-color) !important;
  color: var(--warning-color) !important;
}

.swal2-icon.swal2-info {
  border-color: var(--info-color) !important;
  color: var(--info-color) !important;
}

/* 进度条 */
.swal2-progress-steps .swal2-progress-step {
  background: var(--primary-color) !important;
  color: white !important;
}

.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step {
  background: var(--primary-color) !important;
}

.swal2-progress-steps .swal2-progress-step-line {
  background: var(--border-color) !important;
}

/* 自定义容器内样式 */
.swal2-html-container .alert,
.swal2-html-container [class*="alert-"] {
  background: transparent !important;
  border: 1px solid var(--border-color) !important;
  border-radius: var(--border-radius) !important;
  padding: 1rem !important;
  margin: 0.5rem 0 !important;
}

.swal2-html-container .alert-success {
  border-left: 4px solid var(--success-color) !important;
  background: rgba(5, 150, 105, 0.1) !important;
}

.swal2-html-container .alert-danger {
  border-left: 4px solid var(--danger-color) !important;
  background: rgba(220, 38, 38, 0.1) !important;
}

.swal2-html-container .alert-warning {
  border-left: 4px solid var(--warning-color) !important;
  background: rgba(217, 119, 6, 0.1) !important;
}

.swal2-html-container .alert-info {
  border-left: 4px solid var(--info-color) !important;
  background: rgba(37, 99, 235, 0.1) !important;
}

/* 表格样式 */
.swal2-html-container table {
  width: 100% !important;
  border-collapse: collapse !important;
  margin: 1rem 0 !important;
}

.swal2-html-container table th {
  background: rgba(255, 255, 255, 0.05) !important;
  color: var(--text-primary) !important;
  padding: 0.75rem !important;
  text-align: left !important;
  border-bottom: 2px solid var(--border-color) !important;
}

.swal2-html-container table td {
  padding: 0.75rem !important;
  border-bottom: 1px solid var(--border-color) !important;
  color: var(--text-secondary) !important;
}

.swal2-html-container table tr:hover td {
  background: rgba(255, 255, 255, 0.03) !important;
}

/* 列表样式 */
.swal2-html-container ul,
.swal2-html-container ol {
  padding-left: 1.5rem !important;
  margin: 0.5rem 0 !important;
}

.swal2-html-container li {
  color: var(--text-secondary) !important;
  margin-bottom: 0.25rem !important;
}

/* 代码块 */
.swal2-html-container code,
.swal2-html-container pre {
  background: rgba(0, 0, 0, 0.2) !important;
  color: var(--text-primary) !important;
  padding: 0.25rem 0.5rem !important;
  border-radius: 4px !important;
  font-family: monospace !important;
}

.swal2-html-container pre {
  padding: 1rem !important;
  overflow-x: auto !important;
}

/* 链接 */
.swal2-html-container a {
  color: var(--primary-color) !important;
  text-decoration: none !important;
}

.swal2-html-container a:hover {
  text-decoration: underline !important;
}

/* ==========================================================================
   32. Dcat Admin 弹窗/模态框样式优化
   ========================================================================== */
/* 关闭PC端所有页面的toast-container通知 */
#toast-container,
.toast-container,
[id^="toast-container"],
.toast-top-right,
.toast-top-left,
.toast-top-center,
.toast-top-full-width,
.toast-bottom-right,
.toast-bottom-left,
.toast-bottom-center,
.toast-bottom-full-width {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Dcat Admin Toastr 通知样式 - 移除背景 */
.toast {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  background: transparent !important;
  background-image: none !important;
  border: none !important;
  box-shadow: none !important;
}

.toast-success {
  display: none !important;
  visibility: hidden !important;
  background: transparent !important;
  background-image: none !important;
}

.toast-success .toast-title {
  display: none !important;
}

.toast-success .toast-message {
  display: none !important;
}

.toast-error {
  display: none !important;
  visibility: hidden !important;
  background: transparent !important;
  background-image: none !important;
}

.toast-error .toast-title {
  display: none !important;
}

.toast-error .toast-message {
  display: none !important;
}

.toast-warning {
  display: none !important;
  visibility: hidden !important;
  background: transparent !important;
  background-image: none !important;
}

.toast-warning .toast-title {
  display: none !important;
}

.toast-warning .toast-message {
  display: none !important;
}

.toast-info {
  display: none !important;
  visibility: hidden !important;
  background: transparent !important;
  background-image: none !important;
}

.toast-info .toast-title {
  display: none !important;
}

.toast-info .toast-message {
  display: none !important;
}

/* 模态框样式 */
.modal-content {
  background: var(--card-bg) !important;
  color: var(--text-primary) !important;
  border-radius: var(--border-radius-lg) !important;
  border: 1px solid var(--border-color) !important;
  box-shadow: var(--shadow-2xl) !important;
  backdrop-filter: blur(20px) !important;
}

.modal-header {
  background: rgba(0, 0, 0, 0.1) !important;
  border-bottom: 1px solid var(--border-color) !important;
  border-radius: var(--border-radius-lg) var(--border-radius-lg) 0 0 !important;
  padding: 1.5rem !important;
}

.modal-title {
  color: var(--text-primary) !important;
  font-weight: var(--font-bold) !important;
  font-size: var(--text-xl) !important;
}

.modal-body {
  color: var(--text-secondary) !important;
  padding: 1.5rem !important;
}

.modal-body p,
.modal-body div,
.modal-body span,
.modal-body label {
  color: var(--text-secondary) !important;
}

.modal-footer {
  background: rgba(0, 0, 0, 0.1) !important;
  border-top: 1px solid var(--border-color) !important;
  border-radius: 0 0 var(--border-radius-lg) var(--border-radius-lg) !important;
  padding: 1rem 1.5rem !important;
}

/* 模态框按钮 */
.modal-footer .btn-primary {
  background: var(--gradient-primary) !important;
  color: white !important;
  border: none !important;
  padding: 0.5rem 1.5rem !important;
  border-radius: var(--border-radius) !important;
}

.modal-footer .btn-secondary {
  background: rgba(255, 255, 255, 0.1) !important;
  color: var(--text-secondary) !important;
  border: 1px solid var(--border-color) !important;
  padding: 0.5rem 1.5rem !important;
  border-radius: var(--border-radius) !important;
}

/* ==========================================================================
   33. 自定义结果弹窗样式（高对比度）
   ========================================================================== */
/* 测试结果弹窗优化 */
.swal2-popup .alert,
.swal2-popup [class*="alert-"] {
  border-radius: var(--border-radius) !important;
  padding: 1rem !important;
  margin-bottom: 0.75rem !important;
  border: 1px solid transparent !important;
}

.swal2-popup .alert-success,
.swal2-popup [style*="background:#f8fff8"],
.swal2-popup [style*="background: #f8fff8"] {
  background: rgba(5, 150, 105, 0.15) !important;
  border: 1px solid rgba(5, 150, 105, 0.4) !important;
  color: var(--success-color) !important;
}

.swal2-popup .alert-success *,
.swal2-popup [style*="background:#f8fff8"] *,
.swal2-popup [style*="background: #f8fff8"] * {
  color: var(--success-color) !important;
}

.swal2-popup .alert-danger,
.swal2-popup .alert-error,
.swal2-popup [style*="background:#fff8f8"],
.swal2-popup [style*="background: #fff8f8"] {
  background: rgba(220, 38, 38, 0.15) !important;
  border: 1px solid rgba(220, 38, 38, 0.4) !important;
  color: var(--danger-color) !important;
}

.swal2-popup .alert-danger *,
.swal2-popup .alert-error *,
.swal2-popup [style*="background:#fff8f8"] *,
.swal2-popup [style*="background: #fff8f8"] * {
  color: var(--danger-color) !important;
}

.swal2-popup .alert-warning,
.swal2-popup [style*="background:#fff3cd"],
.swal2-popup [style*="background: #fff3cd"] {
  background: rgba(217, 119, 6, 0.15) !important;
  border: 1px solid rgba(217, 119, 6, 0.4) !important;
  color: var(--warning-color) !important;
}

.swal2-popup .alert-warning *,
.swal2-popup [style*="background:#fff3cd"] *,
.swal2-popup [style*="background: #fff3cd"] * {
  color: var(--warning-color) !important;
}

.swal2-popup .alert-info {
  background: rgba(37, 99, 235, 0.15) !important;
  border: 1px solid rgba(37, 99, 235, 0.4) !important;
  color: var(--info-color) !important;
}

.swal2-popup .alert-info * {
  color: var(--info-color) !important;
}

/* 强制文字颜色重写 - 使用主题变量 */
.swal2-popup [style*="color:#155724"],
.swal2-popup [style*="color: #155724"] {
  color: var(--success-color) !important;
}

.swal2-popup [style*="color:#721c24"],
.swal2-popup [style*="color: #721c24"] {
  color: var(--danger-color) !important;
}

.swal2-popup [style*="color:#856404"],
.swal2-popup [style*="color: #856404"] {
  color: var(--warning-color) !important;
}

.swal2-popup [style*="color:#0c5460"],
.swal2-popup [style*="color: #0c5460"] {
  color: var(--info-color) !important;
}

/* 弹窗内部卡片/边框样式 */
.swal2-popup [style*="border-left:4px solid #28a745"],
.swal2-popup [style*="border-left: 4px solid #28a745"] {
  border-left-color: var(--success-color) !important;
}

.swal2-popup [style*="border-left:4px solid #dc3545"],
.swal2-popup [style*="border-left: 4px solid #dc3545"] {
  border-left-color: var(--danger-color) !important;
}

.swal2-popup [style*="border-left:4px solid #ffc107"],
.swal2-popup [style*="border-left: 4px solid #ffc107"] {
  border-left-color: var(--warning-color) !important;
}

.swal2-popup [style*="border-left:4px solid #17a2b8"],
.swal2-popup [style*="border-left: 4px solid #17a2b8"] {
  border-left-color: var(--secondary-color) !important;
}

/* 完全重写内联样式中的浅色背景 */
.swal2-html-container div[style*="background:#f8f9fa"],
.swal2-html-container div[style*="background: #f8f9fa"] {
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid var(--border-color) !important;
  border-radius: var(--border-radius) !important;
  padding: 1rem !important;
}

.swal2-html-container div[style*="background:#f8f9fa"] *,
.swal2-html-container div[style*="background: #f8f9fa"] * {
  color: var(--text-secondary) !important;
}

/* 弹窗中的徽章样式 */
.swal2-popup .badge {
  padding: 0.25rem 0.5rem !important;
  font-size: 0.75rem !important;
  font-weight: var(--font-semibold) !important;
  border-radius: 4px !important;
}

.swal2-popup .badge-success {
  background: rgba(5, 150, 105, 0.2) !important;
  color: var(--success-color) !important;
  border: 1px solid rgba(5, 150, 105, 0.3) !important;
}

.swal2-popup .badge-danger {
  background: rgba(220, 38, 38, 0.2) !important;
  color: var(--danger-color) !important;
  border: 1px solid rgba(220, 38, 38, 0.3) !important;
}

.swal2-popup .badge-warning {
  background: rgba(217, 119, 6, 0.2) !important;
  color: var(--warning-color) !important;
  border: 1px solid rgba(217, 119, 6, 0.3) !important;
}

.swal2-popup .badge-info {
  background: rgba(37, 99, 235, 0.2) !important;
  color: var(--info-color) !important;
  border: 1px solid rgba(37, 99, 235, 0.3) !important;
}

.swal2-popup .badge-primary {
  background: rgba(37, 99, 235, 0.2) !important;
  color: var(--primary-color) !important;
  border: 1px solid rgba(37, 99, 235, 0.3) !important;
}

/* ==========================================================================
   34. Layer 弹窗样式优化
   ========================================================================== */
.layui-layer {
  background: var(--card-bg) !important;
  border-radius: var(--border-radius-lg) !important;
  border: 1px solid var(--border-color) !important;
  box-shadow: var(--shadow-2xl) !important;
  backdrop-filter: blur(20px) !important;
}

.layui-layer-title {
  background: rgba(0, 0, 0, 0.1) !important;
  color: var(--text-primary) !important;
  border-bottom: 1px solid var(--border-color) !important;
  font-weight: var(--font-bold) !important;
  font-size: var(--text-lg) !important;
  height: auto !important;
  line-height: 1.5 !important;
  padding: 1.25rem !important;
}

.layui-layer-content {
  color: var(--text-secondary) !important;
  padding: 1.5rem !important;
}

.layui-layer-content p,
.layui-layer-content div,
.layui-layer-content span,
.layui-layer-content label {
  color: var(--text-secondary) !important;
}

.layui-layer-btn {
  background: rgba(0, 0, 0, 0.1) !important;
  border-top: 1px solid var(--border-color) !important;
  padding: 1rem !important;
  text-align: right !important;
}

.layui-layer-btn a {
  border-radius: var(--border-radius) !important;
  padding: 0.5rem 1.5rem !important;
  font-weight: var(--font-semibold) !important;
  font-size: var(--text-base) !important;
  transition: all var(--transition-normal) !important;
  border: none !important;
}

.layui-layer-btn0 {
  background: var(--gradient-primary) !important;
  color: white !important;
}

.layui-layer-btn1 {
  background: rgba(255, 255, 255, 0.1) !important;
  color: var(--text-secondary) !important;
  border: 1px solid var(--border-color) !important;
}

.layui-layer-btn a:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
}

/* ==========================================================================
   35. 通用文字对比度修复
   ========================================================================== */
/* 确保所有浅色背景上的文字是深色 */
[style*="background:#f"] *:not(.badge):not(.btn):not(button):not(a),
[style*="background: #f"] *:not(.badge):not(.btn):not(button):not(a) {
  color: var(--text-dark) !important;
}

/* 确保浅绿色背景上的文字是深绿 */
[style*="background:#d4edda"] *,
[style*="background: #d4edda"] *,
[style*="background:#f8fff8"] *,
[style*="background: #f8fff8"] * {
  color: #0f5132 !important;
}

/* 确保浅红色背景上的文字是深红 */
[style*="background:#f8d7da"] *,
[style*="background: #f8d7da"] *,
[style*="background:#fff8f8"] *,
[style*="background: #fff8f8"] * {
  color: #842029 !important;
}

/* 确保浅黄色背景上的文字是深棕 */
[style*="background:#fff3cd"] *,
[style*="background: #fff3cd"] *,
[style*="background:#fef3c7"] *,
[style*="background: #fef3c7"] * {
  color: #664d03 !important;
}

/* 确保浅蓝色背景上的文字是深蓝 */
[style*="background:#d1ecf1"] *,
[style*="background: #d1ecf1"] * {
  color: #0c5460 !important;
}

/* ==========================================================================
   36. 新增：弹窗内容强制对比度修复
   ========================================================================== */
/* 强制修复所有弹窗中的文字对比度 */
.swal2-popup *,
.modal-content *,
.layui-layer *,
.toast * {
  text-shadow: none !important;
}

/* 修复表单元素在弹窗中的对比度 */
.swal2-input,
.swal2-select,
.swal2-textarea,
.modal-content input,
.modal-content select,
.modal-content textarea,
.layui-layer input,
.layui-layer select,
.layui-layer textarea {
  background: var(--input-bg) !important;
  border: 1px solid var(--border-color) !important;
  color: var(--text-primary) !important;
}

.swal2-input::placeholder,
.modal-content input::placeholder,
.layui-layer input::placeholder {
  color: var(--text-muted) !important;
}

/* 修复弹窗中的表格对比度 */
.swal2-popup table,
.modal-content table,
.layui-layer table {
  border-color: var(--border-color) !important;
}

.swal2-popup table th,
.modal-content table th,
.layui-layer table th {
  background: rgba(255, 255, 255, 0.05) !important;
  color: var(--text-primary) !important;
  border-color: var(--border-color) !important;
}

.swal2-popup table td,
.modal-content table td,
.layui-layer table td {
  color: var(--text-secondary) !important;
  border-color: var(--border-color) !important;
}

/* 修复弹窗中的链接对比度 */
.swal2-popup a,
.modal-content a,
.layui-layer a,
.toast a {
  color: var(--primary-color) !important;
  text-decoration: none !important;
}

.swal2-popup a:hover,
.modal-content a:hover,
.layui-layer a:hover,
.toast a:hover {
  text-decoration: underline !important;
}

/* 修复弹窗中的代码块对比度 */
.swal2-popup code,
.swal2-popup pre,
.modal-content code,
.modal-content pre,
.layui-layer code,
.layui-layer pre {
  background: rgba(0, 0, 0, 0.2) !important;
  color: var(--text-primary) !important;
  border: 1px solid var(--border-color) !important;
}

/* 修复弹窗中的分隔线对比度 */
.swal2-popup hr,
.modal-content hr,
.layui-layer hr {
  border-color: var(--border-color) !important;
}

/* ==========================================================================
   37. 新增：主题切换时的弹窗适配
   ========================================================================== */
/* 浅色主题下的弹窗样式 */
[data-theme="light"] .swal2-popup,
[data-theme="light"] .modal-content,
[data-theme="light"] .layui-layer,
[data-theme="light"] .toast {
  background: var(--card-bg) !important;
  color: var(--text-dark) !important;
  border-color: var(--border-light) !important;
}

[data-theme="light"] .swal2-title,
[data-theme="light"] .modal-title,
[data-theme="light"] .layui-layer-title {
  color: var(--text-dark) !important;
}

[data-theme="light"] .swal2-html-container,
[data-theme="light"] .swal2-content,
[data-theme="light"] .modal-body,
[data-theme="light"] .layui-layer-content {
  color: var(--text-secondary) !important;
}

[data-theme="light"] .swal2-input,
[data-theme="light"] .swal2-select,
[data-theme="light"] .modal-content input,
[data-theme="light"] .layui-layer input {
  background: var(--input-bg) !important;
  border-color: var(--border-light) !important;
  color: var(--text-dark) !important;
}

/* 深色主题下的弹窗样式（默认） */
[data-theme="dark"] .swal2-popup,
[data-theme="dark"] .modal-content,
[data-theme="dark"] .layui-layer,
[data-theme="dark"] .toast {
  background: var(--card-bg) !important;
  color: var(--text-primary) !important;
  border-color: var(--border-color) !important;
}

/* ==========================================================================
   38. 新增：高对比度模式支持
   ========================================================================== */
@media (prefers-contrast: high) {
  :root {
    --text-primary: #ffffff;
    --text-secondary: #e2e8f0;
    --text-muted: #94a3b8;
    --border-color: rgba(255, 255, 255, 0.3);
    --primary-color: #1d4ed8;
    --success-color: #047857;
    --warning-color: #b45309;
    --danger-color: #b91c1c;
  }
  
  [data-theme="light"] {
    --text-primary: #000000;
    --text-secondary: #334155;
    --text-muted: #64748b;
    --border-color: rgba(0, 0, 0, 0.3);
  }
  
  /* 弹窗在高对比度模式下 */
  .swal2-popup,
  .modal-content,
  .layui-layer,
  .toast {
    border-width: 2px !important;
  }
  
  .swal2-popup .alert,
  .modal-content .alert,
  .layui-layer .alert {
    border-width: 2px !important;
  }
}

/* ==========================================================================
   39. 响应式设计 - 弹窗优化
   ========================================================================== */
@media (max-width: 767.98px) {
  .swal2-popup {
    width: 90% !important;
    margin: 1rem !important;
    border-radius: var(--border-radius) !important;
  }
  
  .modal-content {
    margin: 1rem !important;
    border-radius: var(--border-radius) !important;
  }
  
  .layui-layer {
    width: 90% !important;
    margin: 1rem auto !important;
  }
  
  .swal2-title {
    font-size: var(--text-xl) !important;
  }
  
  .swal2-html-container {
    font-size: var(--text-sm) !important;
  }
  
  .swal2-confirm,
  .swal2-cancel {
    padding: 0.5rem 1rem !important;
    font-size: var(--text-sm) !important;
  }
}

/* ==========================================================================
   40. 新增：打印样式优化
   ========================================================================== */
@media print {
  .swal2-popup,
  .modal-content,
  .layui-layer,
  .toast {
    background: white !important;
    color: black !important;
    border: 1px solid #ddd !important;
    box-shadow: none !important;
  }
  
  .swal2-title,
  .modal-title,
  .layui-layer-title {
    color: black !important;
  }
  
  .swal2-html-container,
  .modal-body,
  .layui-layer-content {
    color: #333 !important;
  }
  
  .swal2-popup .alert,
  .modal-content .alert,
  .layui-layer .alert {
    border: 1px solid #ddd !important;
    background: #f9f9f9 !important;
    color: #333 !important;
  }
  
  /* 隐藏弹窗中的按钮 */
  .swal2-actions,
  .modal-footer,
  .layui-layer-btn {
    display: none !important;
  }
}

/* ==========================================================================
   41. 新增：色盲友好模式
   ========================================================================== */
/* 红绿色盲友好 */
.colorblind-friendly {
  --primary-color: #0066cc;
  --success-color: #009933;
  --danger-color: #cc0000;
  --warning-color: #ff9900;
}

.colorblind-friendly .btn-success {
  background: #009933 !important;
}

.colorblind-friendly .btn-danger {
  background: #cc0000 !important;
}

.colorblind-friendly .btn-warning {
  background: #ff9900 !important;
}

.colorblind-friendly .badge-success {
  background: #009933 !important;
}

.colorblind-friendly .badge-danger {
  background: #cc0000 !important;
}

.colorblind-friendly .badge-warning {
  background: #ff9900 !important;
}

.colorblind-friendly .alert-success {
  border-color: #009933 !important;
  color: #009933 !important;
}

.colorblind-friendly .alert-danger {
  border-color: #cc0000 !important;
  color: #cc0000 !important;
}

.colorblind-friendly .alert-warning {
  border-color: #ff9900 !important;
  color: #ff9900 !important;
}

/* ==========================================================================
   42. 新增：焦点可见性改进
   ========================================================================== */
/* 改进焦点样式以提高可访问性 */
.btn:focus-visible,
.form-control:focus-visible,
.swal2-confirm:focus-visible,
.swal2-cancel:focus-visible,
.modal-footer .btn:focus-visible,
.layui-layer-btn a:focus-visible {
  outline: 3px solid var(--primary-color) !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.3) !important;
}

/* 键盘导航焦点样式 */
[tabindex]:focus-visible {
  outline: 3px solid var(--primary-color) !important;
  outline-offset: 2px !important;
}

/* ==========================================================================
   43. 新增：文字大小调整支持
   ========================================================================== */
/* 支持用户文字大小偏好 */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* 支持高对比度模式 */
@media (prefers-contrast: more) {
  :root {
    --text-primary: #ffffff;
    --text-secondary: #e2e8f0;
    --text-muted: #94a3b8;
    --border-color: rgba(255, 255, 255, 0.4);
  }
  
  [data-theme="light"] {
    --text-primary: #000000;
    --text-secondary: #1e293b;
    --text-muted: #475569;
    --border-color: rgba(0, 0, 0, 0.4);
  }
}

/* ==========================================================================
   44. 新增：输入框对比度优化补充
   ========================================================================== */
/* 确保所有输入类型的文字颜色 */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="tel"],
input[type="url"],
input[type="search"],
input[type="date"],
input[type="datetime-local"],
input[type="month"],
input[type="week"],
input[type="time"],
textarea,
select {
  color: var(--text-primary) !important;
  background-color: var(--input-bg) !important;
}

/* 输入框聚焦时的文字颜色 */
input:focus,
textarea:focus,
select:focus {
  color: var(--text-primary) !important;
}

/* 确保disabled状态输入框的文字对比度 */
input:disabled,
textarea:disabled,
select:disabled {
  color: var(--text-muted) !important;
  background-color: rgba(30, 41, 59, 0.4) !important;
}

/* 输入框自动填充样式 */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
  -webkit-text-fill-color: var(--text-primary) !important;
  -webkit-box-shadow: 0 0 0px 1000px var(--input-bg) inset !important;
  transition: background-color 5000s ease-in-out 0s !important;
}

/* 数据列表样式 */
datalist option {
  background-color: var(--input-bg);
  color: var(--text-primary);
}

/* ==========================================================================
   45. 全局列表页面配色优化 - 更美观的深色科技风格
   ========================================================================== */

/* 列表页卡片容器 */
.dcat-box,
.card,
.box {
  background: linear-gradient(145deg, rgba(30, 41, 59, 0.8), rgba(15, 23, 42, 0.9)) !important;
  border: 1px solid rgba(59, 130, 246, 0.2) !important;
  border-radius: 12px !important;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 
              inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
  backdrop-filter: blur(10px) !important;
}

/* 卡片头部 - 渐变背景 */
.dcat-box .box-header,
.card-header {
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.15), rgba(30, 41, 59, 0.8)) !important;
  border-bottom: 1px solid rgba(59, 130, 246, 0.25) !important;
  padding: 15px 20px !important;
}

.dcat-box .box-header .box-title,
.card-header .card-title {
  color: #f1f5f9 !important;
  font-weight: 600 !important;
  font-size: 1.1rem !important;
}

/* 表格美化 */
.dcat-box .table,
.table {
  background: transparent !important;
  margin-bottom: 0 !important;
}

/* 表格头部 - 渐变背景和粗体文字 */
.dcat-box .table thead th,
.table thead th {
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.25), rgba(59, 130, 246, 0.1)) !important;
  color: #e2e8f0 !important;
  font-weight: 700 !important;
  font-size: 0.9rem !important;
  text-transform: uppercase !important;
  letter-spacing: 0.5px !important;
  padding: 14px 16px !important;
  border-bottom: 2px solid rgba(59, 130, 246, 0.4) !important;
  border-top: none !important;
}

/* 表格行 - 斶条纹和悬停效果 */
.dcat-box .table tbody tr,
.table tbody tr {
  transition: all 0.2s ease !important;
}

.dcat-box .table tbody tr:nth-child(odd),
.table tbody tr:nth-child(odd) {
  background: rgba(30, 41, 59, 0.4) !important;
}

.dcat-box .table tbody tr:nth-child(even),
.table tbody tr:nth-child(even) {
  background: rgba(15, 23, 42, 0.4) !important;
}

.dcat-box .table tbody tr:hover,
.table tbody tr:hover {
  background: rgba(59, 130, 246, 0.15) !important;
  transform: translateX(2px) !important;
  box-shadow: inset 3px 0 0 rgba(59, 130, 246, 0.8) !important;
}

/* 表格单元格 */
.dcat-box .table tbody td,
.table tbody td {
  color: #cbd5e1 !important;
  padding: 14px 16px !important;
  border-bottom: 1px solid rgba(59, 130, 246, 0.1) !important;
  vertical-align: middle !important;
}

/* 表格内的标签 - 更美观 */
.table .badge,
.dcat-box .table .badge {
  font-size: 0.75rem !important;
  padding: 5px 10px !important;
  border-radius: 20px !important;
  font-weight: 600 !important;
  letter-spacing: 0.3px !important;
}

.badge-primary {
  background: linear-gradient(135deg, #3b82f6, #2563eb) !important;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4) !important;
}

.badge-success {
  background: linear-gradient(135deg, #10b981, #059669) !important;
  box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4) !important;
}

.badge-warning {
  background: linear-gradient(135deg, #f59e0b, #d97706) !important;
  color: #ffffff !important;
  box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4) !important;
}

.badge-danger {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  box-shadow: 0 2px 8px rgba(239, 68, 68, 0.4) !important;
}

.badge-info {
  background: linear-gradient(135deg, #06b6d4, #0891b2) !important;
  box-shadow: 0 2px 8px rgba(6, 182, 212, 0.4) !important;
}

.badge-secondary {
  background: linear-gradient(135deg, #64748b, #475569) !important;
  box-shadow: 0 2px 8px rgba(100, 116, 139, 0.4) !important;
}

/* 分页器美化 */
.pagination {
  gap: 8px !important;
}

.pagination .page-item .page-link {
  background: rgba(30, 41, 59, 0.6) !important;
  border: 1px solid rgba(59, 130, 246, 0.3) !important;
  color: #cbd5e1 !important;
  border-radius: 8px !important;
  padding: 8px 14px !important;
  font-weight: 500 !important;
  transition: all 0.2s ease !important;
}

.pagination .page-item .page-link:hover {
  background: rgba(59, 130, 246, 0.2) !important;
  border-color: rgba(59, 130, 246, 0.5) !important;
  color: #f1f5f9 !important;
  transform: translateY(-1px) !important;
}

.pagination .page-item.active .page-link {
  background: linear-gradient(135deg, #3b82f6, #2563eb) !important;
  border-color: #3b82f6 !important;
  color: #ffffff !important;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.4) !important;
}

/* 操作按钮美化 */
.table .btn-sm,
.dcat-box .table .btn-sm {
  padding: 5px 10px !important;
  font-size: 0.8rem !important;
  border-radius: 6px !important;
  transition: all 0.2s ease !important;
}

.table .btn-primary,
.dcat-box .table .btn-primary {
  background: linear-gradient(135deg, #3b82f6, #2563eb) !important;
  border: none !important;
  box-shadow: 0 2px 6px rgba(59, 130, 246, 0.3) !important;
}

.table .btn-primary:hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.5) !important;
}

.table .btn-danger {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  border: none !important;
  box-shadow: 0 2px 6px rgba(239, 68, 68, 0.3) !important;
}

.table .btn-danger:hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 12px rgba(239, 68, 68, 0.5) !important;
}

/* 表格工具栏美化 */
.grid-toolbar,
.box-tools {
  padding: 10px 0 !important;
}

.grid-toolbar .btn {
  border-radius: 8px !important;
  font-weight: 500 !important;
  padding: 8px 16px !important;
  transition: all 0.2s ease !important;
}

/* 筛选器美化 */
.filter-box,
.grid-filter-container {
  background: rgba(30, 41, 59, 0.6) !important;
  border: 1px solid rgba(59, 130, 246, 0.2) !important;
  border-radius: 10px !important;
  padding: 15px !important;
  margin-bottom: 15px !important;
}

.filter-box .form-group label,
.grid-filter-container label {
  color: #cbd5e1 !important;
  font-weight: 500 !important;
}

/* 快速搜索框美化 */
.grid-quick-search {
  position: relative !important;
}

.grid-quick-search input {
  background: rgba(30, 41, 59, 0.6) !important;
  border: 1px solid rgba(59, 130, 246, 0.3) !important;
  border-radius: 20px !important;
  padding: 8px 16px !important;
  padding-right: 40px !important;
  color: #e2e8f0 !important;
  transition: all 0.2s ease !important;
}

.grid-quick-search input:focus {
  border-color: rgba(59, 130, 246, 0.6) !important;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15) !important;
}

.grid-quick-search input::placeholder {
  color: #94a3b8 !important;
}

/* 批量选择操作栏 - 红色警示 */
.grid-select-all-btn,
[class*="-select-all-btn"] {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  border-radius: 8px !important;
  padding: 8px 16px !important;
}

.grid-select-all-btn .btn,
[class*="-select-all-btn"] .btn {
  background: transparent !important;
  border: none !important;
  color: #ffffff !important;
  font-weight: 600 !important;
}

/* 列表空状态美化 */
.dcat-box .empty,
.table-empty {
  text-align: center !important;
  padding: 60px 20px !important;
  color: #94a3b8 !important;
}

.dcat-box .empty i,
.table-empty i {
  font-size: 4rem !important;
  opacity: 0.5 !important;
  margin-bottom: 15px !important;
}

/* 复选框美化 */
.icheckbox_minimal-blue,
.grid-row-checkbox {
  background: rgba(30, 41, 59, 0.5) !important;
  border: 2px solid rgba(59, 130, 246, 0.4) !important;
  border-radius: 4px !important;
}

.icheckbox_minimal-blue.checked {
  background: linear-gradient(135deg, #3b82f6, #2563eb) !important;
  border-color: #3b82f6 !important;
}

/* 操作列美化 */
.table .column-actions,
.dcat-box .table td:last-child {
  white-space: nowrap !important;
}

.table .dropdown-menu {
  background: rgba(30, 41, 59, 0.95) !important;
  border: 1px solid rgba(59, 130, 246, 0.3) !important;
  border-radius: 10px !important;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4) !important;
  backdrop-filter: blur(10px) !important;
}

.table .dropdown-menu .dropdown-item {
  color: #e2e8f0 !important;
  padding: 10px 16px !important;
  transition: all 0.15s ease !important;
}

.table .dropdown-menu .dropdown-item:hover {
  background: rgba(59, 130, 246, 0.2) !important;
  color: #f1f5f9 !important;
}

/* 表格响应式优化 */
@media (max-width: 768px) {
  .dcat-box .table thead {
    display: none !important;
  }
  
  .dcat-box .table tbody tr {
    display: block !important;
    margin-bottom: 15px !important;
    border-radius: 8px !important;
    background: rgba(30, 41, 59, 0.6) !important;
    border: 1px solid rgba(59, 130, 246, 0.2) !important;
  }
  
  .dcat-box .table tbody td {
    display: flex !important;
    justify-content: space-between !important;
    padding: 10px 15px !important;
    border-bottom: 1px solid rgba(59, 130, 246, 0.1) !important;
  }
  
  .dcat-box .table tbody td::before {
    content: attr(data-label) !important;
    font-weight: 600 !important;
    color: #94a3b8 !important;
  }
}

/* ==========================================================================
   46. 列表页面配色深度优化 - 深色背景浅色文字
   ========================================================================== */

/* 表格基础样式 - 深色主题 */
.table,
.dcat-box .table,
.table-striped,
.table-hover {
  background: transparent !important;
  color: #e2e8f0 !important;
}

/* 表格头部 - 深色渐变背景 */
.table thead th,
.dcat-box .table thead th,
.table-striped thead th {
  background: linear-gradient(135deg, rgba(30, 41, 59, 0.9), rgba(15, 23, 42, 0.95)) !important;
  color: #f1f5f9 !important;
  border-bottom: 2px solid rgba(59, 130, 246, 0.4) !important;
  border-top: none !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  font-size: 0.8rem !important;
  letter-spacing: 0.5px !important;
  padding: 14px 12px !important;
}

/* 表格单元格 - 深色背景浅色文字 */
.table tbody td,
.dcat-box .table tbody td,
.table-striped tbody td {
  background: rgba(15, 23, 42, 0.6) !important;
  color: #e2e8f0 !important;
  border-color: rgba(59, 130, 246, 0.15) !important;
  padding: 12px !important;
  vertical-align: middle !important;
}

/* 斜纹表格 - 奇偶行交替深色 */
.table-striped tbody tr:nth-of-type(odd) td,
.table tbody tr:nth-of-type(odd) td {
  background: rgba(30, 41, 59, 0.7) !important;
}

.table-striped tbody tr:nth-of-type(even) td,
.table tbody tr:nth-of-type(even) td {
  background: rgba(15, 23, 42, 0.7) !important;
}

/* 悬停效果 - 蓝色高亮 */
.table tbody tr:hover td,
.dcat-box .table tbody tr:hover td,
.table-hover tbody tr:hover td {
  background: rgba(59, 130, 246, 0.15) !important;
  color: #f8fafc !important;
  transition: all 0.2s ease !important;
}

/* 表格文字颜色强制覆盖 */
.table td,
.table th,
.table td *,
.table th * {
  color: inherit !important;
}

.table td a:not(.btn),
.table td a:not(.btn):hover {
  color: #60a5fa !important;
}

/* 表格内文本样式 */
.table .text-muted {
  color: #94a3b8 !important;
}

.table .text-dark,
.table .text-black {
  color: #f1f5f9 !important;
}

/* 列表卡片容器 - 深色背景 */
.dcat-box,
.box,
.card {
  background: linear-gradient(145deg, rgba(30, 41, 59, 0.85), rgba(15, 23, 42, 0.9)) !important;
  border: 1px solid rgba(59, 130, 246, 0.2) !important;
}

/* 卡片头部和表头 */
.card-header,
.box-header,
.dcat-box .card-header {
  background: linear-gradient(135deg, rgba(30, 41, 59, 0.9), rgba(15, 23, 42, 0.95)) !important;
  border-bottom: 1px solid rgba(59, 130, 246, 0.25) !important;
  color: #f1f5f9 !important;
}

.card-header h5,
.card-header .card-title,
.box-header .box-title {
  color: #f1f5f9 !important;
  font-weight: 600 !important;
}

/* 卡片主体 */
.card-body,
.box-body,
.dcat-box .card-body {
  background: transparent !important;
  color: #e2e8f0 !important;
}

/* 表格内Badge样式优化 */
.table .badge {
  font-weight: 500 !important;
  padding: 5px 10px !important;
  border-radius: 6px !important;
}

/* 表格操作按钮 */
.table .btn-sm {
  padding: 4px 10px !important;
  font-size: 12px !important;
  border-radius: 6px !important;
}

.table .btn-outline-primary {
  border-color: rgba(59, 130, 246, 0.6) !important;
  color: #60a5fa !important;
}

.table .btn-outline-primary:hover {
  background: rgba(59, 130, 246, 0.2) !important;
  border-color: #3b82f6 !important;
  color: #f1f5f9 !important;
}

.table .btn-warning {
  background: linear-gradient(135deg, #f59e0b, #d97706) !important;
  border: none !important;
  color: #ffffff !important;
}

.table .btn-danger {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  border: none !important;
  color: #ffffff !important;
}

/* 表格分页器 */
.pagination {
  background: transparent !important;
}

.pagination .page-link {
  background: rgba(30, 41, 59, 0.7) !important;
  border-color: rgba(59, 130, 246, 0.3) !important;
  color: #e2e8f0 !important;
}

.pagination .page-item.active .page-link {
  background: linear-gradient(135deg, #3b82f6, #2563eb) !important;
  border-color: #3b82f6 !important;
  color: #ffffff !important;
}

.pagination .page-link:hover {
  background: rgba(59, 130, 246, 0.3) !important;
  color: #f1f5f9 !important;
}

/* Grid组件浅色文字 */
.grid-column-header,
.grid-row {
  color: #e2e8f0 !important;
}

/* 确保表单标签可见 */
.form-group label,
.control-label {
  color: #e2e8f0 !important;
}

/* 下拉选择框深色主题 */
select.form-control {
  background: rgba(30, 41, 59, 0.8) !important;
  color: #e2e8f0 !important;
  border-color: rgba(59, 130, 246, 0.3) !important;
}

select.form-control option {
  background: #1e293b !important;
  color: #e2e8f0 !important;
}

/* 输入框深色主题 */
input.form-control,
textarea.form-control {
  background: rgba(30, 41, 59, 0.8) !important;
  color: #e2e8f0 !important;
  border-color: rgba(59, 130, 246, 0.3) !important;
}

input.form-control::placeholder,
textarea.form-control::placeholder {
  color: #94a3b8 !important;
}

input.form-control:focus,
textarea.form-control:focus,
select.form-control:focus {
  background: rgba(30, 41, 59, 0.9) !important;
  border-color: rgba(59, 130, 246, 0.6) !important;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15) !important;
  color: #f1f5f9 !important;
}

/* 弹窗深色主题 */
.modal-content {
  background: linear-gradient(145deg, rgba(30, 41, 59, 0.98), rgba(15, 23, 42, 0.99)) !important;
  border: 1px solid rgba(59, 130, 246, 0.3) !important;
  color: #e2e8f0 !important;
}

.modal-header {
  border-bottom-color: rgba(59, 130, 246, 0.25) !important;
  color: #f1f5f9 !important;
}

.modal-header .modal-title {
  color: #f1f5f9 !important;
}

.modal-header .close {
  color: #e2e8f0 !important;
  opacity: 0.8 !important;
}

.modal-footer {
  border-top-color: rgba(59, 130, 246, 0.25) !important;
}

.modal-body {
  color: #e2e8f0 !important;
}

/* Alert样式优化 */
.alert {
  border-radius: 8px !important;
}

.alert-success {
  background: rgba(16, 185, 129, 0.15) !important;
  border-color: rgba(16, 185, 129, 0.3) !important;
  color: #10b981 !important;
}

.alert-warning {
  background: rgba(245, 158, 11, 0.15) !important;
  border-color: rgba(245, 158, 11, 0.3) !important;
  color: #f59e0b !important;
}

.alert-danger {
  background: rgba(239, 68, 68, 0.15) !important;
  border-color: rgba(239, 68, 68, 0.3) !important;
  color: #ef4444 !important;
}

.alert-info {
  background: rgba(59, 130, 246, 0.15) !important;
  border-color: rgba(59, 130, 246, 0.3) !important;
  color: #60a5fa !important;
}

/* ==========================================================================
   复选框/单选框文字颜色全局覆盖 - 确保白色可见
   ========================================================================== */

/* Dcat Admin 复选框样式 */
.vs-checkbox-con .vs-checkbox--label,
.vs-checkbox span,
.custom-control-label,
.custom-checkbox .custom-control-label,
.form-check-label,
.checkbox label,
.checkbox-inline,
label.checkbox-inline,
input[type="checkbox"] + label,
input[type="radio"] + label {
  color: #f1f5f9 !important;
}

/* 表单中的复选框组 */
.checkbox-group label,
.radio-group label,
.dcat-form .checkbox label,
.dcat-form .radio label,
.form-group .checkbox label,
.form-group .radio label {
  color: #f1f5f9 !important;
}

/* 弹窗中的复选框 */
.modal .form-check-label,
.modal .checkbox label,
.modal input[type="checkbox"] + label {
  color: #f1f5f9 !important;
}

/* 表格中的复选框 */
.table .form-check-label,
.table input[type="checkbox"] + label,
.grid-selector label {
  color: #f1f5f9 !important;
}

/* Bootstrap 复选框样式 */
.custom-control.custom-checkbox .custom-control-label::before {
  background-color: rgba(30, 41, 59, 0.8) !important;
  border-color: rgba(59, 130, 246, 0.4) !important;
}

.custom-control.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
  background-color: #3b82f6 !important;
  border-color: #3b82f6 !important;
}

/* 复选框hover效果 */
.form-check:hover .form-check-label,
.checkbox:hover label {
  color: #ffffff !important;
}

/* ==========================================================================
   Select2 下拉框样式 - 深色主题适配 (高优先级)
   ========================================================================== */

/* Select2 下拉选项文字颜色 - 使用最高优先级选择器 */
.select2-results__option,
.select2-results__option--selectable,
.select2-results__option--highlighted,
.select2-results__option--selected,
.select2-results__option--disabled,
.select2-results__message,
.select2-results__option[aria-selected],
.select2-results__option[aria-selected="true"],
.select2-results__option[aria-selected="false"],
li.select2-results__option,
li.select2-results__option--selectable,
li.select2-results__option--selected {
  color: #ffffff !important;
  background-color: transparent !important;
}

/* Select2 组合class选择器 - 更高优先级 */
.select2-results__option.select2-results__option--selectable,
.select2-results__option.select2-results__option--selectable.select2-results__option--selected,
.select2-results__option.select2-results__message {
  color: #ffffff !important;
}

/* Select2 容器内的所有选项 */
.select2-container .select2-results__option,
.select2-container--default .select2-results__option,
.select2-container--bootstrap4 .select2-results__option,
.select2-container--bootstrap .select2-results__option {
  color: #ffffff !important;
  padding: 10px 12px !important;
}

/* 悬停和高亮状态 */
.select2-results__option:hover,
.select2-results__option--highlighted,
.select2-container--default .select2-results__option--highlighted,
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option:hover {
  background: rgba(59, 130, 246, 0.4) !important;
  color: #ffffff !important;
}

/* 已选中状态 */
.select2-results__option--selected,
.select2-results__option[aria-selected="true"],
.select2-container--default .select2-results__option[aria-selected=true],
.select2-container--default .select2-results__option--selected {
  background: rgba(59, 130, 246, 0.5) !important;
  color: #ffffff !important;
}

/* Select2 搜索结果容器 */
.select2-results,
.select2-results__options {
  background: transparent !important;
}

/* Select2 下拉容器深色背景 */
.select2-dropdown,
.select2-container .select2-dropdown,
.select2-container--default .select2-dropdown,
.select2-container--open .select2-dropdown {
  background: linear-gradient(145deg, rgba(30, 41, 59, 0.98), rgba(15, 23, 42, 0.99)) !important;
  border: 1px solid rgba(59, 130, 246, 0.3) !important;
  border-radius: 8px !important;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5) !important;
}

/* Select2 搜索框 */
.select2-container--default .select2-search--dropdown .select2-search__field {
  background: rgba(30, 41, 59, 0.8) !important;
  color: #f1f5f9 !important;
  border: 1px solid rgba(59, 130, 246, 0.4) !important;
  border-radius: 6px !important;
}

.select2-container--default .select2-search--dropdown .select2-search__field::placeholder {
  color: #94a3b8 !important;
}

/* Select2 选项样式 - 统一白色 */
.select2-container--default .select2-results__option {
  color: #ffffff !important;
  padding: 10px 12px !important;
}

.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option:hover {
  background: rgba(59, 130, 246, 0.4) !important;
  color: #ffffff !important;
}

.select2-container--default .select2-results__option[aria-selected=true] {
  background: rgba(59, 130, 246, 0.5) !important;
  color: #ffffff !important;
}

/* Select2 已选中状态 */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
  background: rgba(30, 41, 59, 0.8) !important;
  border: 1px solid rgba(59, 130, 246, 0.4) !important;
  border-radius: 8px !important;
  min-height: 42px !important;
}

.select2-container--default .select2-selection--single .select2-selection__rendered,
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
  color: #ffffff !important;
}

.select2-container--default .select2-selection--single .select2-selection__placeholder {
  color: #94a3b8 !important;
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
  border-color: #94a3b8 transparent transparent transparent !important;
}

/* Select2 多选标签 */
.select2-container--default .select2-selection--multiple .select2-selection__choice {
  background: rgba(59, 130, 246, 0.3) !important;
  border: 1px solid rgba(59, 130, 246, 0.5) !important;
  color: #f1f5f9 !important;
  border-radius: 4px !important;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
  color: #f1f5f9 !important;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
  color: #ef4444 !important;
}

/* Select2 焦点状态 */
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--multiple {
  border-color: rgba(59, 130, 246, 0.6) !important;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15) !important;
}

/* Select2 无结果提示 */
.select2-results__message,
li.select2-results__message,
.select2-results__option.select2-results__message {
  color: #ffffff !important;
}

/* ==========================================================================
   下拉框选项文字颜色全局覆盖 - 确保所有下拉选项都是白色
   ========================================================================== */

/* 原生select option */
select option,
select.form-control option,
.form-control option,
datalist option {
  color: #f1f5f9 !important;
  background: #1e293b !important;
}

/* Bootstrap/Dcat Admin 下拉菜单 */
.dropdown-menu,
.dropdown-menu .dropdown-item,
.dropdown-item {
  color: #e2e8f0 !important;
}

.dropdown-menu {
  background: linear-gradient(145deg, rgba(30, 41, 59, 0.98), rgba(15, 23, 42, 0.99)) !important;
  border: 1px solid rgba(59, 130, 246, 0.3) !important;
  border-radius: 8px !important;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4) !important;
}

.dropdown-item:hover,
.dropdown-item:focus {
  background: rgba(59, 130, 246, 0.2) !important;
  color: #ffffff !important;
}

.dropdown-item.active,
.dropdown-item:active {
  background: rgba(59, 130, 246, 0.4) !important;
  color: #ffffff !important;
}

.dropdown-divider {
  border-color: rgba(59, 130, 246, 0.2) !important;
}

/* LayUI 下拉框 */
.layui-form-select dl dd,
.layui-form-select dl dt {
  color: #f1f5f9 !important;
}

.layui-form-select dl {
  background: rgba(30, 41, 59, 0.98) !important;
  border-color: rgba(59, 130, 246, 0.3) !important;
}

.layui-form-select dl dd:hover,
.layui-form-select dl dd.layui-this {
  background: rgba(59, 130, 246, 0.3) !important;
  color: #ffffff !important;
}

/* SweetAlert2 下拉框 */
.swal2-select option {
  color: #f1f5f9 !important;
  background: #1e293b !important;
}

/* 表格内的下拉框 */
.table select option,
.dcat-box select option,
.grid select option {
  color: #f1f5f9 !important;
  background: #1e293b !important;
}

/* 弹窗内的下拉框 */
.modal select option,
.modal .dropdown-item,
.modal-content select option {
  color: #f1f5f9 !important;
  background: #1e293b !important;
}

/* Chosen 下拉框插件 */
.chosen-container .chosen-results li,
.chosen-container .chosen-drop {
  color: #f1f5f9 !important;
  background: rgba(30, 41, 59, 0.98) !important;
}

.chosen-container .chosen-results li:hover,
.chosen-container .chosen-results li.highlighted {
  background: rgba(59, 130, 246, 0.3) !important;
  color: #ffffff !important;
}

/* Bootstrap-select 插件 */
.bootstrap-select .dropdown-menu li a,
.bootstrap-select .dropdown-menu li a span {
  color: #f1f5f9 !important;
}

.bootstrap-select .dropdown-menu li:hover a,
.bootstrap-select .dropdown-menu li.selected a {
  background: rgba(59, 130, 246, 0.3) !important;
  color: #ffffff !important;
}

/* 所有下拉选项文字白色 - 全局强制覆盖 */
[class*="select"] option,
[class*="dropdown"] li,
[class*="dropdown"] a:not(.btn),
[class*="menu"] li a,
[role="listbox"] [role="option"] {
  color: #e2e8f0 !important;
}

[class*="select"] option:hover,
[class*="dropdown"] li:hover,
[role="listbox"] [role="option"]:hover,
[role="listbox"] [role="option"][aria-selected="true"] {
  color: #ffffff !important;
}