/* =========================================
 * DESIGN TOKENS (niveau primitif)
 * ========================================= */
:root {
  /* 
   * Les tokens sont les valeurs primitives de votre système de design
   * Ils sont abstraits et ne portent pas de signification sémantique
   */
  
  /* Palette de couleurs */
  --color-neutral-0: #ffffff;
  --color-neutral-50: #f9fafb;
  --color-neutral-100: #f3f4f6;
  --color-neutral-200: #e5e7eb;
  --color-neutral-300: #d1d5db;
  --color-neutral-400: #9ca3af;
  --color-neutral-500: #6b7280;
  --color-neutral-600: #4b5563;
  --color-neutral-700: #374151;
  --color-neutral-800: #1f2937;
  --color-neutral-900: #111827;
  --color-neutral-950: #030712;
  
  --color-blue-50: #eff6ff;
  --color-blue-100: #dbeafe;
  --color-blue-200: #bfdbfe;
  --color-blue-300: #93c5fd;
  --color-blue-400: #60a5fa;
  --color-blue-500: #3b82f6;
  --color-blue-600: #2563eb;
  --color-blue-700: #1d4ed8;
  --color-blue-800: #1e40af;
  --color-blue-900: #1e3a8a;
  --color-blue-950: #172554;
  
  --color-red-50: #fef2f2;
  --color-red-100: #fee2e2;
  --color-red-200: #fecaca;
  --color-red-300: #fca5a5;
  --color-red-400: #f87171;
  --color-red-500: #ef4444;
  --color-red-600: #dc2626;
  --color-red-700: #b91c1c;
  --color-red-800: #991b1b;
  --color-red-900: #7f1d1d;
  --color-red-950: #450a0a;
  
  /* ... autres couleurs ... */
  
  /* Dimensions (espacements, échelle de taille) */
  --size-0: 0px;
  --size-px: 1px;
  --size-0-5: 0.125rem;  /* 2px */
  --size-1: 0.25rem;     /* 4px */
  --size-1-5: 0.375rem;  /* 6px */
  --size-2: 0.5rem;      /* 8px */
  --size-2-5: 0.625rem;  /* 10px */
  --size-3: 0.75rem;     /* 12px */
  --size-3-5: 0.875rem;  /* 14px */
  --size-4: 1rem;        /* 16px */
  --size-5: 1.25rem;     /* 20px */
  --size-6: 1.5rem;      /* 24px */
  --size-8: 2rem;        /* 32px */
  --size-10: 2.5rem;     /* 40px */
  --size-12: 3rem;       /* 48px */
  --size-16: 4rem;       /* 64px */
  --size-20: 5rem;       /* 80px */
  --size-24: 6rem;       /* 96px */
  --size-32: 8rem;       /* 128px */
  
  /* Typographie - échelles de taille */
  --font-size-xs: 0.75rem;   /* 12px */
  --font-size-sm: 0.875rem;  /* 14px */
  --font-size-base: 1rem;    /* 16px */
  --font-size-lg: 1.125rem;  /* 18px */
  --font-size-xl: 1.25rem;   /* 20px */
  --font-size-2xl: 1.5rem;   /* 24px */
  --font-size-3xl: 1.875rem; /* 30px */
  --font-size-4xl: 2.25rem;  /* 36px */
  
  /* Typographie - familles de police */
  --font-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-family-serif: 'Georgia', 'Times New Roman', serif;
  --font-family-mono: 'Roboto Mono', 'SFMono-Regular', Consolas, monospace;
  
  /* Typographie - graisse de police */
  --font-weight-thin: 100;
  --font-weight-light: 300;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-black: 900;
  
  /* Bordures - rayons */
  --radius-none: 0px;
  --radius-sm: 0.125rem;  /* 2px */
  --radius-md: 0.25rem;   /* 4px */
  --radius-lg: 0.5rem;    /* 8px */
  --radius-xl: 0.75rem;   /* 12px */
  --radius-2xl: 1rem;     /* 16px */
  --radius-3xl: 1.5rem;   /* 24px */
  --radius-full: 9999px;
  
  /* Animations - durée */
  --duration-instant: 0ms;
  --duration-fast: 150ms;
  --duration-normal: 300ms;
  --duration-slow: 500ms;
  --duration-slower: 700ms;
  
  /* Animations - easing/timing functions */
  --ease-linear: linear;
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
}

/* =========================================
 * VARIABLES SÉMANTIQUES (thème clair par défaut)
 * ========================================= */
:root {
  /* 
   * Les variables sémantiques donnent du sens aux tokens
   * Elles représentent l'usage prévu dans l'interface
   */
  
  /* === Couleurs d'interface === */
  /* Arrière-plans */
  --color-bg-page: var(--color-neutral-50);
  --color-bg-surface: var(--color-neutral-0);
  --color-bg-subtle: var(--color-neutral-100);
  --color-bg-muted: var(--color-neutral-200);
  
  /* Bordures */
  --color-border-default: var(--color-neutral-200);
  --color-border-strong: var(--color-neutral-300);
  --color-border-muted: var(--color-neutral-100);
  
  /* Texte */
  --color-text-default: var(--color-neutral-900);
  --color-text-muted: var(--color-neutral-600);
  --color-text-subtle: var(--color-neutral-500);
  --color-text-disabled: var(--color-neutral-400);
  --color-text-inverted: var(--color-neutral-0);
  
  /* États */
  --color-focus-ring: rgba(59, 130, 246, 0.5);
  --color-overlay: rgba(0, 0, 0, 0.5);
  --color-hover-overlay: rgba(0, 0, 0, 0.03);
  
  /* === Couleurs d'actions === */
  /* Principal */
  --color-primary-bg: var(--color-blue-600);
  --color-primary-bg-hover: var(--color-blue-700);
  --color-primary-bg-active: var(--color-blue-800);
  --color-primary-fg: var(--color-neutral-0);
  --color-primary-subtle: var(--color-blue-50);
  --color-primary-border: var(--color-blue-600);
  --color-primary-focus: rgba(37, 99, 235, 0.5);
  
  /* Danger */
  --color-danger-bg: var(--color-red-600);
  --color-danger-bg-hover: var(--color-red-700);
  --color-danger-bg-active: var(--color-red-800);
  --color-danger-fg: var(--color-neutral-0);
  --color-danger-subtle: var(--color-red-50);
  --color-danger-border: var(--color-red-600);
  
  /* ... autres couleurs sémantiques ... */
  
  /* === Espacements === */
  /* Espacements de composants */
  --space-component-padding-x: var(--size-4);
  --space-component-padding-y: var(--size-2);
  --space-component-gap: var(--size-2);
  
  /* Espacements de mise en page */
  --space-layout-gap-sm: var(--size-4);
  --space-layout-gap: var(--size-6);
  --space-layout-gap-lg: var(--size-8);
  --space-section-gap: var(--size-16);
  --space-page-padding-x: var(--size-4);
  --space-page-padding-y: var(--size-6);
  
  /* === Typographie === */
  /* Tailles selon l'usage */
  --text-size-xs: var(--font-size-xs);
  --text-size-sm: var(--font-size-sm);
  --text-size-base: var(--font-size-base);
  --text-size-lg: var(--font-size-lg);
  --text-size-xl: var(--font-size-xl);
  --text-size-2xl: var(--font-size-2xl);
  --text-size-3xl: var(--font-size-3xl);
  --text-size-4xl: var(--font-size-4xl);
  
  /* Graisses selon l'usage */
  --text-weight-headings: var(--font-weight-semibold);
  --text-weight-body: var(--font-weight-normal);
  --text-weight-emphasis: var(--font-weight-medium);
  --text-weight-button: var(--font-weight-medium);
  
  /* === Bordures === */
  --border-radius-input: var(--radius-md);
  --border-radius-button: var(--radius-md);
  --border-radius-card: var(--radius-lg);
  --border-radius-badge: var(--radius-full);
  
  /* Largeurs de bordure */
  --border-width-thin: 1px;
  --border-width-thick: 2px;
  --border-width-focus: 3px;
  
  /* === Ombres === */
  --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);
  
  /* === Variables d'animation === */
  --transition-button: background-color var(--duration-fast) var(--ease-in-out);
  --transition-fade: opacity var(--duration-normal) var(--ease-in-out);
  --transition-transform: transform var(--duration-normal) var(--ease-out);
  --transition-popover: transform var(--duration-fast) var(--ease-out), 
                        opacity var(--duration-fast) var(--ease-out);
}

/* =========================================
 * THÈME SOMBRE - Redéfinition des variables sémantiques
 * ========================================= */
@media (prefers-color-scheme: dark) {
  :root { 
    /* === Couleurs d'interface === */
    /* Arrière-plans */
    --color-bg-page: var(--color-neutral-950);
    --color-bg-surface: var(--color-neutral-900);
    --color-bg-subtle: var(--color-neutral-800);
    --color-bg-muted: var(--color-neutral-800);
    
    /* Bordures */
    --color-border-default: var(--color-neutral-700);
    --color-border-strong: var(--color-neutral-600);
    --color-border-muted: var(--color-neutral-800);
    
    /* Texte */
    --color-text-default: var(--color-neutral-100);
    --color-text-muted: var(--color-neutral-400);
    --color-text-subtle: var(--color-neutral-500);
    --color-text-disabled: var(--color-neutral-600);
    --color-text-inverted: var(--color-neutral-900);
    
    /* États */
    --color-focus-ring: rgba(59, 130, 246, 0.7);
    --color-overlay: rgba(0, 0, 0, 0.7);
    --color-hover-overlay: rgba(255, 255, 255, 0.05);
    
    /* === Couleurs d'actions === */
    /* Principal */
    --color-primary-bg: var(--color-blue-500);
    --color-primary-bg-hover: var(--color-blue-400);
    --color-primary-bg-active: var(--color-blue-300);
    --color-primary-fg: var(--color-neutral-950);
    --color-primary-subtle: var(--color-blue-950);
    --color-primary-border: var(--color-blue-500);
    --color-primary-focus: rgba(96, 165, 250, 0.5);
    
    /* Danger */
    --color-danger-bg: var(--color-red-500);
    --color-danger-bg-hover: var(--color-red-400);
    --color-danger-bg-active: var(--color-red-300);
    --color-danger-fg: var(--color-neutral-950);
    --color-danger-subtle: var(--color-red-950);
    --color-danger-border: var(--color-red-500);
    
    /* ... autres couleurs sémantiques ... */
    
    /* === Ombres === */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
    --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px 0 rgba(0, 0, 0, 0.2);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.5), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.6), 0 4px 6px -2px rgba(0, 0, 0, 0.4);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.7), 0 10px 10px -5px rgba(0, 0, 0, 0.5);
    --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
  }
}