/*
 * Fondations responsive. Breakpoints de validation obligatoires : 375px (mobile),
 * 768px (tablette), 1440px (desktop) - voir --breakpoint-* dans tokens.css.
 * Les media queries CSS ne peuvent pas consommer var(), les valeurs sont donc
 * dupliquées ici en dur et doivent rester synchronisées avec tokens.css.
 */

html,
body {
  width: 100%;
  overflow-x: hidden;
}

#app {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  width: 100%;
}

/* Conteneur centré à largeur maximale, avec marges latérales fluides */
.container {
  width: 100%;
  margin-inline: auto;
  padding-inline: var(--space-4);
}

/* Grille responsive générique utilisable par les vues/composants */
.grid {
  display: grid;
  gap: var(--space-4);
}

.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}

/* Mobile: 375px - layout par défaut (mobile-first), 1 colonne */
@media (min-width: 375px) {
  .container {
    padding-inline: var(--space-4);
  }
}

/* Tablette: 768px */
@media (min-width: 768px) {
  .container {
    max-width: 720px;
    padding-inline: var(--space-6);
  }

  .grid-cols-2-tablet {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Desktop: 1440px */
@media (min-width: 1440px) {
  .container {
    max-width: 1320px;
    padding-inline: var(--space-8);
  }

  .grid-cols-3-desktop {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Toute image/tableau doit rester dans son conteneur, jamais de débordement horizontal */
img,
table {
  max-width: 100%;
}

table {
  display: block;
  overflow-x: auto;
}
