.pumpup-ccg__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

.pumpup-ccg__card {
	display: block;
	text-decoration: none;
}

.pumpup-ccg__media {
	position: relative;
	width: 100%;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	background: var(--pumpup-color-principal, #203B32);
}

.pumpup-ccg__media > img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.3s ease;
}

.pumpup-ccg__card:hover .pumpup-ccg__media > img {
	transform: scale(1.04);
}

.pumpup-ccg__logo {
	position: absolute;
	top: 16px;
	left: 16px;
	z-index: 3;
	display: flex;
	align-items: center;
}

.pumpup-ccg__logo img {
	display: block;
	max-height: 28px;
	width: auto;
	object-fit: contain;
}

.pumpup-ccg__gradient {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 55%;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0) 100%);
	pointer-events: none;
}

.pumpup-ccg__badges {
	position: absolute;
	left: 16px;
	right: 16px;
	bottom: 16px;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
}

.pumpup-ccg .pumpup-ccg__badge {
	display: inline-block;
	max-width: 100%;
	box-sizing: border-box;
}

.pumpup-ccg .pumpup-ccg__badge--top {
	background: #E8FE8A;
	color: #151C15;
	font-family: var(--pumpup-font-body, 'Hanken Grotesk', sans-serif);
	font-size: 12px;
	font-weight: 600;
	line-height: 1.3;
	padding: 6px 12px;
	border-radius: 4px;
}

.pumpup-ccg .pumpup-ccg__badge--bottom {
	background: transparent;
	color: #F2F2F2;
	font-family: var(--pumpup-font-body, 'Hanken Grotesk', sans-serif);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1.3;
}

@media (max-width: 767px) {
	.pumpup-ccg__grid {
		gap: 16px;
	}
}

/*
 * Filet de sécurité : neutralise toute hauteur/stretch/overflow imposée
 * par le conteneur Elementor du widget lui-même (section/colonne en
 * "stretch" ou hauteur fixe réglée dans l'éditeur) qui rognait la grille
 * sur mobile (une seule carte visible, coupée en haut), sans toucher à la
 * version desktop. Règle séparée de celle utilisant :has() ci-dessous :
 * un sélecteur groupé où UNE seule branche utilise une pseudo-classe non
 * supportée invalide TOUTE la règle sur les navigateurs concernés — donc
 * ce filet de base doit pouvoir s'appliquer même si :has() est ignoré.
 */
@media (max-width: 767px) {
	.elementor-widget-pumpup-cas-clients-grid,
	.elementor-widget-pumpup-cas-clients-grid > .elementor-widget-container {
		height: auto !important;
		max-height: none !important;
		min-height: 0 !important;
		overflow: visible !important;
	}
}

/*
 * Amélioration progressive : sur les navigateurs supportant :has(), on va
 * plus loin en forçant aussi les ancêtres Elementor (colonne, widget-wrap,
 * containers flex) à s'ajuster à leur contenu réel (au lieu de "stretch")
 * pour que les sections suivantes ne remontent plus par-dessus la grille.
 * Règle isolée : si :has() n'est pas supporté, seule CETTE règle est
 * ignorée, sans affecter le filet de sécurité ci-dessus.
 */
@media (max-width: 767px) {
	.elementor-widget-wrap:has(> .elementor-widget-pumpup-cas-clients-grid),
	.elementor-column:has(> .elementor-widget-wrap > .elementor-widget-pumpup-cas-clients-grid),
	.e-con:has(> .elementor-widget-pumpup-cas-clients-grid),
	.e-con:has(> .e-con > .elementor-widget-pumpup-cas-clients-grid) {
		height: auto !important;
		max-height: none !important;
		min-height: 0 !important;
		overflow: visible !important;
		align-items: flex-start !important;
	}
}
