/*
Theme Name: La Vaillès — Atelier de couture
Theme URI: https://atelier-la.vailles.fr
Author: Atelier La Vaillès
Description: Thème sur-mesure pour l'atelier de couture La Vaillès. Reprend à l'identique le design « artisanal premium » du site (base calicot, sections aubergine, accent laiton, piqûre signature) et rend tout le contenu éditable depuis l'administration WordPress : photos, réalisations, tarifs, FAQ, témoignages, articles de blog.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: la-vailles
Tags: business, portfolio, blog, custom-colors, custom-menu, custom-logo, featured-images, translation-ready, accessibility-ready

===============================================================================
 SOMMAIRE
===============================================================================
  01. Polices auto-hébergées
  02. Variables du design system
  03. Reset & base
  04. Typographie
  05. Mise en page (container, sections, grilles)
  06. Éléments signature (piqûre, ruban, eyebrow)
  07. Boutons
  08. En-tête & navigation
  09. Pied de page
  10. Héros (accueil + pages internes)
  11. Cartes (activité, échantillon, article)
  12. Galerie (filtres + avant/après)
  13. Process, FAQ, témoignages, localisation
  14. Bande CTA
  15. Configurateur & grille tarifaire
  16. Formulaires
  17. Journal (blog) & contenu long
  18. Éléments flottants (WhatsApp, cookies)
  19. Utilitaires & animations
  20. Impression
===============================================================================
*/

/* ==========================================================================
   01. POLICES AUTO-HÉBERGÉES
   Les 4 fichiers variables sont livrés avec le thème : aucune requête vers
   Google Fonts (RGPD) et aucune dépendance réseau au chargement.
   ========================================================================== */

@font-face {
	font-family: "Bodoni Moda";
	src: url("assets/fonts/bodoni-moda-variable.woff2") format("woff2");
	font-weight: 400 700;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "Bodoni Moda";
	src: url("assets/fonts/bodoni-moda-italic-variable.woff2") format("woff2");
	font-weight: 400 700;
	font-style: italic;
	font-display: swap;
}

@font-face {
	font-family: "Hanken Grotesk";
	src: url("assets/fonts/hanken-grotesk-variable.woff2") format("woff2");
	font-weight: 300 600;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "JetBrains Mono";
	src: url("assets/fonts/jetbrains-mono-variable.woff2") format("woff2");
	font-weight: 400 500;
	font-style: normal;
	font-display: swap;
}

/* ==========================================================================
   02. VARIABLES DU DESIGN SYSTEM
   Palette identique au site Next.js (webdesign/design.md — partie B).
   ========================================================================== */

:root {
	/* Couleurs */
	--lv-calico: #e8e2d5;        /* fond principal — toile écrue */
	--lv-paper: #fcfaf5;         /* cartes, surfaces surélevées */
	--lv-ink: #2a2230;           /* texte principal — noir aubergine */
	--lv-aubergine: #3d2b3f;     /* titres, sections foncées */
	--lv-aubergine-deep: #2e2030;/* sections premium */
	--lv-brass: #b08d3c;         /* accent UNIQUE — fil d'or */
	--lv-chalk: #9a9384;         /* texte secondaire — craie tailleur */
	--lv-whatsapp: #25d366;
	--lv-error: #8c2f2f;
	--lv-error-bg: #fbeaea;
	--lv-success: #2f6b45;

	/* Typographie */
	--lv-font-display: "Bodoni Moda", Didot, Georgia, serif;
	--lv-font-body: "Hanken Grotesk", system-ui, "Segoe UI", sans-serif;
	--lv-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;

	--lv-size-display-xl: clamp(3rem, 8vw, 5.5rem);
	--lv-size-display-lg: clamp(2.25rem, 5vw, 3.75rem);
	--lv-size-display-md: clamp(1.75rem, 3.5vw, 2.5rem);

	--lv-tracking-label: 0.18em;

	/* Structure */
	--lv-container: 1280px;
	--lv-gutter: 1.25rem;
	--lv-radius: 2px;
	--lv-radius-btn: 4px;
	--lv-section-y: 5rem;

	/* Ombres */
	--lv-shadow-sm: 0 1px 2px rgba(42, 34, 48, 0.08);
	--lv-shadow-md: 0 4px 14px rgba(42, 34, 48, 0.1);
	--lv-shadow-lg: 0 12px 32px rgba(42, 34, 48, 0.16);
}

@media (min-width: 640px) {
	:root {
		--lv-gutter: 2rem;
	}
}

@media (min-width: 1024px) {
	:root {
		--lv-gutter: 3rem;
		--lv-section-y: 7rem;
	}
}

/* ==========================================================================
   03. RESET & BASE
   ========================================================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	-webkit-text-size-adjust: 100%;
	scroll-padding-top: 6rem;
}

body {
	margin: 0;
	background-color: var(--lv-calico);
	color: var(--lv-ink);
	font-family: var(--lv-font-body);
	font-size: 1rem;
	line-height: 1.6;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

body.lv-menu-open {
	overflow: hidden;
}

img,
picture,
video,
iframe {
	max-width: 100%;
	height: auto;
	display: block;
}

figure {
	margin: 0;
}

a {
	color: inherit;
	text-decoration: none;
}

button {
	font: inherit;
	color: inherit;
	background: none;
	border: none;
	cursor: pointer;
}

ul,
ol {
	margin: 0;
	padding: 0;
	list-style: none;
}

table {
	border-collapse: collapse;
	width: 100%;
}

:focus-visible {
	outline: 2px solid var(--lv-brass);
	outline-offset: 3px;
}

::selection {
	background: var(--lv-brass);
	color: var(--lv-paper);
}

.lv-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
}

.lv-skip-link:focus {
	left: 1rem;
	top: 1rem;
	background: var(--lv-aubergine);
	color: var(--lv-calico);
	padding: 0.75rem 1.25rem;
	border-radius: var(--lv-radius-btn);
}

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	word-wrap: normal !important;
}

/* ==========================================================================
   04. TYPOGRAPHIE
   ========================================================================== */

h1,
h2,
h3,
h4 {
	font-family: var(--lv-font-display);
	font-weight: 400;
	margin: 0;
	line-height: 1.15;
	color: var(--lv-aubergine);
}

p {
	margin: 0;
}

.lv-display-xl {
	font-size: var(--lv-size-display-xl);
	line-height: 0.95;
	letter-spacing: -0.01em;
}

.lv-display-lg {
	font-size: var(--lv-size-display-lg);
	line-height: 1;
	letter-spacing: -0.01em;
}

.lv-display-md {
	font-size: var(--lv-size-display-md);
	line-height: 1.1;
}

.lv-accent {
	font-style: italic;
	color: var(--lv-brass);
}

/* ==========================================================================
   05. MISE EN PAGE
   ========================================================================== */

.lv-container {
	width: 100%;
	max-width: var(--lv-container);
	margin-inline: auto;
	padding-inline: var(--lv-gutter);
}

.lv-section {
	padding-block: var(--lv-section-y);
}

.lv-section--tight {
	padding-block: 3rem;
}

.lv-bg-calico {
	background-color: var(--lv-calico);
	color: var(--lv-ink);
}

.lv-bg-paper {
	background-color: var(--lv-paper);
	color: var(--lv-ink);
}

.lv-bg-aubergine {
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
}

.lv-bg-aubergine h1,
.lv-bg-aubergine h2,
.lv-bg-aubergine h3,
.lv-bg-aubergine h4 {
	color: var(--lv-calico);
}

.lv-grid {
	display: grid;
	gap: 2rem;
}

.lv-grid--2,
.lv-grid--3,
.lv-grid--4 {
	grid-template-columns: 1fr;
}

@media (min-width: 640px) {
	.lv-grid--3,
	.lv-grid--4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 768px) {
	.lv-grid--2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.lv-grid--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.lv-grid--4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* Découpe 5/7 pour les blocs « aparté + contenu » */
.lv-split {
	display: grid;
	gap: 3rem;
}

@media (min-width: 1024px) {
	.lv-split {
		grid-template-columns: 5fr 7fr;
		gap: 3.5rem;
	}

	.lv-split--half {
		grid-template-columns: 1fr 1fr;
		align-items: center;
	}
}

.lv-section-head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1.5rem;
}

.lv-heading {
	max-width: 42rem;
}

.lv-heading--center {
	margin-inline: auto;
	text-align: center;
}

.lv-heading__intro {
	margin-top: 1rem;
	font-size: 1.0625rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.7);
}

.lv-bg-aubergine .lv-heading__intro,
.lv-bg-aubergine-deep .lv-heading__intro {
	color: rgba(232, 226, 213, 0.8);
}

.lv-lead {
	font-size: 1.125rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.75);
}

.lv-muted {
	color: rgba(42, 34, 48, 0.7);
}

.lv-chalk {
	color: var(--lv-chalk);
	font-size: 0.875rem;
}

/* ==========================================================================
   06. ÉLÉMENTS SIGNATURE
   ========================================================================== */

/* La ligne de piqûre (point de bâti tailleur) */
.lv-stitch {
	height: 2px;
	width: 100%;
	background-image: linear-gradient(
		to right,
		var(--lv-chalk) 0,
		var(--lv-chalk) 8px,
		transparent 8px,
		transparent 16px
	);
	background-size: 16px 2px;
	background-repeat: repeat-x;
}

.lv-stitch--brass {
	background-image: linear-gradient(
		to right,
		var(--lv-brass) 0,
		var(--lv-brass) 8px,
		transparent 8px,
		transparent 16px
	);
}

.lv-stitch--faded {
	opacity: 0.6;
}

/* Soulignement « cousu » au survol des liens de navigation */
.lv-stitch-underline {
	position: relative;
}

.lv-stitch-underline::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -6px;
	height: 2px;
	width: 100%;
	background-image: linear-gradient(
		to right,
		var(--lv-brass) 0,
		var(--lv-brass) 5px,
		transparent 5px,
		transparent 10px
	);
	background-size: 10px 2px;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.35s ease;
}

.lv-stitch-underline:hover::after,
.lv-stitch-underline[aria-current="page"]::after,
a[aria-current="page"] .lv-stitch-underline::after,
.current-menu-item > a .lv-stitch-underline::after {
	transform: scaleX(1);
}

.lv-eyebrow {
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-brass);
	margin: 0;
}

.lv-eyebrow--icon {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
}

.lv-label {
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

.lv-icon {
	display: inline-block;
	flex-shrink: 0;
	vertical-align: middle;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.lv-icon--brass {
	color: var(--lv-brass);
}

.lv-icon--filled {
	fill: currentColor;
}

/* ==========================================================================
   07. BOUTONS
   ========================================================================== */

.lv-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: 44px;
	padding: 0.75rem 1.5rem;
	border-radius: var(--lv-radius-btn);
	border: 1px solid transparent;
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	text-align: center;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease,
		box-shadow 0.2s ease, transform 0.1s ease;
}

.lv-btn:active {
	transform: scale(0.98);
}

.lv-btn[disabled],
.lv-btn:disabled {
	opacity: 0.5;
	pointer-events: none;
}

.lv-btn--lg {
	padding: 1rem 2rem;
	font-size: 0.8125rem;
}

.lv-btn--block {
	width: 100%;
}

.lv-btn--primary {
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
	box-shadow: var(--lv-shadow-sm);
}

.lv-btn--primary:hover {
	background-color: var(--lv-aubergine-deep);
	box-shadow: var(--lv-shadow-md);
}

.lv-btn--outline {
	border-color: var(--lv-brass);
	color: var(--lv-ink);
}

.lv-btn--outline:hover {
	background-color: var(--lv-brass);
	color: var(--lv-paper);
}

.lv-btn--ghost {
	color: var(--lv-ink);
	padding-inline: 0.25rem;
}

.lv-btn--ghost:hover {
	color: var(--lv-brass);
}

.lv-btn--on-dark {
	border-color: rgba(232, 226, 213, 0.4);
	color: var(--lv-calico);
}

.lv-btn--on-dark:hover {
	background-color: var(--lv-calico);
	color: var(--lv-ink);
}

.lv-btn--brass {
	background-color: var(--lv-brass);
	color: var(--lv-ink);
}

.lv-btn--brass:hover {
	background-color: #9c7c34;
}

.lv-btn-row {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin-top: 2.25rem;
}

@media (min-width: 640px) {
	.lv-btn-row {
		flex-direction: row;
		flex-wrap: wrap;
	}
}

.lv-btn-row--center {
	align-items: center;
	justify-content: center;
}

.lv-arrow-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-aubergine);
	transition: gap 0.2s ease, color 0.2s ease;
}

.lv-arrow-link:hover {
	gap: 0.75rem;
	color: var(--lv-brass);
}

/* ==========================================================================
   08. EN-TÊTE & NAVIGATION
   ========================================================================== */

.lv-header {
	position: sticky;
	top: 0;
	z-index: 50;
	border-bottom: 1px solid transparent;
	background-color: rgba(232, 226, 213, 0.7);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	transition: background-color 0.3s ease, border-color 0.3s ease;
}

.lv-header.is-scrolled,
.lv-header.is-open {
	background-color: rgba(232, 226, 213, 0.95);
	border-bottom-color: rgba(154, 147, 132, 0.2);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
}

.lv-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 1rem;
}

.lv-logo {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	line-height: 1;
	flex-shrink: 0;
}

.lv-logo__name {
	font-family: var(--lv-font-display);
	font-size: 1.25rem;
	letter-spacing: -0.01em;
	color: var(--lv-aubergine);
	white-space: nowrap;
}

.lv-logo__name span {
	text-transform: uppercase;
}

.lv-logo__baseline,
.lv-logo__cities {
	font-family: var(--lv-font-mono);
	font-size: 0.625rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
	white-space: nowrap;
}

.lv-logo__baseline {
	margin-top: 0.25rem;
}

.lv-logo__cities {
	margin-top: 0.125rem;
}

.lv-logo__img img {
	max-height: 64px;
	width: auto;
}

@media (min-width: 640px) {
	.lv-logo__name {
		font-size: 1.5rem;
	}
}

.lv-nav {
	display: none;
	align-items: center;
	gap: 1.25rem;
}

.lv-nav a {
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: rgba(42, 34, 48, 0.7);
	white-space: nowrap;
	transition: color 0.2s ease;
}

.lv-nav a:hover,
.lv-nav .current-menu-item > a,
.lv-nav .current_page_item > a,
.lv-nav .current-menu-ancestor > a {
	color: var(--lv-aubergine);
}

.lv-header__cta {
	display: none;
	align-items: center;
	gap: 1rem;
	flex-shrink: 0;
}

.lv-header__phone {
	display: none;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: rgba(42, 34, 48, 0.7);
	white-space: nowrap;
	transition: color 0.2s ease;
}

.lv-header__phone:hover {
	color: var(--lv-brass);
}

.lv-burger {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 44px;
	width: 44px;
	flex-shrink: 0;
	color: var(--lv-aubergine);
}

.lv-burger .lv-icon--close,
.lv-burger[aria-expanded="true"] .lv-icon--open {
	display: none;
}

.lv-burger[aria-expanded="true"] .lv-icon--close {
	display: inline-block;
}

@media (min-width: 1280px) {
	.lv-nav,
	.lv-header__cta {
		display: flex;
	}

	.lv-burger {
		display: none;
	}
}

@media (min-width: 1536px) {
	.lv-nav {
		gap: 1.75rem;
	}

	.lv-header__phone {
		display: flex;
	}
}

/* Menu mobile plein écran */
.lv-mobile-menu {
	position: fixed;
	inset-inline: 0;
	z-index: 40;
	height: 0;
	overflow-y: auto;
	visibility: hidden;
	opacity: 0;
	background-color: var(--lv-calico);
	border-top: 1px solid rgba(154, 147, 132, 0.2);
	transition: opacity 0.3s ease, visibility 0.3s ease;
}

.lv-mobile-menu.is-open {
	visibility: visible;
	opacity: 1;
}

.lv-mobile-menu__inner {
	display: flex;
	flex-direction: column;
	padding-block: 1.5rem 3rem;
}

.lv-mobile-menu__inner > li > a {
	display: block;
	border-bottom: 1px solid rgba(154, 147, 132, 0.15);
	padding-block: 1rem;
	font-family: var(--lv-font-display);
	font-size: 1.5rem;
	color: var(--lv-aubergine);
	transition: color 0.2s ease;
}

.lv-mobile-menu__inner > li.current-menu-item > a,
.lv-mobile-menu__inner > li.current_page_item > a,
.lv-mobile-menu__inner > li > a:hover {
	color: var(--lv-brass);
}

.lv-mobile-menu__actions {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin-top: 2rem;
}

@media (min-width: 1280px) {
	.lv-mobile-menu {
		display: none;
	}
}

/* ==========================================================================
   09. PIED DE PAGE
   ========================================================================== */

.lv-footer {
	background-color: var(--lv-aubergine-deep);
	color: var(--lv-calico);
}

.lv-footer__grid {
	display: grid;
	gap: 2.5rem;
	padding-block: 4rem;
}

@media (min-width: 768px) {
	.lv-footer__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.lv-footer__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.lv-footer__brand {
	font-family: var(--lv-font-display);
	font-size: 1.5rem;
	color: var(--lv-calico);
}

.lv-footer__pitch {
	margin-top: 1rem;
	max-width: 20rem;
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(232, 226, 213, 0.7);
}

.lv-footer__socials {
	display: flex;
	gap: 0.75rem;
	margin-top: 1.5rem;
}

.lv-social {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 40px;
	width: 40px;
	border: 1px solid rgba(232, 226, 213, 0.25);
	border-radius: 999px;
	transition: border-color 0.2s ease, color 0.2s ease;
}

.lv-social:hover {
	border-color: var(--lv-brass);
	color: var(--lv-brass);
}

.lv-footer .lv-eyebrow {
	margin-bottom: 1.25rem;
}

.lv-footer__list li + li {
	margin-top: 0.75rem;
}

.lv-footer__list a {
	font-size: 0.875rem;
	color: rgba(232, 226, 213, 0.8);
	transition: color 0.2s ease;
}

.lv-footer__list a:hover {
	color: var(--lv-brass);
}

.lv-footer__nap {
	font-style: normal;
	font-size: 0.875rem;
	color: rgba(232, 226, 213, 0.8);
}

.lv-footer__nap p {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
}

.lv-footer__nap p + p {
	margin-top: 0.75rem;
}

.lv-footer__nap a:hover {
	color: var(--lv-brass);
}

.lv-footer__hours {
	margin-top: 1.25rem;
	font-size: 0.75rem;
	color: rgba(232, 226, 213, 0.6);
}

.lv-footer__hours div {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
}

.lv-footer__hours div + div {
	margin-top: 0.25rem;
}

.lv-footer__bottom {
	border-top: 1px solid rgba(232, 226, 213, 0.1);
}

.lv-footer__bottom-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding-block: 1.5rem;
	font-size: 0.75rem;
	color: rgba(232, 226, 213, 0.6);
}

.lv-footer__legal {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 1.25rem;
}

.lv-footer__legal a:hover {
	color: var(--lv-brass);
}

@media (min-width: 640px) {
	.lv-footer__bottom-inner {
		flex-direction: row;
	}
}

/* ==========================================================================
   10. HÉROS
   ========================================================================== */

.lv-hero {
	position: relative;
	overflow: hidden;
	background-color: var(--lv-calico);
}

.lv-hero__inner {
	display: grid;
	gap: 2rem;
	align-items: center;
	padding-block: 4rem;
}

@media (min-width: 1024px) {
	.lv-hero__inner {
		grid-template-columns: 5fr 7fr;
		gap: 3rem;
		padding-block: 6rem;
	}
}

.lv-hero__title {
	margin-top: 1.5rem;
	color: var(--lv-ink);
}

.lv-hero__title .lv-hero__line-2 {
	color: var(--lv-aubergine);
}

.lv-hero__intro {
	margin-top: 1.5rem;
	max-width: 28rem;
}

.lv-hero__media {
	position: relative;
}

.lv-frame {
	position: relative;
	overflow: hidden;
	border-top: 2px solid var(--lv-brass);
	background-color: rgba(154, 147, 132, 0.15);
}

.lv-frame img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lv-frame--4-5 {
	aspect-ratio: 4 / 5;
}

.lv-frame--4-3 {
	aspect-ratio: 4 / 3;
}

.lv-frame--3-2 {
	aspect-ratio: 3 / 2;
}

.lv-frame--16-9 {
	aspect-ratio: 16 / 9;
}

@media (min-width: 640px) and (max-width: 1023px) {
	.lv-hero__media .lv-frame--4-5 {
		aspect-ratio: 3 / 2;
	}
}

/* Étiquette flottante façon ticket d'atelier */
.lv-ticket {
	display: none;
	position: absolute;
	bottom: -1rem;
	left: 1rem;
	background-color: var(--lv-paper);
	padding: 0.75rem 1.25rem;
	box-shadow: var(--lv-shadow-lg);
}

.lv-ticket__title {
	font-family: var(--lv-font-display);
	font-size: 1.125rem;
	color: var(--lv-aubergine);
}

@media (min-width: 640px) {
	.lv-ticket {
		display: block;
	}
}

/* Héros de page interne */
.lv-page-hero__inner {
	display: grid;
	gap: 2.5rem;
	align-items: center;
	padding-block: 4rem;
}

@media (min-width: 1024px) {
	.lv-page-hero--with-media .lv-page-hero__inner {
		grid-template-columns: 1fr 1fr;
		padding-block: 6rem;
	}
}

.lv-page-hero__title {
	margin-top: 1rem;
}

.lv-page-hero__intro {
	margin-top: 1.5rem;
	max-width: 36rem;
}

.lv-page-hero--dark .lv-page-hero__intro,
.lv-page-hero--dark .lv-lead {
	color: rgba(232, 226, 213, 0.8);
}

.lv-page-hero--dark .lv-breadcrumb {
	color: rgba(232, 226, 213, 0.6);
}

.lv-breadcrumb {
	margin-bottom: 1.5rem;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

.lv-breadcrumb li {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.lv-breadcrumb a:hover {
	color: var(--lv-brass);
}

/* Bandeau de preuve sociale */
.lv-proof {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: center;
	gap: 1.5rem;
	padding-block: 2rem;
}

@media (min-width: 768px) {
	.lv-proof {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.lv-proof__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.25rem;
	text-align: center;
}

.lv-proof__value {
	display: flex;
	align-items: center;
	gap: 0.25rem;
	font-family: var(--lv-font-display);
	font-size: 1.5rem;
	color: var(--lv-brass);
}

.lv-proof__label {
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: rgba(232, 226, 213, 0.7);
}

/* ==========================================================================
   11. CARTES
   ========================================================================== */

.lv-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
}

.lv-card__media {
	position: relative;
	overflow: hidden;
	aspect-ratio: 4 / 3;
}

.lv-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.lv-card:hover .lv-card__media img {
	transform: scale(1.04);
}

.lv-card__ref {
	position: absolute;
	top: 0.75rem;
	right: 0.75rem;
	background-color: rgba(252, 250, 245, 0.9);
	padding: 0.25rem 0.75rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.05em;
	color: var(--lv-ink);
	box-shadow: var(--lv-shadow-sm);
}

.lv-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.75rem;
}

.lv-card__kicker {
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-brass);
}

.lv-card__title {
	margin-top: 0.5rem;
	font-family: var(--lv-font-display);
	font-size: 1.5rem;
	color: var(--lv-aubergine);
}

.lv-card__text {
	margin-top: 0.75rem;
	flex: 1;
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.7);
}

.lv-card__link {
	margin-top: 1.5rem;
}

/* Carte-échantillon (galerie) */
.lv-sample {
	position: relative;
	overflow: hidden;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
	height: 100%;
}

.lv-sample__media {
	position: relative;
	overflow: hidden;
	aspect-ratio: 4 / 5;
}

.lv-sample__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.lv-sample:hover .lv-sample__media img {
	transform: scale(1.04);
}

.lv-sample__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding: 1rem 1.25rem;
}

.lv-sample__title {
	font-family: var(--lv-font-display);
	font-size: 1.125rem;
	color: var(--lv-aubergine);
}

.lv-sample__cat {
	margin-top: 0.125rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

/* Bloc simple bordé (valeurs, étapes, démarche) */
.lv-panel {
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
	padding: 1.75rem;
	height: 100%;
}

.lv-panel--calico {
	background-color: var(--lv-calico);
	padding: 2rem;
}

.lv-panel__num {
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-brass);
}

.lv-panel__title {
	margin-top: 0.5rem;
	font-family: var(--lv-font-display);
	font-size: 1.375rem;
	color: var(--lv-aubergine);
}

.lv-panel__text {
	margin-top: 0.75rem;
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.7);
}

.lv-panel__note {
	margin-top: 0.75rem;
	font-family: var(--lv-font-mono);
	font-size: 0.875rem;
	color: var(--lv-brass);
}

/* ==========================================================================
   12. GALERIE
   ========================================================================== */

.lv-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin-bottom: 2.5rem;
}

.lv-filter {
	min-height: 44px;
	padding: 0.5rem 1.25rem;
	border-bottom: 2px solid transparent;
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
	transition: color 0.2s ease, border-color 0.2s ease;
}

.lv-filter:hover {
	color: var(--lv-aubergine);
}

.lv-filter[aria-selected="true"] {
	border-bottom-color: var(--lv-brass);
	color: var(--lv-aubergine);
}

.lv-gallery {
	display: grid;
	gap: 1.5rem;
	grid-template-columns: 1fr;
}

@media (min-width: 640px) {
	.lv-gallery {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.lv-gallery {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.lv-gallery__item[hidden] {
	display: none;
}

/* Slider avant / après */
.lv-ba {
	position: relative;
	aspect-ratio: 4 / 5;
	width: 100%;
	overflow: hidden;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
	touch-action: none;
	user-select: none;
}

.lv-ba img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lv-ba__before {
	position: absolute;
	inset: 0;
	clip-path: inset(0 50% 0 0);
}

.lv-ba__tag {
	position: absolute;
	top: 0.75rem;
	z-index: 10;
	padding: 0.25rem 0.625rem;
	font-family: var(--lv-font-mono);
	font-size: 0.625rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
}

.lv-ba__tag--after {
	right: 0.75rem;
	background-color: rgba(252, 250, 245, 0.9);
	color: var(--lv-ink);
}

.lv-ba__tag--before {
	left: 0.75rem;
	background-color: rgba(61, 43, 63, 0.9);
	color: var(--lv-calico);
}

.lv-ba__handle {
	position: absolute;
	inset-block: 0;
	z-index: 20;
	width: 2px;
	margin-left: -1px;
	left: 50%;
	background-color: var(--lv-brass);
}

.lv-ba__grip {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	display: flex;
	align-items: center;
	justify-content: center;
	height: 44px;
	width: 44px;
	border: 2px solid var(--lv-brass);
	border-radius: 999px;
	background-color: var(--lv-paper);
	color: var(--lv-aubergine);
	cursor: ew-resize;
	box-shadow: var(--lv-shadow-md);
}

.lv-ba__caption {
	margin-top: 0.75rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
}

/* ==========================================================================
   13. PROCESS, FAQ, TÉMOIGNAGES, LOCALISATION
   ========================================================================== */

.lv-process {
	position: relative;
}

.lv-process__tape {
	display: none;
	position: absolute;
	left: 0;
	right: 0;
	top: 1.5rem;
	height: 2rem;
	background: var(--lv-brass);
}

.lv-process__list {
	display: grid;
	gap: 2.5rem;
	grid-template-columns: 1fr;
}

@media (min-width: 640px) {
	.lv-process__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 768px) {
	.lv-process__tape {
		display: block;
	}

	.lv-process__list--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.lv-process__list--4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.lv-process__step {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.lv-process__num {
	position: relative;
	z-index: 10;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 3.5rem;
	width: 3.5rem;
	border: 4px solid var(--lv-calico);
	border-radius: 999px;
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
	font-family: var(--lv-font-mono);
	font-size: 0.875rem;
}

.lv-bg-paper .lv-process__num {
	border-color: var(--lv-paper);
}

.lv-process__title {
	margin-top: 1.5rem;
	font-family: var(--lv-font-display);
	font-size: 1.375rem;
	color: var(--lv-aubergine);
}

.lv-process__text {
	margin-top: 0.5rem;
	max-width: 18rem;
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.65);
}

/* FAQ — un filet entre les questions, pas après la dernière. */
.lv-faq__item + .lv-faq__item {
	border-top: 1px solid rgba(154, 147, 132, 0.25);
}

.lv-faq__question {
	display: flex;
	width: 100%;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 1.25rem;
	text-align: left;
	color: var(--lv-aubergine);
	font-family: var(--lv-font-body);
	font-size: 1rem;
	font-weight: 500;
	transition: color 0.2s ease;
}

.lv-faq__question:hover {
	color: var(--lv-brass);
}

.lv-faq__sign {
	flex-shrink: 0;
	color: var(--lv-brass);
}

.lv-faq__question[aria-expanded="true"] .lv-icon--plus,
.lv-faq__question[aria-expanded="false"] .lv-icon--minus {
	display: none;
}

.lv-faq__answer {
	display: grid;
	grid-template-rows: 0fr;
	opacity: 0;
	transition: grid-template-rows 0.3s ease-out, opacity 0.3s ease-out,
		padding-bottom 0.3s ease-out;
}

.lv-faq__answer > div {
	overflow: hidden;
}

.lv-faq__item.is-open .lv-faq__answer {
	grid-template-rows: 1fr;
	opacity: 1;
	padding-bottom: 1.25rem;
}

.lv-faq__answer p {
	max-width: 68ch;
	font-size: 0.9375rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.7);
}

@media (min-width: 640px) {
	.lv-faq__question {
		font-size: 1.125rem;
	}

	.lv-faq__answer p {
		font-size: 1rem;
	}
}

/* Témoignages */
.lv-quote {
	display: flex;
	flex-direction: column;
	height: 100%;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
	padding: 1.75rem;
}

.lv-quote--dark {
	background-color: var(--lv-aubergine-deep);
	color: var(--lv-calico);
}

.lv-quote__text {
	margin-top: 1rem;
	flex: 1;
	font-family: var(--lv-font-display);
	font-size: 1.125rem;
	font-style: italic;
	line-height: 1.7;
	color: var(--lv-aubergine);
}

.lv-quote--dark .lv-quote__text {
	color: rgba(232, 226, 213, 0.9);
}

.lv-quote__meta {
	margin-top: 1.5rem;
}

.lv-quote__author {
	margin-top: 0.5rem;
	font-weight: 500;
}

.lv-quote__context {
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

.lv-quote--dark .lv-quote__context {
	color: rgba(232, 226, 213, 0.6);
}

.lv-stars {
	display: flex;
	align-items: center;
	gap: 0.125rem;
	color: var(--lv-brass);
}

.lv-stars .lv-star--off {
	color: rgba(154, 147, 132, 0.4);
	fill: none;
}

.lv-stars .lv-star--on {
	fill: currentColor;
}

/* Localisation */
.lv-location {
	display: grid;
	gap: 2.5rem;
}

@media (min-width: 1024px) {
	.lv-location {
		grid-template-columns: 1fr 1fr;
		align-items: center;
	}
}

.lv-location__list {
	margin-top: 2rem;
}

.lv-location__row {
	display: flex;
	gap: 0.75rem;
}

.lv-location__row + .lv-location__row {
	margin-top: 1.25rem;
}

.lv-location__row dt {
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

.lv-location__row dd {
	margin: 0.25rem 0 0;
	color: var(--lv-ink);
}

.lv-hours-row {
	display: flex;
	justify-content: space-between;
	gap: 1.5rem;
}

.lv-hours-row span:first-child {
	color: rgba(42, 34, 48, 0.7);
}

.lv-map {
	position: relative;
	width: 100%;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-calico);
}

.lv-map__placeholder {
	pointer-events: none;
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	color: var(--lv-chalk);
}

.lv-map iframe {
	position: relative;
	height: 100%;
	width: 100%;
	border: 0;
	filter: grayscale(0.3);
}

@media (min-width: 1024px) {
	.lv-map {
		aspect-ratio: auto;
		height: 460px;
	}
}

/* ==========================================================================
   14. BANDE CTA
   ========================================================================== */

.lv-cta {
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
}

.lv-cta__inner {
	padding-block: 5rem;
	text-align: center;
}

.lv-cta__title {
	margin-inline: auto;
	max-width: 48rem;
	color: var(--lv-calico);
}

.lv-cta__intro {
	margin: 1.25rem auto 0;
	max-width: 36rem;
	color: rgba(232, 226, 213, 0.75);
}

.lv-cta .lv-eyebrow {
	margin-bottom: 1rem;
}

/* ==========================================================================
   15. CONFIGURATEUR & GRILLE TARIFAIRE
   ========================================================================== */

.lv-configurator {
	display: grid;
	gap: 2rem;
}

@media (min-width: 1024px) {
	.lv-configurator {
		grid-template-columns: 2fr 1fr;
		align-items: start;
	}
}

.lv-conf-group + .lv-conf-group {
	margin-top: 2rem;
}

.lv-conf-group__title {
	margin-bottom: 0.75rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-brass);
}

.lv-conf-rows {
	display: grid;
	gap: 0.75rem;
	grid-template-columns: 1fr;
}

@media (min-width: 640px) {
	.lv-conf-rows {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.lv-conf-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	border: 1px solid rgba(154, 147, 132, 0.3);
	background-color: var(--lv-paper);
	padding: 1rem;
}

.lv-conf-row__label {
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--lv-ink);
}

.lv-conf-row__detail {
	margin-top: 0.125rem;
	font-size: 0.75rem;
	color: var(--lv-chalk);
}

.lv-conf-row__price {
	margin-top: 0.25rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	color: var(--lv-brass);
}

.lv-stepper {
	display: flex;
	align-items: center;
	gap: 0.25rem;
	flex-shrink: 0;
}

.lv-stepper button {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 36px;
	width: 36px;
	border: 1px solid rgba(154, 147, 132, 0.4);
	color: var(--lv-ink);
	transition: border-color 0.2s ease, color 0.2s ease;
}

.lv-stepper button:hover:not(:disabled) {
	border-color: var(--lv-brass);
	color: var(--lv-brass);
}

.lv-stepper button:disabled {
	opacity: 0.3;
	cursor: default;
}

.lv-stepper output {
	width: 1.75rem;
	text-align: center;
	font-family: var(--lv-font-mono);
	font-size: 0.875rem;
	font-variant-numeric: tabular-nums;
}

.lv-quote-panel {
	position: sticky;
	top: 6rem;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
	padding: 1.5rem;
}

.lv-quote-panel__list {
	margin-top: 1.25rem;
	font-size: 0.875rem;
}

.lv-quote-panel__list li {
	display: flex;
	justify-content: space-between;
	gap: 0.75rem;
}

.lv-quote-panel__list li + li {
	margin-top: 0.5rem;
}

.lv-quote-panel__empty {
	margin-top: 1.25rem;
	font-size: 0.875rem;
	color: rgba(232, 226, 213, 0.6);
}

.lv-quote-panel__total {
	margin-top: 1.5rem;
	border-top: 1px solid rgba(232, 226, 213, 0.2);
	padding-top: 1rem;
	display: flex;
	align-items: baseline;
	justify-content: space-between;
}

.lv-quote-panel__amount {
	font-family: var(--lv-font-display);
	font-size: 1.5rem;
	color: var(--lv-brass);
}

.lv-quote-panel__note {
	margin-top: 1rem;
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	font-size: 0.75rem;
	line-height: 1.6;
	color: rgba(232, 226, 213, 0.6);
}

/* Grille tarifaire */
.lv-table-wrap {
	overflow-x: auto;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
}

.lv-table {
	min-width: 520px;
	text-align: left;
}

.lv-table thead tr {
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
}

.lv-table th {
	padding: 1rem 1.25rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
}

.lv-table td {
	padding: 1rem 1.25rem;
	border-bottom: 1px solid rgba(154, 147, 132, 0.15);
	vertical-align: top;
}

.lv-table tbody tr:last-child td {
	border-bottom: 0;
}

.lv-table__name {
	font-weight: 500;
	color: var(--lv-ink);
}

.lv-table__detail {
	display: block;
	margin-top: 0.125rem;
	font-size: 0.75rem;
	color: var(--lv-chalk);
}

.lv-table__price {
	text-align: right;
	white-space: nowrap;
	font-family: var(--lv-font-mono);
	font-size: 0.875rem;
	color: var(--lv-brass);
}

/* ==========================================================================
   16. FORMULAIRES
   ========================================================================== */

.lv-form-card {
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-calico);
	padding: 1.5rem;
}

.lv-bg-calico .lv-form-card {
	background-color: var(--lv-paper);
}

@media (min-width: 640px) {
	.lv-form-card {
		padding: 2rem;
	}
}

.lv-form-card__title {
	margin-bottom: 1.5rem;
	font-family: var(--lv-font-display);
	font-size: 1.5rem;
	color: var(--lv-aubergine);
}

.lv-form > * + * {
	margin-top: 1.25rem;
}

.lv-field-row {
	display: grid;
	gap: 1.25rem;
	grid-template-columns: 1fr;
}

@media (min-width: 640px) {
	.lv-field-row {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.lv-label {
	display: block;
	margin-bottom: 0.375rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

.lv-label .lv-required {
	color: var(--lv-brass);
}

.lv-input,
.lv-textarea,
.lv-select {
	width: 100%;
	min-height: 44px;
	padding: 0.6875rem 0.875rem;
	border: 1px solid rgba(154, 147, 132, 0.45);
	border-radius: var(--lv-radius);
	background-color: var(--lv-paper);
	color: var(--lv-ink);
	font-family: var(--lv-font-body);
	font-size: 1rem;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.lv-input:focus,
.lv-textarea:focus,
.lv-select:focus {
	outline: none;
	border-color: var(--lv-brass);
	box-shadow: 0 0 0 3px rgba(176, 141, 60, 0.15);
}

.lv-textarea {
	min-height: 8rem;
	resize: vertical;
	line-height: 1.6;
}

.lv-select {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9384' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.75rem center;
	background-size: 1.125rem;
	padding-right: 2.5rem;
}

.lv-file {
	width: 100%;
	padding: 0.75rem;
	border: 1px dashed rgba(154, 147, 132, 0.6);
	border-radius: var(--lv-radius);
	background-color: var(--lv-paper);
	font-size: 0.875rem;
}

.lv-consent {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
}

.lv-consent input[type="checkbox"] {
	margin-top: 0.25rem;
	height: 1.25rem;
	width: 1.25rem;
	flex-shrink: 0;
	accent-color: var(--lv-aubergine);
}

.lv-consent label {
	font-size: 0.875rem;
	line-height: 1.6;
	color: rgba(42, 34, 48, 0.7);
}

.lv-consent a,
.lv-inline-link {
	color: var(--lv-brass);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.lv-honeypot {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.lv-alert {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	padding: 0.875rem 1rem;
	border-radius: var(--lv-radius);
	font-size: 0.875rem;
	line-height: 1.6;
}

.lv-alert--error {
	border: 1px solid rgba(140, 47, 47, 0.35);
	background-color: var(--lv-error-bg);
	color: var(--lv-error);
}

.lv-form-success {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1rem;
	border: 1px solid rgba(176, 141, 60, 0.4);
	border-radius: var(--lv-radius);
	background-color: var(--lv-paper);
	padding: 2.5rem;
	text-align: center;
}

.lv-form-success h3 {
	font-size: 1.5rem;
}

.lv-form-success p {
	max-width: 24rem;
	color: rgba(42, 34, 48, 0.7);
}

.lv-form-hint {
	font-size: 0.75rem;
	color: var(--lv-chalk);
}

/* Résultat d'estimation IA */
.lv-estimation-result {
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
	padding: 1.75rem;
}

.lv-estimation-result__range {
	font-family: var(--lv-font-display);
	font-size: 2rem;
	color: var(--lv-brass);
}

.lv-estimation-result ul {
	list-style: disc;
	padding-left: 1.25rem;
	margin-top: 0.75rem;
	color: rgba(42, 34, 48, 0.75);
	font-size: 0.9375rem;
}

.lv-estimation-result li + li {
	margin-top: 0.25rem;
}

/* ==========================================================================
   17. JOURNAL (BLOG) & CONTENU LONG
   ========================================================================== */

.lv-posts {
	display: grid;
	gap: 2rem;
	grid-template-columns: 1fr;
}

@media (min-width: 640px) {
	.lv-posts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.lv-posts {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.lv-post-card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
}

/* Toute la carte devient cliquable, sans imbriquer le contenu dans le lien. */
.lv-post-card__link::after {
	content: "";
	position: absolute;
	inset: 0;
}

.lv-post-card__media {
	position: relative;
	overflow: hidden;
	aspect-ratio: 3 / 2;
}

.lv-post-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.lv-post-card:hover .lv-post-card__media img {
	transform: scale(1.04);
}

.lv-post-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.5rem;
}

.lv-post-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-brass);
}

.lv-post-card__title {
	margin-top: 0.625rem;
	font-family: var(--lv-font-display);
	font-size: 1.375rem;
	line-height: 1.25;
	color: var(--lv-aubergine);
	transition: color 0.2s ease;
}

.lv-post-card:hover .lv-post-card__title,
.lv-post-card:focus-within .lv-post-card__title {
	color: var(--lv-brass);
}

.lv-post-card__excerpt {
	margin-top: 0.75rem;
	flex: 1;
	font-size: 0.9375rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.7);
}

.lv-post-card__more {
	margin-top: 1.25rem;
}

.lv-post-hero {
	max-width: 68ch;
	margin-inline: auto;
}

.lv-post-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

.lv-post-meta a:hover {
	color: var(--lv-brass);
}

/* Contenu éditorial riche (articles, pages, mentions légales) */
.lv-prose {
	max-width: 68ch;
	color: rgba(42, 34, 48, 0.85);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.lv-prose > * + * {
	margin-top: 1.25rem;
}

.lv-prose h2 {
	margin-top: 2.5rem;
	margin-bottom: 0.5rem;
	font-size: 1.75rem;
	color: var(--lv-aubergine);
}

.lv-prose h3 {
	margin-top: 2rem;
	margin-bottom: 0.25rem;
	font-size: 1.375rem;
	color: var(--lv-aubergine);
}

.lv-prose h4 {
	margin-top: 1.5rem;
	font-size: 1.125rem;
	color: var(--lv-aubergine);
}

.lv-prose a {
	color: var(--lv-brass);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.lv-prose strong {
	font-weight: 600;
	color: var(--lv-ink);
}

.lv-prose ul,
.lv-prose ol {
	padding-left: 1.5rem;
}

.lv-prose ul {
	list-style: disc;
}

.lv-prose ol {
	list-style: decimal;
}

.lv-prose li + li {
	margin-top: 0.375rem;
}

.lv-prose img,
.lv-prose .wp-block-image {
	margin-block: 2rem;
}

.lv-prose img {
	border-top: 2px solid var(--lv-brass);
}

.lv-prose figcaption,
.lv-prose .wp-element-caption {
	margin-top: 0.5rem;
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
	text-align: center;
}

.lv-prose blockquote {
	margin: 2rem 0;
	border-left: 2px solid var(--lv-brass);
	padding-left: 1.5rem;
	font-family: var(--lv-font-display);
	font-size: 1.25rem;
	font-style: italic;
	color: var(--lv-aubergine);
}

.lv-prose hr,
.lv-prose .wp-block-separator {
	border: 0;
	height: 2px;
	margin-block: 2.5rem;
	background-image: linear-gradient(
		to right,
		var(--lv-chalk) 0,
		var(--lv-chalk) 8px,
		transparent 8px,
		transparent 16px
	);
	background-size: 16px 2px;
	background-repeat: repeat-x;
	opacity: 0.6;
}

.lv-prose table {
	font-size: 0.9375rem;
}

.lv-prose th,
.lv-prose td {
	border: 1px solid rgba(154, 147, 132, 0.3);
	padding: 0.625rem 0.875rem;
	text-align: left;
}

.lv-prose th {
	background-color: rgba(154, 147, 132, 0.12);
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.lv-prose code {
	font-family: var(--lv-font-mono);
	font-size: 0.875em;
	background-color: rgba(154, 147, 132, 0.15);
	padding: 0.1em 0.35em;
}

.lv-prose .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.75rem 1.5rem;
	border-radius: var(--lv-radius-btn);
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	text-decoration: none;
}

/* Pagination */
.lv-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 3.5rem;
}

.lv-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	min-width: 44px;
	padding-inline: 0.75rem;
	border: 1px solid rgba(154, 147, 132, 0.35);
	font-family: var(--lv-font-mono);
	font-size: 0.8125rem;
	color: var(--lv-ink);
	transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.lv-pagination .page-numbers:hover {
	border-color: var(--lv-brass);
	color: var(--lv-brass);
}

.lv-pagination .page-numbers.current {
	background-color: var(--lv-aubergine);
	border-color: var(--lv-aubergine);
	color: var(--lv-calico);
}

/* Navigation article précédent / suivant */
.lv-post-nav {
	display: grid;
	gap: 1rem;
	margin-top: 3rem;
}

@media (min-width: 640px) {
	.lv-post-nav {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.lv-post-nav a {
	display: block;
	border-top: 2px solid var(--lv-brass);
	background-color: var(--lv-paper);
	padding: 1.25rem;
}

.lv-post-nav a:hover .lv-post-nav__title {
	color: var(--lv-brass);
}

.lv-post-nav__title {
	margin-top: 0.375rem;
	font-family: var(--lv-font-display);
	font-size: 1.125rem;
	color: var(--lv-aubergine);
	transition: color 0.2s ease;
}

.lv-post-nav--next {
	text-align: right;
}

/* Recherche */
.lv-searchform {
	display: flex;
	gap: 0.5rem;
	max-width: 28rem;
}

/* Commentaires */
.lv-comments {
	margin-top: 3.5rem;
	max-width: 68ch;
}

.lv-comments__list li {
	border-top: 1px solid rgba(154, 147, 132, 0.25);
	padding-block: 1.5rem;
}

.lv-comments__list .children {
	padding-left: 1.5rem;
}

.lv-comments .comment-author {
	font-weight: 500;
}

.lv-comments .comment-meta {
	font-family: var(--lv-font-mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	color: var(--lv-chalk);
}

.lv-comments .comment-respond input[type="text"],
.lv-comments .comment-respond input[type="email"],
.lv-comments .comment-respond input[type="url"],
.lv-comments .comment-respond textarea {
	width: 100%;
	min-height: 44px;
	padding: 0.6875rem 0.875rem;
	border: 1px solid rgba(154, 147, 132, 0.45);
	background-color: var(--lv-paper);
	font-family: var(--lv-font-body);
	font-size: 1rem;
}

.lv-comments .comment-respond .submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.75rem 1.5rem;
	border: 0;
	border-radius: var(--lv-radius-btn);
	background-color: var(--lv-aubergine);
	color: var(--lv-calico);
	font-family: var(--lv-font-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: var(--lv-tracking-label);
	cursor: pointer;
}

/* ==========================================================================
   18. ÉLÉMENTS FLOTTANTS
   ========================================================================== */

.lv-whatsapp {
	position: fixed;
	bottom: 1.25rem;
	right: 1.25rem;
	z-index: 40;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 56px;
	width: 56px;
	border-radius: 999px;
	background-color: var(--lv-whatsapp);
	color: #fff;
	box-shadow: var(--lv-shadow-lg);
	opacity: 0;
	transform: translateY(1rem);
	transition: opacity 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}

.lv-whatsapp.is-shown {
	opacity: 1;
	transform: translateY(0);
}

.lv-whatsapp:hover {
	transform: scale(1.05);
}

.lv-whatsapp__ping {
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: 999px;
	background-color: rgba(37, 211, 102, 0.4);
	animation: lv-ping 2.5s cubic-bezier(0, 0, 0.2, 1) infinite;
}

@keyframes lv-ping {
	75%,
	100% {
		transform: scale(1.8);
		opacity: 0;
	}
}

@media (min-width: 640px) {
	.lv-whatsapp {
		bottom: 1.5rem;
		right: 1.5rem;
	}
}

.lv-cookie {
	position: fixed;
	inset-inline: 0.75rem;
	bottom: 0.75rem;
	z-index: 50;
	margin-inline: auto;
	max-width: 42rem;
	border: 1px solid rgba(154, 147, 132, 0.3);
	border-radius: var(--lv-radius);
	background-color: var(--lv-paper);
	padding: 1.25rem;
	box-shadow: var(--lv-shadow-lg);
}

.lv-cookie[hidden] {
	display: none;
}

.lv-cookie__inner {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.lv-cookie__text {
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(42, 34, 48, 0.8);
}

.lv-cookie__actions {
	display: flex;
	gap: 0.5rem;
	flex-shrink: 0;
}

@media (min-width: 640px) {
	.lv-cookie {
		inset-inline: 1.5rem;
	}

	.lv-cookie__inner {
		flex-direction: row;
		align-items: center;
	}
}

/* ==========================================================================
   19. UTILITAIRES & ANIMATIONS
   ========================================================================== */

.lv-reveal {
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.lv-reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.lv-mt-1 { margin-top: 0.5rem; }
.lv-mt-2 { margin-top: 1rem; }
.lv-mt-3 { margin-top: 1.5rem; }
.lv-mt-4 { margin-top: 2rem; }
.lv-mt-6 { margin-top: 3rem; }
.lv-mb-2 { margin-bottom: 1rem; }
.lv-mb-4 { margin-bottom: 2rem; }
.lv-mb-6 { margin-bottom: 3rem; }
.lv-mb-8 { margin-bottom: 3.5rem; }

.lv-stack-center {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1rem;
	text-align: center;
}

.lv-empty {
	padding-block: 4rem;
	text-align: center;
	color: var(--lv-chalk);
}

.lv-admin-note {
	margin-top: 1.5rem;
	max-width: 42rem;
	border-left: 2px solid var(--lv-brass);
	padding-left: 1rem;
	font-size: 0.875rem;
	color: var(--lv-chalk);
}

/* WordPress core */
.alignwide {
	max-width: 1100px;
	margin-inline: auto;
}

.alignfull {
	max-width: none;
}

.aligncenter {
	margin-inline: auto;
}

.wp-caption {
	max-width: 100%;
}

.sticky .lv-post-card__meta::after {
	content: "· À la une";
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	.lv-reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.lv-stitch-underline::after,
	.lv-card__media img,
	.lv-sample__media img,
	.lv-post-card__media img {
		transition: none;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
	}
}

/* Sans JavaScript : le contenu animé reste visible */
.no-js .lv-reveal {
	opacity: 1;
	transform: none;
}

/* ==========================================================================
   20. IMPRESSION
   ========================================================================== */

@media print {
	.lv-header,
	.lv-footer,
	.lv-whatsapp,
	.lv-cookie,
	.lv-cta,
	.lv-mobile-menu {
		display: none !important;
	}

	body {
		background: #fff;
		color: #000;
	}
}
