/* Ballet Installation Service: the logo's gear and sight carried at page scale. Tokens come from theme.json. */

:root {
	--bis-encre: var(--wp--preset--color--encre);
	--bis-encre-douce: var(--wp--preset--color--encre-douce);
	--bis-bleu: var(--wp--preset--color--bleu-viseur);
	--bis-bleu-profond: var(--wp--preset--color--bleu-profond);
	--bis-etincelle: var(--wp--preset--color--etincelle);
	--bis-brume: var(--wp--preset--color--brume);
	--bis-contour: var(--wp--preset--color--contour);
	--bis-rayon: var(--wp--custom--rayon);
	--bis-gouttiere: var(--wp--custom--gouttiere);
	--bis-sortie: var(--wp--custom--transition);
	--bis-bras: 6px;
}

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
:where(h1, h2, h3) { text-wrap: balance; }
:where(p, li) { text-wrap: pretty; }
:focus-visible { outline: 3px solid var(--bis-bleu); outline-offset: 3px; }
img { height: auto; }
.bis-principal { margin-block: 0; }

/* Buttons: the spark yellow is spent only on calling and sending. Icons are decorative Phosphor masks. */
.wp-element-button,
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.65rem;
	min-height: 52px;
	transition: background-color 160ms var(--bis-sortie), color 160ms var(--bis-sortie), border-color 160ms var(--bis-sortie), transform 160ms var(--bis-sortie);
}
.wp-block-button__link:active { transform: translateY(1px) scale(0.99); }
.bis-btn-tel .wp-block-button__link::before,
.bis-btn-photo .wp-block-button__link::before,
.bis-btn-whatsapp .wp-block-button__link::before {
	content: "";
	flex: none;
	width: 1.35em;
	height: 1.35em;
	background: currentColor;
	-webkit-mask: var(--bis-icone) center / contain no-repeat;
	mask: var(--bis-icone) center / contain no-repeat;
}
.bis-btn-tel { --bis-icone: url("../icons/phone.svg"); }
.bis-btn-photo { --bis-icone: url("../icons/camera.svg"); }
.bis-btn-whatsapp { --bis-icone: url("../icons/whatsapp-logo.svg"); }
.wp-block-button.is-style-outline .wp-block-button__link { border-width: 2px; }
.wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--bis-encre); color: #fff; border-color: var(--bis-encre); }
.bis-btn-clair.is-style-outline .wp-block-button__link { color: #fff; border-color: rgba(255, 255, 255, 0.85); }
.bis-btn-clair.is-style-outline .wp-block-button__link:hover { background: #fff; color: var(--bis-bleu-profond); border-color: #fff; }

.bis-lien-fleche a {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 44px;
	font-weight: 600;
	color: var(--bis-bleu);
	text-decoration: none;
}
.bis-lien-fleche a::after {
	content: "";
	width: 1.2em;
	height: 1.2em;
	background: currentColor;
	-webkit-mask: url("../icons/arrow-right.svg") center / contain no-repeat;
	mask: url("../icons/arrow-right.svg") center / contain no-repeat;
	transition: transform 160ms var(--bis-sortie);
}
.bis-lien-fleche a:hover { text-decoration: underline; text-underline-offset: 4px; }
.bis-lien-fleche .wp-block-button__link,
.bis-lien-fleche .wp-block-button__link:hover { padding: 0; background: none; border: 0; border-radius: 0; color: var(--bis-bleu); font-size: 1rem; }
.bis-lien-fleche a:hover::after { transform: translateX(4px); }

/* Header */
.bis-entete {
	position: sticky;
	top: 0;
	z-index: 40;
	background: rgba(255, 255, 255, 0.97);
	border-bottom: 1px solid var(--bis-contour);
}
.admin-bar .bis-entete { top: var(--wp-admin--admin-bar--height, 32px); }
.bis-entete__barre { max-width: 1320px; margin-inline: auto; min-height: 84px; gap: 2rem; }
.bis-marque { gap: 16px; }
.bis-marque__embleme { margin: 0; flex: none; }
.bis-marque__embleme img { width: 67px; height: auto; display: block; }
/* Grid, not flex: the name's text can then wrap inside its column instead of overflowing. */
.bis-marque__nom { display: grid; grid-template-columns: 3px minmax(0, 1fr); align-items: center; gap: 16px; margin: 0; white-space: nowrap; max-width: 11.5em; font-weight: 600; font-size: 1rem; line-height: 1.2; letter-spacing: -0.01em; color: var(--bis-encre); }
.bis-marque__nom::before { content: ""; flex: none; align-self: stretch; width: 3px; min-height: 2.4em; background: var(--bis-bleu); }
.bis-entete__actions { gap: 1.75rem; }
.bis-nav { font-weight: 500; font-size: 0.975rem; gap: 1.75rem; }
.bis-nav .wp-block-navigation-item__content { padding-block: 0.4rem; text-decoration: none; }
.bis-nav .wp-block-navigation-item__content:hover { text-decoration: underline; text-decoration-color: var(--bis-bleu); text-decoration-thickness: 2px; text-underline-offset: 6px; }
.bis-nav .wp-block-navigation__submenu-container { border: 0; border-radius: var(--bis-rayon); box-shadow: 0 20px 40px -20px rgba(6, 30, 70, 0.45); padding: 0.5rem; }
.bis-nav .wp-block-navigation-item.bis-nav__mobile { display: none; }
.bis-entete__appel .wp-block-button__link { min-height: 46px; padding-inline: 1.25rem; }

/* Hero: the logo's gear (::before), the sight (::after) and the real photo inside, at page scale. */
.bis-hero {
	--g: min(64vw, 1040px);
	/* On wide screens the whole composition sits in a centred 1680px frame instead of hugging the viewport edge. */
	--cadre: max(0px, (100% - 1680px) / 2);
	--left: calc(var(--cadre) + var(--g) * -0.16);
	--top: calc(var(--g) * -0.14);
	--cx: calc(var(--left) + var(--g) / 2);
	--cy: calc(var(--top) + var(--g) / 2);
	--rp: calc(var(--g) * 0.2778);
	position: relative;
	isolation: isolate;
	overflow: hidden;
	min-height: calc(var(--top) + var(--g) * 0.94);
	margin-block: 0 !important;
	padding-inline: 0 !important;
}
.bis-hero::before,
.bis-hero::after {
	content: "";
	position: absolute;
	left: var(--left);
	top: var(--top);
	width: var(--g);
	height: var(--g);
	background: var(--bis-engrenage) center / contain no-repeat;
	pointer-events: none;
	z-index: 1;
}
.bis-hero::after { background-image: var(--bis-viseur); z-index: 3; }
.bis-hero .bis-hero__photo {
	position: absolute;
	left: calc(var(--cx) - var(--rp));
	top: calc(var(--cy) - var(--rp));
	width: calc(var(--rp) * 2);
	height: calc(var(--rp) * 2);
	margin: 0;
	border-radius: 50%;
	overflow: hidden;
	z-index: 2;
}
.bis-hero .bis-hero__photo img { width: 100%; height: 100%; object-fit: cover; }
.bis-hero__question {
	position: absolute;
	left: calc(var(--cx) + var(--g) * 0.5 + 28px);
	bottom: calc(100% - var(--cy) + 22px);
	margin: 0;
	z-index: 4;
	font-style: italic;
	font-weight: 500;
	color: var(--bis-bleu);
	font-size: clamp(1.75rem, 2.9vw, 2.75rem);
	line-height: 1.1;
	letter-spacing: -0.02em;
}
.bis-hero__contexte { display: block; margin-top: 10px; max-width: 30ch; font-size: 0.9375rem; font-weight: 400; line-height: 1.5; letter-spacing: 0; color: var(--bis-encre-douce); }
.bis-hero__reponse {
	margin-left: calc(var(--cx) + var(--g) * 0.335);
	padding: calc(var(--cy) + var(--g) * 0.04) var(--bis-gouttiere) 72px 0;
	max-width: calc(780px + var(--bis-gouttiere));
	position: static;
}
/* The sight's horizontal arm runs to the right edge, between the question and the answer. */
.bis-hero__reponse::before {
	content: "";
	position: absolute;
	z-index: 3;
	left: calc(var(--cx) + var(--g) * 0.30);
	right: 0;
	top: calc(var(--cy) - var(--g) * 0.01);
	height: calc(var(--g) * 0.0185);
	background: var(--bis-bleu);
	transform-origin: left center;
}
.bis-hero__titre { display: grid; gap: 14px; margin: 0; }
.bis-hero__slogan { font-size: clamp(3.25rem, 6.6vw, 6rem); letter-spacing: -0.035em; line-height: 0.98; }
.bis-point { color: var(--bis-bleu); }
.bis-hero__metier { font-size: clamp(1.25rem, 1.75vw, 1.625rem); font-weight: 600; letter-spacing: -0.015em; line-height: 1.3; max-width: 34ch; }
.bis-hero__chapo { margin-top: 14px; max-width: 50ch; color: var(--bis-encre-douce); }
.bis-hero__actions { margin-top: 24px; gap: 14px; }
.bis-hero__tel { margin-top: 14px; font-size: 0.9375rem; color: var(--bis-encre-douce); }
.bis-hero__tel a { display: inline-block; padding-block: 10px; font-weight: 600; color: var(--bis-encre); white-space: nowrap; font-variant-numeric: tabular-nums; }
.bis-faits { display: flex; flex-wrap: wrap; gap: 8px 22px; margin: 14px 0 0; padding: 0; list-style: none; font-size: 0.9375rem; color: var(--bis-encre-douce); }
.bis-faits li { display: block; }
.bis-faits li::before { content: ""; display: inline-block; vertical-align: middle; margin: -2px 10px 0 2px; width: 9px; height: 9px; border-radius: 50%; background: var(--bis-bleu); box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--bis-bleu); transform: scale(0.8); }
.bis-faits strong { color: var(--bis-encre); font-weight: 600; }

@media (prefers-reduced-motion: no-preference) {
	.bis-hero::before { animation: bis-engrene 1100ms var(--bis-sortie) both; }
	.bis-hero__reponse::before { animation: bis-trace 700ms var(--bis-sortie) 300ms both; }
	.bis-hero__question { animation: bis-pose 600ms var(--bis-sortie) 500ms both; }
	@keyframes bis-engrene { from { transform: rotate(-30deg); } to { transform: rotate(0); } }
	@keyframes bis-trace { from { transform: scaleX(0.04); } to { transform: scaleX(1); } }
	@keyframes bis-pose { from { transform: translateY(12px); } to { transform: none; } }
}

/* Sections */
.bis-section { padding-block: var(--wp--preset--spacing--70); margin-block: 0 !important; }
.bis-section__tete { display: grid; gap: 18px; max-width: 760px; margin-bottom: var(--wp--preset--spacing--50); }
.bis-section__tete h2 { margin: 0; }
.bis-section__tete p { margin: 0; max-width: 60ch; color: var(--bis-encre-douce); }
.bis-section__pied { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--bis-contour); }

/* Services: photos butt against the blue cross like the gear's quarters. */
.bis-quad { position: relative; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: var(--bis-bras); }
/* The logo's cross drawn once, exactly in the grid gaps: arms end with the grid, photos butt against them, and the
   sight's centre sits on the crossing. Equal rows keep the horizontal arm on the photos' seam. */
.bis-quad::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		radial-gradient(circle at 50% 50%, var(--bis-bleu) 0 12px, #fff 12px 16px, transparent 16px),
		linear-gradient(var(--bis-bleu), var(--bis-bleu)) center / var(--bis-bras) 100% no-repeat,
		linear-gradient(var(--bis-bleu), var(--bis-bleu)) center / 100% var(--bis-bras) no-repeat;
}
.bis-quad__cellule { display: flex; flex-direction: column; justify-content: space-between; gap: 26px; margin: 0 !important; }
.bis-quad__cellule:nth-child(3),
.bis-quad__cellule:nth-child(4) { flex-direction: column-reverse; }
.bis-quad__texte { display: flex; flex-direction: column; gap: 10px; max-width: 48ch; }
.bis-quad__cellule:nth-child(odd) .bis-quad__texte { padding-right: clamp(8px, 2vw, 28px); }
.bis-quad__cellule:nth-child(even) .bis-quad__texte { padding-left: clamp(8px, 2vw, 28px); }
.bis-quad__texte > * { margin: 0; }
.bis-quad__texte h3 { display: flex; align-items: center; gap: 12px; }
.bis-quad__texte p { color: var(--bis-encre-douce); }
.bis-quad__texte p strong { color: var(--bis-encre); }
.bis-quad__photo { margin: 0; aspect-ratio: 4 / 3; overflow: hidden; background: var(--bis-brume); }
.bis-quad__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms var(--bis-sortie); }
.bis-quad__cellule:hover .bis-quad__photo img { transform: scale(1.03); }
.bis-quad__cellule:nth-child(1) .bis-quad__photo { border-radius: var(--bis-rayon) var(--bis-rayon) 0 var(--bis-rayon); }
.bis-quad__cellule:nth-child(2) .bis-quad__photo { border-radius: var(--bis-rayon) var(--bis-rayon) var(--bis-rayon) 0; }
.bis-quad__cellule:nth-child(3) .bis-quad__photo { border-radius: var(--bis-rayon) 0 var(--bis-rayon) var(--bis-rayon); }
.bis-quad__cellule:nth-child(4) .bis-quad__photo { border-radius: 0 var(--bis-rayon) var(--bis-rayon) var(--bis-rayon); }
.bis-quart { display: none; flex: none; width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--bis-bleu); }
.bis-quart--1 { background: conic-gradient(transparent 0 270deg, var(--bis-bleu) 270deg 360deg); }
.bis-quart--2 { background: conic-gradient(var(--bis-bleu) 0 90deg, transparent 90deg 360deg); }
.bis-quart--3 { background: conic-gradient(transparent 0 180deg, var(--bis-bleu) 180deg 270deg, transparent 270deg 360deg); }
.bis-quart--4 { background: conic-gradient(transparent 0 90deg, var(--bis-bleu) 90deg 180deg, transparent 180deg 360deg); }

/* On site: the charter's radial blue as a full field. */
.bis-champ { padding-block: var(--wp--preset--spacing--60); margin-block: 0 !important; overflow: hidden; }
.bis-champ__colonnes { gap: clamp(40px, 6vw, 96px); }
.bis-champ p { color: #fff; max-width: 54ch; }
.bis-champ__liste { list-style: none; padding: 0; margin: 1.5rem 0; display: grid; gap: 14px; }
.bis-champ__liste li { position: relative; padding-left: 38px; }
.bis-champ__liste li a { color: #fff; }
.bis-champ__liste li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	width: 26px;
	height: 26px;
	background: #fff;
	-webkit-mask: url("../icons/map-pin.svg") center / contain no-repeat;
	mask: url("../icons/map-pin.svg") center / contain no-repeat;
}
.bis-carte { position: relative; margin: 0; }
.bis-carte__image { margin: 0; }
.bis-carte__image img { width: 100%; }
.bis-carte__etiquette {
	position: absolute;
	left: clamp(0px, calc(77.6% - 250px), calc(100% - 250px));
	top: calc(33% + 40px);
	display: grid;
	gap: 2px;
	margin: 0;
	padding: 10px 14px;
	border-radius: var(--bis-rayon);
	background: #fff;
	color: var(--bis-encre) !important;
	font-size: 0.875rem;
	line-height: 1.35;
	box-shadow: 0 10px 30px -12px rgba(6, 30, 70, 0.55);
}
.bis-carte__etiquette em { color: var(--bis-encre-douce); }

/* Recent jobs mosaic (query of réalisations). */
.bis-mosaique__grille { display: grid !important; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(14px, 1.6vw, 22px); list-style: none; padding: 0; margin: 0; }
.bis-mosaique__grille > li { margin: 0; }
.bis-mosaique__grille > li:nth-child(1) { grid-column: 1 / span 5; grid-row: span 2; }
.bis-mosaique__grille > li:nth-child(2) { grid-column: 6 / span 7; }
.bis-mosaique__grille > li:nth-child(3) { grid-column: 6 / span 4; }
.bis-mosaique__grille > li:nth-child(4) { grid-column: 10 / span 3; }
.bis-mosaique__fiche { display: grid; gap: 10px; align-content: start; }
.bis-mosaique__photo { margin: 0; overflow: hidden; border-radius: var(--bis-rayon); background: var(--bis-brume); aspect-ratio: 4 / 3; }
.bis-mosaique__grille > li:nth-child(1) .bis-mosaique__photo { aspect-ratio: 3 / 4; }
.bis-mosaique__grille > li:nth-child(2) .bis-mosaique__photo { aspect-ratio: 16 / 8; }
.bis-mosaique__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms var(--bis-sortie); }
.bis-mosaique__fiche:hover img { transform: scale(1.03); }
.bis-mosaique__titre { margin: 0; font-size: 1rem; line-height: 1.4; letter-spacing: 0; display: grid; grid-template-columns: 18px 1fr; gap: 10px; }
.bis-mosaique__titre::before { content: ""; width: 18px; height: 18px; margin-top: 2px; border-radius: 50%; box-shadow: inset 0 0 0 2px var(--bis-bleu); background: radial-gradient(circle, var(--bis-bleu) 0 3.5px, transparent 4px); }
.bis-mosaique__titre a { color: var(--bis-encre); text-decoration: none; }
.bis-mosaique__titre a:hover { text-decoration: underline; }
.bis-mosaique__service { margin: 0 0 0 28px; font-size: 0.875rem; font-style: italic; color: var(--bis-encre-douce); }
.bis-mosaique__service a { color: inherit; text-decoration: none; }

/* Family and workshop. */
/* The sight drawn around the workshop photo bleeds past the photo on purpose, never past the page. */
.bis-famille { overflow-x: clip; }
.bis-famille .wp-block-columns { gap: clamp(40px, 7vw, 110px); }
.bis-parc { list-style: none; margin: 1.25rem 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; border-top: 2px solid var(--bis-encre); }
.bis-parc li { display: grid; padding: 14px 14px 14px 0; border-bottom: 1px solid var(--bis-contour); font-style: italic; color: var(--bis-encre-douce); font-size: 0.9375rem; }
.bis-parc strong { font-style: normal; font-weight: 600; color: var(--bis-encre); font-size: 1rem; }
.bis-viseur-photo { position: relative; aspect-ratio: 1; max-width: 520px; margin: 0 auto; }
.bis-viseur-photo img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; padding: 6%; box-sizing: border-box; }
.bis-viseur-photo::after { content: ""; position: absolute; inset: -12%; background: var(--bis-viseur) center / contain no-repeat; pointer-events: none; }

/* References. */
.bis-references { padding-block: var(--wp--preset--spacing--50); border-bottom: 1px solid var(--bis-contour); margin-block: 0 !important; }
.bis-references__ligne { gap: clamp(24px, 5vw, 80px); }
.bis-references__titre { margin: 0; font-size: clamp(1.25rem, 1.8vw, 1.5rem); max-width: 16ch; }
.bis-references__logos { gap: 24px clamp(32px, 5vw, 72px); }
.bis-logo-ref { margin: 0 !important; }
/* Heights balanced by eye: each mark has a different aspect ratio, so equal heights would not look equal. */
.bis-logo-ref img { display: block; width: auto; height: clamp(30px, 3vw, 42px); }
.bis-logo-ref--vinci img { height: clamp(32px, 3.2vw, 44px); }
.bis-logo-ref--mel img { height: clamp(34px, 3.4vw, 46px); }
/* Wide screens: the title keeps its width and the marks share the rest of the row evenly. */
@media (min-width: 961px) {
	.bis-references__ligne { display: grid !important; grid-template-columns: auto minmax(0, 1fr); }
	.bis-references__logos { justify-content: space-evenly; }
}
/* Phones: the three marks share one row and shrink with it instead of leaving MEL alone on a second line. */
@media (max-width: 600px) {
	.bis-references__logos { display: grid !important; grid-template-columns: 1.15fr 1fr 0.95fr; gap: 20px; width: 100%; }
	.bis-logo-ref img,
	.bis-logo-ref--vinci img,
	.bis-logo-ref--mel img { width: 100%; height: auto; max-height: 34px; object-fit: contain; object-position: left center; }
}

/* FAQ (details blocks). */
.bis-faq details { border-bottom: 1px solid var(--bis-contour); padding-block: 1.1rem; }
.bis-faq summary { cursor: pointer; font-weight: 600; font-size: 1.125rem; list-style: none; display: flex; justify-content: space-between; gap: 1rem; min-height: 44px; align-items: center; }
.bis-faq summary::-webkit-details-marker { display: none; }
.bis-faq summary::after { content: "+"; font-size: 1.5rem; line-height: 1; color: var(--bis-bleu); transition: transform 200ms var(--bis-sortie); }
.bis-faq details[open] summary::after { transform: rotate(45deg); }
.bis-faq details > :not(summary) { color: var(--bis-encre-douce); max-width: 70ch; }

/* Call band. */
.bis-appel { padding-block: var(--wp--preset--spacing--50); margin-block: 0 !important; }
.bis-appel__ligne { gap: 1.5rem; }
.bis-appel__titre { margin: 0; font-size: clamp(1.5rem, 3vw, 2.25rem); max-width: 22ch; }

/* Quote form section. */
.bis-devis .wp-block-columns { gap: clamp(40px, 6vw, 96px); }
.bis-coordonnees { list-style: none; padding: 0; margin: 1.5rem 0 0; display: grid; gap: 16px; }
.bis-coordonnees li { display: grid; grid-template-columns: 44px 1fr; gap: 14px; align-items: center; }
.bis-coordonnees li::before { content: ""; width: 44px; height: 44px; border-radius: 50%; background: var(--bis-brume) var(--bis-icone-coord) center / 22px no-repeat; }
.bis-coordonnees__tel { --bis-icone-coord: url("../icons/phone.svg"); }
.bis-coordonnees__mail { --bis-icone-coord: url("../icons/envelope-simple.svg"); }
.bis-coordonnees__adresse { --bis-icone-coord: url("../icons/map-pin.svg"); }
.bis-coordonnees a { font-weight: 600; color: var(--bis-encre); }


/* Quote form (JetFormBuilder markup from ballet-core): structure from the plugin, look from the theme. */
.bis-devis__formulaire .jet-form-builder {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
	padding: clamp(24px, 3.4vw, 44px);
	border-radius: 16px;
	background: #fff;
	box-shadow: var(--wp--preset--shadow--carte);
}
.bis-devis__formulaire .jet-form-builder-row,
.bis-devis__formulaire .bis-photo,
.bis-devis__formulaire .bis-formulaire__altcha,
.bis-devis__formulaire .jet-form-builder-messages-wrap { grid-column: 1 / -1; margin: 0; }
/* Grid items default to min-width: auto; the widest plugin field would otherwise push the card off screen. */
.bis-devis__formulaire .jet-form-builder > *,
.bis-devis__formulaire .jet-form-builder__field-wrap { min-width: 0; max-width: 100%; }
/* The plugin rows are column flex boxes that wrap, with a 100% label basis: the field wrapped into a second column. */
.bis-devis__formulaire .jet-form-builder-row { display: block; }
.bis-devis__formulaire .jet-form-builder > .field-type-text-field:nth-of-type(1),
.bis-devis__formulaire .jet-form-builder > .field-type-text-field:nth-of-type(2) { grid-column: auto; }
.bis-devis__formulaire .jet-form-builder__label { margin-bottom: 8px; }
.bis-devis__formulaire .jet-form-builder__label-text,
.bis-devis__formulaire .bis-photo__libelle { font-weight: 600; font-size: 0.9375rem; }
.bis-devis__formulaire .jet-form-builder__required { color: var(--bis-bleu); }
.bis-devis__formulaire .text-field,
.bis-devis__formulaire .textarea-field {
	width: 100%;
	min-height: 52px;
	padding: 12px 16px;
	border: 1.5px solid #c3cfdb;
	border-radius: var(--bis-rayon);
	font: 400 1rem/1.5 var(--wp--preset--font-family--poppins);
	color: var(--bis-encre);
	background: #fff;
	box-sizing: border-box;
	transition: border-color 160ms var(--bis-sortie), box-shadow 160ms var(--bis-sortie);
}
.bis-devis__formulaire .textarea-field { min-height: 132px; resize: vertical; }
.bis-devis__formulaire .text-field:hover,
.bis-devis__formulaire .textarea-field:hover { border-color: #93a6b9; }
.bis-devis__formulaire .text-field:focus,
.bis-devis__formulaire .textarea-field:focus { outline: none; border-color: var(--bis-bleu); box-shadow: 0 0 0 4px rgba(7, 116, 196, 0.18); }
.bis-devis__formulaire .jet-form-builder__desc { margin-top: 6px; font-size: 0.8125rem; color: var(--bis-encre-douce); }
.bis-devis__formulaire .field-type-radio-field .jet-form-builder__fields-group { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; border-radius: 12px; background: var(--bis-brume); }
.bis-devis__formulaire .radio-wrap { margin: 0; }
.bis-devis__formulaire .for-radio { position: relative; display: grid; place-items: center; min-height: 48px; padding: 6px 12px; border-radius: 9px; text-align: center; font-weight: 500; cursor: pointer; transition: background-color 160ms var(--bis-sortie), color 160ms var(--bis-sortie); }
.bis-devis__formulaire .for-radio input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
/* The plugin draws its own radio circle on the label text; the segmented control shows the choice by its fill. */
.bis-devis__formulaire .jet-form-builder__field-label.for-radio > span::before { content: none !important; display: none !important; }
.bis-devis__formulaire .for-radio:has(input:checked) { background: var(--bis-bleu); color: #fff; font-weight: 600; }
.bis-devis__formulaire .for-radio:has(input:focus-visible) { outline: 3px solid var(--bis-bleu); outline-offset: 2px; }
.bis-devis__formulaire .bis-photo__aide { margin: 4px 0 8px; font-size: 0.875rem; color: var(--bis-encre-douce); }
.bis-devis__formulaire .bis-photo__zone { display: grid; gap: 10px; padding: 18px 18px 18px 84px; border: 2px dashed #b4c3d2; border-radius: 12px; background: #fff url("../icons/camera.svg") 22px center / 40px no-repeat; transition: border-color 160ms var(--bis-sortie), background-color 160ms var(--bis-sortie); }
.bis-devis__formulaire .bis-photo__zone:hover,
.bis-devis__formulaire .bis-photo__zone:focus-within { border-color: var(--bis-bleu); background-color: #f7fbff; }
.bis-devis__formulaire .bis-photo__zone { min-width: 0; }
.bis-devis__formulaire .bis-photo__champ { font: 500 0.9375rem var(--wp--preset--font-family--poppins); width: 100%; min-width: 0; max-width: 100%; }
.bis-devis__formulaire .bis-photo__vignette { border-radius: 8px; }
.bis-devis__formulaire .bis-photo__retirer { min-height: 44px; padding: 0 16px; border: 1.5px solid #c3cfdb; border-radius: 999px; background: #fff; font: 500 0.875rem var(--wp--preset--font-family--poppins); cursor: pointer; }
.bis-devis__formulaire .bis-photo__erreur { color: var(--wp--preset--color--erreur); font-weight: 500; font-size: 0.875rem; }
.bis-devis__formulaire .for-checkbox { display: grid; grid-template-columns: 22px 1fr; gap: 10px; align-items: start; font-size: 0.875rem; color: var(--bis-encre-douce); }
/* The plugin takes check inputs out of the flow; the consent box stays a visible, real checkbox in its grid cell. */
.bis-devis__formulaire .for-checkbox > span { display: block; }
.bis-devis__formulaire .for-checkbox > span a { display: inline; }
.bis-devis__formulaire .for-checkbox input.checkradio-field { position: static; opacity: 1; width: 22px; height: 22px; margin: 2px 0 0; accent-color: var(--bis-bleu); }
.bis-devis__formulaire .jet-form-builder__submit {
	display: inline-flex; align-items: center; gap: 0.65rem; min-height: 52px; padding: 0.85rem 1.5rem;
	border: 0; border-radius: 999px; background: var(--bis-etincelle); color: var(--bis-encre);
	font: 600 1rem/1.2 var(--wp--preset--font-family--poppins); cursor: pointer;
	transition: background-color 160ms var(--bis-sortie), transform 160ms var(--bis-sortie);
}
.bis-devis__formulaire .jet-form-builder__submit::before { content: ""; width: 1.3em; height: 1.3em; background: currentColor; -webkit-mask: url("../icons/paper-plane-tilt.svg") center / contain no-repeat; mask: url("../icons/paper-plane-tilt.svg") center / contain no-repeat; }
.bis-devis__formulaire .jet-form-builder__submit:hover { background: var(--wp--preset--color--etincelle-vive); }
.bis-devis__formulaire .jet-form-builder__submit:active { transform: translateY(1px) scale(0.99); }
.bis-devis__formulaire .jet-form-builder-messages-wrap:not(:empty) { padding: 14px 16px; border-radius: var(--bis-rayon); background: #e9f6ee; color: #155c34; font-weight: 500; }

/* Inner pages: a brume banner closed by the blue arm, then sections alternating white, brume, blue and ink. */
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
/* Banner children start on the left edge of the centred 1320px column, whatever their own max-width. */
.bis-bandeau-page.wp-block-group > * { margin-left: max(0px, calc((100% - 1320px) / 2)) !important; margin-right: auto !important; }
.bis-bandeau-page.wp-block-group > .bis-bandeau-page__chapo { max-width: 60ch; }
.bis-bandeau-page { padding-block: 28px 64px; margin-block: 0 !important; background: var(--bis-brume); border-bottom: var(--bis-bras) solid var(--bis-bleu); }
.bis-bandeau-page h1,
.bis-bandeau-page .wp-block-post-title { margin: 0; font-size: clamp(2rem, 4.2vw, 3.5rem); line-height: 1.1; letter-spacing: -0.02em; max-width: 22ch; }
.bis-bandeau-page__chapo { margin: 1.25rem 0 0; max-width: 60ch; color: var(--bis-encre-douce); font-size: var(--wp--preset--font-size--moyen); }
.bis-ariane,
.bis-ariane-simple { margin: 0 0 1.75rem; font-size: 0.875rem; color: var(--bis-encre-douce); }
.bis-ariane a,
.bis-ariane-simple a { display: inline-block; padding-block: 6px; color: var(--bis-encre-douce); text-underline-offset: 3px; }
.bis-ariane a:hover,
.bis-ariane-simple a:hover { color: var(--bis-bleu); }
.bis-contenu { padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--60); }
.bis-contenu > * + * { margin-block-start: 1.25rem; }
.bis-contenu h2 { margin-top: 2.5em; font-size: clamp(1.625rem, 2.6vw, 2.125rem); }
.bis-contenu h3 { margin-top: 2em; font-size: clamp(1.25rem, 2vw, 1.375rem); }
.bis-contenu :where(p, li) { color: #3a4149; }
.bis-contenu strong,
.bis-bref strong,
.bis-encart strong,
.bis-cas strong { color: var(--bis-encre); font-weight: 600; }
.bis-contenu ul:not(.bis-travaux) { list-style: none; padding-left: 0; display: grid; gap: 0.6rem; }
.bis-contenu ul:not(.bis-travaux) > li { position: relative; padding-left: 2rem; }
.bis-contenu ul:not(.bis-travaux) > li::before { content: ""; position: absolute; left: 0; top: 0.3rem; width: 1.1rem; height: 1.1rem; background: var(--bis-bleu); -webkit-mask: url("../icons/check.svg") center / contain no-repeat; mask: url("../icons/check.svg") center / contain no-repeat; }
.bis-chapo { font-size: clamp(1.1875rem, 1.6vw, 1.3125rem); line-height: 1.6; color: var(--bis-encre) !important; }

/* Shared marks: the sight in miniature before section and card titles. */
.bis-a-retenir__titre::before { content: ""; flex: none; width: 2.25rem; height: 2.25rem; background: url("../images/mini-viseur.svg") center / contain no-repeat; }

/* Service page banner. */
.bis-bandeau-service { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 72px); align-items: center; margin-block: 0 !important; padding: 28px max(var(--bis-gouttiere), calc((100% - 1320px) / 2 + var(--bis-gouttiere))) 64px; background: var(--bis-brume); border-bottom: var(--bis-bras) solid var(--bis-bleu); }
.bis-bandeau-service__texte { display: grid; gap: 1.5rem; }
.bis-bandeau-service__texte > * { margin: 0 !important; }
.bis-bandeau-service h1 { font-size: clamp(2.125rem, 4.4vw, 3.625rem); line-height: 1.08; letter-spacing: -0.02em; }
.bis-bandeau-service h1 em { display: block; font-style: normal; color: var(--bis-bleu); }
.bis-bandeau-service__sous-titre { font-size: clamp(1.125rem, 1.5vw, 1.3125rem); color: var(--bis-encre-douce); max-width: 34em; }
.bis-reassurances { list-style: none; padding: 1.5rem 0 0 !important; border-top: 1px solid var(--bis-contour); display: flex; flex-wrap: wrap; gap: 0.75rem 1.75rem; font-size: 0.9375rem; font-weight: 500; }
.bis-reassurances li { display: flex; align-items: center; gap: 0.5rem; }
.bis-reassurances li::before { content: ""; flex: none; width: 1.1rem; height: 1.1rem; background: var(--bis-bleu); -webkit-mask: url("../icons/check.svg") center / contain no-repeat; mask: url("../icons/check.svg") center / contain no-repeat; }
.bis-bandeau-service .wp-block-image { position: relative; margin: 0; aspect-ratio: 5 / 4; border-radius: var(--bis-rayon); overflow: hidden; background: var(--bis-encre); }
.bis-bandeau-service .wp-block-image img { width: 100%; height: 100%; object-fit: cover; }
/* The logo's sight frames the job photo: ring, cross and spark centre. */
.bis-bandeau-service .wp-block-image::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: url("../images/viseur-photo.svg") center / cover no-repeat; }
.bis-bandeau-service--sans-visuel { grid-template-columns: minmax(0, 1fr); }

/* Service sections. */
.bis-section--mist { background: var(--bis-brume); }
/* The banner above is already brume: the summary sits on white so the two never merge. */
.bis-service-bref.bis-section--mist { background: #fff; }
.bis-titre-section { margin: 0 0 var(--wp--preset--spacing--40); font-size: clamp(1.75rem, 3vw, 2.5rem); max-width: 22ch; margin-inline: 0 !important; }
.bis-bref { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1.25rem clamp(32px, 5vw, 72px); align-items: start; }
.bis-bref > p { grid-column: 1; margin: 0; color: var(--bis-encre-douce); }
.bis-bref > p:first-child { font-size: 1.1875rem; color: var(--bis-encre); }
.bis-bref > ul { grid-column: 2; grid-row: 1 / span 4; margin: 0; padding: 32px !important; list-style: none; display: grid; gap: 14px; background: var(--bis-brume); border-radius: var(--bis-rayon); }
.bis-bref > ul > li { position: relative; padding-left: 2rem; }
.bis-bref > ul > li::before { content: ""; position: absolute; left: 0; top: 0.3rem; width: 1.15rem; height: 1.15rem; background: var(--bis-bleu); -webkit-mask: url("../icons/check.svg") center / contain no-repeat; mask: url("../icons/check.svg") center / contain no-repeat; }
.bis-situations,
.bis-cas-grille,
.bis-services-liens { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 24px; }
.bis-service-situations { background: var(--bis-brume); }
.bis-encart,
.bis-cas,
.bis-service-lien { margin: 0 !important; padding: 32px; border-radius: var(--bis-rayon); background: #fff; display: flex; flex-direction: column; gap: 0.9rem; }
.bis-encart > *,
.bis-cas > *,
.bis-service-lien > * { margin: 0 !important; }
.bis-encart h3 { display: flex; flex-direction: column; gap: 1rem; font-size: 1.3125rem; }
.bis-encart h3::before { content: ""; width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--bis-bleu); background: conic-gradient(transparent 0 270deg, var(--bis-bleu) 270deg 360deg); }
.bis-encart:nth-child(2) h3::before { background: conic-gradient(var(--bis-bleu) 0 90deg, transparent 90deg 360deg); }
.bis-encart:nth-child(3) h3::before { background: conic-gradient(transparent 0 180deg, var(--bis-bleu) 180deg 270deg, transparent 270deg 360deg); }
.bis-encart:nth-child(4) h3::before { background: conic-gradient(transparent 0 90deg, var(--bis-bleu) 90deg 180deg, transparent 180deg 360deg); }
.bis-encart p,
.bis-cas p { font-size: 1rem; color: var(--bis-encre-douce); }
.bis-section--gear { position: relative; overflow: hidden; color: #fff; background: linear-gradient(120deg, var(--bis-bleu-profond) 0%, var(--bis-bleu) 100%); }
.bis-section--gear::before { content: ""; position: absolute; right: -160px; top: 50%; width: 620px; aspect-ratio: 1; transform: translateY(-50%); background: var(--bis-engrenage) center / contain no-repeat; opacity: 0.28; pointer-events: none; }
.bis-section--gear > * { position: relative; }
.bis-section--gear :where(h2, h3, p) { color: #fff; }
/* The intro keeps the column's own margins (so it lines up with the title on every width); padding caps its measure. */
.bis-section--gear .bis-intro { margin-block: -1rem var(--wp--preset--spacing--50); box-sizing: border-box; padding-right: max(0px, calc(min(100%, 1320px) - 40em)); font-size: 1.1875rem; color: rgba(255, 255, 255, 0.92); }
.bis-etapes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 48px 32px; margin-top: 2rem; }
.bis-etape { margin: 0 !important; border-top: 2px solid rgba(255, 255, 255, 0.45); display: flex; flex-direction: column; gap: 0.9rem; }
.bis-etape > * { margin: 0 !important; }
.bis-etape__numero { display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin-top: -29px !important; border-radius: 50%; border: 2px solid #fff; background: var(--bis-bleu-profond); font-weight: 700; font-size: 1.125rem; }
.bis-etape p:not(.bis-etape__numero) { font-size: 1rem; color: rgba(255, 255, 255, 0.92); }
.bis-format { gap: clamp(32px, 5vw, 72px) !important; align-items: flex-start; }
.bis-format > .wp-block-column:first-child > p { color: var(--bis-encre-douce); }
.bis-format > .wp-block-column:last-child { padding: 36px; border-radius: var(--bis-rayon); background: var(--bis-encre); color: #fff; }
.bis-format > .wp-block-column:last-child h2 { margin-top: 0; font-size: 1.3125rem; color: #fff; }
.bis-format h2 { margin-top: 0; font-size: clamp(1.75rem, 3vw, 2.5rem); }
.bis-livrables { list-style: none; padding: 0 !important; display: grid; gap: 14px; font-size: 1rem; }
.bis-livrables li { position: relative; padding-left: 2rem; color: #fff; }
.bis-livrables li::before { content: ""; position: absolute; left: 0; top: 0.3rem; width: 1.15rem; height: 1.15rem; background: #fff; -webkit-mask: url("../icons/check.svg") center / contain no-repeat; mask: url("../icons/check.svg") center / contain no-repeat; }
.bis-cas h3 { font-size: 1.3125rem; }
.bis-service-cas .bis-cas-grille + .wp-block-buttons { margin-top: 2rem; }
.bis-section--mist .bis-lien-fleche a,
.bis-service-situations .bis-lien-fleche a,
.bis-service-autres .bis-lien-fleche a,
.bis-fiche-section:not(:last-child) a { color: var(--bis-bleu-profond); }
.bis-service-faq .bis-titre-section { margin-bottom: 1.5rem; }
.bis-service-lien { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; }
.bis-service-lien h3 { font-size: 1.3125rem; }
.bis-service-lien h3 a { color: var(--bis-encre); text-decoration: none; }
.bis-service-lien h3 a:hover { color: var(--bis-bleu); }
/* Section grounds alternate white / mist down every page; the FAQ takes the mist, so the other services go white
   with mist cards and the closing form takes the mist again. */
.bis-faq { background: var(--bis-brume); }
.bis-service-autres .bis-service-lien { background: var(--bis-brume); }
.bis-service-autres + .bis-devis,
.bis-realisations + .bis-references { background: var(--bis-brume); }

/* Article: side table of contents, "À retenir" box, related service card. */
.bis-sommaire--laterale { display: grid; gap: 12px; font-size: 0.9375rem; }
.bis-sommaire__titre { margin: 0; font-weight: 700; font-size: 0.9375rem; color: var(--bis-encre); }
.bis-sommaire__liste { list-style: none; counter-reset: sommaire; margin: 0; padding: 0; display: grid; gap: 2px; }
.bis-sommaire__liste li { counter-increment: sommaire; display: grid; grid-template-columns: 2rem 1fr; align-items: baseline; }
.bis-sommaire__liste li::before { content: counter(sommaire, decimal-leading-zero); font-weight: 700; font-size: 0.8125rem; color: var(--bis-bleu); }
.bis-sommaire__liste a { display: block; padding-block: 8px; color: var(--bis-encre-douce); text-decoration: none; line-height: 1.35; }
.bis-sommaire__liste a:hover { color: var(--bis-bleu); text-decoration: underline; text-underline-offset: 3px; }
.bis-a-retenir { margin-block: 2rem !important; padding: 32px; border-radius: var(--bis-rayon); background: var(--bis-brume); }
.bis-a-retenir__titre { display: flex; align-items: center; gap: 12px; margin: 0 0 1rem; font-weight: 700; color: var(--bis-encre) !important; }
.bis-service-lie { margin-top: 3rem !important; padding: 32px; border-radius: var(--bis-rayon); background: var(--bis-encre); display: grid; gap: 0.6rem; }
.bis-service-lie > * { margin: 0 !important; }
.bis-service-lie p { color: #d5d8dc !important; }
.bis-service-lie .bis-service-lie__etiquette { font-size: 0.8125rem; font-weight: 600; color: #8fc4ea !important; }
.bis-service-lie .bis-service-lie__titre { font-weight: 700; font-size: 1.375rem; color: #fff !important; }
.bis-service-lie .bis-lien-fleche a { color: #fff; }
.bis-article__image { margin-top: 0; }
.bis-article__image img { border-radius: var(--bis-rayon); }

/* Réalisation: summary, ink "work done" panel, then the gallery as before / after. */
.bis-realisation .bis-contenu { padding-top: var(--wp--preset--spacing--50); }
.bis-realisation__travaux { margin-block: 2rem !important; padding: 32px; border-radius: var(--bis-rayon); background: var(--bis-encre); }
.bis-realisation__travaux h2 { margin: 0 0 1.25rem; font-size: 1.25rem; color: #fff; }
.bis-travaux { list-style: none; counter-reset: travaux; margin: 0; padding: 0; display: grid; gap: 14px; }
.bis-travaux li { counter-increment: travaux; position: relative; padding-left: 2.5rem; color: #fff !important; font-size: 1rem; }
.bis-travaux li::before { content: counter(travaux, decimal-leading-zero); position: absolute; left: 0; font-weight: 700; color: #8fc4ea; }
.bis-galerie { gap: 24px !important; }
.bis-galerie--avant-apres { position: relative; gap: var(--bis-bras) !important; padding: 0; background: var(--bis-bleu); border-radius: var(--bis-rayon); overflow: hidden; }
.bis-galerie--avant-apres .wp-block-image,
.bis-galerie--avant-apres .wp-block-image img { border-radius: 0 !important; }
.bis-galerie--avant-apres::after { content: ""; position: absolute; left: 50%; top: 50%; width: 30px; height: 30px; transform: translate(-50%, -50%); border-radius: 50%; background: var(--bis-bleu); box-shadow: 0 0 0 4px #fff; pointer-events: none; }
.bis-galerie--avant-apres .wp-block-image { position: relative; }
.bis-galerie--avant-apres .wp-block-image::before { position: absolute; z-index: 1; left: 16px; top: 16px; padding: 6px 14px; border-radius: 4px; font-weight: 600; font-size: 0.875rem; color: #fff; }
.bis-galerie--avant-apres .wp-block-image:first-child::before { content: "Avant"; background: var(--bis-encre); }
.bis-galerie--avant-apres .wp-block-image:last-child::before { content: "Après"; background: var(--bis-bleu); }

/* Réalisations archive. */
.bis-realisations { padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--60); }

/* Zones: the introduction and the map side by side, then one editorial row per town (name on the left, text on the
   right, a hairline between rows), and "everywhere in France" as the single dark band. */
.bis-fiches-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 40px clamp(40px, 5vw, 80px); align-items: center; margin-block: 0 !important; }
.bis-fiches-intro > * { margin: 0 !important; max-width: none !important; }
.bis-fiches-intro__texte > * + * { margin-top: 1.25rem; }
.bis-fiches-intro__texte p:first-child { font-size: 1.1875rem; color: var(--bis-encre) !important; }
/* The rows run on a full-bleed mist band under the white introduction, down to the footer. */
.bis-fiches { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; margin-block: var(--wp--preset--spacing--70) 0 !important; padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--70); background: var(--bis-brume); box-shadow: 0 0 0 100vmax var(--bis-brume); clip-path: inset(0 -100vmax); }
.bis-contenu:has(> .bis-fiches:last-child) { padding-bottom: 0 !important; }
.bis-fiche-section { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); column-gap: clamp(32px, 5vw, 80px); align-items: start; margin: 0 !important; padding: 40px 0; border-bottom: 1px solid var(--bis-contour); }
.bis-fiche-section > * { grid-column: 2; margin: 0 0 0.9rem !important; max-width: 62ch; }
.bis-fiche-section > :last-child { margin-bottom: 0 !important; }
.bis-fiche-section h2 { grid-column: 1; grid-row: 1 / span 6; margin: 0 !important; font-size: clamp(1.75rem, 3vw, 2.5rem); line-height: 1.1; letter-spacing: -0.02em; }
.bis-fiche-section p { font-size: 1rem; color: var(--bis-encre-douce); }
.bis-fiche-section:last-child { margin-top: 48px !important; padding: clamp(32px, 4vw, 56px); border: 0; border-radius: var(--bis-rayon); background: var(--bis-encre); }
.bis-fiche-section:last-child :where(h2, p) { color: #fff; }
.bis-fiche-section:last-child p { color: #d5d8dc; }
.bis-fiche-section:last-child strong { color: #fff; }
.bis-fiche-section:last-child a { color: #fff; text-underline-offset: 3px; }
@media (max-width: 960px) {
	.bis-fiches-intro { grid-template-columns: minmax(0, 1fr); }
	.bis-fiche-section { grid-template-columns: minmax(0, 1fr); padding: 32px 0; }
	.bis-fiche-section > *,
	.bis-fiche-section h2 { grid-column: 1; grid-row: auto; }
	.bis-fiche-section h2 { margin-bottom: 0.9rem !important; }
}

/* About page: white intro, mist timeline, dark workshop, white values, mist references, blue call. */
.bis-chiffres--4 .bis-chiffres__liste { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.bis-surtitre { margin: 0 !important; font-size: 0.9375rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--bis-bleu-profond); }
.bis-entreprise-intro__grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px clamp(40px, 6vw, 80px); align-items: center; }
.bis-entreprise-intro__grille > * { margin: 0 !important; }
.bis-entreprise-intro__texte { display: flex; flex-direction: column; gap: 22px; }
.bis-entreprise-intro__texte > * { margin: 0 !important; }
.bis-entreprise-intro__texte p { color: var(--bis-encre-douce); }
.bis-entreprise-intro__texte .bis-surtitre { color: var(--bis-bleu-profond); }
.bis-entreprise-intro__chapo { font-size: clamp(1.375rem, 2.1vw, 1.75rem); line-height: 1.45; font-weight: 500; color: var(--bis-encre) !important; }
.bis-entreprise-intro__grille .bis-photo-a-fournir img { aspect-ratio: 5 / 4; }
.bis-entreprise-tete { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px clamp(40px, 6vw, 80px); align-items: end; margin-bottom: var(--wp--preset--spacing--60); }
.bis-entreprise-tete > * { margin: 0 !important; }
.bis-entreprise-tete p { color: var(--bis-encre-douce); }
/* Timeline: the sight's blue arm runs under the three dates, each marked by a small sight. */
.bis-frise { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px 40px; padding-top: 68px; }
.bis-frise::before { content: ""; position: absolute; left: 0; right: 0; top: 21px; height: var(--bis-bras); background: var(--bis-bleu); }
.bis-frise__etape { position: relative; display: flex; flex-direction: column; gap: 14px; margin: 0 !important; }
.bis-frise__etape > * { margin: 0 !important; }
.bis-frise__etape::before { content: ""; position: absolute; left: 0; top: -68px; width: 30px; height: 30px; border: 3px solid var(--bis-bleu); border-radius: 50%; background: radial-gradient(circle, var(--bis-bleu) 0 5px, var(--bis-brume) 6px); }
.bis-frise__annee { font-size: clamp(2.75rem, 4vw, 3.5rem); font-weight: 700; line-height: 1; letter-spacing: -0.03em; color: var(--bis-bleu-profond); }
.bis-frise__etape h3 { font-size: 1.25rem; }
.bis-frise__etape p:not(.bis-frise__annee) { font-size: 1rem; color: var(--bis-encre-douce); }
.bis-entreprise-atelier { background: var(--bis-encre); color: #fff; }
.bis-entreprise-atelier :where(h2, h3, strong) { color: #fff; }
.bis-entreprise-atelier__grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px clamp(40px, 6vw, 80px); align-items: center; }
.bis-entreprise-atelier__grille > * { margin: 0 !important; }
.bis-entreprise-atelier__photos { position: relative; padding-bottom: 64px; }
.bis-entreprise-atelier__photo { margin: 0 !important; }
.bis-entreprise-atelier__photo img { display: block; width: 86%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--bis-rayon); }
.bis-entreprise-atelier__photo--petite { position: absolute; right: 0; bottom: 0; width: 52%; }
.bis-entreprise-atelier__photo--petite img { width: 100%; aspect-ratio: 1; border: 8px solid var(--bis-encre); }
.bis-entreprise-atelier__texte { display: flex; flex-direction: column; gap: 22px; }
.bis-entreprise-atelier__texte > * { margin: 0 !important; }
.bis-entreprise-atelier__texte p { color: #d5d8dc; }
.bis-entreprise-atelier .bis-surtitre { color: #8cc8f0; }
.bis-atelier-parc { list-style: none; margin: 0; padding: 0; border-top: 1px solid rgba(255, 255, 255, 0.18); }
/* Three columns: machine, use, and the badge in its own column so it never wraps under the name. */
.bis-atelier-parc li { display: grid; grid-template-columns: 210px minmax(0, 1fr) auto; align-items: center; gap: 4px 20px; padding: 14px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.18); font-size: 1rem; color: #d5d8dc; }
.bis-atelier-parc li::before { content: none; }
.bis-atelier-parc strong { font-weight: 600; font-size: 1.0625rem; }
.bis-badge { grid-column: 3; }
.bis-badge { padding: 2px 10px; border-radius: 999px; background: #8cc8f0; color: var(--bis-encre); font-size: 0.8125rem; font-weight: 600; line-height: 1.6; }
.bis-valeurs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px 0; margin-top: var(--wp--preset--spacing--50); }
.bis-valeur { display: flex; flex-direction: column; gap: 14px; margin: 0 !important; padding-inline: 40px; }
.bis-valeur:first-child { padding-left: 0; }
.bis-valeur:last-child { padding-right: 0; }
.bis-valeur + .bis-valeur { border-left: var(--bis-bras) solid var(--bis-bleu); }
.bis-valeur > * { margin: 0 !important; }
.bis-valeur__cle { font-size: clamp(2.25rem, 3.4vw, 3rem); font-weight: 700; line-height: 1; letter-spacing: -0.03em; color: var(--bis-bleu-profond); }
.bis-valeur h3 { font-size: 1.375rem; }
.bis-valeur p:not(.bis-valeur__cle) { font-size: 1rem; color: var(--bis-encre-douce); }
.bis-entreprise-assurance { margin-top: var(--wp--preset--spacing--50) !important; font-size: 0.9375rem; color: var(--bis-encre-douce); }
.bis-entreprise-valeurs + .bis-references { background: var(--bis-brume); }
@media (max-width: 960px) {
	.bis-chiffres--4 .bis-chiffres__liste { grid-template-columns: repeat(2, minmax(0, 1fr)); border-radius: 24px; }
	.bis-entreprise-intro__grille,
	.bis-entreprise-tete,
	.bis-entreprise-atelier__grille { grid-template-columns: minmax(0, 1fr); }
	/* Timeline turns vertical: the arm runs down the left edge. */
	.bis-frise { grid-template-columns: minmax(0, 1fr); padding: 0 0 0 52px; gap: 40px; }
	.bis-frise::before { left: 14px; right: auto; top: 8px; bottom: 8px; width: var(--bis-bras); height: auto; }
	.bis-frise__etape::before { left: -52px; top: 4px; }
	.bis-valeurs { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.bis-valeur,
	.bis-valeur:first-child,
	.bis-valeur:last-child { padding: 28px 0 28px 24px; border-left: var(--bis-bras) solid var(--bis-bleu); }
	.bis-valeur + .bis-valeur { margin-top: 8px !important; }
}
@media (max-width: 600px) {
	.bis-chiffres--4 .bis-chiffres__liste { grid-template-columns: minmax(0, 1fr); border-radius: 16px; }
	.bis-atelier-parc li { grid-template-columns: minmax(0, 1fr) auto; }
	.bis-atelier-parc strong { grid-column: 1 / -1; }
	.bis-badge { grid-column: 2; }
}

/* Rhythm (Sui Generis scale): one "Section" token; flow margins are neutralised inside grids so gaps alone space them. */
:where(.bis-situations, .bis-cas-grille, .bis-services-liens, .bis-fiches, .bis-etapes, .bis-grille-fiches, .bis-fiche-corps, .bis-article-corps, .bis-chiffres__liste, .bis-fiche-aside__colle) > * { margin-block: 0 !important; }

/* Photo banners: core cover over the featured image (replaceable in the editor), anthracite veil, blue arm. */
.wp-block-cover.bis-bandeau-photo { margin-block: 0 !important; padding: clamp(110px, 11vw, 170px) var(--wp--custom--gouttiere) clamp(40px, 4.5vw, 64px); border-bottom: var(--bis-bras) solid var(--bis-bleu); }
/* Core sets width: auto on positioned cover content (higher specificity): the banner content must span the cover. */
.bis-bandeau-photo .wp-block-cover__inner-container { width: 100% !important; max-width: none !important; margin: 0 !important; display: grid; gap: 1rem; }
.bis-bandeau-photo strong { color: #fff; }
.bis-bandeau-photo .wp-block-cover__inner-container > * { margin-left: max(0px, calc((100% - 1320px) / 2)) !important; margin-right: auto !important; margin-block: 0 !important; }
.bis-bandeau-photo :where(h1, .wp-block-post-title) { margin: 0; color: #fff; font-size: clamp(2.25rem, 4.6vw, 3.75rem); line-height: 1.08; letter-spacing: -0.02em; max-width: 20ch; text-wrap: balance; }
.bis-bandeau-photo .bis-bandeau-page__chapo { max-width: 60ch; color: #e6e9ec; font-size: var(--wp--preset--font-size--moyen); }
.bis-bandeau-photo .bis-ariane,
.bis-bandeau-photo .bis-ariane a { color: rgba(255, 255, 255, 0.86); }
.bis-bandeau-photo .bis-ariane a:hover { color: #fff; }
.bis-bandeau-photo .bis-etiquettes a { display: inline-flex; align-items: center; min-height: 36px; padding: 4px 14px; border: 1px solid rgba(255, 255, 255, 0.45); border-radius: 999px; background: rgba(255, 255, 255, 0.12); color: #fff; font-weight: 600; text-decoration: none; }
.bis-bandeau-photo .bis-etiquettes a:hover { background: rgba(255, 255, 255, 0.22); }
.bis-bandeau-photo .bis-article__meta { color: #d5d8dc; font-size: 0.9375rem; }

/* Key facts riding on the service banner. */
.bis-bandeau-service { padding-bottom: 112px; }
.bis-chiffres { position: relative; z-index: 2; margin-block: -52px 0 !important; }
.bis-chiffres__liste { list-style: none; margin: 0; padding: 22px clamp(24px, 3vw, 44px); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 40px; border-radius: 999px; background: var(--bis-encre); box-shadow: var(--wp--preset--shadow--carte); }
.bis-chiffres__liste li { display: grid; gap: 2px; font-size: 0.9375rem; line-height: 1.4; color: #c8d0d9; }
.bis-chiffres__liste strong { font-size: clamp(1.125rem, 1.6vw, 1.375rem); font-weight: 700; color: #fff; }

/* Réalisation: text and a sticky side column (facts, call card). */
.bis-fiche-corps { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 48px clamp(40px, 5vw, 88px); align-items: start; padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--70); }
.bis-fiche-corps__texte { padding-block: 0 !important; max-width: 780px; }
.bis-fiche-corps__texte > :first-child { margin-top: 0 !important; }
.bis-fiche-aside__colle { position: sticky; top: calc(108px + var(--wp-admin--admin-bar--height, 0px)); display: grid; gap: 20px; }
@media (max-height: 699px) { .bis-fiche-aside__colle { position: static; } }
.bis-fiche-aside__carte { padding: 28px; border-radius: var(--bis-rayon); background: var(--bis-brume); display: grid; gap: 6px; }
.bis-fiche-aside__carte > * { margin: 0 !important; }
.bis-fiche-aside__etiquette { font-size: 0.8125rem; font-weight: 600; color: var(--bis-encre-douce); }
.bis-fiche-aside__metier a { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 44px; font-weight: 700; font-size: 1.25rem; color: var(--bis-encre); text-decoration: none; }
.bis-fiche-aside__metier a::after { content: ""; width: 1.1em; height: 1.1em; background: var(--bis-bleu); -webkit-mask: url("../icons/arrow-right.svg") center / contain no-repeat; mask: url("../icons/arrow-right.svg") center / contain no-repeat; transition: transform 160ms var(--bis-sortie); }
.bis-fiche-aside__metier a:hover { color: var(--bis-bleu-profond); }
.bis-fiche-aside__metier a:hover::after { transform: translateX(4px); }
.bis-fiche-aside__note { font-size: 0.875rem; color: var(--bis-encre-douce); }
.bis-fiche-aside__appel { padding: 28px; border-radius: var(--bis-rayon); background: linear-gradient(135deg, var(--bis-bleu-profond) 0%, var(--bis-bleu) 100%); color: #fff; display: grid; gap: 12px; }
.bis-fiche-aside__appel > * { margin: 0 !important; }
.bis-fiche-aside__appel h2 { font-size: 1.375rem; color: #fff; }
.bis-fiche-aside__appel p { font-size: 0.9375rem; color: rgba(255, 255, 255, 0.94); }
.bis-fiche-aside__appel .wp-block-buttons { flex-direction: column; align-items: stretch; gap: 10px; margin-top: 6px !important; }
.bis-fiche-aside__appel .wp-block-button,
.bis-fiche-aside__appel .wp-block-button__link { width: 100%; }

/* Gallery: a mosaic (the first photo spans the row when the count is odd), every photo opens in the core lightbox. */
.bis-galerie:not(.bis-galerie--avant-apres) { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px !important; }
.bis-galerie:not(.bis-galerie--avant-apres) .wp-block-image { width: 100% !important; margin: 0 !important; }
.bis-galerie:not(.bis-galerie--avant-apres) .wp-block-image:first-child:nth-last-child(odd) { grid-column: 1 / -1; }
.bis-galerie .wp-block-image img { width: 100% !important; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--bis-rayon); }
.bis-galerie .wp-block-image:first-child:nth-last-child(odd) img { aspect-ratio: 16 / 9; }
.bis-galerie--avant-apres .wp-block-image img { aspect-ratio: 3 / 4; }
.wp-lightbox-container img { cursor: zoom-in; }

/* Other jobs of the same service. */
.bis-autres-chantiers { margin-block: 0 !important; padding-block: var(--wp--preset--spacing--70); background: var(--bis-brume); }
.bis-autres-chantiers .bis-titre-section { margin-bottom: var(--wp--preset--spacing--40); }


/* Job cards (archive and "other jobs"): editorial, no frame. Photo, service, title, two-line summary; the first job
   of the archive takes two columns so the grid has a rhythm. The whole card is the link. */
.bis-grille-fiches { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 56px 32px; }
.bis-fiche { position: relative; display: flex; flex-direction: column; gap: 0; height: 100%; }
.bis-fiche > * { margin: 0 !important; }
.bis-fiche__photo { overflow: hidden; border-radius: var(--bis-rayon); background: var(--bis-brume); }
.bis-fiche__photo img { transition: transform 600ms var(--bis-sortie); }
.bis-fiche .bis-etiquettes { position: relative; z-index: 2; margin-top: 8px !important; font-size: 0.8125rem; font-weight: 600; }
.bis-fiche .bis-etiquettes a { display: inline-flex; align-items: center; min-height: 44px; padding: 0; background: none !important; color: var(--bis-bleu-profond); text-decoration: none; }
.bis-fiche .bis-etiquettes a:hover { text-decoration: underline; text-underline-offset: 3px; }
.bis-fiche__titre { margin-top: 0 !important; font-size: 1.3125rem; line-height: 1.3; }
.bis-fiche__titre a { color: var(--bis-encre); text-decoration: none; }
.bis-fiche__titre a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.bis-fiche__resume { margin-top: 8px !important; font-size: 0.9375rem; color: var(--bis-encre-douce); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bis-fiche:has(.bis-fiche__titre a:focus-visible) { outline: 3px solid var(--bis-bleu); outline-offset: 6px; border-radius: var(--bis-rayon); }
.bis-fiche__titre a:focus-visible { outline: none; }
@media (hover: hover) and (pointer: fine) {
	.bis-fiche:hover .bis-fiche__photo img { transform: scale(1.03); }
	.bis-fiche:hover .bis-fiche__titre a { text-decoration: underline; text-decoration-color: var(--bis-bleu); text-decoration-thickness: 2px; text-underline-offset: 5px; }
}
@media (min-width: 961px) {
	.bis-realisations .bis-grille-fiches { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.bis-realisations .bis-grille-fiches > li:first-child { grid-column: span 2; }
	.bis-realisations .bis-grille-fiches > li:first-child .bis-fiche__photo { aspect-ratio: 16 / 9 !important; }
	.bis-realisations .bis-grille-fiches > li:first-child .bis-fiche__titre { font-size: 1.75rem; }
	.bis-realisations .bis-grille-fiches > li:first-child .bis-fiche__resume { -webkit-line-clamp: 3; max-width: 60ch; }
}

/* Service filter: plain text tabs, the active one carries the blue arm underneath. */
.bis-filtres { margin-bottom: 40px; border-bottom: 1px solid var(--bis-contour); }
.bis-filtres__liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 32px; }
.bis-filtre { display: inline-flex; align-items: baseline; gap: 8px; min-height: 48px; padding: 12px 0; color: var(--bis-encre-douce); font-weight: 600; font-size: 1rem; text-decoration: none; box-shadow: inset 0 -3px 0 transparent; transition: color 160ms var(--bis-sortie), box-shadow 160ms var(--bis-sortie); }
.bis-filtre:hover { color: var(--bis-encre); }
.bis-filtre.is-actif { color: var(--bis-encre); box-shadow: inset 0 calc(-1 * var(--bis-bras)) 0 var(--bis-bleu); }
@media (max-width: 960px) {
	.bis-filtres__liste { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; gap: 0 24px; }
	.bis-filtre { white-space: nowrap; }
}
.bis-filtre__nombre { font-size: 0.8125rem; font-weight: 500; color: var(--bis-encre-douce); font-variant-numeric: tabular-nums; }

/* Article: 720px text and a sticky side column (table of contents, call card); folded contents on phones. */
.bis-article-corps { display: grid; grid-template-columns: minmax(0, 720px) 320px; justify-content: space-between; gap: 64px 80px; padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--70); }
.bis-article .bis-contenu { padding-block: 0; }
.bis-article .bis-contenu > :first-child { margin-top: 0 !important; }
.bis-sommaire--repliable { display: none; }
.bis-sommaire__liste a[aria-current] { color: var(--bis-bleu-profond); font-weight: 600; }

/* Zones map. */
.bis-carte-zones { margin-block: 3rem 0 !important; padding: clamp(20px, 3vw, 40px); border-radius: var(--bis-rayon); background: linear-gradient(120deg, var(--bis-bleu-profond) 0%, var(--bis-bleu) 100%); color: #fff; }
.bis-carte-zones__svg { display: block; width: min(100%, 920px); height: auto; margin-inline: auto; font-family: var(--wp--preset--font-family--poppins); }
.bis-carte-zones__france { fill: rgba(255, 255, 255, 0.22); stroke: rgba(255, 255, 255, 0.7); stroke-width: 1; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
.bis-carte-zones__cadre { fill: rgba(255, 255, 255, 0.35); stroke: #fff; stroke-width: 1; vector-effect: non-scaling-stroke; }
.bis-carte-zones__anneau { fill: none; stroke: rgba(255, 255, 255, 0.45); stroke-width: 0.4; }
.bis-carte-zones__anneau--large { stroke-dasharray: 1.2 1.6; }
.bis-carte-zones__croix { stroke: rgba(255, 255, 255, 0.28); stroke-width: 0.3; }
.bis-carte-zones__centre { fill: #fff; }
/* Labels carry a halo in the card's blue so a ring or the cross never cuts through a letter. */
.bis-carte-zones__svg text { fill: #fff; paint-order: stroke; stroke: #0a4fa8; stroke-width: 1.1px; stroke-linejoin: round; }
.bis-carte-zones__etiquette-atelier { font-size: 3.4px; font-weight: 500; }
.bis-carte-zones__atelier-titre { font-size: 4.2px; font-weight: 700; }
/* Decoration set on the link propagates to the SVG text and draws under the halo, so it is cut at the link. */
.bis-carte-zones a.bis-carte-zones__ville { text-decoration: none !important; }
.bis-carte-zones__ville text { font-size: 4.2px; font-weight: 600; }
.bis-carte-zones__point { fill: #fff; stroke: var(--bis-bleu-profond); stroke-width: 0.7; transform-box: fill-box; transform-origin: center; transition: transform 160ms var(--bis-sortie); }
.bis-carte-zones__cible { fill: transparent; stroke: none; }
.bis-carte-zones__ville:hover .bis-carte-zones__point { transform: scale(1.5); }
.bis-carte-zones__ville:focus { outline: none; }
.bis-carte-zones__ville:focus-visible .bis-carte-zones__cible { stroke: #fff; stroke-width: 0.6; }
.bis-carte-zones figcaption { margin-top: 16px; font-size: 0.9375rem; color: rgba(255, 255, 255, 0.94); }
.bis-carte-zones figcaption a { color: #fff; }

/* Navigation: the full menu above 1180px (the brand, five links and the call need it); below, the toggle (core folds only under 600px, too late for this header).
   The open menu is a full anthracite panel: left-aligned links, services listed under their heading, the call at the
   bottom; the bottom bar and the WhatsApp button step aside while it is open. */
@media (min-width: 1181px) {
	.bis-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: none; }
}
@media (max-width: 1180px) {
	.bis-nav .wp-block-navigation__responsive-container-open:not(.always-shown),
	.bis-nav .wp-block-navigation__responsive-container-close:not(.always-shown) { display: inline-flex; }
	.bis-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
	/* Header call button: kept on phones, after the brand and before the toggle. */
	.bis-entete__actions { gap: 8px; }
	.bis-entete .wp-block-buttons.bis-entete__appel { display: flex; order: -1; }
}
@media (max-width: 400px) {
	.bis-marque { gap: 10px; min-width: 0; }
	/* The image block writes its width inline: only !important brings the logo down on small phones. */
	.bis-marque__embleme img { width: 46px !important; }
	.bis-entete .bis-marque__nom { gap: 10px; max-width: 7.5em; font-size: 0.8125rem; line-height: 1.15; white-space: normal; }
}
@media (max-width: 600px) {
	.bis-entete .bis-entete__appel .wp-block-button__link { width: 46px; min-height: 46px; padding: 0; gap: 0; border-radius: 50%; font-size: 0; line-height: 0; }
	.bis-entete .bis-entete__appel .wp-block-button__link::before { width: 22px; height: 22px; }
}
html.has-modal-open .bis-whatsapp { display: none !important; }
.bis-nav .wp-block-navigation__responsive-container.is-menu-open {
	--navigation-layout-justification-setting: flex-start;
	padding: 20px var(--wp--custom--gouttiere) calc(28px + env(safe-area-inset-bottom));
	background: var(--bis-encre) !important;
	color: #fff !important;
	overflow-x: hidden;
}
.bis-nav .is-menu-open::after { content: ""; position: absolute; right: -140px; bottom: -140px; width: 440px; aspect-ratio: 1; background: var(--bis-engrenage) center / contain no-repeat; opacity: 0.14; pointer-events: none; }
.bis-nav .is-menu-open .wp-block-navigation__responsive-container-close { top: 18px; right: var(--wp--custom--gouttiere); color: #fff; }
.bis-nav .is-menu-open .wp-block-navigation__responsive-container-content { position: relative; z-index: 1; align-items: stretch !important; padding-top: 64px !important; }
.bis-nav .is-menu-open .wp-block-navigation__container { width: 100%; align-items: stretch !important; gap: 0 !important; }
.bis-nav .is-menu-open .wp-block-navigation-item { width: 100%; align-items: flex-start !important; text-align: left; }
.bis-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item { border-bottom: 1px solid rgba(255, 255, 255, 0.14); }
.bis-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content { display: flex; align-items: center; min-height: 58px; padding: 6px 0 !important; color: #fff; font-size: 1.5rem; font-weight: 600; letter-spacing: -0.01em; text-decoration: none; }
.bis-nav .is-menu-open .wp-block-navigation-item__content:hover,
.bis-nav .is-menu-open .wp-block-navigation-item__content:focus-visible { color: #8fc4ea; }
.bis-nav .is-menu-open .wp-block-navigation-submenu__toggle { display: none; }
.bis-nav .is-menu-open .wp-block-navigation__submenu-container { position: static !important; width: 100%; padding: 0 0 14px !important; border: 0 !important; background: transparent !important; box-shadow: none !important; gap: 0 !important; }
.bis-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { display: flex; align-items: center; min-height: 44px; padding: 4px 0 4px 18px !important; color: #c8d0d9; font-size: 1.0625rem; font-weight: 500; }
.bis-nav .is-menu-open .wp-block-navigation-item.bis-nav__mobile { display: flex; border-bottom: 0; margin-top: 28px; }
.bis-nav .is-menu-open .bis-nav__tel .wp-block-navigation-item__content { justify-content: center; gap: 10px; width: 100%; min-height: 56px; padding: 0 24px !important; border-radius: 999px; background: var(--bis-etincelle); color: var(--bis-encre) !important; font-size: 1.125rem; }
.bis-nav .is-menu-open .bis-nav__tel .wp-block-navigation-item__content::before { content: ""; width: 22px; height: 22px; background: currentColor; -webkit-mask: url("../icons/phone.svg") center / contain no-repeat; mask: url("../icons/phone.svg") center / contain no-repeat; }

/* Touch targets of 44px at least (WCAG 2.5.8 and outdoor use on phones). */
.bis-etiquettes a { display: inline-flex; align-items: center; min-height: 44px; }
.bis-nav .wp-block-navigation__responsive-container-open,
.bis-nav .wp-block-navigation__responsive-container-close { align-items: center; justify-content: center; width: 48px; height: 48px; }
.bis-nav .wp-block-navigation__responsive-container-open svg { width: 30px; height: 30px; }
.bis-ariane a,
.bis-ariane-simple a { padding-block: 12px; }
.bis-coordonnees a { display: inline-block; padding-block: 10px; }
.bis-sommaire--repliable .bis-sommaire__titre { display: flex; align-items: center; min-height: 44px; cursor: pointer; }
.wp-lightbox-container .lightbox-trigger { width: 44px; height: 44px; }

/* Photo placeholders (theme SVG in a core image block): replaced by the client's photo with "Remplacer" in the editor. */
.wp-block-image.bis-photo-a-fournir { margin-block: 2rem !important; }
.wp-block-image.bis-photo-a-fournir img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--bis-rayon); }

/* Scroll reveal (assets/js/revele.js): cards below the fold rise in once. */
.bis-revele { opacity: 0; transform: translateY(16px); }
.bis-revele--visible { opacity: 1; transform: none; transition: opacity 280ms var(--bis-sortie) calc(var(--bis-rang, 0) * 60ms), transform 280ms var(--bis-sortie) calc(var(--bis-rang, 0) * 60ms); }

/* WhatsApp: fixed on every page, above the mobile call bar. The number is the workshop mobile. */
.bis-whatsapp { position: fixed; z-index: 45; right: 24px; bottom: 24px; margin: 0 !important; }
.bis-whatsapp .wp-block-button__link { gap: 10px; min-height: 56px; padding: 0 22px 0 16px; border-radius: 999px; background: #128c7e; color: #fff; font-weight: 600; font-size: 0.9375rem; box-shadow: 0 12px 28px -12px rgba(6, 30, 70, 0.55); }
.bis-whatsapp .wp-block-button__link::before { content: ""; flex: none; width: 28px; height: 28px; background: currentColor; -webkit-mask: url("../icons/whatsapp-logo.svg") center / contain no-repeat; mask: url("../icons/whatsapp-logo.svg") center / contain no-repeat; }
.bis-whatsapp .wp-block-button__link:hover { background: #0e7569; color: #fff; transform: translateY(-2px); }
.bis-whatsapp .wp-block-button__link:focus-visible { outline-color: var(--bis-encre); }

/* Footer. */
/* The site-wide block gap would open a white strip between the last section and the footer. */
.wp-site-blocks > footer,
.wp-site-blocks > .wp-block-template-part:last-child { margin-block-start: 0; }
.bis-pied { padding-block: 72px 32px; font-size: 0.9375rem; margin-top: 0 !important; }
.bis-pied a { color: #c8d0d9; text-decoration: none; display: inline-block; padding-block: 8px; }
.bis-pied a:hover { color: #fff; text-decoration: underline; text-underline-offset: 4px; }
.bis-pied__colonnes { gap: 40px; }
.bis-pied__logo { margin: 0; }
.bis-pied__logo a { padding: 0; }
.bis-pied__slogan { margin-top: 18px; font-style: italic; color: #fff; }
.bis-pied__titre { margin: 0 0 10px; font-size: 1rem; letter-spacing: 0; color: #fff; }
.bis-pied__liste { list-style: none; margin: 0; padding: 0; color: #c8d0d9; }
.bis-pied__liste li { padding-block: 2px; }
.bis-pied__legal { margin-top: 56px; padding-top: 24px; border-top: 1px solid #3a424b; gap: 8px 24px; font-size: 0.8125rem; color: #9aa5b1; }
.bis-pied__legal p { margin: 0; }
.bis-pied__legal a { color: #9aa5b1; }

/* Tablet and phone. */
@media (max-width: 1100px) {
	.bis-nav { gap: 1.25rem; font-size: 0.9rem; }
}

@media (max-width: 960px) {
	.bis-entete__barre { min-height: 72px; }
	.bis-marque__embleme img { width: 54px !important; }
	.bis-marque__nom { font-size: 0.875rem; gap: 12px; }

	.bis-hero {
		--g: min(140vw, 760px);
		--left: calc(30% - var(--g) / 2);
		--top: calc(var(--g) * -0.06);
		min-height: 0;
	}
	/* The gear, the sight and the photo stop exactly at the sight's horizontal arm. */
	.bis-hero::before,
	.bis-hero::after { clip-path: inset(0 0 calc(var(--g) * 0.4907) 0); }
	.bis-hero .bis-hero__photo { clip-path: inset(0 0 calc(var(--rp) - var(--g) * 0.0093) 0); }
	.bis-hero__reponse::before { left: 0; }
	.bis-hero__question {
		left: auto;
		right: var(--bis-gouttiere);
		bottom: auto;
		top: calc(var(--cy) - 0.68em);
		padding: 0 0 0 12px;
		background: #fff;
		font-size: 1.375rem;
		line-height: 1.2;
	}
	.bis-hero__contexte { display: none; }
	.bis-hero__reponse { margin: 0 auto; width: min(100% - 2 * var(--bis-gouttiere), 640px); padding: calc(var(--cy) + var(--g) * 0.01 + 24px) 0 56px; }

	.bis-quad { grid-template-rows: none; }
	/* Phones: the four photos form a square on top; the cross covers that square only (its height equals the width). */
	.bis-quad::after { inset: 0 0 auto 0; height: 0; padding-bottom: 100%; }
	.bis-quad__cellule { display: contents; }
	.bis-quad__photo { aspect-ratio: 1; }
	.bis-quad__cellule:nth-child(1) .bis-quad__photo { grid-column: 1; grid-row: 1; }
	.bis-quad__cellule:nth-child(2) .bis-quad__photo { grid-column: 2; grid-row: 1; }
	.bis-quad__cellule:nth-child(3) .bis-quad__photo { grid-column: 1; grid-row: 2; }
	.bis-quad__cellule:nth-child(4) .bis-quad__photo { grid-column: 2; grid-row: 2; }
	.bis-quad__cellule .bis-quad__texte { grid-column: 1 / -1; padding: 0 !important; max-width: none; }
	.bis-quad__cellule:nth-child(1) .bis-quad__texte { grid-row: 3; margin-top: 36px; }
	.bis-quad__cellule:nth-child(2) .bis-quad__texte { grid-row: 4; margin-top: 28px; }
	.bis-quad__cellule:nth-child(3) .bis-quad__texte { grid-row: 5; margin-top: 28px; }
	.bis-quad__cellule:nth-child(4) .bis-quad__texte { grid-row: 6; margin-top: 28px; }
	.bis-quart { display: inline-block; }

	.bis-champ.has-background { background: radial-gradient(150% 80% at 30% 22%, var(--bis-bleu-profond) 0%, #0a5cbb 55%, #1570c2 100%) !important; }
	.bis-mosaique__grille { grid-template-columns: 1fr 1fr; }
	.bis-mosaique__grille > li:nth-child(n) { grid-column: auto; grid-row: auto; }
	.bis-mosaique__grille > li:nth-child(1),
	.bis-mosaique__grille > li:nth-child(2) { grid-column: 1 / -1; }
	.bis-mosaique__grille > li:nth-child(1) .bis-mosaique__photo { aspect-ratio: 4 / 3; }

	/* Phones and tablets: no bottom bar; WhatsApp stays reachable as a round floating button, its text kept as the
	   accessible name. Calling lives in the header. */
	.bis-whatsapp { right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); }
	.bis-whatsapp .wp-block-button__link { width: 56px; padding: 0; gap: 0; border-radius: 50%; font-size: 0; }

	.bis-entete__barre { gap: 1rem; }
	.bis-marque { gap: 12px; min-width: 0; }
	.bis-marque__nom { max-width: 9.5em; }

	.bis-bandeau-service { grid-template-columns: minmax(0, 1fr); padding-bottom: 48px; }
	.bis-bref { grid-template-columns: minmax(0, 1fr); }
	.bis-bref > ul { grid-column: 1; grid-row: auto; }
	.bis-fiche-corps,
	.bis-article-corps { grid-template-columns: minmax(0, 1fr); }
	.bis-fiche-aside__colle { position: static; }
	/* Phones: the side column of an article gives way to the folded contents at the top of the text. */
	.bis-article-aside { display: none; }
	.bis-sommaire--repliable { display: block; margin-bottom: 1.5rem; padding: 16px 20px; border-radius: var(--bis-rayon); background: var(--bis-brume); }
	.bis-chiffres { margin-top: -40px !important; }
	.bis-chiffres__liste { grid-template-columns: minmax(0, 1fr); border-radius: 16px; padding: 20px 24px; }
	.bis-bandeau-service { padding-bottom: 88px; }
	.bis-carte-zones__ville text,
	.bis-carte-zones__atelier-titre { font-size: 5.2px; }
	.bis-carte-zones__etiquette-atelier { font-size: 4.2px; }
}

@media (max-width: 560px) {
	.bis-encart,
	.bis-cas,
	.bis-service-lien,
	.bis-fiche-section:last-child,
	.bis-a-retenir,
	.bis-service-lie,
	.bis-realisation__travaux,
	.bis-format > .wp-block-column:last-child,
	.bis-bref > ul { padding: 24px !important; }
	.bis-devis__formulaire .jet-form-builder { grid-template-columns: minmax(0, 1fr); }
	.bis-devis__formulaire .bis-photo__zone { padding: 72px 18px 18px; background-position: 18px 18px; }
	.bis-devis__formulaire .jet-form-builder > .field-type-text-field { grid-column: 1 / -1 !important; }
	.bis-hero__slogan { font-size: clamp(2.25rem, 11vw, 3rem); }
	.bis-hero__actions .wp-block-button { width: 100%; }
	.bis-hero__actions .wp-block-button__link { width: 100%; }
	.bis-parc { grid-template-columns: 1fr; }
	.bis-mosaique__grille { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
