/* ══════════════════════════════════════════════════════════════
   APEX360 DESIGN TOKENS
   Central source of truth for all visual properties.
   
   Usage: 
   background: var(--surface-1);
   color: var(--text-primary);
   padding: var(--spacing-md);
   border-radius: var(--radius-md);
   font-size: var(--font-size-sm);
   box-shadow: var(--shadow-sm);
   
   Theme: page body gets .style-apex-dark or .style-colorblind
   Palette: page body gets .palette-emerald / .palette-amber / etc.
   ══════════════════════════════════════════════════════════════ */

:root {
  /* ── Colours ── */
  --color-primary: #6c5ce7;
  --color-primary-hover: #5a4bd1;
  --color-primary-light: rgba(108, 92, 231, 0.15);
  --color-primary-subtle: rgba(108, 92, 231, 0.06);
  --color-secondary: #818cf8;
  --color-success: #059669;
  --color-success-hover: #047857;
  --color-success-light: rgba(5, 150, 105, 0.15);
  --color-success-subtle: rgba(5, 150, 105, 0.06);
  --color-warning: #d97706;
  --color-warning-hover: #b45309;
  --color-warning-light: rgba(217, 119, 6, 0.15);
  --color-warning-subtle: rgba(217, 119, 6, 0.06);
  --color-danger: #e11d48;
  --color-danger-hover: #be123c;
  --color-danger-light: rgba(225, 29, 72, 0.15);
  --color-danger-subtle: rgba(225, 29, 72, 0.06);
  --color-info: #0891b2;
  --color-info-light: rgba(8, 145, 178, 0.15);

  /* ── Surfaces ── */
  --surface-page: #f8f9fc;
  --surface-card: #ffffff;
  --surface-card-hover: #f8f9fc;
  --surface-elevated: #ffffff;
  --surface-overlay: rgba(0, 0, 0, 0.06);
  --surface-border: #e8ecf4;
  --surface-border-hover: #d0d5e0;

  /* ── Text ── */
  --text-primary: #1a1a2e;
  --text-secondary: #6b7280;
  --text-muted: #9ca3af;
  --text-inverse: #ffffff;
  --text-link: #6c5ce7;

  /* ── Spacing ── */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-lg: 24px;
  --spacing-xl: 32px;
  --spacing-2xl: 48px;
  --spacing-3xl: 64px;
  --spacing-4xl: 96px;

  /* ── Border Radius ── */
  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  --radius-full: 9999px;

  /* ── Shadows ── */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
  --shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.1);

  /* ── Floating Component Positioning (Release 28) ── */
  --floating-bottom: 24px;
  --floating-appexi-right: 32px;
  --floating-dock-right: 104px;

  /* ── Z-Index Hierarchy (Release 28) ── */
  --z-floating-dock: 999;
  --z-appexi: 9999;
  --z-modal-backdrop: 100;
  --z-modal-content: 200;
  --z-command-palette: 99999;

  /* ── Design System Typography Scale (Release 16.6) ── */
  --font-display-kpi: 48px;
  --font-page-title: 40px;
  --font-section-title: 32px;
  --font-card-title: 22px;
  --font-subheading: 18px;
  --font-body: 16px;
  --font-supporting: 15px;
  --font-caption: 13px;
  --font-micro: 11px;

  /* Component Sizing */
  --btn-height: 44px;
  --input-height: 48px;
  --card-padding: 28px;
  --card-padding-lg: 36px;
  --section-spacing: 64px;
  --section-spacing-lg: 96px;

  /* ── Legacy Aliases ── */
  --font-size-micro: 11px;
  --font-size-caption: 13px;
  --font-size-body: var(--font-body);
  --font-size-supporting: var(--font-supporting);
  --font-size-h3: var(--font-card-title);
  --font-size-h2: var(--font-section-title);
  --font-size-h1: var(--font-page-title);
  --font-size-display: var(--font-display-kpi);

  --font-size-xs: var(--font-caption);
  --font-size-sm: var(--font-supporting);
  --font-size-md: var(--font-body);

  /* ══════════════════════════════════════════════════════════════
     RELEASE 29 — SEMANTIC DASHBOARD COLOUR TOKENS
     Every module has: primary, surface, border, hover, icon, chart
     ══════════════════════════════════════════════════════════════ */

  /* Executive */
  --clr-executive-primary: #818cf8;
  --clr-executive-surface: rgba(129,140,248,0.06);
  --clr-executive-border: rgba(129,140,248,0.15);
  --clr-executive-hover: rgba(129,140,248,0.12);
  --clr-executive-icon: #818cf8;
  --clr-executive-chart: #818cf8;

  /* Operational */
  --clr-operational-primary: #34d399;
  --clr-operational-surface: rgba(52,211,153,0.06);
  --clr-operational-border: rgba(52,211,153,0.15);
  --clr-operational-hover: rgba(52,211,153,0.12);
  --clr-operational-icon: #34d399;
  --clr-operational-chart: #34d399;

  /* Financial */
  --clr-financial-primary: #f59e0b;
  --clr-financial-surface: rgba(245,158,11,0.06);
  --clr-financial-border: rgba(245,158,11,0.15);
  --clr-financial-hover: rgba(245,158,11,0.12);
  --clr-financial-icon: #f59e0b;
  --clr-financial-chart: #f59e0b;

  /* Governance */
  --clr-governance-primary: #3b82f6;
  --clr-governance-surface: rgba(59,130,246,0.06);
  --clr-governance-border: rgba(59,130,246,0.15);
  --clr-governance-hover: rgba(59,130,246,0.12);
  --clr-governance-icon: #3b82f6;
  --clr-governance-chart: #3b82f6;

  /* Risk */
  --clr-risk-primary: #ef4444;
  --clr-risk-surface: rgba(239,68,68,0.06);
  --clr-risk-border: rgba(239,68,68,0.15);
  --clr-risk-hover: rgba(239,68,68,0.12);
  --clr-risk-icon: #ef4444;
  --clr-risk-chart: #ef4444;

  /* Asset */
  --clr-asset-primary: #8b5cf6;
  --clr-asset-surface: rgba(139,92,246,0.06);
  --clr-asset-border: rgba(139,92,246,0.15);
  --clr-asset-hover: rgba(139,92,246,0.12);
  --clr-asset-icon: #8b5cf6;
  --clr-asset-chart: #8b5cf6;

  /* Safety */
  --clr-safety-primary: #14b8a6;
  --clr-safety-surface: rgba(20,184,166,0.06);
  --clr-safety-border: rgba(20,184,166,0.15);
  --clr-safety-hover: rgba(20,184,166,0.12);
  --clr-safety-icon: #14b8a6;
  --clr-safety-chart: #14b8a6;

  /* Quality */
  --clr-quality-primary: #f97316;
  --clr-quality-surface: rgba(249,115,22,0.06);
  --clr-quality-border: rgba(249,115,22,0.15);
  --clr-quality-hover: rgba(249,115,22,0.12);
  --clr-quality-icon: #f97316;
  --clr-quality-chart: #f97316;

  /* Maintenance */
  --clr-maintenance-primary: #ec4899;
  --clr-maintenance-surface: rgba(236,72,153,0.06);
  --clr-maintenance-border: rgba(236,72,153,0.15);
  --clr-maintenance-hover: rgba(236,72,153,0.12);
  --clr-maintenance-icon: #ec4899;
  --clr-maintenance-chart: #ec4899;

  /* People */
  --clr-people-primary: #06b6d4;
  --clr-people-surface: rgba(6,182,212,0.06);
  --clr-people-border: rgba(6,182,212,0.15);
  --clr-people-hover: rgba(6,182,212,0.12);
  --clr-people-icon: #06b6d4;
  --clr-people-chart: #06b6d4;

  /* Environment */
  --clr-environment-primary: #22c55e;
  --clr-environment-surface: rgba(34,197,94,0.06);
  --clr-environment-border: rgba(34,197,94,0.15);
  --clr-environment-hover: rgba(34,197,94,0.12);
  --clr-environment-icon: #22c55e;
  --clr-environment-chart: #22c55e;

  /* ── Trend Colours ── */
  --trend-up: #34d399;
  --trend-down: #ef4444;
  --trend-flat: #9ca3af;

  /* ── Status Colours ── */
  --status-critical: #ef4444;
  --status-warning: #f59e0b;
  --status-good: #34d399;
  --status-inactive: #6b7280;

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

  /* ── Letter Spacing ── */
  --letter-spacing-tight: -0.03em;
  --letter-spacing-normal: 0;
  --letter-spacing-wide: 0.08em;
  --letter-spacing-wider: 0.5px;

  /* ── Line Height ── */
  --line-height-tight: 1.1;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.7;

  /* ── Transitions ── */
  --transition-fast: 0.15s;
  --transition-normal: 0.25s;
  --transition-slow: 0.35s;

  /* ══════════════════════════════════════════════════════════════
     ENTERPRISE DESIGN SYSTEM TOKENS (--ds-*)
     Public interface — all new code uses these.
     Private implementation aliased from --color-* / --spacing-* above.
     ══════════════════════════════════════════════════════════════ */

  /* ── DS: Colours ── */
  --ds-color-primary: var(--color-primary);
  --ds-color-primary-hover: var(--color-primary-hover);
  --ds-color-primary-light: var(--color-primary-light);
  --ds-color-primary-subtle: var(--color-primary-subtle);
  --ds-color-secondary: var(--color-secondary);
  --ds-color-success: var(--color-success);
  --ds-color-success-hover: var(--color-success-hover);
  --ds-color-success-light: var(--color-success-light);
  --ds-color-success-subtle: var(--color-success-subtle);
  --ds-color-warning: var(--color-warning);
  --ds-color-warning-hover: var(--color-warning-hover);
  --ds-color-warning-light: var(--color-warning-light);
  --ds-color-warning-subtle: var(--color-warning-subtle);
  --ds-color-danger: var(--color-danger);
  --ds-color-danger-hover: var(--color-danger-hover);
  --ds-color-danger-light: var(--color-danger-light);
  --ds-color-danger-subtle: var(--color-danger-subtle);
  --ds-color-info: var(--color-info);
  --ds-color-info-light: var(--color-info-light);

  /* ── DS: Surfaces ── */
  --ds-surface-page: var(--surface-page);
  --ds-surface-card: var(--surface-card);
  --ds-surface-card-hover: var(--surface-card-hover);
  --ds-surface-elevated: var(--surface-elevated);
  --ds-surface-overlay: var(--surface-overlay);
  --ds-surface-border: var(--surface-border);
  --ds-surface-border-hover: var(--surface-border-hover);

  /* ── DS: Text ── */
  --ds-text-primary: var(--text-primary);
  --ds-text-secondary: var(--text-secondary);
  --ds-text-muted: var(--text-muted);
  --ds-text-inverse: var(--text-inverse);
  --ds-text-link: var(--text-link);

  /* ── DS: Spacing ── */
  --ds-space-xs: var(--spacing-xs);
  --ds-space-sm: var(--spacing-sm);
  --ds-space-md: var(--spacing-md);
  --ds-space-lg: var(--spacing-lg);
  --ds-space-xl: var(--spacing-xl);
  --ds-space-2xl: var(--spacing-2xl);
  --ds-space-3xl: var(--spacing-3xl);
  --ds-space-4xl: var(--spacing-4xl);

  /* ── DS: Border Radius ── */
  --ds-radius-sm: var(--radius-sm);
  --ds-radius-md: var(--radius-md);
  --ds-radius-lg: var(--radius-lg);
  --ds-radius-xl: var(--radius-xl);
  --ds-radius-full: var(--radius-full);

  /* ── DS: Shadows ── */
  --ds-shadow-sm: var(--shadow-sm);
  --ds-shadow-md: var(--shadow-md);
  --ds-shadow-lg: var(--shadow-lg);

  /* ── DS: Typography Scale ── */
  --ds-font-display-kpi: var(--font-display-kpi);
  --ds-font-page-title: var(--font-page-title);
  --ds-font-section-title: var(--font-section-title);
  --ds-font-card-title: var(--font-card-title);
  --ds-font-subheading: var(--font-subheading);
  --ds-font-body: var(--font-body);
  --ds-font-supporting: var(--font-supporting);
  --ds-font-caption: var(--font-caption);
  --ds-font-micro: var(--font-micro);

  /* ── DS: Font Weights ── */
  --ds-font-weight-normal: var(--font-weight-normal);
  --ds-font-weight-medium: var(--font-weight-medium);
  --ds-font-weight-semibold: var(--font-weight-semibold);
  --ds-font-weight-bold: var(--font-weight-bold);
  --ds-font-weight-extrabold: var(--font-weight-extrabold);

  /* ── DS: Letter Spacing ── */
  --ds-letter-spacing-tight: var(--letter-spacing-tight);
  --ds-letter-spacing-normal: var(--letter-spacing-normal);
  --ds-letter-spacing-wide: var(--letter-spacing-wide);
  --ds-letter-spacing-wider: var(--letter-spacing-wider);

  /* ── DS: Line Height ── */
  --ds-line-height-tight: var(--line-height-tight);
  --ds-line-height-normal: var(--line-height-normal);
  --ds-line-height-relaxed: var(--line-height-relaxed);

  /* ── DS: Transitions ── */
  --ds-transition-fast: var(--transition-fast);
  --ds-transition-normal: var(--transition-normal);
  --ds-transition-slow: var(--transition-slow);

  /* ── DS: Component Sizing ── */
  --ds-btn-height: var(--btn-height);
  --ds-input-height: var(--input-height);
  --ds-card-padding: var(--card-padding);
  --ds-card-padding-lg: var(--card-padding-lg);
  --ds-section-spacing: var(--section-spacing);
  --ds-section-spacing-lg: var(--section-spacing-lg);
}
  --line-height-relaxed: 1.7;

  /* ── Shadows (premium) ── */
  --font-size-sm: 12px;
  --font-size-md: 14px;
  --font-size-lg: 18px;
  --font-size-xl: 24px;
  --font-size-2xl: 28px;
  --font-size-display: 42px;
  --font-weight-normal: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800;
  --letter-spacing-tight: -0.03em;
  --letter-spacing-wide: 0.08em;
  --letter-spacing-wider: 0.5px;
  --line-height-tight: 1.1;
  --line-height-normal: 1.6;

  /* ── Transitions ── */
  --transition-fast: 0.15s;
  --transition-normal: 0.2s;
}

/* ══════════════════════════════════════════════════════════════
   APEX DARK THEME
   ══════════════════════════════════════════════════════════════ */
body.style-apex-dark {
  --color-primary: #6366f1;
  --color-primary-hover: #4f46e5;
  --color-primary-light: rgba(99, 102, 241, 0.15);
  --color-primary-subtle: rgba(99, 102, 241, 0.06);
  --color-secondary: #818cf8;
  --color-success-light: rgba(5, 150, 105, 0.15);
  --color-success-subtle: rgba(5, 150, 105, 0.06);
  --color-warning-light: rgba(217, 119, 6, 0.15);
  --color-danger-light: rgba(225, 29, 72, 0.15);
  --color-info-light: rgba(8, 145, 178, 0.15);

  --surface-page: #0b1120;
  --surface-card: rgba(255, 255, 255, 0.03);
  --surface-card-hover: rgba(255, 255, 255, 0.06);
  --surface-elevated: rgba(255, 255, 255, 0.06);
  --surface-overlay: rgba(255, 255, 255, 0.04);
  --surface-border: rgba(255, 255, 255, 0.06);
  --surface-border-hover: rgba(255, 255, 255, 0.1);

  --text-primary: #e2e8f0;
  --text-secondary: #94a3b8;
  --text-muted: #64748b;
  --text-link: #818cf8;

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.3);
  --shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.4);
}

/* ══════════════════════════════════════════════════════════════
   COLOR BLIND SAFE THEME
   ══════════════════════════════════════════════════════════════ */
body.style-colorblind {
  --color-primary: #004e98;
  --color-primary-hover: #003d7a;
  --color-primary-light: rgba(0, 78, 152, 0.1);
  --color-primary-subtle: rgba(0, 78, 152, 0.05);
  --color-secondary: #004e98;
  --color-success: #000000;
  --color-success-hover: #333333;
  --color-success-light: rgba(0, 0, 0, 0.1);
  --color-success-subtle: rgba(0, 0, 0, 0.05);
  --color-warning: #ff6b35;
  --color-warning-hover: #e55a2b;
  --color-warning-light: rgba(255, 107, 53, 0.15);
  --color-warning-subtle: rgba(255, 107, 53, 0.06);
  --color-danger: #000000;
  --color-danger-hover: #333333;
  --color-danger-light: rgba(0, 0, 0, 0.1);
  --color-danger-subtle: rgba(0, 0, 0, 0.05);
  --color-info: #004e98;

  --surface-page: #ffffff;
  --surface-card: #ffffff;
  --surface-card-hover: #f0f0f0;
  --surface-elevated: #ffffff;
  --surface-overlay: rgba(0, 0, 0, 0.08);
  --surface-border: #000000;
  --surface-border-hover: #ff6b35;

  --text-primary: #000000;
  --text-secondary: #333333;
  --text-muted: #555555;
  --text-link: #004e98;

  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;

  --border-width: 2px;
}

/* ══════════════════════════════════════════════════════════════
   PALETTES — override --color-primary only
   (all other tokens cascade from the active theme)
   ══════════════════════════════════════════════════════════════ */
body.palette-green {
  --color-primary: #10b981;
  --color-primary-hover: #059669;
  --color-primary-light: rgba(16, 185, 129, 0.15);
  --accent: #10b981;
  --accent-hover: #059669;
  --accent-soft: rgba(16, 185, 129, 0.1);
  --color-secondary: #34d399;
  --text-link: #10b981;
}

body.palette-amber {
  --color-primary: #d97706;
  --color-primary-hover: #b45309;
  --color-primary-light: rgba(217, 119, 6, 0.15);
  --accent: #d97706;
  --accent-hover: #b45309;
  --accent-soft: rgba(217, 119, 6, 0.1);
  --color-secondary: #fbbf24;
  --text-link: #d97706;
}

body.palette-red {
  --color-primary: #ef4444;
  --color-primary-hover: #dc2626;
  --color-primary-light: rgba(239, 68, 68, 0.15);
  --accent: #ef4444;
  --accent-hover: #dc2626;
  --accent-soft: rgba(239, 68, 68, 0.1);
  --color-secondary: #f87171;
  --text-link: #ef4444;
}

body.palette-cyan {
  --color-primary: #06b6d4;
  --color-primary-hover: #0891b2;
  --color-primary-light: rgba(6, 182, 212, 0.15);
  --accent: #06b6d4;
  --accent-hover: #0891b2;
  --accent-soft: rgba(6, 182, 212, 0.1);
  --color-secondary: #22d3ee;
  --text-link: #06b6d4;
}

body.palette-purple {
  --color-primary: #8b5cf6;
  --color-primary-hover: #7c3aed;
  --color-primary-light: rgba(139, 92, 246, 0.15);
  --accent: #8b5cf6;
  --accent-hover: #7c3aed;
  --accent-soft: rgba(139, 92, 246, 0.1);
  --color-secondary: #a78bfa;
  --text-link: #8b5cf6;
}
