/* ============================================================================
   base.css — remise à zéro, typographie de fond, accessibilité.
   ========================================================================= */

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

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

html,body{height:100%}

body{
  margin:0;
  background:var(--s-0);
  color:var(--fg);
  font-family:var(--font-ui);
  font-size:var(--t-base);
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior:none;
  /* Les chiffres ne doivent jamais changer de largeur : sinon les compteurs
     et les horodatages tressautent à chaque mise à jour. */
  font-variant-numeric:tabular-nums;
}

h1,h2,h3,p,figure{margin:0}
ul,ol{margin:0;padding:0;list-style:none}

button,input,select,textarea{
  font:inherit;
  color:inherit;
  font-variant-numeric:inherit;
}

button{background:none;border:0;padding:0;cursor:pointer}

svg{
  display:block;
  flex:none;
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}

code,kbd,samp{
  font-family:var(--font-mono);
  font-size:.9em;
}

/* --- Focus -----------------------------------------------------------------
   L'original n'avait aucun style de focus : l'appli était inutilisable au
   clavier. On ne montre l'anneau qu'au clavier (:focus-visible). */
:focus{outline:none}
:focus-visible{
  outline:none;
  box-shadow:var(--focus);
  border-radius:var(--r-sm);
}

/* Le sprite d'icônes inliné : présent dans le DOM, invisible et hors flux. */
.sprite{position:absolute;width:0;height:0;overflow:hidden}

/* Réservé aux lecteurs d'écran. */
.sr-only{
  position:absolute;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}

/* Étiquette d'instrument : le motif typographique récurrent du produit. */
.label{
  font-size:var(--t-label);
  font-weight:600;
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--fg-3);
}

.mono{font-family:var(--font-mono)}

[hidden]{display:none !important}

::selection{background:var(--fg);color:var(--s-0)}

/* Barres de défilement discrètes — cohérentes avec les filets du système. */
*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{
  background:var(--line-strong);
  border-radius:var(--r-pill);
  border:3px solid transparent;
  background-clip:content-box;
}

/* --- Mouvement réduit ------------------------------------------------------
   Un scanner qui clignote peut être pénible ; on respecte le réglage système. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}
