/* Réinitialisation et défauts typographiques */
*, *::before, *::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  /* En-tête collant (14/10/2026) : une ancre (#prestations, #faq…) arrive
     sous l'en-tête et non derrière lui (hauteur de .nc-header + 16 px). */
  scroll-padding-top: calc(clamp(56px, 4.6vw, 88px) + 16px);
}

/* overflow-x: clip rogne les débordements horizontaux sans créer de
   conteneur de défilement : l'en-tête `position: sticky` (layout.css) peut
   ainsi coller. `hidden` reste la valeur des navigateurs trop anciens
   (en-tête alors simplement non collant). */
body {
  margin: 0;
  background: var(--nc-blanc);
  color: var(--nc-noir);
  font-family: var(--nc-police-texte);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  overflow-x: clip;
}

img, picture, video, canvas, svg {
  display: block;
  max-width: 100%;
}

h1, h2, h3, h4, p, figure {
  margin: 0;
}

/* Alignement à gauche par défaut : plus lisible sur mobile et dans toute
   colonne étroite (ex. les quatre étapes de la méthode), où un texte
   justifié crée de grands espaces entre les mots. Le justifié n'est activé
   qu'au cas par cas, sur les blocs de lecture larges et sur desktop
   uniquement (voir les sections concernées).
   `width: 100%` est nécessaire pour Safari/iOS : sans largeur explicite,
   un paragraphe enfant d'un conteneur flex peut calculer sa largeur de
   justification de façon incorrecte s'il devient justifié. */
p {
  text-align: left;
  hyphens: none;
  -webkit-hyphens: none;
  word-break: normal;
  width: 100%;
}

a {
  color: var(--nc-noir);
  text-decoration: none;
}

a:hover,
a:focus-visible {
  color: var(--nc-magenta);
}

button {
  font: inherit;
  color: inherit;
}

/* Contenu réservé aux lecteurs d'écran : conserve un titre dans la
   hiérarchie de titres (H1-H6) sans doubler visuellement un titre déjà
   affiché juste au-dessus (ex. une liste d'étapes qui prolonge la section
   précédente sans nouveau H2 visible). */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Lien d'évitement, visible seulement au focus clavier */
.nc-skip-link {
  position: absolute;
  left: 12px;
  top: -60px;
  z-index: 100;
  background: var(--nc-noir);
  color: var(--nc-blanc);
  padding: 12px 18px;
  font: 700 15px var(--nc-police-texte);
  transition: top var(--nc-transition-rapide);
}

.nc-skip-link:focus-visible {
  top: 12px;
}

/* États de focus clavier visibles partout */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid var(--nc-cyan);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}
