/**
 * Modern CSS Reset
 * =================
 * Normalise les styles par défaut des navigateurs
 * pour avoir une base propre et cohérente.
 *
 * Inspiré de: https://github.com/Andy-set-studio/modern-css-reset
 */

/* ===========================================
   1. BOX SIZING
   Tous les éléments utilisent border-box pour
   que padding et border soient inclus dans width/height
   =========================================== */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* ===========================================
   2. MARGES PAR DÉFAUT
   Supprime toutes les marges par défaut
   =========================================== */
* {
  margin: 0;
}

/* ===========================================
   3. BODY DEFAULTS
   Configuration de base du document
   =========================================== */
html,
body {
  height: 100%;
}

body {
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;  /* Lissage texte macOS/iOS */
  -moz-osx-font-smoothing: grayscale;   /* Lissage texte Firefox macOS */
}

/* ===========================================
   4. MEDIA ELEMENTS
   Images, vidéos, canvas responsive par défaut
   =========================================== */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
}

/* ===========================================
   5. FORM ELEMENTS
   Inputs et boutons héritent la police du parent
   =========================================== */
input,
button,
textarea,
select {
  font: inherit;
}

/* ===========================================
   6. TEXT OVERFLOW
   Empêche les mots longs de déborder
   =========================================== */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

/* ===========================================
   7. STACKING CONTEXT
   Crée un contexte d'empilement isolé
   =========================================== */
#root,
#__next,
#app {
  isolation: isolate;
}

/* ===========================================
   8. LISTS
   Supprime les styles de liste par défaut
   =========================================== */
ul,
ol {
  list-style: none;
  padding: 0;
}

/* ===========================================
   9. BUTTONS
   Reset complet des boutons
   =========================================== */
button {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
}

/* ===========================================
   10. LINKS
   Links héritent la couleur par défaut
   =========================================== */
a {
  color: inherit;
  text-decoration: none;
}

/* ===========================================
   11. TABLES
   Bordures fusionnées pour les tableaux
   =========================================== */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* ===========================================
   12. ACCESSIBILITY - REDUCED MOTION
   Désactive les animations pour les utilisateurs
   qui préfèrent moins de mouvement
   =========================================== */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ===========================================
   13. FOCUS VISIBLE
   Style de focus uniquement au clavier
   (pas au clic souris)
   =========================================== */
:focus:not(:focus-visible) {
  outline: none;
}

:focus-visible {
  outline: 2px solid var(--color-primary, #3b82f6);
  outline-offset: 2px;
}
