/**
 * Campus — Grille de contenus.
 * Mobile 1 colonne, tablette 2, desktop 3.
 * Filets haut et bas : bande pleine largeur. Cards dans .container.
 * Dernier filet de cellule coupé d’1 px, quel que soit le nombre de lignes.
 */

.campus-grille-contenus-band {
	--campus-grid-border: var(--color-border, var(--wp--preset--color--neutral-ash, #b8b0a6));

	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	border-top: 1px solid var(--campus-grid-border);
	border-bottom: 1px solid var(--campus-grid-border);
}

/* Le breakout est coupé si un parent Beaver ou .container a overflow hidden. */
.fl-row:has(.campus-grille-contenus-band),
.fl-row:has(.campus-grille-contenus-band) .fl-row-content-wrap,
.fl-row:has(.campus-grille-contenus-band) .fl-row-content,
.fl-col:has(.campus-grille-contenus-band),
.fl-col:has(.campus-grille-contenus-band) > .fl-col-content,
.fl-module:has(.campus-grille-contenus-band),
.fl-module:has(.campus-grille-contenus-band) > .fl-module-content,
.container:has(.campus-grille-contenus-band) {
	overflow: visible;
}

.campus-grille-contenus-band > .container {
	overflow: hidden;
}

.campus-grille-contenus-band > .container > .campus-grille-contenus {
	margin-bottom: 0;
}

.campus-grille-contenus-band:not(.campus-grille-contenus-band--sans-filets):not(.campus-grille-contenus-band--filet-haut) > .container > .campus-grille-contenus {
	margin-bottom: -1px;
}

.campus-grille-contenus {
	--campus-grid-border: var(--color-border, var(--wp--preset--color--neutral-ash, #b8b0a6));

	display: grid;
	grid-template-columns: 1fr;
	margin: 0;
	padding: 0;
	list-style: none;
}

.campus-grille-contenus__cell {
	box-sizing: border-box;
	min-width: 0;
	margin: 0;
	padding: 1.5rem;
	border-right: 1px solid var(--campus-grid-border);
	border-bottom: 1px solid var(--campus-grid-border);
}

.campus-grille-contenus--empty {
	display: block;
	margin: 0;
	padding: 1.5rem;
	border: 1px solid var(--campus-grid-border);
}

/* Mobile : 1 col — filet gauche. Filet haut sur la 1re cellule, sauf dans la bande. */
.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell {
	border-left: 1px solid var(--campus-grid-border);
}

.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell:first-child {
	border-top: 1px solid var(--campus-grid-border);
}

@media (min-width: 768px) {
	.campus-grille-contenus {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell {
		border-left: 0;
	}

	.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell:nth-child(-n+2) {
		border-top: 1px solid var(--campus-grid-border);
	}

	.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell:nth-child(2n+1) {
		border-left: 1px solid var(--campus-grid-border);
	}
}

@media (min-width: 1024px) {
	.campus-grille-contenus {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.campus-grille-contenus__cell {
		padding: 1.875rem;
	}

	.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell:nth-child(-n+3) {
		border-top: 1px solid var(--campus-grid-border);
	}

	.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell:nth-child(2n+1) {
		border-left: 0;
	}

	.campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell:nth-child(3n+1) {
		border-left: 1px solid var(--campus-grid-border);
	}
}

/* Variante liste (événements) : une ligne pleine largeur, filets horizontaux. */
.campus-grille-contenus.campus-grille-contenus--liste {
	grid-template-columns: minmax(0, 1fr);
}

.campus-grille-contenus--liste .campus-grille-contenus__cell {
	padding: 28px 0;
	border-top: 1px solid var(--campus-grid-border);
	border-right: 0;
	border-bottom: 0;
	border-left: 0;
}

.campus-grille-contenus--liste .campus-grille-contenus__cell:first-child {
	border-top: 0;
}

/* Variante sans filets, gouttière 20px (archive productions, …).
   Colonnes paramétrables : --campus-grid-cols-* (défaut 1 / 2 / 3). */
.campus-grille-contenus--gap {
	--campus-grid-cols-mobile: 1;
	--campus-grid-cols-tablet: 2;
	--campus-grid-cols-desktop: 3;

	gap: 20px;
	border: 0;
	grid-template-columns: repeat(var(--campus-grid-cols-mobile), minmax(0, 1fr));
}

.campus-grille-contenus--gap .campus-grille-contenus__cell {
	padding: 0;
	border: 0;
}

/* Card formateur : le 6.5rem est sur la card, pas en plus du padding de cellule. */
.campus-grille-contenus__cell:has(.campus-content-card--formateur) {
	padding-top: 0;
}

.campus-grille-contenus--m-1 { --campus-grid-cols-mobile: 1; }
.campus-grille-contenus--m-2 { --campus-grid-cols-mobile: 2; }
.campus-grille-contenus--t-1 { --campus-grid-cols-tablet: 1; }
.campus-grille-contenus--t-2 { --campus-grid-cols-tablet: 2; }
.campus-grille-contenus--t-3 { --campus-grid-cols-tablet: 3; }
.campus-grille-contenus--d-1 { --campus-grid-cols-desktop: 1; }
.campus-grille-contenus--d-2 { --campus-grid-cols-desktop: 2; }
.campus-grille-contenus--d-3 { --campus-grid-cols-desktop: 3; }
.campus-grille-contenus--d-4 { --campus-grid-cols-desktop: 4; }

@media (min-width: 768px) {
	.campus-grille-contenus--gap {
		grid-template-columns: repeat(var(--campus-grid-cols-tablet), minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.campus-grille-contenus--gap {
		grid-template-columns: repeat(var(--campus-grid-cols-desktop), minmax(0, 1fr));
	}
}

.campus-grille-contenus-band:not(.campus-grille-contenus-band--sans-filets):not(.campus-grille-contenus-band--filet-bas) .campus-grille-contenus:not(.campus-grille-contenus--liste):not(.campus-grille-contenus--gap) > .campus-grille-contenus__cell {
	border-top: 0;
}

.campus-grille-contenus-band--sans-filets {
	border-top: 0;
	border-bottom: 0;
}

.campus-grille-contenus-band--filet-haut {
	border-bottom: 0;
}

.campus-grille-contenus-band--filet-bas {
	border-top: 0;
}
