/* ==========================================================================
   AltaqaStrategy — Design System
   Sprint 8 — Task 8.1
   ========================================================================== */

/* ==========================================================================
   1. COLOR PALETTE
   ========================================================================== */

/* Tokens */
:root {
/* Primary — Emerald */
--ds-color-primary-50: #ecfdf5;
--ds-color-primary-100: #d1fae5;
--ds-color-primary-200: #a7f3d0;
--ds-color-primary-300: #6ee7b7;
--ds-color-primary-400: #34d399;
--ds-color-primary-500: #10b981;
--ds-color-primary-600: #059669;
--ds-color-primary-700: #047857;
--ds-color-primary-800: #065f46;
--ds-color-primary-900: #064e3b;

/* Secondary — Teal */
--ds-color-secondary-50: #f0fdfa;
--ds-color-secondary-100: #ccfbf1;
--ds-color-secondary-200: #99f6e4;
--ds-color-secondary-300: #5eead4;
--ds-color-secondary-400: #2dd4bf;
--ds-color-secondary-500: #14b8a6;
--ds-color-secondary-600: #0d9488;
--ds-color-secondary-700: #0f766e;
--ds-color-secondary-800: #115e59;
--ds-color-secondary-900: #134e4a;

/* Accent — Amber */
--ds-color-accent-50: #fffbeb;
--ds-color-accent-100: #fef3c7;
--ds-color-accent-200: #fde68a;
--ds-color-accent-300: #fcd34d;
--ds-color-accent-400: #fbbf24;
--ds-color-accent-500: #f59e0b;
--ds-color-accent-600: #d97706;
--ds-color-accent-700: #b45309;
--ds-color-accent-800: #92400e;
--ds-color-accent-900: #78350f;
--ds-color-accent-highlight: #FFD23F;

/* Neutral Gray */
--ds-color-gray-50: #f8fafc;
--ds-color-gray-100: #f1f5f9;
--ds-color-gray-200: #e2e8f0;
--ds-color-gray-300: #cbd5e1;
--ds-color-gray-400: #94a3b8;
--ds-color-gray-500: #64748b;
--ds-color-gray-600: #475569;
--ds-color-gray-700: #334155;
--ds-color-gray-800: #1e293b;
--ds-color-gray-900: #0f172a;
--ds-color-gray-950: #020617;

/* Semantic Colors */
--ds-color-success: #10b981;
--ds-color-success-bg: #ecfdf5;

--ds-color-warning: #f59e0b;
--ds-color-warning-bg: #fffbeb;

--ds-color-danger: #ef4444;
--ds-color-danger-bg: #fef2f2;

--ds-color-info: #3b82f6;
--ds-color-info-bg: #eff6ff;

/* Surfaces, text and borders — canonical theme tokens */
--ds-color-surface-canvas: #F8FAFB;
--ds-color-surface-elevated: #FFFFFF;
--ds-color-surface-muted: #EEF2F6;
--ds-color-text-primary: #1A2332;
--ds-color-text-secondary: #5F6C7B;
--ds-color-text-tertiary: #5A6B7C;
--ds-color-text-muted: #5A6B7C;
--ds-color-border: #E2E8F0;

/* Semantic badge surfaces, highlights, gradients and overlays */
--badge-blue-bg: #DBEAFE;
--badge-blue-text: #1E40AF;
--badge-yellow-bg: #FEF3C7;
--badge-yellow-text: #92400E;
--badge-green-bg: #D1FAE5;
--badge-green-text: #065F46;
--badge-red-bg: #FEE2E2;
--badge-red-text: #991B1B;
--badge-gray-bg: #F3F4F6;
--badge-gray-text: #374151;

--search-highlight: #FDE68A;

--grad-yellow: linear-gradient(135deg, #FEF3C7 0%, #F59E0B 100%);
--grad-green: linear-gradient(135deg, #D1FAE5 0%, #10B981 100%);
--grad-blue: linear-gradient(135deg, #DBEAFE 0%, #3B82F6 100%);

--overlay-strong: rgba(0, 0, 0, 0.5);
--overlay-dialog: rgba(26, 35, 50, 0.4);
--skeleton-shine: #F3F4F6;

/* Sidebar — legacy tokens (kept for backward compatibility) */
--ds-color-sidebar-bg: #061F26;
--ds-color-sidebar-bg-elevated: #0b2a30;
--ds-color-sidebar-border: #0E3038;
--ds-color-sidebar-text: #E2F1EC;
--ds-color-sidebar-text-muted: #6B9A90;
--ds-color-sidebar-hover-bg: rgba(255, 255, 255, 0.06);
--ds-color-sidebar-active-bg: #14B8A6;
--ds-color-sidebar-active-text: #ffffff;

/* Sidebar — premium redesign tokens (Sprint 8.5+) */
--sidebar-bg:           #05181C;
--sidebar-bg-elevated:  #081E23;
--sidebar-bg-hover:     rgba(255, 255, 255, 0.05);
--sidebar-bg-active:    #08282D;
--sidebar-text:         #FFFFFF;
--sidebar-text-muted:   #94A8AC;
--sidebar-border:       #0A252C;
--sidebar-accent:       #00D2B4;
--sidebar-accent-soft:  rgba(0, 210, 180, 0.15);
--sidebar-orange:       #FA7232;
--sidebar-danger:       #FA7232;
--sidebar-danger-soft:  rgba(250, 114, 50, 0.12);

/* ==========================================================================
   Legacy Aliases — Backward Compatibility
   ========================================================================== */

/* These aliases preserve compatibility with existing templates and styles */
--primary: var(--ds-color-primary-500);
--primary-light: var(--ds-color-primary-100);
--primary-dark: var(--ds-color-primary-600);
--secondary: var(--sidebar-orange);
--secondary-dark: var(--ds-color-secondary-600);
--accent: var(--ds-color-accent-highlight);

--bg-primary: var(--ds-color-surface-canvas);
--bg-secondary: var(--ds-color-surface-elevated);
--bg-tertiary: var(--ds-color-surface-muted);

--text-primary: var(--ds-color-text-primary);
--text-secondary: var(--ds-color-text-secondary);
--text-tertiary: var(--ds-color-text-tertiary);
--text-muted: var(--ds-color-text-muted);

--border: var(--ds-color-border);

--status-blue: var(--ds-color-info);
--status-yellow: var(--ds-color-warning);
--status-green: var(--ds-color-success);
--status-red: var(--ds-color-danger);
--status-gray: var(--ds-color-gray-500);

--glass-bg: rgba(255, 255, 255, 0.7);
--glass-border: 1px solid rgba(255, 255, 255, 0.5);
--glass-blur: blur(12px);
--glass-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.05);

/* ==========================================================================
   2. TYPOGRAPHY
   ========================================================================== */

/* Font Families */
--font-display: "Sora", sans-serif;
--font-body: "DM Sans", sans-serif;
--font-mono: "JetBrains Mono", "Fira Code", monospace;

/* Font Size Scale */
--font-size-xs: 0.75rem;
--font-size-sm: 0.875rem;
--font-size-base: 1rem;
--font-size-md: 1.125rem;
--font-size-lg: 1.25rem;
--font-size-xl: 1.5rem;
--font-size-2xl: 1.875rem;
--font-size-3xl: 2.25rem;

/* Font Weights */
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;

/* Line Heights */
--line-height-tight: 1.25;
--line-height-normal: 1.5;
--line-height-relaxed: 1.75;

/* Letter Spacing */
--letter-spacing-tight: -0.025em;
--letter-spacing-normal: 0;
--letter-spacing-wide: 0.025em;

/* ==========================================================================
   3. SHADOWS
   ========================================================================== */

--shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.04);
--shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.04);
--shadow-md: 0 4px 12px rgba(15, 23, 42, 0.06);
--shadow-lg: 0 10px 40px rgba(15, 23, 42, 0.08);
--shadow-xl: 0 20px 60px rgba(15, 23, 42, 0.12);
--shadow-hover: 0 8px 24px color-mix(in srgb, var(--ds-color-primary-500) 16%, transparent);

/* ==========================================================================
   4. BORDER RADIUS
   ========================================================================== */

--radius-xs: 4px;
--radius-sm: 8px;
--radius-md: 12px;
--radius-lg: 16px;
--radius-xl: 24px;
--radius-2xl: 32px;
--radius-full: 9999px;

/* ==========================================================================
   5. SPACING SCALE
   ========================================================================== */

--spacing-xs: 0.5rem;
--spacing-sm: 0.75rem;
--spacing-md: 1rem;
--spacing-lg: 1.5rem;
--spacing-xl: 2rem;
--spacing-2xl: 3rem;
--spacing-3xl: 4rem;

/* ==========================================================================
   6. TRANSITION TOKENS
   ========================================================================== */

--transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
--transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
--transition-normal: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
--transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
--transition-hover: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);

/* Focus ring — UI_IMPROVEMENTS.md 6.4 (P0) : anneau global visible
   clair + sombre (contraste AA sur fond clair ET fond noir). */
--ds-focus-ring: #0f766e;
--ds-focus-ring-offset: #ffffff;

/* UI_IMPROVEMENTS.md 1.3 (P1) : nav mobile — z-index du backdrop
   sidebar, sous la sidebar (200) et sous les tokens modales/toast
   (`ui-components.css` : --z-modal-backdrop 1040, --z-toast 1080). */
--z-sidebar-backdrop: 190;
}

/* ==========================================================================
   6b. FOCUS VISIBLE GLOBAL (UI_IMPROVEMENTS.md 6.4, P0)
   Anneau unique : 3px + offset 2px sur token. Les règles locales
   (:focus ad-hoc par composant) restent des surcharges opt-in.
   ========================================================================== */

:focus-visible {
  outline: 3px solid var(--ds-focus-ring);
  outline-offset: 2px;
  border-radius: var(--radius-xs);
}

@media (prefers-reduced-motion: reduce) {
  :focus-visible {
    transition: none;
  }
}

/* ==========================================================================
   7. GENERIC COMPONENTS
   ========================================================================== */

/* --------------------------------------------------------------------------
   Card
   -------------------------------------------------------------------------- */

.card {
  background: var(--bg-secondary);
  border: 1px solid var(--ds-color-gray-200);
  border-radius: var(--radius-lg);
  padding: var(--spacing-lg);
  box-shadow: var(--shadow-sm);
  font-family: var(--font-body);
  transition: var(--transition);
}

.card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--ds-color-primary-200);
  transform: translateY(-2px);
}

.card--glass {
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: var(--glass-border);
  box-shadow: var(--glass-shadow);
}

.card-header {
  margin-bottom: var(--spacing-md);
}

.card-title {
  font-family: var(--font-display);
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
  color: var(--text-primary);
  line-height: var(--line-height-tight);
}

.card-subtitle {
  margin: var(--spacing-xs) 0 0;
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

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

.card-footer {
  display: flex;
  justify-content: flex-end;
  gap: var(--spacing-sm);
  margin-top: var(--spacing-md);
  padding-top: var(--spacing-md);
  border-top: 1px solid var(--border);
}

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */

.btn,
.btn-primary,
.btn-secondary,
.btn-outline,
.btn-outline-light,
.btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-xs);

  font-family: var(--font-body);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-normal);

  border: none;
  border-radius: var(--radius-sm);

  padding: var(--spacing-sm) var(--spacing-lg);

  cursor: pointer;
  text-decoration: none;
  position: relative;
  overflow: hidden;
  user-select: none;

  transition: var(--transition);
}

.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none !important;
}

.btn-primary {
  color: #ffffff;
  background: var(--ds-color-primary-500);
  box-shadow: var(--shadow-sm);
}

.btn-primary:hover {
  background: var(--ds-color-primary-600);
  box-shadow: var(--shadow-hover);
  transform: translateY(-1px);
}

.btn-secondary {
  color: var(--ds-color-secondary-700);
  background: transparent;
  border: 1px solid var(--ds-color-secondary-500);
}

.btn-secondary:hover {
  background: var(--ds-color-secondary-50);
  box-shadow: var(--shadow-sm);
  transform: translateY(-1px);
}

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

.btn-outline:hover {
  background: var(--bg-tertiary);
  border-color: var(--ds-color-gray-400);
  transform: translateY(-1px);
}

.btn-ghost {
  background: transparent;
  color: var(--text-secondary);
}

.btn-ghost:hover {
  background: var(--bg-tertiary);
  color: var(--text-primary);
}

.btn-outline-light {
  background: var(--bg-secondary);
  color: var(--text-primary);
  border: 1px solid var(--border);
}

.btn-outline-light:hover {
  background: var(--bg-tertiary);
}

.btn-sm {
  padding: var(--spacing-xs) var(--spacing-md);
  font-size: 0.8125rem;
  border-radius: var(--radius-sm);
  gap: 0.375rem;
}

.btn-sm .icon {
  width: 16px;
  height: 16px;
}

.btn-lg {
  padding: var(--spacing-md) var(--spacing-lg);
  font-size: var(--font-size-base);
}

/* --------------------------------------------------------------------------
   Input
   -------------------------------------------------------------------------- */

.input {
  display: block;
  width: 100%;

  font-family: var(--font-body);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-normal);
  line-height: var(--line-height-normal);
  color: var(--text-primary);

  background: var(--bg-secondary);
  border: 1px solid var(--ds-color-gray-300);
  border-radius: var(--radius-md);

  padding: var(--spacing-sm) var(--spacing-md);

  transition: var(--transition);
}

.input:focus {
  outline: none;
  border-color: var(--ds-color-primary-500);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ds-color-primary-500) 15%, transparent);
}

.input::placeholder {
  /* UI_IMPROVEMENTS.md 6.1 (P0) : --ds-color-gray-400 (#94a3b8, 2.6:1)
     réservé aux bordures ; le placeholder texte utilise --text-tertiary (AA). */
  color: var(--text-tertiary);
}

/* --------------------------------------------------------------------------
   Badge
   -------------------------------------------------------------------------- */

.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-xs);

  font-family: var(--font-body);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: var(--letter-spacing-wide);

  color: #ffffff;
  background: var(--ds-color-gray-500);

  border-radius: var(--radius-full);

  padding: var(--spacing-xs) var(--spacing-sm);

  white-space: nowrap;
}

.badge.primary { background: var(--ds-color-primary-500); }
.badge.secondary { background: var(--ds-color-secondary-500); }
.badge.accent { background: var(--ds-color-accent-500); }
.badge.success { background: var(--ds-color-success); }
.badge.warning { background: var(--ds-color-warning); }
.badge.danger { background: var(--ds-color-danger); }
.badge.info { background: var(--ds-color-info); }

.badge.blue {
  background: var(--badge-blue-bg);
  color: var(--badge-blue-text);
}

.badge.yellow {
  background: var(--badge-yellow-bg);
  color: var(--badge-yellow-text);
}

.badge.green {
  background: var(--badge-green-bg);
  color: var(--badge-green-text);
}

.badge.red {
  background: var(--badge-red-bg);
  color: var(--badge-red-text);
}

.badge.gray {
  background: var(--badge-gray-bg);
  color: var(--badge-gray-text);
}

/* --------------------------------------------------------------------------
   Empty State — UI_IMPROVEMENTS.md 2.1 (P1)
   Tokens-only, :focus-visible hérité 6.4, overrides du thème sombre plus
   bas, responsive ≤640px. Même composant que ui-components.css pour les
   pages standalone.
   -------------------------------------------------------------------------- */

.empty-state {
  text-align: center;
  padding: 4rem 2rem;
  color: var(--text-tertiary);
  background: var(--bg-secondary);
  border: 1px dashed var(--border-medium);
  border-radius: var(--radius-lg, 0.75rem);
}

.empty-state-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  margin-bottom: 1rem;
  border-radius: var(--radius-full, 9999px);
  background: var(--bg-tertiary);
  color: var(--text-tertiary);
}

.empty-state-icon svg,
.empty-state-icon i {
  width: 26px;
  height: 26px;
}

.empty-state-title {
  margin: 0 0 0.375rem;
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-primary);
}

.empty-state-text {
  margin: 0 0 1.25rem;
  font-size: 0.875rem;
  color: var(--text-secondary);
}

.empty-state .btn {
  margin-top: 0.25rem;
}

.empty-state--compact {
  padding: 1.5rem 1rem;
}

.empty-state--compact .empty-state-icon {
  width: 40px;
  height: 40px;
  margin-bottom: 0.75rem;
}

.empty-state--compact .empty-state-icon svg,
.empty-state--compact .empty-state-icon i {
  width: 20px;
  height: 20px;
}

.empty-state--compact .empty-state-title {
  font-size: 0.875rem;
}

.empty-state--compact .empty-state-text {
  margin-bottom: 0.75rem;
  font-size: 0.8125rem;
}

@media (max-width: 640px) {
  .empty-state {
    padding: 2.5rem 1.25rem;
  }
  .empty-state--compact {
    padding: 1.25rem 0.875rem;
  }
}

/* --------------------------------------------------------------------------
   Section Title
   -------------------------------------------------------------------------- */

.section-title {
  font-family: var(--font-display);
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
  color: var(--text-primary);
  letter-spacing: var(--letter-spacing-tight);
  margin-bottom: var(--spacing-md);
}

/* --------------------------------------------------------------------------
   Icon Container
   -------------------------------------------------------------------------- */

.icon-container {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: var(--spacing-2xl);
  height: var(--spacing-2xl);

  border-radius: var(--radius-md);
  flex-shrink: 0;
}

.icon-container.sm {
  width: var(--spacing-lg);
  height: var(--spacing-lg);
  border-radius: var(--radius-sm);
}

.icon-container.lg {
  width: var(--spacing-3xl);
  height: var(--spacing-3xl);
  border-radius: var(--radius-lg);
}

.icon-container.primary {
  background: var(--ds-color-primary-100);
  color: var(--ds-color-primary-600);
}

.icon-container.secondary {
  background: var(--ds-color-secondary-100);
  color: var(--ds-color-secondary-600);
}

.icon-container.accent {
  background: var(--ds-color-accent-100);
  color: var(--ds-color-accent-600);
}

.icon-container.success {
  background: var(--ds-color-success-bg);
  color: var(--ds-color-success);
}

.icon-container.warning {
  background: var(--ds-color-warning-bg);
  color: var(--ds-color-warning);
}

.icon-container.danger {
  background: var(--ds-color-danger-bg);
  color: var(--ds-color-danger);
}

.icon-container.info {
  background: var(--ds-color-info-bg);
  color: var(--ds-color-info);
}

/* ==========================================================================
   8. DARK MODE OVERRIDES
   ========================================================================== */

/* Palette alignée sur la sidebar/navbar (#05181C / #00D2B4 / #FA7232).
   Source unique des tokens dark : ne pas redéclarer ces tokens dans
   style.css ni ui-components.css (garde-fou TestDarkThemeUnified). */
[data-theme="dark"] {
  /* Primary — Teal navbar (accent #00D2B4) */
  --ds-color-primary-50: #062a2a;
  --ds-color-primary-100: #073a37;
  --ds-color-primary-200: #0a4e49;
  --ds-color-primary-300: #0e6b62;
  --ds-color-primary-400: #12a08f;
  --ds-color-primary-500: #00d2b4;
  --ds-color-primary-600: #00b89c;
  --ds-color-primary-700: #009b84;
  --ds-color-primary-800: #007d6b;
  --ds-color-primary-900: #005f52;

  /* Secondary — Orange navbar (complémentaire #FA7232) */
  --ds-color-secondary-50: #2a150d;
  --ds-color-secondary-100: #3a1d12;
  --ds-color-secondary-200: #52291a;
  --ds-color-secondary-300: #6e3723;
  --ds-color-secondary-400: #a34c2c;
  --ds-color-secondary-500: #fa7232;
  --ds-color-secondary-600: #e5622a;
  --ds-color-secondary-700: #c75422;
  --ds-color-secondary-800: #a3451c;
  --ds-color-secondary-900: #7f3516;

  /* Accent — Amber */
  --ds-color-accent-50: #2a1f06;
  --ds-color-accent-100: #3d2c08;
  --ds-color-accent-200: #5c4209;
  --ds-color-accent-300: #8a620c;
  --ds-color-accent-400: #d59b14;
  --ds-color-accent-500: #fbbf24;
  --ds-color-accent-600: #fcd34d;
  --ds-color-accent-700: #fde68a;
  --ds-color-accent-800: #fef3c7;
  --ds-color-accent-900: #fffbeb;
  --ds-color-accent-highlight: #FFD666;

  /* Neutral Gray — échelle inversée, teintée teal */
  --ds-color-gray-50: #04141a;
  --ds-color-gray-100: #081e23;
  --ds-color-gray-200: #0c272e;
  --ds-color-gray-300: #12363e;
  --ds-color-gray-400: #1b4a52;
  --ds-color-gray-500: #134048;
  --ds-color-gray-600: #94a8ac;
  --ds-color-gray-700: #cbd5e1;
  --ds-color-gray-800: #e2e8f0;
  --ds-color-gray-900: #f1f5f9;
  --ds-color-gray-950: #ffffff;

  /* Semantic Colors */
  --ds-color-success: #34d399;
  --ds-color-success-bg: #07352a;

  --ds-color-warning: #fbbf24;
  --ds-color-warning-bg: #3a2a08;

  --ds-color-danger: #f87171;
  --ds-color-danger-bg: #3a1517;

  --ds-color-info: #60a5fa;
  --ds-color-info-bg: #12294a;

  --ds-color-surface-canvas: #04141A;
  --ds-color-surface-elevated: #081E23;
  --ds-color-surface-muted: #0C272E;
  --ds-color-text-primary: #FFFFFF;
  --ds-color-text-secondary: #CBD5E1;
  --ds-color-text-tertiary: #94A8AC;
  --ds-color-text-muted: #94A8AC;
  --ds-color-border: #12363E;

  /* Surfaces & texte — famille sidebar, canvas légèrement plus profond */
  --bg-primary: #04141A;
  --bg-secondary: #081E23;
  --bg-tertiary: #0C272E;
  --border: #12363E;

  --text-primary: #FFFFFF;
  --text-secondary: #CBD5E1;
  --text-tertiary: #94A8AC;
  --text-muted: #94A8AC;

  /* Alias legacy — suivent désormais la palette navbar */
  --primary: #00D2B4;
  --primary-light: #062A2A;
  --primary-dark: #00B89C;
  --secondary: #FA7232;
  --secondary-dark: #E5622A;
  --accent: #FFD666;

  --status-blue: #60A5FA;
  --status-yellow: #FBBF24;
  --status-green: #34D399;
  --status-red: #F87171;
  --status-gray: #94A8AC;

  --glass-bg: rgba(8, 30, 35, 0.85);
  --glass-border: 1px solid rgba(0, 210, 180, 0.14);
  --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.55);

  --badge-blue-bg: #12294A;
  --badge-blue-text: #BFDBFE;
  --badge-yellow-bg: #3A2A08;
  --badge-yellow-text: #FDE68A;
  --badge-green-bg: #07352A;
  --badge-green-text: #A7F3D0;
  --badge-red-bg: #3A1517;
  --badge-red-text: #FECACA;
  --badge-gray-bg: #12363E;
  --badge-gray-text: #CBD5E1;

  --search-highlight: #3A2A08;

  --grad-yellow: linear-gradient(135deg, #5A3A05 0%, #F59E0B 100%);
  --grad-green: linear-gradient(135deg, #065F52 0%, #00D2B4 100%);
  --grad-blue: linear-gradient(135deg, #123060 0%, #3B82F6 100%);

  --overlay-strong: rgba(2, 12, 15, 0.82);
  --overlay-dialog: rgba(3, 20, 26, 0.75);
  --skeleton-shine: #14343B;

  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.6);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.6);
  --shadow-lg: 0 10px 40px rgba(0, 0, 0, 0.7);
  --shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.8);

  color-scheme: dark;

  /* Focus ring sur fond sombre (pin test) */
  --ds-focus-ring: #2dd4bf;
  --ds-focus-ring-offset: #04141A;

  /* Texte sur fonds pleins clairs (teal/orange/amber) : encre sombre AA.
     Ne vise pas `.badge` nu : les variantes `.badge.green` etc. gardent
     leurs tokens sémantiques (texte clair sur fond sombre). */
  .btn-primary,
  .metric-card,
  .badge.primary,
  .badge.secondary,
  .badge.accent,
  .badge.success,
  .badge.warning,
  .badge.danger,
  .badge.info {
    color: #04141A;
  }

  /* `.btn-secondary` est transparent : l'encre sombre ci-dessus le rendait
     invisible sur le canvas dark. On garde le contour orange et on passe
     le libellé en orange clair (AA sur #04141A). */
  .btn-secondary {
    color: var(--ds-color-secondary-500);
    border-color: var(--ds-color-secondary-500);
  }

  .btn-secondary:hover {
    background: var(--ds-color-secondary-50);
    color: var(--ds-color-secondary-500);
  }
}
