/* =========================================================================
   Annuaire des producteurs APGQ — identité corporate minimaliste
   -------------------------------------------------------------------------
   Parti pris : outil de recherche de fournisseur, pas une vitrine. Surfaces
   blanches, filets d'un pixel, aucune ombre au repos, angles à 4px, hiérarchie
   portée par la typographie (Inter) et non par la décoration.

   COULEURS DE MARQUE
     #6EBB44  vert APGQ   — filets, pastilles, aplats, survols
     #A89532  or APGQ     — catégorie « membre associé »

   Aucune des deux teintes n'atteint 4.5:1 sur blanc (2.14:1 et 3.03:1) : elles
   servent donc aux ÉLÉMENTS (filets, fonds tintés, bordures), jamais au petit
   texte. Pour le texte et les commandes, deux déclinaisons foncées de la même
   teinte sont dérivées : #3D7A24 (5.24:1) et #7A6B23 (5.31:1).

   THÈME SOMBRE
   `theme="sombre"` sur le shortcode (ou `theme="auto"` pour suivre la
   préférence système) inverse surfaces et neutres.

   Surcharge depuis le thème — redéfinir sur .apgq-producteurs :
     --apgq-green / --apgq-green-ink / --apgq-green-soft
     --apgq-gold  / --apgq-gold-ink  / --apgq-gold-soft
     --apgq-ink / --apgq-muted / --apgq-line / --apgq-surface
     --apgq-radius / --apgq-font
   ========================================================================= */

.apgq-producteurs {
	/* Marque */
	--apgq-green: #6ebb44;
	--apgq-green-ink: #3d7a24;
	--apgq-green-soft: #eff8e9;
	--apgq-gold: #a89532;
	--apgq-gold-ink: #7a6b23;
	--apgq-gold-soft: #faf5e4;

	/* Neutres */
	--apgq-ink: #14181a;
	--apgq-muted: #5a6360;
	--apgq-line: #e3e7e4;
	--apgq-field-border: #8b938e;
	--apgq-surface: #ffffff;
	--apgq-surface-alt: #f7f9f7;

	/* Rôles */
	--apgq-accent: var(--apgq-green-ink);
	--apgq-accent-contrast: #ffffff;
	--apgq-marker-actif: var(--apgq-green);
	--apgq-marker-assoc: var(--apgq-gold);

	--apgq-radius: 4px;
	--apgq-gap: 1.25rem;
	--apgq-pad: 1.35rem;

	--apgq-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
		"Helvetica Neue", Arial, sans-serif;

	margin-block: 2.5rem;
	color: var(--apgq-ink);
	font-family: var(--apgq-font);
	font-feature-settings: "cv05", "ss01";
	-webkit-font-smoothing: antialiased;
	container-type: inline-size;
}

/* Thème sombre : mêmes teintes de marque, versions éclaircies pour le texte. */
.apgq-producteurs[data-scheme="sombre"] {
	--apgq-green-ink: #8fd46a;
	--apgq-green-soft: rgba(110, 187, 68, 0.14);
	--apgq-gold-ink: #dcc36a;
	--apgq-gold-soft: rgba(168, 149, 50, 0.16);

	--apgq-ink: #eef1ef;
	--apgq-muted: #a4aeaa;
	--apgq-line: rgba(255, 255, 255, 0.14);
	--apgq-field-border: rgba(255, 255, 255, 0.42);
	--apgq-surface: rgba(255, 255, 255, 0.03);
	--apgq-surface-alt: rgba(255, 255, 255, 0.05);
	--apgq-accent-contrast: #10200a;
}

@media (prefers-color-scheme: dark) {
	.apgq-producteurs[data-scheme="auto"] {
		--apgq-green-ink: #8fd46a;
		--apgq-green-soft: rgba(110, 187, 68, 0.14);
		--apgq-gold-ink: #dcc36a;
		--apgq-gold-soft: rgba(168, 149, 50, 0.16);

		--apgq-ink: #eef1ef;
		--apgq-muted: #a4aeaa;
		--apgq-line: rgba(255, 255, 255, 0.14);
		--apgq-field-border: rgba(255, 255, 255, 0.42);
		--apgq-surface: rgba(255, 255, 255, 0.03);
		--apgq-surface-alt: rgba(255, 255, 255, 0.05);
		--apgq-accent-contrast: #10200a;
	}
}

.apgq-producteurs *,
.apgq-producteurs *::before,
.apgq-producteurs *::after {
	box-sizing: border-box;
}

/* -------------------------------------------------------------------------
   Icônes : masques SVG teintés par currentColor, donc valides sur n'importe
   quel fond sans dupliquer les fichiers. Aucune requête réseau.
   ------------------------------------------------------------------------- */

.apgq-producteurs [class*="apgq-ico-"]::before {
	content: "";
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	margin-top: 0.15em;
	/* `mask` crée un contexte d'empilement : sans ceci, l'icône passe au-dessus
	   du recouvrement de carte cliquable et absorbe le clic. */
	pointer-events: none;
	background-color: #fff;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.apgq-ico-pin::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}

.apgq-ico-map::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6'/%3E%3Cline x1='8' y1='2' x2='8' y2='18'/%3E%3Cline x1='16' y1='6' x2='16' y2='22'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6'/%3E%3Cline x1='8' y1='2' x2='8' y2='18'/%3E%3Cline x1='16' y1='6' x2='16' y2='22'/%3E%3C/svg%3E");
}

.apgq-ico-tel::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.8 19.8 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.12 4.2 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.8 19.8 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.12 4.2 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
}

.apgq-ico-mail::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E");
}

.apgq-ico-web::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='2' y1='12' x2='22' y2='12'/%3E%3Cpath d='M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='2' y1='12' x2='22' y2='12'/%3E%3Cpath d='M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/%3E%3C/svg%3E");
}

/* -------------------------------------------------------------------------
   Micro-libellé — la brique typographique du système : 11px, capitales,
   interlettrage large. Sert aux étiquettes de champ, à la région et aux
   intitulés de la fiche.
   ------------------------------------------------------------------------- */

.apgq-filtre > span,
.apgq-region,
.apgq-info-label,
.apgq-fiche-infos dt {
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	line-height: 1.4;
}

/* -------------------------------------------------------------------------
   Barre de filtres — volontairement discrète : elle ne doit pas rivaliser
   avec les résultats.
   ------------------------------------------------------------------------- */

/* Flex plutôt que grid : le bouton reste sur la même ligne que les champs
   tant que la place le permet, au lieu de retomber seul sur une rangée. */
.apgq-filtres {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.85rem;
	padding: 1.15rem 1.25rem 1.25rem;
	margin-bottom: 1.5rem;
	border: 1px solid var(--apgq-line);
	border-radius: var(--apgq-radius);
	background: var(--apgq-surface-alt);
}

.apgq-filtre {
	display: flex;
	flex: 1 1 10rem;
	flex-direction: column;
	gap: 0.4rem;
	margin: 0;
	min-width: 0;
}

.apgq-filtre > span {
	color: var(--apgq-muted);
}

.apgq-filtre input,
.apgq-filtre select {
	width: 100%;
	min-height: 44px;
	padding: 0.55rem 0.75rem;
	border: 1px solid var(--apgq-field-border);
	border-radius: var(--apgq-radius);
	background: var(--apgq-surface);
	color: var(--apgq-ink);
	font-family: inherit;
	font-size: 0.9375rem;
	font-weight: 400;
	line-height: 1.3;
	text-overflow: ellipsis;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.apgq-filtre input::placeholder {
	color: var(--apgq-muted);
}

.apgq-filtre input:hover,
.apgq-filtre select:hover {
	border-color: var(--apgq-green-ink);
}

.apgq-filtres-actions {
	display: flex;
	flex: 0 0 auto;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
}

.apgq-submit {
	min-height: 44px;
	padding: 0.6rem 1.5rem;
	border: 1px solid transparent;
	border-radius: var(--apgq-radius);
	background: var(--apgq-accent);
	color: var(--apgq-accent-contrast);
	font-family: inherit;
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

.apgq-submit:hover {
	background: var(--apgq-green);
	color: #10200a;
}

.apgq-reset {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--apgq-muted);
	text-decoration: none;
	text-underline-offset: 3px;
	white-space: nowrap;
}

.apgq-reset:hover {
	color: var(--apgq-ink);
	text-decoration: underline;
}

/* Anneau de focus dérivé de la teinte de marque, épais et décalé. */
.apgq-producteurs :focus-visible {
	outline: 2px solid var(--apgq-green-ink);
	outline-offset: 2px;
	border-radius: 2px;
}

/* -------------------------------------------------------------------------
   Compteur de résultats
   ------------------------------------------------------------------------- */

.apgq-count {
	margin: 0 0 1rem;
	font-size: 0.875rem;
	font-weight: 400;
	color: var(--apgq-muted);
}

.apgq-count strong {
	color: var(--apgq-ink);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

/* -------------------------------------------------------------------------
   Grille — auto-fill : le nombre de colonnes demandé est un maximum, la
   grille retombe d'elle-même quand le conteneur est étroit.
   ------------------------------------------------------------------------- */

.apgq-grid {
	display: grid;
	gap: var(--apgq-gap);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
}

.apgq-cols-1 { grid-template-columns: 1fr; }
.apgq-cols-2 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr)); }
.apgq-cols-3 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }
.apgq-cols-4 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); }

/* -------------------------------------------------------------------------
   Carte producteur — surface blanche, filet d'un pixel, aucune ombre au
   repos. Un liseré de 3px en tête signale la catégorie d'adhésion, toujours
   doublé du badge texte : l'information n'est jamais portée par la seule
   couleur.
   ------------------------------------------------------------------------- */

.apgq-card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	min-width: 0;
	padding: calc(var(--apgq-pad) + 3px) var(--apgq-pad) var(--apgq-pad);
	border: 1px solid var(--apgq-line);
	border-radius: var(--apgq-radius);
	background: var(--apgq-surface);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.apgq-card::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 3px;
	background: var(--apgq-marker, transparent);
	border-radius: var(--apgq-radius) var(--apgq-radius) 0 0;
}

.apgq-card--actif { --apgq-marker: var(--apgq-marker-actif); }
.apgq-card--associe { --apgq-marker: var(--apgq-marker-assoc); }

.apgq-card:hover {
	border-color: var(--apgq-field-border);
	box-shadow: 0 1px 2px rgba(20, 24, 26, 0.04), 0 14px 28px -22px rgba(20, 24, 26, 0.4);
}

/* Carte cliquable — « stretched link » : le lien du titre couvre toute la
   carte via un ::after en position absolue. Un seul lien dans l'ordre de
   tabulation, avec le nom de l'entreprise comme intitulé accessible ; les
   liens de contact restent atteignables grâce au z-index. */
.apgq-card--lien .apgq-nom a::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
}

.apgq-card--lien:hover {
	border-color: var(--apgq-green);
}

.apgq-card--lien:hover .apgq-nom {
	color: var(--apgq-green-ink);
}

.apgq-card--lien:focus-within {
	outline: 2px solid var(--apgq-green-ink);
	outline-offset: 2px;
}

/* L'anneau porte sur la carte entière : celui du lien lui-même ferait double. */
.apgq-card--lien .apgq-nom a:focus-visible {
	outline: none;
}

/* Seuls les liens de contact passent au-dessus du recouvrement. Tout le reste
   reste inerte pour que le clic ouvre la fiche, badges compris. */
.apgq-card--lien .apgq-contact a {
	position: relative;
	z-index: 1;
}
.apgq-logo {
	margin-bottom: 0.35rem;
}

.apgq-logo img {
	max-width: 100%;
	height: auto;
	border-radius: 2px;
}

/* Éveil : la région passe avant le nom — premier critère de tri mental de
   quelqu'un qui cherche un fournisseur près de chez lui. */
.apgq-region {
	display: flex;
	align-items: flex-start;
	gap: 0.4rem;
	margin: 0;
	color: var(--apgq-muted);
	overflow-wrap: anywhere;
}

.apgq-region::before {
	margin-top: 0.05em;
}

.apgq-nom {
	margin: 0;
	font-family: inherit;
	font-size: 1.125rem;
	font-weight: 600;
	letter-spacing: -0.011em;
	line-height: 1.3;
	color: inherit;
	overflow-wrap: break-word;
	hyphens: auto;
	transition: color 0.15s ease;
}

.apgq-nom a {
	color: inherit;
	text-decoration: none !important;
}

.apgq-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	margin: 0;
}

.apgq-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.25rem 0.5rem;
	border: 1px solid var(--apgq-line);
	border-radius: 2px;
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	line-height: 1.3;
	background: var(--apgq-surface-alt);
	color: var(--apgq-muted);
}

/* Pastille : redondance visuelle du liseré de tête, à la taille du texte. */
.apgq-badge::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
}

.apgq-badge--actif {
	background: var(--apgq-green-soft);
	border-color: transparent;
	color: var(--apgq-green-ink);
}

.apgq-badge--associe {
	background: var(--apgq-gold-soft);
	border-color: transparent;
	color: var(--apgq-gold-ink);
}

.apgq-adresse {
	display: flex;
	align-items: flex-start;
	gap: 0.45rem;
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--apgq-muted);
	overflow-wrap: anywhere;
}

/* Bloc de contact ancré en bas : les cartes d'une rangée restent alignées
   même quand un membre n'a ni téléphone ni site. */
.apgq-contact {
	margin: auto 0 0;
	padding: 0.45rem 0 0 !important;
	border-top: 1px solid var(--apgq-line);
	list-style: none;
	font-size: 0.875rem;
	display: flex;
	gap: 18px;
}

.apgq-contact li {
	margin: 0;
	padding: 0;
}

.apgq-contact a {
	display: flex;
    width: 32px;
    height: 32px;
	min-height: inherit;
    background: #2A502C;
    border-radius: 50%;
    text-align: center;
    justify-content: center;
    align-items: center;
    padding-bottom: 4px !important;
	transition: 0.3s;
}

.apgq-contact a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
    background: #6EBB44;
}

.apgq-contact .apgq-tel a {
	font-variant-numeric: tabular-nums;
}

.apgq-contact li a span{
	display: none !important;
}

/* -------------------------------------------------------------------------
   Fiche individuelle — injectée sous le contenu par le filtre `the_content`,
   sans fichier de template : le thème garde la main sur la page.
   ------------------------------------------------------------------------- */

.apgq-fiche {
	padding: 1.75rem;
	border: 1px solid var(--apgq-line);
	border-top: 3px solid var(--apgq-marker, var(--apgq-line));
	border-radius: var(--apgq-radius);
	background: var(--apgq-surface);
}

.apgq-fiche > * + * {
	margin-top: 1.35rem;
}

/* Grille de coordonnées : deux colonnes dès que la place le permet, chaque
   entrée précédée d'une pastille d'icône. */
.apgq-fiche-grid {
	display: grid;
	gap: 1.35rem 2rem;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
	margin: 0;
}

/* Filet de séparation seulement s'il y a bien un bandeau de badges au-dessus. */
.apgq-badges + .apgq-fiche-grid {
	padding-top: 1.35rem;
	border-top: 1px solid var(--apgq-line);
}

.apgq-fiche .apgq-badges {
	margin: 0;
}

.apgq-info {
	min-width: 0;
}

/* Intitulé (dt) : pastille + libellé sur une ligne. La valeur (dd) se cale
   dessous, alignée sur le libellé — 2.5rem de pastille + 0.75rem d'écart. */
.apgq-info-label {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0;
	color: var(--apgq-green-ink);
}

.apgq-info-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	background: var(--apgq-green-soft);
	color: var(--apgq-green-ink);
	font-size: 1.0625rem;
}

.apgq-info-ico::before {
	margin-top: 0;
}

.apgq-info-valeur {
	margin: 0.35rem 0 0 3.25rem;
	font-size: 0.9375rem;
	line-height: 1.5;
	color: var(--apgq-ink);
	overflow-wrap: anywhere;
}

/* Téléphone, courriel et site sont cliquables au milieu de valeurs qui ne le
   sont pas : un soulignement discret le signale sans compter sur la couleur
   seule (WCAG 1.4.1). */
.apgq-info-valeur a {
	color: inherit;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

@supports (color: color-mix(in srgb, currentColor 50%, transparent)) {
	.apgq-info-valeur a {
		text-decoration-color: color-mix(in srgb, currentColor 35%, transparent);
	}
}

.apgq-info-valeur a:hover {
	color: var(--apgq-green-ink);
	text-decoration-color: currentColor;
}

/* Repli : liste de définitions (fiche rendue par un thème ou un gabarit tiers). */
.apgq-fiche-infos {
	display: grid;
	gap: 0.5rem 1rem;
	margin: 0;
}

.apgq-fiche-ligne {
	display: grid;
	grid-template-columns: minmax(6rem, 9rem) 1fr;
	gap: 0.25rem 1rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid var(--apgq-line);
}

.apgq-fiche-ligne:last-child {
	padding-bottom: 0;
	border-bottom: 0;
}

.apgq-fiche-infos dt {
	margin: 0;
	color: var(--apgq-muted);
	line-height: 1.75;
}

.apgq-fiche-infos dd {
	margin: 0;
	overflow-wrap: anywhere;
}

@container (max-width: 26rem) {
	.apgq-fiche {
		padding: 1.35rem;
	}

	.apgq-fiche-ligne {
		grid-template-columns: 1fr;
	}
}

/* -------------------------------------------------------------------------
   État vide
   ------------------------------------------------------------------------- */

.apgq-empty {
	padding: 3rem 1.5rem;
	border: 1px solid var(--apgq-line);
	border-radius: var(--apgq-radius);
	background: var(--apgq-surface-alt);
	text-align: center;
	font-size: 0.9375rem;
	color: var(--apgq-muted);
}

.apgq-empty strong {
	display: block;
	margin-bottom: 0.4rem;
	color: var(--apgq-ink);
	font-size: 1.0625rem;
	font-weight: 600;
}

/* -------------------------------------------------------------------------
   Pagination
   ------------------------------------------------------------------------- */

.apgq-pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.4rem;
	margin-top: 2rem;
}

.apgq-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0.4rem 0.85rem;
	border: 1px solid var(--apgq-line);
	border-radius: var(--apgq-radius);
	color: var(--apgq-ink);
	font-size: 0.9375rem;
	font-weight: 500;
	font-variant-numeric: tabular-nums;
	text-decoration: none !important;
	transition: border-color 0.15s ease, color 0.15s ease;
}

.apgq-pagination a.page-numbers:hover {
	border-color: var(--apgq-green);
	color: var(--apgq-green-ink);
}

.apgq-pagination .page-numbers.current {
	background: var(--apgq-accent);
	border-color: var(--apgq-accent);
	color: var(--apgq-accent-contrast);
	font-weight: 600;
}

.apgq-pagination .page-numbers.dots {
	min-width: 1.5rem;
	border-color: transparent;
	color: var(--apgq-muted);
}

/* -------------------------------------------------------------------------
   Conteneur étroit : requête de conteneur, donc indépendante du viewport —
   c'est la largeur réelle disponible dans le thème qui décide.
   ------------------------------------------------------------------------- */

@container (max-width: 26rem) {
	.apgq-grid {
		grid-template-columns: 1fr;
	}

	.apgq-filtre,
	.apgq-filtres-actions {
		flex: 1 1 100%;
	}

	.apgq-filtres-actions {
		justify-content: space-between;
	}
}

@supports not (container-type: inline-size) {
	@media (max-width: 30rem) {
		.apgq-grid {
			grid-template-columns: 1fr;
		}

		.apgq-filtre,
		.apgq-filtres-actions {
			flex: 1 1 100%;
		}
	}
}

/* -------------------------------------------------------------------------
   Mouvement réduit
   ------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	.apgq-producteurs *,
	.apgq-producteurs *::before,
	.apgq-producteurs *::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

/* -------------------------------------------------------------------------
   Impression — l'annuaire papier reste un usage réel dans ce secteur.
   ------------------------------------------------------------------------- */

@media print {
	.apgq-filtres,
	.apgq-pagination {
		display: none;
	}

	.apgq-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.apgq-card {
		break-inside: avoid;
		border: 1px solid #999;
		box-shadow: none;
	}

	.apgq-info-ico {
		display: none;
	}

	.apgq-contact a {
		min-height: 0;
		color: inherit;
	}
}
