/* Kit Asso : « Bloc de contenu » (inc/blocs.php). Une section complète : fond, marges, largeur, puis l'un
 * des 16 modèles. Couleurs, polices et espacements viennent de l'ambiance (variables Elementor du kit). */

.kb {
	--kb-fond: transparent;
	--kb-fond-reel: var(--couleur-fond, #FBF8F4);
	--kb-texte: var(--couleur-texte, #1F2A2E);
	--kb-doux: var(--couleur-texte-doux, #4A5A5F);
	--kb-titre: var(--couleur-primaire-fonce, #093F3D);
	--kb-accent: var(--couleur-accent-texte, var(--couleur-accent, #A93D0E));
	--kb-trait: var(--couleur-bordure, #DDD5CA);
	--kb-espace: var(--espace-section, clamp(3rem, 2.25rem + 2.5vw, 5rem));
	--kb-largeur: var(--largeur-contenu, 1240px);
	--kb-marge: var(--marge-laterale, clamp(1rem, 4vw, 2.5rem));
	--kb-gap: clamp(1.25rem, .9rem + 1.5vw, 2rem);
	--kb-rayon: var(--rayon, 12px);
	position: relative;
	isolation: isolate;
	container-type: inline-size;
	overflow-x: clip;
	padding: var(--kb-espace) var(--kb-marge);
	background: var(--kb-fond);
	color: var(--kb-texte);
}
.kb--fond-alt { --kb-fond: var(--couleur-fond-alt, #F2EDE6); --kb-fond-reel: var(--kb-fond); }
.kb--fond-teinte { --kb-fond: var(--couleur-primaire-clair, #E3F0EE); --kb-fond-reel: var(--kb-fond); }
.kb--fond-blanc { --kb-fond: var(--couleur-surface, #FFFFFF); --kb-fond-reel: var(--kb-fond); }
.kb--fond-sombre { --kb-fond: var(--couleur-primaire-fonce, #093F3D); --kb-fond-reel: var(--kb-fond); }
.kb--fond-accent { --kb-fond: var(--couleur-accent, #B8420F); --kb-fond-reel: var(--kb-fond); --kb-sur-accent: var(--couleur-sur-accent, var(--couleur-texte-inverse, #FFFFFF)); }
.kb--inverse {
	--kb-texte: var(--couleur-texte-inverse, #FFFFFF);
	--kb-doux: color-mix(in srgb, var(--couleur-texte-inverse, #FFFFFF) 84%, transparent);
	--kb-titre: var(--couleur-texte-inverse, #FFFFFF);
	--kb-accent: var(--couleur-accent-clair, #F4A261);
	--kb-trait: color-mix(in srgb, var(--couleur-texte-inverse, #FFFFFF) 22%, transparent);
}
.kb--fond-accent { --kb-accent: var(--kb-sur-accent); }
/* Sur l'accent, le texte prend la couleur prévue pour lui (blanc sur un accent foncé, foncé sur un accent clair). */
.kb--fond-accent.kb--inverse {
	--kb-texte: var(--kb-sur-accent);
	--kb-titre: var(--kb-sur-accent);
	--kb-doux: color-mix(in srgb, var(--kb-sur-accent) 86%, transparent);
	--kb-trait: color-mix(in srgb, var(--kb-sur-accent) 25%, transparent);
}
.kb--espace-compact { --kb-espace: calc(var(--espace-section, 4rem) * .6); }
.kb--espace-aere { --kb-espace: calc(var(--espace-section, 4rem) * 1.35); }
.kb--espace-aucun { --kb-espace: 0px; }
.kb--largeur-etroite { --kb-largeur: 48rem; }
.kb--largeur-large { --kb-largeur: 1440px; }

.kb__conteneur { position: relative; max-width: var(--kb-largeur); margin-inline: auto; display: flex; flex-direction: column; gap: var(--espace-l, 2.5rem); min-width: 0; }

/* --- Textes --------------------------------------------------------------- */

.kb__entete { display: flex; flex-direction: column; gap: .9rem; max-width: 46rem; min-width: 0; }
.kb--align-centre .kb__entete { margin-inline: auto; align-items: center; text-align: center; }
.kb__surtitre { margin: 0; font-size: var(--taille-texte-petit, .9375rem); font-weight: 700; line-height: 1.3; color: var(--kb-accent); }
.kb__titre {
	margin: 0; font-family: var(--police-titres, inherit); font-size: var(--taille-h2, clamp(2rem, 1.5rem + 2vw, 3rem));
	font-weight: var(--kitasso-graisse-titres, 600); line-height: 1.12; color: var(--kb-titre); text-wrap: balance; overflow-wrap: anywhere;
}
h1.kb__titre { font-size: var(--taille-h1, clamp(2.5rem, 1.6rem + 3.6vw, 4.5rem)); line-height: 1.05; }
h3.kb__titre { font-size: var(--taille-h3, clamp(1.5rem, 1.25rem + 1vw, 2rem)); }
p.kb__titre { font-size: var(--taille-h4, 1.25rem); }
.kb__texte { color: var(--kb-doux); font-size: var(--taille-texte, 1.125rem); line-height: 1.65; }
.kb__texte > * { margin: 0; }
.kb__texte > * + * { margin-top: .85em; }
.kb__texte ul { padding-left: 1.2em; }
.kb__texte li + li { margin-top: .35em; }
.kb__texte strong { color: var(--kb-texte); }
.kb__texte a, .kb__el-texte a { color: inherit; text-decoration: underline; text-underline-offset: .2em; }
.kb__boutons { display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin: .5rem 0 0; }
.kb--align-centre .kb__boutons { justify-content: center; }
.kb__bouton {
	display: inline-flex; align-items: center; justify-content: center; gap: .5em; padding: .85em 1.5em; border-radius: var(--rayon-bouton, 8px);
	font-weight: 700; line-height: 1.2; text-decoration: none; white-space: nowrap; transition: background-color .2s, color .2s, box-shadow .2s;
}
.kb .kb__bouton--plein { background: var(--couleur-accent, #B8420F); color: var(--couleur-sur-accent, #FFFFFF); }
.kb .kb__bouton--plein:hover, .kb .kb__bouton--plein:focus-visible { background: var(--couleur-accent-fonce, #8F330C); color: var(--couleur-sur-accent, #FFFFFF); }
.kb--fond-accent .kb__bouton--plein { background: var(--kb-sur-accent, #FFFFFF); color: var(--couleur-accent, #B8420F); }
.kb--fond-accent .kb__bouton--plein:hover, .kb--fond-accent .kb__bouton--plein:focus-visible { background: var(--couleur-primaire-fonce, #093F3D); color: var(--couleur-texte-inverse, #FFFFFF); }
.kb .kb__bouton--contour { background: transparent; color: var(--kb-titre); box-shadow: inset 0 0 0 2px currentColor; }
.kb .kb__bouton--contour:hover, .kb .kb__bouton--contour:focus-visible { background: var(--kb-titre); color: var(--kb-fond-reel); }
.kb .kb__bouton--lien { padding: .35em 0; color: var(--kb-titre); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .3em; }
.kb .kb__bouton--lien:hover { text-decoration-color: var(--kb-accent); }
.kb a:focus-visible { outline: 3px solid var(--kitasso-focus, var(--couleur-accent, #B8420F)); outline-offset: 3px; }
.kb--inverse a:focus-visible { outline-color: var(--couleur-texte-inverse, #FFFFFF); }

.kb__icone { display: block; flex: none; width: 1.5rem; height: 1.5rem; }
.kb__icone--grande { width: 2.75rem; height: 2.75rem; color: var(--kb-accent); }
.kb--align-centre .kb__icone--grande { margin-inline: auto; }

.kb__vide { color: var(--kb-doux); font-style: italic; font-weight: 400; font-size: 1rem; font-family: inherit; padding: .75rem 1rem; border: 1px dashed var(--kb-trait); border-radius: var(--kb-rayon); }

/* --- Images : forme, cadrage, effet -------------------------------------- */

.kb__media { --kb-r: calc(var(--kb-rayon) * 1.5); position: relative; margin: 0; min-width: 0; isolation: isolate; }
.kb__cadre { position: relative; overflow: hidden; border-radius: var(--kb-r); background: color-mix(in srgb, var(--kb-trait) 50%, transparent); }
.kb__img { display: block; width: 100%; height: auto; }
.kb-ratio-paysage .kb__cadre { aspect-ratio: 4 / 3; }
.kb-ratio-large .kb__cadre { aspect-ratio: 16 / 9; }
.kb-ratio-carre .kb__cadre { aspect-ratio: 1; }
.kb-ratio-portrait .kb__cadre { aspect-ratio: 3 / 4; }
.kb__media:not(.kb-ratio-auto) .kb__img { height: 100%; object-fit: cover; }
.kb-forme-droite { --kb-r: 0px; }
.kb-forme-arche { --kb-r: 999px 999px var(--kb-rayon) var(--kb-rayon); }
.kb-forme-arche.kb-ratio-auto .kb__cadre { aspect-ratio: 4 / 5; }
.kb-forme-arche.kb-ratio-auto .kb__img, .kb-forme-cercle .kb__img { height: 100%; object-fit: cover; }
.kb-forme-cercle { --kb-r: 50%; }
.kb-forme-cercle .kb__cadre { aspect-ratio: 1; }
.kb-forme-feuille { --kb-r: clamp(2rem, 1rem + 5cqi, 5rem) .5rem; }
.kb-forme-biseau .kb__cadre, .kb-forme-biseau.kb__media::before { clip-path: polygon(0 0, calc(100% - clamp(2rem, 6cqi, 4rem)) 0, 100% clamp(2rem, 6cqi, 4rem), 100% 100%, 0 100%); border-radius: 0; }
.kb__legende { margin-top: .65rem; font-size: var(--taille-texte-petit, .9375rem); line-height: 1.45; color: var(--kb-doux); }

.kb__media::before { content: none; position: absolute; z-index: -1; pointer-events: none; }
.kb-decor-cadre::before, .kb-decor-aplat::before { content: ""; inset: 1rem -1rem -1rem 1rem; border-radius: var(--kb-r); }
.kb-decor-cadre::before { border: 2px solid var(--couleur-accent, #B8420F); }
.kb-decor-aplat::before { background: var(--couleur-primaire-clair, #E3F0EE); }
.kb--inverse .kb-decor-aplat::before, .kb--fond-teinte .kb-decor-aplat::before { background: var(--couleur-accent, #B8420F); }
.kb--image-droite .kb-decor-cadre::before, .kb--image-droite .kb-decor-aplat::before { inset: 1rem 1rem -1rem -1rem; }
.kb-decor-points::before {
	content: ""; left: -1.5rem; bottom: -1.5rem; width: 45%; aspect-ratio: 1; opacity: .55;
	background-image: radial-gradient(var(--kb-accent) 1.6px, transparent 1.8px); background-size: 14px 14px;
}
.kb--image-droite .kb-decor-points::before { left: auto; right: -1.5rem; }
.kb-decor-pastille::before { content: ""; top: -7%; right: -7%; width: 36%; aspect-ratio: 1; border-radius: 50%; background: var(--couleur-accent-clair, #F4A261); }
.kb--image-droite .kb-decor-pastille::before { right: auto; left: -7%; }
.kb-decor-ombre .kb__cadre { box-shadow: 0 1.75rem 3rem -1.25rem color-mix(in srgb, var(--couleur-primaire-fonce, #093F3D) 45%, transparent); }
.kb__media--vide {
	display: grid; place-items: center; aspect-ratio: 4 / 3; padding: 1rem; text-align: center; font-style: italic;
	color: var(--kb-doux); border: 2px dashed var(--kb-trait); border-radius: var(--kb-rayon);
}

/* --- Titre à gauche, texte à droite ; liste de points forts ---------------- */

.kb__deux { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--kb-gap) clamp(2rem, 1rem + 5cqi, 6rem); align-items: start; }
.kb__deux > .kb__entete { max-width: none; }
.kb--titre-texte .kb__suite .kb__texte { font-size: var(--taille-texte-grand, 1.25rem); }
.kb--titre-texte .kb__suite > .kb__boutons { margin-top: 1.5rem; }
.kb--align-centre .kb__deux .kb__entete { align-items: flex-start; text-align: left; margin: 0; }

/* --- Citation ------------------------------------------------------------ */

.kb__citation { margin: 0; max-width: 54rem; display: flex; flex-direction: column; gap: 1.5rem; }
.kb--align-centre .kb__citation { margin-inline: auto; align-items: center; text-align: center; }
.kb__citation-texte { margin: 0; font-family: var(--police-titres, inherit); font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.25rem); line-height: 1.3; color: var(--kb-titre); }
.kb__citation-texte > p:first-child::before { content: "«\202F"; color: var(--kb-accent); }
.kb__citation-texte > p:last-child::after { content: "\202F»"; color: var(--kb-accent); }
.kb__citation-texte p { margin: 0; }
.kb__citation-texte p + p { margin-top: .6em; }
.kb__signature { display: flex; align-items: center; gap: .9rem; font-weight: 700; color: var(--kb-texte); }
.kb__portrait { flex: none; width: 3.5rem; height: 3.5rem; border-radius: 50%; overflow: hidden; }
.kb__portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* --- Encadré ------------------------------------------------------------- */

.kb__encadre {
	display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1.25rem; max-width: 56rem; padding: clamp(1.25rem, 1rem + 2cqi, 2.25rem);
	background: color-mix(in srgb, var(--couleur-primaire-clair, #E3F0EE) 75%, var(--kb-fond-reel)); border-left: 4px solid var(--couleur-accent, #B8420F);
	border-radius: 0 var(--kb-rayon) var(--kb-rayon) 0;
}
.kb--inverse .kb__encadre { background: color-mix(in srgb, var(--couleur-texte-inverse, #FFFFFF) 8%, transparent); }
.kb--align-centre .kb__encadre { margin-inline: auto; }
.kb__encadre .kb__entete { max-width: none; align-items: flex-start; text-align: left; margin: 0; }
.kb__icone--encadre { width: 2.25rem; height: 2.25rem; color: var(--kb-accent); }
/* Un encadré reste une information à retenir : son titre a la taille d'un sous-titre. */
.kb__encadre .kb__titre { font-size: var(--taille-h3, clamp(1.5rem, 1.25rem + 1vw, 2rem)); }

/* --- Appel à l'action ---------------------------------------------------- */

.kb__appel { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem 3rem; }
.kb__appel > .kb__entete { flex: 1 1 26rem; }
.kb__appel > .kb__boutons { flex: 0 1 auto; margin: 0; }
.kb--align-centre .kb__appel { flex-direction: column; text-align: center; }
.kb--align-centre .kb__appel > .kb__entete { flex: none; }
/* Sur le fond de la page, l'appel devient un panneau sombre. */
.kb--appel.kb--fond-aucun .kb__appel {
	--kb-texte: var(--couleur-texte-inverse, #FFFFFF); --kb-doux: color-mix(in srgb, var(--couleur-texte-inverse, #FFFFFF) 84%, transparent);
	--kb-titre: var(--couleur-texte-inverse, #FFFFFF); --kb-accent: var(--couleur-accent-clair, #F4A261); --kb-fond-reel: var(--couleur-primaire-fonce, #093F3D);
	padding: clamp(1.75rem, 1rem + 4cqi, 3.5rem); border-radius: calc(var(--kb-rayon) * 1.5); background: var(--couleur-primaire-fonce, #093F3D); color: var(--kb-texte);
}

/* --- Image et texte côte à côte, image au bord, collage ------------------- */

.kb__duo {
	--kb-cm: 1fr; --kb-ct: 1fr;
	display: grid; grid-template-columns: minmax(0, var(--kb-cm)) minmax(0, var(--kb-ct)); grid-template-areas: "media texte";
	gap: var(--kb-gap) clamp(2rem, 1rem + 5cqi, 5.5rem); align-items: center;
}
.kb--part-image .kb__duo { --kb-cm: 7fr; --kb-ct: 5fr; }
.kb--part-texte .kb__duo { --kb-cm: 5fr; --kb-ct: 7fr; }
.kb--image-droite .kb__duo { grid-template-columns: minmax(0, var(--kb-ct)) minmax(0, var(--kb-cm)); grid-template-areas: "texte media"; }
.kb__duo > .kb__media { grid-area: media; }
.kb__duo > .kb__cote { grid-area: texte; min-width: 0; }
.kb__cote > .kb__entete { max-width: 40rem; }

.kb--image-debord { --kb-bord: max(var(--kb-marge), (100vw - var(--kb-largeur)) / 2); }
.kb--image-debord .kb__duo { align-items: stretch; }
.kb--image-debord .kb__duo > .kb__media { margin-block: calc(-1 * var(--kb-espace)); margin-inline-start: calc(-1 * var(--kb-bord)); min-height: min(34rem, 90vw); }
.kb--image-debord.kb--image-droite .kb__duo > .kb__media { margin-inline-start: 0; margin-inline-end: calc(-1 * var(--kb-bord)); }
.kb--image-debord .kb__cadre { height: 100%; border-radius: 0; }
.kb--image-debord .kb__img { height: 100%; object-fit: cover; }
.kb--image-debord .kb__cote { align-self: center; padding-block: clamp(.5rem, 2cqi, 2rem); }
.kb--image-debord.kb--espace-aucun .kb__cote { padding-block: clamp(2rem, 1rem + 4cqi, 4rem); }

.kb__media--collage { padding: 0 14% 16% 0; }
.kb--image-droite .kb__media--collage { padding: 0 0 16% 14%; }
.kb__second { position: absolute; right: 0; bottom: 0; width: 46%; border: clamp(.35rem, 1cqi, .6rem) solid var(--kb-fond-reel); border-radius: calc(var(--kb-rayon) * 1.25); overflow: hidden; background: var(--kb-fond-reel); }
.kb--image-droite .kb__second { right: auto; left: 0; }
.kb__second .kb__img { aspect-ratio: 1; height: auto; object-fit: cover; }

/* --- Bannière : texte sur une image -------------------------------------- */

.kb--image-fond { --kb-fond: var(--couleur-primaire-fonce, #093F3D); --kb-fond-reel: var(--kb-fond); display: flex; align-items: center; min-height: clamp(26rem, 60vh, 40rem); }
.kb--image-fond > .kb__conteneur { width: 100%; }
.kb--hauteur-moyenne { min-height: clamp(20rem, 42vh, 28rem); }
.kb--hauteur-ecran { min-height: calc(100svh - var(--kitasso-entete-hauteur, 0px)); }
.kb--place-bas { align-items: flex-end; }
.kb__fond { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.kb__fond .kb__img { width: 100%; height: 100%; object-fit: cover; }
.kb__fond::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .55); }
.kb--voile-leger .kb__fond::after { background: rgba(0, 0, 0, .38); }
.kb--voile-couleur .kb__fond::after { background: color-mix(in srgb, var(--couleur-primaire-fonce, #093F3D) 80%, transparent); }
.kb--voile-degrade .kb__fond::after { background: linear-gradient(90deg, rgba(0, 0, 0, .78) 0%, rgba(0, 0, 0, .5) 45%, rgba(0, 0, 0, .12) 100%); }
.kb--voile-degrade.kb--place-bas .kb__fond::after { background: linear-gradient(0deg, rgba(0, 0, 0, .8) 0%, rgba(0, 0, 0, .4) 50%, rgba(0, 0, 0, .05) 100%); }
.kb--voile-degrade.kb--place-centre .kb__fond::after { background: rgba(0, 0, 0, .55); }
.kb--image-fond .kb__entete { max-width: 42rem; }
.kb--image-fond .kb__texte { font-size: var(--taille-texte-grand, 1.25rem); }
.kb--place-centre .kb__entete { margin-inline: auto; align-items: center; text-align: center; }
.kb--place-centre .kb__boutons { justify-content: center; }

/* --- Carte posée sur l'image -------------------------------------------- */

.kb__superpose { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: center; }
.kb__superpose > .kb__media { grid-column: 1 / span 8; grid-row: 1; }
.kb__superpose > .kb__carte { grid-column: 7 / -1; grid-row: 1; }
.kb--image-droite .kb__superpose > .kb__media { grid-column: 5 / -1; }
.kb--image-droite .kb__superpose > .kb__carte { grid-column: 1 / span 6; }
.kb__carte {
	--kb-texte: var(--couleur-texte, #1F2A2E); --kb-doux: var(--couleur-texte-doux, #4A5A5F); --kb-titre: var(--couleur-primaire-fonce, #093F3D);
	--kb-accent: var(--couleur-accent-texte, #A93D0E); --kb-fond-reel: var(--couleur-surface, #FFFFFF);
	position: relative; z-index: 1; padding: clamp(1.5rem, 1rem + 3cqi, 3rem); background: var(--couleur-surface, #FFFFFF); color: var(--kb-texte);
	border-radius: calc(var(--kb-rayon) * 1.25); box-shadow: 0 1.5rem 3rem -1.25rem color-mix(in srgb, var(--couleur-primaire-fonce, #093F3D) 35%, transparent);
}
.kb__carte .kb__entete { max-width: none; }

/* --- Grande image, texte dessous ---------------------------------------- */

.kb--image-dessus .kb__media--large { width: 100%; }

/* --- Éléments ------------------------------------------------------------ */

.kb__elements {
	--kb-colonnes: 3;
	list-style: none; margin: 0; padding: 0; display: grid; gap: var(--kb-gap);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, max(13.5rem, calc((100% - (var(--kb-colonnes) - 1) * var(--kb-gap)) / var(--kb-colonnes)))), 1fr));
}
.kb__el { position: relative; display: flex; flex-direction: column; gap: .8rem; min-width: 0; }
.kb__el-corps { display: flex; flex-direction: column; gap: .5rem; min-width: 0; }
.kb__el-titre { margin: 0; font-family: var(--police-titres, inherit); font-size: var(--taille-h4, 1.25rem); font-weight: var(--kitasso-graisse-titres, 600); line-height: 1.25; color: var(--kb-titre); overflow-wrap: anywhere; }
h4.kb__el-titre { font-size: 1.125rem; }
.kb__el-texte { color: var(--kb-doux); line-height: 1.6; }
.kb__el-texte > * { margin: 0; }
.kb__el-texte > * + * { margin-top: .6em; }
.kb__el-texte ul { padding-left: 1.1em; }
.kb__el-lien { color: inherit; text-decoration: none; }
.kb__el-lien::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.kb__el--lien:hover .kb__el-lien { text-decoration: underline; text-underline-offset: .2em; }
.kb__el-lien:focus-visible { outline: none; }
/* Un lien écrit dans le texte d'une carte cliquable reste cliquable au-dessus de la carte. */
.kb__el-texte a { position: relative; z-index: 1; }
.kb__el--lien:focus-within { outline: 3px solid var(--kitasso-focus, var(--couleur-accent, #B8420F)); outline-offset: 4px; border-radius: var(--kb-rayon); }
.kb--align-centre .kb__elements:not(.kb__elements--cartes) .kb__el { align-items: center; text-align: center; }
.kb--align-centre .kb__el-corps { align-items: inherit; }

.kb__icone--repere { width: 3rem; height: 3rem; padding: .7rem; border-radius: var(--kb-rayon); background: var(--couleur-primaire-clair, #E3F0EE); color: var(--couleur-primaire, #0E5A57); }
.kb--inverse .kb__icone--repere { background: color-mix(in srgb, var(--couleur-texte-inverse, #FFFFFF) 12%, transparent); color: var(--kb-accent); }
.kb--fond-teinte .kb__icone--repere { background: var(--couleur-surface, #FFFFFF); }
.kb__numero { font-family: var(--police-titres, inherit); font-size: 2.5rem; font-weight: 700; line-height: 1; color: var(--kb-accent); font-variant-numeric: tabular-nums; }
.kb__media--el { width: 100%; }

.kb__elements--cartes .kb__el { padding: clamp(1.25rem, 1rem + 1cqi, 1.75rem); background: var(--couleur-surface, #FFFFFF); border: var(--kitasso-epaisseur-bordure, 1px) solid var(--kb-trait); border-radius: var(--kb-rayon); box-shadow: var(--kitasso-ombre, none); }
.kb--inverse .kb__elements--cartes .kb__el { background: color-mix(in srgb, var(--couleur-texte-inverse, #FFFFFF) 7%, transparent); }
.kb--fond-blanc .kb__elements--cartes .kb__el { background: var(--couleur-fond, #FBF8F4); }
.kb__elements--cartes .kb__media--el { margin: calc(-1 * clamp(1.25rem, 1rem + 1cqi, 1.75rem)) calc(-1 * clamp(1.25rem, 1rem + 1cqi, 1.75rem)) 0; width: auto; }
.kb__elements--cartes .kb__media--el .kb__cadre { border-radius: var(--kb-rayon) var(--kb-rayon) 0 0; }
.kb__elements--filet .kb__el { padding-top: 1.25rem; border-top: 3px solid var(--couleur-accent, #B8420F); }
.kb--inverse .kb__elements--filet .kb__el { border-top-color: var(--kb-accent); }
.kb__elements--teinte .kb__el { padding: clamp(1.25rem, 1rem + 1cqi, 1.75rem); background: var(--couleur-primaire-clair, #E3F0EE); border-radius: var(--kb-rayon); }
.kb--fond-teinte .kb__elements--teinte .kb__el { background: var(--couleur-surface, #FFFFFF); }
.kb--inverse .kb__elements--teinte .kb__el { background: color-mix(in srgb, var(--couleur-texte-inverse, #FFFFFF) 10%, transparent); }

/* Liste de points forts : lignes séparées par un filet */
.kb--liste .kb__elements { grid-template-columns: minmax(0, 1fr); gap: 0; }
.kb--liste .kb__el { flex-direction: row; align-items: flex-start; gap: 1rem; padding-block: 1.15rem; border-top: var(--kitasso-epaisseur-bordure, 1px) solid var(--kb-trait); }
.kb--liste .kb__el:last-child { border-bottom: var(--kitasso-epaisseur-bordure, 1px) solid var(--kb-trait); }
.kb--liste .kb__icone--repere { width: 2.5rem; height: 2.5rem; padding: .55rem; }
.kb--liste .kb__numero { font-size: 1.75rem; min-width: 1.6ch; }
.kb--liste.kb--align-centre .kb__el { text-align: left; }

/* Étapes : pastilles numérotées reliées par un trait */
.kb--etapes .kb__elements { counter-reset: none; }
.kb--etapes .kb__numero {
	flex: none; display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: 50%; font-size: 1.25rem;
	background: var(--couleur-accent, #B8420F); color: var(--couleur-sur-accent, #FFFFFF);
}
.kb--fond-accent.kb--etapes .kb__numero { background: var(--kb-sur-accent, #FFFFFF); color: var(--couleur-accent, #B8420F); }
.kb--etapes .kb__el::after { content: ""; position: absolute; top: 1.5rem; left: 3.75rem; right: calc(-1 * var(--kb-gap) + .75rem); height: 2px; background: var(--kb-trait); }
.kb--etapes .kb__el:last-child::after,
.kb--etapes .kb__elements--col-2 .kb__el:nth-child(2n)::after,
.kb--etapes .kb__elements--col-3 .kb__el:nth-child(3n)::after,
.kb--etapes .kb__elements--col-4 .kb__el:nth-child(4n)::after { content: none; }
.kb--align-centre.kb--etapes .kb__el { align-items: flex-start; text-align: left; }

/* Alternance : image et texte, un côté sur deux */
.kb--alternance .kb__elements { grid-template-columns: minmax(0, 1fr); gap: clamp(2.5rem, 1.5rem + 4cqi, 5rem); }
.kb--alternance .kb__el { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "media texte"; gap: var(--kb-gap) clamp(2rem, 1rem + 5cqi, 5rem); align-items: center; }
.kb--alternance .kb__el:nth-child(even) { grid-template-areas: "texte media"; }
.kb--alternance .kb__el > .kb__media { grid-area: media; }
.kb--alternance .kb__el > .kb__el-corps { grid-area: texte; }
.kb--alternance .kb__el-titre { font-size: var(--taille-h3, clamp(1.5rem, 1.25rem + 1vw, 2rem)); }
.kb--alternance.kb--align-centre .kb__el { text-align: left; align-items: center; }

/* Chiffres en grand */
.kb__chiffre { margin: 0; font-family: var(--police-titres, inherit); font-size: clamp(2.5rem, 1.75rem + 3vw, 4rem); font-weight: 700; line-height: 1; color: var(--kb-accent); font-variant-numeric: tabular-nums; }
.kb--chiffres .kb__el { gap: .5rem; }

/* --- Motifs de fond ------------------------------------------------------- */

.kb::before { content: none; position: absolute; z-index: -1; pointer-events: none; }
.kb--motif-points::before {
	content: ""; top: 0; right: 0; width: min(42%, 34rem); height: 70%; opacity: .5;
	background-image: radial-gradient(color-mix(in srgb, var(--kb-accent) 60%, transparent) 1.5px, transparent 1.7px); background-size: 16px 16px;
	-webkit-mask-image: linear-gradient(225deg, #000 10%, transparent 70%); mask-image: linear-gradient(225deg, #000 10%, transparent 70%);
}
.kb--motif-cercle::before { content: ""; top: -12rem; right: -10rem; width: 34rem; aspect-ratio: 1; border-radius: 50%; background: color-mix(in srgb, var(--kb-accent) 10%, transparent); }
.kb--motif-vague::before {
	content: ""; left: 0; right: 0; bottom: 0; height: clamp(3rem, 8vw, 6rem); background: color-mix(in srgb, var(--kb-accent) 10%, transparent);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0 60 C200 10 400 110 600 60 S1000 10 1200 60 V120 H0Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0 60 C200 10 400 110 600 60 S1000 10 1200 60 V120 H0Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
.kb--motif-lignes::before { content: ""; inset: 0; opacity: .6; background-image: repeating-linear-gradient(135deg, color-mix(in srgb, var(--kb-accent) 12%, transparent) 0 1px, transparent 1px 22px); -webkit-mask-image: linear-gradient(90deg, transparent 40%, #000); mask-image: linear-gradient(90deg, transparent 40%, #000); }

/* --- Section de page autour d'un module Kit Asso ------------------------ */
.kb__module { min-width: 0; width: 100%; }
.kb--module.kb--align-centre .kb__module > .kitasso-temoignages--grande { margin-inline: auto; }

/* --- Blocs qui se suivent sur le même fond : un seul espace entre eux ------ */

.kitasso-bloc.kb-fond-aucun + .kitasso-bloc.kb-fond-aucun > .kb:not(.kb--image-fond, .kb--image-debord),
.kitasso-bloc.kb-fond-alt + .kitasso-bloc.kb-fond-alt > .kb:not(.kb--image-fond, .kb--image-debord),
.kitasso-bloc.kb-fond-teinte + .kitasso-bloc.kb-fond-teinte > .kb:not(.kb--image-fond, .kb--image-debord),
.kitasso-bloc.kb-fond-sombre + .kitasso-bloc.kb-fond-sombre > .kb:not(.kb--image-fond, .kb--image-debord),
.kitasso-bloc.kb-fond-blanc + .kitasso-bloc.kb-fond-blanc > .kb:not(.kb--image-fond, .kb--image-debord) { padding-top: 0; }

/* --- Écrans étroits (largeur du bloc, pas de la fenêtre) ------------------ */

@container (max-width: 52rem) {
	.kb__deux, .kb__duo, .kb--image-droite .kb__duo { grid-template-columns: minmax(0, 1fr); grid-template-areas: "media" "texte"; }
	.kb__deux { gap: 1.25rem; }
	.kb--image-debord .kb__duo > .kb__media,
	.kb--image-debord.kb--image-droite .kb__duo > .kb__media { margin: calc(-1 * var(--kb-espace)) calc(-1 * var(--kb-marge)) 0; min-height: 0; }
	.kb--image-debord .kb__cadre { aspect-ratio: 4 / 3; }
	.kb--image-debord .kb__cote { padding-block: 0; }
	.kb__superpose { display: flex; flex-direction: column; }
	.kb__superpose > .kb__carte { margin: -3rem clamp(.75rem, 4cqi, 2rem) 0; }
	.kb--alternance .kb__el, .kb--alternance .kb__el:nth-child(even) { grid-template-columns: minmax(0, 1fr); grid-template-areas: "media" "texte"; }
	/* Empilée (tablette) : l'image ne prend pas toute la hauteur de l'écran. */
	.kb--alternance .kb__el > .kb__media { width: 100%; max-width: 34rem; }
	.kb--image-fond .kb__texte { font-size: var(--taille-texte, 1.125rem); }
}
/* Le texte occupe toute la largeur : le dégradé devient un voile uniforme. */
@media (max-width: 52rem) {
	.kb--voile-degrade .kb__fond::after, .kb--voile-degrade.kb--place-bas .kb__fond::after { background: rgba(0, 0, 0, .6); }
}
@container (max-width: 44rem) {
	.kb--etapes .kb__elements { grid-template-columns: minmax(0, 1fr); gap: 1.75rem; }
	.kb--etapes .kb__el { flex-direction: row; gap: 1rem; }
	.kb--etapes .kb__el::after { content: ""; top: 3.5rem; bottom: calc(-1.75rem + .5rem); left: 1.5rem; right: auto; width: 2px; height: auto; }
	.kb--etapes .kb__el:last-child::after { content: none; }
	.kb__appel { flex-direction: column; align-items: flex-start; }
	.kb__appel > .kb__entete { flex: none; }
	.kb--align-centre .kb__appel { align-items: center; }
}
@container (max-width: 30rem) {
	.kb__encadre { grid-template-columns: minmax(0, 1fr); }
	.kb__bouton { white-space: normal; text-align: center; }
	.kb--image-fond { min-height: 0; }
	.kb--hauteur-ecran { min-height: calc(100svh - var(--kitasso-entete-hauteur, 0px)); }
}
@media (prefers-reduced-motion: reduce) { .kb__bouton { transition: none; } }

/* Conteneur Elementor (Bloc div, Flexbox) qui ne porte que des widgets Kit Asso, dont au moins une section :
 * pas de marge intérieure. Elementor en crée un, avec 10 px de marge, dès qu'un widget est déposé à la racine
 * de la page : sans cette règle, les fonds des sections ne toucheraient pas les bords de l'écran.
 * Les sections gèrent leurs propres espaces ; les modules sans section posés à côté reçoivent la marge latérale
 * des sections, alignée sur leur contenu. Dans l'éditeur, chaque widget est enveloppé (classe
 * « elementor-widget-e-kitasso-… ») et le conteneur porte un calque et des poignées : ils sont pris en compte.
 * Spécificité (0,2,1) : dans l'éditeur, Elementor réinjecte sa marge par défaut (0,2,0) après cette feuille ;
 * la règle doit donc peser un peu plus, sur le site comme dans l'éditeur, pour que les deux affichent la même chose.
 * Une marge réglée à la main sur un tel conteneur est donc ignorée : les espaces se règlent dans les blocs. */
.elementor :is(div, section, article, aside, main, header, footer, nav, a).e-div-block-base:where(:has(> :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"]), > [class*="elementor-widget-e-kitasso-"] > :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"])):not(:has(> :not(.kitasso-bloc, [class*="elementor-widget-e-kitasso-"], .elementor-element-overlay, .ui-resizable-handle)))),
.elementor :is(div, section, article, aside, main, header, footer, nav, a).e-flexbox-base:where(:has(> :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"]), > [class*="elementor-widget-e-kitasso-"] > :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"])):not(:has(> :not(.kitasso-bloc, [class*="elementor-widget-e-kitasso-"], .elementor-element-overlay, .ui-resizable-handle)))) { padding: 0; }
:where(.e-div-block-base, .e-flexbox-base):has(> :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"]), > [class*="elementor-widget-e-kitasso-"] > :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"])):not(:has(> :not(.kitasso-bloc, [class*="elementor-widget-e-kitasso-"], .elementor-element-overlay, .ui-resizable-handle))) > .kitasso-bloc:not(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"], .kitasso-bloc--ancre),
:where(.e-div-block-base, .e-flexbox-base):has(> :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"]), > [class*="elementor-widget-e-kitasso-"] > :is(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"])):not(:has(> :not(.kitasso-bloc, [class*="elementor-widget-e-kitasso-"], .elementor-element-overlay, .ui-resizable-handle))) > [class*="elementor-widget-e-kitasso-"] > .kitasso-bloc:not(.kitasso-bloc--contenu, .kitasso-bloc--une, .kitasso-bloc[class*="kb-fond-"], .kitasso-bloc--ancre) {
	padding-inline: max(var(--marge-laterale, clamp(1rem, 4vw, 2.5rem)), (100% - var(--largeur-contenu, 1240px)) / 2);
}
