/*
Theme Name: RI2E
Template: hello-elementor
Description: Thème enfant RI2E (Hello Elementor), intégration de la maquette Figma.
Author: Logia
Version: 1.0.0
Text Domain: ri2e
*/

/* ==========================================================================
   RI2E : styles du projet. Couleurs, typos et boutons viennent du Kit Elementor ; ce fichier ne gère que ce
   qui n'est pas réglable proprement dans Elementor. Le socle (assets/css/socle.css) n'est jamais modifié :
   il se surcharge ici.
   ========================================================================== */
:root {
	--pb-accent: var(--e-global-color-primary, #007DC3);
	--pb-accent-survol: var(--e-global-color-bleufon, #00669F);
	--pb-texte: var(--e-global-color-text, #242424);
	--pb-demi-contenu: 655px;
	--nav-height: 103px;
	--nav-gap: 10px;
	--ri2e-bleu: var(--e-global-color-primary, #007DC3);
	--ri2e-vert: var(--e-global-color-secondary, #79B92C);
	--ri2e-turquoise: var(--e-global-color-turquois, #7DC6B0);
	--ri2e-jaune: var(--e-global-color-jaune, #FFE200);
	--ri2e-anthracite: var(--e-global-color-anthraci, #242424);
	--ri2e-ombre: 0 4px 4px rgba(0, 0, 0, .25);
	/* Couleur d'accent de la page (pages de prestations : body.pb-accent-*) */
	--ri2e-accent: var(--ri2e-bleu);
	--ri2e-accent-texte: #fff;
	/* Formulaires (bloc sombre de la page Contact) */
	--pb-form-accent: var(--ri2e-vert);
	--pb-form-focus: var(--ri2e-vert);
	--pb-form-etiquette-fond: #fff;
	--pb-form-etiquette-gauche: 12px;
	--pb-form-demi-gouttiere: 6px;
	--pb-form-rayon-fichier: 10px;
}

body.pb-accent-turquoise { --ri2e-accent: var(--ri2e-turquoise); }
body.pb-accent-vert { --ri2e-accent: var(--ri2e-vert); }
body.pb-accent-bleu { --ri2e-accent: var(--ri2e-bleu); }
body.pb-accent-jaune { --ri2e-accent: var(--ri2e-jaune); --ri2e-accent-texte: var(--ri2e-anthracite); }

html {
	scroll-padding-top: calc(var(--nav-height) + var(--nav-gap));
}

/* Largeurs flex : pb-auto = largeur de son contenu ; pb-flex-reste = la place restante, sans déborder du parent
   (« Grandir » d'Elementor interdit aussi de rétrécir). Desktop seulement : en dessous, les réglages du palier. */
@media (min-width: 1025px) {
	.e-con.pb-auto {
		--width: auto;
		flex: 0 0 auto;
	}
	.e-con.pb-flex-reste {
		flex: 1 1 0%;
		min-width: 0;
	}
}

@media (max-width: 1024px) {
	.pb-header .e-con.pb-auto,
	.pb-footer .e-con.pb-auto {
		--width: auto;
		flex: 0 0 auto;
	}
}

/* ==========================================================================
   Textes : rognage à la hauteur de capitale (Figma mesure les espacements entre capitale et ligne de base)
   ========================================================================== */
.elementor-heading-title,
.elementor-widget-text-editor > p:first-child,
.elementor-widget-text-editor > :is(p, ul):last-child {
	text-box: trim-both cap alphabetic;
}

p.elementor-heading-title {
	margin: 0;
}

.elementor-widget-text-editor p:last-child {
	margin-bottom: 0;
}

.elementor-widget-text-editor strong,
.elementor-widget-text-editor b {
	font-weight: 700;
}

.elementor-widget-text-editor strong.pb-medium {
	font-weight: 500;
}

.pb-vert { color: var(--ri2e-vert); }
.pb-accent { color: var(--ri2e-vert); }

/* Surtitres : emblème RI2E en ::before */
.pb-surtitre {
	line-height: 0;
}

.pb-surtitre .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	vertical-align: top;
	text-box: none;
	line-height: 1.2;
}

.pb-surtitre .elementor-heading-title::before {
	content: "";
	flex: 0 0 20px;
	width: 20px;
	height: 17px;
	background: url("assets/img/picto-surtitre-ri2e.webp") center / contain no-repeat;
}

.elementor-widget-heading[class*="elementor-align-center"].pb-surtitre .elementor-heading-title,
.pb-surtitre.elementor-widget-heading:has(.elementor-heading-title[style*="center"]) .elementor-heading-title {
	justify-content: center;
}

/* Titres : retours à la ligne de la maquette ignorés en tablette et en mobile */
@media (max-width: 1024px) {
	.elementor-heading-title br {
		display: none;
	}
}

/* ==========================================================================
   Boutons : pilule, texte Neuropol, pastille fléchée blanche à droite (prend la couleur du texte du bouton).
   Survol : inversion (fond blanc, texte et bordure de la couleur du bouton), réglée dans le Kit et par btn().
   ========================================================================== */
.elementor-widget-button .elementor-button {
	min-height: 30px;
	line-height: 1.2;
	transition: background-color .25s ease, color .25s ease, border-color .25s ease;
}

.elementor-widget-button .elementor-button-content-wrapper {
	align-items: center;
	gap: 8px;
}

.elementor-widget-button:not(.pb-btn--lien) .elementor-button-content-wrapper::after {
	content: "";
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	background-color: currentColor;
	-webkit-mask: url("assets/img/pastille-fleche.svg") center / contain no-repeat;
	mask: url("assets/img/pastille-fleche.svg") center / contain no-repeat;
	transform: rotate(-90deg);
}

.elementor-widget-button .elementor-button-text {
	white-space: nowrap;
}

/* Lien de carte (« Lire l'article ») : texte bleu gras + chevron, pas de pilule */
.pb-btn--lien .elementor-button {
	min-height: 0;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0;
	background: transparent !important;
}

.pb-btn--lien .elementor-button-content-wrapper::after {
	content: "";
	flex: 0 0 7px;
	width: 7px;
	height: 12px;
	margin-left: 2px;
	background-color: currentColor;
	-webkit-mask: url("assets/img/chevron-lien.svg") center / contain no-repeat;
	mask: url("assets/img/chevron-lien.svg") center / contain no-repeat;
	transition: transform .25s ease;
}

.pb-btn--lien .elementor-button:is(:hover, :focus-visible) .elementor-button-content-wrapper::after {
	transform: translateX(3px);
}

/* Bouton à la couleur d'accent de la page de prestation */
.pb-btn--accent .elementor-button {
	background-color: var(--ri2e-accent);
	border: 1.5px solid var(--ri2e-accent);
	color: var(--ri2e-accent-texte);
}

.pb-btn--accent .elementor-button:is(:hover, :focus-visible) {
	background-color: #fff;
	color: var(--ri2e-accent);
}

body.pb-accent-jaune .pb-btn--accent .elementor-button:is(:hover, :focus-visible) {
	color: var(--ri2e-anthracite);
}

/* ==========================================================================
   Header en capsule au scroll (classe pb-header--capsule). En haut de page : transparent, logo 94 × 80 à 23 px
   du haut. Au scroll : le contenu (.e-con-inner) devient une pastille anthracite translucide et floutée, plus
   fine (logo réduit) ; les côtés restent transparents. Téléphone : barre classique (voir plus bas).
   ========================================================================== */
.pb-header {
	position: fixed !important;
	top: 0;
	left: 0;
	right: 0;
	z-index: 999;
}

body.admin-bar .pb-header {
	top: 32px;
}

@media (max-width: 782px) {
	body.admin-bar .pb-header {
		top: 46px;
	}
}

.pb-header--capsule.e-con,
.pb-header--capsule.scrollHeader.e-con {
	background-color: transparent !important;
	box-shadow: none !important;
	transition: padding .3s ease;
}

.pb-header--capsule.scrollHeader.e-con {
	padding-top: 16px !important;
}

.pb-header--capsule > .e-con-inner {
	position: relative;
	padding: 23px 0 0;
	border: 1px solid transparent;
	border-radius: 999px;
	background: transparent;
	transition: padding .3s ease, background-color .3s ease, border-color .3s ease, box-shadow .3s ease;
}

.pb-header--capsule.scrollHeader > .e-con-inner {
	padding: 6px 13px 6px 22px;
	border-color: rgba(255, 255, 255, .12);
	background: rgba(36, 36, 36, .86);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	backdrop-filter: blur(14px) saturate(140%);
	box-shadow: 0 12px 32px rgba(0, 0, 0, .22);
}

.pb-header .pb-logo img {
	display: block;
	height: auto;
	transition: width .3s ease;
}

.pb-header--capsule.scrollHeader .pb-logo img {
	width: 56px;
}

.pb-header .pb-header-actions.e-con {
	--width: auto;
	flex: 0 0 auto;
	flex-wrap: nowrap;
}

.pb-header .pb-logo {
	flex: 0 0 auto;
}

.pb-header .pb-nav:not(.pb-burger) {
	flex: 1 1 auto;
}

.pb-header .pb-nav:not(.pb-burger) .elementor-nav-menu--main > .elementor-nav-menu {
	justify-content: center;
	flex-wrap: nowrap;
}

/* Menu de la barre : chevron bleu de « Prestations », sous-menu en carte blanche à pastilles (socle) */
.pb-header .pb-nav .elementor-nav-menu--main > .elementor-nav-menu > li > a {
	white-space: nowrap;
}

.pb-header .pb-nav .elementor-nav-menu--main .sub-arrow svg,
.pb-header .pb-nav .elementor-nav-menu--main .sub-arrow i {
	fill: var(--ri2e-bleu);
	color: var(--ri2e-bleu);
	width: 10px;
	height: 10px;
}

.pb-header .pb-nav .elementor-nav-menu--main .sub-menu {
	border-radius: 16px;
	padding: 8px;
	box-shadow: 0 12px 32px rgba(0, 0, 0, .16);
	min-width: 260px !important;
}

/* Burger */
.pb-header .pb-burger .elementor-menu-toggle {
	padding: 11px;
}

.pb-header .pb-burger .elementor-nav-menu--dropdown {
	border-radius: 24px;
	box-shadow: 0 16px 40px rgba(0, 0, 0, .2);
}

@media (max-width: 1024px) {
	.pb-header--capsule > .e-con-inner {
		padding: 16px 0 0;
	}
	.pb-header--capsule.scrollHeader > .e-con-inner {
		padding: 6px 13px 6px 18px;
	}
	.pb-header--capsule.scrollHeader .pb-logo img {
		width: 52px;
	}
}

/* Téléphone : pas de capsule. Header transparent en haut de page, barre anthracite pleine largeur au scroll. */
@media (max-width: 767px) {
	.pb-header--capsule > .e-con-inner {
		padding: 12px 0;
	}
	.pb-header--capsule.scrollHeader.e-con {
		background-color: rgba(36, 36, 36, .96) !important;
		box-shadow: 0 10px 30px rgba(0, 0, 0, .2) !important;
		padding-top: 0 !important;
	}
	.pb-header--capsule.scrollHeader > .e-con-inner {
		padding: 8px 0;
		border-color: transparent;
		background: transparent;
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
		box-shadow: none;
	}
	.pb-header--capsule.scrollHeader .pb-logo img {
		width: 48px;
	}
}

/* Bouton d'action du burger (Contact) : bouton vert plein */
.pb-menu-action--plein > a {
	--pb-menu-action-fond: var(--ri2e-vert);
	--pb-menu-action-texte: #fff;
}

/* Pages sans hero (contact, articles, réalisations) : bande anthracite sous le header, comme la maquette */
.pb-bande-header {
	background: var(--ri2e-anthracite);
}

/* ==========================================================================
   Hero
   ========================================================================== */
.pb-hero.e-con {
	position: relative;
	overflow: hidden;
	box-shadow: 0 4px 2px rgba(0, 0, 0, .25);
	isolation: isolate;
}

.pb-hero.e-con::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background:
		linear-gradient(180deg, rgba(0, 0, 0, .75) 0%, rgba(0, 0, 0, 0) 16%),
		linear-gradient(180deg, rgba(0, 125, 195, .14) 0%, rgba(0, 125, 195, 0) 16%),
		linear-gradient(15.5deg, rgba(0, 125, 195, .2) 7.5%, rgba(0, 125, 195, 0) 53.3%),
		linear-gradient(35deg, rgba(0, 0, 0, .2) 0%, rgba(0, 0, 0, 0) 60%);
}

.pb-hero--accueil.e-con::after {
	content: "";
	position: absolute;
	z-index: 0;
	left: calc(50% + 295px);
	top: -740px;
	width: 1321px;
	height: 1227px;
	background: url("assets/img/forme-anneau-jaune-hero.svg") center / contain no-repeat;
	transform: rotate(-13.05deg);
	pointer-events: none;
}

.pb-hero > .e-con-inner,
.pb-hero > .e-con {
	position: relative;
	z-index: 1;
}

.pb-hero .pb-hero-logo img {
	display: block;
}

@media (max-width: 1024px) {
	.pb-hero--accueil.e-con::after {
		left: auto;
		right: -900px;
		top: -640px;
	}
}

@media (max-width: 767px) {
	.pb-hero--accueil.e-con::after {
		right: -1060px;
		top: -900px;
		opacity: .8;
	}
}

/* Hero des pages intérieures : titre centré sur la photo, voile de la couleur d'accent */
.pb-hero--page.e-con::before {
	background:
		linear-gradient(180deg, rgba(0, 0, 0, .65) 0%, rgba(0, 0, 0, 0) 40%),
		linear-gradient(0deg, color-mix(in srgb, var(--ri2e-accent) 55%, transparent) 0%, color-mix(in srgb, var(--ri2e-accent) 0%, transparent) 70%);
}

/* ==========================================================================
   Formes décoratives (anneaux à 5 %), derrière le contenu
   ========================================================================== */
.e-con:has(> .pb-deco),
.e-con-inner:has(> .pb-deco) {
	position: relative;
}

.pb-deco {
	pointer-events: none;
	z-index: 0 !important;
}

.pb-deco img {
	display: block;
	width: 100%;
	max-width: none;
}

.pb-deco ~ .e-con,
.pb-deco ~ .elementor-widget {
	position: relative;
	z-index: 1;
}

/* ==========================================================================
   Photos arrondies : arc jaune décoratif dans le coin bas gauche
   ========================================================================== */
.pb-photo {
	position: relative;
	overflow: hidden;
	border-radius: 30px;
}

.pb-photo img {
	display: block;
	width: 100%;
}

.pb-arc::after {
	content: "";
	position: absolute;
	pointer-events: none;
	z-index: 2;
}

.pb-arc--a::after {
	left: -190px;
	bottom: -350px;
	width: 544px;
	height: 533px;
	background: url("assets/img/forme-arc-jaune-photo-a.svg") center / 75% auto no-repeat;
	transform: rotate(-30deg);
}

.pb-arc--b::after {
	left: -160px;
	bottom: -205px;
	width: 482px;
	height: 290px;
	background: url("assets/img/forme-arc-jaune-photo-b.svg") center / contain no-repeat;
}

/* ==========================================================================
   Listes à coches (2 colonnes : À propos)
   ========================================================================== */
.pb-coches .elementor-icon-list-text {
	white-space: nowrap;
}

@media (min-width: 768px) {
	.pb-coches--2 .elementor-icon-list-items {
		display: grid;
		grid-template-columns: max-content max-content;
		column-gap: 20px;
		row-gap: 10px;
	}
	.pb-coches--2 .elementor-icon-list-item {
		margin: 0 !important;
		padding: 0 !important;
	}
}

.pb-coches--ligne .elementor-icon-list-items {
	gap: 10px 20px;
	margin: 0 !important;
}

.pb-coches--ligne .elementor-icon-list-item {
	margin: 0 !important;
}

.pb-coches .elementor-icon-list-icon svg {
	width: 20px;
	height: 20px;
}

@media (max-width: 767px) {
	.pb-coches .elementor-icon-list-text {
		white-space: normal;
	}
}

/* ==========================================================================
   Cartes de domaine : accordéon horizontal en desktop (une carte dépliée à 574 px, les autres à 342 px).
   La carte survolée ou ciblée au clavier se déplie ; sans survol, c'est la carte de pb-domaines--ouverte-N.
   Deux cartes seulement (page d'un domaine) : les deux dépliées. Tablette et mobile : carrousel tactile,
   toutes les cartes dépliées.
   ========================================================================== */
.pb-domaines .elementor-loop-container {
	display: flex !important;
	gap: 24px;
}

.pb-domaines .e-loop-item {
	flex: 342 1 0;
	min-width: 0;
	transition: flex-grow .45s ease;
}

.pb-domaine.e-con {
	position: relative;
	isolation: isolate;
	height: 100%;
	color: #fff;
	box-shadow: var(--ri2e-ombre);
	text-decoration: none;
}

.pb-domaine::before,
.pb-domaine::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: inherit;
	pointer-events: none;
}

.pb-domaine::before {
	background: linear-gradient(21deg, rgba(0, 125, 195, .3) 12.8%, rgba(0, 125, 195, 0) 55.1%);
}

.pb-domaine::after {
	background: linear-gradient(0deg, rgba(0, 0, 0, .6) 0%, rgba(0, 0, 0, 0) 60%);
}

.pb-domaine .pb-domaine-image {
	position: absolute !important;
	inset: 0;
	z-index: 0;
	width: 100% !important;
	height: 100%;
	margin: 0 !important;
}

.pb-domaine .pb-domaine-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 30%;
}

.pb-domaine > .elementor-widget:not(.pb-domaine-image) {
	position: relative;
	z-index: 2;
}

.pb-domaine .pb-domaine-titre .elementor-heading-title {
	color: #fff;
	transition: color .3s ease;
}

.pb-domaine .pb-domaine-texte {
	display: grid;
	grid-template-rows: 0fr;
	opacity: 0;
	max-width: 483px;
	margin-top: -10px;
	transition: grid-template-rows .45s ease, opacity .3s ease, margin-top .45s ease;
}

.pb-domaine .pb-domaine-texte > * {
	overflow: hidden;
	min-height: 0;
}

.pb-domaine .pb-domaine-fleche-w {
	position: absolute !important;
	right: 34px;
	bottom: 34px;
	width: auto !important;
}

.pb-domaine-fleche {
	display: block;
	width: 11px;
	height: 18px;
	background-color: #fff;
	-webkit-mask: url("assets/img/fleche-domaine.svg") center / contain no-repeat;
	mask: url("assets/img/fleche-domaine.svg") center / contain no-repeat;
	transition: transform .3s ease;
}

.pb-domaine:is(:hover, :focus-visible) .pb-domaine-fleche {
	transform: translateX(4px);
}

.pb-domaine--vert { --ri2e-domaine: var(--ri2e-vert); }
.pb-domaine--bleu { --ri2e-domaine: var(--ri2e-bleu); }
.pb-domaine--jaune { --ri2e-domaine: var(--ri2e-jaune); }
.pb-domaine--turquoise { --ri2e-domaine: var(--ri2e-turquoise); }

/* Carte dépliée */
:is(
	.pb-domaines--ouverte-1 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(1),
	.pb-domaines--ouverte-2 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(2),
	.pb-domaines--ouverte-3 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(3),
	.pb-domaines .elementor-loop-container > .e-loop-item:is(:hover, :focus-within)
) {
	flex-grow: 574;
}

.pb-domaines .elementor-loop-container:not(:has(> .e-loop-item:nth-of-type(3))) > .e-loop-item {
	flex-grow: 1;
}

:is(
	.pb-domaines--ouverte-1 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(1),
	.pb-domaines--ouverte-2 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(2),
	.pb-domaines--ouverte-3 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(3),
	.pb-domaines .elementor-loop-container > .e-loop-item:is(:hover, :focus-within),
	.pb-domaines .elementor-loop-container:not(:has(> .e-loop-item:nth-of-type(3))) > .e-loop-item
) .pb-domaine :is(.pb-domaine-texte) {
	grid-template-rows: 1fr;
	opacity: 1;
	margin-top: 0;
}

:is(
	.pb-domaines--ouverte-1 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(1),
	.pb-domaines--ouverte-2 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(2),
	.pb-domaines--ouverte-3 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(3),
	.pb-domaines .elementor-loop-container > .e-loop-item:is(:hover, :focus-within),
	.pb-domaines .elementor-loop-container:not(:has(> .e-loop-item:nth-of-type(3))) > .e-loop-item
) .pb-domaine .pb-domaine-titre .elementor-heading-title {
	color: var(--ri2e-domaine, #fff);
}

@media (max-width: 1024px) {
	.pb-domaines .elementor-loop-container {
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
		margin: -8px -40px -24px;
		padding: 8px 40px 24px;
		scroll-padding-inline: 40px;
	}
	.pb-domaines .elementor-loop-container::-webkit-scrollbar {
		display: none;
	}
	.pb-domaines .e-loop-item {
		flex: 0 0 calc((100% - 48px) / 2.3) !important;
		scroll-snap-align: start;
	}
	.pb-domaines .pb-domaine .pb-domaine-texte {
		grid-template-rows: 1fr;
		opacity: 1;
		margin-top: 0;
	}
	.pb-domaines .pb-domaine .pb-domaine-titre .elementor-heading-title {
		color: var(--ri2e-domaine, #fff);
	}
}

@media (max-width: 767px) {
	.pb-domaines .elementor-loop-container {
		margin: -8px -20px -24px;
		padding: 8px 20px 24px;
		scroll-padding-inline: 20px;
		gap: 16px;
	}
	.pb-domaines .e-loop-item {
		flex-basis: 84% !important;
	}
	.pb-domaine .pb-domaine-fleche-w {
		right: 24px;
		bottom: 24px;
	}
}

/* ==========================================================================
   Pastilles de catégorie (domaine d'une réalisation, catégorie d'une actualité)
   ========================================================================== */
.pb-badge {
	line-height: 0;
}

.pb-badge .elementor-heading-title {
	display: inline-block;
	padding: 4px 10px;
	border-radius: 999px;
	white-space: nowrap;
	text-box: none;
	line-height: 1.2;
}

.pb-badge--domaine .elementor-heading-title {
	background: var(--ri2e-bleu);
}

.domaine-enr .pb-badge--domaine .elementor-heading-title { background: var(--ri2e-vert); }
.domaine-tertiaire .pb-badge--domaine .elementor-heading-title { background: var(--ri2e-jaune); color: var(--ri2e-anthracite); }
.domaine-bureau-etudes .pb-badge--domaine .elementor-heading-title { background: var(--ri2e-turquoise); }

.pb-badge--categorie .elementor-heading-title {
	padding: 5px 12px;
	background: var(--ri2e-anthracite);
}

/* ==========================================================================
   Carte de réalisation : photo plein cadre, voile bleu et ombre noire en bas, pastille et titre blancs
   ========================================================================== */
.pb-realisation.e-con {
	position: relative;
	isolation: isolate;
	box-shadow: var(--ri2e-ombre);
	text-decoration: none;
}

.pb-realisation::before,
.pb-realisation::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: inherit;
	pointer-events: none;
}

.pb-realisation::before {
	background: linear-gradient(7deg, rgba(0, 125, 195, .35) 5%, rgba(0, 125, 195, 0) 59%);
}

.pb-realisation::after {
	background: linear-gradient(0deg, rgba(0, 0, 0, .67) 0%, rgba(0, 0, 0, 0) 55%);
}

.pb-realisation .pb-realisation-image {
	position: absolute !important;
	inset: 0;
	z-index: 0;
	width: 100% !important;
	height: 100%;
	margin: 0 !important;
}

.pb-realisation .pb-realisation-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pb-realisation > .elementor-widget:not(.pb-realisation-image) {
	position: relative;
	z-index: 2;
}

.pb-realisation .pb-realisation-titre .elementor-heading-title {
	text-transform: none;
}

/* ==========================================================================
   Bloc « Quelques projets » : texte + flèches à gauche, carrousel qui déborde à droite
   ========================================================================== */
.pb-projets .pb-carrousel-realisations {
	min-width: 0;
}

.pb-fleches .rca,
.pb-fleches .rca__wrap {
	display: flex;
	gap: 8px;
}

.pb-fleches :is(.rca__btn, button) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 1.5px solid var(--ri2e-bleu);
	border-radius: 50%;
	background: transparent;
	color: var(--ri2e-bleu);
	cursor: pointer;
	transition: background-color .25s ease, color .25s ease, opacity .25s ease;
}

.pb-fleches :is(.rca__btn, button) :is(svg, i) {
	width: 12px;
	height: 12px;
	font-size: 0.75rem;
	fill: currentColor;
}

.pb-fleches :is(.rca__btn, button):is(:hover, :focus-visible) {
	background: var(--ri2e-bleu);
	color: #fff;
}

.pb-fleches :is(.rca__btn, button):is(.is-disabled, :disabled) {
	opacity: .5;
	cursor: default;
}

.pb-fleches :is(.rca__btn, button):is(.is-disabled, :disabled):hover {
	background: transparent;
	color: var(--ri2e-bleu);
}

/* ==========================================================================
   Actualités (accueil) : carte blanche, deux articles séparés par un trait
   ========================================================================== */
.pb-actus-liste .e-loop-item + .e-loop-item {
	position: relative;
}

.pb-actus-liste .e-loop-item + .e-loop-item::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: -24px;
	height: 1px;
	background: var(--e-global-color-separa, rgba(0, 14, 41, .2));
}

.pb-actu .pb-badge--categorie {
	top: -12px;
}

.pb-actu .pb-actu-titre .elementor-heading-title a {
	color: inherit;
	transition: color .25s ease;
}

.pb-actu .pb-actu-titre .elementor-heading-title a:hover {
	color: var(--ri2e-bleu);
}

.pb-actu .pb-actu-image img {
	display: block;
}

.pb-actu .pb-actu-extrait p {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	text-box: normal;
}

.pb-actus-liste .e-loop-item:first-child .pb-badge--categorie {
	top: -30px;
}

/* ==========================================================================
   Bandeau de logos clients (défilement continu)
   ========================================================================== */
.pb-logos .swiper-slide {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 55px;
}

.pb-logos .swiper-slide-image {
	width: auto !important;
	max-width: 131px;
	max-height: 55px;
	object-fit: contain;
}

@media (max-width: 767px) {
	.pb-logos .swiper-slide-image {
		max-width: 104px;
		max-height: 44px;
	}
}

/* ==========================================================================
   Bloc « Contactez-nous » (pied de page) : carte anthracite à cheval sur le haut du footer bleu
   ========================================================================== */
.pb-cta-zone.e-con {
	position: relative;
	z-index: 2;
	margin-bottom: -196px;
}

.pb-cta-global.e-con {
	box-shadow: var(--ri2e-ombre);
}

.pb-cta-coordonnees .elementor-icon-list-icon svg {
	width: 16px;
	height: 16px;
}

.pb-cta-coordonnees .elementor-icon-list-item:first-child .elementor-icon-list-icon svg {
	transform: rotate(-32.4deg);
}

.pb-cta-coordonnees .elementor-icon-list-icon {
	color: var(--ri2e-jaune);
}

.pb-cta-bouton .elementor-button {
	min-width: 209px;
	justify-content: center;
}

body.pb-sans-cta .pb-cta-zone.e-con {
	margin-bottom: 0;
}

body.pb-sans-cta .pb-footer.e-con {
	--padding-top: 96px;
}

@media (max-width: 1024px) {
	.pb-cta-zone.e-con {
		margin-bottom: -168px;
	}
}

@media (max-width: 767px) {
	.pb-cta-zone.e-con {
		margin-bottom: -152px;
	}
}

/* ==========================================================================
   Footer
   ========================================================================== */
.pb-footer.e-con {
	position: relative;
	overflow: hidden;
	box-shadow: var(--ri2e-ombre);
	isolation: isolate;
}

.pb-footer.e-con::before {
	content: "";
	position: absolute;
	z-index: -1;
	left: calc(50% - 1088px);
	top: 126px;
	width: 1152px;
	height: 750px;
	background: url("assets/img/footer-filigrane-ri2e.webp") left bottom / contain no-repeat;
	pointer-events: none;
}

.pb-footer .elementor-icon-list-icon {
	color: var(--ri2e-vert);
}

.pb-footer .pb-footer-adresse .elementor-icon-list-icon svg {
	width: 12px;
	height: 15px;
	margin-top: 2px;
}

.pb-footer-menu .elementor-nav-menu--dropdown {
	background: transparent !important;
}

.pb-footer-menu .elementor-nav-menu--dropdown .elementor-item {
	padding: 0 !important;
	justify-content: flex-start;
}

.pb-footer-menu .elementor-nav-menu--dropdown li + li {
	margin-top: 10px;
}

.pb-footer-menu--puces .elementor-item::before {
	content: "";
	flex: 0 0 10px;
	width: 10px;
	height: 9px;
	margin-right: 6px;
	background-color: var(--ri2e-jaune);
	-webkit-mask: url("assets/img/chevron-footer.svg") center / contain no-repeat;
	mask: url("assets/img/chevron-footer.svg") center / contain no-repeat;
	position: static !important;
	opacity: 1 !important;
}

.pb-footer-menu--puces {
	padding-left: 0;
}

.pb-footer-tetiere .elementor-heading-title {
	padding-left: 2px;
}

.pb-footer-bas.e-con {
	box-shadow: var(--ri2e-ombre);
}

.pb-footer-bas .elementor-heading-title a {
	color: inherit;
}

.pb-footer-bas .pb-lien-footer .elementor-heading-title a:hover,
.pb-footer-bas .pb-signature a:hover {
	color: var(--ri2e-bleu);
}

.pb-footer .pb-icone-sociale .elementor-icon {
	transition: transform .25s ease;
}

.pb-footer .pb-icone-sociale .elementor-icon:hover {
	transform: scale(1.12);
}

@media (min-width: 1025px) {
	.pb-footer-bas .pb-icone-sociale {
		position: absolute !important;
		left: 50%;
		transform: translateX(-50%);
	}
}

@media (max-width: 1024px) {
	.pb-footer.e-con::before {
		left: -360px;
		top: auto;
		bottom: -80px;
	}
	.pb-footer-bas .elementor-heading-title {
		text-align: center;
	}
}

/* ==========================================================================
   Accessibilité : focus visible
   ========================================================================== */
a:focus-visible,
button:focus-visible,
.elementor-button:focus-visible {
	outline: 2px solid var(--ri2e-vert);
	outline-offset: 3px;
}

.pb-cta-textes.e-con {
	max-width: 620px;
}

@media (max-width: 1024px) {
	.pb-cta-textes.e-con {
		max-width: none;
	}
}

.pb-carrousel-realisations .swiper-slide {
	width: 342px !important;
}

@media (max-width: 1024px) {
	.pb-carrousel-realisations .swiper-slide {
		width: 320px !important;
	}
}

@media (max-width: 767px) {
	.pb-carrousel-realisations .swiper-slide {
		width: min(300px, 82vw) !important;
	}
}

@media (min-width: 768px) {
	.pb-actu .pb-actu-corps.e-con {
		max-width: 344px;
	}
}

@media (max-width: 767px) {
	.elementor-widget-button .elementor-button-text {
		white-space: normal;
		text-align: left;
	}
}

/* ==========================================================================
   Pages intérieures : hero court (titre centré, voile de la couleur d'accent, pastille de défilement)
   ========================================================================== */
.pb-hero--page.e-con::before {
	background:
		linear-gradient(180deg, rgba(0, 0, 0, .9) 0%, rgba(0, 0, 0, .23) 100%),
		linear-gradient(180deg, rgba(0, 125, 195, .14) 0%, rgba(0, 125, 195, .03) 100%);
}

.pb-hero--voile-accent.e-con::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background: color-mix(in srgb, var(--ri2e-accent) 50%, transparent);
	pointer-events: none;
}

.pb-hero--page .pb-hero-titre .elementor-heading-title {
	text-wrap: nowrap;
}

@media (max-width: 1024px) {
	.pb-hero--page .pb-hero-titre .elementor-heading-title {
		text-wrap: wrap;
	}
}

.pb-hero-defiler {
	position: relative;
	display: block;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--ri2e-accent);
	transition: transform .3s ease;
}

.pb-hero-defiler::after {
	content: "";
	position: absolute;
	inset: 5px;
	background: #fff;
	-webkit-mask: url("assets/img/pastille-fleche.svg") center / contain no-repeat;
	mask: url("assets/img/pastille-fleche.svg") center / contain no-repeat;
}

.pb-hero-defiler:is(:hover, :focus-visible) {
	transform: translateY(3px);
}

/* ==========================================================================
   Arcs décoratifs des photos et anneaux de fond, à la couleur d'accent (masques SVG)
   ========================================================================== */
.pb-arc--accent-haut::after,
.pb-arc--accent-bas::after {
	width: 373px;
	height: 498px;
	background-color: color-mix(in srgb, var(--ri2e-accent) 80%, transparent);
	-webkit-mask: url("assets/img/arc-photo.svg") center / contain no-repeat;
	mask: url("assets/img/arc-photo.svg") center / contain no-repeat;
}

.pb-arc--accent-haut::after {
	left: -179px;
	top: -271px;
}

.pb-arc--accent-bas::after {
	left: -169px;
	bottom: -281px;
}

body.pb-accent-turquoise .elementor > .e-con:is(.pb-section-intro, .pb-section-processus, .pb-section-zone)::before,
body[class*="pb-accent-"] .elementor > .e-con:is(.pb-section-intro, .pb-section-processus, .pb-section-zone)::before {
	content: "";
	position: absolute;
	z-index: 0;
	width: 787px;
	height: 1050px;
	background-color: var(--ri2e-accent);
	-webkit-mask: url("assets/img/anneau.svg") center / contain no-repeat;
	mask: url("assets/img/anneau.svg") center / contain no-repeat;
	pointer-events: none;
}

body[class*="pb-accent-"] .elementor > .pb-section-intro.e-con::before {
	left: calc(50% + 400px);
	top: -209px;
	transform: rotate(28.54deg);
}

body[class*="pb-accent-"] .elementor > .pb-section-processus.e-con::before {
	left: calc(50% - 1367px);
	top: -67px;
	transform: rotate(78.53deg);
}

body[class*="pb-accent-"] .elementor > .pb-section-zone.e-con::before {
	left: calc(50% + 489px);
	top: 12px;
	transform: rotate(-108.17deg);
}

body[class*="pb-accent-"] .elementor > .e-con:is(.pb-section-intro, .pb-section-processus, .pb-section-zone) > * {
	position: relative;
	z-index: 1;
}

@media (max-width: 767px) {
	body[class*="pb-accent-"] .elementor > .e-con:is(.pb-section-intro, .pb-section-processus, .pb-section-zone)::before {
		display: none;
	}
}

/* ==========================================================================
   Intro des prestations : pastille blanche des logos de logiciels, puces « + »
   ========================================================================== */
.pb-intro-image.e-con {
	position: relative;
}

.pb-pastille-logos.e-con {
	--width: auto;
	width: auto;
}

.pb-logo-logiciel img {
	display: block;
}

.pb-puces-plus .elementor-icon-list-icon {
	color: var(--ri2e-accent);
}

.pb-puces-plus .elementor-icon-list-icon svg {
	width: 22px;
	height: 22px;
	fill: currentColor;
}

/* Bande sombre « Détail de la prestation » */
.pb-bande-sombre.e-con {
	position: relative;
	overflow: hidden;
	box-shadow: var(--ri2e-ombre);
	isolation: isolate;
}

.pb-bande-sombre.e-con::before {
	content: "";
	position: absolute;
	z-index: -1;
	left: 416px;
	top: -74px;
	width: 1152px;
	height: 750px;
	background: url("assets/img/bande-sombre-filigrane.webp") left bottom / contain no-repeat;
	pointer-events: none;
}

.pb-coches-sombres .elementor-icon-list-text {
	white-space: nowrap;
}

/* Rangée d'atouts */
.pb-atouts > .e-con + .e-con {
	position: relative;
}

.pb-atouts > .e-con + .e-con::before {
	content: "";
	position: absolute;
	left: -23px;
	bottom: 0;
	width: 1px;
	height: 22px;
	background: var(--ri2e-anthracite);
}

.pb-atout-icone .elementor-icon {
	color: var(--ri2e-accent);
}

.pb-atout-icone svg {
	width: auto !important;
	height: 28px !important;
	fill: currentColor;
}

.pb-atout-libelle .elementor-heading-title {
	white-space: nowrap;
}

@media (max-width: 1024px) {
	.pb-atouts > .e-con + .e-con::before {
		display: none;
	}
	.pb-atouts > .e-con {
		flex: 0 0 calc(50% - 16px) !important;
	}
	.pb-atout-libelle .elementor-heading-title {
		white-space: normal;
	}
}

/* Parcours en 5 étapes */
.pb-etape.e-con {
	position: relative;
}

.pb-etape.e-con {
	isolation: isolate;
}

.pb-etape.e-con::before {
	content: "";
	position: absolute;
	inset: 0 0 0 22px;
	z-index: -1;
	border-radius: 25px;
	background: var(--e-global-color-gris, #F5F5F5);
}

.pb-etape .pb-etape-numero {
	flex: 0 0 44px;
	line-height: 0;
}

.pb-etape .pb-etape-numero .elementor-heading-title {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--ri2e-accent);
	color: var(--ri2e-accent-texte) !important;
	text-box: none;
	line-height: 1;
}

/* Carte « Zone d'intervention » : fondu blanc à droite de la carte */
.pb-zone-carte.e-con {
	position: relative;
	margin-left: -37px;
}

.pb-zone-carte.e-con::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	right: -37px;
	width: 207px;
	background: linear-gradient(to left, #fff 61.2%, rgba(255, 255, 255, 0) 100%);
	pointer-events: none;
}

.pb-carte-europe img {
	display: block;
	max-width: none;
}

@media (max-width: 1024px) {
	.pb-zone-carte.e-con {
		margin-left: 0;
	}
	.pb-zone-carte.e-con::after {
		right: 0;
		width: 120px;
	}
	.pb-carte-europe img {
		max-width: 100%;
		height: auto;
	}
}

/* Logos partenaires (bloc « Normes ») */
.pb-partenaires-logos {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 25px;
}

.pb-partenaires-logos img {
	display: block;
	width: auto;
	max-width: 150px;
	max-height: 73px;
	object-fit: contain;
}

.pb-intro-image .pb-pastille-logos.e-con {
	position: absolute;
	left: 168px;
	bottom: 11px;
	z-index: 3;
}

@media (max-width: 767px) {
	.pb-intro-image .pb-pastille-logos.e-con {
		left: 16px;
		right: 16px;
		bottom: 12px;
	}
}

.pb-domaine .pb-domaine-titre .elementor-heading-title {
	overflow-wrap: normal;
	word-break: normal;
	hyphens: none;
}

/* ==========================================================================
   À propos
   ========================================================================== */
.pb-arc--equipe::after {
	left: -172px;
	bottom: -257px;
	width: 490px;
	height: 361px;
	background-color: rgba(0, 125, 195, .8);
	-webkit-mask: url("assets/img/arc-equipe.svg") center / contain no-repeat;
	mask: url("assets/img/arc-equipe.svg") center / contain no-repeat;
}

.pb-arc--rugby::after {
	left: -152px;
	top: -185px;
	width: 396px;
	height: 323px;
	background-color: rgba(255, 226, 0, .8);
	-webkit-mask: url("assets/img/arc-rugby.svg") center / contain no-repeat;
	mask: url("assets/img/arc-rugby.svg") center / contain no-repeat;
	transform: rotate(-35.33deg);
}

.pb-valeur-coche svg {
	width: 20px;
	height: 20px;
}

@media (max-width: 1024px) {
	.pb-valeurs > .e-con {
		flex: 0 0 calc(50% - 20px) !important;
	}
	.pb-valeurs > .e-con > .e-con {
		--width: 100%;
	}
}

@media (max-width: 767px) {
	.pb-valeurs > .e-con {
		flex-basis: 100% !important;
	}
}

/* Accordéon des pôles (Logia Accordion) : pôle bureau d'études en bleu, pôle techniciens en turquoise */
.pb-poles .logia-accordion {
	gap: 11px;
}

.pb-poles .logia-accordion__item,
.pb-poles .logia-accordion__item.is-open {
	border-radius: 30px !important;
	background: var(--ri2e-bleu) !important;
	color: #fff;
	border: 0 !important;
	box-shadow: none !important;
}

.pb-poles .logia-accordion__item:nth-child(2),
.pb-poles .logia-accordion__item.is-open:nth-child(2) {
	background: var(--ri2e-turquoise) !important;
}

.pb-poles .logia-accordion__trigger,
.pb-poles .logia-accordion__item.is-open .logia-accordion__trigger {
	background: transparent !important;
	color: #fff !important;
}

.pb-poles .logia-accordion__trigger,
.pb-poles .logia-accordion__trigger:is(:hover, :focus, :focus-visible) {
	padding: 28px 44px 28px 45px;
	color: #fff;
	font-family: var(--e-global-typography-a7c0016-font-family), sans-serif;
	font-size: var(--e-global-typography-a7c0016-font-size);
	font-weight: 400;
	line-height: 1.2;
}

.pb-poles .logia-accordion__item.is-open .logia-accordion__trigger {
	padding-bottom: 16px;
	padding-top: 42px;
}

.pb-poles .logia-accordion__toggle-icon svg {
	width: 18px;
	height: 18px;
	fill: #fff;
}

.pb-poles .logia-accordion__content {
	padding: 0 50px 42px 45px;
	max-width: 627px;
	color: #fff;
	font-family: var(--e-global-typography-text-font-family), sans-serif;
	font-size: 1rem;
	font-weight: 300;
	line-height: 1.3;
}

.pb-poles .logia-accordion__content p {
	margin: 0 0 1.2em;
}

.pb-poles .logia-accordion__content p:last-child {
	margin-bottom: 0;
}

.pb-poles .logia-accordion__content strong {
	font-weight: 700;
}

@media (max-width: 767px) {
	.pb-poles .logia-accordion__trigger,
	.pb-poles .logia-accordion__trigger:is(:hover, :focus, :focus-visible) {
		padding: 22px 24px;
	}
	.pb-poles .logia-accordion__item.is-open .logia-accordion__trigger {
		padding-top: 28px;
	}
	.pb-poles .logia-accordion__content {
		padding: 0 24px 28px;
	}
}

/* Normes sur carte sombre : logos des partenaires en blanc */
.pb-normes-sombre.e-con {
	box-shadow: var(--ri2e-ombre);
}

.pb-partenaires--blanc .pb-partenaires-logos {
	justify-content: center;
	gap: 90px;
}

.pb-partenaires--blanc .pb-partenaire {
	filter: brightness(0) invert(1);
}

@media (max-width: 767px) {
	.pb-partenaires--blanc .pb-partenaires-logos {
		gap: 32px;
	}
}

/* Zone d'intervention de la page À propos : la carte déborde jusqu'au bord droit de l'écran */
.pb-zone--droite .pb-zone-carte.e-con {
	margin-left: 0;
}

.pb-zone--droite .pb-zone-carte.e-con::after {
	display: none;
}

.pb-zone--droite .pb-carte-europe img {
	width: 821px;
	max-width: none;
}

@media (max-width: 1024px) {
	.pb-zone--droite .pb-carte-europe img {
		width: 100%;
		max-width: 100%;
	}
}

.pb-logo-csa img {
	display: block;
}

.pb-poles .logia-accordion__content,
.pb-poles .logia-accordion__content :is(p, strong, a) {
	color: #fff !important;
}

/* Pages légales */
.pb-legal h2 {
	margin: 48px 0 16px;
	font-family: var(--e-global-typography-accent-font-family), sans-serif;
	font-size: var(--e-global-typography-accent-font-size);
	font-weight: 400;
	line-height: 1.2;
	color: var(--ri2e-anthracite);
}

.pb-legal h2:first-child {
	margin-top: 0;
}

.pb-legal p {
	margin: 0 0 16px;
}

/* Page 404 : sous les coins arrondis du hero, la couleur du pied de page */
body.error404 {
	background: var(--ri2e-bleu);
}

body.error404 .pb-hero--404 {
	background-color: #fff;
}

/* « Solutions proposées » : grille de 6 cartes (couleur d'accent ou gris clair) */
.pb-solution--accent.e-con {
	background-color: var(--ri2e-accent);
}

body.pb-accent-jaune .pb-solution--accent.e-con :is(.elementor-heading-title, p) {
	color: var(--ri2e-anthracite);
}

.pb-solution--gris.e-con {
	background-color: var(--e-global-color-gris, #F5F5F5);
}

@media (max-width: 1024px) {
	.pb-solutions > .e-con {
		flex: 0 0 calc(50% - 10px) !important;
	}
}

@media (max-width: 767px) {
	.pb-solutions > .e-con {
		flex-basis: 100% !important;
	}
}

/* Photovoltaïque : arc en bas à droite, pastille « Fabriqué en France », cartes grises à titre d'accent, atouts à coches */
.pb-arc--accent-basdroite::after {
	width: 458px;
	height: 343px;
	right: -126px;
	bottom: -150px;
	background-color: color-mix(in srgb, var(--ri2e-accent) 80%, transparent);
	-webkit-mask: url("assets/img/arc-photo.svg") center / contain no-repeat;
	mask: url("assets/img/arc-photo.svg") center / contain no-repeat;
	transform: rotate(-60deg);
}

.pb-intro-image .pb-pastille-fabrique.e-con {
	left: 15px;
	bottom: 14px;
}

.pb-solution--gris .pb-solution-titre .elementor-heading-title {
	color: var(--ri2e-accent);
}

body.pb-accent-jaune .pb-solution--gris .pb-solution-titre .elementor-heading-title {
	color: var(--ri2e-anthracite);
}

.pb-atouts--coches .elementor-heading-title {
	white-space: nowrap;
}

@media (max-width: 1024px) {
	.pb-atouts--coches .elementor-heading-title br {
		display: inline;
	}
}

.pb-etape-mention {
	font-size: 0.875rem;
	color: #848484;
}

.pb-atouts--coches > .e-con + .e-con::before {
	display: none;
}

/* ==========================================================================
   Réalisations : filtres par domaine, grille de 4 colonnes, « Voir plus »
   ========================================================================== */
.pb-hero--voile-sombre .pb-hero-defiler {
	background: var(--ri2e-anthracite);
}

.pb-filtres .e-filter {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.pb-filtres .e-filter-item {
	min-height: 30px;
	padding: 6px 15px;
	border: 1.5px solid var(--ri2e-anthracite) !important;
	border-radius: 62px !important;
	background: transparent !important;
	color: var(--ri2e-anthracite) !important;
	font-family: var(--e-global-typography-0a23ec1-font-family), sans-serif;
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.2;
	white-space: nowrap;
	transition: background-color .25s ease, color .25s ease;
}

.pb-filtres .e-filter-item:is(:hover, :focus-visible, [aria-pressed="true"]) {
	background: var(--ri2e-anthracite) !important;
	color: #fff !important;
}

@media (max-width: 767px) {
	.pb-filtres .e-filter {
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		margin-right: -20px;
		padding-right: 40px;
		-webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 48px), transparent);
		mask-image: linear-gradient(90deg, #000 calc(100% - 48px), transparent);
	}
}

.pb-grille-realisations .pb-realisation.e-con {
	min-height: 375px;
}

.pb-grille-realisations .e-load-more-anchor + .e-loop__load-more,
.pb-grille-realisations .e-loop__load-more {
	margin-top: 38px;
}

.pb-grille-realisations .elementor-button[role="button"] .elementor-button-content-wrapper::after,
.pb-grille-actus .elementor-button[role="button"] .elementor-button-content-wrapper::after {
	transform: none;
}

.pb-arc--equipe-jaune::after {
	left: -77px;
	bottom: -295px;
	width: 429px;
	height: 398px;
	background-color: rgba(255, 226, 0, .8);
	-webkit-mask: url("assets/img/arc-jaune-equipe.svg") center / contain no-repeat;
	mask: url("assets/img/arc-jaune-equipe.svg") center / contain no-repeat;
}

/* ==========================================================================
   Pages sans hero (fiches, contact) : bande anthracite de 93 px, header plus compact (logo 68 × 58)
   ========================================================================== */
body.pb-sans-hero .pb-header--capsule:not(.scrollHeader) > .e-con-inner {
	padding-top: 18px;
}

body.pb-sans-hero .pb-header--capsule:not(.scrollHeader) .pb-logo img {
	width: 68px;
}

@media (max-width: 767px) {
	body.pb-sans-hero .pb-header--capsule:not(.scrollHeader) > .e-con-inner {
		padding-top: 10px;
	}
	body.pb-sans-hero .pb-header--capsule:not(.scrollHeader) .pb-logo img {
		width: 56px;
	}
}

/* Fil d'Ariane */
.pb-ariane ol {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.875rem;
	font-weight: 300;
	line-height: 1.2;
	color: var(--ri2e-anthracite);
}

.pb-ariane li {
	display: flex;
	align-items: center;
	gap: 10px;
}

.pb-ariane li + li::before {
	content: "";
	width: 6px;
	height: 7px;
	background-color: var(--ri2e-bleu);
	-webkit-mask: url("assets/img/chevron-menu.svg") center / contain no-repeat;
	mask: url("assets/img/chevron-menu.svg") center / contain no-repeat;
}

.pb-ariane a {
	color: inherit;
}

.pb-ariane a:hover {
	color: var(--ri2e-bleu);
}

.pb-ariane [aria-current] {
	font-weight: 500;
	color: var(--ri2e-bleu);
}

/* Fiche : grande pastille de domaine, photo voilée, contenu */
.pb-badge--grand .elementor-heading-title {
	min-height: 30px;
	padding: 6px 15px;
	font-size: 1rem;
}

body.domaine-enr .pb-badge--grand .elementor-heading-title,
.realisation.domaine-enr .pb-badge--grand .elementor-heading-title { background: var(--ri2e-vert); }

.pb-photo--voile {
	position: relative;
}

.pb-photo--voile::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 30px;
	pointer-events: none;
	background:
		linear-gradient(6deg, rgba(0, 125, 195, .35) 5%, rgba(0, 125, 195, 0) 59%),
		linear-gradient(180deg, rgba(0, 0, 0, 0) 39%, rgba(0, 0, 0, .55) 100%);
}

.pb-fiche-contenu p {
	margin: 0 0 1.2em;
}

.pb-fiche-contenu p:last-child {
	margin-bottom: 0;
}

/* Bloc galerie « Le projet en images » */
.pb-galerie .gallery {
	display: grid !important;
	grid-template-columns: repeat(3, 1fr);
	gap: 38px;
	margin: 0 !important;
}

.pb-galerie .gallery-item {
	margin: 0 !important;
	padding: 0 !important;
	max-width: none !important;
	width: auto !important;
}

.pb-galerie .gallery-icon {
	overflow: hidden;
	border-radius: 30px;
	isolation: isolate;
}

.pb-galerie .gallery-icon img {
	display: block;
	width: 100%;
	height: 370px;
	object-fit: cover;
	border: 0 !important;
	border-radius: 30px;
	transition: transform .5s ease;
}

.pb-galerie .gallery-icon a:is(:hover, :focus-visible) img {
	transform: scale(1.04);
}

@media (max-width: 1024px) {
	.pb-galerie .gallery {
		grid-template-columns: repeat(2, 1fr);
		gap: 24px;
	}
	.pb-galerie .gallery-icon img {
		height: 300px;
	}
}

@media (max-width: 767px) {
	.pb-galerie .gallery {
		grid-template-columns: 1fr;
		gap: 16px;
	}
	.pb-galerie .gallery-icon img {
		height: 260px;
	}
}

/* Boutons de partage */
.pb-partage {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 10px;
}

.pb-partage-texte {
	font-weight: 300;
	color: var(--ri2e-anthracite);
}

.pb-partage-liens {
	display: flex;
	gap: 16px;
}

.pb-partage-lien {
	display: block;
	width: 27px;
	height: 27px;
	background: var(--pb-picto) center / contain no-repeat;
	transition: opacity .25s ease, transform .25s ease;
}

.pb-partage-lien:is(:hover, :focus-visible) {
	opacity: .8;
	transform: translateY(-2px);
}

.pb-partage-lien--linkedin { --pb-picto: url("assets/img/partage-linkedin.svg"); }
.pb-partage-lien--facebook { --pb-picto: url("assets/img/partage-facebook.svg"); }
.pb-partage-lien--x { --pb-picto: url("assets/img/partage-x.svg"); }
.pb-partage-lien--whatsapp { --pb-picto: url("assets/img/partage-whatsapp.svg"); }
.pb-partage-lien--email { --pb-picto: url("assets/img/partage-email.svg"); }

/* ==========================================================================
   Actualités : carte à la une, grille de cartes encadrées, salons, LinkedIn
   ========================================================================== */
.pb-actu-une.e-con {
	position: relative;
	min-height: 511px;
}

.pb-actu-une .pb-actu-une-image img {
	display: block;
}

.pb-actu-une .pb-actu-titre .elementor-heading-title a {
	color: inherit;
}

.pb-actu-une .pb-actu-titre .elementor-heading-title a:hover {
	color: var(--ri2e-bleu);
}

@media (max-width: 1024px) {
	.pb-actu-une .pb-badge--categorie {
		top: 16px !important;
		right: 16px !important;
	}
}

.pb-grille-actus .pb-actu.e-con {
	min-height: 257px;
	padding: 30px 30px 30px 29px;
	border-radius: 30px;
	background: #fff;
	box-shadow: 0 0 4px rgba(0, 0, 0, .25);
}

.pb-grille-actus .pb-actu .pb-actu-image img {
	width: 196px;
	height: 196px;
}

.pb-grille-actus .pb-actu .pb-badge--categorie {
	top: 21px !important;
	right: 20px !important;
}

@media (max-width: 767px) {
	.pb-grille-actus .pb-actu.e-con {
		padding: 56px 20px 24px;
	}
	.pb-grille-actus .pb-actu .pb-actu-image img {
		width: 100%;
		height: 200px;
	}
}

.pb-arc--salons::after {
	left: -120px;
	bottom: -333px;
	width: 328px;
	height: 438px;
	background-color: rgba(125, 198, 176, .8);
	-webkit-mask: url("assets/img/arc-salons.svg") center / contain no-repeat;
	mask: url("assets/img/arc-salons.svg") center / contain no-repeat;
	transform: rotate(-36.11deg);
}

.pb-linkedin-bleu .elementor-icon svg {
	width: 29px;
	height: 29px;
}

/* ==========================================================================
   Article : diaporama (points sous l'image), catégorie à droite, partage aligné à droite
   ========================================================================== */
.pb-article .pb-article-ariane {
	margin-bottom: 42px;
	padding-left: 4px;
}

.pb-diaporama .swiper {
	border-radius: 30px;
	overflow: hidden;
}

.pb-diaporama .swiper-slide-image {
	display: block;
	width: 100%;
	height: 562px;
	object-fit: cover;
}

.pb-diaporama .swiper-pagination {
	position: static !important;
	margin-top: 9px;
	line-height: 0;
}

.pb-diaporama .swiper-pagination-bullet {
	width: 7px;
	height: 7px;
	margin: 0 3px !important;
	background: #E9E9E9;
	opacity: 1;
}

.pb-diaporama .swiper-pagination-bullet-active {
	width: 9px;
	height: 9px;
	background: var(--ri2e-anthracite);
	vertical-align: -1px;
}

.pb-diaporama .swiper-pagination-lock {
	display: none !important;
}

@media (max-width: 1024px) {
	.pb-diaporama .swiper-slide-image {
		height: 440px;
	}
}

@media (max-width: 767px) {
	.pb-diaporama .swiper-slide-image {
		height: 260px;
	}
	.pb-diaporama .swiper {
		border-radius: 20px;
	}
}

.pb-article .pb-article-categorie {
	margin-top: -1px;
}

.pb-article .pb-article-entete {
	margin-top: 12px;
	margin-bottom: 40px;
}

.pb-article .pb-partage-w {
	margin-top: 53px;
}

.pb-partage-w--droite .pb-partage {
	justify-content: flex-end;
}

@media (max-width: 767px) {
	.pb-partage-w--droite .pb-partage {
		justify-content: flex-start;
	}
}

/* ==========================================================================
   Contact : formulaire sur carte anthracite, carte Google Maps à cheval sur le pied de page
   ========================================================================== */
.pb-form-contact {
	--pb-form-etiquette-fond: #FAFAFB;
	--pb-form-etiquette-gauche: 16px;
	--pb-form-demi-gouttiere: 12px;
	--pb-form-accent: var(--ri2e-vert);
	--pb-form-focus: var(--ri2e-vert);
}

.pb-form-contact .elementor-field-textual,
.pb-form-contact .elementor-field-group .elementor-select-wrapper select {
	min-height: 54px;
	padding: 14px 24px !important;
	border: 1px solid rgba(5, 24, 50, .12) !important;
	border-radius: 12px !important;
	background-color: #FAFAFB !important;
	font-weight: 300;
	color: var(--ri2e-anthracite);
}

.pb-form-contact textarea.elementor-field-textual {
	min-height: 161px;
	padding-top: 20px !important;
}

.pb-form-contact .elementor-field-textual::placeholder {
	color: rgba(0, 0, 0, .5);
	opacity: 1;
}

.pb-form-contact .elementor-select-wrapper::before {
	color: var(--ri2e-vert) !important;
	right: 24px !important;
}

.pb-form-contact .e-form__buttons {
	justify-content: flex-end;
}

.pb-form-contact .elementor-field-type-submit {
	margin-top: 8px;
}

.pb-form-contact .elementor-message {
	color: #fff;
}

.pb-contact-coordonnees .elementor-icon-list-icon {
	color: var(--ri2e-vert);
}

.pb-contact-coordonnees .elementor-icon-list-icon svg {
	width: 18px;
	height: 18px;
	fill: currentColor;
}

.pb-section-carte.e-con {
	position: relative;
	z-index: 2;
}

body.pb-carte-chevauche .pb-section-carte.e-con {
	margin-bottom: -202px;
}

body.pb-carte-chevauche .pb-footer.e-con {
	--padding-top: 287px;
}

.pb-carte-google iframe {
	display: block;
	border-radius: 30px;
}

.pb-carte-google {
	border-radius: 30px;
	overflow: hidden;
}

@media (max-width: 1024px) {
	body.pb-carte-chevauche .pb-section-carte.e-con {
		margin-bottom: -160px;
	}
	body.pb-carte-chevauche .pb-footer.e-con {
		--padding-top: 232px;
	}
}

@media (max-width: 767px) {
	body.pb-carte-chevauche .pb-section-carte.e-con {
		margin-bottom: -140px;
	}
	body.pb-carte-chevauche .pb-footer.e-con {
		--padding-top: 200px;
	}
	.pb-carte-google iframe,
	.pb-carte-google {
		border-radius: 24px;
	}
}

.pb-form-contact .select-caret-down-wrapper {
	display: none !important;
}

.pb-form-contact .elementor-select-wrapper::after {
	content: "";
	position: absolute;
	top: 50%;
	right: 24px;
	width: 11px;
	height: 7px;
	margin-top: -3px;
	background-color: var(--ri2e-vert);
	-webkit-mask: url("assets/img/chevron-menu.svg") center / contain no-repeat;
	mask: url("assets/img/chevron-menu.svg") center / contain no-repeat;
	transform: rotate(90deg);
	pointer-events: none;
}

/* Étapes du processus, valeurs, atouts à coches : le texte reste à côté de sa pastille ou de sa coche à tous les paliers */
.pb-etape.e-con > .e-con,
.pb-valeur.e-con > .e-con {
	--width: auto;
	flex: 1 1 0%;
	min-width: 0;
}

.pb-etape.e-con,
.pb-valeur.e-con,
.pb-atout-coche.e-con {
	flex-wrap: nowrap;
}

/* Deux cartes de domaine (pages de domaine) : côte à côte en tablette, sans carrousel */
@media (max-width: 1024px) and (min-width: 768px) {
	.pb-domaines .elementor-loop-container:not(:has(> .e-loop-item:nth-of-type(3))) {
		overflow: visible;
		margin: 0;
		padding: 0;
	}
	.pb-domaines .elementor-loop-container:not(:has(> .e-loop-item:nth-of-type(3))) > .e-loop-item {
		flex: 1 1 0% !important;
	}
}

/* Cartes d'actualité : la colonne de texte prend la place restante (desktop étroit compris) */
.pb-actu .pb-actu-corps.e-con {
	flex: 1 1 0%;
	min-width: 0;
}

@media (min-width: 1025px) and (max-width: 1320px) {
	.pb-grille-actus .pb-actu .pb-actu-image img {
		width: 150px;
		height: 150px;
	}
}

/* ==========================================================================
   Retours d'inspection, 1re passe
   ========================================================================== */
/* Page courante et son chemin dans la barre : jaune, lisible sur tous les voiles de hero et sur la capsule */
.pb-header .pb-nav .elementor-nav-menu--main > .elementor-nav-menu > li:is(.current-menu-item, .current-menu-ancestor, .current-menu-parent) > a.elementor-item,
.pb-header .pb-nav .elementor-nav-menu--main > .elementor-nav-menu > li:has(.current-menu-item > a:not(.elementor-item-anchor)) > a.elementor-item {
	color: var(--ri2e-jaune) !important;
}

/* Cartes de domaine repliées : le texte est réellement replié (titre posé en bas de la carte) */
.pb-domaine .pb-domaine-texte {
	display: block;
	max-height: 0;
	overflow: hidden;
	transition: max-height .45s ease, opacity .3s ease, margin-top .45s ease;
}

:is(
	.pb-domaines--ouverte-1 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(1),
	.pb-domaines--ouverte-2 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(2),
	.pb-domaines--ouverte-3 .elementor-loop-container:not(:has(> .e-loop-item:is(:hover, :focus-within))) > .e-loop-item:nth-of-type(3),
	.pb-domaines .elementor-loop-container > .e-loop-item:is(:hover, :focus-within),
	.pb-domaines .elementor-loop-container:not(:has(> .e-loop-item:nth-of-type(3))) > .e-loop-item
) .pb-domaine .pb-domaine-texte {
	max-height: 220px;
}

@media (max-width: 1024px) {
	.pb-domaines .pb-domaine .pb-domaine-texte {
		max-height: 260px;
	}
}

/* Numéros des étapes : texte foncé sur les accents clairs (turquoise, vert, jaune), blanc sur le bleu */
body.pb-accent-turquoise,
body.pb-accent-vert {
	--ri2e-accent-texte: var(--ri2e-anthracite);
}

body.pb-accent-turquoise .pb-btn--accent .elementor-button,
body.pb-accent-vert .pb-btn--accent .elementor-button {
	color: #fff;
}

/* Titres des cartes de solutions grises : couleur de la page (sauf jaune, illisible sur gris) */
.pb-solution--gris .pb-solution-titre .elementor-heading-title {
	color: var(--ri2e-accent) !important;
}

body.pb-accent-jaune .pb-solution--gris .pb-solution-titre .elementor-heading-title {
	color: var(--ri2e-anthracite) !important;
}

/* Logos partenaires : poids visuels homogènes (Schneider recadré comme la maquette) */
.pb-partenaires-logos .pb-partenaire:nth-child(1) { width: 150px; height: 73px; object-fit: contain; max-width: none; }
.pb-partenaires-logos .pb-partenaire:nth-child(2) { width: 150px; height: 73px; object-fit: cover; max-width: none; max-height: none; }
.pb-partenaires-logos .pb-partenaire:nth-child(3) { width: 114px; height: 68px; object-fit: contain; max-width: none; }

@media (max-width: 767px) {
	.pb-partenaires-logos {
		flex-wrap: nowrap;
		gap: 16px;
	}
	.pb-partenaires--blanc .pb-partenaires-logos {
		gap: 16px;
	}
	.pb-partenaires-logos .pb-partenaire:nth-child(1),
	.pb-partenaires-logos .pb-partenaire:nth-child(2) { width: 30%; height: 52px; }
	.pb-partenaires-logos .pb-partenaire:nth-child(3) { width: 24%; height: 48px; }
}

/* Atouts : filets centrés sur les libellés */
.pb-atouts:not(.pb-atouts--coches) > .e-con + .e-con::before {
	top: auto;
	bottom: 0;
}

.pb-atout-icone svg {
	width: auto !important;
	height: auto !important;
	max-height: 28px;
	max-width: 30px;
}

/* Atouts à coches : en tablette et en mobile, ils passent à la ligne (2 colonnes puis 1) */
@media (max-width: 1024px) {
	.pb-atouts--coches.e-con {
		display: grid !important;
		grid-template-columns: repeat(2, max-content);
		justify-content: start;
		gap: 24px 48px !important;
	}
	.pb-atouts--coches > .e-con {
		flex: none !important;
	}
}

@media (max-width: 767px) {
	.pb-atouts--coches.e-con {
		grid-template-columns: 1fr;
	}
	.pb-atouts--coches .elementor-heading-title {
		white-space: normal;
	}
}

/* Valeurs d'À propos sur une ligne en desktop */
@media (min-width: 1025px) {
	.pb-valeurs > .pb-valeur.e-con {
		flex: 1 1 0% !important;
		min-width: 0;
	}
}

/* Accordéon des pôles : padding de la maquette (45 px) */
.pb-poles .logia-accordion__trigger,
.pb-poles .logia-accordion__trigger:is(:hover, :focus, :focus-visible) {
	padding: 28px 44px 28px 45px !important;
}

.pb-poles .logia-accordion__item.is-open .logia-accordion__trigger {
	padding: 42px 44px 16px 45px !important;
}

.pb-poles .logia-accordion__content {
	padding: 0 50px 42px 45px !important;
}

@media (max-width: 767px) {
	.pb-poles .logia-accordion__trigger,
	.pb-poles .logia-accordion__trigger:is(:hover, :focus, :focus-visible),
	.pb-poles .logia-accordion__item.is-open .logia-accordion__trigger {
		padding: 22px 24px !important;
	}
	.pb-poles .logia-accordion__content {
		padding: 0 24px 28px !important;
	}
}

/* Titres de hero sur deux lignes : retour de la maquette gardé dès 768 px */
@media (min-width: 768px) {
	.pb-hero .pb-hero-titre .elementor-heading-title br {
		display: inline;
	}
}

/* Tablette : textes empilés en pleine largeur limités à une longueur de ligne lisible */
@media (max-width: 1024px) and (min-width: 768px) {
	.pb-col-texte.e-con,
	.pb-zone-texte.e-con,
	.pb-bande-textes.e-con {
		max-width: 760px;
	}
	.pb-zone-carte .pb-carte-europe img {
		max-width: 640px;
	}
}

/* Footer : tête « Prestations » alignée sur « Accueil » */
.pb-footer-tetiere .elementor-heading-title {
	padding-top: 3px;
}

@media (max-width: 767px) {
	.pb-hero--accueil.e-con::before {
		background:
			linear-gradient(180deg, rgba(0, 0, 0, .75) 0%, rgba(0, 0, 0, 0) 16%),
			linear-gradient(0deg, rgba(0, 0, 0, .55) 0%, rgba(0, 0, 0, 0) 60%),
			linear-gradient(15.5deg, rgba(0, 125, 195, .2) 7.5%, rgba(0, 125, 195, 0) 53.3%);
	}
}

.pb-bande-textes.e-con {
	max-width: 620px;
}

@media (min-width: 1025px) and (max-width: 1300px) {
	.pb-bande-sombre.e-con {
		--gap: 48px 48px;
		gap: 48px;
	}
}

/* ==========================================================================
   Retours d'inspection, 1re passe (suite)
   ========================================================================== */
/* Tablette large (900-1024 px) : les 3 cartes de domaine côte à côte ; dessous, carrousel tactile avec amorce */
@media (min-width: 900px) and (max-width: 1024px) {
	.pb-domaines .elementor-loop-container {
		overflow: visible;
		margin: 0;
		padding: 0;
	}
	.pb-domaines .e-loop-item {
		flex: 1 1 0% !important;
	}
}

/* Atouts : filets centrés verticalement sur l'atout */
.pb-atouts:not(.pb-atouts--coches) > .e-con + .e-con::before {
	top: 50%;
	bottom: auto;
	transform: translateY(-50%);
}

/* Carte Tertiaire : cadrage de la maquette (casque visible) */
.pb-domaine--jaune .pb-domaine-image img {
	object-position: 50% 17%;
}

/* Titres des cartes de domaine lisibles sur la photo (Industriel bleu sur photo bleue) */
.pb-domaine .pb-domaine-titre .elementor-heading-title {
	text-shadow: 0 1px 10px rgba(0, 0, 0, .5);
}

/* Tablette : photo d'intro des prestations en 4:3 (pas de bandeau qui coupe le sujet) */
@media (max-width: 1024px) and (min-width: 768px) {
	.pb-section-intro .pb-photo img {
		height: auto !important;
		aspect-ratio: 4 / 3;
	}
}

/* Extraits des cartes d'actualité : 2 lignes et points de suspension (l'extrait n'est pas toujours dans un <p>) */
.pb-actu .pb-actu-extrait.elementor-widget-text-editor {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.pb-actu .pb-actu-extrait.elementor-widget-text-editor > * {
	display: inline;
	text-box: normal;
}

.pb-actu-une .pb-actu-une-extrait.elementor-widget-text-editor {
	display: -webkit-box;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

@media (max-width: 1024px) and (min-width: 768px) {
	.pb-partenaires-logos,
	.pb-partenaires--blanc .pb-partenaires-logos {
		flex-wrap: nowrap;
		gap: 40px;
	}
}

.pb-copyright-texte .elementor-heading-title::before {
	content: "- ";
}

@media (max-width: 767px) {
	.pb-copyright.e-con {
		flex-direction: column;
		align-items: center;
		gap: 2px;
	}

	.pb-copyright-texte .elementor-heading-title::before {
		content: none;
	}
}
