:root {
	--first-color: #000;
	--second-color: #1b263b;
	--third-color: #152a38;
	--fourth-color: #ffc900;
	/* Ambre : second stop de l'accent (hover CTA / bouton retour-haut) */
	--accent-warm: #ee9b00;

	--whitesmoke-color: #f9f9f9;
	--white-color: #FFF;
	--black-color: #000;
	--grey-color: #6b6b6b;
	--red-color: #c00000;
	--green-color: #008000;

	--bs-body-font-family: "Roboto Mono", monospace;
	/* Alias conservé pour quelques accents (badge "populaire", etc.) */
	--font-accent: "Roboto Mono", monospace;

	/* Rayons sémantiques (boutons/inputs vs cartes/images) */
	--radius-sm: 10px;
	--radius-md: 16px;
	/* Ombre directionnelle douce (remplace les halos 0 0 8px) */
	--shadow-soft: 0 4px 16px rgba(0, 0, 0, 0.12);
	--shadow-strong: 0 8px 28px rgba(0, 0, 0, 0.18);

	/* Échelle typographique — tailles FLUIDES (clamp), base 16px.
	   Les titres grandissent en continu de mobile à desktop (plus de paliers brusques). */
	--fs-h1:       clamp(1.9rem, 1.45rem + 2vw, 2.8rem);    /* titres de section : ~30 → 45px */
	--fs-h3:       clamp(1.25rem, 1.05rem + 0.9vw, 1.7rem); /* ~20 → 27px */
	--fs-h4:       clamp(1.05rem, 0.95rem + 0.5vw, 1.25rem);/* ~17 → 20px (>= corps de texte) */
	--fs-subtitle: clamp(1.125rem, 1rem + 0.6vw, 1.5rem);  /* ~18 → 24px */

	--navbar-height: 80px;
	--navbar-height-sm: 70px;

	/* Preloader (logo animé) — fusionné depuis le second :root */
	--loader-logo-initial-width: 40px;
	--loader-logo-initial-margin: -20px 0 0 -20px;
	--loader-logo-initial-opacity: 0;
	--loader-logo-final-width: 80px;
	--loader-logo-final-margin: -40px 0 0 -40px;
	--loader-logo-final-opacity: 1;
}


@font-face {
    font-family: 'Roboto Mono';
    src: url("../../fonts/Roboto_Mono/RobotoMono-VariableFont_wght-f01b1a76d9917ff866c90dafca0feb5e.ttf") format('truetype');
    font-weight: 100 900;
    font-style: normal;
	font-display: swap;
}

@font-face {
    font-family: 'Roboto Mono';
    src: url("../../fonts/Roboto_Mono/RobotoMono-Italic-VariableFont_wght-44594d8f04eb959e27c8afd10a502a63.ttf") format('truetype');
    font-weight: 100 900;
    font-style: italic;
	font-display: swap;
}


.main-container {
	flex: 1;
}

/*--------------------------------------------------------------
	MESURE DE LIGNE — confort de lecture en texte long (~70 caractères)
--------------------------------------------------------------*/
.measure {
	max-width: 70ch;
	margin-inline: auto;
}

/* Variante alignée à gauche (colonnes de texte) */
.measure-left {
	max-width: 58ch;
}

/*--------------------------------------------------------------
	A PROPOS — bandeau de chiffres-clés
--------------------------------------------------------------*/
.about-stat {
	height: 100%;
	text-align: center;
	padding: 1.5rem 1rem;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: var(--radius-md);
	background: rgba(255, 255, 255, 0.02);
	transition: border-color .25s ease, transform .25s ease, background-color .25s ease;
}

.about-stat:hover {
	border-color: var(--fourth-color);
	background: rgba(255, 255, 255, 0.04);
	transform: translateY(-4px);
}

.about-stat-num {
	font-weight: 700;
	line-height: 1;
	letter-spacing: -1px;
	font-size: clamp(2rem, 1.4rem + 2.6vw, 3rem); /* ~32 → 48px */
}

.about-stat-label {
	margin-top: 0.6rem;
	color: rgba(255, 255, 255, 0.7);
}

/*--------------------------------------------------------------
	RYTHME VERTICAL — espacement homogène entre sections
--------------------------------------------------------------*/
.section {
	padding-block: 3.5rem;
}

@media (min-width: 768px) {
	.section { padding-block: 5rem; }
}

/* Carte Google Maps de la home : hauteur fluide (évite le 550px fixe) */
.home-map {
	height: clamp(320px, 50vh, 550px);
}

.home-map > div,
.home-map iframe {
	height: 100%;
}

/* Charte mono : carte en niveaux de gris, couleur révélée au survol */
.home-map iframe {
	filter: grayscale(1) contrast(1.05);
	transition: filter .4s ease;
}

.home-map:hover iframe {
	filter: none;
}

@media (prefers-reduced-motion: reduce) {
	.home-map iframe { transition: none; }
}

/*--------------------------------------------------------------
	FONT-SIZE — échelle typographique FLUIDE (clamp). Une classe = une taille,
	qui grandit en continu de mobile à desktop. Remplace l'ancien systeme
	de classes responsives empilees par breakpoint.
--------------------------------------------------------------*/
.fs-caption { font-size: clamp(0.8rem, 0.77rem + 0.13vw, 0.875rem); }  /* ~13 -> 14px : mentions, légendes */
.fs-body    { font-size: clamp(1rem, 0.95rem + 0.22vw, 1.125rem); }    /* 16 -> 18px : corps de texte */
.fs-body-lg { font-size: clamp(1.125rem, 1.06rem + 0.33vw, 1.25rem); } /* 18 -> 20px : corps large */
.fs-lead    { font-size: clamp(1.25rem, 1.05rem + 0.9vw, 1.5rem); }    /* 20 -> 24px : accroches, ml11, titres offre */
.fs-xl      { font-size: clamp(1.5rem, 1.25rem + 1.1vw, 2rem); }       /* 24 -> 32px */
.fs-2xl     { font-size: clamp(1.75rem, 1.3rem + 1.9vw, 2.5rem); }     /* 28 -> 40px : grandes icônes, flèche hero */
.fs-display { font-size: clamp(2rem, 1.1rem + 4.2vw, 4rem); }          /* 32 -> 64px : titre du hero */


/*--------------------------------------------------------------
	TITLES AND PARAGRAPHS
--------------------------------------------------------------*/
/* .section-title : titres de section (balises <h2>) reprenant le style visuel du <h1>,
   afin de conserver un seul <h1> sémantique par page sans changer l'apparence. */
h1, .section-title {
	color: var(--first-color);
	font-weight: 700;
	font-size: var(--fs-h1);
	letter-spacing: -1px;
	margin-bottom: 2rem;
	line-break: revert-layer;
	text-transform: uppercase;
}

/* Tiret jaune sous les H1 / titres de section : retiré (choix design). */
h1:after, .section-title:after {
	content: none;
}

.h1-center {
	text-align: center;
}

.h1-center:after {
	margin-inline: auto;
}

/* Le titre de marque du hero (<h1> .fs-display) ne porte pas le trait jaune. */
.fs-display:after {
	content: none;
}

h3 {
	color: var(--second-color);
	font-weight: 700;
	font-size: var(--fs-h3);
	letter-spacing: -1px;
	margin-bottom: 1rem;
}

h3:after {
	background-color: var(--fourth-color);
	content: '';
	display: block;
	height: 3px;
	width: 20px;
	margin-top: -2px;
}

.h4,
h4 {
	letter-spacing: 2px;
	font-size: var(--fs-h4);
	margin-top: 16px;
	margin-right: 0px;
	margin-bottom: 15px;
	margin-left: 0px;
}

ul,
p {
	margin: 0;
}

/*--------------------------------------------------------------
	IMAGES
--------------------------------------------------------------*/
.img-responsive {
	width: 100%;
	height: auto;
}


/*--------------------------------------------------------------
	COLORS
--------------------------------------------------------------*/
.first-color {color: var(--first-color) !important;}
.second-color {color: var(--second-color) !important;}
.third-color {color: var(--third-color) !important;}
.fourth-color {color: var(--fourth-color) !important;}
.white-color {color: var(--white-color) !important;}
.black-color {color: var(--black-color) !important;}
.grey-color {color: var(--grey-color) !important;}
.red-color {color: var(--red-color) !important;}
.green-color {color: var(--green-color) !important;}
.whitesmoke-color {color: var(--whitesmoke-color) !important;}

/*--------------------------------------------------------------
	BACKGROUND COLORS
--------------------------------------------------------------*/
.first-background-color {background-color: var(--first-color) !important;}
.second-background-color {background-color: var(--second-color) !important;}
.third-background-color {background-color: var(--third-color) !important;}
.fourth-background-color {background-color: var(--fourth-color) !important;}
.white-background-color {background-color: var(--white-color) !important;}
.black-background-color {background-color: var(--black-color) !important;}
.grey-background-color {background-color: var(--grey-color) !important;}
.whitesmoke-background-color {background-color: var(--whitesmoke-color) !important;}


/* --------------------------------------------------------------
	HR
-------------------------------------------------------------- */
.hr-first-background-color {
	background-color: var(--first-color);
	opacity: 0.80;
	height: 2px !important;
}


/*--------------------------------------------------------------
	PROGRESS BAR
--------------------------------------------------------------*/
.progress-container {
    width: 100%;
    background: var(--black-color);
    position: absolute;
    bottom: 0;
    left: 0;
}

.navbar-progress-bar {
    height: 3px;
    background: linear-gradient(90deg, #FFE066 0%, #F5B700 50%, #C77E00 100%);
    width: 0%;
}


/*--------------------------------------------------------------
	BODY
--------------------------------------------------------------*/
body {
	font-family: var(--bs-body-font-family);
	color: var(--black-color);
	background-color: var(--white-color);
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

/*--------------------------------------------------------------
	NABVAR
--------------------------------------------------------------*/
.navbar-logo-img {
	height: auto;
	opacity: 0;
}



@media (min-width: 1px) and (max-width: 768px) {
	.navbar-logo-img {
		width: 50px;
		margin-left: 5%;
	}

	.my-navbar {
		height: var(--navbar-height-sm);
	}

	.factis-navbar{
		height: var(--navbar-height-sm);
	}
}


@media (min-width: 768px) {
	.navbar-logo-img {
		width: 60px;
		margin-left: 5%;
	}

	.my-navbar {
		height: var(--navbar-height);
	}

	.factis-navbar{
		height: var(--navbar-height);
	}
}


/* xl >= 1200px */
@media (min-width: 1200px) {
	.navbar-logo-img {
		width: 80px;
		margin-left: 10%;
	}
}


.my-navbar .nav-item,
.dropdown-menu {
	background-color: var(--first-color);
}


.dropdown-item:focus, 
.dropdown-item:hover {
	background-color: var(--first-color);
}

.dropdown-menu {
	border: 2px solid var(--fourth-color);

}

/* Cibles tactiles >= 44px sur le menu replié (WCAG 2.5.5) */
@media (max-width: 991.98px) {
	.my-navbar .nav-link,
	.my-navbar .dropdown-item {
		min-height: 44px;
		display: flex;
		align-items: center;
		padding: 0.6rem 0.75rem;
	}
}

/*--------------------------------------------------------------
	FOOTER
--------------------------------------------------------------*/
.footer {

}

/* Police réduite, scoppée au footer (n'affecte pas les classes fs-* globales) */
.footer .fs-body    { font-size: clamp(0.8125rem, 0.79rem + 0.13vw, 0.875rem); }  /* ~13 -> 14px */
.footer .fs-body-lg { font-size: clamp(0.95rem, 0.91rem + 0.18vw, 1.0625rem); }   /* ~15 -> 17px */
.footer .fs-caption { font-size: clamp(0.6875rem, 0.67rem + 0.1vw, 0.75rem); }    /* ~11 -> 12px */

.footer .copyright {
	margin: 0;
	text-decoration: none;
}

.footer .footer-right {
	text-align: right;
}

.footer .footer-left {
	text-align: left;
}

.footer .social-medias a
{
	text-decoration: none;
}

/*--------------------------------------------------------------
	FONT WEIGHT, STYLE
--------------------------------------------------------------*/
.ftw-100 {font-weight: 100;}
.ftw-300 {font-weight: 300;}
.ftw-500 {font-weight: 500;}
.ftw-700 {font-weight: 700;}
.ftw-900 {font-weight: 900;}

.ft-italic {font-style: italic;}
.text-justify {text-align: justify;}
.text-align-right {text-align: right;}
.font-alt {text-transform: uppercase;}
.text-deco-no {text-decoration: none;}

.display-none {display: none;}


/*--------------------------------------------------------------
	SORTABLE ITEMS
--------------------------------------------------------------*/
.sortable-items {
	cursor: pointer;
}


/*--------------------------------------------------------------
	MODALS
--------------------------------------------------------------*/
.modal-header {
	border-top-left-radius: 0px;
	border-top-right-radius: 0px;
}


.nav-pills .nav-link {
	border-radius: 0px;
}


.accordion-button:not(.collapsed) {
	color: var(--first-color);
	background-color: var(--white-color);
	box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .125);
}

/*--------------------------------------------------------------
	IMAGES
--------------------------------------------------------------*/
img {
	max-width: 100%;
	height: auto;
}


/*--------------------------------------------------------------
	PADDING
---------------------------------------------------------------*/
.p-6 {padding: 4.5rem !important;}
.p-7 {padding: 6rem !important;}
.p-8 {padding: 8rem !important;}



/*--------------------------------------------------------------
	Preloader
--------------------------------------------------------------*/
.page-loader {
	position: fixed;
	background: var(--first-color);
	bottom: 0;
	right: 0;
	left: 0;
	top: 0;
	z-index: 9998;
}

.loader {
	position: absolute;
	width: var(--loader-logo-initial-width);
	margin: var(--loader-logo-initial-margin);
	left: 50%;
	top: 40%;
	text-indent: -9999em;
	z-index: 9999;
	animation: load 2s infinite linear;
}

/* prefers-reduced-motion : stopper la pulsation du loader */
@media (prefers-reduced-motion: reduce) {
	.loader { animation: none; }
}

.loader,
.loader:after {
	border-radius: 50%;
}


@-webkit-keyframes load {
	0% {
		opacity: var(--loader-logo-initial-opacity);
		width: var(--loader-logo-initial-width);
		margin: var(--loader-logo-initial-margin);
	}

	50% {
		opacity: var(--loader-logo-final-opacity);
		width: var(--loader-logo-final-width);
		margin: var(--loader-logo-final-margin);
	}

	100% {
		opacity: var(--loader-logo-initial-opacity);
		width: var(--loader-logo-initial-width);
		margin: var(--loader-logo-initial-margin);
	}
}

@keyframes load {
	0% {
		opacity: var(--loader-logo-initial-opacity);
		width: var(--loader-logo-initial-width);
		margin: var(--loader-logo-initial-margin);
	}

	50% {
		opacity: var(--loader-logo-final-opacity);
		width: var(--loader-logo-final-width);
		margin: var(--loader-logo-final-margin);
	}

	100% {
		opacity: var(--loader-logo-initial-opacity);
		width: var(--loader-logo-initial-width);
		margin: var(--loader-logo-initial-margin);
	}
}


/*--------------------------------------------------------------
	BORDER RADIUS
--------------------------------------------------------------*/
.br-10 {border-radius: 10px;}
.br-15 {border-radius: 15px;}
.br-20 {border-radius: 20px;}
.br-30 {border-radius: 30px;}
.br-50 {border-radius: 50px;}


/*--------------------------------------------------------------
	SHADOW
--------------------------------------------------------------*/
.first-shadow {
	box-shadow: var(--shadow-soft);
}


/*--------------------------------------------------------------
	PAGES DETAIL
--------------------------------------------------------------*/
.img-pages-detail {
	box-shadow: var(--shadow-soft);
	border: 4px solid white;
	transition: box-shadow .2s ease, transform .2s ease;
}

.img-pages-detail:hover {
	box-shadow: var(--shadow-strong);
	border: 4px solid whitesmoke;
}


/*--------------------------------------------------------------
	HOME SECTION AND TITLES / SUBTITLES
--------------------------------------------------------------*/
.ml11 {
    font-weight: 700;
    /* Titre héros devenu le <h1> de la page : on neutralise le style décoratif hérité du <h1>. */
    margin-bottom: 0;
    letter-spacing: normal;
}

.ml11:after {
    content: none;
}

.ml11 .text-wrapper {
    position: relative;
    display: inline-block;
    padding-top: 0.1em;
    padding-right: 0.05em;
    padding-bottom: 0.15em;
}

.ml11 .line {
    opacity: 0;
    position: absolute;
    left: 0;
    height: 100%;
    width: 3px;
    background-color: var(--fourth-color);
    transform-origin: 100% 100%;
}

.ml11 .line1 { 
    top: 0; 
    left: 0;
}

.ml11 .letter {
    display: inline-block;
    line-height: 1em;
}

/* Chaque mot reste insécable : la césure ne tombe qu'entre les mots (espaces),
   jamais au milieu d'un mot — voir le découpage par mots dans base.js. */
.ml11 .word {
    display: inline-block;
    white-space: nowrap;
}

.new-home-section {
    position: relative;
    height: calc(100vh - var(--navbar-height));
    height: calc(100dvh - var(--navbar-height));
    background-color: var(--first-color);
}

@media (min-width: 1px) and (max-width: 768px) {
	.new-home-section {
		height: calc(100vh - var(--navbar-height-sm));
		height: calc(100dvh - var(--navbar-height-sm));
	}
}

.new-home-title {
    position: absolute;
    top: 35%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    font-weight: 700;
    color: var(--white-color);
    z-index: 999;
}

.first-wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: calc(100vh - var(--navbar-height));
    min-height: calc(100dvh - var(--navbar-height));
    background-color: var(--first-color);
}

@media (min-width: 1px) and (max-width: 768px) {
	.first-wrapper {
		min-height: calc(100vh - var(--navbar-height-sm));
		min-height: calc(100dvh - var(--navbar-height-sm));
	}
}

/* Vague de transition du hero (multi-couches, pilotée au scroll dans base.js).
   pointer-events:none : purement décorative, ne capte pas les clics. */
.shape-overlays {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

/* Sous-titres de section — taille fluide (clamp), voir token --fs-subtitle.
   Les tailles de h1/.section-title et h3 sont désormais fluides dans leurs règles de base. */
.subtitle {
	font-size: var(--fs-subtitle);
}


/*--------------------------------------------------------------
	BUTTONS
--------------------------------------------------------------*/
/* Transitions et états communs à tous les boutons */
.btn {
	transition: background-color .2s ease, color .2s ease, transform .12s ease, box-shadow .2s ease;
}

.btn:active {
	transform: translateY(1px);
}

.btn:disabled,
.btn.disabled {
	opacity: .55;
	cursor: not-allowed;
	transform: none;
}

.btn-white {
	background-color: var(--white-color);
	color: var(--black-color);
}

.btn-white:hover,
.btn-white:focus-visible {
	background-color: var(--whitesmoke-color);
	color: var(--black-color);
}

.btn.btn-round {
	border-radius: var(--radius-sm);
}

.btn.btn-d {
	background: rgba(12, 12, 16, 0.85);
	color: #fff;
}

.btn.btn-d:hover,
.btn.btn-d:focus-visible {
	background: var(--first-color);
	color: #fff;
	box-shadow: var(--shadow-soft);
}

.btn.btn-d:active {
	background: #000;
}

/* Bouton d'accent (CTA principal "Devis gratuit") */
.btn.btn-accent {
	background-color: var(--fourth-color);
	color: #111;
	font-weight: 700;
}

.btn.btn-accent:hover,
.btn.btn-accent:focus-visible {
	background-color: var(--accent-warm);
	color: #111;
	box-shadow: var(--shadow-soft);
}


/*--------------------------------------------------------------
	LINKS
--------------------------------------------------------------*/
a {
	color: #111;
	transition: color .15s ease;
}

/* Au survol/focus, le lien se renforce (plus foncé + souligné) au lieu de s'éclaircir */
a:hover,
a:focus {
	text-decoration: underline;
	color: #000;
}

/* Sur fonds sombres, les liens en .white-color s'éclaircissent vers l'accent */
.first-background-color a:hover,
.first-background-color a:focus,
.second-background-color a:hover,
.second-background-color a:focus,
.footer a:hover,
.footer a:focus {
	color: var(--fourth-color);
}

/* Focus clavier visible (WCAG 2.4.7) — double anneau, sur tous les éléments interactifs */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible,
.btn:focus-visible {
	outline: 2px solid #000;
	outline-offset: 2px;
	box-shadow: 0 0 0 4px var(--fourth-color);
	border-radius: 4px;
}

/* Champs de formulaire : focus aux couleurs de la marque (au lieu du bleu Bootstrap) */
.form-control:focus,
.form-select:focus {
	border-color: var(--fourth-color);
	box-shadow: 0 0 0 0.2rem rgba(255, 201, 0, 0.25);
}

/* Lien d'évitement (skip link) : caché hors écran, visible au focus clavier */
.skip-link {
	position: absolute;
	left: -9999px;
	top: 8px;
	z-index: 10000;
	padding: 8px 14px;
	background: var(--fourth-color);
	color: #000;
	border-radius: 6px;
	font-weight: 700;
}

.skip-link:focus {
	left: 8px;
}

/*--------------------------------------------------------------
	Price Table
--------------------------------------------------------------*/
.price-table {
	position: relative;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.12);
	padding: 25px 20px;
	margin: 15px 0 30px;
	text-align: center;
	color: rgba(255, 255, 255, 0.82);
	border-radius: var(--radius-md);
	transition: transform .2s ease, background-color .2s ease, border-color .2s ease;
}

.price-table:hover {
	transform: translateY(-6px);
	background-color: rgba(255, 255, 255, 0.06);
	z-index: 2;
}

.price-table.best {
	border: 2px solid var(--fourth-color);
	background: rgba(255, 201, 0, 0.05);
}

.price-table.best:hover {
	background: rgba(255, 201, 0, 0.09);
}

/* Textes adaptés au fond sombre */
.price-table p.fs-lead {
	color: #fff;
}

.price-table p.fs-caption {
	color: rgba(255, 255, 255, 0.62);
}

/* Bordure discrète pour détacher le bouton sur la carte sombre */
.price-table .btn.btn-d {
	border: 1px solid rgba(255, 255, 255, 0.28);
}

/* Badge "populaire" sur l'offre mise en avant */
.price-table.best::before {
	content: "Le plus populaire";
	position: absolute;
	top: 0;
	left: 50%;
	transform: translate(-50%, -50%);
	background: var(--fourth-color);
	color: #111;
	font-family: var(--font-accent);
	font-weight: 700;
	font-size: 0.7rem;
	letter-spacing: 0.04em;
	padding: 4px 12px;
	border-radius: 999px;
	white-space: nowrap;
}

.borderline {
	position: relative;
	background: var(--fourth-color);
	display: block;
	height: 2px;
	width: 100%;
	margin: 20px 0 15px;
}

.borderline:before {
	position: absolute;
	background: var(--fourth-color);
	content: "";
	bottom: -7px;
	left: 50%;
	height: 14px;
	width: 14px;
	-webkit-transform: rotate(45deg);
	-moz-transform: rotate(45deg);
	-ms-transform: rotate(45deg);
	-o-transform: rotate(45deg);
	margin-left: -7px;
}

.borderline:after {
	position: absolute;
	background: var(--fourth-color);
	content: "";
	bottom: -5px;
	left: 50%;
	height: 10px;
	width: 10px;
	-webkit-transform: rotate(45deg);
	-moz-transform: rotate(45deg);
	-ms-transform: rotate(45deg);
	-o-transform: rotate(45deg);
	margin-left: -8px;
}

.price-table p.price {
	font-size: clamp(2.2rem, 8vw, 3.75rem);
	margin: 0;
	color: #fff;
}

.price-table p.price span {
	display: inline-block;
	vertical-align: top;
	font-size: 1rem;
	padding-top: 0.6em;
	color: rgba(255, 255, 255, 0.6);
}

.price-details {
	list-style: none;
	padding: 0;
}

.price-details li {
	padding: 6px 0;
}

.price-details li>span {
	text-decoration: line-through;
	color: rgba(255, 255, 255, 0.58);
}


/*--------------------------------------------------------------
	Testimonial
--------------------------------------------------------------*/
.testimonial:before {
	background: rgba(2, 2, 2, 0.4);
}

#testimonials-slider {
	position: relative;
}

.flex-control-nav {
	margin-top: 15px !important;
}


/*--------------------------------------------------------------
	PREUVE SOCIALE — bandeau logos (marquee) + cartes témoignages
--------------------------------------------------------------*/
/* Sur-titre léger (alternative discrète à un section-title) */
.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	text-transform: uppercase;
	letter-spacing: 0.18em;
	font-weight: 700;
	color: rgba(255, 255, 255, 0.6);
}
/* Bandeau de logos défilant, avec fondu sur les bords */
.marquee {
	position: relative;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	        mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.marquee__track {
	display: flex;
	align-items: center;
	width: max-content;
	margin: 0;
	padding: 1rem 0;
	list-style: none;
	will-change: transform;
}

/* L'espacement est porté par CHAQUE logo (et non par `gap`) : ainsi le dernier
   logo a aussi sa gouttière → la translation de -50% correspond exactement à un
   jeu et la boucle est sans couture (pas de saut). */
.marquee__item {
	flex: 0 0 auto;
	padding-right: 3.5rem;
}

.marquee__track img {
	display: block;
	height: clamp(48px, 2vw + 40px, 68px); /* ~48 → 68px */
	width: auto;
	/* Section sombre : logos en silhouette blanche, teintés en jaune au survol */
	filter: grayscale(1) brightness(0) invert(1);
	opacity: 0.65;
	transition: opacity .3s ease, filter .3s ease;
}

.marquee__item:hover img {
	/* Teinte jaune (≈ var(--fourth-color), #FFC900) au lieu de la couleur réelle du logo.
	   Recette « hex → filtre » : normalisation en noir puis colorisation. */
	filter: brightness(0) saturate(100%) invert(83%) sepia(57%) saturate(1100%) hue-rotate(359deg) brightness(103%) contrast(102%);
	opacity: 1;
}

/* Sans animation : logos en grille centrée (statique), sans masque */
@media (prefers-reduced-motion: reduce) {
	.marquee { -webkit-mask-image: none; mask-image: none; }
	.marquee__track {
		flex-wrap: wrap;
		justify-content: center;
		gap: 1.5rem 3rem;
		width: auto;
	}
	.marquee__item { padding-right: 0; }
}

/* Cartes témoignages */
.testimonial-card {
	height: 100%;
	margin: 0;
	padding: 1.75rem;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: var(--radius-md);
	color: rgba(255, 255, 255, 0.82);
	transition: border-color .25s ease, transform .25s ease, background-color .25s ease;
}

.testimonial-card:hover {
	border-color: var(--fourth-color);
	background-color: rgba(255, 255, 255, 0.06);
	transform: translateY(-4px);
}

.testimonial-card__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1rem;
}

.testimonial-card__stars {
	letter-spacing: 3px;
}

.testimonial-card__quote {
	margin: 0 0 1.5rem;
	color: rgba(255, 255, 255, 0.82);
}

.testimonial-card__author {
	display: flex;
	align-items: center;
	gap: 0.85rem;
}

.testimonial-card__avatar {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: var(--fourth-color);
	color: #111;
	font-weight: 700;
	text-transform: uppercase;
}

.testimonial-card__meta {
	display: flex;
	flex-direction: column;
	line-height: 1.3;
}

/* Badge « Avis Google » : icône + texte alignés (insécables) */
.testimonial-card__review {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	white-space: nowrap;
	color: rgba(255, 255, 255, 0.55);
	text-decoration: none;
	transition: color 0.2s ease;
}

a.testimonial-card__review:hover,
a.testimonial-card__review:focus-visible {
	color: var(--fourth-color);
}

.testimonial-card__company {
	color: rgba(255, 255, 255, 0.55);
}

.testimonial-card__name {
	color: #fff;
}


/*--------------------------------------------------------------
	ÉTAPES — défilement horizontal au scroll (desktop) / pile (mobile)
--------------------------------------------------------------*/
.steps {
	position: relative;
	margin-top: 1.5rem;
}

@media (min-width: 768px) {
	.steps { margin-top: 3rem; }
}

.steps__track {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.step-card {
	position: relative;
	overflow: hidden;
	padding: 2rem;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: var(--radius-md);
	background: rgba(255, 255, 255, 0.03);
}

.step-card__num {
	position: absolute;
	top: 0.1em;
	right: 0.4em;
	font-family: var(--font-accent);
	font-weight: 700;
	line-height: 1;
	font-size: clamp(3.5rem, 9vw, 6rem);
	color: rgba(255, 255, 255, 0.06);
	pointer-events: none;
}

.step-card__label {
	position: relative;
	display: inline-block;
	margin-bottom: 0.75rem;
	font-family: var(--font-accent);
	font-weight: 700;
	font-size: 0.75rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.5);
}

.step-card__icon {
	position: relative;
	font-size: clamp(2rem, 4vw, 2.75rem);
	margin-bottom: 1rem;
}

.step-card__title {
	position: relative;
	margin: 0 0 0.6rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	font-size: var(--fs-lead);
}

.step-card__desc {
	position: relative;
	margin: 0;
	color: rgba(255, 255, 255, 0.78);
}

/* --- Mode horizontal (desktop, classe posée par initStepsScroll) --- */
/* La section occupe exactement le viewport (pas de scroll vertical interne) :
   navbar en haut, piste qui remplit la hauteur, barre de progression en bas. */
.steps.is-horizontal {
	overflow: hidden;
	height: 100dvh;
	margin-top: 0;
	padding: var(--navbar-height) 0 1.25rem;
	display: flex;
	flex-direction: column;
}

.steps.is-horizontal .steps__track {
	flex: 1 1 auto;
	min-height: 0;
	flex-direction: row;
	flex-wrap: nowrap;
	width: max-content;
	gap: 1.5rem;
	align-items: center;        /* cartes centrées verticalement */
	padding-inline: max(4vw, 1.5rem);
}

/* Grandes cartes immersives (modèle de la démo GSAP), hauteur fixe centrée */
.steps.is-horizontal .step-card {
	flex: 0 0 auto;
	width: min(82vw, 40rem);
	height: min(600px, 70vh);
	overflow: hidden;
	padding: clamp(2rem, 4vw, 3.5rem);
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.steps.is-horizontal .step-card__num {
	font-size: clamp(6rem, 13vw, 12rem);
	top: 0;
	right: 0.25em;
}

/* En mode horizontal, contenu centré → l'étiquette se pose dans le coin
   haut-gauche (alignée sur le padding de la carte), face au gros numéro. */
.steps.is-horizontal .step-card__label {
	position: absolute;
	top: clamp(2rem, 4vw, 3.5rem);
	left: clamp(2rem, 4vw, 3.5rem);
	margin-bottom: 0;
	font-size: 0.875rem;
}

.steps.is-horizontal .step-card__icon {
	font-size: clamp(3rem, 5vw, 4.5rem);
	margin-bottom: 1.5rem;
}

.steps.is-horizontal .step-card__title {
	font-size: clamp(1.6rem, 2.4vw, 2.25rem);
	margin-bottom: 1rem;
}

.steps.is-horizontal .step-card__desc {
	font-size: clamp(1.05rem, 1.4vw, 1.3rem);
	max-width: 36ch;
}


/*--------------------------------------------------------------
	Services — défilement épinglé « index + détail »
	(Lateral Pin Indicator). Voir initServicesScroll.
	Desktop ≥992px : section figée, index cliquable à gauche,
	détail à droite en fondu. <992px / reduced-motion : grille.
--------------------------------------------------------------*/
.services {
	position: relative;
}

/* Hors mode épinglé : l'index est masqué (les panneaux portent tout le contenu) */
.services__nav {
	display: none;
}

/* Fallback : panneaux en grille, contenu complet toujours visible */
.services__panels {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
	max-width: 1100px;
	margin-inline: auto;
}

@media (min-width: 576px) {
	.services__panels {
		grid-template-columns: 1fr 1fr;
	}
}

.services__panel {
	text-align: center;
	padding: 1rem;
}

.services__icon {
	font-size: clamp(2.5rem, 6vw, 3.25rem);
	margin-bottom: 1rem;
}

.services__panel-title {
	margin: 0 0 0.6rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	font-size: var(--fs-h4);
}

.services__panel-desc {
	margin: 0;
	color: rgba(255, 255, 255, 0.78);
}

/* Accent jaune du <h3> : masqué en grille centrée (fallback),
   affiché en underline à gauche dans les panneaux épinglés. */
.services__panel-title::after {
	display: none;
}

.services.is-pinned .services__panel-title::after {
	display: block;
	margin-left: auto;
	margin-right: 0;
}

/* --- Mode épinglé (desktop, classe posée par initServicesScroll) --- */
.services.is-pinned {
	height: 100dvh;
	padding: calc(var(--navbar-height) + 2.5rem) 0 1.5rem;
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.services.is-pinned .services__inner {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	align-items: stretch;
	gap: clamp(2rem, 6vw, 6rem);
	width: 100%;
	max-width: min(1700px, 94vw);
	margin-inline: auto;
	padding-inline: max(4vw, 1.5rem);
}

/* Index cliquable à gauche */
.services.is-pinned .services__nav {
	display: flex;
	flex-direction: column;
	align-self: center;          /* la colonne se réduit à la hauteur de la liste */
	position: relative;
	flex: 0 0 auto;
	width: clamp(220px, 32%, 360px);
	padding-left: 1.5rem;
}

.services.is-pinned .services__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.services.is-pinned .services__link {
	display: block;
	width: 100%;
	padding: 0.55rem 0;
	border: 0;
	background: none;
	text-align: left;
	cursor: pointer;
	font-family: var(--font-accent);
	font-weight: 700;
	font-size: clamp(1.05rem, 1.5vw, 1.45rem);
	line-height: 1.25;
	color: rgba(255, 255, 255, 0.65);
	transition: color 0.3s ease;
}

.services.is-pinned .services__link:hover {
	color: rgba(255, 255, 255, 0.85);
}

.services.is-pinned .services__link.is-active {
	color: var(--fourth-color);
}

.services.is-pinned .services__link:focus-visible {
	outline: 2px solid var(--fourth-color);
	outline-offset: 4px;
}

/* Barre de progression verticale */
.services.is-pinned .services__progress {
	position: absolute;
	left: 0;
	top: 0;
	width: 2px;
	height: 100%;
	background: rgba(255, 255, 255, 0.15);
	border-radius: 999px;
	overflow: hidden;
}

.services__progress-fill {
	display: block;
	width: 100%;
	height: 100%;
	background: var(--fourth-color);
	transform: scaleY(0);
	transform-origin: top center;
}

/* Détail à droite : panneaux superposés, fondu sur l'actif */
.services.is-pinned .services__panels {
	position: relative;
	display: block;
	flex: 1 1 auto;
	min-height: 0;
	max-width: none;
	margin: 0;
}

.services.is-pinned .services__panel {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-end;
	text-align: right;
	padding: 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(14px);
	transition: opacity 0.45s ease, transform 0.45s ease;
}

.services.is-pinned .services__panel.is-active {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.services.is-pinned .services__icon {
	font-size: clamp(3rem, 5vw, 4.5rem);
	margin-bottom: 1.5rem;
}

.services.is-pinned .services__panel-title {
	font-size: clamp(1.6rem, 2.4vw, 2.25rem);
	margin-bottom: 1rem;
}

.services.is-pinned .services__panel-desc {
	font-size: clamp(1.05rem, 1.4vw, 1.3rem);
	max-width: 52ch;
	color: rgba(255, 255, 255, 0.8);
}