/* =========================================================================
   3Event — page Animations
   Maquette Figma « PAGE ANIMATIONS » (fichier iysRiEh29eak8SR2njxmkB,
   frame 434:630, 07/09/2026) + popup de détail (frame 436:1251).
   Chargé uniquement sur cette page (functions.php, tev_is_page_animations).
   ========================================================================= */

/* --- Bannière ------------------------------------------------------------ */
.tev-anim-hero {
	position: relative; background: var(--tev-blue); color: var(--tev-cream);
	/* Tout est fluide : la page s'adapte en continu au lieu de sauter d'un
	   palier à l'autre. Les bornes des clamp() sont les valeurs de la maquette
	   (haut) et le minimum lisible (bas). */
	padding-block: clamp(108px, 10.4vw, 150px) clamp(56px, 6.7vw, 96px);
	overflow: clip;
}
/* Pattern du fond : la silhouette de montagne en blanc à 4 %, deux fois,
   aux positions de la maquette (x=1285/y=172 et x=499/y=503). */
.tev-anim-hero__pattern { position: absolute; inset: 0; pointer-events: none; }
.tev-anim-hero__mont { position: absolute; color: var(--tev-cream); opacity: .04; height: auto; }
.tev-anim-hero__mont--1 { width: 356px; right: -201px; top: 159px; }
.tev-anim-hero__mont--2 { width: 379px; left: 34.7%; top: 490px; }
/* Texte à gauche, photo à droite dans un cadre orange décalé (maquette :
   photo 633×368 à x=718, titre à x=78). */
.tev-anim-hero__inner {
	position: relative; z-index: 1; display: flex; align-items: center;
	gap: clamp(24px, 4.4vw, 64px);
	min-height: clamp(320px, 36vw, 520px);
}
.tev-anim-hero__texte {
	flex: 1 1 44%; max-width: 560px; min-width: 0;
	display: flex; flex-direction: column; align-items: flex-start;
	gap: clamp(20px, 2.2vw, 32px);
}
.tev-anim-hero__title { text-transform: uppercase; font-size: clamp(21px, 2.55vw, 36px); line-height: 1.08; }

/* Sur-titre du H1 : il porte le mot-clé de la page et se lit comme un eyebrow.
   Il reste DANS le <h1> — le sortir ferait perdre le mot-clé au titre. */
.tev-anim-hero__title--sur { display: flex; flex-direction: column; gap: 14px; }
.tev-anim-hero__eyebrow {
	font-family: var(--tev-font-form);
	font-size: 13px; line-height: 18px; font-weight: 700;
	letter-spacing: .12em;
	color: var(--tev-orange);
}
.tev-anim-hero__catch { display: block; }

/* Fil d'Ariane servi à l'intérieur de la bannière (gabarit de référencement).
   ⚠️ Posé sous elle, dans sa propre bande claire, il coupait le passage du
   bleu à l'orange d'un trait blanc (Lisa, 18/09/2026). */
.tev-anim-hero__ariane { position: relative; z-index: 2; padding-top: 12px; }
.tev-anim-hero__ariane .tev-ariane__list { color: rgba(255, 255, 255, .72); }
.tev-anim-hero__ariane .tev-ariane__item a { color: rgba(255, 255, 255, .72); }
.tev-anim-hero__ariane .tev-ariane__item a:hover { color: var(--tev-white); }
.tev-anim-hero__ariane .tev-ariane__item [aria-current] { color: var(--tev-white); }
.tev-anim-hero__ariane .tev-ariane__item + .tev-ariane__item::before { color: rgba(255, 255, 255, .45); }
.tev-anim-hero__ctas { display: flex; flex-wrap: wrap; gap: 16px; }

/* Trois images superposées, AUCUN fond ni bordure : le cadre fait partie des
   images elles-mêmes. Décalages et opacités relevés sur la maquette —
   couche 1 (0,0), couche 2 (+3,0), couche nette (+16,+23) et 633/658 de large. */
.tev-anim-hero__media { position: relative; flex: 1 1 52%; max-width: 658px; min-width: 0; aspect-ratio: 658 / 413; }
.tev-anim-hero__img { position: absolute; display: block; transition: opacity .35s var(--tev-ease); }
.tev-anim-hero__img--1 { left: 0; top: 0; width: 100%; opacity: .44; }
.tev-anim-hero__img--2 { left: .456%; top: 0; width: 100%; opacity: .44; }
.tev-anim-hero__img--3 { left: 2.43%; top: 5.57%; width: 96.2%; }
/* Photo choisie en back-office : format paysage imposé et cadre de la maquette
   (bord orange 3 px, rayon 24 px, mesurés sur anim-hero-3). */
/* Posée à l'emplacement exact du cadre visible de l'export (hors ombre transparente). */
.tev-anim-hero__img--photo { left: 6.6%; top: 11.4%; width: 87.8%; aspect-ratio: 1156 / 678; height: auto; object-fit: cover; border: 3px solid var(--tev-orange); border-radius: 24px; }

/* Séquence d'arrivée : chaque couche se montre pleine, puis passe à 44 % quand
   la suivante la recouvre. L'état final est celui des règles ci-dessus. */
.tev-anim-hero__media.is-sequence .tev-anim-hero__img { opacity: 0; }
.tev-anim-hero__media.is-sequence .tev-anim-hero__img.is-pleine { opacity: 1; }
.tev-anim-hero__media.is-sequence .tev-anim-hero__img.is-fondue { opacity: .44; }

/* --- Bannière en éventail (page Événements) ---------------------------------
   Aucune maquette ne dessine cette page : le visuel reprend le vocabulaire
   déjà posé par la galerie de l'accueil — photos inclinées, bord orange,
   grands rayons — au lieu du cadre rectangulaire figé, qui ne tenait pas
   debout avec une seule photo (Lisa, 16/09/2026).

   ⚠️ Répartition des rôles : le SLOT porte la position (et c'est lui que GSAP
   anime), la PHOTO porte l'inclinaison et le suivi du curseur. Sans cette
   séparation, l'animation d'entrée écraserait la rotation, les deux vivant
   dans la même propriété `transform`.

   Les tailles sont en POURCENTAGE de la boîte : la bannière est fluide, et une
   photo calée en pixels sortirait du cadre dès qu'on rétrécit la fenêtre. */
.tev-eventail { position: relative; }
.tev-eventail__slot { position: absolute; will-change: transform; }
/* Décalages choisis pour que l'emprise des photos inclinées reste DANS la
   boîte : la section est en `overflow: clip`, un coin qui dépasse serait
   tranché sans prévenir. */
.tev-eventail__slot--1 { left: 0; top: 4%; width: 54%; aspect-ratio: 4 / 3; z-index: 1; }
/* 3 % de retrait à droite, pas 0 : inclinée de 6,5°, la photo pousse son coin
   d'une quinzaine de pixels au-delà de sa boîte — collée au bord, elle sortait
   de l'alignement du container, et davantage encore au survol. */
.tev-eventail__slot--2 { right: 3%; bottom: 2%; width: 49%; aspect-ratio: 4 / 3; z-index: 2; }
.tev-eventail__slot--3 { left: 15%; top: 17%; width: 62%; aspect-ratio: 16 / 10; z-index: 3; }

.tev-eventail__photo {
	margin: 0; width: 100%; height: 100%; overflow: hidden;
	border-radius: var(--tev-radius); border: 3px solid var(--tev-orange);
	box-shadow: 0 18px 44px rgba(10, 16, 50, .34);
	/* --px / --py : le suivi du curseur, posé par animations.js. Le repli à 0
	   garde la règle valable sans JavaScript et sur écran tactile. */
	transform: translate3d(var(--px, 0px), var(--py, 0px), 0) rotate(var(--r, 0deg));
	transition: transform .5s var(--tev-ease), box-shadow .5s var(--tev-ease);
}
.tev-eventail__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.tev-eventail__slot--1 .tev-eventail__photo { --r: -7deg; }
.tev-eventail__slot--2 .tev-eventail__photo { --r: 6.5deg; }
.tev-eventail__slot--3 .tev-eventail__photo { --r: -1.5deg; }

/* Au survol, l'éventail s'ouvre : les deux photos du fond s'écartent, celle du
   dessus avance. Réservé au pointeur fin — au doigt il n'y a pas de survol, et
   l'éventail reste tel quel. */
@media (hover: hover) and (pointer: fine) {
	.tev-eventail:hover .tev-eventail__slot--1 .tev-eventail__photo { --px: -18px; --py: -10px; --r: -10.5deg; }
	.tev-eventail:hover .tev-eventail__slot--2 .tev-eventail__photo { --px: 12px; --py: 10px; --r: 10deg; }
	.tev-eventail:hover .tev-eventail__slot--3 .tev-eventail__photo { box-shadow: 0 26px 60px rgba(10, 16, 50, .42); }
}

/* Raccord sous la bande orange (page Événements).
   🛑 La bande d'introduction se termine en OBLIQUE (clip-path) : la section qui
   la suit doit remonter de `--tev-slant` et porter l'oblique complémentaire,
   sinon le triangle laisse voir le blanc du body — la bande blanche signalée
   par Lisa le 16/09/2026. Sur la page Animations, c'est `.tev-fiches` qui fait
   ce raccord ; ici la section suivante est la pile de cartes.

   ⚠️ L'oblique est posée sur un PSEUDO-ÉLÉMENT, pas sur la section : un
   `clip-path` crée un bloc conteneur pour les descendants en `position: fixed`,
   et casserait l'épinglage GSAP de la pile de cartes. Le pseudo, lui, n'a pas
   de descendant.
   Le fond `--tev-tint` est semi-transparent : il DOIT être porté par un seul
   élément, sinon il se cumule et la section fonce. Il passe donc au pseudo. */
.tev-evt-page .tev-anim-intro + .tev-offres {
	background: none;
	margin-top: calc(var(--tev-slant) * -1);
	padding-top: calc(154px + var(--tev-slant));
}
.tev-evt-page .tev-anim-intro + .tev-offres::before {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background: var(--tev-tint);
	clip-path: polygon(0 var(--tev-slant), 100% 0, 100% 100%, 0 100%);
}
@media (max-width: 1024px) {
	.tev-evt-page .tev-anim-intro + .tev-offres { padding-top: calc(88px + var(--tev-slant)); }
}

/* Page Événements — réglages propres à cette page.
   1. Les photos de la section « formats » se choisissent en back-office : leur
      format est imposé ici, sinon un portrait donne une vignette deux fois plus
      haute que ses voisines (téléphone) et une traînée disparate (souris).
   2. La réserve au-dessus du titre vaut 230 px sur la page Animations, où le
      sillage de photos l'occupe en maquette. Ici la section est courte : cette
      réserve ne faisait qu'un grand vide. */
.tev-evt-page .tev-anim-galerie__repli img,
.tev-evt-page .tev-anim-galerie__trace { aspect-ratio: 16 / 10; object-fit: cover; }
/* ⚠️ Sous `@media (min-width: 769px)` : sans cette borne, la règle (0-2-0)
   l'emportait sur les paliers mobiles de la section (0-1-0) et rendait 140 px
   de réserve sur un téléphone, là où 64 suffisent. */
@media (min-width: 769px) {
	.tev-evt-page .tev-anim-galerie { padding-block: 140px 80px; }
}

/* La bannière s'empile plus tôt que sur la page Animations : l'éventail a
   besoin de largeur pour que ses trois photos se distinguent, or à 834 px
   elles tombaient sous 250 px de large. */
@media (max-width: 900px) {
	/* La bannière se compacte : sans cette réserve, le fil d'Ariane vient
	   toucher le sur-titre, les deux étant de petits textes en capitales. */
	.tev-anim-hero__ariane { padding-bottom: 20px; }
	.tev-anim-hero__title--sur { gap: 10px; }

	.tev-evt-page .tev-anim-hero__inner { flex-direction: column; align-items: flex-start; min-height: 0; }
	.tev-evt-page .tev-anim-hero__texte { flex: 0 0 auto; max-width: 100%; }
	.tev-evt-page .tev-anim-hero__media { flex: 0 0 auto; width: 100%; max-width: 560px; margin-inline: auto; }
	.tev-evt-page .tev-anim-hero__ctas { width: 100%; }
}

/* Sur petit écran l'éventail se resserre : les photos du fond ne servent plus
   qu'à border celle du dessus, sinon elles mangent la place du texte. */
@media (max-width: 768px) {
	.tev-eventail__slot--1 { top: 2%; width: 50%; }
	.tev-eventail__slot--2 { width: 46%; }
	.tev-eventail__slot--3 { left: 18%; top: 15%; width: 64%; }
	.tev-eventail__photo { border-width: 2px; }
}

/* --- Introduction ----------------------------------------------------------
   Bande ORANGE pleine largeur, texte unique en Archivo Black 22/28 crème,
   centré sur 912 px (mesuré : bande #FF5527 de 370 px, texte à x=264). */
.tev-anim-intro {
	background: var(--tev-orange); color: var(--tev-cream);
	padding-block: clamp(56px, 6.7vw, 96px) clamp(80px, 8.9vw, 128px);
	/* Bord oblique en bas, comme les bandes de l'accueil. */
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--tev-slant)), 0 100%);
}
.tev-anim-intro__inner { max-width: 1120px; margin-inline: auto; display: flex; flex-direction: column; gap: 10px; text-align: center; }
.tev-anim-intro__titre,
.tev-anim-intro__texte {
	font-family: var(--tev-font-title); font-size: clamp(16px, 1.55vw, 22px); line-height: 1.3;
	text-transform: uppercase;
	/* Couleur de DÉPART de la révélation : chaque mot blanchit au défilement
	   (app.js, `scrub-words`, qui anime vers #FBFBFB). */
	color: rgba(251, 251, 251, .38);
}
/* Sans JavaScript, le texte doit rester parfaitement lisible. */
.tev-anim-intro__inner:not([data-tev-split="done"]) .tev-anim-intro__titre,
.tev-anim-intro__inner:not([data-tev-split="done"]) .tev-anim-intro__texte { color: var(--tev-cream); }

/* --- Bloc « 01 FÉDÉRER » : carrousel de cartes ------------------------------
   Sur fond clair, carte bleue centrée (~331 px de texte), titre 36/39 crème,
   texte 18/21 crème, deux flèches en dessous. */
.tev-valeurs { position: relative; background: var(--tev-tint); padding-block: 96px 120px; }
.tev-valeurs__inner { position: relative; z-index: 2; display: flex; justify-content: center; }
.tev-valeurs__carousel { display: flex; flex-direction: column; align-items: center; gap: 56px; }
/* Les trois cartes se SUPERPOSENT réellement (Lisa, 16/09/2026) : ce ne sont
   pas des contours vides derrière, mais les cartes elles-mêmes, décalées.
   Toutes occupent la même cellule de grille, donc le bloc prend la hauteur de
   la plus haute et rien n'est positionné en absolu. `--d` est l'écart à la
   carte active, posé par animations.js : il pilote le décalage, l'inclinaison
   et l'ordre de superposition. */
/* Recalé sur la maquette le 23/09/2026 (434:630, Rectangles 83/84/85 et
   Frame 276). Les trois cartes sont des CARRÉS de 454 px (boîtes redressées :
   513 px de boîte tournée à 8°, 462 px à 1°). Celle du dessus est bleue et
   presque droite (−1°) ; les deux de derrière sont CRÈME, bordées d'orange,
   inclinées de +8° et −8°, et ne montrent que leur bord. `data-d` (écart à la
   carte active) est posé par animations.js. */
.tev-valeurs__list { position: relative; display: grid; width: min(454px, 100%); }
/* Les cartes sont À CHEVAL sur deux fonds (maquette : l'aplat bleu clair
   s'arrête à y=3806, soit 44 % de la hauteur de la carte du dessus, et le
   crème de Rectangle 92 prend le relais jusqu'aux chiffres clés). Le crème
   est porté par la liste elle-même, pour que la ligne de partage suive la
   carte à toutes les largeurs ; la section coupe ce qui dépasse. Posé dans
   `__inner` (z-index 2), il passe au-dessus du grain, que le crème n'a pas. */
.tev-valeurs { overflow: clip; }
/* Soudure avec la grille de fiches : la hauteur de celle-ci tombe sur une
   fraction de pixel, et la jonction laissait passer un filet clair (mesuré :
   une ligne à 247/248/253 entre deux aplats à 240/242/251). Le recouvrement
   d'1 px suffirait avec un fond opaque, mais `--tev-tint` est transparent et
   deux couches se cumuleraient en ligne plus foncée : la section prend donc
   la teinte déjà composée, opaque, relevée sur le rendu. */
.tev-valeurs { margin-top: -1px; background: rgb(240, 242, 251); }
/* Les flèches passent au-dessus du crème de la liste (qui est positionné). */
.tev-valeurs__nav { position: relative; z-index: 1; }
.tev-valeurs__list::before {
	content: ""; position: absolute; top: 44%; left: 50%; z-index: 0;
	width: 100vw; height: 100vh; translate: -50% 0;
	background: var(--tev-cream); pointer-events: none;
}
.tev-valeur {
	grid-area: 1 / 1;
	/* `relative` obligatoire : la carte porte la montagne en `absolute`. */
	position: relative;
	aspect-ratio: 1; display: flex; flex-direction: column; gap: 48px;
	background: var(--tev-blue); color: var(--tev-cream);
	border: 2px solid var(--tev-orange);
	border-radius: var(--tev-radius); padding: 88px 60px 60px;
	transform: rotate(-1deg); z-index: 10;
	transition: transform .5s var(--tev-ease), background-color .5s var(--tev-ease);
}
.tev-valeur[data-d="1"] { background: var(--tev-cream); transform: translate(4px, -16px) rotate(8deg); z-index: 9; }
.tev-valeur[data-d="2"] { background: var(--tev-cream); transform: translate(-12px, -28px) rotate(-8deg); z-index: 8; }
/* Au-delà de trois cartes, les suivantes attendent sous la pile. */
.tev-valeur[data-d]:not([data-d="0"]):not([data-d="1"]):not([data-d="2"]) { background: var(--tev-cream); opacity: 0; z-index: 1; }
/* Seule celle du dessus montre son contenu. */
.tev-valeur:not(.is-active) > * { opacity: 0; transition: opacity .3s var(--tev-ease); }
.tev-valeur__titre { font-family: var(--tev-font-title); font-size: clamp(26px, 2.55vw, 36px); line-height: 1.09; text-transform: uppercase; }
.tev-valeur__num { font-size: 16px; line-height: 1; margin-right: 12px; vertical-align: 4px; }
.tev-valeur__texte { font-size: 18px; line-height: 21.8px; font-weight: 600; }
/* Montagne de la maquette (Vector 434:897), crème à 76 %, qui déborde un peu
   du bord droit comme sur la maquette. */
.tev-valeur__montagne { position: absolute; right: -6px; bottom: 4px; width: 136px; height: auto; color: var(--tev-cream); opacity: .76; }
.tev-valeur.is-active > .tev-valeur__montagne { opacity: .76; }
.tev-valeurs__nav { display: flex; gap: 14px; }

/* --- Grille de fiches -------------------------------------------------------
   Fond bleu à 8 % (le `--tev-tint` de la maquette), pas crème.
   La section remonte SOUS la diagonale de la bande orange et porte le bord
   oblique complémentaire : sans ça, le blanc du body apparaît entre les deux
   (la découpe de la bande laisse un vide que rien ne remplit). */
.tev-fiches {
	position: relative; background: var(--tev-tint);
	margin-top: calc(var(--tev-slant) * -1);
	clip-path: polygon(0 var(--tev-slant), 100% 0, 100% 100%, 0 100%);
	padding-block: calc(96px + var(--tev-slant)) 96px;
}
/* Chapô : le propos sur les objectifs, juste avant les filtres — c'est
   l'ordre du document fourni par le client (16/09/2026). En casse normale,
   pas en capitales : la bande orange porte déjà l'accroche criée. */
.tev-fiches__chapo {
	max-width: 860px; margin-bottom: clamp(32px, 3.4vw, 52px);
	display: flex; flex-direction: column; gap: 12px;
}
.tev-fiches__chapo p { font-size: clamp(15px, 1.25vw, 17px); line-height: 1.55; color: var(--tev-blue); }
.tev-fiches__chapo p:first-child {
	font-family: var(--tev-font-title); font-size: clamp(18px, 1.75vw, 24px);
	line-height: 1.25; text-transform: uppercase;
}

/* Titre et filtres sur la MÊME ligne, filtres alignés à droite (maquette :
   titre à x=80, première pastille à x=647). */
.tev-fiches__inner { position: relative; z-index: 2; }
.tev-fiches__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 56px; }
.tev-fiches__title { flex: 0 0 auto; }
.tev-fiches__filtres { flex: 1 1 auto; justify-content: flex-end; row-gap: 12px; }
.tev-filtre {
	cursor: pointer; background: transparent; color: var(--tev-blue); border-color: var(--tev-blue);
	transition: background-color .3s var(--tev-ease), color .3s var(--tev-ease), border-color .3s var(--tev-ease);
}
.tev-filtre:hover { border-color: var(--tev-orange); color: var(--tev-orange); }
.tev-filtre.is-active { background: var(--tev-orange); border-color: var(--tev-orange); color: var(--tev-cream); }

.tev-fiches__list {
	display: grid; grid-template-columns: repeat(2, 1fr); gap: 56px 64px;
}
/* Légèrement en quinconce ET légèrement inclinées, comme la maquette (retour
   Lisa, 15/09/2026, @1341,1266). Le « ricochet » est au scroll, voir
   assets/js/animations.js. */
.tev-fiches__list .tev-fiche:nth-child(even) { margin-top: 72px; }

.tev-fiche { position: relative; display: flex; flex-direction: column; gap: 34px; }
/* Apparition successive : cartouche → image → texte (commentaire de Lisa,
   15/09/2026 : « le texte arrive après la cartouche + l'image »). La classe
   js-anim n'est posée que si le JavaScript tourne ; sans lui, tout est visible. */
/* 🛑 Ne JAMAIS poser la transition ici. Ce sélecteur (0-3-0) est plus
   spécifique que `.tev-fiche__plaque` (0-1-0) : la forme raccourcie
   `transition: opacity .35s` y écrasait la déclaration complète de la plaque,
   qui perdait donc sa transition sur `transform` — le survol ne glissait pas,
   il SAUTAIT (retour de Thomas, 22/09/2026 : « fluidifie la transition au
   hover »). ⚠️ Le raccourci `transition` remet à zéro toutes ses parties, y
   compris celles qu'on ne mentionne pas. La transition appartient à l'élément,
   pas à l'état : elle est déclarée une fois sur chacun d'eux, plus bas. */
.tev-fiche.js-anim .tev-fiche__plaque,
.tev-fiche.js-anim .tev-fiche__photo,
.tev-fiche.js-anim .tev-fiche__body { opacity: 0; }
.tev-fiche__photo, .tev-fiche__body { transition: opacity .35s var(--tev-ease); }
.tev-fiche.js-anim.is-vue .tev-fiche__plaque { opacity: 1; }
.tev-fiche.js-anim.is-vue .tev-fiche__photo  { opacity: 1; transition-delay: .22s; }
.tev-fiche.js-anim.is-vue .tev-fiche__body   { opacity: 1; transition-delay: .44s; }

/* Le « ricochet » (Lisa, 16/09/2026) : la carte PIVOTE légèrement de gauche à
   droite sur sa base, UNE SEULE FOIS, quand elle arrive à l'écran — et non à
   chaque défilement. Les cartes entrant l'une après l'autre, le mouvement
   descend naturellement le long de la grille. */
.tev-fiche.js-anim.is-vue { transform-origin: bottom center; animation: tev-fiche-pivot 1.5s cubic-bezier(.33, .1, .25, 1) both; }
/* Mouvement volontairement doux (Lisa, 16/09/2026) : amplitude réduite de
   moitié et courbe plus souple qu'à la première version. */
@keyframes tev-fiche-pivot {
	0%   { transform: rotate(-.9deg); }
	34%  { transform: rotate(.55deg); }
	62%  { transform: rotate(-.22deg); }
	84%  { transform: rotate(.08deg); }
	100% { transform: rotate(0deg); }
}
.tev-fiche.is-collapsed { display: none; }
.tev-fiche:nth-child(odd) .tev-fiche__plaque { transform: rotate(-2.5deg); }
.tev-fiche:nth-child(even) .tev-fiche__plaque { transform: rotate(2.5deg); }

/* Plaque colorée 528×409 : bandeau de pastilles en haut, photo posée dedans
   (523×334), « Découvrir » en bas à droite par-dessus la photo. */
.tev-fiche__plaque {
	position: relative; border-radius: 28px; overflow: hidden;
	aspect-ratio: 528 / 409; padding: 14px 0 0; display: flex; flex-direction: column;
	box-shadow: 0 16px 40px rgba(9, 18, 52, .16);
	transition: transform .45s var(--tev-ease), opacity .35s var(--tev-ease), box-shadow .45s var(--tev-ease);
	/* Indice au navigateur : cet élément transforme au survol, qu'il lui
	   réserve sa couche. ⚠️ Aucun gain MESURÉ ici — la machine de recette rend
	   en logiciel, elle plafonne cette page à 15 images/s quoi qu'on retire
	   (essayé sans l'animation de fond des photos et sans le grain : même
	   chiffre). C'est une bonne pratique, pas un correctif de performance, et
	   elle n'est posée que sur les 6 plaques, jamais sur leurs images. */
	will-change: transform;
	/* La plaque est un <button> : on lui rend l'alignement d'un bloc. */
	width: 100%; text-align: left;
}
.tev-fiche:hover .tev-fiche__plaque,
.tev-fiche__plaque:focus-visible { transform: rotate(0deg) translateY(-6px); box-shadow: 0 26px 56px rgba(9, 18, 52, .24); }
.tev-fiche__plaque--orange { background: var(--tev-orange); }
.tev-fiche__plaque--blue { background: var(--tev-blue); }
.tev-fiche__tags { display: flex; align-items: center; gap: 10px; padding-inline: 16px; height: 46px; margin-bottom: 14px; }
.tev-fiche__tags .tev-pill { background: transparent; border-color: rgba(251, 251, 251, .8); color: var(--tev-cream); }

/* La photo occupe presque toute la plaque : la couleur ne reste qu'en cadre. */
.tev-fiche__photo { flex: 1 1 auto; margin: 0 8px 8px; border-radius: 22px; overflow: hidden; background: rgba(251, 251, 251, .14); }
.tev-fiche__photo img { width: 100%; height: 100%; object-fit: cover; }

/* « Les encarts colorés avec photo s'animent légèrement dans le fond
   (mouvement) » — Clémence, 26/08/2026 (333:44). Mouvement lent et continu,
   décalé d'une carte à l'autre pour ne pas battre la mesure ensemble. */
@media (prefers-reduced-motion: no-preference) {
	.tev-fiche__photo img {
		animation: tev-fiche-fond 18s ease-in-out infinite alternate;
		transform-origin: center;
	}
	.tev-fiche:nth-child(2n) .tev-fiche__photo img { animation-duration: 21s; animation-delay: -4s; }
	.tev-fiche:nth-child(3n) .tev-fiche__photo img { animation-duration: 24s; animation-delay: -9s; }
}
@keyframes tev-fiche-fond {
	from { transform: scale(1.04) translate3d(-1.2%, -.8%, 0); }
	to   { transform: scale(1.08) translate3d(1.2%, .8%, 0); }
}

.tev-fiche__cta {
	position: absolute; right: 26px; bottom: 26px; display: inline-flex; align-items: center; gap: 12px;
	font-family: var(--tev-font-title); font-size: 14px; line-height: 15px; color: var(--tev-white);
}
.tev-fiche__cta-rond {
	width: 41px; height: 41px; border-radius: 50%; background: var(--tev-white);
	display: inline-flex; align-items: center; justify-content: center;
	transition: transform .3s var(--tev-ease);
}
.tev-fiche__plaque--orange .tev-fiche__cta-rond svg { color: var(--tev-orange); }
.tev-fiche__plaque--blue .tev-fiche__cta-rond svg { color: var(--tev-blue); }
.tev-fiche__cta-rond svg { width: 16px; height: 14px; }
/* Le survol se joue sur la CARTE, pas sur la plaque : la plaque se redresse au
   survol, donc sa zone sensible se déplace sous le curseur, et près d'un coin
   la pastille pouvait clignoter. La carte, elle, garde une boîte stable. */
.tev-fiche:hover .tev-fiche__cta-rond,
.tev-fiche__plaque:focus-visible .tev-fiche__cta-rond { transform: translateX(4px); }

.tev-fiche__body { display: flex; flex-direction: column; gap: 10px; padding-inline: 4px; }
.tev-fiche__title { font-family: var(--tev-font-title); font-size: clamp(17px, 1.55vw, 22px); line-height: 1.12; text-transform: uppercase; color: var(--tev-blue); }
.tev-fiche__teaser { font-size: clamp(14px, 1.15vw, 16px); line-height: 1.32; color: var(--tev-grey); }

.tev-fiches__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; margin-top: 72px; }
.tev-fiches__empty, .tev-fiches__vide { text-align: center; color: var(--tev-grey); padding-block: 24px; }

/* Photo sous l'accroche des chiffres clés (maquette : 368×214).
   AUCUNE bordure CSS : le cadre orange est déjà cuit dans l'image exportée
   de la maquette (Lisa, 16/09/2026) — en ajouter une la doublerait. */
.tev-anim-stats__photo { margin-top: 40px; width: 368px; max-width: 100%; }
.tev-anim-stats__photo img { width: 100%; display: block; }

/* --- Popup de détail --------------------------------------------------------- */
html.tev-no-scroll { overflow: hidden; }
/* Ouverture et fermeture en FONDU (Thomas, 22/09/2026 : « chaque transition
   doit être smooth »). `hidden` coupe l'affichage d'un coup : c'est la classe
   `is-open`, posée à la frame suivante, qui porte le mouvement, et la fermeture
   attend la fin de la transition avant de remettre `hidden`. */
.tev-fiche-popup {
	position: fixed; inset: 0; z-index: 300; display: grid; place-items: center; padding: 24px;
	opacity: 0; transition: opacity .28s var(--tev-ease);
}
.tev-fiche-popup.is-open { opacity: 1; }
.tev-fiche-popup__panel { transform: translateY(14px) scale(.985); transition: transform .34s var(--tev-ease); }
.tev-fiche-popup.is-open .tev-fiche-popup__panel { transform: none; }
.tev-fiche-popup[hidden] { display: none; }
.tev-fiche-popup__backdrop { position: absolute; inset: 0; background: rgba(15, 24, 55, .72); }
.tev-fiche-popup__panel {
	position: relative; width: min(1104px, 100%); max-height: min(826px, 90vh); overflow-y: auto;
	background: var(--tev-cream); border-radius: var(--tev-radius); padding: 56px; color: var(--tev-blue);
}
.tev-fiche-popup__close {
	position: absolute; top: 20px; right: 20px; width: 41px; height: 41px; border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center; background: var(--tev-tint); color: var(--tev-blue);
	transition: background-color .3s var(--tev-ease), color .3s var(--tev-ease);
}
.tev-fiche-popup__close:hover { background: var(--tev-orange); color: var(--tev-cream); }
.tev-fiche-popup__close svg { width: 12px; height: 12px; }
.tev-fiche-popup__title { font-family: var(--tev-font-title); font-size: 26px; line-height: 32px; text-transform: uppercase; margin-bottom: 28px; }
/* Depuis le 30/09/2026 l'accroche n'est plus DANS le H3 : l'enveloppe reprend le
   style du titre, et les deux restent en ligne. Rendu inchangé, balises seules. */
.tev-fiche-popup__titre-bloc { font-family: var(--tev-font-title); font-size: 26px; line-height: 32px; text-transform: uppercase; margin-bottom: 28px; }
.tev-fiche-popup__titre-bloc .tev-fiche-popup__title { display: inline; font: inherit; text-transform: inherit; margin: 0; }
.tev-fiche-popup__accroche { display: inline; }
.tev-fiche-popup__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }
.tev-fiche-popup__label { font-family: var(--tev-font-title); font-size: 15px; line-height: 20px; text-transform: uppercase; margin-bottom: 8px; }
.tev-fiche-popup__texte p { font-size: 15px; line-height: 23px; color: var(--tev-grey); margin-bottom: 12px; }
.tev-fiche-popup__suite { font-style: italic; }
.tev-fiche-popup__rse { margin-top: 24px; }
.tev-fiche-popup__rse .tev-pills { margin-bottom: 14px; }
.tev-fiche-popup__apports { display: flex; flex-direction: column; gap: 6px; font-size: 14px; line-height: 21px; color: var(--tev-grey); }
.tev-fiche-popup__apports li { padding-left: 18px; position: relative; }
.tev-fiche-popup__apports li::before { content: "—"; position: absolute; left: 0; color: var(--tev-orange); }

.tev-fiche-popup__photos { position: relative; border-radius: var(--tev-radius-img); overflow: hidden; aspect-ratio: 523 / 334; }
.tev-fiche-popup__photos-track { display: flex; height: 100%; transition: transform .45s var(--tev-ease); }
.tev-fiche-popup__photos-track img { width: 100%; height: 100%; object-fit: cover; flex: 0 0 100%; }
.tev-fiche-popup__photos-nav { position: absolute; bottom: 12px; right: 12px; display: flex; gap: 8px; }
.tev-fiche-popup__photos-nav .tev-arrow { width: 36px; height: 36px; }
.tev-fiche-popup__photos-nav svg { width: 14px; height: 12px; }

/* --- Témoignage : détails propres à cette page ------------------------------ */
.tev-anim-temoignage__auteur { margin-top: 18px; font-size: 14px; line-height: 20px; font-weight: 600; }

/* --- Enjeux : liste qui s'ouvre au survol -------------------------------------
   Référence donnée par Lisa (16/09/2026) : le composant « expand on hover
   list » de Framer. Au repos, la ligne est MINIMALE — seulement son intitulé ;
   au survol elle se déroule et dévoile la description, la photo et la flèche,
   pendant que les autres lignes s'estompent. L'ouverture passe par
   `grid-template-rows: 0fr → 1fr`, seule façon d'animer une hauteur inconnue
   sans la figer en pixels. */
.tev-anim-enjeux { position: relative; background: var(--tev-blue); color: var(--tev-cream); padding-block: 104px; }
.tev-anim-enjeux__inner { position: relative; z-index: 2; }
.tev-anim-enjeux__title { max-width: 581px; margin-bottom: clamp(28px, 3.3vw, 48px); font-size: clamp(21px, 2.55vw, 36px); line-height: 1.1; color: var(--tev-cream); }
/* Sous-titre facultatif (page Événements) : le titre se resserre alors, et
   c'est le sous-titre qui ouvre l'espace avant la première ligne. */
.tev-anim-enjeux__title--lead { margin-bottom: 12px; }
.tev-anim-enjeux__lead {
	max-width: 640px; margin-bottom: clamp(28px, 3.3vw, 48px);
	font-size: 16px; line-height: 26px; color: var(--tev-cream); opacity: .78;
}
.tev-anim-enjeux__list { display: flex; flex-direction: column; }

.tev-enjeu { border-top: 1px solid rgba(251, 251, 251, .25); transition: opacity .4s var(--tev-ease); }
.tev-enjeu:last-child { border-bottom: 1px solid rgba(251, 251, 251, .25); }

.tev-enjeu__tete {
	width: 100%; text-align: left; background: none; border: 0; cursor: pointer;
	display: flex; align-items: center; justify-content: space-between; gap: 32px; padding: 26px 0;
}
.tev-enjeu__titre {
	font-family: var(--tev-font-title); font-size: clamp(16px, 1.45vw, 20px); line-height: 1.3;
	text-transform: uppercase; color: var(--tev-cream);
	transition: transform .45s var(--tev-ease);
}
.tev-enjeu__fleche {
	flex: 0 0 auto; display: inline-flex; color: var(--tev-orange);
	opacity: 0; transform: translateX(-14px);
	transition: opacity .4s var(--tev-ease), transform .45s var(--tev-ease);
}
.tev-enjeu__fleche svg { width: 22px; height: 19px; }

.tev-enjeu__reveal { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .55s var(--tev-ease); }
.tev-enjeu__reveal-inner { overflow: hidden; min-height: 0; }
.tev-enjeu__texte { opacity: 0; transition: opacity .45s var(--tev-ease) .12s; }
.tev-enjeu__texte { max-width: 560px; font-size: 15px; line-height: 23px; color: var(--tev-cream); }

/* La photo « ROULE » en arrivant (Lisa, 16/09/2026) : elle entre depuis la
   gauche en pivotant, puis se pose à plat. Le pivot se fait par le coin bas
   gauche — c'est ce point d'appui qui donne la sensation de roulement plutôt
   que d'un simple glissement. */
.tev-enjeu__photo {
	width: 100%; max-width: 420px; margin: 20px 0 30px;
	border-radius: var(--tev-radius-img); aspect-ratio: 16 / 9; object-fit: cover;
	opacity: 0;
	transform-origin: 0% 100%;
	transform: translate(-46px, 10px) rotate(-11deg);
	transition: opacity .35s var(--tev-ease) .1s,
	            transform .75s cubic-bezier(.18, .82, .25, 1) .1s;
}

/* Le repli ne vaut que là où le survol existe : sur un écran tactile, tout
   reste visible plutôt qu'inatteignable. */
@media (hover: hover) {
	.tev-anim-enjeux__list:hover .tev-enjeu:not(:hover) { opacity: .45; }
	.tev-enjeu:hover .tev-enjeu__reveal,
	.tev-enjeu:focus-within .tev-enjeu__reveal { grid-template-rows: 1fr; }
	.tev-enjeu:hover .tev-enjeu__texte,
	.tev-enjeu:focus-within .tev-enjeu__texte { opacity: 1; }
	.tev-enjeu:hover .tev-enjeu__photo,
	.tev-enjeu:focus-within .tev-enjeu__photo { opacity: 1; transform: translate(0, 0) rotate(0deg); }
	.tev-enjeu:hover .tev-enjeu__titre { transform: translateX(12px); }
	.tev-enjeu:hover .tev-enjeu__fleche { opacity: 1; transform: translateX(0); }
}
/* Intérieur de la ligne ouverte recalé sur la maquette le 23/09/2026
   (434:630, Frame 296 + Rectangle 69), écran large avec souris seulement :
   - intitulé à gauche, description À DROITE sur la même ligne, à 632 px du
     bord du conteneur (49,4 %), Inter 14/21, 467 px de large ;
   - la ligne ouverte fait 190 px : la description est centrée dans une
     réserve de 72 px au-dessus et au-dessous ;
   - la photo n'est PAS dans le flux : 423 × 260, bord orange de 3 px, rayon
     20, inclinée de 3,2°, elle flotte en haut à droite et chevauche le trait
     du dessus, 34 px au-dessus de la description (mesuré sur la maquette) ;
   - pas de flèche ni de décalage du titre, la maquette n'en montre pas.
   Le grain de la réserve est porté par `grid-template-rows`, déjà animé : la
   ligne s'ouvre en douceur, la photo arrive par-dessus. */
@media (hover: hover) and (min-width: 1025px) {
	.tev-enjeu { position: relative; display: grid; grid-template-columns: 49.4% minmax(0, 1fr); align-items: center; }
	.tev-enjeu__tete { grid-column: 1; grid-row: 1; }
	.tev-enjeu__reveal { grid-column: 2; grid-row: 1; }
	.tev-enjeu__reveal-inner { display: flex; align-items: center; }
	.tev-enjeu__texte {
		max-width: 467px; padding-block: 72px;
		font-size: 14px; line-height: 21px; font-weight: 600;
	}
	.tev-enjeu__fleche { display: none; }
	.tev-enjeu:hover .tev-enjeu__titre { transform: none; }
	.tev-enjeu__photo {
		/* Ancrée par le HAUT de la ligne, qui ne bouge pas pendant l'ouverture
		   (un `bottom` suivrait la hauteur qui s'anime) : `translate`, propriété
		   distincte de `transform`, remonte la photo de sa propre hauteur sans
		   toucher à l'animation de roulement. */
		position: absolute; right: 39px; top: 38px; translate: 0 -100%; z-index: 3;
		width: 423px; max-width: 33%; margin: 0; aspect-ratio: 423 / 260;
		border: 3px solid var(--tev-orange); border-radius: 20px;
		box-shadow: 0 4px 36px rgba(255, 255, 255, .10);
		pointer-events: none;
		transform-origin: 0% 100%;
		transform: translate(-46px, 10px) rotate(-8deg);
	}
	.tev-enjeu:hover .tev-enjeu__photo,
	.tev-enjeu:focus-within .tev-enjeu__photo { transform: rotate(3.2deg); }
}
/* Sans survol, la ligne s'ouvre au TAP : tout déplier d'office donnait une
   section de 2 068 px sur un téléphone (mesuré le 16/09/2026). */
@media (hover: none) {
	.tev-enjeu__fleche { opacity: .75; transform: rotate(90deg); }
	.tev-enjeu.is-ouvert .tev-enjeu__fleche { transform: rotate(-90deg); }
	.tev-enjeu.is-ouvert .tev-enjeu__reveal { grid-template-rows: 1fr; }
	.tev-enjeu.is-ouvert .tev-enjeu__texte,
	.tev-enjeu.is-ouvert .tev-enjeu__photo { opacity: 1; transform: none; }
	.tev-anim-enjeux__list .tev-enjeu { opacity: 1; }
}

/* --- « Vos événements prennent vie » : photos au curseur ----------------------
   Même principe que la section équipe de la page Agence : la section ne montre
   que son titre, les photos naissent sous le curseur et s'effacent (moteur dans
   animations.js). Le titre est orange 36/39, centré, et une frise à trois
   points ferme la section — relevés sur la maquette (y≈7964). */
.tev-anim-galerie {
	position: relative; overflow: hidden; background: var(--tev-tint);
	/* Davantage d'air au-dessus du titre : sur la maquette, le sillage de
	   photos occupe cette réserve (Lisa, 16/09/2026). */
	padding-block: 230px 90px; min-height: 68vh;
}
.tev-anim-galerie__inner { position: relative; z-index: 2; pointer-events: none; }
.tev-anim-galerie__title {
	max-width: 1057px; margin: 0 auto; text-align: center;
	font-size: clamp(21px, 2.55vw, 36px); line-height: 1.1; color: var(--tev-orange);
}

/* Une photo du sillage. */
.tev-anim-galerie__trace {
	position: absolute; width: 240px; height: auto; z-index: 1;
	border-radius: var(--tev-radius-img); pointer-events: none;
	opacity: 0; transform: translate(-50%, -50%) rotate(var(--r, 0deg)) scale(.84);
	transition: opacity .4s var(--tev-ease), transform .45s var(--tev-ease);
	box-shadow: 0 18px 40px rgba(10, 16, 50, .22);
}
.tev-anim-galerie__trace.is-on { opacity: 1; transform: translate(-50%, -50%) rotate(var(--r, 0deg)) scale(1); }

/* Frise de clôture : trait fin et trois points. Les points sont le composant
   .tev-hotspot de l'accueil ; celui du milieu porte `is-active`, donc son aura
   pulse toute seule (@keyframes tev-hotspot-aura, app.css). */
.tev-anim-galerie__frise {
	position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between;
	width: min(1040px, 82%); margin: 92px auto 0;
}
.tev-anim-galerie__rail {
	position: absolute; left: 0; right: 0; top: 50%; height: 1px;
	background: rgba(59, 85, 199, .16);
}

/* Repli tactile : la pile de photos s'affiche quand RIEN ne peut semer le
   sillage — pas de JavaScript, ou mouvement réduit. Sinon le sillage existe
   aussi au doigt (voir `is-trainee` juste dessous). */
.tev-anim-galerie__repli { display: none; }
@media (hover: none), (pointer: coarse) {
	.tev-anim-galerie { min-height: 0; padding-block: 90px 72px; }
	.tev-anim-galerie__repli {
		display: flex; flex-wrap: wrap; justify-content: center; gap: 16px;
		margin-top: 48px; pointer-events: auto;
	}
	.tev-anim-galerie__repli li { flex: 1 1 260px; max-width: 360px; border-radius: var(--tev-radius-img); overflow: hidden; }
	.tev-anim-galerie__repli img { width: 100%; height: auto; display: block; }

	/* Sillage au défilement (classe posée par animations.js quand il prend la
	   main) : la pile n'a plus lieu d'être, et la section retrouve la hauteur
	   qu'il faut au sillage pour se dérouler — sans elle, deux photos au plus
	   auraient le temps de se poser. Le contenu est centré, sinon le titre
	   resterait collé en haut d'un grand bloc vide.
	   ⚠️ 0-2-0 : cette règle l'emporte donc sur les paliers responsive de la
	   section (0-1-0), ce qui est bien l'intention ici — elle est bornée au
	   tactile par la media query. */
	.tev-anim-galerie.is-trainee {
		display: flex; flex-direction: column; justify-content: center;
		min-height: 92vh; padding-block: 96px 72px;
	}
	.tev-anim-galerie.is-trainee .tev-anim-galerie__repli { display: none; }
	/* Une photo de 240 px couvrirait les deux tiers d'un écran de 390. */
	.tev-anim-galerie.is-trainee .tev-anim-galerie__trace { width: min(150px, 38vw); }
}

/* --- Responsive ----------------------------------------------------------------
   Les TAILLES sont fluides (clamp() dans les règles de base) : elles s'adaptent
   en continu, sans palier. Il ne reste ici que ce qui relève vraiment de la
   DISPOSITION — ce qu'aucun clamp ne peut faire : passer de deux colonnes à
   une, empiler la bannière, etc. app.css règle déjà les marges latérales
   (48 px sous 1439, 32 px sous 1024, 20 px sous 640). */

/* --- portables et tablettes ---------------------------------------------- */
@media (max-width: 1280px) {
	/* La bannière RESTE en ligne (Lisa, 16/09/2026) : ce sont les proportions
	   qui s'ajustent, 44 % pour le texte et 52 % pour les photos, comme sur la
	   maquette (560 / 658). Seule la deuxième montagne de fond disparaît, faute
	   de place pour qu'elle se lise. */
	.tev-anim-hero__mont--2 { display: none; }
	.tev-fiches__list { gap: 44px 40px; }
	.tev-anim-galerie { min-height: 56vh; }
}

@media (max-width: 1024px) {
	/* Titre et filtres ne tiennent plus sur la même ligne. */
	.tev-fiches__head { flex-direction: column; align-items: flex-start; gap: 20px; margin-bottom: 40px; }
	.tev-fiches__filtres { justify-content: flex-start; }
	.tev-fiches__list { gap: 40px 28px; }
	.tev-fiche__cta { right: 18px; bottom: 18px; }
	.tev-anim-hero__ctas .tev-btn { padding: 11px 16px; font-size: 13px; gap: 10px; }

	.tev-enjeu__photo { max-width: 340px; }
	.tev-anim-galerie { min-height: 0; }
	.tev-anim-galerie__frise { width: 100%; }

	.tev-fiche-popup__grid { grid-template-columns: 1fr; gap: 28px; }
	.tev-fiche-popup__panel { padding: 44px 32px; }
}

/* --- grands mobiles ------------------------------------------------------- */
@media (max-width: 768px) {
	/* Le seul palier qui empile la bannière : en dessous, la ligne donnerait un
	   titre à deux mots et une photo sous 300 px. */
	.tev-anim-hero__inner { flex-direction: column; align-items: flex-start; min-height: 0; }
	.tev-anim-hero__texte { flex: 0 0 auto; max-width: 100%; }
	.tev-anim-hero__media { flex: 0 0 auto; width: 100%; }
	.tev-anim-hero__ctas { width: 100%; }

	/* Une seule colonne : le quinconce et l'inclinaison feraient déborder la
	   carte hors de la marge (le body est en overflow-x: clip, le débordement
	   serait coupé sans prévenir). */
	.tev-fiches__list { grid-template-columns: 1fr; gap: 32px; }
	.tev-fiches__list .tev-fiche:nth-child(even) { margin-top: 0; }
	.tev-fiche:nth-child(odd) .tev-fiche__plaque,
	.tev-fiche:nth-child(even) .tev-fiche__plaque { transform: none; }
	.tev-fiches__actions { margin-top: 48px; }

	/* Réserve de 40 px : inclinées de 8°, les cartes de derrière débordent
	   d'une vingtaine de pixels de chaque côté. */
	.tev-valeurs__list { width: min(454px, 100% - 40px); }
	.tev-valeur { padding: 48px 32px 40px; gap: 28px; }
	.tev-valeur__texte { font-size: 16px; line-height: 21px; }
	.tev-valeur__montagne { width: 96px; right: -4px; bottom: 2px; }

	.tev-enjeu__tete { padding-block: 20px; gap: 16px; }
	.tev-enjeu__photo { max-width: 100%; margin-bottom: 24px; }

	.tev-fiche-popup { padding: 12px; }
	.tev-fiche-popup__panel { padding: 32px 20px; max-height: 94vh; }
	.tev-fiche-popup__close { top: 12px; right: 12px; }

	/* Apparition plus serrée : au doigt on défile vite, et une carte ne doit
	   pas rester une demi-seconde en plaque de couleur vide. */
	.tev-fiche.js-anim.is-vue .tev-fiche__photo { transition-delay: .1s; }
	.tev-fiche.js-anim.is-vue .tev-fiche__body { transition-delay: .2s; }

	/* Rythme vertical resserré : le téléphone n'a pas la même respiration que
	   la maquette 1440. */
	.tev-fiches { padding-block: calc(56px + var(--tev-slant)) 56px; }
	.tev-valeurs { padding-block: 56px 64px; }
	.tev-anim-enjeux { padding-block: 56px; }
	.tev-anim-galerie { padding-block: 64px 56px; }
	.tev-anim-galerie__frise { margin-top: 44px; }

}

/* --- mobiles -------------------------------------------------------------- */
@media (max-width: 480px) {
	.tev-anim-hero__ctas { flex-direction: column; align-items: stretch; gap: 12px; }
	.tev-fiche__tags { gap: 8px; padding-inline: 12px; height: 40px; }
	.tev-fiche__tags .tev-pill { font-size: 11px; padding: 5px 8px; }
	.tev-fiche__cta { font-size: 12px; gap: 8px; }
	.tev-fiche__cta-rond { width: 34px; height: 34px; }
	.tev-fiche-popup__panel { padding: 26px 16px; }
	.tev-fiche-popup__apports { font-size: 13px; }
}

/* --- « Vos événements prennent vie » : composition petit écran -----------------
   Mobile et tablette (Thomas, 01/10/2026) : plus de sillage (animations.js
   s'arrête sous 1025 px et sur écran tactile). Les photos du repli sont posées
   AUTOUR du titre, de tailles et d'inclinaisons différentes, sans symétrie :
   deux au-dessus, deux en dessous, une petite qui déborde d'un bord.
   Les positions sont en % de la section, dont la hauteur suit la largeur
   (142vw) : la composition garde ses proportions de 360 à 1024 px.
   Sélecteur à attribut (0-2-0) et posé en FIN de feuille : il passe devant
   les paliers de la section et la réserve de la page Événements. */
@media (max-width: 1024px), (hover: none), (pointer: coarse) {
	.tev-anim-galerie[data-tev-trail] {
		display: flex; align-items: center; justify-content: center;
		height: clamp(560px, 142vw, 900px); min-height: 0; padding: 0;
	}
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__inner { position: static; }
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__title {
		position: relative; z-index: 2; max-width: 74%; margin: 0 auto;
	}
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli {
		display: block; margin: 0; padding: 0; list-style: none;
	}
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli li {
		position: absolute; z-index: 1; margin: 0; max-width: none;
		border-radius: var(--tev-radius-img); overflow: hidden;
		box-shadow: 0 14px 32px rgba(10, 16, 50, .18);
		transform: rotate(var(--r, 0deg));
	}
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli img {
		display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover;
	}
	/* Au-dessus du titre : une grande à gauche, une moyenne plus basse à droite. */
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli li:nth-child(1) { --r: -5deg; width: 42%; top: 5%;  left: 5%; }
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli li:nth-child(2) { --r: 4deg;  width: 31%; top: 13%; right: 7%; }
	/* En dessous : une petite décalée vers le centre, une grande à droite. */
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli li:nth-child(3) { --r: 6deg;  width: 27%; bottom: 13%; left: 9%; }
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli li:nth-child(4) { --r: -3deg; width: 44%; bottom: 4%;  right: 4%; }
	/* La cinquième, petite, mord le bord gauche entre le titre et le bas. */
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli li:nth-child(5) { --r: -8deg; width: 20%; bottom: 2%;  left: -3%; }
	.tev-anim-galerie[data-tev-trail] .tev-anim-galerie__repli li:nth-child(n+6) { display: none; }
}
