/* =========================================================================
   FFK — Recherche de clubs (habillage de WP Grid Builder)
   =========================================================================
   La recherche fonctionne déjà : 5 097 clubs, facettes ville / spécialités /
   nom / ligues / tri. On ne reconstruit rien — on habille la sortie du plugin
   à la charte FFK.

   Sélecteurs 100 % préfixés .wpgb-* : cette feuille n'a aucun effet ailleurs.
   Fond de carte : Leaflet / OpenStreetMap (aucune requête vers Google).
   ========================================================================= */

/* -------------------------------------------------------------------------
   Mise en page : deux colonnes, filtres+résultats / carte

   Constat du 2026-07-16 : la grille est DÉJÀ configurée comme la production —
   .wpgb-main à gauche, .wpgb-sidebar-right à droite, cette dernière ne
   contenant que la facette 9 (la carte). Il n'y a donc pas de mise en page à
   inventer : on cale les proportions, on rend la carte collante, et on gère
   proprement le cas « module Map Facet inactif ».
   ---------------------------------------------------------------------- */
/* Le header du thème n'est pas collant : la carte n'a donc à dégager que la
   barre d'administration, et seulement pour les comptes connectés. */
:root { --ffk-sticky-top: 24px; }
body.admin-bar { --ffk-sticky-top: 56px; }

/* NOTE DE SPÉCIFICITÉ — WP Grid Builder pose ses propres règles sur ces mêmes
   éléments (flex: 0 0 50% sur la sidebar, display: flex sur les zones). Un
   sélecteur simple perd. D'où .wpgb-wrapper en préfixe partout ci-dessous :
   on remonte la spécificité sans dégainer !important à chaque ligne.

   PIÈGE MAJEUR, corrigé le 2026-07-16 — ne pas remettre de max-width ici.
   L'option « pleine largeur » de la grille est activée : le JS de WP Grid
   Builder pose EN INLINE « left: -Npx; width: <viewport>px » sur ce wrapper
   pour le faire déborder de son conteneur, et il recalcule à chaque mise à
   jour des facettes. La feuille précédente lui opposait « max-width: 1500px;
   margin: 0 auto » : le margin auto ne peut rien contre une largeur inline,
   le left négatif restait, et toute la recherche se retrouvait plaquée contre
   le bord gauche de l'écran. On laisse donc le plugin déborder — c'est son
   travail — et on centre le contenu par le rembourrage, ce qui ne touche ni à
   width ni à left.

   1500px = la largeur de la carte du hero : les deux s'alignent au pixel.
   L'unité est vw et non % à dessein — un padding en % se calcule sur le
   conteneur (1741px), alors que le rembourrage part du bord du wrapper, que
   le JS a collé au bord de la fenêtre. Avec %, le contenu débordait de 20px
   de chaque côté. */
.wpgb-wrapper {
	padding-inline: max(clamp(16px, 4vw, 40px), calc((100vw - 1500px) / 2));
	gap: clamp(20px, 2.5vw, 36px); align-items: flex-start;
	box-sizing: border-box;
}
.wpgb-wrapper .wpgb-main { flex: 1 1 auto; min-width: 0; }

/* La carte suit le défilement : parcourir 5 099 résultats sans la perdre de
   vue est tout l'intérêt d'une recherche géographique. */
.wpgb-wrapper .wpgb-sidebar-right {
	flex: 0 0 clamp(340px, 40%, 640px);
	position: sticky; top: var(--ffk-sticky-top, 96px);
	height: calc(100vh - var(--ffk-sticky-top, 96px) - 24px);
	min-height: 420px;
}
/* Conteneur inséré par ffk-clubs-ux.js pour porter le rôle « tabpanel » que
   la balise <aside> de l'extension ne peut pas prendre. Purement technique :
   il doit laisser passer la hauteur, sinon la carte s'effondre. */
.wpgb-wrapper .wpgb-sidebar-right .ffk-p-carte-in { height: 100%; }
.wpgb-wrapper .wpgb-sidebar-right .wpgb-facet { height: 100%; margin-bottom: 0; }

/* Une facette vide occupe malgré tout sa place : sans cela, « Localisez-moi »
   et la carte laissent deux trous béants tant que le module est inactif. */
.wpgb-wrapper .wpgb-facet:empty { display: none; }
.wpgb-wrapper .wpgb-sidebar:not(:has(.wpgb-facet:not(:empty))) { display: none; }

/* Les zones de filtres restent en flux.
   Elles étaient en grille auto-fit — pertinent quand les six champs y
   cohabitaient. Depuis que le JS ne laisse plus que la proximité et le panneau
   « Affiner », la grille les posait CÔTE À CÔTE : la recherche par lieu se
   retrouvait en colonne de gauche, rétrécie, sous le panneau. La grille a
   déménagé là où elle sert désormais : dans .ffk-affiner-corps. */
.wpgb-wrapper .wpgb-main > .wpgb-area { display: block; }
.wpgb-wrapper .wpgb-main > .wpgb-area:empty { display: none; }

/* WP Grid Builder plafonne chaque facette à 50 % de sa colonne — hérité de sa
   mise en page d'origine sur deux colonnes. Dans notre grille, cela réduisait
   les champs de saisie à 108 px : « Saisir le nom de la ville » devenait
   « Saisi... ». La colonne fait déjà la largeur voulue, la facette la remplit. */
.wpgb-wrapper .wpgb-main .wpgb-facet { max-width: none; }

/* -------------------------------------------------------------------------
   « Affiner la recherche »

   Six champs de même poids obligeaient à tout lire pour trouver le seul qui
   compte. La proximité reste dehors ; ville, discipline, nom, ligue et tri
   se replient ici, avec le compte des filtres actifs — sans ce compteur, un
   filtre oublié dans un panneau fermé devient un mystère.
   ---------------------------------------------------------------------- */
.ffk-affiner {
	border: 1px solid #E3EAF7; border-radius: 14px; background: #fff;
	margin-top: 18px;
}
.ffk-affiner-tete {
	display: flex; align-items: center; gap: 9px;
	padding: 13px 16px; cursor: pointer; list-style: none;
	font: 700 13px "Space Grotesk", system-ui, sans-serif;
	color: var(--wp--preset--color--navy, #0B1E3F);
	border-radius: 14px;
}
.ffk-affiner-tete::-webkit-details-marker { display: none; }
.ffk-affiner-tete:hover { background: #F8FAFE; }
.ffk-affiner-tete:focus-visible { outline: 3px solid #5EE0C0; outline-offset: 2px; }
.ffk-affiner-txt { flex: 1 1 auto; }
.ffk-affiner-nb {
	flex: 0 0 auto; display: grid; place-items: center;
	min-width: 20px; height: 20px; padding: 0 6px;
	border-radius: 10px; background: #1C3C8C; color: #fff;
	font-size: 11px; font-weight: 700;
}
.ffk-affiner-chev { flex: 0 0 auto; transition: transform .18s ease; color: #5A6B85; }
.ffk-affiner[open] .ffk-affiner-chev { transform: rotate(180deg); }
.ffk-affiner.a-des-filtres { border-color: #C9D8F5; }
.ffk-affiner-corps {
	display: grid; gap: 4px clamp(16px, 2vw, 28px);
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	padding: 4px 16px 16px;
	border-top: 1px solid #EEF2F9;
}
.ffk-affiner-corps .wpgb-facet { margin-top: 14px; margin-bottom: 0; }

/* -------------------------------------------------------------------------
   Onglets Liste / Carte — mobile uniquement
   ---------------------------------------------------------------------- */
.ffk-vues { display: none; }

@media (max-width: 1024px) {
	.ffk-vues {
		display: grid; grid-template-columns: 1fr 1fr; gap: 4px;
		max-width: 1500px; margin: 0 auto 18px;
		padding: 4px; border-radius: 14px; background: #EEF2F9;
		width: calc(100% - 2 * clamp(16px, 4vw, 40px));
	}
	.ffk-vue {
		border: 0; border-radius: 11px; background: none; cursor: pointer;
		padding: 10px 8px; min-height: 44px;
		font: 700 13px "Space Grotesk", system-ui, sans-serif;
		color: #5A6B85; transition: background .15s, color .15s;
	}
	.ffk-vue.est-active { background: #fff; color: var(--wp--preset--color--navy, #0B1E3F); box-shadow: 0 1px 3px rgba(16,26,51,.1); }
	.ffk-vue:focus-visible { outline: 3px solid #5EE0C0; outline-offset: 2px; }

	.wpgb-wrapper { flex-wrap: wrap; }
	.wpgb-wrapper .wpgb-sidebar-right {
		flex: 1 1 100%; order: -1;
		position: static; height: calc(100vh - 220px); min-height: 380px;
	}
	/* Une seule vue à la fois : l'autre est retirée de l'arbre d'accessibilité
	   par display:none, pas seulement masquée à l'œil. */
	.wpgb-wrapper[data-vue="liste"] .wpgb-sidebar-right { display: none; }
	.wpgb-wrapper[data-vue="carte"] .wpgb-main > .wpgb-layout,
	.wpgb-wrapper[data-vue="carte"] .wpgb-main > .wpgb-area:last-child { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.ffk-affiner-chev, .ffk-vue { transition: none; }
}

/* ---- Facettes ---- */
.wpgb-facet { margin-bottom: 18px; }
.wpgb-facet-title {
	font-family: "Space Grotesk", system-ui, sans-serif;
	font-weight: 700 !important;
	font-size: 12.5px !important;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: #16264F !important;
	margin-bottom: 8px !important;
}

/* Champs texte + autocomplétion + géolocalisation */
.wpgb-input,
.wpgb-select-toggle {
	border: 1px solid #DCE4F2 !important;
	border-radius: 12px !important;
	background: #fff !important;
	font-family: "Plus Jakarta Sans", system-ui, sans-serif !important;
	font-size: 14.5px !important;
	color: #101A33 !important;
	min-height: 46px !important;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.wpgb-input:hover,
.wpgb-select-toggle:hover { border-color: #C9D8F5 !important; }
.wpgb-input:focus,
.wpgb-input:focus-visible,
.wpgb-select-toggle:focus,
.wpgb-select-toggle:focus-visible {
	border-color: #1C3C8C !important;
	box-shadow: 0 0 0 3px rgba(94, 224, 192, .45) !important;
	outline: none !important;
}
.wpgb-input::placeholder,
.wpgb-select-placeholder { color: #697595 !important; }
.wpgb-input-icon { color: #1C3C8C !important; }

/* Bouton « me localiser » */
.wpgb-locate-button {
	color: #1C3C8C !important;
	border-radius: 10px !important;
}
.wpgb-locate-button:focus-visible {
	outline: 3px solid #5EE0C0 !important;
	outline-offset: 2px !important;
}

/* Listes déroulantes */
.wpgb-select-values { font-weight: 600 !important; color: #101A33 !important; }
.wpgb-select-search .wpgb-input { min-height: 40px !important; }

/* Compteur de résultats */
.wpgb-result-count {
	font-family: "Space Grotesk", system-ui, sans-serif;
	font-weight: 700 !important;
	font-size: 15px !important;
	color: #1C3C8C !important;
}

/* ---- Fiches clubs ---- */
.wpgb-card-inner {
	background: #fff !important;
	border: 1px solid #EAEFF8 !important;
	border-radius: 18px !important;
	overflow: hidden;
	transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.wpgb-card-inner:hover {
	border-color: #C9D8F5 !important;
	box-shadow: 0 24px 48px -30px rgba(20, 40, 100, .55) !important;
	transform: translateY(-2px);
}
.wpgb-card-inner:focus-within {
	border-color: #1C3C8C !important;
	box-shadow: 0 0 0 3px rgba(94, 224, 192, .45) !important;
}
.wpgb-card-content { padding: 0 !important; }

/* LA BOÎTE DANS LA BOÎTE, corrigée le 2026-07-16.
   .wpgb-card-inner recevait un fond blanc de cette feuille, et .wpgb-card-body
   en a déjà un, posé par le style de la carte dans WP Grid Builder. Deux fonds
   blancs imbriqués, chacun avec son rembourrage et son arrondi : d'où le cadre
   flottant à l'intérieur du cadre. Un seul porte le décor — l'extérieur. */
.wpgb-card-body {
	background: transparent !important;
	border-radius: 0 !important;
	padding: 16px 18px !important;
}

/* Hiérarchie : le nom du club d'abord, la ville ensuite, le reste en appui.
   Tout était au même gris et au même poids. */
.wpgb-card-body .wpgb-block-2,
.wpgb-card-body h3 {
	font-family: "Space Grotesk", system-ui, sans-serif !important;
	font-size: 14px !important; font-weight: 700 !important;
	line-height: 1.3 !important;
	color: var(--wp--preset--color--navy, #0B1E3F) !important;
	margin: 0 0 6px !important;
	/* Les noms sont stockés en capitales : sans césure, « (LE LION DES NEIGES)
	   CLUB DE YOSEIKAN BUDO MONTREUIL » monopolise cinq lignes. */
	overflow-wrap: anywhere; hyphens: auto;
}
.wpgb-card-body .wpgb-block-5 { /* adresse */
	font-size: 12px !important; line-height: 1.45 !important;
	color: #5A6B85 !important; margin: 0 0 8px !important;
}
.wpgb-card-body .wpgb-block-3,   /* téléphone */
.wpgb-card-body .wpgb-block-6,   /* courriel */
.wpgb-card-body .wpgb-block-12 { /* professeur */
	font-size: 11.5px !important; line-height: 1.45 !important;
	color: #65718A !important; margin: 0 0 3px !important;
	/* wado3kinasu@gmail.com débordait de la colonne et se faisait couper. */
	overflow-wrap: anywhere;
}

/* RÈGLES SUPPRIMÉES LE 2026-07-16 — encore une supposition prise pour un fait.
   Il y avait ici « .wpgb-block-1 = nom du club » et « .wpgb-block-2 = adresse ».
   Le balisage réel, lu dans la page : .wpgb-block-2 EST le nom (un h3),
   .wpgb-block-5 l'adresse, .wpgb-block-3 le téléphone, .wpgb-block-6 le
   courriel, .wpgb-block-12 le professeur — et .wpgb-block-1 n'existe pas.
   On habillait donc le nom du club avec le style de l'adresse (13px, gris),
   pendant qu'une règle sans cible dormait juste au-dessus. Les numéros de bloc
   viennent du constructeur de cartes : ils ne se devinent pas, ils se lisent.

   Les vraies règles sont plus haut, sous « Hiérarchie ». */

/* Les 3 blocs repris du thème de production (inc/ffk-clubs-blocs.php) */

/* Disciplines : des pastilles plutôt que la liste à tirets de la prod. */
.ffk-bloc-spe { display: flex; flex-wrap: wrap; gap: 5px; margin: 9px 0 0; }
.ffk-spe-pastille {
	font-size: 10.5px; font-weight: 700; letter-spacing: .03em;
	padding: 3px 8px; border-radius: 20px;
	background: #EEF3FC; color: #1C3C8C; white-space: nowrap;
}

/* Site du club */
.ffk-bloc-site {
	font-size: 11.5px !important; font-weight: 600 !important;
	color: #1C3C8C !important; overflow-wrap: anywhere;
}

/* « Voir le club » — le lien qui manquait depuis toujours. */
.ffk-bloc-voir {
	display: inline-flex; align-items: center; gap: 5px;
	margin-top: 11px;
	font-family: "Space Grotesk", system-ui, sans-serif;
	font-size: 12px !important; font-weight: 700 !important;
	color: #1C3C8C !important; text-decoration: none !important;
}
.ffk-bloc-voir svg { transition: transform .15s ease; }
/* Le CSS de la grille (G1C21.css, généré par WP Grid Builder) agrandissait la
   flèche à la hauteur du bloc (47px) et forçait « white-space: pre-line » :
   « Voir le club » passait sur trois lignes. Il ajoutait aussi une icône
   Font Awesome en ::before — police non chargée, donc un carré vide. */
.wp-grid-builder .wpgb-card .wpgb-block-10::before { content: none !important; display: none !important; }
.wp-grid-builder .wpgb-card .ffk-bloc-voir { white-space: nowrap !important; line-height: 1.2 !important; padding: 7px 12px 7px 13px; margin-top: 10px; border-radius: 100px; background: #EEF3FC; gap: 6px; }
.wp-grid-builder .wpgb-card .ffk-bloc-voir svg { width: 14px !important; height: 14px !important; min-width: 14px; flex: 0 0 14px !important; display: block; }
.wp-grid-builder .wpgb-card .wpgb-card-inner:hover .ffk-bloc-voir { background: #1C3C8C; color: #fff !important; text-decoration: none !important; }
.ffk-bloc-voir:hover { text-decoration: underline !important; text-underline-offset: 3px; }
.ffk-bloc-voir:hover svg { transform: translateX(3px); }
.ffk-bloc-voir:focus-visible {
	outline: 3px solid #5EE0C0; outline-offset: 3px; border-radius: 5px;
}
/* La fiche entière réagit au survol, même si seul « Voir le club » est
   cliquable : sans cet indice, rien ne dit qu'il y a quelque chose à ouvrir. */
.wpgb-card-inner:hover .ffk-bloc-voir { text-decoration: underline !important; }
.wpgb-card-inner:hover .ffk-bloc-voir svg { transform: translateX(3px); }

@media (prefers-reduced-motion: reduce) {
	.ffk-bloc-voir svg { transition: none; }
	.ffk-bloc-voir:hover svg, .wpgb-card-inner:hover .ffk-bloc-voir svg { transform: none; }
}

/* Liens éventuels À L'INTÉRIEUR d'une fiche */
.wpgb-card-content a {
	color: #1C3C8C !important;
	font-weight: 700 !important;
	text-decoration: none !important;
}
.wpgb-card-content a:hover { text-decoration: underline !important; }
.wpgb-card-content a:focus-visible {
	outline: 3px solid #5EE0C0 !important;
	outline-offset: 2px;
	border-radius: 4px;
}

/* ---- Pagination ---- */
.wpgb-pagination .wpgb-button,
.wpgb-button {
	border-radius: 10px !important;
	font-family: "Plus Jakarta Sans", system-ui, sans-serif !important;
	font-weight: 700 !important;
	color: #1C3C8C !important;
	border-color: #DCE4F2 !important;
}
.wpgb-button:hover { background: #F1F5FC !important; border-color: #C9D8F5 !important; }
.wpgb-button[aria-current="page"],
.wpgb-button.wpgb-is-active {
	background: #1C3C8C !important;
	border-color: #1C3C8C !important;
	color: #fff !important;
}
.wpgb-button:focus-visible {
	outline: 3px solid #5EE0C0 !important;
	outline-offset: 2px !important;
}

/* -------------------------------------------------------------------------
   Recherche de proximité (notre champ, branché sur la Base Adresse Nationale)
   Remplace la facette du plugin, qui imposait Google Places.
   ---------------------------------------------------------------------- */
.ffk-geo { position: relative; }
.ffk-geo-champ { display: flex; gap: 8px; align-items: stretch; }
.ffk-geo-input {
	flex: 1 1 auto; min-width: 0;
	border: 1px solid #E3EAF7 !important; border-radius: 12px !important;
	background: #fff !important; padding: 10px 14px !important;
	font: 400 14px/1.4 "Plus Jakarta Sans", system-ui, sans-serif !important;
	color: #101A33 !important;
}
.ffk-geo-input:hover { border-color: #C9D8F5 !important; }
.ffk-geo-input:focus-visible { outline: 3px solid #5EE0C0; outline-offset: 2px; }

.ffk-geo-locate {
	flex: 0 0 auto; display: grid; place-items: center; width: 44px;
	border: 1px solid #E3EAF7; border-radius: 12px; background: #fff;
	color: #1C3C8C; cursor: pointer; transition: background .15s, border-color .15s;
}
.ffk-geo-locate:hover { background: #F1F5FC; border-color: #C9D8F5; }
.ffk-geo-locate:focus-visible { outline: 3px solid #5EE0C0; outline-offset: 2px; }
.ffk-geo-locate:disabled { opacity: .5; cursor: progress; }

/* Suggestions : elles doivent passer AU-DESSUS de la carte, dont Leaflet
   monte les panneaux jusqu'à z-index 800. */
.ffk-geo-list {
	position: absolute; z-index: 900; left: 0; right: 0; top: calc(100% - 46px);
	margin: 4px 0 0; padding: 6px; list-style: none;
	background: #fff; border: 1px solid #E3EAF7; border-radius: 14px;
	box-shadow: 0 12px 32px rgba(16, 26, 51, .14);
	max-height: 280px; overflow-y: auto;
}
.ffk-geo-opt {
	display: flex; flex-direction: column; gap: 1px;
	padding: 9px 11px; border-radius: 9px; cursor: pointer;
}
.ffk-geo-opt:hover, .ffk-geo-opt.est-actif { background: #F1F5FC; }
.ffk-geo-opt.est-actif { outline: 2px solid #1C3C8C; outline-offset: -2px; }
.ffk-geo-opt-nom { font-size: 13.5px; font-weight: 600; color: #101A33; }
.ffk-geo-opt-ctx { font-size: 11.5px; color: #5A6B85; }

.ffk-geo-rayon { display: flex; gap: 9px; align-items: center; margin: 10px 0 0; }
.ffk-geo-rayon label { font-size: 12.5px; color: #5A6B85; white-space: nowrap; }
.ffk-geo-select {
	border: 1px solid #E3EAF7; border-radius: 10px; background: #fff;
	padding: 6px 10px; font: 600 13px "Plus Jakarta Sans", system-ui, sans-serif;
	color: #101A33; cursor: pointer;
}
.ffk-geo-select:focus-visible { outline: 3px solid #5EE0C0; outline-offset: 2px; }

.ffk-geo-actif { margin: 10px 0 0; }
.ffk-geo-effacer {
	border: 0; background: none; padding: 0; cursor: pointer;
	font: 600 12.5px "Plus Jakarta Sans", system-ui, sans-serif;
	color: #C2185B; text-decoration: underline; text-underline-offset: 3px;
}
.ffk-geo-effacer:focus-visible { outline: 3px solid #5EE0C0; outline-offset: 2px; border-radius: 4px; }

@media (prefers-reduced-motion: reduce) {
	.ffk-geo-locate { transition: none; }
}

/* ---- Carte (Leaflet / OpenStreetMap) — habillage FFK ---- */
/* Anti-« voile gris » : WPGB laisse le conteneur carte à opacity .6 (classe
   wpgb-loading). La carte doit rester nette une fois chargée. */
.wpgb-facet:has(.wpgb-map-facet),
.wpgb-facet.wpgb-loading:has(.wpgb-map-facet) { opacity: 1 !important; }
.wpgb-map-facet, .wpgb-map-facet.wpgb-map-loaded { opacity: 1 !important; }

/* Pendant le rechargement d'une facette, WP Grid Builder estompe le bloc à 60 %
   d'opacité : les intitulés et les champs passent sous le seuil de contraste
   le temps de la requête. On relève le voile (RGAA 3.2). */
.wp-grid-builder .wpgb-facet.wpgb-loading,
.wpgb-facet.wpgb-loading { opacity: .9 !important; }

.wpgb-map-facet {
	border-radius: 20px !important;
	overflow: hidden;
	border: 1px solid #E4EAF5;
	min-height: 440px;
	box-shadow: 0 30px 60px -40px rgba(16, 30, 90, .5);
}
.wpgb-sidebar-right .wpgb-map-facet { height: 100% !important; }
.wpgb-map-facet .leaflet-container {
	font-family: "Plus Jakarta Sans", system-ui, sans-serif;
	background: #E9EEF7;
}
/* Marqueurs / clusters : ce sont des IMAGES WPGB (couleur selon le nombre de
   clubs). On ne les recolore pas — on leur donne juste un léger relief. */
.wpgb-map-facet .wpgb-cluster-icon img,
.wpgb-map-facet .wpgb-marker img { filter: drop-shadow(0 4px 6px rgba(16, 30, 90, .4)); }
.wpgb-map-facet .wpgb-cluster-icon { transition: transform .15s ease; }
.wpgb-map-facet .wpgb-marker:hover .wpgb-cluster-icon { transform: scale(1.08); }
/* Infobulle d'un club */
.wpgb-map-facet .leaflet-popup-content-wrapper {
	border-radius: 16px !important;
	box-shadow: 0 24px 50px -24px rgba(20, 40, 100, .65) !important;
	border: 1px solid #EDF1F8;
}
.wpgb-map-facet .leaflet-popup-content {
	font-size: 13.5px;
	line-height: 1.5;
	margin: 13px 16px !important;
}
.wpgb-map-facet .leaflet-popup-content a { color: #1C3C8C; font-weight: 700; }
.wpgb-map-facet .leaflet-popup-tip { box-shadow: 0 20px 40px -24px rgba(20,40,100,.6) !important; }
/* Attribution OpenStreetMap : obligatoire, mais discrète */
.wpgb-map-facet .leaflet-control-attribution {
	font-size: 10.5px;
	background: rgba(255, 255, 255, .82) !important;
	border-radius: 8px 0 0 0;
}
/* Contrôle de zoom modernisé */
.wpgb-map-facet .leaflet-control-zoom {
	border: 0 !important;
	border-radius: 14px !important;
	overflow: hidden;
	box-shadow: 0 10px 24px -12px rgba(16, 30, 90, .5) !important;
	margin: 14px !important;
}
.wpgb-map-facet .leaflet-control-zoom a {
	width: 38px; height: 38px; line-height: 38px !important;
	border: 0 !important;
	background: rgba(255, 255, 255, .95) !important;
	color: #1C3C8C !important;
	font-weight: 700;
	font-size: 20px;
	transition: background .15s ease, color .15s ease;
}
.wpgb-map-facet .leaflet-control-zoom a:hover {
	background: linear-gradient(150deg, #1C3C8C, #E4174B) !important;
	color: #fff !important;
}
.wpgb-map-facet .leaflet-control-zoom a:focus-visible {
	outline: 3px solid #5EE0C0 !important;
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.wpgb-card-inner, .wpgb-input, .wpgb-select-toggle { transition: none !important; }
	.wpgb-card-inner:hover { transform: none; }
}

/* -------------------------------------------------------------------------
   Fiche club — enrichissement du 2026-07-16

   Le dessin suit ce que la base contient réellement, mesuré et non supposé :
     GPS · adresse · ville   100 %   → le socle
     rattachement fédéral     98 %
     disciplines              90 %   → donc en tête, sous le titre
     professeur               68 %
     courriel                 52 %
     site web                 47 %
     mobile / fixe        33 / 31 %
     tél2 / mobile2         2 / 4 %  → fondus, jamais une ligne à eux
   Et 1 023 clubs (20 %) sans aucun contact : leur bloc disparaît.
   ---------------------------------------------------------------------- */

/* Trois colonnes : le club · son rattachement · ses actualités.
   La description passe au-dessus, pleine largeur, et disparaît si vide. */
.ffk-club-desc { max-width: 74ch; margin: 0 0 28px; }
.ffk-club-cols {
	display: grid; gap: 20px; align-items: start;
	grid-template-columns: repeat(3, 1fr);
}
/* Deux colonnes deviennent illisibles bien avant de disparaître : la carte et
   les pastilles ont besoin de place. On dégroupe tôt. */
/* Moins de trois cartes (pas d'actualités, pas de rattachement) : les
   colonnes se partagent la largeur au lieu de laisser un trou à droite. */
.ffk-club-cols:not(:has(> :nth-child(3))) { grid-template-columns: repeat(2, 1fr); }
.ffk-club-cols:not(:has(> :nth-child(2))) { grid-template-columns: minmax(0, 1fr); max-width: 760px; }
@media (max-width: 1100px) { .ffk-club-cols { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px)  { .ffk-club-cols { grid-template-columns: 1fr; } }

/* Disciplines : discipline › style (KARATE › SHOTOKAN) */
.ffk-club-spe {
	list-style: none; margin: 4px 0 0; padding: 0;
	display: flex; flex-wrap: wrap; gap: 5px;
}
.ffk-club-spe-p {
	display: inline-flex; align-items: baseline; gap: 4px;
	padding: 3px 9px; border-radius: 20px;
	background: #EEF3FC; border: 1px solid #DCE6F8;
	font-size: 11.5px; line-height: 1.35;
}
.ffk-club-spe-d { font-weight: 700; color: #1C3C8C; letter-spacing: .02em; }
.ffk-club-spe-sep { color: #A8B6CE; }
.ffk-club-spe-s { color: #5A6B85; }

/* Actualités du club */
.ffk-club-actus-vide { font-size: 13px; color: #65718A; line-height: 1.5; margin: 0; }
.ffk-club-actus-cta {
	display: inline-block; margin-top: 12px;
	font: 700 12.5px "Space Grotesk", system-ui, sans-serif;
	color: #1C3C8C; text-decoration: none;
	border: 1px solid #C9D8F5; border-radius: 10px; padding: 8px 14px;
}
.ffk-club-actus-cta:hover { background: #F1F5FC; }
.ffk-club-actus-cta:focus-visible { outline: 3px solid #5EE0C0; outline-offset: 2px; }

/* Rattachement fédéral */
.ffk-club-rattach { margin-top: 16px; }

/* Libellé d'une info de fiche (Adresse, Professeur, Comité…) : sur sa propre
   ligne, en capitales discrètes, au-dessus de la valeur. Sans ce style, le
   label et la valeur se collaient : « AdresseSALLE POLYVALENTE… ». */
.ffk-club-lbl {
	display: block;
	font-size: 10.5px; font-weight: 700; letter-spacing: .06em;
	text-transform: uppercase; color: #697595;
	margin-bottom: 2px;
}

/* Retour visible de la recherche de proximité (erreurs, localisation en cours). */
.ffk-geo-etat { margin: 6px 2px 0; font-size: 13px; line-height: 1.4; color: #1C3C8C; font-weight: 600; min-height: 0; }
.ffk-geo-etat:empty { display: none; }
.ffk-geo-locate.is-loading svg { animation: ffkGeoSpin 1s linear infinite; }
@keyframes ffkGeoSpin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .ffk-geo-locate.is-loading svg { animation: none; } }

/* Site du club aligné avec le reste de la fiche ; pastilles de discipline
   protégées des polices et casses imposées par le CSS de la grille. */
.wp-grid-builder .wpgb-card .wpgb-block-8 { text-align: left !important; }
.wp-grid-builder .wpgb-card .ffk-spe-pastille {
	font-family: "Plus Jakarta Sans", system-ui, sans-serif !important;
	font-size: 10.5px !important; font-weight: 700 !important; letter-spacing: .03em;
	padding: 4px 9px !important; border-radius: 20px; background: #EEF3FC !important; color: #1C3C8C !important;
	text-transform: uppercase; line-height: 1.2; white-space: normal;
}

/* Infobulle enrichie d'un club (inc/ffk-clubs.php › ffk_clubs_marker_content) */
.wpgb-map-facet .leaflet-popup-content:has(.ffk-pop) { width: 300px !important; }
/* Marge intérieure portée par .ffk-pop : la feuille du module carte impose
   « margin: 0 !important » au contenu et « padding: 0 » à l'enveloppe, et elle
   est chargée après la nôtre (24/09/2026 : le texte touchait le bord). */
.wpgb-map-facet .ffk-pop { padding: 18px 20px 20px; box-sizing: border-box; }
.ffk-pop-titre { margin: 0 26px 6px 0; font-family: 'Space Grotesk', sans-serif; font-size: 15px; line-height: 1.25; font-weight: 700; }
.wpgb-map-facet .leaflet-popup-content .ffk-pop-titre a { color: #101A33; text-decoration: none; }
.wpgb-map-facet .leaflet-popup-content .ffk-pop-titre a:hover { color: #E4174B; }
.ffk-pop-adr { margin: 0 0 8px !important; font-size: 12.5px; line-height: 1.45; color: #5E6880; text-transform: uppercase; letter-spacing: .01em; }
.ffk-pop-spe { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px; }
.ffk-pop-plus { font-size: 11px; font-weight: 700; color: #5E6880; align-self: center; }
.ffk-pop-act { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; }
.wpgb-map-facet .leaflet-popup-content a.ffk-pop-btn { display: inline-flex; align-items: center; gap: 6px; background: #1C3C8C; color: #fff; font-size: 13px; font-weight: 700; padding: 8px 14px; border-radius: 100px; text-decoration: none; white-space: nowrap; }
.wpgb-map-facet .leaflet-popup-content a.ffk-pop-btn:hover { background: #E4174B; }
.wpgb-map-facet .leaflet-popup-content a.ffk-pop-tel { font-size: 12.5px; font-weight: 600; color: #1C3C8C; text-decoration: none; white-space: nowrap; }

/* Police du site sur les cartes de club : la police Montserrat que WP Grid
   Builder demandait à Google n'est plus chargée (inc/ffk-clubs.php).
   Spécificité volontairement basse (:where) : les règles du thème qui posent
   Space Grotesk sur le nom du club gardent la main. */
:where(.wp-grid-builder .wpgb-card) [class*="wpgb-block-"],
:where(.wpgb-facet) .wpgb-reset { font-family: "Plus Jakarta Sans", system-ui, sans-serif !important; }
