/* ==========================================================================
   HUNGRY JAZZ — FONTES, RESET, BASES
   ========================================================================== */

/* ---- LES POLICES — libres, hébergées par le site (D-164) ------------------
   Swiss 721 et PF DIN Text Condensed, fournies par le client, sont des
   polices commerciales dont la licence web n'a pas pu être produite. On ne
   met pas en ligne une police sans licence : elles sont remplacées par leurs
   équivalents libres les plus proches, choisis en les posant côte à côte sur
   les textes du site.

   · ARCHIVO (Omnibus-Type) pour Swiss 721 : grotesque de la même famille
     que l'Helvetica dont Swiss 721 est le clone, et à la graisse Black, la
     MÊME LARGEUR — « MOVE YOUR RHYTHM » tient sur la même longueur.
   · BARLOW SEMI CONDENSED pour PF DIN : dessin issu du DIN, et la variante
     « semi condensée » est celle dont la chasse colle à PF DIN Cond ; la
     « condensée » était sensiblement plus étroite.

   Les deux sont sous SIL Open Font License 1.1 : usage, hébergement et
   modification libres, licence jointe dans `assets/fonts/`. Sous-ensemble
   latin (accents français, œ, guillemets, €) : 14 à 23 Ko par fichier. */
@font-face {
  font-family: "Archivo";
  src: url("../fonts/archivo-400.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Archivo";
  src: url("../fonts/archivo-500.woff2") format("woff2");
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Archivo";
  src: url("../fonts/archivo-700.woff2") format("woff2");
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Archivo";
  src: url("../fonts/archivo-900.woff2") format("woff2");
  font-weight: 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Barlow Semi Condensed";
  src: url("../fonts/barlow-semi-condensed-400.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Barlow Semi Condensed";
  src: url("../fonts/barlow-semi-condensed-700.woff2") format("woff2");
  font-weight: 700; font-style: normal; font-display: swap;
}

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

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

body, h1, h2, h3, h4, p, figure, blockquote, dl, dd, ul, ol {
  margin: 0;
  padding: 0;
}

ul[class], ol[class] { list-style: none; }

body {
  background: var(--c-paper);
  color: var(--c-ink);
  font-family: var(--f-display);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-body);
  min-height: 100vh;
  overflow-x: hidden;      /* filet de sécurité : aucun scroll horizontal */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

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

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

button {
  background: none;
  border: 0;
  cursor: pointer;
  padding: 0;
  text-align: inherit;
}

a { color: inherit; text-decoration: none; }

/* ---- TYPOGRAPHIE DE BASE ----------------------------------------------- */
h1, h2, h3 {
  font-family: var(--f-display);
  font-weight: var(--fw-black);
  line-height: var(--lh-title);
  letter-spacing: var(--ls-display);
  text-wrap: balance;
}

h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); font-weight: var(--fw-bold); }

p { text-wrap: pretty; }

strong, b { font-weight: var(--fw-bold); }

/* Micro-label condensé : la signature typographique du site (brief §3.3) */
.label {
  font-family: var(--f-cond);
  font-size: var(--fs-label);
  font-weight: var(--fw-bold);
  line-height: var(--lh-label);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
}

.label--micro { font-size: var(--fs-micro); }

/* Chiffres tabulaires : les colonnes d'horaires et de prix ne tremblent pas
   au changement de jour ou de formule. */
.tnum { font-variant-numeric: tabular-nums; }

::selection { background: var(--c-ink); color: var(--c-paper); }

/* ---- ACCESSIBILITÉ (brief §25) ----------------------------------------- */

/* Focus toujours visible. Ne jamais supprimer. */
:focus-visible {
  outline: var(--bd-rule) solid currentColor;
  outline-offset: 3px;
}
/* Sur fond sombre le contour hérite du blanc via currentColor. */

.skip-link {
  position: absolute;
  top: var(--sp-xs);
  left: var(--sp-xs);
  z-index: var(--z-skip);
  background: var(--c-ink);
  color: var(--c-paper);
  padding: var(--sp-2xs) var(--sp-s);
  font-family: var(--f-cond);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  transform: translateY(-200%);
}
.skip-link:focus { transform: translateY(0); }

/* Masqué visuellement mais lu par les technologies d'assistance. */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ---- RÉDUCTION DE MOUVEMENT (brief §3.7 · §25) -------------------------- */
/* Tout est neutralisé et l'état final est rendu immédiatement :
   aucun contenu ne reste invisible. */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }

  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
  }
}
