/*
 * Point d'entrée CSS. Les styles globaux sont une TRANSCRIPTION du proto
 * evolv-ia (baseline/design/globals.css) — règle 0-R-W : chaque valeur cite
 * sa source. Les styles de composants/pages arrivent lot par lot.
 */
@import url("reset-K1P4l29.css");
@import url("tokens-S9IPB9x.css");
@import url("fonts-Xeuqti8.css");
@import url("utilities-VMsVo7k.css");
@import url("reveal-FciAWI5.css");
@import url("navbar-VXmplKY.css");
@import url("footer-YLMM__j.css");
@import url("theme-switcher-WhJj_HJ.css");
@import url("inscription-tab-ssI0nr6.css");
@import url("home-hero-yCqPAVt.css");
@import url("home-mid-zFpGDTD.css");
@import url("home-bottom-kNB_XVa.css");
@import url("catalogue-vNtw178.css");
@import url("fiche-ALfd_AK.css");
@import url("univers-BSHZk4z.css");
@import url("auth-qJoGkfP.css");
@import url("institutionnel-fSaJWgJ.css");
@import url("metiers-tD41dDM.css");
@import url("contact-qdi-8Nl.css");
@import url("faq-1S3woJv.css");
@import url("entreprises-lUnw8m6.css");
@import url("financement-MB4dObm.css");
@import url("ressources-WeeL43f.css");
@import url("a-propos-I12mDJl.css");
@import url("certifications-EIA_4_q.css");
@import url("communaute-9OJa3IP.css");
@import url("erreur-58zvszc.css");
@import url("espace-mKkUmTR.css");
@import url("espace-tableau--R9Oddz.css");
@import url("espace-cours-iux3bBM.css");
@import url("espace-lecteur-6N-ORDF.css");
@import url("espace-lecteur-onglets-FFT0uWI.css");
@import url("espace-progression-3Xcjhhb.css");

/* ── Reset & base — source : globals.css:57-73 ── */
* { box-sizing: border-box; padding: 0; margin: 0; }
html, body { width: 100%; background-color: var(--bg); }
main { width: 100%; display: block; }
html { scroll-behavior: smooth; }

body {
  font-family: var(--font-body);
  background-color: var(--bg);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* ── Titres — source : globals.css:75-78 ── */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  letter-spacing: -0.02em;
}

/* ── Scrollbar — source : globals.css:80-86 ── */
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: var(--surface-2); }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--muted); }
.scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; }
.scrollbar-hide::-webkit-scrollbar { display: none; }

/* ── Transition globale de changement de thème — source : globals.css:132-142 ── */
*, *::before, *::after {
  transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}
svg, img, video, button { transition: none; }
button {
  transition: background-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease, color 0.18s ease;
}

/* ── Anti-débordement & médias — source : globals.css:389-396 ── */
img, video { max-width: 100%; height: auto; }
* { min-width: 0; }
html, body { overflow-x: hidden; }

/* ── Lien d'évitement (section 10) — complément 0-R-V « compléter n'est pas
   trahir » : invisible hors focus clavier, tokens de la charte. ── */
.skip-link {
  position: absolute;
  left: -9999px;
  z-index: 1000;
  background: var(--text);
  color: var(--bg);
  padding: 12px 20px;
  border-radius: 0 0 12px 0;
  font-family: var(--font-body);
  text-decoration: none;
}
.skip-link:focus { left: 0; top: 0; }

/* ── Respect de prefers-reduced-motion — arbitrage 0-R-V n°3 (3e voie) :
   animations par défaut inchangées, désactivées pour qui le demande. ── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  html { scroll-behavior: auto; }
}

/* ── Libellé réservé aux lecteurs d'écran (§10 : chaque champ a un label) ── */
.visuellement-cache {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
