/*
Theme Name: XproElite
Theme URI: https://xproelite.be
Author: XproElite Sports Management
Description: Thème bloc sur mesure de XproElite Sports Management. Le design vit dans ce fichier et dans theme.json ; tout le contenu reste modifiable dans l'éditeur de blocs.
Version: 1.0.0
Requires at least: 6.6
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: xproelite
Tags: block-theme, full-site-editing, one-column, custom-colors
*/

/* ==========================================================================
   Registre relevé sur la référence : noir pur, blanc froid, un seul accent
   (le vert du logo), grotesque très grasse en capitales, bandes bord à bord.
   ========================================================================== */

:root {
  --noir: #000000;
  --blanc: #FCFCFC;
  --accent: #76F900;          /* vert fluo du logo, sur fond sombre */
  --accent-fonce: #348000;    /* même teinte, lisible sur fond clair (4,8:1) */
  --sur-accent: #000000;      /* texte posé sur le vert */
  --accent-texte: var(--accent);
  --anthracite: #1A1A1A;
  --gris: #ADADAD;
  --gris-sourd: #818181;

  --police-titre: 'Archivo', 'Arial Black', sans-serif;
  --police-texte: 'Inter', 'Helvetica Neue', Arial, sans-serif;

  --enveloppe: 1226px;
  --marge: max(24px, calc((100% - var(--enveloppe)) / 2));

  /* titres : tailles calibrées sur la hauteur de capitale de la référence à 1440 px */
  --t-hero: clamp(46px, 8.85vw, 127.5px);
  --t-section: clamp(38px, 6.04vw, 87px);
  --t-temoignages: clamp(34px, 4.27vw, 61.5px);
  --t-contact: clamp(28px, 3.5vw, 50px);
  --t-chiffre: clamp(56px, 6.25vw, 90px);
  --t-carte: clamp(30px, 3.6vw, 52px);

  /* pictogrammes (masques CSS : aucun SVG dans le contenu) */
  --ic-coeur: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21s-7.5-4.6-9.6-9.2C.9 8.6 2.9 4.5 6.7 4.5c2.2 0 3.6 1.2 4.3 2.4.7-1.2 2.1-2.4 4.3-2.4 3.8 0 5.8 4.1 4.3 7.3C19.5 16.4 12 21 12 21z'/%3E%3C/svg%3E");
  --ic-lecture: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E");
  --ic-gauche: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 5l-7 7 7 7'/%3E%3C/svg%3E");
  --ic-droite: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5l7 7-7 7'/%3E%3C/svg%3E");
  --ic-fleche: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
  --ic-telecharger: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v11M7 10l5 5 5-5M5 20h14'/%3E%3C/svg%3E");
  --ic-externe: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E");
  --ic-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  --ic-cv: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8zM14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E");
  --ic-photo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Ccircle cx='9' cy='10' r='2'/%3E%3Cpath d='M21 16l-5-5-8 8'/%3E%3C/svg%3E");
  --ic-video: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='6' width='13' height='12' rx='2'/%3E%3Cpath d='M16 10l5-3v10l-5-3'/%3E%3C/svg%3E");
}

/* --- Socle ---------------------------------------------------------------- */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--noir);
  color: var(--blanc);
  font-family: var(--police-texte);
  font-size: 14px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; height: auto; } /* height:auto obligatoire : l'attribut height des blocs image l'emporterait sur aspect-ratio */
h1, h2, h3, h4, h5, h6 { margin: 0; }
p { margin: 0; }
a { color: inherit; text-decoration: none; }

/* espacement automatique de Gutenberg : coupé dans theme.json (blockGap 0px),
   filet de sécurité ici à spécificité nulle — jamais en .wp-block-group > * */
:where(.wp-block-group) > :where(*), :where(.wp-block-buttons) { margin-block: 0; }
figure.wp-block-image, figure.wp-block-post-featured-image { margin: 0; }
.wp-block-image img { vertical-align: top; }

.enveloppe { width: min(var(--enveloppe), 100% - 48px); margin-inline: auto; }

/* --- Titres ------------------------------------------------------------- */

.titre {
  margin: 0;
  font-family: var(--police-titre);
  font-weight: 900;
  font-stretch: 90%;
  font-variation-settings: 'wdth' 90;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  line-height: 1.04;
  hyphens: none;
  text-wrap: balance;
}
/* l'accent d'un titre est un <em> nu (format italique natif, donc éditable) */
.titre em { font-style: normal; color: var(--accent-texte); }
.accent { color: var(--accent-texte); }
/* sur les sections claires, le vert fluo devient vert profond pour rester lisible */
.chiffres, .mission, .equipe, .valeurs, .service-clair, .parcours, .appel { --accent-texte: var(--accent-fonce); }
.centre { text-align: center; }

.titre-section { font-size: var(--t-section); line-height: 1.02; }
.titre-temoignages { font-size: var(--t-temoignages); line-height: 1; margin-top: 21px; }

/* --- Boutons ------------------------------------------------------------ */

.wp-block-buttons.boutons { display: flex; flex-wrap: wrap; gap: 10px; }
.wp-block-buttons.boutons-centre { justify-content: center; }
.wp-block-button .wp-block-button__link,
.wp-block-read-more.bouton-lire,
.wpcf7 .bouton-plein {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  padding: 0 34px;
  background: var(--accent);
  color: var(--sur-accent);
  font-family: var(--police-texte);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  border: 0;
  border-radius: 3px;
  cursor: pointer;
  transition: background .2s;
}
.wp-block-button .wp-block-button__link:hover,
.wp-block-read-more.bouton-lire:hover,
.wpcf7 .bouton-plein:hover { background: #A4FF4F; color: var(--sur-accent); }

/* --- Pilule ------------------------------------------------------------- */

.pilule {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 38px;
  padding: 0 20px 0 16px;
  background: var(--anthracite);
  border-radius: 999px;
  font-family: var(--police-titre);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #fff;
}
.pilule::before {
  content: '';
  width: 13px; height: 13px;
  flex: none;
  background: var(--accent);
  -webkit-mask: var(--ic-coeur) center / contain no-repeat;
  mask: var(--ic-coeur) center / contain no-repeat;
}
.pilule-centre { display: flex; width: max-content; margin-inline: auto; }
.pilule a { color: inherit; }

/* --- En-tête ------------------------------------------------------------ */

.entete { position: relative; z-index: 20; background: var(--noir); }
.entete-inner { display: flex; align-items: center; justify-content: space-between; height: 72px; }
.wp-block-site-logo.logo img { height: auto; }
.pied-marque .wp-block-site-logo.logo { margin: 0; }

.wp-block-navigation.nav { color: var(--gris); }
.wp-block-navigation.nav .wp-block-navigation__container { gap: 60px; }
.wp-block-navigation.nav .wp-block-navigation-item__content {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--gris);
  transition: color .2s;
}
.wp-block-navigation.nav .wp-block-navigation-item__content:hover { color: #fff; }
.wp-block-navigation.nav .actif > .wp-block-navigation-item__content,
.wp-block-navigation.nav .current-menu-item > .wp-block-navigation-item__content { color: var(--accent-texte); }
.wp-block-navigation.nav .wp-block-navigation__responsive-container-open { color: #fff; }
/* panneau mobile de core/navigation : le CSS du bloc est imprimé après cette feuille,
   d'où la qualification et le !important (seul usage justifié du thème) */
.wp-block-navigation.nav .wp-block-navigation__responsive-container.is-menu-open {
  background-color: var(--noir) !important;
  color: #fff !important;
  padding: 0 24px 24px;
}
/* menu mobile au registre de la maquette : liste sobre à gauche, filets fins */
.wp-block-navigation.nav .is-menu-open .wp-block-navigation__responsive-container-close { top: 24px; right: 0; color: #fff; }
.wp-block-navigation.nav .is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 80px; align-items: stretch; }
.wp-block-navigation.nav .is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container { align-items: stretch; gap: 0; width: 100%; }
.wp-block-navigation.nav .is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item { width: 100%; border-bottom: 1px solid #1A1A1A; }
.wp-block-navigation.nav .is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content { display: block; width: 100%; padding: 14px 0; font-size: 13px; font-weight: 500; color: var(--gris); }
.wp-block-navigation.nav .is-menu-open .wp-block-navigation__responsive-container-content .actif > .wp-block-navigation-item__content { color: var(--accent); }
/* choix de la langue (FR · EN · PT), ajouté en fin de menu principal ; la langue affichée est en vert */
.wp-block-navigation.nav .wp-block-navigation-item.langues { display: flex; align-items: center; gap: 4px; }
.wp-block-navigation.nav .langues .langue {
  padding: 4px 7px;
  border-radius: 3px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1;
  color: var(--gris);
  text-decoration: none;
  transition: color .2s, background-color .2s;
}
.wp-block-navigation.nav .langues .langue:hover { color: #fff; }
.wp-block-navigation.nav .langues .langue.actif { background: var(--accent); color: var(--sur-accent); }
.wp-block-navigation.nav .is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item.langues { flex-direction: row; justify-content: flex-start; gap: 8px; margin-left: 0; padding: 16px 0; border-bottom: 0; }
.wp-block-navigation.nav .is-menu-open .langues .langue { padding: 8px 12px; font-size: 13px; }

/* --- Hero --------------------------------------------------------------- */

.hero { position: relative; background: var(--noir); }
/* entre 901 et ~1190 px, le titre réduit juste assez pour laisser au moins 430 px au texte et aux deux
   boutons (mot le plus long : « CONSTRUIR » en portugais, 5,94 em) ; au-delà, taille inchangée */
@media (min-width: 901px) {
  .hero { --t-hero: clamp(46px, min(8.85vw, (100vw - 533px) / 5.94), 127.5px); }
}
.hero-grille {
  display: grid;
  grid-template-columns: 1fr minmax(0, 460px);
  column-gap: 40px;
  padding-top: clamp(64px, 9.72vw, 140px);
  position: relative;
  z-index: 2;
}
/* interligne 1 : la capitale commence à 0,145 em du haut de chaque ligne */
.titre-hero { font-size: var(--t-hero); line-height: 1; }
/* WordPress remet à zéro la marge du premier et du dernier enfant d'un groupe
   (:root :where(.is-layout-flow) > :last-child, spécificité 0,2,0) : les marges
   portées par un premier ou dernier enfant sont donc écrites parent > enfant. */
.hero-grille > .hero-cote {
  align-self: end;
  /* les boutons se posent sur la photo, 3 px sous son bord haut */
  margin-bottom: calc(var(--t-hero) * 1.0275 - 53px);
}
.hero-cote p { color: #C0C0C0; font-size: 14px; line-height: 1.6; max-width: 430px; }
.hero-cote strong { color: #fff; font-weight: 600; }
.hero-cote .boutons { margin-top: 30px; }

figure.hero-photo {
  position: relative;
  z-index: 1;
  overflow: hidden;
  /* la photo remonte sous la dernière ligne du titre */
  margin-top: calc(var(--t-hero) * -1.0275);
  /* bandeau au format de la photo (2560 × 768, demande du client) */
  aspect-ratio: 2560 / 768;
}
figure.hero-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }

/* --- À propos (accueil) ------------------------------------------------- */

.apropos { padding: 91px 0 98px; }
.apropos .titre-section { margin-top: 26px; }
.apropos-grille { display: grid; grid-template-columns: 648px 1fr; gap: 46px; margin-top: 64px; align-items: start; }
figure.apropos-photo { aspect-ratio: 648 / 437; overflow: hidden; border-radius: 2px; }
figure.apropos-photo img { width: 100%; height: 100%; object-fit: cover; }
.apropos-texte p { color: var(--gris); font-size: 13px; line-height: 1.75; max-width: 520px; }
.apropos-texte p + p { margin-top: 14px; }
.apropos-texte .boutons { margin-top: 26px; }

/* --- Pistes défilantes ---------------------------------------------------- */

.services-piste, .piste-cartes {
  position: relative;
  display: flex;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.services-piste::-webkit-scrollbar, .piste-cartes::-webkit-scrollbar { display: none; }

/* --- Services (accueil) --------------------------------------------------- */

.services { padding: 94px 0 70px; overflow: hidden; }
.services .titre-section { margin-top: 13px; }
.services-piste { justify-content: safe center; gap: 39px; margin-top: 84px; padding: 0 var(--marge) 8px; }
.carte-service { position: relative; flex: 0 0 371px; cursor: pointer; }
figure.carte-service-photo { position: relative; height: 358px; overflow: hidden; border-radius: 2px; }
figure.carte-service-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
figure.carte-service-photo::after { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, .28); }
.carte-service:hover figure.carte-service-photo img { transform: scale(1.04); }
.carte-service-titre {
  position: absolute;
  left: 0; right: 0; top: 179px;
  transform: translateY(-50%);
  z-index: 2;
  margin: 0;
  padding: 0 18px;
  font-family: var(--police-titre);
  font-weight: 900;
  font-stretch: 90%;
  font-variation-settings: 'wdth' 90;
  font-size: var(--t-carte);
  line-height: 1.06;
  letter-spacing: -0.01em;
  text-transform: uppercase;
  text-align: center;
  color: #fff;
}
.carte-service-legende { margin-top: 14px; }
.carte-service-legende p { font-size: 12px; color: var(--gris-sourd); line-height: 1.5; max-width: 340px; }
.carte-service-legende .carte-service-nom {
  margin-bottom: 4px;
  font-family: var(--police-titre);
  font-weight: 800;
  font-size: 15px;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--accent-texte);
}

/* --- Chiffres ------------------------------------------------------------- */

.chiffres { background: var(--blanc); color: var(--noir); border-top: 2px solid #E2E2E2; border-bottom: 2px solid #E2E2E2; }
.chiffres-grille { display: grid; grid-template-columns: repeat(3, 1fr); padding: 91px 0 90px; text-align: center; }
.chiffre-label { font-size: 10px; line-height: 1.7; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.chiffre-valeur {
  margin-top: 14px;
  font-family: var(--police-titre);
  font-weight: 900;
  font-stretch: 90%;
  font-variation-settings: 'wdth' 90;
  font-size: var(--t-chiffre);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--accent-texte);
}
.chiffres-4 { grid-template-columns: repeat(4, 1fr); padding-bottom: 44px; }
.chiffres-compact { grid-template-columns: repeat(4, 1fr); column-gap: 16px; }
.chiffres-compact .chiffre-valeur { font-size: clamp(40px, 4.4vw, 64px); white-space: nowrap; }
.chiffres-legende { padding-bottom: 60px; text-align: center; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: #8A8A8A; }

/* --- Notre mission (accueil) ---------------------------------------------- */

.mission { background: var(--blanc); color: var(--noir); padding: 87px 0 91px; }
.mission-intro { width: min(640px, 100% - 48px); margin-inline: auto; }
.mission-intro .titre { white-space: nowrap; }
.mission-intro p { margin-top: 44px; font-size: 13px; line-height: 2.05; color: #111; max-width: 540px; }
.mission-intro .boutons { margin-top: 30px; }
.mission-photos { display: grid; grid-template-columns: 1fr 1fr; gap: 46px; padding: 0 52px; margin-top: 49px; }
.mission-photo { position: relative; aspect-ratio: 645 / 437; overflow: hidden; border-radius: 2px; }
figure.mission-photo img { width: 100%; height: 100%; object-fit: cover; }
figure.mission-photo-image { position: absolute; inset: 0; }
figure.mission-photo-image img { width: 100%; height: 100%; object-fit: cover; }
.mission-photo-marque::after {
  content: 'XPROELITE';
  position: absolute;
  left: 50%; top: 46%;
  z-index: 1;
  transform: translate(-50%, -50%);
  font-family: var(--police-titre);
  font-weight: 500;
  font-stretch: 112%;
  font-variation-settings: 'wdth' 112;
  font-size: clamp(40px, 6.3vw, 92px);
  letter-spacing: -0.01em;
  line-height: 1;
  white-space: nowrap;
  color: rgba(255, 255, 255, .42);
  pointer-events: none;
}
.mission-badge { position: absolute; left: 16px; bottom: 55px; z-index: 2; }
.mission-badge a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 46px;
  padding: 0 22px 0 16px;
  background: var(--accent);
  color: var(--sur-accent);
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  transition: background .2s;
}
.mission-badge a::before {
  content: '';
  width: 18px; height: 18px;
  background: var(--sur-accent);
  -webkit-mask: var(--ic-lecture) center / contain no-repeat;
  mask: var(--ic-lecture) center / contain no-repeat;
}
.mission-badge a:hover { background: #A4FF4F; }

/* galeries photo (accueil, À propos) : mosaïque « bento » sur le bloc Galerie natif.
   Le CSS du bloc Galerie vise les images avec :not(#individual-image) (poids d'un id) :
   les règles qui le contredisent reprennent ce même :not() pour passer devant. */
body .galerie-mosaique.wp-block-gallery {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: clamp(150px, 15.5vw, 230px);
  grid-auto-flow: dense;
  gap: 12px;
  width: min(100% - 104px, 1440px);
  margin: 49px auto 0;
  padding: 0;
}
.mission-page .galerie-mosaique.wp-block-gallery { margin-top: 72px; }
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) {
  position: relative;
  display: block;
  width: auto;
  height: auto;
  margin: 0;
  overflow: hidden;
  border-radius: 2px;
  background: var(--anthracite);
}
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .7s cubic-bezier(.2, .7, .2, 1);
}
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image):hover img { transform: scale(1.05); }
/* placement de la mosaïque : grande, petite, haute, petite / petite, panorama */
.galerie-mosaique > figure.wp-block-image:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.galerie-mosaique > figure.wp-block-image:nth-child(3) { grid-row: span 2; }
.galerie-mosaique > figure.wp-block-image:nth-child(6) { grid-column: span 3; }
/* cadrage d'une photo recadrée : classe « cadrage-haut » ou « cadrage-bas » sur l'image (Avancé > Classes CSS) */
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image.cadrage-haut:not(#individual-image) img { object-position: 50% 28%; }
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image.cadrage-bas:not(#individual-image) img { object-position: 50% 72%; }
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image.cadrage-tete:not(#individual-image) img { object-position: 50% 6%; }
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image.cadrage-gauche:not(#individual-image) img { object-position: 22% 50%; }
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image.cadrage-droite:not(#individual-image) img { object-position: 78% 50%; }
/* variante « verticale » (fiches joueurs) : une grande photo puis des photos hautes, faite pour les portraits */
body .galerie-mosaique.galerie-verticale.wp-block-gallery { width: 100%; margin: 20px 0 0; grid-auto-rows: clamp(120px, 12.5vw, 190px); }
.galerie-mosaique.galerie-verticale > figure.wp-block-image:nth-child(n+2) { grid-column: auto; grid-row: span 2; }
/* la grille reste pleine quel que soit le nombre de photos (4, 5 ou 6) : les dernières s'élargissent */
.galerie-mosaique.galerie-verticale > figure.wp-block-image:nth-child(4):last-child { grid-column: 1 / -1; }
.galerie-mosaique.galerie-verticale > figure.wp-block-image:nth-child(4):nth-last-child(2),
.galerie-mosaique.galerie-verticale > figure.wp-block-image:nth-child(5):last-child,
.galerie-mosaique.galerie-verticale > figure.wp-block-image:nth-child(6):last-child { grid-column: span 2; }
/* variante « huit » (accueil) : grande photo et deux hautes, une rangée de quatre, puis un panorama sur toute la largeur (rangée plus haute) */
body .galerie-mosaique.galerie-huit.wp-block-gallery { grid-template-rows: repeat(3, clamp(150px, 15.5vw, 230px)) clamp(190px, 20vw, 300px); }
.galerie-mosaique.galerie-huit > figure.wp-block-image:nth-child(2) { grid-row: span 2; }
.galerie-mosaique.galerie-huit > figure.wp-block-image:nth-child(6) { grid-column: auto; }
.galerie-mosaique.galerie-huit > figure.wp-block-image:nth-child(8) { grid-column: 1 / -1; }
/* variante « portraits » : uniquement des photos hautes, quatre par rangée */
body .galerie-mosaique.galerie-portraits.wp-block-gallery { width: 100%; margin: 20px 0 0; grid-auto-rows: clamp(120px, 12.5vw, 190px); }
.galerie-mosaique.galerie-portraits > figure.wp-block-image:nth-child(n) { grid-column: auto; grid-row: span 2; }
/* liseré vert au survol, comme les cartes joueurs ; le voile flou natif est retiré */
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image)::before { display: none; }
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image)::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  box-shadow: inset 0 0 0 0 var(--accent);
  transition: box-shadow .3s ease;
  pointer-events: none;
}
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image):hover::after { box-shadow: inset 0 0 0 3px var(--accent); }
/* légende : pastille sombre à point vert, révélée au survol */
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) .wp-element-caption {
  position: absolute;
  left: 14px; bottom: 14px; right: auto; top: auto;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: auto;
  height: 32px;
  max-height: none;
  margin: 0;
  padding: 0 14px 0 12px;
  overflow: visible;
  background: rgba(0, 0, 0, .72);
  border-radius: 999px;
  color: #fff;
  font-family: var(--police-titre);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .2em;
  line-height: 1;
  text-align: left;
  text-shadow: none;
  text-transform: uppercase;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .35s ease, transform .35s ease;
  pointer-events: none;
}
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) .wp-element-caption::before {
  content: '';
  width: 7px; height: 7px;
  flex: none;
  border-radius: 50%;
  background: var(--accent);
}
body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image):hover .wp-element-caption { opacity: 1; transform: none; }
@media (hover: none) {
  body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) .wp-element-caption { opacity: 1; transform: none; }
}
/* apparition en cascade (classe posée par le script, jamais sans lui) */
.galerie-mosaique.galerie-animee > figure.wp-block-image { opacity: 0; transform: translateY(28px); transition: opacity .7s ease, transform .7s cubic-bezier(.2, .7, .2, 1); }
.galerie-mosaique.galerie-animee.est-visible > figure.wp-block-image { opacity: 1; transform: none; }
.galerie-mosaique.galerie-animee > figure.wp-block-image:nth-child(2) { transition-delay: .08s; }
.galerie-mosaique.galerie-animee > figure.wp-block-image:nth-child(3) { transition-delay: .16s; }
.galerie-mosaique.galerie-animee > figure.wp-block-image:nth-child(4) { transition-delay: .24s; }
.galerie-mosaique.galerie-animee > figure.wp-block-image:nth-child(5) { transition-delay: .32s; }
.galerie-mosaique.galerie-animee > figure.wp-block-image:nth-child(n+6) { transition-delay: .4s; }

/* --- Vitrine des cartes joueurs ------------------------------------------- */

.vitrine { padding: 95px 0 88px; overflow: hidden; }
.vitrine-tete { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }
.vitrine-actions { display: flex; align-items: center; gap: 10px; }
.vitrine-actions .wp-block-buttons { margin-left: 8px; }

.fleche {
  position: relative;
  width: 50px; height: 50px;
  flex: none;
  overflow: hidden;
  background: var(--anthracite);
  border-radius: 50%;
  font-size: 0;
  color: transparent;
  cursor: pointer;
  transition: background .2s;
  user-select: none;
}
.fleche::before {
  content: '';
  position: absolute;
  left: 15px; top: 15px;
  width: 20px; height: 20px;
  background: #fff;
  -webkit-mask: var(--ic-droite) center / contain no-repeat;
  mask: var(--ic-droite) center / contain no-repeat;
}
.fleche-prec::before { -webkit-mask-image: var(--ic-gauche); mask-image: var(--ic-gauche); }
.fleche:hover, .fleche:focus-visible { background: var(--accent); }
.fleche:hover::before, .fleche:focus-visible::before { background: var(--sur-accent); }

.piste-cartes { gap: 20px; margin-top: 49px; padding: 12px var(--marge) 20px; scroll-snap-type: x proximity; scroll-padding-inline: var(--marge); }
.piste-cartes > .carte-joueur { flex: 0 0 358px; scroll-snap-align: center; }
/* accueil, sur ordinateur : pas d'aimantation, pour que la rangée reste centrée (l'aimantation la recalerait sur une carte) */
.piste-centree { scroll-snap-type: none; }
.piste-alignee { width: min(var(--enveloppe), 100% - 48px); margin-inline: auto; padding-inline: 0; scroll-padding-inline: 0; scroll-snap-type: x mandatory; }
.piste-alignee > .carte-joueur { flex-basis: calc((100% - 3 * 20px) / 4); scroll-snap-align: start; }

/* --- Carte joueur (format Panini) — motif synchronisé ------------------- */

.carte-joueur {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 7px 7px 0;
  background: #fff;
  color: var(--noir);
  border-radius: 12px;
  cursor: pointer;
  transition: box-shadow .3s ease;
}
.carte-joueur:hover { box-shadow: 0 0 0 3px var(--accent); }
.carte-joueur-cadre { position: relative; aspect-ratio: 344 / 392; overflow: hidden; border-radius: 7px; background: var(--anthracite); }
figure.carte-joueur-photo { position: absolute; inset: 0; }
figure.carte-joueur-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; transition: transform .6s ease; }
.carte-joueur:hover figure.carte-joueur-photo img { transform: scale(1.04); }
.carte-joueur-cadre::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, .9) 100%);
  pointer-events: none;
}
.carte-joueur-numero {
  position: absolute; z-index: 2;
  left: 16px; top: 12px;
  font-family: var(--police-titre);
  font-weight: 900;
  font-stretch: 90%;
  font-variation-settings: 'wdth' 90;
  font-size: 56px;
  line-height: .9;
  letter-spacing: -0.03em;
  color: #fff;
}
.carte-joueur-poste {
  position: absolute; z-index: 2;
  left: 18px; top: 70px;
  padding: 4px 8px 3px;
  background: var(--accent);
  color: var(--sur-accent);
  border-radius: 2px;
  font-family: var(--police-titre);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .14em;
}
.carte-joueur-pays {
  position: absolute; z-index: 2;
  right: 14px; top: 16px;
  display: flex; flex-direction: column; align-items: center; gap: 5px;
  font-size: 10px; font-weight: 700; letter-spacing: .1em;
  color: #fff;
}
.carte-joueur-pays::before {
  content: '';
  width: 32px; height: 22px;
  border-radius: 2px;
  box-shadow: 0 0 0 1.5px #fff;
  background: center / 100% 100% no-repeat;
}
.pays-be::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2' preserveAspectRatio='none'%3E%3Crect width='1' height='2' fill='%23000'/%3E%3Crect x='1' width='1' height='2' fill='%23FDDA24'/%3E%3Crect x='2' width='1' height='2' fill='%23EF3340'/%3E%3C/svg%3E"); }
.pays-fr::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2' preserveAspectRatio='none'%3E%3Crect width='1' height='2' fill='%230055A4'/%3E%3Crect x='1' width='1' height='2' fill='%23fff'/%3E%3Crect x='2' width='1' height='2' fill='%23EF4135'/%3E%3C/svg%3E"); }
.pays-sn::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2' preserveAspectRatio='none'%3E%3Crect width='1' height='2' fill='%2300853F'/%3E%3Crect x='1' width='1' height='2' fill='%23FDEF42'/%3E%3Crect x='2' width='1' height='2' fill='%23E31B23'/%3E%3Cpolygon fill='%2300853F' points='1.5,0.68 1.57,0.9 1.8,0.9 1.61,1.03 1.68,1.25 1.5,1.11 1.32,1.25 1.39,1.03 1.2,0.9 1.43,0.9'/%3E%3C/svg%3E"); }
.pays-bf::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2' preserveAspectRatio='none'%3E%3Crect width='3' height='1' fill='%23EF2B2D'/%3E%3Crect y='1' width='3' height='1' fill='%23009E49'/%3E%3Cpolygon fill='%23FCD116' points='1.5,0.7 1.57,0.92 1.8,0.92 1.61,1.05 1.68,1.27 1.5,1.13 1.32,1.27 1.39,1.05 1.2,0.92 1.43,0.92'/%3E%3C/svg%3E"); }
.pays-pt::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2' preserveAspectRatio='none'%3E%3Crect width='1.2' height='2' fill='%23046A38'/%3E%3Crect x='1.2' width='1.8' height='2' fill='%23DA291C'/%3E%3Ccircle cx='1.2' cy='1' r='0.36' fill='%23FFE900'/%3E%3Ccircle cx='1.2' cy='1' r='0.22' fill='%23DA291C'/%3E%3C/svg%3E"); }
.pays-br::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 20'%3E%3Crect width='30' height='20' fill='%23009C3B'/%3E%3Cpolygon fill='%23FFDF00' points='15,2.2 27.6,10 15,17.8 2.4,10'/%3E%3Ccircle cx='15' cy='10' r='4.6' fill='%23002776'/%3E%3C/svg%3E"); }
.pays-ci::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2' preserveAspectRatio='none'%3E%3Crect width='1' height='2' fill='%23F77F00'/%3E%3Crect x='1' width='1' height='2' fill='%23fff'/%3E%3Crect x='2' width='1' height='2' fill='%23009E60'/%3E%3C/svg%3E"); }
.pays-tn::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 20'%3E%3Crect width='30' height='20' fill='%23E70013'/%3E%3Ccircle cx='15' cy='10' r='5' fill='%23fff'/%3E%3Ccircle cx='15' cy='10' r='3.75' fill='%23E70013'/%3E%3Ccircle cx='15.95' cy='10' r='3' fill='%23fff'/%3E%3Cpolygon fill='%23E70013' points='16.2,8.1 16.63,9.41 18.01,9.41 16.89,10.23 17.32,11.54 16.2,10.73 15.08,11.54 15.51,10.23 14.39,9.41 15.77,9.41'/%3E%3C/svg%3E"); }
.pays-dz::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 20'%3E%3Crect width='15' height='20' fill='%23006233'/%3E%3Crect x='15' width='15' height='20' fill='%23fff'/%3E%3Cmask id='c'%3E%3Crect width='30' height='20' fill='%23fff'/%3E%3Ccircle cx='16.25' cy='10' r='4' fill='%23000'/%3E%3C/mask%3E%3Ccircle cx='15' cy='10' r='5' fill='%23D21034' mask='url(%23c)'/%3E%3Cpolygon fill='%23D21034' points='14.7,10 16.36,9.46 16.36,7.72 17.38,9.13 19.04,8.59 18.02,10 19.04,11.41 17.38,10.87 16.36,12.28 16.36,10.54'/%3E%3C/svg%3E"); }
.carte-joueur-nom { position: absolute; z-index: 2; left: 18px; right: 18px; bottom: 16px; color: #fff; }
.carte-joueur-nom > .carte-joueur-prenom { margin-bottom: 4px; font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.carte-joueur-famille {
  font-family: var(--police-titre);
  font-weight: 900;
  font-stretch: 90%;
  font-variation-settings: 'wdth' 90;
  font-size: 34px;
  line-height: .95;
  letter-spacing: -0.01em;
  text-transform: uppercase;
  color: #fff;
}
.carte-joueur-famille a { color: inherit; }
.carte-joueur-bande { display: flex; align-items: center; gap: 10px; height: 54px; padding: 0 4px 0 6px; }
figure.carte-joueur-logo { flex: none; }
figure.carte-joueur-logo img { height: 24px; width: auto; filter: brightness(0); }
.carte-joueur-infos { flex: 1; text-align: right; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #333; }
.carte-joueur-cat {
  padding: 6px 9px 5px;
  background: var(--noir);
  color: #fff;
  border-radius: 2px;
  font-family: var(--police-titre);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.carte-espoir .carte-joueur-cat { background: var(--accent); color: var(--sur-accent); }

/* grande carte : la même carte, posée dans la fiche du joueur */
.fiche-carte .carte-joueur { padding: 10px 10px 0; border-radius: 14px; cursor: default; }
.fiche-carte .carte-joueur:hover { box-shadow: none; }
.fiche-carte .carte-joueur:hover figure.carte-joueur-photo img { transform: none; }
.fiche-carte .carte-joueur-cadre { border-radius: 8px; }
.fiche-carte .carte-joueur-numero { left: 22px; top: 18px; font-size: 84px; }
.fiche-carte .carte-joueur-poste { left: 24px; top: 104px; font-size: 12px; padding: 5px 10px 4px; }
.fiche-carte .carte-joueur-pays { right: 20px; top: 22px; font-size: 12px; }
.fiche-carte .carte-joueur-pays::before { width: 42px; height: 28px; }
.fiche-carte .carte-joueur-nom { left: 24px; right: 24px; bottom: 22px; }
.fiche-carte .carte-joueur-prenom { font-size: 15px; }
.fiche-carte .carte-joueur-famille { font-size: 50px; }
.fiche-carte .carte-joueur-bande { height: 68px; padding: 0 6px 0 8px; }
.fiche-carte figure.carte-joueur-logo img { height: 30px; }
.fiche-carte .carte-joueur-infos { font-size: 13px; }
.fiche-carte .carte-joueur-cat { font-size: 12px; padding: 7px 11px 6px; }

/* --- Contact : profil joueur ---------------------------------------------- */

.contact { position: relative; padding: 94px 24px 97px; overflow: hidden; }
figure.contact-fond { position: absolute; inset: 0; z-index: 0; }
/* le terrain est au centre exact de l'image : centré, il tombe pile derrière le formulaire (lui-même centré dans la section) */
figure.contact-fond img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.contact::after {
  content: 'XPROELITE';
  position: absolute;
  left: 50%; bottom: -0.17em;
  transform: translateX(-50%);
  z-index: 1;
  font-family: var(--police-titre);
  font-weight: 500;
  font-stretch: 112%;
  font-variation-settings: 'wdth' 112;
  font-size: 14.2vw;
  line-height: 1;
  letter-spacing: -0.01em;
  white-space: nowrap;
  color: transparent;
  background: linear-gradient(180deg, rgba(255, 255, 255, .78) 0%, rgba(255, 255, 255, .5) 55%, rgba(255, 255, 255, .22) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  pointer-events: none;
}
.contact-carte {
  position: relative;
  z-index: 2;
  width: min(600px, 100%);
  margin: 0 auto;
  padding: 36px 40px 30px;
  background: var(--noir);
  border-radius: 3px;
  display: grid;
  gap: 8px;
}
.titre-contact { font-size: var(--t-contact); line-height: 1.02; text-align: center; }
.contact-intro { margin: 10px auto 16px; max-width: 440px; text-align: center; font-size: 12.5px; line-height: 1.6; color: var(--gris); }

/* Contact Form 7 aux dimensions de la maquette */
.contact-carte .wpcf7 form { display: grid; gap: 8px; margin: 0; }
.contact-carte .wpcf7-form-control-wrap { display: block; width: 100%; }
.champs-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.wpcf7 .champ, .wpcf7 div.champ {
  display: block;
  width: 100%;
  height: 55px;
  padding: 0 16px;
  background: var(--anthracite);
  border: 0;
  border-radius: 2px;
  color: #fff;
  font-family: var(--police-texte);
  font-size: 12px;
  outline: none;
}
.wpcf7 .champ::placeholder { color: #8C8C8C; }
.wpcf7 .champ:focus, .wpcf7 .champ:focus-within { box-shadow: inset 0 0 0 1px #444; }
.wpcf7 .champ-tel { display: flex; align-items: center; gap: 12px; }
.champ-tel-pays { display: inline-flex; align-items: center; gap: 6px; flex: none; color: #fff; font-size: 12px; }
.champ-tel-pays::before {
  content: '';
  width: 18px; height: 12px;
  border-radius: 2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2' preserveAspectRatio='none'%3E%3Crect width='1' height='2' fill='%23000'/%3E%3Crect x='1' width='1' height='2' fill='%23FDDA24'/%3E%3Crect x='2' width='1' height='2' fill='%23EF3340'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
.champ-tel-pays::after {
  content: '';
  width: 14px; height: 14px;
  background: #fff;
  -webkit-mask: var(--ic-chevron) center / contain no-repeat;
  mask: var(--ic-chevron) center / contain no-repeat;
}
.wpcf7 .champ-tel .wpcf7-form-control-wrap { flex: 1; min-width: 0; height: 100%; }
.wpcf7 .champ-tel input { width: 100%; height: 100%; padding: 0; background: transparent; border: 0; color: #fff; font: inherit; outline: none; }
.wpcf7 .champ-tel input::placeholder { color: #8C8C8C; }
.wpcf7 .champ-select { position: relative; padding: 0; }
.wpcf7 .champ-select::after {
  content: '';
  position: absolute;
  right: 16px; top: 50%;
  width: 14px; height: 14px;
  transform: translateY(-50%);
  background: #fff;
  -webkit-mask: var(--ic-chevron) center / contain no-repeat;
  mask: var(--ic-chevron) center / contain no-repeat;
  pointer-events: none;
}
.wpcf7 .champ-select .wpcf7-form-control-wrap { height: 100%; }
.wpcf7 .champ-select select {
  width: 100%; height: 100%;
  padding: 0 44px 0 16px;
  background: transparent;
  border: 0;
  color: #8C8C8C;
  font: inherit;
  appearance: none;
  outline: none;
  cursor: pointer;
}
.wpcf7 .champ-select select option { color: #000; }
.champs-fichiers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.wpcf7 .champ-fichier {
  position: relative;
  height: 84px;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px;
  padding: 0 10px;
  background: var(--anthracite);
  border: 1px dashed #3A3A3A;
  cursor: pointer;
  transition: border-color .2s;
}
.wpcf7 .champ-fichier::before {
  content: '';
  width: 22px; height: 22px;
  background: #fff;
  -webkit-mask: var(--ic-cv) center / contain no-repeat;
  mask: var(--ic-cv) center / contain no-repeat;
}
.wpcf7 .champ-photo::before { -webkit-mask-image: var(--ic-photo); mask-image: var(--ic-photo); }
.wpcf7 .champ-video::before { -webkit-mask-image: var(--ic-video); mask-image: var(--ic-video); }
.wpcf7 .champ-fichier:hover, .wpcf7 .champ-fichier.rempli { border-color: var(--accent); }
.wpcf7 .champ-fichier .wpcf7-form-control-wrap { position: static; height: 0; }
.wpcf7 .champ-fichier input[type="file"] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.champ-fichier-texte { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11.5px; color: #BDBDBD; }
.champ-fichier.rempli .champ-fichier-texte { color: #fff; }
.wpcf7 textarea.champ-message { height: 120px; padding: 16px; resize: vertical; line-height: 1.5; }
.wpcf7 .bouton-plein { width: 100%; height: 56px; margin-top: 2px; }
.wpcf7 .wpcf7-spinner { position: absolute; margin: 0; right: 16px; }
.wpcf7 .wpcf7-not-valid-tip { margin-top: 4px; font-size: 11px; color: #fff; opacity: .75; }
.wpcf7 form .wpcf7-response-output { margin: 8px 0 0; padding: 12px 16px; border: 1px solid var(--accent); border-radius: 2px; font-size: 12px; color: #fff; }

/* --- Pages intérieures : tête de page ------------------------------------- */

.page-tete { padding: clamp(56px, 7vw, 100px) 0 84px; }
.page-tete-grille { display: grid; grid-template-columns: 1fr 460px; column-gap: 40px; align-items: end; }
.titre-page { font-size: var(--t-hero); line-height: 1; margin-top: 26px; }
.page-tete-texte p { color: #C0C0C0; font-size: 14px; line-height: 1.6; max-width: 430px; }
.page-tete-texte strong { color: #fff; font-weight: 600; }
.page-tete-boutons { margin-top: 28px; }
.page-404 .page-404-texte { margin-top: 28px; max-width: 520px; color: #C0C0C0; }
.page-404 .boutons { margin-top: 30px; }

figure.bande-photo { height: clamp(260px, 33vw, 480px); overflow: hidden; }
figure.bande-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; }
/* bandeau vidéo (À propos) : même emprise que le bandeau photo, lecture muette en boucle */
figure.wp-block-video.bande-video { height: clamp(260px, 33vw, 480px); margin: 0; overflow: hidden; background: #000; }
figure.wp-block-video.bande-video video { display: block; width: 100%; height: 100%; object-fit: cover; }

/* galerie « histoire » sous la fusion : photos d'archives en noir et blanc */
.fusion .galerie-intro { max-width: 640px; margin: 72px auto 0; text-align: center; font-size: 11px; font-weight: 600; letter-spacing: .14em; line-height: 1.7; text-transform: uppercase; color: var(--gris); }
.fusion .galerie-intro strong { font-family: var(--police-titre); font-weight: 900; color: var(--accent-texte); }
.fusion .galerie-mosaique.galerie-verticale.wp-block-gallery { margin-top: 24px; }
body .galerie-histoire.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) img { filter: grayscale(1) contrast(1.06); }

/* filtres : pastilles (paragraphes ou liens de navigation) */
.filtres { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
/* .filtres .filtre : doit l'emporter sur « .page-tete-texte p » qui contient les filtres */
.filtres .filtre,
.filtres-blog .wp-block-navigation-item__content {
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding: 0 16px;
  background: var(--anthracite);
  color: #fff;
  border-radius: 999px;
  font-family: var(--police-titre);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .18em;
  line-height: 1.7;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .2s;
}
.filtre a { color: inherit; }
.filtre em { margin-left: 6px; font-style: normal; opacity: .55; }
.filtre:hover, .filtres-blog .wp-block-navigation-item__content:hover { background: #2A2A2A; }
.filtre.actif,
.filtres-blog .actif > .wp-block-navigation-item__content,
.filtres-blog .current-menu-item > .wp-block-navigation-item__content { background: var(--accent); color: var(--sur-accent); }
.wp-block-navigation.filtres-blog .wp-block-navigation__container { gap: 8px; }

/* --- Page « Nos joueurs » -------------------------------------------------- */

.effectif { padding: 20px 0 120px; }
.effectif-groupe + .effectif-groupe { margin-top: 110px; }
/* le script pose voir-pro / voir-espoir sur la section selon le filtre choisi */
.effectif.voir-pro .groupe-espoir,
.effectif.voir-espoir .groupe-pro { display: none; }
.effectif.voir-espoir .groupe-espoir { margin-top: 0; }
.filtres-joueurs .filtre { user-select: none; }
.effectif-titre { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 40px; padding-bottom: 22px; border-bottom: 1px solid #262626; }
.effectif-titre p { font-size: 13px; color: var(--gris-sourd); }
.titre-groupe { font-size: var(--t-temoignages); line-height: 1; }
.grille-cartes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }

.appel { background: var(--blanc); color: var(--noir); padding: 100px 0; text-align: center; }
.appel p { max-width: 520px; margin: 28px auto 0; font-size: 14px; color: #222; }
.appel .boutons { margin-top: 30px; }

/* --- Fiche joueur ---------------------------------------------------------- */

.fiche { padding: 36px 0 110px; }
.ariane { margin-bottom: 40px; font-size: 12px; color: var(--gris-sourd); }
.ariane a { color: #fff; transition: color .2s; }
.ariane a:hover { color: var(--accent-texte); }
.fiche-grille { display: grid; grid-template-columns: 440px 1fr; gap: 80px; align-items: start; }
.titre-fiche { font-size: var(--t-section); line-height: 1.02; margin-top: 26px; }
.fiche-sous-titre { margin-top: 18px; font-family: var(--police-titre); font-size: 13px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.fiche-bio { margin-top: 22px; max-width: 600px; color: var(--gris); font-size: 14px; line-height: 1.75; }
.fiche-infos { display: grid; grid-template-columns: 1fr 1fr; column-gap: 40px; margin: 34px 0 0; border-top: 1px solid #262626; }
.fiche-info { display: flex; justify-content: space-between; gap: 16px; padding: 13px 0; border-bottom: 1px solid #262626; }
.fiche-info-label { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--gris-sourd); }
.fiche-info-valeur { font-size: 13px; font-weight: 600; text-align: right; }
.fiche-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; margin-top: 34px; }
.lien-cv a {
  display: inline-flex; align-items: center; gap: 10px;
  padding-bottom: 3px;
  font-size: 13px; font-weight: 500;
  border-bottom: 1px solid rgba(255, 255, 255, .35);
  transition: border-color .2s;
}
.lien-cv a::before {
  content: '';
  width: 18px; height: 18px;
  background: #fff;
  -webkit-mask: var(--ic-telecharger) center / contain no-repeat;
  mask: var(--ic-telecharger) center / contain no-repeat;
}
.lien-cv a:hover { border-color: var(--accent-texte); }
/* badge Transfermarkt (s'ouvre dans un nouvel onglet) */
.lien-transfermarkt a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 50px;
  padding: 0 16px 0 10px;
  background: #00193F;
  color: #fff;
  border-radius: 3px;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.01em;
  text-transform: lowercase;
  transition: box-shadow .2s, background .2s;
}
.lien-transfermarkt a::before {
  content: 'tm';
  display: grid;
  place-items: center;
  width: 30px; height: 30px;
  background: #fff;
  color: #00193F;
  border-radius: 2px;
  font-family: var(--police-titre);
  font-size: 14px;
  font-weight: 900;
  letter-spacing: -0.03em;
}
.lien-transfermarkt a::after {
  content: '';
  width: 14px; height: 14px;
  background: currentColor;
  opacity: .7;
  -webkit-mask: var(--ic-externe) center / contain no-repeat;
  mask: var(--ic-externe) center / contain no-repeat;
}
.lien-transfermarkt a:hover, .lien-transfermarkt a:focus-visible { background: #0B2B5E; box-shadow: 0 0 0 2px var(--accent); }

.media { padding: 95px 0 100px; }
figure.video { position: relative; margin-top: 49px; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 12px; background: var(--anthracite); }
figure.video img { width: 100%; height: 100%; object-fit: cover; }
figure.video::before { content: ''; position: absolute; inset: 0; z-index: 1; background: rgba(0, 0, 0, .3); }
figure.video::after {
  content: '';
  position: absolute;
  left: 50%; top: 50%;
  z-index: 2;
  width: 92px; height: 92px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  box-shadow: 0 6px 24px rgba(0, 0, 0, .35);
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E") 54% 50% / 34px no-repeat;
}
figure.video figcaption {
  position: absolute; z-index: 2;
  left: 28px; bottom: 24px;
  margin: 0;
  font-family: var(--police-titre);
  font-size: 14px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  text-align: left;
  color: #fff;
}
/* vidéo YouTube réelle (bloc Embed natif) */
.media figure.wp-block-embed.video-joueur { margin: 49px 0 0; overflow: hidden; border-radius: 12px; background: var(--anthracite); }
.media figure.wp-block-embed.video-joueur iframe { display: block; border: 0; }
/* deux vidéos côte à côte : principale en 16:9, clip vertical (format téléphone) à la même hauteur */
.media .videos-duo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .316fr); gap: 20px; align-items: start; margin-top: 49px; }
.media .videos-duo > figure.wp-block-embed.video-joueur,
.media .videos-duo > figure.wp-block-image.video-bientot { margin: 0; }
.media figure.wp-block-video.clip-vertical { position: relative; margin: 0; aspect-ratio: 9 / 16; overflow: hidden; border-radius: 12px; background: #000; }
.media figure.wp-block-video.clip-vertical video { display: block; width: 100%; height: 100%; object-fit: cover; }
.media figure.wp-block-video.clip-vertical figcaption {
  position: absolute; left: 12px; top: 12px; z-index: 1;
  display: inline-flex; align-items: center; gap: 8px;
  height: 30px; margin: 0; padding: 0 12px 0 10px;
  background: rgba(0, 0, 0, .7); border-radius: 999px; color: #fff;
  font-family: var(--police-titre); font-size: 9px; font-weight: 800; letter-spacing: .2em; line-height: 1; text-transform: uppercase;
  pointer-events: none;
}
.media figure.wp-block-video.clip-vertical figcaption::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
/* deux vidéos 16:9 côte à côte (saison récente en fichier, autre saison sur YouTube), légende sous chaque vidéo */
.media .videos-paire { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: start; margin-top: 49px; }
.media .videos-paire > figure { margin: 0; }
.media .videos-paire > figure.wp-block-embed.video-joueur { margin: 0; overflow: visible; border-radius: 0; background: none; }
.media .videos-paire > figure.wp-block-embed.video-joueur .wp-block-embed__wrapper { overflow: hidden; border-radius: 12px; background: var(--anthracite); }
.media figure.wp-block-video.video-paysage video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 12px; background: #000; }
.media .videos-paire figcaption {
  display: flex; align-items: center; gap: 8px;
  margin: 14px 0 0;
  font-family: var(--police-titre); font-size: 10px; font-weight: 800; letter-spacing: .2em; line-height: 1.4; text-transform: uppercase; text-align: left;
  color: rgba(255, 255, 255, .78);
}
.media .videos-paire figcaption::before { content: ''; flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
/* « la vidéo arrive » : visuel assombri, anneau vert qui pulse, légende éditable */
.media figure.wp-block-image.video-bientot { position: relative; margin-top: 49px; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 12px; background: var(--anthracite); }
.media figure.wp-block-image.video-bientot img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) brightness(.32); }
.media figure.wp-block-image.video-bientot::before {
  content: '';
  position: absolute; left: 50%; top: 42%; z-index: 1;
  width: 92px; height: 92px;
  transform: translate(-50%, -50%);
  border: 2px solid var(--accent);
  border-radius: 50%;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2376F900' d='M8 5v14l11-7z'/%3E%3C/svg%3E") 55% 50% / 34px no-repeat;
  animation: pulsation 2.2s ease-out infinite;
}
.media figure.wp-block-image.video-bientot figcaption {
  position: absolute; left: 0; right: 0; top: calc(42% + 72px); z-index: 1;
  margin: 0;
  font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90;
  font-size: clamp(22px, 2.6vw, 36px); line-height: 1; letter-spacing: -0.01em; text-transform: uppercase; text-align: center;
  color: #fff;
}
@keyframes pulsation { 0% { box-shadow: 0 0 0 0 rgba(118, 249, 0, .45); } 70% { box-shadow: 0 0 0 22px rgba(118, 249, 0, 0); } 100% { box-shadow: 0 0 0 0 rgba(118, 249, 0, 0); } }
.galerie { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 20px; margin-top: 20px; }
figure.galerie-photo { height: 340px; overflow: hidden; border-radius: 12px; }
figure.galerie-photo img { width: 100%; height: 100%; object-fit: cover; }

.parcours { background: var(--blanc); color: var(--noir); padding: 100px 0; }
.parcours-grille { display: grid; grid-template-columns: 480px 1fr; gap: 64px; align-items: start; }
.parcours-intro { margin-top: 40px; font-family: var(--police-titre); font-size: 11px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; }
ul.qualites { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; padding: 0; list-style: none; }
ul.qualites li { display: inline-flex; align-items: center; height: 38px; padding: 0 18px; background: var(--noir); color: #fff; border-radius: 999px; font-size: 12px; font-weight: 600; }
.parcours-liste { border-top: 2px solid var(--noir); }
.parcours-ligne { display: grid; grid-template-columns: 150px 1fr 170px 120px; gap: 16px; align-items: baseline; padding: 26px 0; border-bottom: 1px solid #DCDCDC; }
.parcours-saison { font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 18px; color: var(--accent-texte); }
.parcours-club { font-size: 15px; font-weight: 600; }
.parcours-niveau { font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #4A4A4A; }
.parcours-bilan { text-align: right; font-size: 13px; font-weight: 600; }

/* --- À propos -------------------------------------------------------------- */

.fusion { padding: 110px 0 120px; }
.fusion-equation { display: grid; grid-template-columns: 1fr auto 1fr auto 1.15fr; align-items: stretch; gap: 24px; margin-top: 64px; }
.fusion-bloc { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 200px; padding: 32px 24px; background: var(--anthracite); border-radius: 2px; text-align: center; }
.fusion-nom { font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: clamp(30px, 3.4vw, 48px); line-height: 1; letter-spacing: -0.01em; text-transform: uppercase; }
.fusion-detail { font-size: 11px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gris); }
.fusion-bloc-final { background: var(--accent); color: var(--sur-accent); }
figure.fusion-logo img { height: 78px; width: auto; filter: brightness(0); }
.fusion-bloc-final .fusion-detail { color: var(--sur-accent); }
.fusion-signe { align-self: center; font-family: var(--police-titre); font-weight: 900; font-size: clamp(44px, 5vw, 72px); line-height: 1; color: var(--accent-texte); }
.fusion-texte { max-width: 640px; margin: 48px auto 0; text-align: center; font-size: 14px; line-height: 1.8; color: var(--gris); }

.equipe { background: var(--blanc); color: var(--noir); padding: 100px 0 110px; }
.equipe-tete { display: grid; grid-template-columns: 1fr 460px; gap: 40px; align-items: end; }
.equipe-tete p { max-width: 430px; font-size: 14px; line-height: 1.7; color: #333; }
.equipe-grille { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-top: 64px; }
.membre-visuel { position: relative; aspect-ratio: 3 / 4; overflow: hidden; background: var(--noir); border-radius: 2px; }
figure.membre-photo { position: absolute; inset: 0; }
/* portraits studio (fond gris) : cadrage naturel, la tête et les lunettes restent visibles */
figure.membre-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
.membre-role {
  position: absolute; z-index: 2;
  left: 20px; top: 20px;
  display: inline-flex; align-items: center;
  height: 34px; padding: 0 14px;
  background: var(--accent);
  color: var(--sur-accent);
  border-radius: 999px;
  font-family: var(--police-titre);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .2em;
  line-height: 1;
  text-transform: uppercase;
}
.membre-nom { margin: 22px 0 0; font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 40px; line-height: 1; text-transform: uppercase; }
.membre-expertise { margin-top: 8px; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--accent-texte); }
.membre-texte { margin-top: 14px; font-size: 13px; line-height: 1.75; color: #333; }

.mission-page { padding: 110px 0; }
.mission-page-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; }
.mission-page .titre-section { margin-top: 26px; }
.mission-page-lead { font-size: 18px; line-height: 1.6; font-weight: 500; color: #fff; }
ul.mission-liste { margin: 28px 0 0; padding: 0; list-style: none; border-top: 1px solid #262626; counter-reset: mission; }
ul.mission-liste li {
  display: flex; align-items: baseline; gap: 22px;
  padding: 18px 0;
  border-bottom: 1px solid #262626;
  font-family: var(--police-titre);
  font-weight: 900;
  font-stretch: 90%;
  font-variation-settings: 'wdth' 90;
  font-size: 28px;
  line-height: 1;
  text-transform: uppercase;
  counter-increment: mission;
}
ul.mission-liste li::before { content: counter(mission, decimal-leading-zero); flex: 0 0 22px; font-family: var(--police-texte); font-size: 11px; font-weight: 700; letter-spacing: .12em; color: var(--accent-texte); }
.mission-page-fin { margin-top: 28px; font-size: 14px; color: var(--gris); }

.valeurs { background: var(--blanc); color: var(--noir); padding: 100px 0 110px; }
.valeurs-grille { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 64px; border-top: 2px solid var(--noir); }
.valeur { padding: 32px 28px 0 0; }
.valeur + .valeur { padding-left: 28px; border-left: 1px solid #DCDCDC; }
.valeur-num { font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: var(--t-chiffre); line-height: 1; letter-spacing: -0.02em; color: var(--accent-texte); }
.valeur-nom { margin: 20px 0 0; font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 24px; line-height: 1.05; text-transform: uppercase; }
.valeur-texte { margin-top: 12px; font-size: 13px; line-height: 1.75; color: #333; }

.pourquoi { padding: 100px 0 110px; }
.pourquoi .titre-section { margin-top: 13px; }
.pourquoi-grille { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-top: 64px; }
.atout { padding: 40px; background: var(--anthracite); border-radius: 2px; }
.atout::before { content: ''; display: block; width: 54px; height: 54px; border-radius: 50%; background: var(--accent) center / 26px no-repeat; }
.atout-equipe::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.2'/%3E%3Cpath d='M3 20c0-3.3 2.7-6 6-6s6 2.7 6 6'/%3E%3Ccircle cx='17' cy='9' r='2.6'/%3E%3Cpath d='M15.5 14.2c3 .2 5.5 2.6 5.5 5.8'/%3E%3C/svg%3E"); }
.atout-mesure::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Ccircle cx='12' cy='12' r='4.5'/%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3C/svg%3E"); }
.atout-reseau::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='12' cy='5' r='2.4'/%3E%3Ccircle cx='5' cy='18' r='2.4'/%3E%3Ccircle cx='19' cy='18' r='2.4'/%3E%3Cpath d='M10.8 7.1L6.2 15.9M13.2 7.1l4.6 8.8M7.4 18h9.2'/%3E%3C/svg%3E"); }
.atout-cadre::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7.5 3v5.5c0 4.6-3.2 8.4-7.5 9.5-4.3-1.1-7.5-4.9-7.5-9.5V6z'/%3E%3Cpath d='M8.8 12.2l2.2 2.2 4.3-4.6'/%3E%3C/svg%3E"); }
.atout > .atout-titre { max-width: 440px; margin: 26px 0 0; font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 26px; line-height: 1.05; text-transform: uppercase; }
.atout p { max-width: 480px; margin-top: 14px; font-size: 13px; line-height: 1.75; color: var(--gris); }

/* --- Page services --------------------------------------------------------- */

.service-bloc { padding: 110px 0; }
.service-clair { background: var(--blanc); color: var(--noir); }
.service-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
.service-inverse figure.service-photo { order: 2; }
figure.service-photo { aspect-ratio: 5 / 5.4; overflow: hidden; border-radius: 2px; }
figure.service-photo img { width: 100%; height: 100%; object-fit: cover; }
.service-num { font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: var(--t-chiffre); line-height: 1; letter-spacing: -0.02em; color: var(--accent-texte); }
.titre-service { margin-top: 18px; font-size: var(--t-temoignages); line-height: 1; }
.titre-service em { white-space: nowrap; }
.service-intro { max-width: 520px; margin-top: 22px; font-size: 15px; line-height: 1.7; }
.service-inverse .service-intro { color: #D0D0D0; }
.service-liste { margin-top: 30px; border-top: 2px solid currentColor; }
.service-item { display: grid; grid-template-columns: 1fr 1.2fr; gap: 20px; padding: 16px 0; border-bottom: 1px solid #DCDCDC; }
.service-inverse .service-item { border-color: #262626; }
.service-item-titre { font-family: var(--police-titre); font-size: 13px; font-weight: 800; letter-spacing: .02em; line-height: 1.4; text-transform: uppercase; }
.service-item-texte { font-size: 13px; line-height: 1.6; color: #555; }
.service-inverse .service-item-texte { color: var(--gris); }

.methode { padding: 100px 0 110px; }
.methode .titre-section { margin-top: 13px; }
.etapes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 64px; }
.etape { padding: 32px 28px 36px; background: var(--anthracite); border-radius: 2px; }
.etape .etape-num { font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 64px; line-height: 1; color: var(--accent-texte); }
.etape-titre { margin: 18px 0 0; font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 22px; line-height: 1.05; text-transform: uppercase; }
.etape p { margin-top: 12px; font-size: 13px; line-height: 1.7; color: var(--gris); }

/* --- Blog ------------------------------------------------------------------- */

.blog-liste { padding: 20px 0 120px; }
.wp-block-post-template { margin: 0; padding: 0; list-style: none; }
.article-une { display: grid; grid-template-columns: 1.35fr 1fr; gap: 56px; align-items: center; }
figure.article-une-photo { aspect-ratio: 16 / 11; overflow: hidden; border-radius: 2px; }
figure.article-une-photo a, figure.carte-article-photo a { display: block; height: 100%; }
figure.article-une-photo img, figure.carte-article-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.article-une:hover figure img, .carte-article:hover figure img { transform: scale(1.04); }
.article-une-titre { margin-top: 18px; font-size: clamp(30px, 3.3vw, 48px); line-height: 1.02; }
.article-une-extrait { max-width: 460px; margin-top: 20px; font-size: 14px; line-height: 1.75; color: var(--gris); }
.wp-block-read-more.bouton-lire { margin-top: 28px; }

.carte-article-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--gris-sourd); }
.carte-article-meta .wp-block-post-time-to-read::before { content: '· '; }
.carte-article-cat { padding: 5px 9px 4px; background: var(--accent); color: var(--sur-accent); border-radius: 2px; font-family: var(--police-titre); font-size: 10px; font-weight: 800; letter-spacing: .14em; }
.carte-article-cat a { color: inherit; }
.requete-une .carte-article-cat a::before { content: 'À la une · '; }
.grille-articles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; margin-top: 90px; }
.requete-une + .requete-articles > .grille-articles { margin-top: 90px; }
.grille-archive { margin-top: 0; }
.carte-article { position: relative; display: flex; flex-direction: column; }
figure.carte-article-photo { aspect-ratio: 4 / 3; margin-bottom: 20px; overflow: hidden; border-radius: 2px; }
.carte-article-titre { margin: 14px 0 0; font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 24px; line-height: 1.05; text-transform: uppercase; }
.carte-article-titre a::after { content: ''; position: absolute; inset: 0; z-index: 1; }
.carte-article-extrait { margin-top: 12px; font-size: 13px; line-height: 1.7; color: var(--gris); }
.wp-block-read-more.carte-article-lien { display: inline-flex; align-items: center; gap: 8px; width: max-content; margin-top: 18px; font-size: 13px; font-weight: 600; color: #fff; }
.wp-block-read-more.carte-article-lien::after {
  content: '';
  width: 18px; height: 18px;
  background: var(--accent-texte);
  -webkit-mask: var(--ic-fleche) center / contain no-repeat;
  mask: var(--ic-fleche) center / contain no-repeat;
  transition: transform .2s;
}
.carte-article:hover .carte-article-lien::after { transform: translateX(4px); }

.article { padding: 36px 0 90px; }
.article-tete { width: min(860px, 100% - 48px); margin-inline: auto; }
.article-tete .pilule a { color: inherit; }
.article-titre { margin-top: 24px; font-size: var(--t-temoignages); line-height: 1.02; }
.article-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--gris-sourd); }
.article-meta > * + *::before { content: '· '; }
figure.article-couverture { width: min(1226px, 100% - 48px); margin: 48px auto 0; aspect-ratio: 16 / 7; overflow: hidden; border-radius: 2px; }
figure.article-couverture img { width: 100%; height: 100%; object-fit: cover; }
.article-corps { width: min(720px, 100% - 48px); margin: 64px auto 0; }
.article-chapo p { font-size: 19px; line-height: 1.65; font-weight: 500; color: #fff; }
.article-corps .wp-block-post-content p { margin-top: 22px; font-size: 16px; line-height: 1.85; color: #CFCFCF; }
.article-corps .wp-block-post-content h2 { margin: 52px 0 0; font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 28px; line-height: 1.05; text-transform: uppercase; color: #fff; }
.article-corps .wp-block-post-content a { color: var(--accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.article-corps .wp-block-post-content a:hover { text-decoration-thickness: 2px; }
.article-corps .wp-block-post-content strong { color: #fff; font-weight: 600; }
/* photo dans le corps d'un article, avec sa légende */
.article-corps figure.wp-block-image.article-photo { margin: 44px 0; }
.article-corps figure.wp-block-image.article-photo img { width: 100%; height: auto; border-radius: 4px; }
.article-corps figure.wp-block-image.article-photo figcaption { margin: 12px 0 0; font-size: 13px; line-height: 1.5; color: #9A9A9A; text-align: left; }
/* petite image (visuel de réseau social) : gardée à sa taille, centrée, légende centrée */
.article-corps figure.wp-block-image.article-photo.etroite { width: min(100%, 431px); margin-inline: auto; }
.article-corps figure.wp-block-image.article-photo.etroite figcaption { text-align: center; }
.article-corps .wp-block-quote { margin: 48px 0; padding: 4px 0 4px 28px; border-left: 4px solid var(--accent); }
.article-corps .wp-block-post-content .wp-block-quote p { margin: 0; font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: clamp(24px, 2.6vw, 34px); line-height: 1.12; text-transform: uppercase; color: #fff; }
.a-lire { padding: 90px 0 110px; border-top: 1px solid #1F1F1F; }
.a-lire .grille-articles { margin-top: 56px; }
.a-lire .vitrine-tete > .titre-temoignages { margin-top: 21px; }
.a-lire .vitrine-actions { margin: 0; }

/* --- Pied de page ------------------------------------------------------------ */

.pied {
  position: relative;
  display: grid;
  grid-template-columns: 541px 1fr;
  min-height: 473px;
  padding: 76px 88px 40px;
  background: radial-gradient(70% 62% at 50% 100%, #123F00 0%, #082000 40%, rgba(0, 0, 0, 0) 100%), var(--noir);
  color: #fff;
}
.pied-gauche { display: flex; flex-direction: column; justify-content: space-between; padding-right: 40px; border-right: 1px solid #2A2A2A; }
.pied-marque p { margin-top: 29px; max-width: 320px; font-size: 12px; line-height: 1.7; color: #8A8A8A; }
.pied-bas-gauche { display: flex; align-items: center; gap: 56px; }
.pied .wp-block-social-links.pied-reseaux { display: flex; gap: 10px; margin: 0; padding: 0; }
.pied .wp-block-social-links.pied-reseaux .wp-block-social-link.wp-social-link { margin: 0; background: #fff; color: var(--noir); border-radius: 50%; transition: background .2s; }
.pied .wp-block-social-links.pied-reseaux .wp-block-social-link.wp-social-link:hover { background: var(--accent); transform: none; }
.pied .wp-block-social-links.pied-reseaux .wp-social-link a { display: grid; place-items: center; width: 36px; height: 36px; padding: 0; color: inherit; }
.pied .wp-block-social-links.pied-reseaux .wp-social-link svg { width: 16px; height: 16px; fill: currentColor; }
.pied-copyright { font-size: 11px; line-height: 1.5; color: #8A8A8A; }
.pied-droite { display: flex; flex-direction: column; padding-left: 55px; }
.wp-block-navigation.pied-nav .wp-block-navigation__container { gap: 56px; }
.wp-block-navigation.pied-nav .wp-block-navigation-item__content { font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--gris); transition: color .2s; }
.wp-block-navigation.pied-nav .wp-block-navigation-item__content:hover { color: #fff; }
.pied-droite > .pied-bloc { margin-top: 112px; }
.pied-bloc p { font-size: 12px; color: #9A9A9A; }
.pied-bloc .pied-titre { font-weight: 600; color: #fff; margin-bottom: 6px; }
.pied-bas-droite { display: flex; align-items: flex-end; justify-content: space-between; margin-top: auto; padding-top: 48px; }
.pied-signature { font-family: var(--police-titre); font-weight: 900; font-stretch: 90%; font-variation-settings: 'wdth' 90; font-size: 33px; line-height: 1; letter-spacing: -0.02em; }

:where(a, button, input, select, textarea, [tabindex]):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.masque { display: none !important; }

/* ==========================================================================
   Tablette et mobile
   ========================================================================== */

@media (max-width: 1180px) {
  .apropos-grille { grid-template-columns: 1.2fr 1fr; }
  .pied { padding-inline: 48px; grid-template-columns: 1fr 1.3fr; }
  .wp-block-navigation.nav .wp-block-navigation__container { gap: 32px; }
  .fiche-grille { grid-template-columns: 380px 1fr; gap: 48px; }
  .chiffres-compact { grid-template-columns: repeat(2, 1fr); row-gap: 48px; }
  .fiche-infos { grid-template-columns: 1fr; }
  .grille-cartes { gap: 24px; }
  .parcours-grille { grid-template-columns: 1fr; gap: 48px; }
}

@media (max-width: 900px) {
  .entete .wp-block-site-logo.logo img { max-height: 50px; width: auto; }
  /* core/navigation ne passe en bouton qu'à 600 px : la maquette le fait dès 900 px */
  .entete .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
  .entete .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }

  /* hero : le titre, puis la photo sous sa dernière ligne, puis le texte */
  .hero { display: flex; flex-direction: column; }
  .hero-grille { display: contents; }
  .titre-hero { order: 1; padding: 64px 24px 0; position: relative; z-index: 2; }
  figure.hero-photo { order: 2; height: 300px; aspect-ratio: auto; }
  .hero-grille > .hero-cote { order: 3; margin: 0; padding: 32px 24px 8px; }
  .hero-cote .boutons { margin-top: 24px; }

  .apropos { padding: 72px 0; }
  .apropos-grille { grid-template-columns: 1fr; gap: 32px; margin-top: 48px; }

  .services { padding: 72px 0 56px; }
  .services-piste { gap: 16px; margin-top: 40px; scroll-snap-type: x mandatory; }
  .carte-service { flex-basis: 78vw; max-width: 340px; scroll-snap-align: center; }
  figure.carte-service-photo { height: 300px; }
  .carte-service-titre { top: 150px; font-size: 28px; }

  .chiffres-grille { grid-template-columns: 1fr; row-gap: 48px; padding: 64px 0; }

  .mission { padding: 72px 0; }
  .mission-intro p { margin-top: 28px; }
  .mission-photos { grid-template-columns: 1fr; gap: 16px; padding: 0 24px; margin-top: 40px; }
  .mission-badge { left: 12px; bottom: 12px; }
  body .galerie-mosaique.wp-block-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 150px; gap: 8px; width: calc(100% - 48px); margin: 40px auto 0; }
  .mission-page .galerie-mosaique.wp-block-gallery { margin-top: 48px; }
  .fusion .galerie-intro { margin-top: 48px; }
  .fusion .galerie-mosaique.galerie-verticale.wp-block-gallery { margin-top: 16px; }
  body .galerie-mosaique.galerie-verticale.wp-block-gallery,
  body .galerie-mosaique.galerie-portraits.wp-block-gallery { width: 100%; margin-top: 12px; grid-auto-rows: 120px; }
  .media .videos-duo { grid-template-columns: 1fr; gap: 12px; margin-top: 32px; }
  .media figure.wp-block-video.clip-vertical { width: min(100%, 300px); justify-self: center; border-radius: 8px; }
  .media figure.wp-block-image.video-bientot { margin-top: 32px; border-radius: 8px; }
  .media figure.wp-block-image.video-bientot::before { width: 64px; height: 64px; background-size: 24px; }
  .media figure.wp-block-image.video-bientot figcaption { top: calc(42% + 50px); }
  .media figure.wp-block-embed.video-joueur { margin-top: 32px; border-radius: 8px; }
  .media .videos-paire { grid-template-columns: 1fr; gap: 24px; margin-top: 32px; }
  .media figure.wp-block-video.video-paysage video,
  .media .videos-paire > figure.wp-block-embed.video-joueur .wp-block-embed__wrapper { border-radius: 8px; }
  .media .videos-paire figcaption { margin-top: 10px; }
  .galerie-mosaique > figure.wp-block-image:nth-child(5),
  .galerie-mosaique > figure.wp-block-image:nth-child(6) { grid-column: span 2; }
  /* « huit » sur deux colonnes : grande photo, deux hautes, deux rangées de deux, panorama */
  body .galerie-mosaique.galerie-huit.wp-block-gallery { grid-template-rows: none; }
  .galerie-mosaique.galerie-huit > figure.wp-block-image:nth-child(5) { grid-column: auto; }
  body .galerie-mosaique.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) .wp-element-caption { left: 10px; bottom: 10px; height: 28px; padding: 0 12px 0 10px; font-size: 9px; }
  .mission-badge a { height: 38px; padding: 0 16px 0 12px; font-size: 11px; }

  .vitrine { padding: 72px 0; }
  .vitrine-tete { flex-direction: column; align-items: flex-start; }
  .vitrine-actions { flex-wrap: wrap; }
  .vitrine-actions .wp-block-buttons { margin-left: 0; }
  .piste-cartes { gap: 14px; margin-top: 32px; scroll-snap-type: x mandatory; }
  .piste-cartes > .carte-joueur { flex-basis: 74vw; max-width: 330px; }
  .piste-alignee { width: 100%; padding-inline: 24px; scroll-padding-inline: 24px; }

  .contact { padding: 64px 16px 120px; }
  /* formulaire 28 px au-dessus du centre de la section (64 px en haut, 120 en bas) : le terrain remonte d'autant */
  figure.contact-fond img { object-position: 50% calc(50% - 28px); }
  .contact-carte { padding: 32px 20px 22px; }
  .contact::after { font-size: 19vw; }

  .page-tete { padding: 56px 0; }
  .page-tete-grille { grid-template-columns: 1fr; row-gap: 28px; }
  .effectif { padding-bottom: 80px; }
  .effectif-groupe + .effectif-groupe { margin-top: 72px; }
  .effectif-titre { flex-direction: column; align-items: flex-start; gap: 6px; }
  .grille-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
  .appel { padding: 72px 0; }

  .fiche { padding-bottom: 72px; }
  .fiche-grille { grid-template-columns: 1fr; gap: 40px; }
  .fiche-carte { max-width: 400px; }
  .fiche-carte .carte-joueur-numero { font-size: 64px; }
  .fiche-carte .carte-joueur-poste { top: 84px; }
  .fiche-carte .carte-joueur-famille { font-size: 38px; }
  .fiche-carte .carte-joueur-prenom { font-size: 13px; }
  .chiffres-4 { grid-template-columns: 1fr 1fr; row-gap: 40px; }
  .media { padding: 72px 0; }
  .galerie { grid-template-columns: 1fr; gap: 12px; }
  figure.galerie-photo { height: 240px; }
  .parcours { padding: 72px 0; }
  .parcours-ligne { grid-template-columns: 1fr auto; row-gap: 4px; padding: 18px 0; }
  .parcours-saison { grid-column: 1 / -1; }

  .fusion { padding: 72px 0; }
  .fusion-equation { grid-template-columns: 1fr; gap: 12px; margin-top: 40px; }
  .fusion-signe { justify-self: center; font-size: 40px; }
  .fusion-bloc { min-height: 130px; }
  .equipe { padding: 72px 0; }
  .equipe-tete { grid-template-columns: 1fr; gap: 24px; }
  .equipe-grille { grid-template-columns: 1fr; gap: 48px; margin-top: 40px; }
  .membre-visuel { aspect-ratio: 4 / 4.4; }
  figure.membre-photo img { object-position: 50% 12%; }
  .mission-page { padding: 72px 0; }
  .mission-page-grille { grid-template-columns: 1fr; gap: 40px; }
  ul.mission-liste li { font-size: 22px; }
  .valeurs { padding: 72px 0; }
  .valeurs-grille { grid-template-columns: 1fr 1fr; row-gap: 40px; margin-top: 40px; }
  .valeur, .valeur + .valeur { padding: 24px 16px 0 0; border-left: 0; }
  .pourquoi { padding: 72px 0; }
  .pourquoi-grille { grid-template-columns: 1fr; margin-top: 40px; }
  .atout { padding: 28px 22px; }
  .service-bloc { padding: 72px 0; }
  .service-grille { grid-template-columns: 1fr; gap: 36px; }
  .service-inverse figure.service-photo { order: 0; }
  figure.service-photo { aspect-ratio: 4 / 3; }
  .service-item { grid-template-columns: 1fr; gap: 4px; }
  .methode { padding: 72px 0; }
  .etapes { grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 40px; }
  .article-une { grid-template-columns: 1fr; gap: 28px; }
  .grille-articles { grid-template-columns: 1fr; gap: 48px; margin-top: 64px; }
  .requete-une + .requete-articles > .grille-articles { margin-top: 64px; }
  .grille-archive { margin-top: 0; }
  figure.article-couverture { aspect-ratio: 4 / 3; margin-top: 32px; }
  .article-corps { margin-top: 40px; }
  .article-corps .wp-block-post-content p { font-size: 15px; }
  .a-lire { padding: 72px 0; }

  .pied { grid-template-columns: 1fr; min-height: 0; padding: 56px 24px 32px; }
  .pied-gauche { display: contents; }
  .pied-marque { order: 1; padding-bottom: 32px; border-bottom: 1px solid #2A2A2A; }
  .pied-droite { order: 2; padding: 32px 0 0; }
  .wp-block-navigation.pied-nav .wp-block-navigation__container { flex-wrap: wrap; gap: 16px 28px; }
  .pied-droite > .pied-bloc { margin-top: 32px; }
  .pied-bas-droite { padding-top: 24px; flex-wrap: wrap; gap: 32px; }
  .pied-bas-gauche { order: 3; margin-top: 40px; flex-wrap: wrap; gap: 20px 32px; }
}

@media (max-width: 560px) {
  .champs-duo { grid-template-columns: 1fr; }
  .champs-fichiers { grid-template-columns: 1fr; }
  .wpcf7 .champ-fichier { height: 60px; flex-direction: row; }
  .grille-cartes { grid-template-columns: 1fr; }
  .grille-cartes > .carte-joueur { width: 100%; max-width: 360px; margin-inline: auto; }
  .valeurs-grille, .etapes { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }
