/*
 * Apparitions pilotées par le défilement (façon noth.in, mode « scrub ») : chaque élément suit la position
 * de la page. --rp va de 0 (l'élément entre par le bas de l'écran) à 1 (il a atteint le tiers haut),
 * et redescend si l'on remonte. reveal.js calcule --rp, lissé, à chaque image.
 *  - .rv-line : le texte monte depuis un masque fixe (déplacement + découpe compensée)
 *  - .rv-clip : l'image s'ouvre de bas en haut (ou depuis un coin bas gauche / bas droit) et se resserre
 *  - .rv-fade : la carte apparaît en fondu en remontant
 * Sans JavaScript ou avec les animations réduites, aucune classe n'est posée : tout s'affiche normalement.
 */

/* Texte qui sort d'un masque : l'élément descend et la découpe remonte d'autant, la ligne de coupe reste fixe */
.rv-line {
  translate: 0 calc((1 - var(--rp, 0)) * 105%);
  clip-path: inset(calc((var(--rp, 0) - 1) * 105%) -0.2em calc((1 - var(--rp, 0)) * 105%) -0.2em);
}
.rv-line.rv-full { translate: none; clip-path: none; }

/* Images et vidéos : ouverture par le bas, au centre ou depuis un coin */
html .rv-clip { clip-path: inset(calc((1 - var(--rp, 0)) * 100%) 0 0 0 round 14px) !important; }
html .rv-clip[data-rv-from="left"] { clip-path: inset(calc((1 - var(--rp, 0)) * 100%) calc((1 - var(--rp, 0)) * 100%) 0 0 round 14px) !important; }
html .rv-clip[data-rv-from="right"] { clip-path: inset(calc((1 - var(--rp, 0)) * 100%) 0 0 calc((1 - var(--rp, 0)) * 100%) round 14px) !important; }
.rv-clip > img, .rv-clip > video { scale: calc(1 + (1 - var(--rp, 0)) * 0.14); }

/* Cartes et petits blocs : fondu en remontant */
.rv-fade { opacity: var(--rp, 0); translate: 0 calc((1 - var(--rp, 0)) * 48px); }

/* Parallaxe douce des blocs de travaux (--py de -1 à 1) */
html.rv-on [data-rv-par], html.rv-on [data-rv-par][data-reveal] { transform: translate3d(0, calc(var(--py, 0) * var(--rv-par, -40px)), 0) !important; }

/* Les sections à fondu de l'ancienne version laissent la place à ces animations */
html.rv-on [data-reveal] { opacity: 1 !important; transform: none !important; }

@media (prefers-reduced-motion: reduce) {
  .rv-line, .rv-clip, .rv-fade, html .rv-clip { translate: none !important; clip-path: none !important; opacity: 1 !important; }
  .rv-clip > img, .rv-clip > video { scale: none !important; }
  html.rv-on [data-rv-par] { transform: none !important; }
}
