/*
Theme Name: Refresh 2026
Template: astra
Author: Ethersys
Author URI: https://ethersys.fr/
Description: Thème enfant Astra de cadrop.fr, rafraîchissement 2026. Reprend les styles d'Astra Child (header et footer natifs, blocs issus d'Elementor) et y ajoute une présentation plus moderne. Même contenu, même structure.
Version: 1.0.1
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: refresh-2026
*/



/* =========================================================================
   Header / Footer natifs (migration Elementor -> Astra)

   Reprise de l'habillage des anciens templates Elementor Pro :
   header = post 1421, footer = post 1085. Toutes les valeurs ci-dessous
   (couleurs, tailles, largeurs de colonnes, paddings) sont relevees sur
   https://cadrop.fr/ et sur post-1421.css / post-1085.css.

   Palette du kit Elementor d'origine :
     vert Cadr'op #54AC31 - bleu nuit #1F1F3B - gris texte #54595F
   ========================================================================= */

:root {
	--cadrop-vert: #54AC31;
	--cadrop-bleu-nuit: #1F1F3B;
	--cadrop-gris-texte: #54595F;
	/* Tracé de "long-arrow-alt-right" (Font Awesome 5, licence CC BY 4.0),
	   repris tel quel pour ne pas charger la police entière. */
	--cadrop-fleche: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"/></svg>');
	/* Tracés de "plus-circle" et "minus-circle" (Font Awesome 5, licence
	   CC BY 4.0) : l'icône des accordéons, la police entière disparaissant
	   avec Elementor. */
	--cadrop-plus-cercle: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"/></svg>');
	--cadrop-moins-cercle: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm132 300c0 6.6-5.4 12-12 12H136c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h240c6.6 0 12 5.4 12 12v56z"/></svg>');
}

/* -------------------------------------------------------------------------
   Header - rangee du logo et des reseaux sociaux
   ---------------------------------------------------------------------- */

/* Le fond vert pale de cette rangee est pose par l'option Astra
   "hba-header-bg-obj-responsive" (cf. mu-plugin de migration) : une regle
   du theme de meme specificite gagnerait la cascade depuis ce fichier. */
.ast-above-header-wrap .ast-above-header-bar {
	border-top: 5px solid var(--cadrop-vert);
}

.ast-above-header-wrap .site-above-header-wrap {
	max-width: 1140px;
	min-height: 100px;
	padding-left: 0;
	padding-right: 0;
}

/* Deux demi-colonnes comme la section Elementor : logo centre a gauche,
   reseaux sociaux colles a droite. */
.ast-above-header-wrap .ast-builder-grid-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
}

.ast-above-header-wrap .site-header-above-section-left {
	justify-content: center;
}

.ast-above-header-wrap .site-header-above-section-right {
	justify-content: flex-end;
}

/* La largeur du logo (175px) vient de l'option "ast-header-responsive-logo-width"
   (cf. mu-plugin de migration), pour rester reglable depuis le personnalisateur. */

/* Pastilles carrees aux couleurs des marques, icone blanche (reglage
   "Officiel" du widget Social Icons d'Elementor). */
.ast-above-header-wrap .ast-builder-social-element {
	width: 34px;
	height: 34px;
	margin: 0 2.5px;
	border-radius: 0;
	color: #ffffff;
	font-size: 12px;
}

.ast-above-header-wrap .ast-builder-social-element svg {
	width: 12px;
	height: 12px;
	fill: #ffffff;
}

.ast-above-header-wrap .ast-facebook { background-color: #3b5998; }
.ast-above-header-wrap .ast-twitter { background-color: #1da1f2; }
.ast-above-header-wrap .ast-linkedin { background-color: #0077b5; }
.ast-above-header-wrap .ast-instagram { background-color: #262626; }

/* -------------------------------------------------------------------------
   Header - rangee du menu
   ---------------------------------------------------------------------- */

.ast-primary-header-bar.ast-primary-header {
	padding: 0 60px;
	background-image: linear-gradient(180deg, #e8e8e8 0%, #f4f4f4 100%);
}

.ast-primary-header-bar .site-primary-header-wrap {
	max-width: 1200px;
	min-height: 90px;
	padding-left: 0;
	padding-right: 0;
}

/* Le menu occupe toute la largeur et repartit ses entrees : equivalent du
   reglage "Justifie" du widget Nav Menu d'Elementor. */
.ast-primary-header-bar .site-header-primary-section-center,
.ast-primary-header-bar .ast-builder-menu-1,
.ast-primary-header-bar .ast-builder-menu-1 .main-navigation {
	width: 100%;
}

.ast-primary-header-bar .ast-builder-menu-1 .main-header-menu {
	width: 100%;
	justify-content: space-between;
}

.ast-primary-header-bar .ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link {
	padding-top: 18px;
	padding-bottom: 18px;
}

/* -------------------------------------------------------------------------
   Footer - carte d'appel a l'action
   ---------------------------------------------------------------------- */

/* Le fond blanc de cette rangee vient de l'option "hba-footer-bg-obj-responsive"
   (cf. mu-plugin de migration) : la CSS dynamique d'Astra est inline dans le
   <head>, donc apres cette feuille, et gagnerait la cascade. */
.site-above-footer-wrap {
	padding: 0 0 50px;
}

.site-above-footer-wrap .ast-builder-grid-row-container-inner {
	max-width: 1000px;
	margin: 0 auto;
}

.cadrop-cta {
	display: flex;
	align-items: center;
	padding: 30px;
	border-radius: 6px;
	background-color: #ffffff;
	box-shadow: 0 5px 40px -10px rgba(86, 104, 146, 0.33);
}

/* Le composant HTML du Footer Builder est centre par defaut ; la carte de
   prod aligne son texte a gauche et son bouton a droite. */
.cadrop-cta-text {
	flex: 0 0 70%;
	text-align: left;
}

.cadrop-cta-action {
	flex: 0 0 30%;
	text-align: right;
}

.cadrop-cta h3 {
	margin: 0 0 10px;
	font-size: 26px;
	color: #242A56;
}

.cadrop-cta p {
	margin: 0;
	color: #393A56;
}

.cadrop-cta-button {
	display: inline-block;
	padding: 17px 35px;
	border-radius: 6px;
	background-color: var(--cadrop-vert);
	color: #ffffff;
	font-size: 15px;
	line-height: 1;
	text-transform: uppercase;
	text-decoration: none;
}

.cadrop-cta-button:hover,
.cadrop-cta-button:focus {
	background-color: #47912a;
	color: #ffffff;
}

/* -------------------------------------------------------------------------
   Footer - photo de fond et voile clair
   ---------------------------------------------------------------------- */

/* La photo et son voile gris couvrent les colonnes ET la ligne de copyright,
   comme la section Elementor d'origine qui contenait les deux : ils sont poses
   sur ".site-footer" par l'option globale "footer-bg-obj-responsive", et le
   filet vert par "hb-footer-main-sep" (cf. mu-plugin de migration). */
.site-primary-footer-wrap {
	padding: 80px 0 0;
}

.site-primary-footer-wrap .ast-builder-grid-row-container-inner,
.site-below-footer-wrap .ast-builder-grid-row-container-inner {
	width: 100%;
	max-width: 1140px;
	margin: 0 auto;
}

/* Largeurs de colonnes de la prod : 36 / 18 / 20 / 26 %. Les colonnes
   Elementor d'origine sont jointives (leur respiration vient de leur padding
   interne) ; l'espacement de 50px d'Astra ferait deborder la grille. */
.site-primary-footer-wrap .site-primary-footer-inner-wrap {
	grid-template-columns: 36% 18% 20% 26%;
	column-gap: 0;
}

/* Padding interne des colonnes Elementor d'origine. */
.site-primary-footer-wrap .site-footer-section {
	padding: 0 10px;
}

/* -------------------------------------------------------------------------
   Footer - contenu des colonnes
   ---------------------------------------------------------------------- */

.cadrop-footer-logo {
	display: block;
	width: 150px;
	height: auto;
	margin-bottom: 10px;
}

/* Baseline sous le logo : centree et en gras comme en prod. */
.cadrop-footer-baseline {
	margin: 0;
	color: var(--cadrop-gris-texte);
	font-weight: 700;
	text-align: center;
}

.site-primary-footer-wrap h4 {
	margin-bottom: 20px;
	font-size: 20px;
	color: var(--cadrop-bleu-nuit);
}

.cadrop-footer-links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.cadrop-footer-links li {
	margin: 0 0 15px;
	color: var(--cadrop-gris-texte);
	line-height: 1.6;
}

.cadrop-footer-links li:last-child {
	margin-bottom: 0;
}

.cadrop-footer-links a {
	color: var(--cadrop-gris-texte);
	text-decoration: none;
}

.cadrop-footer-links a:hover,
.cadrop-footer-links a:focus {
	color: var(--cadrop-vert);
}

.cadrop-footer-contact li {
	display: flex;
	align-items: flex-start;
	gap: 8px;
}

.cadrop-icon svg {
	width: 14px;
	height: 14px;
	margin-top: 0.3em;
	flex: 0 0 14px;
	fill: var(--cadrop-vert);
}

/* Reseaux sociaux du footer : icones vertes sans pastille, centrees. */
.site-primary-footer-wrap .ast-footer-social-wrap {
	margin-top: 30px;
}

.site-primary-footer-wrap .footer-social-inner-wrap {
	justify-content: center;
}

.site-primary-footer-wrap .ast-builder-social-element {
	background-color: transparent;
}

.site-primary-footer-wrap .ast-builder-social-element svg {
	width: 16px;
	height: 16px;
	fill: var(--cadrop-vert);
}

.site-primary-footer-wrap .ast-builder-social-element:hover svg {
	fill: #ffffff;
}

/* -------------------------------------------------------------------------
   Footer - ligne de copyright
   ---------------------------------------------------------------------- */

.site-below-footer-wrap {
	margin-top: 50px;
	padding: 20px 0;
	border-top: 1px solid #566892;
}

/* En prod le copyright est aligne a gauche, avec le meme retrait de 10px que
   les colonnes de liens. La zone du Footer Builder centre son contenu :
   le bloc doit prendre toute la largeur pour que l'alignement se voie. */
.site-below-footer-wrap .site-footer-below-section-1 {
	width: 100%;
	justify-content: flex-start;
}

.site-below-footer-wrap .ast-footer-copyright {
	width: 100%;
	padding: 0 10px;
	color: var(--cadrop-gris-texte);
	text-align: left;
}

.site-below-footer-wrap .ast-footer-copyright a {
	color: var(--cadrop-gris-texte);
}

/* -------------------------------------------------------------------------
   Tablette et mobile
   ---------------------------------------------------------------------- */

@media (max-width: 1024px) {
	.ast-above-header-wrap .site-above-header-wrap {
		min-height: 124px;
		padding-left: 20px;
		padding-right: 20px;
	}

	.ast-primary-header-bar.ast-primary-header {
		padding: 20px;
	}

	.site-above-footer-wrap {
		padding: 0 50px 50px;
	}

	.cadrop-cta {
		flex-direction: column;
		align-items: stretch;
		text-align: center;
		padding: 20px;
	}

	/* Les deux blocs sont empiles : ils reprennent l'alignement centre de la
	   carte, que leur "text-align" de bureau masquerait sinon. */
	.cadrop-cta-text,
	.cadrop-cta-action {
		flex: 1 1 auto;
		text-align: center;
	}

	.cadrop-cta-action {
		margin-top: 20px;
	}

	.site-primary-footer-wrap {
		padding: 50px 50px 0;
	}

	/* Le "column-gap: 0" du bureau sert a coller les colonnes a la grille de
	   1140px ; sur deux colonnes il faut rendre la respiration. */
	.site-primary-footer-wrap .site-primary-footer-inner-wrap {
		grid-template-columns: 1fr 1fr;
		column-gap: 30px;
		row-gap: 40px;
	}

	.site-below-footer-wrap {
		margin-top: 40px;
	}
}

@media (max-width: 767px) {
	.ast-above-header-wrap .ast-builder-grid-row {
		grid-template-columns: 1fr;
	}

	.ast-above-header-wrap .site-above-header-wrap {
		min-height: 80px;
	}

	.ast-above-header-wrap .site-header-above-section-right {
		justify-content: center;
	}

	.ast-primary-header-bar.ast-primary-header {
		padding: 10px 20px;
	}

	.site-above-footer-wrap {
		padding: 0 30px 30px;
	}

	.cadrop-cta {
		padding: 15px;
	}

	.site-primary-footer-wrap {
		padding: 40px 25px 0;
	}

	.site-primary-footer-wrap .site-primary-footer-inner-wrap {
		grid-template-columns: 1fr;
	}

	/* Colonne unique : le copyright se centre comme le reste du pied de page. */
	.site-below-footer-wrap .ast-footer-copyright {
		text-align: center;
	}
}

/* =========================================================================
   Contenu migré d'Elementor vers les blocs

   Les pages gardent la mise en page "constructeur" d'Astra (contenu pleine
   largeur) : les sections à image de fond s'étendent bord à bord, comme les
   sections Elementor d'origine. La colonne de 1140px vient de la largeur de
   contenu posée bloc par bloc à la conversion, car certaines sections en
   demandent une autre. Les couleurs de marque, elles, venaient du kit global
   Elementor ; elles sont reprises ici pour ne pas les figer dans le contenu
   des 36 pages.
   ========================================================================= */

/* Bouton vert du kit Elementor. */
.entry-content .wp-block-button__link {
	padding: 17px 35px;
	border-radius: 6px;
	background-color: var(--cadrop-vert);
	color: #ffffff;
	font-size: 15px;
	line-height: 1;
	text-transform: uppercase;
}

/* Flèche qui précédait le libellé, rendue par Font Awesome sous Elementor.
   Le SVG en ligne évite de garder cette dépendance pour une seule icône. */
.entry-content .cadrop-button-arrow .wp-block-button__link::before {
	content: "";
	display: inline-block;
	width: 14px;
	height: 15px;
	margin-right: 25px;
	vertical-align: -2px;
	background-color: currentColor;
	-webkit-mask: var(--cadrop-fleche) no-repeat center / contain;
	mask: var(--cadrop-fleche) no-repeat center / contain;
}

.entry-content .wp-block-button__link:hover,
.entry-content .wp-block-button__link:focus {
	background-color: #47912a;
	color: #ffffff;
}

/* Largeur, épaisseur, couleur et alignement de chaque filet viennent des
   classes "cadrop-filet-*" (fin de feuille) : Elementor les règle widget par
   widget, et une valeur commune ici écraserait les filets laissés à leurs
   réglages par défaut. Ne restent donc que les contraintes du bloc core à
   lever. */
/* Sélecteur porté à la même spécificité que la règle du bloc core
   `.wp-block-separator:not(.is-style-wide):not(.is-style-dots)`, qui impose
   sinon ses marges de 20px. */
.entry-content hr.wp-block-separator:not(.is-style-wide):not(.is-style-dots) {
	/* Le bloc core plafonne le filet à 100px : la largeur d'Elementor,
	   exprimée en pourcentage, serait tronquée. */
	max-width: none;
	/* L'écart autour du trait est posé en ligne, en padding ; l'espacement
	   entre widgets l'est par la boîte ".cadrop-widget". */
	margin-top: 0;
	margin-bottom: 0;
	opacity: 1;
}

/* Boîte de widget Elementor (voir le script de migration). Elementor annulait
   la marge haute des éléments qu'elle contient et gardait la marge basse du
   dernier paragraphe, que le bloc core supprime
   (`:root :where(.is-layout-flow) > :last-child`) : cette marge compte dans la
   hauteur de la colonne. */
.entry-content .cadrop-widget,
.entry-content .cadrop-widget > * {
	margin-top: 0;
}

.entry-content .cadrop-widget {
	margin-bottom: 0;
	/* Les marges du contenu restent dans la boîte du widget, comme chez
	   Elementor : sans cela elles s'échappent et décalent les widgets voisins. */
	display: flow-root;
}

/* Le bloc core espace les colonnes de 1.75em sous la rangée ; les sections
   Elementor n'avaient pas cet écart, leur espacement venant de leurs propres
   marges intérieures. */
.entry-content .wp-block-columns {
	margin-bottom: 0;
}

/* Le titre d'un widget "heading" n'a pas de marge chez Elementor : son
   espacement vient de la boîte du widget. Les titres écrits dans un éditeur de
   texte, eux, gardent la leur. */
.entry-content .cadrop-widget-heading h1,
.entry-content .cadrop-widget-heading h2,
.entry-content .cadrop-widget-heading h3,
.entry-content .cadrop-widget-heading h4,
.entry-content .cadrop-widget-heading h5,
.entry-content .cadrop-widget-heading h6 {
	margin-bottom: 0;
}

.entry-content .cadrop-widget > p:last-child {
	margin-bottom: 1.6em;
}

/* Sections pleine largeur (anciennes sections "étirées" d'Elementor). Astra les
   étend à 100vw, qui compte la barre de défilement et les fait déborder de
   quelques pixels de chaque côté. Inutile ici : le conteneur de contenu occupe
   déjà toute la largeur de la page. La règle d'Astra étant inline dans le
   <head>, donc après cette feuille, il faut un sélecteur plus précis. */
.ast-no-sidebar .entry-content .wp-block-group.alignfull {
	width: 100%;
	max-width: 100%;
	margin-left: 0;
	margin-right: 0;
}

/* Espaceurs et blocs qu'Elementor n'affichait qu'à certaines largeurs. Ils
   donnent souvent sa hauteur à une colonne en image de fond, d'où le maintien
   dans la page plutôt qu'une suppression à la conversion. Bornes reprises des
   points de rupture d'Elementor. */
@media (min-width: 1025px) {
	.entry-content .cadrop-sans-desktop { display: none; }
}

@media (min-width: 768px) and (max-width: 1024px) {
	.entry-content .cadrop-sans-tablet { display: none; }
}

@media (max-width: 767px) {
	.entry-content .cadrop-sans-mobile { display: none; }
}

/* Titres de section : couleur des titres du kit global d'Elementor. Les
   couleurs relevées widget par widget restent en ligne et gardent la main. */
.entry-content .wp-block-heading {
	color: #242A56;
}

.entry-content .wp-block-cover .wp-block-heading {
	color: inherit;
}

/* Accordéon Elementor : chaque panneau est encadré d'un filet clair, son titre
   est en gras sur fond blanc et son contenu séparé par un filet. Les panneaux
   se suivent sans doubler le filet qui les sépare. */
.entry-content details.cadrop-accordeon {
	margin: 0;
	padding: 0;
	border: 1px solid rgba(208, 216, 234, 0.25);
	background: #fff;
}

.entry-content details.cadrop-accordeon + details.cadrop-accordeon {
	border-top: 0;
}

.entry-content details.cadrop-accordeon > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 15px 20px;
	font-size: 15px;
	font-weight: 400;
	/* 46px de haut en production : 16px d'interligne et 15px de marge de part
	   et d'autre. */
	line-height: 16px;
	color: #393A56;
	cursor: pointer;
	list-style: none;
}

/* L'entrée ouverte passe au bleu de l'icône, comme le kit Elementor. */
.entry-content details.cadrop-accordeon[open] > summary {
	color: #6878D6;
}

/* Le triangle natif remplace l'icône ronde d'Elementor : il est retiré au
   profit du "plus"/"moins" cerclé, posé à droite du titre. */
.entry-content details.cadrop-accordeon > summary::-webkit-details-marker {
	display: none;
}

.entry-content details.cadrop-accordeon > summary::after {
	content: "";
	flex: 0 0 24px;
	height: 16px;
	background-color: #6878D6;
	/* Tracé de "plus-circle" (Font Awesome 5, licence CC BY 4.0), comme la
	   flèche des boutons : la police entière disparaît avec Elementor. */
	-webkit-mask: var(--cadrop-plus-cercle) no-repeat center / 16px 16px;
	mask: var(--cadrop-plus-cercle) no-repeat center / 16px 16px;
}

.entry-content details.cadrop-accordeon[open] > summary::after {
	-webkit-mask-image: var(--cadrop-moins-cercle);
	mask-image: var(--cadrop-moins-cercle);
}

.entry-content details.cadrop-accordeon > :not(summary) {
	margin: 0;
	padding: 15px 20px;
	border-top: 1px solid rgba(208, 216, 234, 0.25);
	font-size: 15px;
}

/* Portrait d'un témoignage : vignette ronde, sans arrondi ni ombre de section. */
.entry-content figure.cadrop-portrait,
.entry-content figure.cadrop-portrait.aligncenter {
	margin: 0 auto 20px;
}

.entry-content .cadrop-portrait img {
	border-radius: 50%;
	box-shadow: none;
	object-fit: cover;
}

/* Le SVG d'une icône garde la taille demandée, sans l'ombre des images. */
.entry-content .cadrop-icone img {
	box-shadow: none;
}

/* Liste "icon-list" d'Elementor : elle occupe toute la largeur de la colonne,
   sans retrait, et sa puce est une icône ronde dont la taille et la couleur
   viennent du widget (variables posées par les classes "cadrop-puce-*",
   "cadrop-ecart-*", en fin de feuille). */
.entry-content .cadrop-liste-icones {
	margin: 0;
	padding: 0;
	list-style: none;
}

.entry-content .cadrop-liste-icones > li {
	display: flex;
	align-items: flex-start;
	padding-bottom: var(--cadrop-ecart, 0);
}

.entry-content .cadrop-liste-icones > li + li {
	margin-top: var(--cadrop-ecart, 0);
}

/* La description d'une boîte image ne porte aucune marge chez Elementor. */
.entry-content .cadrop-image-box p:last-child {
	margin-bottom: 0;
}

/* Elementor ne met l'écart qu'entre les entrées : la dernière n'en porte pas. */
.entry-content .cadrop-liste-icones > li:last-child {
	padding-bottom: 0;
}

/* La puce reprend la place de l'icône : un carré de la taille demandée, puis
   les 5px qu'Elementor laisse entre l'icône et le texte. */
.entry-content .cadrop-liste-icones > li::before {
	content: "";
	flex: 0 0 var(--cadrop-puce, 14px);
	width: var(--cadrop-puce, 14px);
	height: var(--cadrop-puce, 14px);
	margin-right: 5px;
	/* Centre la puce sur la première ligne de texte. */
	margin-top: calc((1em * var(--cadrop-interligne, 1.6) - var(--cadrop-puce, 14px)) / 2);
	border-radius: 50%;
	background: var(--cadrop-puce-couleur, currentColor);
}

/* Colonne-carte d'Elementor : l'ombre portée n'apparaît qu'au survol, la
   valeur (--cadrop-ombre-survol) étant posée en fin de feuille. */
.entry-content .cadrop-ombre-survol {
	transition: box-shadow .3s;
}
.entry-content .cadrop-ombre-survol:hover {
	box-shadow: var(--cadrop-ombre-survol);
}

/* -------------------------------------------------------------------------
   Sommaire du blog (shortcode "cadrop_articles" du thème enfant)

   Reprise du widget "posts" d'Elementor, habillage "classic" : grille de
   trois colonnes, titre en Poppins 28px, méta séparée par "///" et extrait
   gris sous le titre.
   ---------------------------------------------------------------------- */

.cadrop-articles {
	display: grid;
	gap: 35px 30px;
}

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

/* Tablette : deux colonnes ; mobile : une seule, sinon la grille déborde de
   l'écran et le navigateur dézoome toute la page. */
@media (max-width: 921px) {
	.cadrop-articles--3 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 544px) {
	.cadrop-articles--3,
	.cadrop-articles--2 { grid-template-columns: 1fr; }
}

.cadrop-article__image {
	display: block;
	margin-bottom: 20px;
}

.cadrop-article__image img {
	display: block;
	width: 100%;
	/* Proportion des vignettes du widget (0,66 de la largeur). */
	aspect-ratio: 1 / 0.66;
	object-fit: cover;
}

.entry-content .cadrop-article__titre {
	margin: 0;
	font-size: 18px;
}

.entry-content .cadrop-article__titre a {
	font-family: Poppins, sans-serif;
	font-size: 28px;
	font-weight: 700;
	line-height: 1.3;
	color: #393A56;
	text-decoration: none;
}

.cadrop-article__meta {
	margin: 0 0 13px;
	font-size: 12px;
	line-height: 15.6px;
	color: #ADADAD;
}

/* Séparateur de la ligne de méta, comme le réglage du widget. Les espaces
   insécables l'écartent des deux libellés, que la mise en forme du markup
   ne sépare pas ici. */
.cadrop-article__meta span + span::before {
	content: "\00a0///\00a0";
}

.cadrop-article__extrait {
	margin: 0 0 10px;
}

.entry-content .cadrop-article__extrait p {
	margin: 0;
	font-size: 14px;
	line-height: 21px;
	color: #777777;
}

.cadrop-article__lire {
	font-size: 12px;
	font-weight: 700;
	line-height: 25.6px;
	color: #6878D6;
	text-decoration: none;
}

/* =========================================================================
   Classes posées par cadrop-fix-block-validation.php

   Le script remplace les styles en ligne que l'éditeur de blocs ne sait pas
   regénérer par ces classes. Chaque règle reprend telle quelle la valeur qui
   était en ligne : le rendu ne change pas. Tout ce qu'un attribut natif du
   bloc décrit (marges intérieures, couleur de fond, taille de texte, image de
   fond, dimensions d'image) est resté dans le bloc et se règle dans
   l'éditeur ; seul le reste est ici.
   ========================================================================= */

/* -------------------------------------------------------------------------
   Colonnes-cartes
   ---------------------------------------------------------------------- */

/* La colonne empile son contenu pour que la carte qu'elle contient s'étire à
   la hauteur de la rangée. */
.entry-content .wp-block-column.cadrop-colonne-flex {
	display: flex;
	flex-direction: column;
}

.entry-content .cadrop-carte {
	flex: 1;
}

/* Le bloc core donne une marge intérieure à tout groupe qui a un fond
   (`:where(.wp-block-group.has-background)`) ; une carte n'en a que si elle
   en demande une, et celle-ci est alors en ligne. */
.entry-content .wp-block-group.cadrop-carte.has-background {
	padding: 0;
}

.entry-content .cadrop-marge-10 {
	margin: 10px;
}

/* Ombre portée au survol (règle "Colonne-carte d'Elementor" plus haut). */
.entry-content .cadrop-ombre-survol {
	--cadrop-ombre-survol: 0px 10px 30px 0px rgba(208, 216, 234, 0.3);
}

/* Voile bleu nuit sur la photo de fond d'une colonne. La photo est posée par
   WordPress en ligne (background-image) : une ombre intérieure la couvre sans
   la remplacer, sous le contenu. */
.entry-content .cadrop-voile {
	box-shadow: inset 0 0 0 100vmax rgba(36, 42, 86, 0.65);
}

/* Réglage "espacement des mots" d'Elementor, sans équivalent dans le bloc. */
.entry-content .cadrop-espace-mots {
	word-spacing: 2px;
}

/* -------------------------------------------------------------------------
   Filets (widget "divider")

   Filet par défaut : 10 % de large, trait vert de 3px, 15px au-dessus et
   au-dessous, aligné à gauche. Les autres classes changent une valeur.
   Sélecteur plus précis que la règle des filets plus haut, qui annule les
   marges.
   ---------------------------------------------------------------------- */

.entry-content hr.wp-block-separator.cadrop-filet:not(.is-style-wide):not(.is-style-dots) {
	width: var(--cadrop-filet-largeur, 10%);
	height: 0;
	background: none;
	border: 0;
	border-top: var(--cadrop-filet-epaisseur, 3px) solid var(--cadrop-filet-couleur, #54AC31);
	margin: var(--cadrop-filet-marge, 15px) auto var(--cadrop-filet-marge, 15px) var(--cadrop-filet-gauche, 0);
}

.cadrop-filet-l15 { --cadrop-filet-largeur: 15%; }
.cadrop-filet-l25 { --cadrop-filet-largeur: 25%; }
.cadrop-filet-l71 { --cadrop-filet-largeur: 71%; }
.cadrop-filet-l100 { --cadrop-filet-largeur: 100%; }

.cadrop-filet-e1 { --cadrop-filet-epaisseur: 1px; }
.cadrop-filet-e2 { --cadrop-filet-epaisseur: 2px; }
.cadrop-filet-e3-4 { --cadrop-filet-epaisseur: 3.4px; }

.cadrop-filet-noir { --cadrop-filet-couleur: #000; }
.cadrop-filet-vert-clair { --cadrop-filet-couleur: #8bb72c; }

.cadrop-filet-m4 { --cadrop-filet-marge: 4px; }
.cadrop-filet-m18 { --cadrop-filet-marge: 18px; }

.cadrop-filet-centre { --cadrop-filet-gauche: auto; }

/* -------------------------------------------------------------------------
   Listes à puces rondes (widget "icon-list") : taille de la puce, écart
   entre entrées et couleur, lus par les règles "icon-list" plus haut.
   ---------------------------------------------------------------------- */

.cadrop-puce-8 { --cadrop-puce: 8px; }
.cadrop-puce-15 { --cadrop-puce: 15px; }
.cadrop-ecart-7-5 { --cadrop-ecart: 7.5px; }
.cadrop-ecart-12-5 { --cadrop-ecart: 12.5px; }
.cadrop-puce-bleu-gris { --cadrop-puce-couleur: #566892; }

/* -------------------------------------------------------------------------
   Images
   ---------------------------------------------------------------------- */

/* Image d'une boîte image (widget "image-box") : en ligne, 22 % de la
   colonne, 25px au-dessus du titre. */
.entry-content figure.wp-block-image.cadrop-image-box-img {
	display: inline-block;
	margin: 0 0 25px;
	width: 22%;
}

/* Icône SVG (widget "icon"). */
.entry-content figure.wp-block-image.cadrop-icone {
	margin: 0;
	text-align: center;
}


/* =========================================================================
   Rafraîchissement cadrop.fr — maquette
   Même contenu, même structure : seule la présentation change.
   Identité conservée : bleu nuit et vert du logo, Poppins + Open Sans.
   ========================================================================= */

:root {
	--r-nuit: #1F1F3B;
	--r-encre: #242A56;
	--r-texte: #3E4160;
	--r-texte-doux: #5D6180;
	--r-vert: #54AC31;
	/* Vert du logo assombri : texte blanc lisible (contraste 4.9:1). */
	--r-vert-action: #3B8121;
	--r-vert-action-survol: #2F6B19;
	--r-vert-clair: #EAF5E4;
	--r-pervenche: #6878D6;
	--r-fond: #F5F6FA;
	--r-filet: #E3E6EF;
	--r-rayon: 14px;
	--r-ombre: 0 1px 2px rgba(31, 31, 59, .06), 0 8px 24px -12px rgba(31, 31, 59, .14);
	--r-ombre-survol: 0 2px 4px rgba(31, 31, 59, .06), 0 22px 44px -18px rgba(31, 31, 59, .28);
}

html body { color: var(--r-texte); -webkit-font-smoothing: antialiased; }
::selection { background: var(--r-vert-clair); color: var(--r-nuit); }
.entry-content a:not(.wp-block-button__link) { text-underline-offset: 3px; }
h1, h2, h3, h4, h5, h6, .entry-content h1, .entry-content h2, .entry-content h3 {
	letter-spacing: -0.015em;
	text-wrap: balance;
}

/* ---- Header : rangée du logo ------------------------------------------ */
html body .ast-above-header-wrap .ast-above-header-bar {
	background: #ffffff;
	border-top: 3px solid var(--r-vert);
	border-bottom: 1px solid var(--r-filet);
}
.ast-above-header-wrap .site-above-header-wrap {
	max-width: 1200px;
	min-height: 88px;
}
.ast-above-header-wrap .ast-builder-grid-row { grid-template-columns: auto 1fr; }
.ast-above-header-wrap .site-header-above-section-left { justify-content: flex-start; }

/* Réseaux sociaux : pastilles rondes discrètes, à la couleur du site. */
html body .ast-above-header-wrap .ast-builder-social-element {
	width: 38px;
	height: 38px;
	margin: 0 3px;
	border-radius: 50%;
	background: transparent;
	border: 1px solid var(--r-filet);
	transition: background-color .2s, border-color .2s;
}
html body .ast-above-header-wrap .ast-builder-social-element svg { width: 14px; height: 14px; fill: var(--r-encre); }
html body .ast-above-header-wrap .ast-builder-social-element:hover { background: var(--r-nuit); border-color: var(--r-nuit); }
html body .ast-above-header-wrap .ast-builder-social-element:hover svg { fill: #fff; }

/* Bouton « Espace adhérents » : discret, en contour, à côté des réseaux. */
html body .ast-header-button-1 .ast-custom-button {
	margin-left: 12px;
	padding: 10px 18px;
	border: 1px solid var(--r-nuit);
	border-radius: 10px;
	background: transparent;
	color: var(--r-nuit);
	font-family: 'Poppins', sans-serif;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	transition: background-color .2s, color .2s;
}
html body .ast-header-button-1 .ast-custom-button:hover { background: var(--r-nuit); color: #fff; }

/* ---- Header : rangée du menu, sur une seule ligne --------------------- */
html body .ast-primary-header-bar.ast-primary-header {
	padding: 0 20px;
	background: #ffffff;
	border-bottom: 1px solid var(--r-filet);
	box-shadow: 0 10px 30px -24px rgba(31, 31, 59, .35);
}
.ast-primary-header-bar .site-primary-header-wrap { max-width: 1200px; min-height: 60px; }
html body .ast-primary-header-bar .ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link {
	position: relative;
	padding: 20px 7px;
	font-family: 'Poppins', sans-serif;
	font-size: 13.5px;
	white-space: nowrap;
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
	color: var(--r-encre);
	background: transparent;
}
html body .ast-primary-header-bar .ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link::after {
	content: "";
	position: absolute;
	left: 7px;
	right: 7px;
	bottom: 12px;
	height: 2px;
	border-radius: 2px;
	background: var(--r-vert);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .25s cubic-bezier(.2, .7, .2, 1);
}
html body .ast-primary-header-bar .ast-builder-menu-1 .main-header-menu > .menu-item:hover > .menu-link::after,
html body .ast-primary-header-bar .ast-builder-menu-1 .main-header-menu > .current-menu-item > .menu-link::after { transform: scaleX(1); }
html body .ast-primary-header-bar .ast-builder-menu-1 .main-header-menu > .current-menu-item > .menu-link {
	background: transparent;
	color: var(--r-nuit);
	font-weight: 600;
}

/* ---- Mobile : en-tête ------------------------------------------------- */
html body .ast-mobile-header-wrap .ast-above-header-bar { background: #fff; border-top: 3px solid var(--r-vert); border-bottom: 1px solid var(--r-filet); }
html body .ast-mobile-header-wrap .ast-primary-header-bar { background: #fff; border-bottom: 1px solid var(--r-filet); }
html body .ast-mobile-header-wrap .ast-builder-social-element { border-radius: 50%; background: transparent; border: 1px solid var(--r-filet); }
html body .ast-mobile-header-wrap .ast-builder-social-element svg { fill: var(--r-encre); }
html body .ast-mobile-header-wrap .menu-toggle, html body .ast-mobile-header-wrap .menu-toggle:hover { background: var(--r-nuit) !important; border-radius: 10px; color: #fff; }
html body .ast-mobile-header-wrap .menu-toggle svg { fill: #fff; }

/* ---- Bannières (bloc Couverture) -------------------------------------- */
html body .entry-content .wp-block-cover .wp-block-cover__background {
	opacity: 1 !important;
	background: linear-gradient(100deg, rgba(31, 31, 59, .94) 0%, rgba(31, 31, 59, .78) 42%, rgba(31, 31, 59, .30) 100%) !important;
}
html body .entry-content .wp-block-cover h1 {
	font-size: clamp(34px, 5vw, 64px);
	line-height: 1.05;
	letter-spacing: -0.025em;
}
html body .entry-content .wp-block-cover h2,
html body .entry-content .wp-block-cover h3 { color: #A8DD8F; }
html body .entry-content .wp-block-cover p { color: rgba(255, 255, 255, .86); font-size: 18px; }

/* ---- Boutons ---------------------------------------------------------- */
html body .entry-content .wp-block-button__link,
html body .cadrop-cta-button {
	padding: 17px 30px;
	border-radius: 10px;
	background-color: var(--r-vert-action);
	font-family: 'Poppins', sans-serif;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .01em;
	text-transform: none;
	box-shadow: 0 10px 22px -12px rgba(59, 129, 33, .8);
	transition: background-color .2s, transform .2s, box-shadow .2s;
}
html body .entry-content .wp-block-button__link:hover,
html body .cadrop-cta-button:hover {
	background-color: var(--r-vert-action-survol);
	transform: translateY(-1px);
	box-shadow: 0 14px 26px -12px rgba(47, 107, 25, .85);
}
html body .entry-content .wp-block-button__link:focus-visible,
html body .cadrop-cta-button:focus-visible { outline: 3px solid var(--r-pervenche); outline-offset: 3px; }

/* ---- Sections à fond gris -------------------------------------------- */
html body .entry-content .has-background[style*="rgb(244"],
html body .entry-content .has-background[style*="#F4F5F9"],
html body .entry-content .has-background[style*="#f4f5f9"] { background-color: var(--r-fond) !important; }

/* ---- Cartes ----------------------------------------------------------- */
html body .entry-content .cadrop-carte {
	border: 1px solid var(--r-filet);
	border-radius: var(--r-rayon);
	box-shadow: var(--r-ombre);
	transition: transform .3s cubic-bezier(.2, .7, .2, 1), box-shadow .3s, border-color .3s;
}
html body .entry-content .cadrop-ombre-survol:hover {
	transform: translateY(-4px);
	border-color: #D3D8EA;
	box-shadow: var(--r-ombre-survol);
}
html body .entry-content .cadrop-carte h2,
html body .entry-content .cadrop-carte h3,
html body .entry-content .cadrop-carte h4 {
	color: var(--r-nuit);
	letter-spacing: -0.01em;
}
/* Puces : un trait vert court plutôt qu'un point. */
html body .entry-content .cadrop-liste-icones > li::before {
	flex-basis: 10px;
	width: 10px;
	height: 2px;
	margin-right: 12px;
	margin-top: calc(1em * var(--cadrop-interligne, 1.6) / 2 - 1px);
	border-radius: 2px;
	background: var(--r-vert);
}
html body .entry-content .cadrop-liste-icones > li { color: var(--r-texte); }

/* ---- Filets de section ----------------------------------------------- */
html body .entry-content hr.cadrop-filet { border-radius: 3px; }

/* ---- Citation client -------------------------------------------------- */
html body .entry-content .cadrop-widget-testimonial {
	position: relative;
	max-width: 820px;
	margin-left: auto;
	margin-right: auto;
	padding: 84px 64px 44px !important;
	border-radius: 20px;
	background: #fff;
	box-shadow: var(--r-ombre);
}
html body .entry-content .cadrop-widget-testimonial::before {
	content: "“";
	position: absolute;
	top: 18px;
	left: 50%;
	transform: translateX(-50%);
	font-family: 'Poppins', sans-serif;
	font-size: 96px;
	font-weight: 700;
	line-height: 1;
	color: var(--r-vert);
}
html body .entry-content .cadrop-widget-testimonial p { font-size: 18px; line-height: 1.7; color: var(--r-encre); }
html body .entry-content .cadrop-portrait img { box-shadow: 0 0 0 4px #fff, 0 0 0 5px var(--r-filet); }

/* ---- Formulaire de contact (WPForms) --------------------------------- */
html body .wpforms-container .wpforms-form button[type=submit] {
	padding: 14px 28px;
	border: 0;
	border-radius: 10px;
	background-color: var(--r-vert-action);
	color: #fff;
	font-family: 'Poppins', sans-serif;
	font-size: 15px;
	font-weight: 600;
	text-transform: none;
}
html body .wpforms-container .wpforms-form button[type=submit]:hover { background-color: var(--r-vert-action-survol); }
html body .wpforms-container .wpforms-form input[type=text],
html body .wpforms-container .wpforms-form input[type=email],
html body .wpforms-container .wpforms-form textarea {
	border: 1px solid #CDD2E2;
	border-radius: 8px;
}
html body .wpforms-container .wpforms-form input:focus,
html body .wpforms-container .wpforms-form textarea:focus { border-color: var(--r-pervenche); box-shadow: 0 0 0 3px #E3E7FA; }

/* ---- Appel à l'action du pied de page -------------------------------- */
html body .cadrop-cta {
	padding: 40px 48px;
	border-radius: 20px;
	background: var(--r-nuit);
	box-shadow: 0 30px 60px -30px rgba(31, 31, 59, .6);
}
html body .cadrop-cta h3 { color: #fff; font-size: 28px; letter-spacing: -0.015em; }
html body .cadrop-cta p { color: rgba(255, 255, 255, .78); }
html body .cadrop-cta-button { background-color: var(--r-vert); color: var(--r-nuit); box-shadow: none; }
html body .cadrop-cta-button:hover { background-color: #6BC247; color: var(--r-nuit); }

/* ---- Pied de page ----------------------------------------------------- */
html body .site-footer { background-image: none !important; background-color: var(--r-fond) !important; }
html body .site-footer::before { display: none; }
html body .site-primary-footer-wrap { background: transparent !important; border-top: 0 !important; }
html body .site-primary-footer-wrap h4,
html body .site-footer-primary-section-3 .ast-builder-html-element h2 {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--r-texte-doux);
}
.cadrop-footer-links li { margin-bottom: 10px; }
html body .cadrop-footer-links a { color: var(--r-encre); }
html body .cadrop-footer-links a:hover { color: var(--r-vert-action); }
/* Menu « Nos offres » (menu Astra) : même rendu que la colonne Menu. */
html body .site-footer-primary-section-3 .ast-builder-html-element h2 { margin: 0 0 20px; font-size: 13px !important; line-height: 1.6; }
html body .site-footer .footer-navigation #astra-footer-menu { flex-direction: column; align-items: flex-start; }
html body .site-footer .footer-navigation #astra-footer-menu .menu-item { margin-bottom: 10px; }
html body .site-footer .footer-navigation #astra-footer-menu .menu-link {
	padding: 0;
	font-size: 15px;
	line-height: 1.5;
	color: var(--r-encre);
}
html body .site-footer .footer-navigation #astra-footer-menu .menu-link:hover { color: var(--r-vert-action); }

/* Libellés courts (« Dir. … ») : une colonne, interligne plus serré que Menu (13 entrées). */
html body .site-primary-footer-wrap .site-primary-footer-inner-wrap { grid-template-columns: 28% 21% 27% 24%; }
html body .site-footer .footer-navigation #astra-footer-menu .menu-item { margin-bottom: 4px; }
html body .site-footer-primary-section-3 .ast-builder-html-element h2 { margin-top: -2px !important; }
.cadrop-footer-baseline { font-weight: 600; color: var(--r-encre); }
html body .site-below-footer-wrap { border-top: 1px solid var(--r-filet); background: transparent !important; }
html body .site-below-footer-wrap .ast-footer-copyright { color: var(--r-texte-doux); font-size: 14px; }

@media (max-width: 921px) {
	html body .site-primary-footer-wrap .site-primary-footer-inner-wrap { grid-template-columns: 1fr; row-gap: 36px; }
	html body .site-primary-footer-wrap .site-footer-section { align-items: flex-start; text-align: left; }
	html body .site-primary-footer-wrap .site-footer-section * { text-align: left; }
	html body .site-footer-primary-section-1 .ast-footer-social-wrap .footer-social-inner-wrap { justify-content: flex-start; }
	html body .cadrop-cta { flex-direction: column; align-items: flex-start; gap: 20px; padding: 32px 28px; }
	html body .cadrop-cta-text, html body .cadrop-cta-action { flex-basis: auto; text-align: left; }
	html body .entry-content .cadrop-widget-testimonial { padding: 76px 24px 32px !important; }
	html body .entry-content .wp-block-cover { padding-left: 24px !important; padding-right: 24px !important; }
	html body .entry-content .wp-block-cover .wp-block-cover__background {
		background: linear-gradient(180deg, rgba(31, 31, 59, .55) 0%, rgba(31, 31, 59, .9) 100%) !important;
	}
}
