/*!
 * home.css — accueil « RUSHES » de nuit : sections H01 → H12 (spec §5), tour 2.
 * Feuille non layerisée : ses règles l'emportent sur base.css. Aucun dégradé, aucune ombre,
 * un seul accent (--neon) ; seule exception : l'aplat turquoise de la carte BREEZZ (H11).
 * On n'anime que transform, opacity (et font-stretch par CUT).
 */

/* Image qui ne charge pas (4G faible) : vignette neutre, jamais le texte alternatif en vrac par-dessus la mise en page
   (il reste lu par les lecteurs d'écran ; la légende sous l'image porte déjà l'information). */
#main img { color: transparent; font-size: 0; }

/* =========================================================================
   H01 Showreel
   ========================================================================= */
.hero { position: relative; background: var(--nuit); color: var(--pellicule); }
.hero__stage { position: relative; overflow: hidden; background: var(--nuit); }
.hero__media, .hero__poster, .hero__poster img, .hero__video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.hero__media { overflow: hidden; }
.hero__video { background: transparent; }
.hero__panel { position: absolute; inset: 0; z-index: 2; }
.hero__panel:focus-visible { outline: 2px solid var(--neon); outline-offset: -6px; }
.hero__cap { position: absolute; z-index: 3; pointer-events: none; }
.hero__cap .pave { font-size: var(--t-hud); white-space: nowrap; background: var(--nuit); color: var(--pellicule); }
.hero__viseur { --vs: 24px; --vw: 2px; z-index: 3; color: var(--pellicule); }
.hero .reel__play { z-index: 4; }

/* Titre : 3 lignes posées sur un pavé --nuit, coupe de largeur synchronisée aux cuts (A03).
   Les trois plaques ont la même largeur (celle de la ligne la plus large) et le même retrait : un seul carton. */
.hero__title { display: grid; width: max-content; max-width: 100%; font-weight: 900; font-stretch: 62%; line-height: .9; letter-spacing: 0; margin: 0; }
.hero__line { display: block; }
.hero__title .pave {
  display: block; padding: .04em .14em 0; font: inherit; letter-spacing: 0; line-height: .9;
  background: var(--nuit); color: var(--pellicule);
}
/* Sans JavaScript, la vidéo ne peut pas démarrer : on laisse voir l'affiche (pas de lecteur gris ni de commandes natives) */
html:not(.js):not(.rp) .hero__video { display: none; }
.hero__line.is-wide .pave { font-stretch: 125%; }
/* Quatre voix seulement : méta (HUD), titre, signature (serif), faits (HUD) */
.hero__meta, .hero__facts, .hero__sign { width: fit-content; max-width: 100%; background: var(--nuit); }
.hero__meta, .hero__facts { padding: 4px 8px 3px; color: var(--pellicule); }
.hero__sign { font-size: var(--t-m); line-height: 1.2; padding: 3px 10px 5px; }
/* Une seule ligne de crédit, un seul pavé */
.hero__credit {
  width: fit-content; max-width: 100%; padding: 4px 8px 3px;
  background: var(--nuit); color: var(--pellicule); font-size: var(--t-hud); line-height: 1.3;
}
.hero__note, .hero__sep { color: var(--cendre); }
.hero__row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.hero__cta { background: var(--nuit); }

/* Mobile : la vidéo occupe le premier écran (au-dessus de la barre du bas), titre + signature + CTA incrustés */
@media (max-width: 767px) {
  .hero { display: grid; grid-template-columns: minmax(0, 1fr); padding-bottom: var(--sp-6); }
  .hero__stage { grid-area: 1 / 1; width: 100%; height: calc(100svh - var(--bottom-h) - var(--safe-b)); min-height: 540px; }
  .hero__tiers, .hero__viseur { display: none; }
  .hero__cap--mobile { top: calc(var(--topbar-h) + 16px); left: 16px; }
  .hero__ui { display: contents; }
  .hero__over {
    grid-area: 1 / 1; align-self: end; z-index: 3;
    display: grid; justify-items: start; gap: 10px;
    padding: 0 16px 18px; pointer-events: none;
  }
  .hero__over a, .hero__over button { pointer-events: auto; }
  .hero__title { font-size: clamp(34px, 10.6vw, 52px); }
  .hero__sign { font-size: 19px; }
  .hero__row { margin-top: 2px; }
  .hero__toggle { position: absolute; top: calc(var(--topbar-h) + 8px); right: 12px; z-index: 4; }
  /* « ▶ SON » sous la pause : ouvre le Reel en cours en entier, avec le son (même pastille que sur /breezz/) */
  .hero__sound {
    position: absolute; top: calc(var(--topbar-h) + 60px); right: 12px; z-index: 4;
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 44px; min-height: 44px; padding: 0 12px;
    background: var(--pellicule); color: var(--nuit);
    font-weight: 700; font-stretch: 87%; font-size: 15px; letter-spacing: .02em; line-height: 1;
    transition: transform var(--d-tap) linear;
  }
  .hero__sound:active { transform: scale(.97); }
  .hero__sound:focus-visible { outline: 2px solid var(--neon); outline-offset: 3px; }
  .hero__meta { grid-row: 2; margin: var(--sp-5) 16px 0; padding: 0; background: none; color: var(--cendre); }
  .hero__meta-dispo { display: none; }
  .hero__facts { grid-row: 3; margin: var(--sp-2) 16px 0; padding: 0; background: none; }
  .hero__credit { grid-row: 4; margin: var(--sp-3) 16px 0; padding: 0; background: none; font-size: var(--t-hud); }
  .hero__video, .hero__poster img { object-position: 50% 35%; }
}

/* Tablette et desktop : plein écran 16:9 en cover, trois tiers cliquables */
@media (min-width: 768px) {
  .hero { height: 100vh; height: 100svh; min-height: 560px; overflow: clip; container-type: size; }
  .hero__stage { position: absolute; inset: 0; }
  .hero__panel--mobile, .hero__cap--mobile, .hero__sound { display: none; }
  .hero__tiers {
    position: absolute; top: 0; bottom: 0; left: 50%; z-index: 2;
    width: max(100%, calc(100svh * 16 / 9));
    width: max(100cqw, calc(100cqh * 16 / 9));
    transform: translateX(-50%);
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .hero__tier { position: relative; }
  .hero__tier .hero__cap { top: calc(var(--topbar-h) + 20px); left: 24px; transition: opacity var(--d-ui) linear; }
  .hero__tier:first-child .hero__cap { left: calc(var(--marge) + (max(100cqw, 100cqh * 16 / 9) - 100cqw) / 2); }
  /* Une seule étiquette au repos (panneau du milieu) ; les deux autres au survol / focus */
  .hero__tier:not(:nth-child(2)) .hero__cap { opacity: 0; }
  .hero__tier:focus-within .hero__cap { opacity: 1; }
  .hero__viseur { --vi: calc(var(--topbar-h) + 6px) 24px 24px; }
  .hero__ui {
    position: absolute; left: 0; right: 0; bottom: 0; z-index: 3;
    display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); column-gap: var(--goutt);
    align-items: end;
    padding: 0 var(--marge) clamp(28px, 5svh, 56px);
    pointer-events: none;
  }
  .hero__ui a, .hero__ui button { pointer-events: auto; }
  .hero__over { display: contents; }
  /* Écran d'ouverture épuré : titre, signature, qui je suis (une ligne), une ligne de crédit, le bouton. */
  .hero__facts { display: none; }
  /* Le carton du titre reste dans le tiers gauche : le visage du panneau central n'est jamais masqué */
  .hero__title { grid-column: 1 / span 7; grid-row: 1; font-size: clamp(48px, 5vw, 92px); margin: 0 0 var(--sp-4); }
  .hero__sign { grid-column: 1 / span 7; grid-row: 2; }
  .hero__meta { grid-column: 1 / span 8; grid-row: 3; margin-top: 8px; font-size: var(--t-hud); }
  .hero__credit { grid-column: 8 / -1; grid-row: 1; align-self: end; justify-self: end; margin-bottom: 8px; }
  .hero__row { grid-column: 8 / -1; grid-row: 2; justify-self: end; justify-content: flex-end; }
}
@media (min-width: 768px) and (hover: hover) {
  .hero__tier:hover .hero__cap { opacity: .75; }
  .hero__tier:nth-child(2):hover .hero__cap { opacity: 1; }
}
@media (min-width: 768px) and (max-width: 1199px) {
  .hero__title, .hero__sign, .hero__meta { grid-column: 1 / span 5; }
  .hero__credit, .hero__row { grid-column: 6 / -1; }
}
/* Écran plus haut que large (tablette en portrait) : les tiers latéraux sont presque hors champ */
@container (max-aspect-ratio: 6 / 5) {
  .hero__tier:not(:nth-child(2)) .hero__cap { display: none; }
}
@media (min-width: 768px) and (max-height: 700px) {
  .hero__title { font-size: clamp(48px, 9svh, 96px); }
}

/* A04 viseur visible après l'IRIS ; titre révélé par coupes (opacity : reste dans l'arbre d'accessibilité) */
@media (prefers-reduced-motion: no-preference) {
  .js .hero:not(.is-framed) .hero__viseur { opacity: 0; }
  .js .hero:not(.is-titled) .hero__line { opacity: 0; }
}

/* =========================================================================
   H02 Sous-titres posés sur de vraies images (un plan par ligne, fondu enchaîné)
   ========================================================================= */
.srt-sec { position: relative; overflow: clip; background: var(--nuit); color: var(--pellicule); }
.srt__stage {
  position: relative; isolation: isolate; overflow: clip;
  min-height: 100vh; min-height: 100svh;
  display: grid; align-items: end;
}
/* Desktop : la scène reste à l'écran pendant les 5 sous-titres (épinglage CSS), la section suivante n'entre qu'après */
@media (min-width: 768px) {
  .srt-sec { height: 240vh; height: 240svh; }
  .srt__stage { position: sticky; top: 0; height: 100vh; height: 100svh; }
}
.srt__bg { position: absolute; inset: 0; z-index: -1; background: var(--nuit); }
.srt__img { position: absolute; inset: 0; opacity: 0; transition: opacity .7s linear; }
/* Fonds à leur définition native (triptyques 1600 x 900 réduits depuis la source, 720 x 1280 sur mobile) : aucun zoom */
.srt__img img { width: 100%; height: 100%; object-fit: cover; }
/* Le plan reste en couleur : les sous-titres sont posés sur des pavés pleins, ils n'ont pas besoin de voile */
.srt__img.is-on { opacity: .8; }
.srt__in {
  display: grid; gap: var(--sp-5);
  padding: calc(var(--topbar-h) + var(--sp-7)) var(--marge) clamp(56px, 9svh, 112px);
}
.srt__hud { display: flex; gap: 6px; color: var(--pellicule); }
.srt__hud > span { background: var(--nuit); padding: 3px 7px 2px; }
.srt__count { color: var(--neon); }
.srt { display: grid; gap: 8px; justify-items: start; max-width: 62rem; }
/* Sous-titre incrusté : pavé plein (lisible sur n'importe quelle image) ; seule la ligne active est à pleine lumière */
.srt__line { display: flex; align-items: stretch; }
.srt__n {
  flex: none; display: flex; align-items: center; padding: 0 8px;
  background: var(--nuit); color: var(--cendre); border-right: 1px solid var(--ardoise-2);
}
.srt__line.is-on .srt__n { color: var(--neon); }
.srt__txt {
  padding: 3px 12px 4px; background: var(--nuit); color: var(--pellicule);
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
  font-weight: 700; font-stretch: 87%; font-size: clamp(21px, .8rem + 1.5vw, 40px); line-height: 1.5;
  transition: color var(--d-ui) linear;
}
.srt-sec.is-live .srt__line:not(.is-on) .srt__txt { color: var(--cendre); }
/* Surlignage sans effet sur la mise en page (pas de padding : pas d'espace avant la ponctuation).
   Archivo à 87 % a une espace très étroite (≈ .17em) : on l'élargit un peu pour que le mot surligné
   reste détaché du précédent (« ce travail », pas « cetravail »). */
.srt__txt { word-spacing: .1em; }
.srt__hl { background: transparent; color: inherit; padding: 0; margin: 0; }
.srt__line.is-on .srt__hl { background: var(--neon); color: var(--nuit); }
.srt__src { justify-self: end; text-align: right; font-size: var(--t-hud); color: var(--pellicule); background: var(--nuit); padding: 3px 7px 2px; }
@media (min-width: 768px) {
  .srt__src { white-space: nowrap; }
  /* Sous-titres dans la moitié gauche : à droite, l'image se voit entière */
  .srt { max-width: min(62rem, 56vw); }
  .srt__txt { font-size: clamp(21px, .7rem + 1.3vw, 36px); }
}
@media (max-width: 767px) {
  .srt__in { padding-bottom: var(--sp-6); gap: var(--sp-4); }
  .srt__n { padding: 0 6px; }
  .srt__line .srt__txt { padding-inline: 10px; }
  .srt__src { justify-self: start; text-align: left; }
}

/* =========================================================================
   H03 La pellicule — carrousel natif (mobile, tactile, reduced-motion, sans JS)
   et pellicule épinglée (desktop pointeur fin, .pell--pinned)
   ========================================================================= */
.pell { position: relative; background: var(--nuit); padding-block: var(--sec-y); }
.pell__head { align-items: end; row-gap: var(--sp-3); margin-bottom: var(--sp-6); }
.pell__title { font-size: var(--t-xl); }
.pell__sub { margin-top: var(--sp-3); color: var(--pellicule); max-width: 40ch; }
.pell__counter { display: none; justify-self: end; font-weight: 600; font-stretch: 75%; font-size: var(--t-l); line-height: 1; font-variant-numeric: tabular-nums; }
.pell__of { color: var(--cendre); }
.pell__rail { position: relative; background: var(--ardoise); padding-block: 30px; }
.pell__rail::before, .pell__rail::after {
  content: ""; position: absolute; left: 0; right: 0; height: 12px; pointer-events: none;
  background: repeating-linear-gradient(90deg, var(--ardoise-2) 0 8px, transparent 8px 18px);
}
.pell__rail::before { top: 9px; }
.pell__rail::after { bottom: 9px; }
.pell__track {
  --fw: min(74vw, calc(64svh * 9 / 16), 340px);
  display: flex; gap: 16px;
  overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; scroll-padding-inline: var(--marge);
  padding: 14px var(--marge);
  scrollbar-width: none;
}
.pell__track::-webkit-scrollbar { display: none; }
.pell__track:focus { outline: none; }
.pell__item { flex: 0 0 var(--fw); scroll-snap-align: start; min-width: 0; }

/* Cartes d'amorce (desktop épinglé) et de fin de bobine : même hauteur que l'image d'une prise */
.pell__card {
  --fhead: 21px;
  flex: 0 0 var(--fw); min-width: 0; scroll-snap-align: start;
  margin-top: var(--fhead); aspect-ratio: 9 / 16; align-self: flex-start;
  display: grid; align-content: space-between; gap: var(--sp-4);
  padding: var(--sp-5); border: 1px solid var(--ardoise-2); background: var(--nuit);
}
.pell__card--lead { display: none; }
.pell__card-k { color: var(--cendre); }
.pell__card-big { font-weight: 900; font-stretch: 62%; font-size: clamp(120px, 12vw, 220px); line-height: .78; letter-spacing: 0; }
.pell__card-big--s { font-size: clamp(96px, 9vw, 168px); }
.pell__card-unit {
  display: block; margin-top: .35em;
  font-weight: 600; font-stretch: 75%; font-size: var(--t-m); letter-spacing: .08em; line-height: 1; color: var(--cendre);
}
.pell__card-txt { font-size: var(--t-s); line-height: 1.5; max-width: 36ch; }
.pell__card-links { display: grid; gap: 14px; justify-items: start; font-weight: 700; font-size: var(--t-s); }
.pell__card-links .link { display: inline-flex; align-items: center; gap: 8px; }
/* Doigt : chaque lien empilé garde sa zone de 44 px sans mordre sur celle du voisin (pas de marges négatives) */
@media (pointer: coarse) {
  .pell__card-links { gap: 0; }
  .pell__card-links .link { margin-block: 0; }
}

.frame { margin: 0; }
.frame__ig { justify-self: start; margin-top: 2px; }
.pell__iglink { display: none; }
.pell--pinned .frame__ig { display: none; }
.pell--pinned .pell__iglink { display: block; grid-row: 2; justify-self: center; }
.pell__ig[hidden] { display: none; }
.frame__head { display: flex; justify-content: space-between; gap: 8px; color: var(--cendre); height: 15px; line-height: 15px; margin-bottom: 6px; }
.frame__kind { color: var(--pellicule); }
.frame__date { color: var(--pellicule); }
.frame__box { position: relative; aspect-ratio: 9 / 16; background: var(--nuit); }
.frame__media { position: absolute; inset: 0; z-index: 1; }
.frame__media > video { width: 100%; height: 100%; object-fit: cover; }
.frame__corners { --vi: -7px; --vs: 12px; --vw: 1px; z-index: 2; color: var(--pellicule); }
.frame__open { position: absolute; inset: 0; z-index: 3; }
.frame__open:focus-visible { outline: 2px solid var(--neon); outline-offset: 4px; }
.frame__cap { display: grid; gap: 4px; padding-top: 10px; }
.frame__caption { font-size: var(--t-s); line-height: 1.45; }

/* États « actif » (JS) : les Reels voisins gardent leurs couleurs ; la prise active se distingue par l'échelle */
.pell.is-live .frame__media { opacity: .82; transition: opacity 160ms linear; }
.pell.is-live .is-active .frame__media { opacity: 1; }
.pell.is-live .pell__item:not(.is-active) .frame__date,
.pell.is-live .pell__item:not(.is-active) .frame__kind { color: var(--cendre); }

.pell__foot { display: none; }
.pell__nav { display: flex; align-items: center; justify-content: center; gap: var(--sp-4); margin-top: var(--sp-4); }
.pell__navcount { min-width: 5ch; text-align: center; }
.pell__swipe { color: var(--cendre); }
.pell__ruler { display: none; }
.pell__legend, .pell__hint { display: none; }

@media (min-width: 768px) {
  .pell__counter { display: block; }
  .pell__nav { justify-content: flex-start; }
}
@media (max-width: 767px) {
  .pell { padding-block: var(--sp-8) var(--sp-6); }
}

/* ---- Desktop pointeur fin : pellicule épinglée (le cadre actif domine l'écran : ~65 % de la hauteur) ---- */
.pell--pinned { padding: clamp(40px, 8svh, 96px) 0 0; }
/* Le compteur « 1 / 7 » n'apparaît qu'une fois la pellicule épinglée (jamais en bas de l'écran pendant les sous-titres) */
.pell--pinned .pell__counter { visibility: hidden; }
.pell--pinned.is-pin .pell__counter { visibility: visible; }
.pell--pinned .pell__pin {
  height: 100vh; height: 100svh; overflow: hidden;
  display: grid; grid-template-rows: auto minmax(0, 1fr) auto; grid-template-columns: minmax(0, 1fr);
  padding-top: calc(var(--topbar-h) + 12px);
}
.pell--pinned .pell__pin > * { min-width: 0; }
.pell--pinned .pell__head { margin: 0; padding-bottom: 4px; align-items: center; }
.pell--pinned .pell__titles { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: var(--sp-5); }
.pell--pinned .pell__title { font-size: min(var(--t-xl), 6.6svh); }
.pell--pinned .pell__sub { font-size: min(var(--t-m), 2.2svh); margin-top: 0; max-width: 46ch; }
.pell--pinned .pell__counter { font-size: min(var(--t-l), 4.4svh); }
.pell--pinned .pell__rail { display: flex; align-items: center; padding-block: 22px; min-height: 0; }
.pell--pinned .pell__track {
  --fh: min(60svh, 640px);
  --fw: calc(var(--fh) * 9 / 16);
  --gap: 32px;
  align-items: flex-start;
  overflow: visible; scroll-snap-type: none;
  width: max-content; gap: var(--gap);
  padding: 0 var(--marge);
  will-change: transform;
}
/* La hauteur des photogrammes suit la place réellement libre dans le rail */
@supports (height: 1cqh) {
  .pell--pinned .pell__rail { container-type: size; }
  .pell--pinned .pell__track { --fh: clamp(170px, calc(100cqh - 23px), 680px); }
}
.pell--pinned .pell__item { flex: 0 0 var(--fw); }
/* Amorce et fin de bobine : elles remplissent exactement l'espace entre la prise centrée et la marge */
.pell--pinned .pell__card {
  display: grid; aspect-ratio: auto; height: var(--fh);
  flex: 0 0 calc(50vw - var(--fw) / 2 - var(--gap) - var(--marge));
}
@supports (width: 1cqw) {
  .pell--pinned .pell__card { flex-basis: calc(50cqw - var(--fw) / 2 - var(--gap) - var(--marge)); }
}
.pell--pinned .pell__card-txt { font-size: var(--t-base); }
.pell--pinned .frame { position: relative; transform: scale(.8); transform-origin: 50% 50%; transition: transform .45s var(--ease-out); }
.pell--pinned .is-active .frame { transform: none; }
.pell.is-end .pell__hint { visibility: hidden; }
.pell--pinned .frame__caption, .pell--pinned .frame__cap .reel__credit {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}
/* Mention Évin incrustée en bandeau plein au pied du photogramme (lisible sur chaque prise alcool) */
.pell--pinned .frame__cap { padding: 0; min-height: 0; }
.pell--pinned .frame__cap .evin {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; margin: 0;
  padding: 5px 7px 4px; background: var(--nuit); color: var(--pellicule);
  font-size: var(--t-hud); line-height: 1.3; pointer-events: none;
}
.pell--pinned .pell__item:not(.is-active) .frame__cap .evin { color: var(--cendre); }
.pell--pinned .pell__nav { display: none; }
.pell--pinned .pell__foot {
  display: grid; align-items: start; row-gap: 8px;
  padding-top: 10px; padding-bottom: 18px;
}
/* Règle de dates (01.04 → 15.10.2023) : une marque par prise, le bloc des 10 semaines surligné */
.pell--pinned .pell__ruler {
  display: block; position: relative; grid-column: 1 / -1; grid-row: 1;
  height: 62px;
}
.pell--pinned .pell__legend { display: grid; gap: 2px; grid-row: 2; align-content: start; }
.pell--pinned .pell__hint { display: block; grid-row: 2; justify-self: end; text-align: right; color: var(--cendre); }
.pell__legend-cap { font-size: var(--t-s); line-height: 1.4; max-width: 70ch; }
.pell__legend-credit { color: var(--cendre); }
.ruler__strip { position: absolute; inset: 0; }
.ruler__axis { position: absolute; left: 0; right: 0; top: 26px; height: 1px; background: var(--ardoise-2); }
.ruler__band {
  position: absolute; top: 15px; height: 11px; left: var(--x); width: var(--w);
  background: rgba(31, 214, 200, .14); border-top: 1px solid var(--neon);
}
.ruler__mark { position: absolute; top: 0; left: var(--x); width: 1px; height: 27px; background: var(--cendre); }
/* Numéro de prise sur un pavé plein, au-dessus de la tête de lecture : jamais traversé par elle */
.ruler__mark .hud { position: absolute; z-index: 3; left: 3px; top: 0; padding: 0 2px 1px; font-size: var(--t-hud); line-height: 1; color: var(--cendre); background: var(--nuit); }
.ruler__mark.is-on { background: var(--neon); }
.ruler__mark.is-on .hud { color: var(--neon); }
.ruler__month { position: absolute; top: 31px; left: var(--x); padding-left: 4px; border-left: 1px solid var(--ardoise-2); font-size: var(--t-hud); line-height: 1.2; color: var(--cendre); }
/* Libellé de la bande sur sa propre ligne, sous les mois */
.ruler__bandlab { position: absolute; top: 47px; left: var(--x); padding-left: 4px; border-left: 1px solid var(--neon); font-size: var(--t-hud); line-height: 1.2; color: var(--neon); white-space: nowrap; }
.ruler__head { position: absolute; left: 0; top: 0; width: 2px; height: 27px; margin-left: -1px; background: var(--pellicule); z-index: 2; will-change: transform; }

/* =========================================================================
   Bandeau BREEZZ (mobile) : le pont vers /breezz/ juste après la pellicule
   ========================================================================= */
.bz-strip { display: none; }
@media (max-width: 767px) {
  /* le banc enchaîne directement sous le bandeau (pas de bande sombre vide après l'appel à l'action) */
  .bz-strip { display: block; background: var(--nuit); padding: 0 var(--marge); }
  .bz-strip__a {
    display: grid; gap: 4px; min-height: 64px; padding: 12px 16px 14px;
    background: var(--bz-turquoise); color: var(--encre); text-decoration: none;
  }
  .bz-strip__k { color: var(--encre-2); }
  .bz-strip__t { font-weight: 800; font-stretch: 87%; font-size: 20px; line-height: 1.15; }
  .bz-strip__a:focus-visible { outline: 2px solid var(--pellicule); outline-offset: 3px; }
  .bz-strip__a:active { transform: scale(.98); }
}

/* =========================================================================
   H04 Le banc de montage
   Desktop : intro | moniteur | repère, puis la frise sur toute la largeur.
   Mobile : moniteur puis frise juste en dessous (on glisse en voyant l'image), puis repère, puis la liste repliée.
   ========================================================================= */
.banc { background: var(--nuit); padding-block: clamp(48px, 5vw, 80px); }
.banc__top { align-items: start; row-gap: var(--sp-7); }
.banc__intro { display: grid; gap: var(--sp-4); align-content: start; align-self: start; justify-items: start; }
.banc__note { max-width: 36ch; }
.banc__legend { color: var(--cendre); max-width: 46ch; font-size: var(--t-s); line-height: 1.5; }
.banc__monitor { margin: 0; display: grid; justify-items: center; }
.banc__screen { position: relative; height: min(76svh, 760px); aspect-ratio: 9 / 16; max-width: 100%; }
.banc__screen > video { width: 100%; height: 100%; object-fit: cover; }
/* ▶ posé sur l'affiche tant que la lecture n'a jamais commencé (aucun écran noir, aucun « LOADING ») */
.banc__start { position: absolute; inset: 0; z-index: 3; display: grid; place-items: center; background: transparent; }
.banc__start-in {
  display: grid; place-items: center; width: 64px; height: 64px;
  background: var(--nuit); color: var(--pellicule); border: 1px solid var(--pellicule); font-size: 22px; line-height: 1;
  transition: transform var(--d-tap) var(--ease-out);
}
@media (hover: hover) { .banc__start:hover .banc__start-in { background: var(--neon); color: var(--nuit); border-color: var(--neon); } }
.banc__start:active .banc__start-in { transform: scale(.94); }
.banc__start:focus-visible { outline: 2px solid var(--neon); outline-offset: -6px; }
.banc.is-started .banc__start { display: none; }
.banc__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 12px; margin-top: 10px; width: 100%; }
.banc__tc { font-size: var(--t-s); }
.banc__t { color: var(--neon); }
.banc__total { color: var(--cendre); }
.banc__mark { display: grid; gap: var(--sp-3); align-content: center; }
.banc__mark-k { color: var(--cendre); }
.banc__mark-name { font-weight: 800; font-stretch: 62%; letter-spacing: 0; font-size: clamp(44px, 4.4vw, 76px); line-height: .85; }
.banc__mark-text { font-weight: 700; font-stretch: 87%; font-size: var(--t-m); line-height: 1.25; max-width: 24ch; min-height: 2.5em; }
.banc__mark-text.is-quote::before { content: "«\00a0"; color: var(--neon); }
.banc__mark-text.is-quote::after { content: "\00a0»"; color: var(--neon); }
.banc__mark-plan { color: var(--neon); }

@media (min-width: 768px) {
  /* Moniteur, repère et frise tiennent ensemble dans un écran : on glisse la tête en voyant l'image et le repère */
  .banc__top { row-gap: var(--sp-6); }
  .banc__intro, .banc__monitor { grid-row: 1; }
  .banc__screen { height: min(60svh, 600px); }
  .banc__list { display: none; }
}
@media (min-width: 1200px) {
  .banc__mark { grid-row: 1; align-self: center; }
  .banc__tl { grid-row: 2; grid-column: 1 / -1; }
}
@media (min-width: 768px) and (max-width: 1199px) {
  .banc__mark { grid-row: 2; }
  .banc__tl { grid-row: 3; grid-column: 1 / -1; }
}

/* Liste des repères (mobile, repliée) : lisible au doigt, un appui = la tête de lecture y va */
.banc__list { border-top: 1px solid var(--ardoise-2); border-bottom: 1px solid var(--ardoise-2); }
.banc__sum {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  min-height: 52px; padding: 0 4px; cursor: pointer; list-style: none; color: var(--pellicule);
}
.banc__sum::-webkit-details-marker { display: none; }
.banc__sum::after { content: "+"; font-weight: 600; font-size: 22px; line-height: 1; color: var(--neon); }
.banc__list[open] .banc__sum::after { content: "–"; }
.banc__sum:focus-visible { outline: 2px solid var(--neon); outline-offset: 2px; }
.banc__edl { display: grid; gap: 2px; padding-bottom: 8px; }
.banc__ev {
  display: grid; grid-template-columns: 3.4em minmax(0, 1fr); align-items: baseline; gap: 2px 10px;
  width: 100%; min-height: 52px; padding: 10px 12px 12px; text-align: left;
  background: var(--ardoise); color: var(--pellicule); border-left: 2px solid var(--ardoise-2);
}
.banc__ev-tc { grid-row: 1 / span 2; color: var(--neon); }
.banc__ev-k { color: var(--cendre); }
.banc__ev-t { grid-column: 2; font-size: var(--t-s); line-height: 1.4; }
.banc__ev.is-on { border-left-color: var(--neon); background: var(--ardoise-2); }
.banc__ev:focus-visible { outline: 2px solid var(--neon); outline-offset: -2px; }

.banc__tl { touch-action: pan-y; min-width: 0; }
.banc__grid {
  position: relative;
  display: grid; grid-template-columns: 76px minmax(0, 1fr); column-gap: 8px; row-gap: 2px;
  grid-template-rows: 30px 60px 34px 52px;
}
.banc__head-k, .banc__trk { align-self: center; color: var(--cendre); font-size: var(--t-hud); white-space: nowrap; }
.banc__head-k, .banc__trk { grid-column: 1; }
.banc__head-k { grid-row: 1; }
.banc__grid > p:nth-of-type(2), .banc__lane--v { grid-row: 2; }
.banc__grid > p:nth-of-type(3), .banc__lane--t { grid-row: 3; }
.banc__grid > p:nth-of-type(4), .banc__lane--a { grid-row: 4; }
.banc__ruler { grid-column: 2; grid-row: 1; position: relative; border-bottom: 1px solid var(--ardoise-2); }
.banc__sec { position: absolute; bottom: 4px; left: calc(var(--a) / var(--dur) * 100%); padding-left: 4px; font-size: var(--t-hud); line-height: 1; color: var(--cendre); }
.banc__sec::before { content: ""; position: absolute; left: 0; bottom: -4px; width: 1px; height: 12px; background: var(--ardoise-2); }
/* dernière graduation : libellé à droite de son trait, comme les autres (échelle régulière) ; il tient dans la
   marge de page (≥ 768 px) et disparaît sur mobile, où la règle est trop étroite */
.banc__lane { grid-column: 2; position: relative; overflow: hidden; background: var(--ardoise); }
.banc__clip {
  position: absolute; top: 0; bottom: 0;
  left: calc(var(--a) / var(--dur) * 100%); width: calc((var(--b) - var(--a)) / var(--dur) * 100%);
  overflow: hidden; border-right: 1px solid var(--nuit); background: var(--ardoise-2);
}
.banc__clip img { width: 100%; height: 100%; object-fit: cover; }
/* Image qui n'a pas pu charger : on garde l'aplat, jamais l'icône d'image cassée */
#main img.is-broken { visibility: hidden; }
.banc__clip.is-on { outline: 2px solid var(--neon); outline-offset: -2px; }
.banc__txt {
  position: absolute; top: 5px; bottom: 5px;
  left: calc(var(--a) / var(--dur) * 100%); width: calc((var(--b) - var(--a)) / var(--dur) * 100%);
  display: flex; align-items: center; padding: 0 6px; overflow: hidden;
  background: rgba(31, 214, 200, .2); border-left: 2px solid var(--neon); color: var(--pellicule);
}
.banc__txt .hud { font-size: var(--t-hud); white-space: nowrap; }
.banc__txt--aa { top: 9px; bottom: 9px; background: transparent; border: 1px solid var(--ardoise-2); border-left: 2px solid var(--cendre); color: var(--cendre); }
.banc__txt.is-on { background: rgba(31, 214, 200, .38); }
.banc__txt--aa.is-on { border-color: var(--cendre); color: var(--pellicule); background: transparent; }
.banc__lane--a img { width: 100%; height: 100%; object-fit: fill; opacity: .6; }
.banc__scrubzone { grid-column: 2; grid-row: 1 / -1; position: relative; pointer-events: none; }
.banc__hit { position: absolute; left: 0; right: 0; top: 0; height: 100%; pointer-events: auto; cursor: ew-resize; touch-action: none; }
.banc__scrub {
  position: absolute; left: 0; top: 0; width: 100%; height: 100%; margin: 0;
  -webkit-appearance: none; appearance: none; background: transparent; pointer-events: none; opacity: .001;
}
.banc__scrub:focus-visible { opacity: .001; }
.banc__scrubzone:has(.banc__scrub:focus-visible) { outline: 2px solid var(--pellicule); outline-offset: 4px; }
/* la tête part sous la règle TC (30 px) : elle ne barre jamais « 0:00 », « 0:10 »… */
.banc__playhead {
  position: absolute; top: 30px; bottom: 0; left: 0; width: 2px; margin-left: -1px;
  background: var(--neon); pointer-events: none; will-change: transform;
}
/* poignée posée sur le filet de la règle, au-dessus des pistes */
.banc__playhead::before { content: ""; position: absolute; top: -4px; left: 50%; width: 14px; height: 12px; margin-left: -7px; background: var(--neon); }

@media (max-width: 767px) {
  .banc { padding-top: var(--sp-6); }
  .banc__top { row-gap: var(--sp-4); }
  .banc__intro { margin-bottom: var(--sp-2); }
  /* moniteur + frise tiennent ensemble dans l'écran (navigateur intégré d'Instagram compris) */
  .banc__screen { height: min(46svh, 420px); }
  .banc__mark { text-align: center; justify-items: center; margin-top: var(--sp-3); }
  .banc__mark-text { min-height: 0; }
  /* Mobile : seule la piste image reste en frise (vignettes + tête de lecture) ; les repères sont dans la liste */
  .banc__grid { grid-template-columns: 52px minmax(0, 1fr); column-gap: 6px; grid-template-rows: 30px 88px; }
  .banc__grid > p:nth-of-type(3), .banc__lane--t, .banc__grid > p:nth-of-type(4), .banc__lane--a { display: none; }
  .banc__trk, .banc__head-k { font-size: var(--t-hud); letter-spacing: .04em; white-space: normal; line-height: 1.1; }
  .banc__sec { font-size: var(--t-hud); }
  /* Graduations toutes les 10 s, régulières : 0:00, 0:10, 0:20, 0:30 (0:40, collé au bord, tassait l'échelle) */
  .banc__sec:nth-child(even), .banc__sec--end { display: none; }
  /* Une seule commande de lecture : la barre de transport sous l'image (l'image reste une zone de tap, sans 2e ▶) */
  .banc__start-in { display: none; }
  .banc:not(.is-started) .banc__play { background: var(--neon); color: var(--nuit); }
}

/* =========================================================================
   H05 Pâques, deux saisons
   Desktop (12 col.) : texte 2023 / 2024 (1-6) | téléphone des 14 stories (7-9) | citation qui suit + résultats (10-12).
   Les trois colonnes se touchent : aucun vide sans tension au centre.
   ========================================================================= */
.paques { background: var(--ardoise); }
.paques__in { align-items: start; row-gap: var(--sp-6); }
.paques__title { font-size: var(--t-xl); }
.paques__sub { margin-top: var(--sp-3); }
.paques__year { display: grid; gap: var(--sp-3); margin-top: var(--sp-7); justify-items: start; }
.paques__k { color: var(--neon); }
.paques__p { max-width: 52ch; }
/* Les deux visuels Canva et la photo de la gagnante : trois tirages lisibles sur toute la largeur du texte */
.paques__thumbs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; width: 100%; align-items: start; margin-top: var(--sp-2); }
.paques__thumb { display: grid; gap: 6px; min-width: 0; }
.paques__thumb .hud { color: var(--cendre); font-size: var(--t-hud); }
.paques__tbtn { display: block; width: 100%; aspect-ratio: var(--r); overflow: hidden; background: var(--ardoise-2); }
.paques__tbtn img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease-out); }
@media (hover: hover) { .paques__tbtn:hover img { transform: scale(1.04); } }
.paques__tbtn:focus-visible { outline: 2px solid var(--neon); outline-offset: 3px; }
/* Deux chiffres empilés, sans cadre */
.paques__result { display: grid; gap: var(--sp-4); }
.paques__figs { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--sp-4) var(--sp-7); margin: 0; }
.paques__fig { display: grid; gap: 6px; }
.paques__v { font-weight: 900; font-stretch: 62%; font-size: clamp(56px, 5.4vw, 96px); line-height: .86; letter-spacing: 0; }
.paques__l { margin: 0; color: var(--pellicule); font-size: var(--t-s); }
.paques__note { max-width: 44ch; font-weight: 700; font-stretch: 87%; font-size: var(--t-m); line-height: 1.25; }
.paques__src { max-width: 62ch; }
.ref { color: var(--neon); font-size: 1em; vertical-align: baseline; line-height: inherit; font-weight: 600; }

.paques__player { min-width: 0; }
.paques__sticky { display: grid; justify-items: center; }
/* Lecteur posé dans un écran sombre : le blanc des stories Canva se lit comme un écran, pas comme un trou */
.paques__story {
  width: min(100%, 340px);
  padding: 10px 10px 60px;
  background: var(--nuit); border: 1px solid var(--ardoise-2); border-radius: 22px;
  --story-bar: rgba(7, 8, 10, .22); --story-fill: var(--nuit);
}
.paques__story .story__items { border-radius: 12px; overflow: hidden; background: #fff; }
.paques__story .story__item > video { aspect-ratio: 9 / 16; height: auto; }
.paques__story .story__bars { top: 18px; left: 20px; right: 20px; }
.paques__story .story__controls { top: auto; bottom: 8px; right: 12px; }
.paques__story .story__count { background: transparent; color: var(--pellicule); }
.paques__story .story__pause { background: transparent; }
/* Étiquette de crédit au coin bas-gauche de l'écran (C07) ; la barre du bas du cadre ne porte que les commandes */
.paques__tag { position: absolute; left: 18px; bottom: 68px; z-index: 4; }
html:not(.js):not(.rp) .paques__story { padding-bottom: 10px; }
html:not(.js):not(.rp) .paques__tag { position: static; margin-top: 8px; }

.paques__side { display: grid; gap: var(--sp-7); align-content: start; min-width: 0; }
.paques__quoteblock { display: grid; gap: var(--sp-3); align-content: start; }
.paques__qk { color: var(--cendre); }
.paques__quotes { width: 100%; }
:is(.js, .rp) .paques__quote { display: none; }
:is(.js, .rp) .paques__quote.is-on { display: block; }
.paques__quote + .paques__quote { margin-top: 6px; }
.paques__q { font-weight: 800; font-stretch: 87%; font-size: clamp(22px, .9rem + .9vw, 32px); line-height: 1.14; }
.paques__q::before { content: "«\00a0"; color: var(--neon); }
.paques__q::after { content: "\00a0»"; color: var(--neon); }
.paques__credit { justify-self: start; }
html:not(.js):not(.rp) .paques__qk { display: none; }

@media (max-width: 767px) {
  .paques__in { row-gap: var(--sp-4); }
  .paques__text, .paques__side { display: contents; }
  .paques__title { order: 1; }
  .paques__sub { order: 2; }
  .paques__player { order: 3; }
  .paques__quoteblock { order: 4; }
  .paques__year--23 { order: 5; }
  .paques__year--24 { order: 6; }
  .paques__result { order: 7; margin-top: var(--sp-4); }
  .paques__title, .paques__sub, .paques__player, .paques__quoteblock, .paques__year, .paques__result { grid-column: 1 / -1; }
  .paques__year { margin-top: var(--sp-4); }
  .paques__qk { display: none; }
  .paques__story { width: min(100%, 340px); }
  .paques__tag { font-size: var(--t-hud); padding: 4px 6px; }
  .paques__v { font-size: clamp(52px, 15vw, 72px); }
  .paques__figs { gap: var(--sp-4) var(--sp-6); }
}
@media (min-width: 768px) {
  /* Téléphone et citation suivent la lecture (même hauteur d'ancrage) */
  .paques__player { align-self: stretch; }
  .paques__sticky, .paques__side { position: sticky; top: calc(var(--topbar-h) + 20px); }
  .paques__story { width: 100%; max-width: calc(min(64svh, 640px) * 9 / 16 + 22px); }
}
@media (min-width: 768px) and (max-width: 1199px) {
  .paques__side { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--goutt); }
}
@media (min-width: 1200px) {
  .paques__side { padding-top: var(--sp-6); }
  .paques__figs { flex-direction: column; align-items: flex-start; gap: var(--sp-4); }
  .paques__sticky { justify-items: stretch; }
}

/* =========================================================================
   H06 Les chiffres : un chiffre héros + une liste typographique (aucune carte, aucun doublon)
   ========================================================================= */
.chiffres { background: var(--nuit); padding-block: clamp(56px, 6vw, 104px) clamp(40px, 4vw, 64px); }
.chiffres__grid { row-gap: var(--sp-6); align-items: end; }
.chiffres__title { margin-bottom: var(--sp-2); }
.chiffres__hero { display: grid; gap: var(--sp-3); align-content: end; margin: 0; }
.chiffres__mega { font-weight: 900; font-stretch: 62%; font-size: clamp(112px, 17vw, 272px); line-height: .78; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.chiffres__herolab { font-weight: 700; font-stretch: 87%; font-size: var(--t-m); line-height: 1.25; max-width: 32ch; }
/* Une seule grille pour toutes les lignes : les libellés s'alignent sur la même colonne, quel que soit le chiffre */
.chiffres__list { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-self: end; }
.chiffres__row {
  grid-column: 1 / -1; display: grid; grid-template-columns: 150px minmax(0, 1fr); align-items: end;
  padding: var(--sp-4) 0; border-top: 1px solid var(--ardoise-2);
}
@supports (grid-template-columns: subgrid) { .chiffres__row { grid-template-columns: subgrid; } }
.chiffres__row:last-child { border-bottom: 1px solid var(--ardoise-2); }
.chiffres__v { padding-right: var(--sp-5); font-weight: 900; font-stretch: 62%; font-size: clamp(48px, 4.4vw, 72px); line-height: .9; white-space: nowrap; }
.chiffres__l { font-size: var(--t-base); line-height: 1.35; padding-bottom: .1em; }
.chiffres__foot { display: grid; gap: var(--sp-4); margin-top: var(--sp-3); }
.chiffres__stats { max-width: 62ch; }
.chiffres__notes { display: grid; gap: 4px; }
@media (max-width: 767px) {
  .chiffres { padding-block: var(--sp-8) var(--sp-6); }
  .chiffres__row { grid-template-columns: 96px minmax(0, 1fr); }
}
@media (min-width: 1200px) {
  .chiffres__list { margin-left: var(--sp-6); }
  .chiffres__foot { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--goutt); align-items: start; }
}

/* =========================================================================
   H07 Face caméra (letterbox A18)
   ========================================================================= */
.face { position: relative; background: var(--nuit); padding-block: var(--sec-y); overflow: clip; }
.face__in { align-items: center; row-gap: var(--sp-6); }
.face__text { display: grid; gap: var(--sp-3); align-content: center; }
.face__cap { max-width: 34ch; }
.face__hint { color: var(--neon); }
.face__reel { margin: 0; justify-self: center; width: 100%; }
.face__frame { width: 100%; }
.face__frame > video { width: 100%; height: 100%; object-fit: cover; }
.face__tag { position: absolute; left: 8px; bottom: 8px; z-index: 3; }
/* [SON] en bas à droite du cadre : jamais sous la barre du haut */
.face__sound { position: absolute; bottom: 4px; right: 4px; z-index: 4; min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.face__sound .pave { background: var(--nuit); color: var(--pellicule); padding: 6px 8px 5px; }
.face__sound[aria-pressed="true"] .pave { background: var(--neon); color: var(--nuit); }
@media (hover: hover) { .face__sound:hover .pave { background: var(--pellicule); color: var(--nuit); } }
.face__still { margin: 0; }
.face__still .still__frame { position: relative; }
.face__m03 { font-size: var(--t-s); }
.face__reel .reel__cap { display: grid; gap: 8px; justify-items: start; }
/* Doigt : « Voir le Reel en entier » et « Voir sur Instagram » empilés ont chacun leur zone de 44 px,
   séparées (les marges négatives du socle les faisaient se chevaucher de 21 px) */
@media (pointer: coarse) {
  .face__reel .reel__cap { gap: 0; }
  .face__reel .reel__cap .reel__credit { margin-bottom: 2px; }
  .face__reel .reel__cap .link { margin-block: 0; }
}
.face__bar { display: none; }
@media (min-width: 768px) {
  .face { display: grid; align-items: center; padding-block: clamp(48px, 5vw, 80px); }
  .face__frame { width: auto; height: min(76svh, 740px); aspect-ratio: 9 / 16; margin-inline: auto; }
  .face__reel .reel__cap { justify-items: center; text-align: center; }
  .face__still { align-self: center; }
}
@media (min-width: 768px) and (max-width: 1199px) {
  .face__still { max-width: 420px; }
}
/* A18 letterbox posé sur le cadre de la vidéo (pas sur la section : aucun aplat noir dans la page) :
   le plan s'ouvre du format cinémascope au 9:16 en défilant */
.face.is-letterbox .face__bar {
  display: block; position: absolute; left: 0; right: 0; height: 26%; z-index: 2;
  background: var(--nuit); pointer-events: none; will-change: transform;
}
.face.is-letterbox .face__bar--top { top: 0; transform-origin: 50% 0; }
.face.is-letterbox .face__bar--bottom { bottom: 0; transform-origin: 50% 100%; }

/* =========================================================================
   H08 Planches contact
   ========================================================================= */
.planches { background: var(--ardoise); }
.planches__head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--sp-4); margin-bottom: var(--sp-6); }
.planches__filters { display: flex; gap: 4px; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.chip {
  position: relative; flex: none;
  min-height: 44px; padding: 0 14px;
  background: var(--nuit); color: var(--pellicule); border: 1px solid var(--ardoise-2);
}
.chip[aria-pressed="true"] { background: var(--pellicule); color: var(--nuit); border-color: var(--pellicule); }
@media (hover: hover) { .chip:hover { border-color: var(--pellicule); } }
/* Planche contact : cases carrées identiques, en rangées pleines (12 tirages = 4 x 3 / 3 x 4 / 2 x 6).
   La lightbox montre l'image entière, non recadrée. */
.planches__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: row dense; gap: 4px; align-items: start; }
/* Un tirage agrandi (2 x 2 cases), comme le tirage entouré d'une planche contact */
.tirage--big { grid-column: span 2; grid-row: span 2; }
/* Numéro de case + qui a fait l'image, toujours visibles (sans survol) */
.tirage__no {
  position: absolute; left: 6px; bottom: 6px; z-index: 2; display: inline-flex; gap: 6px; align-items: baseline;
  padding: 3px 6px 2px; background: var(--nuit); color: var(--pellicule); font-size: var(--t-hud); line-height: 1.2; pointer-events: none;
}
.tirage__n { color: var(--neon); }
.tirage { position: relative; margin: 0; transition: opacity 240ms linear; min-width: 0; }
.tirage__btn { position: relative; display: block; width: 100%; }
.tirage__btn:focus-visible { outline: 2px solid var(--neon); outline-offset: -4px; }
.tirage__frame { display: block; overflow: hidden; aspect-ratio: 1 / 1; background: var(--ardoise-2); }
.tirage__frame picture, .paques__tbtn picture, .next-card__photo picture, .face__still picture { display: block; width: 100%; height: 100%; }
.tirage__frame img { width: 100%; height: 100%; object-fit: cover; object-position: var(--op, 50% 50%); }
.tirage__cap { padding: 6px 4px 12px; color: var(--cendre); font-size: var(--t-hud); }
/* Évin toujours visible sur la photo alcool (m17) : bandeau plein au pied du tirage */
.tirage__evin { margin: 0; padding: 0 4px 12px; }
.tirage__cap + .tirage__evin { margin-top: -8px; }
@media (min-width: 900px) and (hover: hover) {
  /* bandeau en haut du tirage : le badge « 13 PHOTO : MOI » reste en bas, comme sur tous les autres */
  .tirage__cap + .tirage__evin {
    position: absolute; left: 0; right: 0; top: 0; z-index: 2; margin: 0;
    padding: 5px 8px 4px; background: var(--nuit); color: var(--pellicule); font-size: var(--t-hud); line-height: 1.3; pointer-events: none;
  }
}
.planches__legend { display: none; }
@media (min-width: 768px) { .planches__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .planches__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 900px) and (hover: hover) {
  .tirage__cap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; padding: 0; }
  .planches__grid:has(.tirage:hover) .tirage:not(:hover) { opacity: .5; }
  .planches__legend {
    display: flex; justify-content: center; position: sticky; bottom: 28px; z-index: 5;
    margin-top: calc(-1 * var(--sp-6)); height: 0; overflow: visible; pointer-events: none;
  }
  .planches__legend .pave { transform: translateY(-100%); max-width: calc(100vw - 2 * var(--marge)); white-space: normal; text-align: center; background: var(--nuit); color: var(--pellicule); }
  .planches__legend:not(.is-on) .pave { visibility: hidden; }
}
.planches__grid:has(.tirage__btn:focus-visible) .tirage:not(:focus-within) { opacity: .5; }

/* =========================================================================
   H09 Parcours, piste par piste : une ligne par poste (rien de tronqué), barre de durée réelle
   ========================================================================= */
.parc { background: var(--nuit); padding-bottom: clamp(48px, 5vw, 80px); }
.parc__top { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--sp-3) var(--sp-6); margin-bottom: var(--sp-5); }
.parc__key { display: flex; flex-wrap: wrap; gap: 6px 20px; color: var(--pellicule); font-size: var(--t-s); }
.parc__key b { font-weight: 700; margin-right: 6px; }
/* Ligne de liaison sous la piste commerce */
.parc__link {
  margin: var(--sp-4) 0 0; max-width: 62ch; padding-left: 12px; border-left: 2px solid var(--neon);
  font-weight: 700; font-stretch: 87%; font-size: var(--t-base); line-height: 1.35; color: var(--pellicule);
}
.parc__board { position: relative; }
.parc__axis { display: none; }
.parc__lane { display: flex; gap: .7em; padding: var(--sp-6) 0 var(--sp-2); color: var(--cendre); border-bottom: 1px solid var(--ardoise-2); }
.parc__lane:first-of-type { padding-top: var(--sp-3); }
.parc__code { color: var(--neon); }
.parc__list { display: grid; }
.parc__row { display: grid; gap: 6px; padding: var(--sp-4) 0; border-bottom: 1px solid var(--ardoise-2); transition: opacity var(--d-ui) linear; }
.parc__dk { display: flex; gap: .8em; color: var(--cendre); }
.parc__dt { font-weight: 700; font-stretch: 87%; font-size: var(--t-m); line-height: 1.2; }
.parc__dp { color: var(--cendre); font-size: var(--t-s); margin-top: 2px; }
.parc__df { max-width: 62ch; }
.parc__track { position: relative; height: 6px; margin-top: 8px; background: var(--ardoise); }
.parc__bar { position: absolute; top: 0; bottom: 0; left: var(--l); width: max(var(--w), 4px); background: var(--cendre); transition: background-color var(--d-ui) linear; }
.parc__bar--year { background: transparent; border: 1px dashed var(--cendre); }
.parc__row.is-on .parc__bar { background: var(--neon); }
.parc__row.is-on .parc__bar--year { background: transparent; border-color: var(--neon); }
.parc__row.is-on .parc__dk > span:last-child { color: var(--pellicule); }
.parc__fiche { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4) var(--sp-5); margin: var(--sp-7) 0 0; }
.parc__fi { display: grid; gap: 2px; align-content: start; }
.parc__fi dt { color: var(--cendre); }
.parc__fi dd { margin: 0; font-weight: 700; font-stretch: 87%; line-height: 1.25; }

@media (min-width: 900px) {
  .parc__board { --pcols: 150px minmax(0, 3.4fr) minmax(0, 4.2fr) minmax(0, 4.4fr); overflow: clip; }
  .parc__axis {
    display: grid; grid-template-columns: var(--pcols); column-gap: var(--sp-5);
    position: sticky; top: var(--topbar-h); z-index: 3; height: 44px; background: var(--nuit);
  }
  .parc__scale { grid-column: 4; position: relative; height: 100%; border-bottom: 1px solid var(--ardoise-2); }
  .parc__year { position: absolute; top: 6px; left: var(--l); padding-left: 5px; color: var(--cendre); font-size: var(--t-hud); line-height: 1; }
  .parc__year::before { content: ""; position: absolute; left: 0; top: 0; width: 1px; height: 38px; background: var(--ardoise-2); }
  .parc__row { grid-template-columns: var(--pcols); column-gap: var(--sp-5); align-items: center; padding: var(--sp-4) 0; }
  .parc__dk { flex-direction: column; gap: 3px; }
  .parc__df { font-size: var(--t-s); line-height: 1.5; }
  .parc__track { margin: 0; height: 12px; }
  .parc__lane { padding-top: var(--sp-6); }
  .parc__fiche { display: flex; flex-wrap: wrap; gap: 8px 0; margin-top: var(--sp-6); }
  .parc__fi { display: flex; gap: .55em; align-items: baseline; }
  /* Séparateur en fin d'élément : au retour à la ligne, il reste en bout de ligne (jamais « · DISPO » en tête) */
  .parc__fi:not(:last-child)::after { content: "·"; color: var(--cendre); margin: 0 .9em 0 -.35em; }
  /* Tête de lecture : traverse les pistes au fil du défilement (pas d'épinglage) */
  /* La tête part sous la rangée des années : elle ne traverse jamais un libellé « 2022 », « 2023 »… */
  .parc__head {
    position: absolute; left: 0; top: 21px; height: 100vh; width: 2px; margin-left: -1px;
    background: var(--neon); pointer-events: none; will-change: transform; display: none;
  }
  .parc.is-live .parc__head { display: block; }
  /* l'étiquette de la tête vit sur la rangée basse de l'axe, sur un pavé plein */
  .parc__headtc { position: absolute; top: 2px; left: 6px; padding: 3px 6px 2px; background: var(--nuit); color: var(--neon); white-space: nowrap; font-size: var(--t-hud); line-height: 1; }
  .parc__head.is-end .parc__headtc { left: auto; right: 6px; }
}
@media (min-width: 900px) and (prefers-reduced-motion: reduce) { .parc.is-live .parc__head { display: none; } }

/* =========================================================================
   H10 Générique
   ========================================================================= */
.gen { background: var(--nuit); text-align: center; padding-block: clamp(40px, 4vw, 64px) clamp(56px, 6vw, 96px); }
.gen__title { color: var(--cendre); margin-bottom: var(--sp-6); }
.gen__rows { display: grid; gap: 12px; max-width: 820px; margin-inline: auto; padding-inline: var(--marge); }
.gen__row { display: flex; align-items: baseline; gap: 12px; text-align: left; font-weight: 700; font-stretch: 87%; font-size: var(--t-m); line-height: 1.2; }
.gen__role { color: var(--cendre); }
.gen__nb { display: block; margin-top: 4px; font-weight: 500; font-stretch: 100%; font-size: var(--t-s); color: var(--cendre); white-space: nowrap; }
.gen__name { flex: none; }
.gen__role { min-width: 0; }
.gen__name { color: var(--pellicule); text-align: right; }
.gen__dots { flex: 1 1 24px; min-width: 24px; border-bottom: 2px dotted var(--ardoise-2); transform: translateY(-.28em); }
.gen__tc { margin-top: var(--sp-7); color: var(--neon); padding-inline: var(--marge); }
@media (max-width: 767px) {
  /* Une colonne : le rôle au-dessus (petit), le nom en dessous, tout aligné à gauche */
  .gen { text-align: left; }
  .gen__title { padding-inline: var(--marge); }
  .gen__rows { gap: 14px; }
  .gen__row { display: grid; gap: 3px; justify-items: start; font-size: 18px; }
  .gen__role { font-weight: 500; font-stretch: 100%; font-size: var(--t-s); line-height: 1.35; }
  .gen__dots { display: none; }
  .gen__name { text-align: left; }
  .gen__nb { white-space: normal; }
}

/* =========================================================================
   H11 Prochaine séance : BREEZZ — la section entière passe en aplat turquoise (aperçu de /breezz/)
   ========================================================================= */
.next {
  background: var(--bz-turquoise); color: var(--encre);
  --fg: var(--encre); --bg: var(--bz-turquoise); --muted: var(--encre-2); --focus: var(--encre);
}
.next-card {
  align-items: center; row-gap: var(--sp-6);
  padding-block: var(--sec-y);
  color: inherit; text-decoration: none;
}
.next-card:focus-visible { outline: 2px solid var(--encre); outline-offset: -10px; }
.next-card__photo { position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--encre); }

.next-card__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease-out); }
@media (hover: hover) { .next-card:hover .next-card__photo img { transform: scale(1.03); } }
.next-card__txt { display: grid; justify-items: start; align-content: center; }
.next-card__k { color: var(--encre-2); }
.next-card__title { font-size: clamp(52px, 6vw, 112px); margin: var(--sp-3) 0 var(--sp-4); color: var(--encre); }
.next-card__sub { max-width: 44ch; margin-bottom: var(--sp-6); color: var(--encre); }
.next-card__cta { background: var(--encre); color: var(--bz-turquoise); border-radius: var(--r-pill); }
@media (hover: hover) { .next-card:hover .next-card__cta { background: var(--nuit); color: var(--pellicule); } }
@media (max-width: 767px) {
  .next-card__photo { max-height: 70svh; }
}

/* =========================================================================
   H12 Contact, le carton
   ========================================================================= */
/* Le carton de fin occupe tout l'écran : en bas de page, la barre du haut est posée sur lui (jamais sur l'aplat BREEZZ) */
.contact {
  background: var(--nuit);
  /* carton + pied de page = un écran (--foot-h mesuré par home.js) */
  min-height: calc(100vh - var(--foot-h, 0px)); min-height: calc(100svh - var(--foot-h, 0px));
  display: grid; align-content: center;
  padding-block: calc(var(--topbar-h) + var(--sp-6)) clamp(48px, 6vw, 96px);
}
.contact__in { align-items: stretch; row-gap: var(--sp-6); }
.contact__portrait { margin: 0; min-height: 0; }
.contact__portrait img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.contact__body { display: grid; justify-items: start; align-content: start; gap: var(--sp-5); }
.contact__title { font-size: var(--t-xl); line-height: .9; }
.contact__title .nowrap { display: inline-block; }
.contact__avail { color: var(--cendre); white-space: normal; }
@media (min-width: 768px) {
  /* Portrait calé sur la hauteur du bloc texte : du haut des capitales de « ON EN » au dernier lien */
  .contact__portrait { position: relative; margin-top: calc(var(--t-xl) * .1); }
  .contact__portrait img { position: absolute; inset: 0; }
}
/* Fin de bobine : en bas de page, REC devient STOP (le timecode s'arrête sur la durée totale) */
html.rp-fin .topbar__tc .rec { animation: none; font-size: 0; }
html.rp-fin .topbar__tc .rec::before { content: "■"; font-size: 10px; }
html.rp-fin .topbar__tc [data-copy="GLOBAL.NAV.REC"] { font-size: 0; }
html.rp-fin .topbar__tc [data-copy="GLOBAL.NAV.REC"]::before { content: "STOP"; font-size: var(--t-hud); }
.contact__mailrow { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
.contact__mail { font-weight: 700; font-stretch: 87%; font-size: clamp(22px, 1rem + 1.6vw, 44px); line-height: 1.2; overflow-wrap: anywhere; }
.contact__row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.contact__mag { display: inline-block; padding: 12px; margin: -12px; }
.contact__bz { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; font-size: var(--t-base); }
.contact__ref { color: var(--cendre); font-size: var(--t-s); }
@media (max-width: 767px) {
  .contact { min-height: calc(100svh - var(--bottom-h) - var(--safe-b) - var(--foot-h, 0px)); padding-top: var(--sp-8); }
  /* Mobile : titre, puis une fiche (portrait + disponibilité côte à côte), puis l'e-mail et les boutons */
  .contact__in { align-items: start; row-gap: var(--sp-5); }
  .contact__body { display: contents; }
  .contact__title { grid-column: 1 / -1; grid-row: 1; }
  .contact__portrait { grid-column: 1 / span 2; grid-row: 2; aspect-ratio: 4 / 5; max-width: 168px; }
  .contact__avail { grid-column: 3 / -1; grid-row: 2; align-self: center; display: grid; gap: 6px; }
  .contact__sep { display: none; }
  .contact__mailrow, .contact__row, .contact__bz, .contact__ref { grid-column: 1 / -1; }
  /* le lien BREEZZ garde la largeur de son texte (soulignement sous le texte, pas sur toute la ligne) */
  .contact__bz { justify-self: start; }
  .contact__mail { font-size: clamp(20px, 6.2vw, 30px); }
}
