/* ══════════════════════════════════════════════════════════════
   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);

  /* ── 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);

  /* ── 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;
}
  --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;
}
