/* Base : réinitialisation légère, typographie, mise en page, accessibilité. Composants : components.css. */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  background: #fff;
  color: var(--texte);
  font-family: var(--police);
  font-size: 1rem;
  line-height: 1.5;
  margin: 0;
}

h1, h2, h3 {
  font-family: var(--police-titre);
  font-weight: 700;
  line-height: 1.25;
  margin: 1.5rem 0 0.75rem;
}
h1 { font-size: 1.75rem; }
h2 { font-size: 1.35rem; }
h3 { font-size: 1.1rem; }

/* Le dégradé est réservé aux titres ; le violet plein sert de repli et de texte courant. */
h1, .gradient-text {
  color: var(--violet);
}
@supports (background-clip: text) or (-webkit-background-clip: text) {
  h1, .gradient-text {
    background: var(--grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    width: fit-content;
  }
}

a { color: var(--violet); text-underline-offset: 0.15em; }
a:hover { text-decoration-thickness: 2px; }

p, ul, ol { margin: 0 0 1rem; }

:focus-visible {
  outline: 3px solid var(--violet);
  outline-offset: 2px;
}

main, .site-header__inner, .site-footer {
  margin: 0 auto;
  max-width: var(--largeur);
  padding: 0 1rem;
}
main { padding-bottom: 2rem; }

.site-footer {
  color: var(--texte-doux);
  font-size: 0.875rem;
  padding-bottom: 2rem;
}

.skip-link {
  background: #fff;
  left: 0.5rem;
  padding: 0.5rem 1rem;
  position: absolute;
  top: -4rem;
  z-index: 10;
}
.skip-link:focus { top: 0.5rem; }

/* Champ piège (décision 15) : invisible pour une personne, rempli par les robots. */
.hp {
  height: 1px;
  left: -10000px;
  overflow: hidden;
  position: absolute;
  top: auto;
  width: 1px;
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
}
