/**
 * citivo-carte-decouverte.css
 *
 * Chantier Découverte, sous-étape 7b : en-tête de la carte publique, boutons
 * flottants, et lightbox des découvertes.
 *
 * ⚠️⚠️ 0.99.399 — CARTE UNIQUE : ~~la barre de bascule et la seconde carte~~
 * sont retirées. L'en-tête porte les boutons à option « Découvertes » /
 * « Signalements » (`.citivo-split`), la carte le bouton « + Ajouter »
 * (`.citivo-carte-fabs`, 0.99.400), et les messages « aucun résultat »
 * s'empilent.
 *
 * ⚠️ COMPLÉMENT de citivo-carte-publique.css, jamais un remplacement — ce
 * fichier est chargé APRÈS lui (dépendance déclarée à l'enqueue) et ne
 * redéfinit aucune de ses règles. Tout le socle visuel de la lightbox (fond,
 * boîte, bouton fermer, image, méta) est MUTUALISÉ : le balisage des deux
 * lightbox diverge, leur présentation non. On ne trouve donc ici que ce qui
 * est propre aux découvertes.
 *
 * ⚠️ SPÉCIFICITÉ CONTRE LE THÈME SANS `!important`, règle absolue du projet :
 * tout est préfixé par `.citivo-carte-publique-container`, ce qui suffit à
 * battre les règles génériques de Hello/Astra sur `button` et `h2`. ⚠️ Aucune
 * exception `!important` dans ce fichier : la seule légitime du plugin
 * (neutraliser `.leaflet-div-icon`) vit déjà dans citivo-carte-publique.css et
 * s'applique aux deux cartes, les pins partageant la classe `.citivo-map-pin`.
 *
 */

/* ── Ligne d'en-tête commune (sous-étape 9a) ─────────────────────────────────
   Les boutons de filtres sur une seule rangée, au-dessus de la carte.
   0.99.399 : un bouton à option par type affiché (~~la bascule et le bouton
   « Filtrer » du seul mode actif~~).

   ⚠️ `align-items: flex-start` et non `center` : sans quoi les deux enfants
   s'étireraient à la hauteur du plus grand, et le bouton « Filtrer » ne ferait
   plus la taille d'un bouton.

   ⚠️⚠️ CORRECTIF 0.85.3 — C'EST CETTE RANGÉE QUI ANCRE LE PANNEAU DE FILTRES,
   plus le bouton. Le panneau est en position absolue avec `left: 0` : il se
   cale donc sur le bord gauche de son premier ancêtre positionné. Tant que
   c'était `.citivo-filters`, le panneau partait du bord gauche du BOUTON
   — lequel a glissé vers la droite en 9a, derrière la bascule — et sortait de
   l'écran par la droite, coupé.
   ⚠️ En posant l'ancre ici, `left: 0` redevient le bord gauche de la page :
   le panneau s'ouvre sous le bouton, aligné à gauche, entièrement visible.
   ⚠️ Effet de bord bienvenu : la largeur du panneau ne dépend plus du tout de
   celle du bouton, donc l'apparition d'« Effacer » ne peut plus la déplacer —
   c'était la cause du symptôme corrigé en 0.85.1. */

.citivo-carte-publique-container .citivo-carte-header {
	/* ⚠️ 0.99.384 — `sticky` (~~`relative`~~, qui ancrait déjà le panneau :
	   un élément collant reste un ancêtre positionné). Dans l'application
	   installée, le bloc dépassait la hauteur visible : en bas de page, la
	   rangée sortait par le haut et la carte, qui capte le doigt, empêchait de
	   remonter (le bouton « haut de page » du thème n'apparaît pas sur une page
	   aussi courte). Collée en haut de l'écran, elle reste toujours à portée.
	   Sans effet tant que le bloc tient dans l'écran (navigateur).
	   ⚠️ Fond blanc et `z-index: 3` : elle passe AU-DESSUS de la carte
	   (`z-index: 1`) ET du bouton « Proposer » / « Signaler » (`z-index: 2`,
	   plus bas) — le panneau de filtres, qu'elle contient, ne peut pas monter
	   plus haut qu'elle (0.99.385 : à 2, le bouton, placé après dans la page,
	   passait devant le panneau ouvert). */
	/* ⚠️⚠️ 0.99.470 — RENVERSÉ par Olivier : ~~`sticky`~~, la rangée restait
	   en haut pendant que la carte défilait dessous (téléphone). Elle défile
	   avec la page, comme à l'ordinateur : les pages à carte n'ont pas de pied
	   de page, et en bas de page la rangée + la carte font exactement la
	   hauteur de l'écran (`100dvh` du conteneur). `relative` garde l'ancre du
	   panneau de filtres. */
	position: relative;
	z-index: 3;
	background: #fff;

	/* ⚠️ SOUS-ÉTAPE 9b — la rangée garde sa taille naturelle et ne se laisse
	   jamais comprimer : le conteneur est devenu une colonne flex de la hauteur
	   de l'écran, et sans ce `0 0 auto` la rangée se serait tassée pour laisser
	   de la place à la carte. C'est aussi la seule zone tactile qui reste au
	   doigt pour faire défiler la page une fois la carte plein écran. */
	flex: 0 0 auto;

	display: flex;
	/* ⚠️ 0.99.236 — `center` et non plus `flex-start` (relevé par Olivier) :
	   la bascule (~48 px, avec son liseré de 4 px) est plus haute que
	   « Filtrer » (40 px), et un alignement en haut laissait le lien visiblement
	   remonté par rapport à elle. */
	align-items: center;
	flex-wrap: wrap;
	gap: .6rem;

	/* ⚠️ 0.86.1 — MARGE SUR LES QUATRE CÔTÉS. Le bloc va désormais d'un bord à
	   l'autre de la fenêtre : sans marge haute et latérales, les boutons
	   touchaient le bord de l'écran. La carte, elle, reste volontairement à
	   fleur de bord — c'est la rangée d'outils qui respire, pas la carte.
	   ⚠️ Ces marges sont prises sur la hauteur du bloc, pas ajoutées : la carte
	   occupe l'espace restant, le total ne dépasse donc pas l'écran.
	   ⚠️ 0.99.384 — en `padding` (~~`margin`~~) : collée en haut, la rangée
	   doit couvrir toute la largeur de son fond blanc, sans laisser la carte
	   apparaître dans la marge. Même espace, même hauteur totale. */
	padding: .5rem;
}

/* ⚠️ On NEUTRALISE l'ancre historique, sinon elle resterait la plus proche et
   gagnerait — l'ancêtre positionné le plus PROCHE l'emporte, pas le plus large.
   ⚠️ Neutralisation scopée à la rangée plutôt que posée sur `.citivo-filters`
   directement : ce bloc n'est utilisé nulle part ailleurs aujourd'hui (le tableau
   de bord mairie a ses propres `.citivo-ms-filters-*`), mais scoper coûte un
   sélecteur et évite d'avoir à y repenser le jour où il servira ailleurs. */
.citivo-carte-publique-container .citivo-carte-header .citivo-filters {
	position: static;
}

/* ⚠️ 0.99.384 — la rangée porte désormais un `padding` (~~`margin`~~) : le
   panneau, ancré sur son bord intérieur, est replacé à la même distance du
   bord qu'avant (et son plafond de largeur suit). */
.citivo-carte-publique-container .citivo-carte-header .citivo-filters-panel {
	left: .5rem;
	max-width: min( 420px, calc( 100% - 1rem ) );
}

/* Chaque emplacement ne prend que la place de son bouton. */
.citivo-carte-publique-container .citivo-carte-filters-slot {
	flex: 0 0 auto;
	/* ⚠️ Le panneau déroulant s'ancre sur `.citivo-filters`, qui est déjà
	   `position: relative` — cette enveloppe ne doit surtout pas créer un second
	   point d'ancrage, elle reste donc en position statique. */
}

/* ⚠️ 0.99.236 → 0.99.237 : le style « lien » du bouton « Filtrer » a quitté
   cette feuille pour la variante `.citivo-filters--lien` de
   citivo-filters-shared.css — les écrans de gestion le partagent désormais. */

/* ⚠️ La marge basse du bloc de filtres passe sur la ligne d'en-tête :
   conservée, elle s'ajouterait à celle du conteneur et creuserait un écart
   sous la rangée. */
.citivo-carte-publique-container .citivo-carte-header .citivo-filters {
	margin-bottom: 0;
}

/* ── 0.99.399 — Boutons à option « Découvertes » / « Signalements » ─────────
   Partie principale (`.citivo-split-main`) : afficher / masquer le type ;
   partie droite : le bouton « Filtrer » du type (Citivo_Filters, argument
   `principal`), dont le libellé est masqué — restent l'icône de filtre
   (0.99.400, ~~un chevron~~) et le compteur de filtres actifs.
   ⚠️ COULEURS DES TYPES fixées par Olivier (0.99.400) : découverte = bleu du
   thème #315BA3, signalement = orange #E04D00 (~~vert #007F6E, orange
   #C64B18~~) — les mêmes que les badges du fil et que les pins
   (Citivo_Carte_Publique::COULEUR_*).
   ⚠️⚠️ 0.99.407 — ÉTATS INVERSÉS (Olivier : les aplats de couleur étaient
   « trop forts, trop présents » au-dessus de la carte). ACTIF = fond blanc,
   bordure, texte et icône à la couleur du type (~~aplat, texte blanc~~) ;
   MASQUÉ (`.is-off`) = tout en GRIS : bordure #ccc, texte et icône #aaa
   (~~fond blanc, contour coloré~~ — #ccc seul serait illisible en texte).
   Une seule variable par état (`--citivo-split-c`), redéfinie par `.is-off`.
   ⚠️ `background` et `color` re-déclarés sur chaque état (le thème colore les
   boutons au survol), spécificité supérieure à `.citivo-filters--lien`.
   ⚠️ Validé sur téléphone par Olivier (essai `[citivo_carte_unifiee]`,
   0.99.397-398). */
.citivo-carte-publique-container .citivo-split {
	--citivo-split-c: #315ba3;
	--citivo-split-texte: var( --citivo-split-c );
	display: inline-flex;
	align-items: stretch;
	border: 2px solid var( --citivo-split-c );
	border-radius: 999px;
	overflow: hidden;
	vertical-align: middle;
	background: #fff;
}

.citivo-carte-publique-container .citivo-split[data-type="signalements"] {
	--citivo-split-c: #e04d00;
}

.citivo-carte-publique-container .citivo-split[data-type="decouvertes"] {
	--citivo-split-c: #315ba3;
}

/* Type masqué : tout en gris. */
.citivo-carte-publique-container .citivo-split.is-off {
	--citivo-split-c: #ccc;
	--citivo-split-texte: #aaa;
}

.citivo-carte-publique-container .citivo-split .citivo-split-main,
.citivo-carte-publique-container .citivo-split .citivo-filters-toggle {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	margin: 0;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	background: #fff;
	color: var( --citivo-split-texte );
	font: inherit;
	/* ⚠️ 0.99.409-411 — un cran plus petit (~~`--citivo-fs-action`~~) et
	   rembourrages resserrés (libellé .5rem, partie filtre .3rem, voir
	   ci-dessous) : demande d'Olivier, les deux boutons doivent tenir sur UNE
	   ligne de téléphone même avec leurs compteurs de filtres — 4 px de marge
	   seulement à 360 px (mesuré), à remesurer avant d'élargir quoi que ce soit. */
	font-size: var( --citivo-fs-texte );
	font-weight: 600;
	line-height: 1.3;
	cursor: pointer;
}

.citivo-carte-publique-container .citivo-split .citivo-split-main {
	padding: .5rem;
	white-space: nowrap;
}

/* ⚠️ 0.99.411 — .3rem ici (~~.5rem~~ en 410) : à .5rem des deux côtés, les
   deux boutons avec compteurs passaient sur DEUX lignes à 360-390 px de
   large (337 px de boutons pour 329 utiles, mesuré). Le libellé garde .5rem.
   ⚠️ 0.99.434 — .45rem (demande d'Olivier : l'icône manquait d'air), possible
   depuis que les boutons occupent la rangée en deux moitiés (0.99.433).
   Mesuré : une ligne dès 360 px, même avec « 12 » sur les deux compteurs
   (à .5rem, il manquait 3 px dans ce cas). */
.citivo-carte-publique-container .citivo-split .citivo-filters-toggle {
	padding: .5rem .45rem;
	border-left: 1px solid var( --citivo-split-c );
}

/* ⚠️ 0.99.413 — TABLETTE ET ORDINATEUR (au-delà de 600 px, le palier de
   citivo-typo.css) : la place ne manque pas, on rend la taille de texte et
   les rembourrages d'avant la 0.99.409 (demande d'Olivier). Les réglages
   resserrés ci-dessus ne valent donc que pour le téléphone. */
@media ( min-width: 601px ) {

	.citivo-carte-publique-container .citivo-split .citivo-split-main,
	.citivo-carte-publique-container .citivo-split .citivo-filters-toggle {
		font-size: var( --citivo-fs-action );
	}

	.citivo-carte-publique-container .citivo-split .citivo-split-main {
		padding: .5rem .9rem .5rem 1.1rem;
	}

	.citivo-carte-publique-container .citivo-split--seul .citivo-split-main {
		padding-right: 1.1rem;
	}

	.citivo-carte-publique-container .citivo-split .citivo-filters-toggle {
		padding: .5rem .6rem;
	}
}

/* ⚠️ 0.99.433 — TÉLÉPHONE (jusqu'à 600 px, même palier) : les deux boutons
   à option se partagent la rangée, une MOITIÉ chacun, et s'élargissent avec
   l'écran (demande d'Olivier : alignés à gauche, ils paraissaient étriqués
   au-delà de 320 px). Libellé centré dans sa partie, partie filtre à droite.
   Seulement quand la carte montre les DEUX types (sinon pas de bouton à
   option). `min-width: auto` gardé : si les deux ne tiennent pas, la rangée
   passe sur deux lignes, comme avant. Ordinateur et tablette inchangés. */
@media ( max-width: 600px ) {

	.citivo-carte-publique-container[data-types~="decouvertes"][data-types~="signalements"] .citivo-carte-filters-slot {
		flex: 1 1 0;
	}

	.citivo-carte-publique-container[data-types~="decouvertes"][data-types~="signalements"] .citivo-carte-filters-slot .citivo-split {
		display: flex;
		flex: 1 1 auto;
	}

	.citivo-carte-publique-container[data-types~="decouvertes"][data-types~="signalements"] .citivo-split .citivo-split-main {
		flex: 1 1 auto;
		justify-content: center;
	}
}

/* Survol, focus, panneau ouvert : voile léger de la couleur du type (gris
   pour un type masqué). `#f4f4f4` d'abord, pour un navigateur sans
   `color-mix()`. */
.citivo-carte-publique-container .citivo-split .citivo-split-main:hover,
.citivo-carte-publique-container .citivo-split .citivo-split-main:focus,
.citivo-carte-publique-container .citivo-split .citivo-filters-toggle:hover,
.citivo-carte-publique-container .citivo-split .citivo-filters-toggle:focus,
.citivo-carte-publique-container .citivo-split .citivo-filters-toggle[aria-expanded="true"] {
	background: #f4f4f4;
	background: color-mix( in srgb, var( --citivo-split-c ) 10%, #fff );
	color: var( --citivo-split-texte );
}

.citivo-carte-publique-container .citivo-split .citivo-split-main:focus-visible,
.citivo-carte-publique-container .citivo-split .citivo-filters-toggle:focus-visible {
	outline: 2px solid var( --citivo-split-c );
	outline-offset: -4px;
}

/* 0.99.408 — Ligne de titre du panneau d'un bouton à option : « Filtres : »
   à gauche, « Effacer » à droite (visible seulement si un filtre est
   coché, CitivoFilters). Hauteur fixe : la ligne ne saute pas quand
   « Effacer » apparaît. */
.citivo-carte-publique-container .citivo-filters-panel-entete {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 28px;
	margin: 0 0 10px;
}

.citivo-carte-publique-container .citivo-filters-panel-titre {
	font-size: var( --citivo-fs-secondaire );
	font-weight: 700;
	color: #1d2327;
}

.citivo-carte-publique-container .citivo-filters-panel-entete .citivo-filters-reset {
	/* 0.99.430 — « × Effacer » en lien bleu (bleu du thème, demande
	   d'Olivier) : la croix devant, le libellé souligné. */
	display: inline-flex;
	align-items: center;
	gap: 4px;
	min-height: 0;
	margin: 0;
	padding: 2px 0;
	color: #315BA3;
	text-decoration: none;
}

.citivo-carte-publique-container .citivo-filters-panel-entete .citivo-filters-reset span {
	text-decoration: underline;
}

/* Le thème colore le survol des boutons : on garde le lien. */
.citivo-carte-publique-container .citivo-filters-panel-entete .citivo-filters-reset:hover,
.citivo-carte-publique-container .citivo-filters-panel-entete .citivo-filters-reset:focus {
	background: transparent;
	color: #24467f;
}

/* ⚠️ La garde du projet : le `display` ci-dessus battrait l'attribut `hidden`
   (« Effacer » n'apparaît que si un filtre est coché). */
.citivo-carte-publique-container .citivo-filters-panel-entete .citivo-filters-reset[hidden] {
	display: none;
}

/* La partie droite ne garde que l'icône de filtre et le compteur de filtres
   actifs (le libellé « Filtrer » passe par `aria-label`). */
.citivo-carte-publique-container .citivo-split .citivo-filters-toggle > span:not( .citivo-filters-badge ) {
	display: none;
}

/* ── Boutons d'action flottants ──────────────────────────────────────────
   En haut à droite de la carte, dans `.citivo-carte-fabs` : « + Ajouter »
   et son menu quand la carte montre les deux types (0.99.400, ~~« Signaler »
   et « Proposer » empilés~~), sinon le bouton direct du seul type.

   ⚠️ `z-index: 2` suffit à passer au-dessus de TOUTE la carte, contrôles
   Leaflet compris : le conteneur de carte porte `z-index: 1` et forme donc son
   propre contexte d'empilement — ses enfants, si haut soient-ils, ne peuvent
   pas en sortir. Inutile de surenchérir ici.

   ⚠️ 0.86.2 — EN HAUT À DROITE (demande d'Olivier) : Leaflet place ses
   boutons de zoom en haut à GAUCHE et l'attribution en bas à droite. ─────── */
.citivo-carte-publique-container .citivo-carte-fabs {
	position: absolute;
	top: 14px;
	right: 14px;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 8px;
}

.citivo-carte-publique-container .citivo-carte-fab {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	padding: .7rem 1.15rem;
	border-radius: 999px;
	background: #315ba3;
	color: #fff;
	font-size: var( --citivo-fs-action );
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	box-shadow: 0 3px 12px rgba( 0, 0, 0, .3 );
	transition: background-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

/* ⚠️ `color` re-déclaré sur les états : les thèmes posent presque toujours
   leurs propres couleurs de lien au survol et au focus, ce qui rendrait le
   libellé illisible sur l'aplat bleu. */
.citivo-carte-publique-container .citivo-carte-fab:hover,
.citivo-carte-publique-container .citivo-carte-fab:focus {
	background: #274a86;
	color: #fff;
	text-decoration: none;
	box-shadow: 0 5px 16px rgba( 0, 0, 0, .36 );
}

.citivo-carte-publique-container .citivo-carte-fab:focus-visible {
	outline: 2px solid #fff;
	outline-offset: -4px;
}

.citivo-carte-publique-container .citivo-carte-fab-icon {
	flex: 0 0 auto;
}

/* ── 0.99.400 — Bouton à option « + Ajouter » ───────────────────────────
   Remplace « + Signaler » et « + Proposer » empilés quand la carte montre
   les deux types (demande d'Olivier) : même aspect que le bouton flottant,
   mais c'est un <button> — d'où la remise à zéro de ce que le thème pose
   sur les boutons (bordure, police, couleurs au survol). Le menu s'ouvre
   dessous, aligné à droite (mécanique CitivoDropdown, `hidden`). */
.citivo-carte-publique-container .citivo-carte-ajouter-toggle {
	margin: 0;
	border: 0;
	font-family: inherit;
	cursor: pointer;
}

.citivo-carte-publique-container .citivo-carte-ajouter-toggle:hover,
.citivo-carte-publique-container .citivo-carte-ajouter-toggle:focus,
.citivo-carte-publique-container .citivo-carte-ajouter-toggle[aria-expanded="true"] {
	background: #274a86;
	color: #fff;
}

.citivo-carte-publique-container .citivo-carte-ajouter-menu {
	display: flex;
	flex-direction: column;
	min-width: 11rem;
	padding: 6px;
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 4px 16px rgba( 0, 0, 0, .25 );
}

/* ⚠️ Le `display` ci-dessus battrait l'attribut `hidden`. */
.citivo-carte-publique-container .citivo-carte-ajouter-menu[hidden] {
	display: none;
}

.citivo-carte-publique-container .citivo-carte-ajouter-option {
	display: flex;
	align-items: center;
	gap: .6rem;
	padding: .65rem .8rem;
	border-radius: 8px;
	color: #1d2327;
	font-size: var( --citivo-fs-action );
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
}

.citivo-carte-publique-container .citivo-carte-ajouter-option:hover,
.citivo-carte-publique-container .citivo-carte-ajouter-option:focus {
	background: #f0f3f8;
	color: #1d2327;
	text-decoration: none;
}

/* Pastille à la couleur du type (mêmes teintes que les pins). */
.citivo-carte-publique-container .citivo-carte-ajouter-pastille {
	flex: 0 0 auto;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: #315ba3;
}

.citivo-carte-publique-container .citivo-carte-ajouter-option[data-type="signalements"] .citivo-carte-ajouter-pastille {
	background: #e04d00;
}

/* ── Panneau de la carte ─────────────────────────────────────────────────
   Ancre des boutons flottants et des messages (position absolue). */

.citivo-carte-publique-container .citivo-carte-panneau {
	position: relative;
}

/* ── 0.99.399 — Messages « aucun résultat » empilés ──────────────────────
   Un par type affiché, au centre de la carte : ils peuvent s'afficher
   ensemble (zone vide des deux côtés), donc la PILE porte le centrage et
   chaque message reprend sa place dans le flux.
   ⚠️ `pointer-events: none`, comme les messages : jamais un geste bloqué. */
.citivo-carte-publique-container .citivo-carte-messages {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate( -50%, -50% );
	z-index: 400;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	width: max-content;
	max-width: calc( 100% - 2rem );
	pointer-events: none;
}

.citivo-carte-publique-container .citivo-carte-messages .citivo-carte-filters-empty {
	position: static;
	transform: none;
}

@media ( max-width: 600px ) {

	.citivo-carte-publique-container .citivo-carte-fabs {
		top: 10px;
		right: 10px;
	}

	.citivo-carte-publique-container .citivo-carte-fab {
		padding: .65rem 1rem;
		font-size: var( --citivo-fs-action );
	}
}

/* ── Lightbox des découvertes ────────────────────────────────────────────
   Seuls les blocs propres aux découvertes sont stylés ici : le titre saisi,
   la catégorie, l'auteur institutionnel et le temps restant. Le reste vient
   des classes .citivo-lightbox* déjà définies. ──────────────────────────── */

.citivo-dec-lightbox .citivo-dec-lightbox-titre {
	margin: 0 0 .35rem;
	font-size: 1.25rem;
	font-weight: 600;
	line-height: 1.3;
	color: #222;
}

.citivo-dec-lightbox .citivo-dec-lightbox-categorie {
	display: inline-block;
	margin: 0 0 .6rem;
	padding: .15rem .55rem;
	border-radius: 999px;
	background: #eef4f8;
	color: #24688f;
	font-size: var( --citivo-fs-pastille );
	font-weight: 600;
	line-height: 1.5;
}

/* ⚠️ 0.99.337 : ~~description, auteur, expiration~~ — ces lignes sont écrites
   et habillées par le bloc commun des fiches (citivo-fiche-infos.css). */

/* Règles [hidden] explicites sur les blocs optionnels — même correction que
   celle déjà appliquée dans citivo-carte-publique.css : sans elles, une règle
   d'affichage du thème sur `p` peut l'emporter sur l'attribut et laisser
   apparaître un bloc vide. */
.citivo-dec-lightbox .citivo-dec-lightbox-categorie[hidden],
.citivo-dec-lightbox .citivo-lightbox-img-wrap[hidden] {
	display: none;
}

/* ─────────────────────────────────────────────────────────────────────────
   ZONE PRIVÉE — BOUTON « SIGNALER » DANS L'EN-TÊTE, À DROITE
   Demande d'Olivier du 22/08/2026. Les signalements d'une zone privée sont
   exclus de toutes les cartes publiques : la carte n'y montre que les
   découvertes, et le bouton « Signaler » — qui vit normalement en surcouche
   de la carte — remonte dans l'en-tête.
   ⚠️ 0.99.399 : ~~le titre à la place de la bascule, la bascule gardée dans le
   DOM~~ — la bascule n'existe plus.
   ───────────────────────────────────────────────────────────────────────── */

/* ⚠️⚠️ 0.99.171 — L'EN-TÊTE DE ZONE EST HABILLÉ ICI, ET PAS DANS LA FEUILLE DU
   MODULE « SUIVRE ». Il est produit par `Citivo_Carte_Publique::render_zone_header()`,
   c'est donc du balisage de la CARTE : sa mise en page lui appartient. Le
   module, lui, ne connaît que `.citivo-suivre`.
   ⚠️ **C'est exactement cette confusion qui a produit le défaut de 0.99.170** :
   la feuille du module habillait `.citivo-carte-titre`, une classe de la carte
   qui portait déjà sa propre règle de même spécificité — chargée après, donc
   gagnante. *Deux feuilles qui habillent le même élément, c'est un arbitrage
   d'ordre de chargement, pas une intention.*
   ⚠️ `margin: .5rem` sur les quatre côtés, comme la rangée d'outils en 0.86.1 :
   la page est en pleine largeur, et sans marge le titre touche le bord. */
/* ⚠️ 0.99.438 : l'en-tête est sorti du bloc de la carte, dans
   `.citivo-carte-zone-entete` (avec les blocs « Informations ») — les
   sélecteurs de cet en-tête passent par ce parent, plus par le conteneur de
   carte. Spécificité inchangée (0,2,0). */
.citivo-carte-zone-entete .citivo-carte-zone-header {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: .5rem;

	/* ⚠️⚠️ 0.99.173 — LE PADDING N'EST PAS UN DOUBLON DE LA MARGE, ET LA MESURE
	   EXPLIQUE POURQUOI. Le parent qui enveloppe le shortcode applique un
	   débordement pleine largeur (`margin-left` négatif, calé sur `100vw`) :
	   le conteneur commence à **-8 px** du bord réel, et la marge de `.5rem`
	   est donc exactement ANNULÉE. Mesuré : l'en-tête et la rangée d'outils
	   tombent tous deux à `left: 0.3`.
	   ⚠️ Si la rangée d'outils, elle, ne touche pas le bord, c'est que ses
	   BOUTONS portent leur propre padding — un titre nu n'en a aucun et
	   démarre à 0 pile. *Deux blocs à la même position ne se voient pas au
	   même endroit si l'un a un contenu qui respire et l'autre non.*
	   ⚠️ Un padding, et non une marge plus grande : il vit À L'INTÉRIEUR du
	   bloc, donc il ne peut pas être mangé par le débordement du parent, quelle
	   que soit la largeur de la barre de défilement. */
	padding-inline: .5rem;
}

/* ⚠️⚠️ R5e — LE BOUTON « SUIVRE » DE LA PAGE DE ZONE REPREND LE STYLE DU
   BOUTON « FILTRER » : fond blanc, bordure grise (demande d'Olivier du 22/09).
   Les valeurs sont celles de `.citivo-filters-toggle` dans
   citivo-filters-shared.css — recopiées et non héritées, parce que les deux
   boutons n'ont aucune raison de rester liés : *emprunter une classe pour son
   apparence, c'est hériter de tout ce qu'elle porte déjà*, et c'est exactement
   ce qui a coûté deux passes en 0.99.172.

   ⚠️⚠️ LE SÉLECTEUR PASSE PAR LE PARENT, ET CE N'EST PAS DÉCORATIF :
   `.citivo-suivre` seul aurait la MÊME spécificité (0,1,0) que la règle du
   module, et c'est alors l'ordre de chargement qui trancherait. */
.citivo-carte-zone-entete .citivo-carte-zone-header .citivo-suivre {
	min-height: 40px;
	padding: 8px 14px;
	border: 1px solid #cccccc;
	border-radius: 20px;
	background: #ffffff;
	color: #333333;
	font-size: var( --citivo-fs-texte );
	font-weight: 600;
}

/* ⚠️ `color` re-déclaré sur CHAQUE état — voir citivo-abonnement.css. */
.citivo-carte-zone-entete .citivo-carte-zone-header .citivo-suivre:hover,
.citivo-carte-zone-entete .citivo-carte-zone-header .citivo-suivre:focus {
	background: #f4f6f9;
	color: #333333;
	text-decoration: none;
}

/* ⚠️ L'état « Suivi » se marque par la BORDURE et le texte, jamais par un
   aplat : le bouton reste un lien discret, et c'est l'icône (cercle avec un
   `−`) plus le libellé qui portent l'information. */
.citivo-carte-zone-entete .citivo-carte-zone-header .citivo-suivre[aria-pressed="true"] {
	border-color: #315ba3;
	background: #ffffff;
	color: #315ba3;
}

.citivo-carte-zone-entete .citivo-carte-zone-header .citivo-suivre:focus-visible {
	outline: 2px solid #315ba3;
	outline-offset: 3px;
}

/* ⚠️⚠️ R5d-2 — LE ROND DU LIEU, À GAUCHE DU NOM DE LA ZONE : sa photo, ou le
   pin. Mêmes couleurs que le rond du fil (citivo-fil.css) pour une zone — le
   but de R5d est de retrouver la même icône sur les trois écrans —, mais plus
   grand : 40 px, la taille de l'aperçu de l'écran d'administration, et la
   hauteur du bouton « Suivre » voisin.
   ⚠️ `flex-shrink: 0` : sur un nom long, c'est le TITRE qui cède, jamais le
   rond (un rond qui s'ovalise se remarque).
   ⚠️ Sélecteurs qualifiés par le conteneur, comme tout cet en-tête : une
   classe seule aurait la spécificité d'une règle de thème. */
.citivo-carte-zone-entete .citivo-carte-zone-rond {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	border-radius: 999px;
	overflow: hidden;
	background: rgba( 49, 91, 163, .2 );
	color: #315ba3;
}

.citivo-carte-zone-entete .citivo-carte-zone-rond svg {
	width: 20px;
	height: 20px;
}

/* ⚠️ Dimensions explicites ET `max-width: none` : les thèmes posent
   `img { height: auto; max-width: 100% }`, qui laisserait le carré de 128 px
   à sa hauteur naturelle. */
.citivo-carte-zone-entete .citivo-carte-zone-rond img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
}

.citivo-carte-zone-entete .citivo-carte-titre {
	/* ⚠️ `margin: 0` explicite : les thèmes posent presque tous une marge
	   verticale sur les titres, qui désalignerait la rangée flex. */
	margin: 0;
	font-size: 1.25rem;
	line-height: 1.3;
	font-weight: 700;

	/* ⚠️⚠️ 0.99.171 — `flex: 0 1 auto` ET NON ~~`1 1 auto`~~, ET LE CHANGEMENT
	   D'INTENTION EST TOUT LE SUJET. Cette déclaration disait « occupe l'espace
	   disponible pour repousser le bouton à droite », ce qui était juste tant
	   que le titre vivait dans l'en-tête à bascule à côté du bouton « Signaler
	   un problème ». En R5a, ce titre-là a disparu
	   (`render_titre_decouvertes()` retiré) et **le SEUL consommateur restant
	   de la classe est l'en-tête de zone**, où Olivier veut le bouton « Suivre »
	   collé AU TITRE, pas au bord de l'écran.
	   ➡️ Le titre garde sa largeur naturelle et reste compressible — sur un nom
	   long, c'est toujours LUI qui cède, jamais le bouton.
	   ⚠️ `min-width: 0` reste indispensable : sans lui, un nom long refuserait
	   de rétrécir et pousserait le bouton hors de l'écran. */
	flex: 0 1 auto;
	min-width: 0;

	/* ⚠️ Aligné sur les filtres, dont la hauteur est celle d'un bouton. */
	align-self: center;
}

.citivo-carte-publique-container .citivo-carte-fab--entete {
	/* ⚠️⚠️ LA DÉCLARATION QUI COMPTE : le bouton de base est en
	   `position: absolute` (surcouche de carte). Dans l'en-tête il redevient
	   un élément de la rangée — sans ça, il se placerait par rapport au
	   conteneur et recouvrirait la carte. */
	position: static;

	/* ⚠️ Poussé à droite même si le titre venait à manquer : `margin-left:auto`
	   ne dépend pas de ce qu'il y a avant lui dans la rangée. */
	margin-left: auto;
	align-self: center;
	flex: 0 0 auto;

	/* ⚠️ Ombre allégée : la portée du bouton flottant sert à le détacher d'une
	   photo satellite. Sur le fond de page, elle ferait tache. */
	box-shadow: 0 1px 4px rgba( 0, 0, 0, .18 );
}

/* ⚠️⚠️ 0.99.171 — LA RÈGLE MOBILE EST RETIRÉE AVEC L'INTENTION QU'ELLE
   SERVAIT. ~~Sous 600 px, le titre prenait toute la largeur (`flex: 1 1 100%`)
   et le bouton passait dessous~~ : c'était le bon arbitrage pour « Signaler un
   problème », un libellé large qui se serait cassé sur deux lignes. Le bouton
   « Suivre » de R5a fait 76 px — il tient à côté du titre même sur un
   téléphone, et l'empiler éloignerait le geste de ce qu'il nomme.
   ⚠️ La laisser aurait été pire qu'inutile : `.citivo-carte-zone-header` ne
   porte pas de `flex-wrap`, donc `flex: 1 1 100%` y aurait produit un
   DÉBORDEMENT au lieu d'un retour à la ligne. *Une règle héritée ne se juge
   pas sur ce qu'elle dit, mais sur le conteneur où elle atterrit.* */
