/* ==========================================================================
   1. Racine du bloc
   ========================================================================== */

/* Les couleurs vivent sur `:root` : la boutique est rendue hors de `.louv`,
   la grille des catégories WooCommerce doit donc y avoir accès. La gouttière
   suit la même logique : les blocs d'une page ne sont pas tous des sections. */
:root {
	--louv-forest: #263d32;
	--louv-forest-light: #39513e;
	--louv-paper: #f7f3ec;
	--louv-linen: #e8e0d3;
	--louv-line: #d9d5ca;
	--louv-clay: #a65e46;
	--louv-muted: #69705f;
	--louv-ink: #292d29;
	--louv-gutter: clamp(20px, 4vw, 40px);
}

/* La configuration historique de la base peut encore publier la palette bleue
   de Louv pour les liens. Ce sélecteur plus précis garde les réglages locaux
   des boutons, menus et panneaux, mais verrouille la palette générale du site. */
html:root {
	--theme-link-initial-color: var(--louv-forest);
	--theme-link-hover-color: var(--louv-forest-light);
	--theme-link-active-color: var(--louv-forest-light);
}

.louv__pawprints {
	position: fixed;
	inset: 0;
	z-index: 2147483000;
	overflow: hidden;
	background: rgb(247 243 236 / 12%);
	pointer-events: none;
	transition: opacity 5s ease;
}
.louv__pawprints--fading {
	opacity: 0;
}
.louv__pawprint {
	position: absolute;
	width: clamp(42px, 8vw, 96px);
	height: auto;
	opacity: 0;
	filter: drop-shadow(0 2px 4px rgb(38 61 50 / 18%));
	animation: louv-pawprint-appear 450ms ease-out both;
	animation-delay: calc(var(--louv-paw-index) * 500ms);
}
@keyframes louv-pawprint-appear {
	from { opacity: 0; }
	to { opacity: .8; }
}
@media (prefers-reduced-motion: reduce) {
	.louv__pawprint {
		animation-duration: 1ms;
	}
	.louv__pawprints {
		transition-duration: 1ms;
	}
}
.louv__search-empty {
	box-sizing: border-box;
	width: min(760px, calc(100% - 2 * var(--louv-gutter)));
	margin: clamp(36px, 7vw, 84px) auto;
	padding: clamp(28px, 6vw, 64px);
	border: 1px solid var(--louv-line);
	border-radius: 4px 42px 4px 42px;
	background: radial-gradient(ellipse at 100% 0, #e8e0d3 0, transparent 48%), var(--louv-paper);
	color: var(--louv-ink);
	text-align: center;
}
.louv__search-results {
	box-sizing: border-box;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(240px, 420px);
	align-items: center;
	gap: 20px 36px;
	width: min(1180px, calc(100% - 2 * var(--louv-gutter)));
	margin: 30px auto;
	padding: 22px clamp(20px, 4vw, 40px);
	border: 1px solid var(--louv-line);
	border-radius: 3px 24px 3px 24px;
	background: var(--louv-paper);
}
.louv__search-results-count {
	margin: 0;
	color: var(--louv-forest);
	font-family: Georgia, serif;
	font-size: clamp(20px, 3vw, 28px);
}
.louv__search-results-form {
	width: 100%;
}
@media (max-width: 640px) {
	.louv__search-results {
		grid-template-columns: minmax(0, 1fr);
		gap: 12px;
		margin: 20px auto;
	}
}
.louv__search-empty h1 {
	max-width: 620px;
	margin: 8px auto 16px;
	color: var(--louv-forest);
	font-family: Georgia, serif;
	font-size: clamp(30px, 5vw, 48px);
	font-weight: 500;
	line-height: 1.12;
}
.louv__search-empty h1 strong {
	color: var(--louv-clay);
	font-weight: 500;
}
.louv__search-empty > p:not(.louv__eyebrow, .louv__search-suggestions-title) {
	max-width: 520px;
	margin: 0 auto 24px;
	line-height: 1.7;
}
.louv__search-empty-form {
	max-width: 520px;
	margin: 0 auto 30px;
}
.louv__search-suggestions-title {
	margin: 0 0 12px;
	color: var(--louv-muted);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}
.louv__search-suggestions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.louv__search-suggestions a {
	display: inline-block;
	padding: 9px 15px;
	border: 1px solid var(--louv-line);
	border-radius: 999px;
	background: #fff;
	color: var(--louv-forest);
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.louv__search-suggestions a:hover,
.louv__search-suggestions a:focus-visible {
	border-color: var(--louv-forest);
	background: var(--louv-forest);
	color: #fff;
}
.site-main {
	padding-bottom: 20px;
}
.louv__announcement {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	position: sticky;
	top: var(--louv-announcement-sticky-top, 0px);
	z-index: 30;
	width: 100%;
	height: 40px;
	padding: 2px 12px;
	background: var(--louv-forest);
	color: #fff;
	font-size: 12px;
	line-height: 1.4;
}
.louv__announcement-placeholder {
	box-sizing: border-box;
	flex: 0 0 auto;
	width: 100%;
	height: 40px;
}
.louv__announcement-content {
	position: relative;
	height: 2em;
	width: min(400px, calc(100% - 64px));
	overflow: hidden;
	text-align: center;
}
@media (max-width: 689.98px) {
	.louv__announcement-content {
		height: 2.5rem;
	}
}
.louv__announcement-slide {
	position: absolute;
	display: flex;
	align-items: center;
	justify-content: center;
	inset: 0;
	margin: 0;
	opacity: 0;
	transform: translateX(16px);
	transition: opacity .45s ease, transform .45s ease;
	pointer-events: none;
}
.louv__announcement-slide.is-active {
	opacity: 1;
	transform: translateX(0);
	pointer-events: auto;
}
.louv__announcement a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 2px;
}
.louv__announcement-slide--social {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
}
.louv__announcement-slide--social a {
	display: inline-flex;
	text-decoration: none;
}
.louv__social-icon {
	box-sizing: content-box;
	flex: 0 0 auto;
	padding: 4px;
	border-radius: 50%;
	background: #fff;
	vertical-align: middle;
}
.louv__announcement-arrow {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 40px;
	padding: 0;
	border: 0;
	background: transparent;
	color: inherit;
	font: inherit;
	font-size: 40px;
	font-weight: 100;
	line-height: 60px;
	cursor: pointer;
	margin-top: -2px;
}
.louv__announcement-arrow-icon {
	line-height: 1;
	margin-top: -7px;
}
.louv__announcement-arrow:focus-visible,
.louv__announcement a:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
}
.louv__yarn-notes {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	width: min(1180px, calc(100% - 2 * var(--louv-gutter)));
	margin: 48px auto 32px;
}
.louv__yarn-note {
	margin: 0;
	padding: clamp(22px, 3vw, 34px);
	border-radius: 3px 28px 3px 28px;
	font-family: Georgia, serif;
	font-size: clamp(16px, 1.5vw, 19px);
	line-height: 1.7;
}
.louv__yarn-note--skein {
	background: #e8e0d3;
	color: #263d32;
}
.louv__yarn-note--color {
	background: #e5e8df;
	color: #39483d;
}
@media (max-width: 640px) {
	.louv__yarn-notes {
		grid-template-columns: 1fr;
		gap: 12px;
	}
}
.louv {
	color: var(--louv-ink);
	background: var(--louv-paper);
	font-family: system-ui, sans-serif;
}
.louv h1,
.louv h2,
.louv h3 {
	font-family: Georgia, serif;
	font-weight: 400;
	color: var(--louv-forest);
	letter-spacing: -.035em;
}
.louv h1 {
	font-size: clamp(46px, 5.5vw, 82px);
	line-height: 1.06;
	margin: 20px 0 28px;
}
.louv h2 {
	font-size: clamp(34px, 3.5vw, 52px);
	line-height: 1.15;
}
.louv h3 {
	font-size: 29px;
}
.louv p {
	line-height: 1.8;
}
.louv strong {
	font-weight: 600;
	color: var(--louv-forest);
}
.louv a:focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 5px;
}
.louv__external-icon {
	display: inline-block;
	width: 1em;
	height: 1em;
	margin-left: .45em;
	vertical-align: -.12em;
	flex-shrink: 0;
}

/* ==========================================================================
   2. Éléments de texte
   ========================================================================== */

.louv__eyebrow {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: #53624d;
}
.louv__intro {
	text-align: center;
	max-width: 660px;
	margin: 0 auto 40px;
}
.louv__signature {
	font-family: Georgia, serif;
	font-style: italic;
	color: var(--louv-muted);
	font-size: 16px;
	margin-top: 32px;
}
.louv__link a {
	color: var(--louv-forest);
	text-underline-offset: 6px;
	font-size: 13px;
	font-weight: 600;
}

/* ==========================================================================
   3. Conteneur centré
   ========================================================================== */

/* Élément réel plutôt qu'une contrainte sur les enfants : une liste ou une
   grille qui porte son propre `margin` resterait sinon collée à gauche. */
.louv__container {
	max-width: var(--louv-container-width, 700px);
	margin-inline: auto;
}
.louv__container--text {
	--louv-container-width: 700px;
}

/* ==========================================================================
   4. Sections
   ========================================================================== */

/* Toutes les sections occupent le conteneur Louv et gèrent elles-mêmes
   leur respiration : plus de max-width imbriqué, donc plus de double marge. */
.louv__section {
	padding: 88px var(--louv-gutter);
	max-width: none;
	margin-inline: 0;
}
.louv__section--hero,
.louv__section--feature {
	padding: 0;
	max-width: none;
	margin: 0;
}
.louv__section--feature {
	background: var(--louv-linen);
}
.louv__section--community {
	background: var(--louv-forest);
	color: var(--louv-paper);
	padding: 65px var(--louv-gutter);
	text-align: center;
	max-width: none;
}
.louv__section--community h2,
.louv__section--community .louv__eyebrow,
.louv__section--community a {
	color: var(--louv-paper);
}
.louv__section--community strong {
	color: var(--louv-paper);
}
.louv .louv__section--community .wp-block-button__link {
	background: var(--louv-forest-light);
	color: var(--louv-paper);
}
.louv .louv__section--community .wp-block-button__link:hover {
	background: var(--louv-paper);
	color: var(--louv-forest);
}
/* Sur le vert du bloc, la sélection se lit : fond blanc, texte vert. */
.louv__section--community ::selection {
	background: #fff;
	color: var(--louv-forest);
}
.louv__section--community .wp-block-buttons {
	justify-content: center;
}
/* L'atelier reprend la mise en page du hero : texte à gauche, image à
   droite. */
.louv__section--atelier {
	max-width: none;
	padding-block: 10px;
}
.louv__atelier {
	gap: clamp(30px, 5vw, 70px);
	align-items: center;
}
.louv__atelier-body .louv__quote {
	margin-top: 4px;
}
.louv__section--atelier .louv__atelier-body {
	margin-top: 30px;
}
.louv__section--atelier .louv__atelier-body > h1 {
	font-size: clamp(24px, 2.1vw, 31.5px);
	line-height: 1.2;
	margin: 8px 0 18px;
}
.louv__faq-page {
	padding-bottom: 48px;
}
.woocommerce .louv__product-category-intro {
	max-width: 900px;
	margin: 0 auto 36px;
	text-align: center;
}
.louv__product-category-title {
	margin: 8px 0 16px;
	font-size: clamp(32px, 4vw, 54px);
}
.louv__product-category-description {
	max-width: 760px;
	margin: 0 auto;
	line-height: 1.65;
}
.entry-content.is-layout-constrained > .louv__faq-page {
	width: 100%;
	max-width: none;
	margin-inline: 0;
}
.louv__faq-page .louv__container--faq-wide {
	--louv-container-width: 1180px;
}
.louv__section--faq + .louv__section--faq {
	margin-top: 32px;
}
.louv__faq-list {
	display: grid;
	gap: 12px;
}
.louv__faq-item {
	border: 1px solid var(--louv-line);
	border-radius: 8px;
	background: #fff;
}
.louv__faq-item > summary {
	min-height: 56px;
	padding: 16px 20px;
	color: var(--louv-forest);
	font-weight: 650;
	cursor: pointer;
}
.louv__faq-item > summary:hover {
	background: var(--louv-paper);
}
.louv__faq-item > summary:focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 3px;
	border-radius: 6px;
}
.louv__faq-answer {
	padding: 0 20px 18px;
}
.louv__faq-answer > :first-child {
	margin-top: 0;
}
.louv__faq-answer > :last-child {
	margin-bottom: 0;
}
.louv__atelier-media figure {
	margin: 0;
}
.louv__atelier-media img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 2px;
	background: var(--louv-linen);
}
.louv__section--shop {
	border-top: 1px solid var(--louv-line);
	padding-block: 55px;
}
.louv__section--shop > .wp-block-buttons {
	justify-content: center;
	margin-top: 32px;
}

.louv .louv__meetings {
	gap: 0;
	margin: 0;
	align-items: stretch;
}
.louv__meetings > .wp-block-column {
	display: flex;
}
.louv__meetings .louv__section--meeting {
	width: 100%;
	padding: clamp(32px, 5vw, 72px) var(--louv-gutter);
	background: var(--louv-linen);
}
.louv__meetings .louv__section--events {
	background: var(--louv-paper);
}
.louv__section--meeting .louv__link {
	margin-top: 28px;
}
.louv__section--events-full {
	width: 100%;
	max-width: none;
	padding: clamp(32px, 5vw, 72px) var(--louv-gutter);
	background: var(--louv-paper);
}

/* --- Grille événements homepage ------------------------------------------- */
.louv__events-grid {
	gap: 24px;
	grid-template-columns: repeat(4, minmax(0, 1fr));
}
.louv__event-card {
	height: 100%;
	display: flex;
}
.louv__event-card-link {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	text-decoration: none;
	color: inherit;
	isolation: isolate;
}
.louv__event-card-link:hover .louv__event-card-media,
.louv__event-card-link:focus-visible .louv__event-card-media {
	transform: scale(1.03);
}
.louv__event-card-link::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(to top, rgb(20 30 24 / 82%) 0%, rgb(20 30 24 / 48%) 45%, rgb(20 30 24 / 12%) 100%);
	transition: opacity .35s ease;
}
.louv__event-card-link:hover::after,
.louv__event-card-link:focus-visible::after {
	opacity: .88;
}
.louv__event-card-media {
	position: absolute;
	inset: 0;
	z-index: -1;
	background-size: cover;
	background-position: center;
	transform: scale(1);
	transition: transform .55s cubic-bezier(.2, .7, .3, 1);
	border-radius: 2px;
}
.louv__event-card-media--no-image {
	display: flex;
	align-items: flex-end;
	justify-content: center;
	padding: 20px;
	background: var(--louv-forest);
	color: var(--louv-paper);
	font-family: Georgia, serif;
	font-size: clamp(18px, 2vw, 24px);
	font-weight: 600;
}
.louv__event-card-body {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 24px 20px 20px;
	color: var(--louv-paper);
	min-height: 200px;
}
.louv__event-card-date {
	display: block;
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--louv-linen);
	margin-bottom: 8px;
}
.louv .louv__event-card-title {
	margin: 0 0 8px;
	color: #fff;
	font-family: Georgia, serif;
	font-size: clamp(20px, 1.8vw, 26px);
	font-weight: 700;
	letter-spacing: -.02em;
	line-height: 1.3;
}
.louv__event-card-excerpt {
	display: block;
	font-size: 14px;
	line-height: 1.6;
	color: rgb(255 255 255 / 85%);
}
.louv__event-card--cta .louv__event-card-media {
	background: var(--louv-forest);
}
.louv__event-card--cta .louv__event-card-body {
	background: linear-gradient(to top, var(--louv-forest) 0%, var(--louv-forest-light) 100%);
}
.louv__event-card--cta .louv__event-card-title {
	color: var(--louv-paper);
}
.louv__event-card--cta .louv__event-card-excerpt {
	color: rgb(255 255 255 / 90%);
}
@media (max-width: 1023px) {
	.louv__events-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 640px) {
	.louv__events-grid {
		grid-template-columns: 1fr;
	}
}
.louv__stores {
	gap: 24px;
	align-items: stretch;
}
.louv__stores > .wp-block-column {
	padding: 24px;
	border: 1px solid var(--louv-line);
	background: var(--louv-paper);
}
.louv__stores figure {
	margin: 0 0 24px;
}
.louv__stores img {
	display: block;
	width: 100%;
	height: 150px;
	object-fit: contain;
}
.louv__stores h3 {
	margin-top: 0;
}
.louv__stores p {
	margin-bottom: 8px;
}

.louv__skein-option {
	flex-basis: 100%;
	margin-bottom: 20px;
}
.louv__skein-option label {
	display: inline-block;
	font-weight: 600;
	margin-bottom: 8px;
}
.louv__skein-help {
	position: relative;
	display: inline-flex;
	vertical-align: middle;
}
.louv__skein-help-trigger {
	display: inline-grid;
	width: 22px;
	height: 22px;
	place-items: center;
	margin: 5px 0 6px 7px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #000;
	color: #fff;
	font: 700 14px/1 sans-serif;
	cursor: pointer;
}
.louv__skein-tooltip {
	position: absolute;
	z-index: 20;
	bottom: 100%;
	left: 50%;
	width: min(290px, calc(100vw - 40px));
	padding: 13px 15px;
	border-radius: 5px;
	background: #000;
	color: #fff;
	font-size: 13px;
	font-weight: 400;
	line-height: 1.5;
	box-shadow: 0 4px 14px #0003;
	transform: translate(-50%, 4px);
	visibility: hidden;
	opacity: 0;
	transition: opacity .15s ease, transform .15s ease;
}
.louv__skein-tooltip a {
	display: inline-block;
	margin-top: 5px;
	color: #fff;
	font-weight: 700;
	text-decoration: underline;
}
.louv__skein-help:hover .louv__skein-tooltip,
.louv__skein-help:focus-within .louv__skein-tooltip,
.louv__skein-help--open .louv__skein-tooltip {
	transform: translate(-50%, 0);
	visibility: visible;
	opacity: 1;
}
.louv__skein-dialog {
	max-width: min(430px, calc(100vw - 40px));
	padding: 0;
	border: 0;
	border-radius: 6px;
	color: var(--louv-ink);
}
.louv__skein-dialog::backdrop { background: #161a17b8; }
.louv__skein-dialog-content { position: relative; padding: 28px 24px; }
.louv__skein-dialog-content h2 { margin: 0 35px 12px 0; font-family: Georgia, serif; font-size: 24px; }
.louv__skein-dialog-content p { line-height: 1.6; }
.louv__skein-dialog-content a { color: var(--louv-forest); font-weight: 700; }
.louv__skein-dialog-close {
	position: absolute;
	top: 8px;
	right: 10px;
	width: 36px;
	height: 36px;
	border: 0;
	background: transparent;
	font-size: 28px;
	cursor: pointer;
}
@media (min-width: 1024px) {
	.louv__skein-dialog { display: none; }
}
@media (max-width: 1023px) {
	.louv__skein-tooltip { display: none; }
}
.louv__skein-option select {
	width: 100%;
	max-width: 320px;
}
/* ==========================================================================
   5. Bloc calendriers de l'avent
   ========================================================================== */

.louv__section--advent {
	--louv-gutter: clamp(20px, 4vw, 40px);
	padding: 10px var(--louv-gutter);
	text-align: center;
}
.louv__advent {
	gap: 32px;
	align-items: center;
}
.louv__advent-media img {
	width: 100%;
	border-radius: 2px;
	box-shadow: 0 12px 18px -6px rgba(0, 0, 0, .3);
}
.louv__advent-body {
	gap: 6px;
}
.louv__advent-body h2 {
	font-size: clamp(30px, 3vw, 44px);
	margin: 6px 0 2px;
}
.louv__advent-lead {
	font-size: 19px;
	color: var(--louv-forest);
}
.louv__advent-items {
	display: inline-grid;
	gap: 4px;
	margin: 6px auto;
	padding: 0;
	list-style: none;
	font-weight: 600;
	color: var(--louv-forest);
	text-align: left;
}
.louv__advent-availability {
	margin-top: 22px;
	font-size: 14px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--louv-muted);
}
.louv__advent-date {
	font-size: 20px;
	font-weight: 600;
	color: #a12622;
}
.louv__advent-note {
	font-size: 15px;
	color: var(--louv-muted);
}
.louv__advent-body .wp-block-buttons {
	justify-content: center;
	width: 100%;
	margin-top: 24px;
}

/* ==========================================================================
   6. Bloc hero
   ========================================================================== */

.louv__hero {
	max-width: none;
	padding: 0;
	gap: 0;
	margin: 0;
	align-items: stretch;
}
.louv__hero-body {
	padding: clamp(35px, 6vw, 92px);
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.louv__hero-media figure,
.louv__feature-media figure {
	height: 100%;
	margin: 0;
}
.louv__hero-media img {
	width: 100%;
	height: 100%;
	min-height: 620px;
	object-fit: cover;
}
.louv__promises {
	border-block: 1px solid var(--louv-line);
	padding: 20px 30px;
	margin: 0;
	gap: 20px;
}
.louv__promises-item {
	margin: 0;
	text-align: center;
	font-size: 12px;
	letter-spacing: .045em;
}

/* ==========================================================================
   7. Boutons
   ========================================================================== */

.louv .wp-block-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}
.louv .wp-block-button__link {
	background: var(--louv-forest);
	color: #fff;
	border-radius: 0;
	padding: 17px 27px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .025em;
	text-decoration: none;
}
.louv .wp-block-button__link:hover {
	background: var(--louv-forest-light);
	color: #fff;
}

/* ==========================================================================
   8. Cartes éditoriales
   ========================================================================== */

.louv__cards {
	gap: 30px;
}
/* Carte cliquable dont le visuel est un fond `cover`. Le zoom anime un
   pseudo-élément, le texte reste net au-dessus. */
.louv__card {
	height: 100%;
}
.louv__card-link {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	height: 100%;
	min-height: 420px;
	overflow: hidden;
	text-decoration: none;
	isolation: isolate;
}
.louv__card-media {
	position: absolute;
	inset: 0;
	z-index: -1;
	background-size: cover;
	background-position: center;
	transform: scale(1);
	transition: transform .55s cubic-bezier(.2, .7, .3, 1);
}
/* Voile pour garantir le contraste du texte quelle que soit l'image. */
.louv__card-link::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(to top, rgb(20 30 24 / 82%) 0%, rgb(20 30 24 / 48%) 45%, rgb(20 30 24 / 12%) 100%);
	transition: opacity .35s ease;
}
.louv__card-link:hover .louv__card-media,
.louv__card-link:focus-visible .louv__card-media {
	transform: scale(1.07);
}
.louv__card-link:hover::after,
.louv__card-link:focus-visible::after {
	opacity: .88;
}
.louv__card-body {
	display: block;
	padding: 30px 26px 26px;
	color: var(--louv-paper);
}
/* Le sélecteur doit depasser `.louv h3`, plus spécifique. */
.louv .louv__card-title {
	margin: 0 0 8px;
	color: #fff;
	font-family: Georgia, serif;
	font-size: clamp(26px, 2.4vw, 34px);
	font-weight: 700;
	letter-spacing: -.02em;
}
.louv__card-text {
	display: block;
	font-size: 15px;
	line-height: 1.7;
	color: rgb(255 255 255 / 88%);
}
.louv__card-text strong {
	color: #fff;
}
.louv__card-action {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 16px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 6px;
}
.louv__card-arrow {
	transition: transform .3s ease;
}
.louv__card-link:hover .louv__card-arrow {
	transform: translateX(5px);
}
/* Le survol ne doit pas rester actif au focus clavier seul. */
.louv__card-link:focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 4px;
}
@media (prefers-reduced-motion: reduce) {
	.louv__card-media,
	.louv__card-link::after,
	.louv__card-arrow {
		transition: none;
	}
	.louv__card-link:hover .louv__card-media,
	.louv__card-link:focus-visible .louv__card-media {
		transform: none;
	}
}
.louv__feature {
	max-width: none;
	padding: 0;
	gap: 0;
	margin: 0;
	align-items: stretch;
}
.louv__feature-body {
	padding: clamp(32px, 6vw, 88px);
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.louv__feature-media img {
	width: 100%;
	height: 100%;
	min-height: 520px;
	object-fit: cover;
}

/* ==========================================================================
   9. Boutique
   ========================================================================== */

/* Le badge natif est aussi rendu hors des blocs louv, sur les fiches produit. */
body .out-of-stock-badge {
	--badge-text-color: #b42318;
	--badge-background-color: #fff;
	--badge-height: 34px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
}

body.single-product .entry-summary .louv__stock-badge {
	display: inline-flex;
	align-items: center;
	width: fit-content;
	max-width: 100%;
	margin: 12px 0 0;
	padding: 7px 12px;
	border: 1px solid #c9d8cb;
	border-radius: 999px;
	background: #edf4ee;
	color: #28583e;
	font-size: 13px;
	font-weight: 650;
	line-height: 1.35;
}
body.single-product .entry-summary .louv__stock-badge.out-of-stock {
	border-color: #e8c9c3;
	background: #fbefed;
	color: #963e32;
}
body.single-product .entry-summary .ct-product-add-to-cart > .stock {
	display: none;
}

@media (max-width: 1023px) {
	body.single-product {
		padding-bottom: 190px;
	}
	body.single-product form.variations_form table.variations {
		margin-bottom: 0;
	}
	body.single-product .entry-summary-items > .ct-product-add-to-cart {
		position: fixed;
		z-index: 1000;
		right: 0;
		bottom: 0;
		left: 0;
		box-sizing: border-box;
		width: auto;
		max-height: min(45dvh, 420px);
		margin: 0;
		padding: 14px max(18px, env(safe-area-inset-right)) calc(14px + env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));
		overflow-y: auto;
		overscroll-behavior: contain;
		background: var(--louv-paper, #f7f3ec);
		box-shadow: 0 -4px 18px rgb(41 45 41 / 14%);
	}
}

@media (max-width: 600px) {
	body.single-product {
		padding-bottom: 210px;
	}
}

@media (max-width: 599px) {
	body.single-product .entry-summary-items > .ct-product-add-to-cart {
		--product-element-spacing: 8px;
		right: auto;
		width: 100vw;
		max-width: 100vw;
		max-height: min(42dvh, 330px);
		padding: 9px max(14px, env(safe-area-inset-right)) calc(9px + env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
	}
	body.single-product .ct-product-add-to-cart .variations {
		box-sizing: border-box;
		width: calc(100vw - 28px);
		max-width: calc(100vw - 28px);
		table-layout: fixed;
		margin: 0 0 8px;
	}
	body.single-product .ct-product-add-to-cart .variations_form,
	body.single-product .ct-product-add-to-cart .single_variation_wrap {
		box-sizing: border-box;
		width: 100%;
		max-width: 100%;
		min-width: 0;
		margin-top: 0;
	}
	body.single-product .ct-product-add-to-cart .woocommerce-variation-add-to-cart {
		box-sizing: border-box;
		display: block;
		width: 100%;
		max-width: 100%;
	}
	body.single-product .ct-product-add-to-cart .louv__skein-option {
		display: flex;
		align-items: center;
		gap: 8px;
		margin-bottom: 8px;
	}
	body.single-product .ct-product-add-to-cart .louv__skein-option label {
		margin: 0;
		white-space: nowrap;
	}
	body.single-product .ct-product-add-to-cart .louv__skein-help-trigger {
		margin: 0;
		flex: 0 0 22px;
	}
	body.single-product .ct-product-add-to-cart .louv__skein-option select {
		flex: 0 1 120px;
		width: 120px;
		min-width: 0;
	}
	body.single-product .ct-product-add-to-cart .ct-cart-actions {
		display: grid;
		grid-template-columns: 118px minmax(0, 1fr);
		align-items: stretch;
		gap: 8px;
		box-sizing: border-box;
		width: calc(100vw - 28px);
		max-width: calc(100vw - 28px);
		min-width: 0;
	}
	body.single-product .ct-product-add-to-cart .ct-cart-actions .quantity {
		box-sizing: border-box;
		height: 48px;
		width: 118px;
		margin: 0;
	}
	body.single-product .ct-product-add-to-cart .ct-cart-actions .quantity input.qty {
		box-sizing: border-box;
		height: 100%;
	}
	body.single-product .ct-product-add-to-cart .ct-cart-actions .single_add_to_cart_button {
		box-sizing: border-box;
		width: calc(100vw - 154px);
		max-width: calc(100vw - 154px);
		min-width: 0;
		height: 48px;
		min-height: 48px;
		padding-inline: 8px;
		padding-block: 0;
		font-size: 13px;
		white-space: nowrap;
	}
}

@media (min-width: 600px) and (max-width: 1023px) {
	body.single-product .entry-summary-items > .ct-product-add-to-cart {
		padding-top: 10px;
		padding-bottom: calc(10px + env(safe-area-inset-bottom));
	}
	body.single-product .ct-product-add-to-cart form.cart:not(.variations_form),
	body.single-product .ct-product-add-to-cart .woocommerce-variation-add-to-cart {
		display: flex;
		flex-wrap: nowrap;
		align-items: center;
		gap: 10px;
	}
	body.single-product .ct-product-add-to-cart .ct-cart-actions {
		display: flex;
		flex: 0 1 auto;
		flex-wrap: nowrap;
		align-items: center;
		gap: 8px;
		min-width: 0;
	}
	body.single-product .ct-product-add-to-cart .louv__skein-option {
		flex: 1 1 auto;
		min-width: 0;
		margin: 0;
	}
	body.single-product .ct-product-add-to-cart .louv__skein-option select {
		width: auto;
		max-width: 150px;
	}
	body.single-product .ct-product-add-to-cart .quantity {
		display: flex;
		flex: 0 0 auto;
		align-items: center;
		width: auto;
		min-width: 0;
		margin: 0;
	}
	body.single-product .ct-product-add-to-cart .quantity input.qty {
		max-width: 150px;
	}
	body.single-product .ct-product-add-to-cart .single_add_to_cart_button {
		flex: 0 1 auto;
		min-height: 42px;
		min-width: 0;
		padding-inline: 10px;
		font-size: 14px;
		white-space: nowrap;
	}
}

@media (max-width: 1023px) {
	body.single-product .ct-product-add-to-cart .ct-cart-actions .quantity {
		height: 52px;
	}
	body.single-product .ct-product-add-to-cart .ct-cart-actions .quantity input.qty {
		box-sizing: border-box;
		height: 100%;
	}
	body.single-product .ct-product-add-to-cart form.cart .ct-cart-actions .single_add_to_cart_button {
		height: 52px;
		min-height: 52px;
		padding-block: 0;
	}
}

.louv .woocommerce ul.products {
	gap: 28px;
}
.louv .woocommerce ul.products li.product {
	background: transparent;
	box-shadow: none;
	min-width: 0;
}
.louv .woocommerce ul.products .woocommerce-loop-product__title {
	font-family: system-ui, sans-serif;
	font-size: 15px;
	line-height: 1.5;
	letter-spacing: 0;
}
.louv .woocommerce ul.products li.product .price {
	color: var(--louv-forest);
	font-family: system-ui, sans-serif;
	font-size: 17px;
	font-weight: 650;
}
.louv .woocommerce ul.products li.product .button {
	background: var(--louv-forest);
	color: #fff;
	font-family: system-ui, sans-serif;
	min-height: 44px;
	padding: 12px 16px;
	border-radius: 0;
	text-align: center;
}
.louv .woocommerce ul.products li.product .button:hover {
	background: var(--louv-forest-light);
	color: #fff;
}
.louv .woocommerce ul.products li.product .button.louv__skein-link,
.woocommerce ul.products li.product .button.louv__skein-link {
	background: var(--louv-forest);
	color: #fff;
}
.louv .woocommerce ul.products li.product .button.louv__skein-link:hover,
.woocommerce ul.products li.product .button.louv__skein-link:hover {
	background: var(--louv-forest-light);
	color: #fff;
}
.tax-product_cat ul.products li.product .button {
	background-color: var(--louv-forest);
	background-image: none;
	color: #fff;
}
.tax-product_cat ul.products li.product .button:hover,
.tax-product_cat ul.products li.product .button:focus-visible,
.tax-product_cat ul.products li.product .button.added {
	background-color: var(--louv-forest-light);
	color: #fff;
}
.louv .woocommerce ul.products li.product .added_to_cart {
	display: inline-block;
	padding: 12px 0;
	font-weight: 600;
}
.woocommerce-order .louv__order-reviews {
	box-sizing: border-box;
	position: relative;
	width: min(900px, calc(100% - 2 * var(--louv-gutter, 20px)));
	margin: 48px auto;
	padding: clamp(30px, 5vw, 58px);
	border: 1px solid var(--louv-line, #d9d5ca);
	border-radius: 4px 44px 4px 44px;
	background: radial-gradient(ellipse at 100% 0, #e8e0d3 0, transparent 48%), #f7f3ec;
	color: #292d29;
	text-align: center;
}
.woocommerce-order .louv__order-reviews::before {
	content: '★★★★★';
	display: block;
	margin-bottom: 10px;
	color: #a65e46;
	font-size: 20px;
	letter-spacing: .22em;
}
.woocommerce-order .louv__order-reviews-eyebrow {
	margin: 0 0 8px;
	color: #53624d;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
}
.woocommerce-order .louv__order-reviews h2 {
	margin: 0 auto 14px;
	color: #263d32;
	font-family: Georgia, serif;
	font-size: clamp(30px, 4vw, 46px);
	font-weight: 500;
	line-height: 1.12;
}
.woocommerce-order .louv__order-reviews-intro {
	max-width: 590px;
	margin: 0 auto 24px;
	line-height: 1.7;
}
.woocommerce-order .louv__order-reviews-actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
}
.woocommerce-order .louv__order-review-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	min-height: 48px;
	padding: 0 22px;
	border: 1px solid #263d32;
	background: #263d32;
	color: #fff;
	font-size: 14px;
	font-weight: 650;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.woocommerce-order .louv__order-review-link:hover {
	transform: translateY(-2px);
	background: #39513e;
	color: #fff;
}
.woocommerce-order .louv__order-review-link--google span {
	color: #f0c56e;
	font-size: 19px;
}
.woocommerce-order .louv__order-review-link--facebook {
	border-color: #a65e46;
	background: transparent;
	color: #263d32;
}
.woocommerce-order .louv__order-review-link--facebook:hover {
	background: #a65e46;
	color: #fff;
}
.woocommerce-order .louv__order-reviews-thanks {
	margin: 22px 0 0;
	color: #69705f;
	font-family: Georgia, serif;
	font-size: 16px;
	font-style: italic;
}
.woocommerce-order .louv__order-reviews :is(a, a:hover):focus-visible {
	outline: 3px solid #a65e46;
	outline-offset: 4px;
}
@media (max-width: 520px) {
	.woocommerce-order .louv__order-reviews {
		margin-block: 32px;
		border-radius: 4px 28px 4px 28px;
	}
	.woocommerce-order .louv__order-review-link {
		width: 100%;
	}
}
.louv__product-card {
	display: flex;
	flex-direction: column;
	align-items: var(--horizontal-alignment);
	width: 100%;
	flex: 1;
	position: relative;
}
.louv__product-card > * {
	margin-bottom: var(--product-element-spacing, 10px);
}
.louv__product-card > :last-child {
	margin-bottom: 0;
}

/* ==========================================================================
   10. Fil d'Ariane et pied de page
   ========================================================================== */

.louv__breadcrumbs {
	width: var(--theme-container-width);
	max-width: var(--theme-normal-container-max-width);
	margin: 20px auto;
	font-size: 13px;
}
.louv__breadcrumbs-list {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.louv__breadcrumbs-item {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
}
.louv__breadcrumbs a {
	color: var(--louv-forest);
	text-underline-offset: 3px;
}
.louv__breadcrumbs-separator {
	color: var(--louv-muted);
}
.louv__site-credit {
	margin: 8px 0 0;
	font-size: 12px;
}
.louv__site-credit a {
	text-underline-offset: 3px;
}

/* ==========================================================================
   11. Barre de réassurance
   ========================================================================== */

.louv__reassurance {
	padding: 56px 0;
	background: var(--louv-linen);
	border-top: 1px solid var(--louv-line);
}
.louv__reassurance-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 40px;
}
.louv__reassurance-item {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 12px 16px;
	align-items: start;
	min-width: 0;
}
.louv__reassurance-icon {
	grid-column: 1;
	grid-row: 1;
	flex: none;
	width: 28px;
	height: 28px;
	color: var(--louv-clay);
}
.louv__reassurance-title {
	grid-column: 2;
	grid-row: 1;
	font-size: 21px;
	line-height: 1.25;
	margin: 0;
}
.louv__reassurance-item > :not(.louv__reassurance-icon):not(.louv__reassurance-title) {
	grid-column: 2;
}
.louv__reassurance-text {
	margin: 0;
	font-size: 15px;
	line-height: 1.65;
	color: var(--louv-muted);
}
.louv__reassurance-form {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.louv__reassurance-form,
.louv__reassurance-fallback {
	width: 100%;
}
.louv__reassurance-field {
	flex: 1 1 160px;
	min-width: 0;
}
.louv__reassurance-form input[type="email"],
.louv__reassurance-form input[type="text"] {
	width: 100%;
	padding: 9px 14px;
	border: 1px solid var(--louv-line);
	border-radius: 4px;
	background: var(--louv-paper);
	font: inherit;
	font-size: 15px;
	color: var(--louv-ink);
}
.louv__reassurance-submit {
	flex: 0 0 auto;
	padding: 9px 18px;
	border: 1px solid var(--louv-forest);
	border-radius: 4px;
	background: var(--louv-forest);
	color: var(--louv-paper);
	font: inherit;
	font-size: 15px;
	cursor: pointer;
}
.louv__reassurance-honeypot {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.louv__reassurance-feedback {
	flex: 1 0 100%;
	margin: 0;
	font-size: 14px;
	line-height: 1.5;
}
.louv__reassurance-feedback.is-success {
	color: var(--louv-forest);
}
.louv__reassurance-feedback.is-error {
	color: #a12622;
}
.louv__reassurance-field-error {
	flex: 1 0 100%;
	font-size: 13px;
	line-height: 1.4;
	color: #a12622;
}
.louv__reassurance-field-error[hidden] {
	display: none;
}
.louv__reassurance-field.is-invalid input {
	border-color: #a12622;
}
.louv__reassurance-submit[disabled] {
	opacity: .65;
	cursor: progress;
}
.louv__toast-region {
	position: fixed;
	inset: auto 0 0;
	z-index: 9999;
	display: grid;
	gap: 10px;
	justify-items: center;
	padding: 20px;
	pointer-events: none;
}
.louv__toast {
	display: flex;
	align-items: center;
	gap: 14px;
	max-width: 46ch;
	margin: 0;
	padding: 14px 18px;
	border-radius: 6px;
	background: var(--louv-forest, #263d32);
	color: var(--louv-paper, #f7f3ec);
	font-size: 15px;
	line-height: 1.5;
	box-shadow: 0 18px 30px -12px rgba(0, 0, 0, .45);
	pointer-events: auto;
	animation: louv-toast-in .25s ease-out;
}
.louv__toast--error {
	background: #8c1f1b;
}
.louv__toast--success {
	background: #263d32;
	color: #fff;
}
.louv__toast-close {
	flex: none;
	padding: 0 4px;
	border: 0;
	background: none;
	color: inherit;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
}
.louv__language-toast a {
	color: inherit;
	font-weight: 700;
	text-decoration: underline;
}
@keyframes louv-toast-in {
	from {
		opacity: 0;
		transform: translateY(12px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}
.louv__reassurance-form input:focus-visible,
.louv__reassurance-submit:focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 2px;
}
.louv__reassurance-form .louv__reassurance-honeypot input {
	padding: 0;
	border: 0;
}
.louv__reassurance-social,
.louv__reassurance-payments {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.louv__reassurance-social-link {
	display: inline-flex;
	align-items: center;
	padding: 7px 15px;
	border: 1px solid var(--louv-line);
	border-radius: 999px;
	background: var(--louv-paper);
	color: var(--louv-forest);
	font-size: 14px;
	text-decoration: none;
}
.louv__reassurance-social-link .louv__social-icon {
	width: 20px;
	height: 20px;
}
.louv__reassurance-social-link:hover {
	border-color: var(--louv-forest);
}
.louv__reassurance-payment {
	padding: 5px 12px;
	border: 1px solid var(--louv-line);
	border-radius: 4px;
	background: var(--louv-paper);
	font-size: 12px;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--louv-muted);
}
.louv__reassurance-payment--paypal {
	font-weight: 600;
	color: #003087;
	background: #ffc439;
	border-color: #ffc439;
}
@media (max-width: 1023px) {
	.louv__reassurance-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 32px;
	}
}
@media (max-width: 640px) {
	.louv__reassurance {
		padding: 40px 0;
	}
	.louv__reassurance-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ==========================================================================
   12. En-tête : contact et e-mail
   ========================================================================== */

#header.ct-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: var(--theme-palette-color-8, #fff);
}
body.admin-bar #header.ct-header {
	top: 32px;
}
@media (min-width: 601px) and (max-width: 782px) {
	body.admin-bar #header.ct-header {
		top: 46px;
	}
}
@media (max-width: 600px) {
	body.admin-bar #header.ct-header {
		top: 0;
	}
}
html {
	scroll-padding-top: 160px;
}
html.louv__scroll-restoring {
	scroll-behavior: auto !important;
}

#header .menu-container .ct-menu-link {
	color: #263d32;
}
#header .menu-container .ct-menu-link:hover {
	color: #263d32;
	text-decoration: underline;
	text-underline-offset: 4px;
}
#header .menu-container :is(a, button):focus-visible,
#offcanvas .menu-container :is(a, button):focus-visible {
	outline: 2px solid #a65e46;
	outline-offset: -2px;
}
#offcanvas .menu-container {
	color: #fff;
}
#offcanvas .menu-container .ct-menu-link,
#offcanvas .menu-container .ct-menu-link:hover {
	color: #fff;
}
#offcanvas .menu-container .ct-menu-link:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}
#offcanvas .menu-container .ct-sub-menu-parent .ct-toggle-dropdown-mobile {
	--theme-icon-color: #fff;
	color: #fff;
}

/* Le tiroir mobile se déplie sur le vert de la marque, les liens restent
   blancs. Le sélecteur est plus spécifique que celui de Louv
   (`[data-header*="type-1"] #offcanvas .ct-panel-inner`), dont la feuille
   dynamique est imprimée après celle du thème enfant. */
#offcanvas.ct-panel.ct-header .ct-panel-inner {
	background-color: var(--louv-forest);
}

/* Le menu reste sur fond blanc, l'ombre portée le détache du contenu. */
#header.ct-header [data-row*='middle'] {
	background: #fff;
	border-bottom: 1px solid #e8e0d3;
	box-shadow: 0 12px 22px -14px rgb(38 61 50 / 42%);
}

@media (min-width: 1450px) {
	#header [data-device="desktop"] .menu-container .sub-menu.louv__submenu--viewport-fit {
		top: auto;
		bottom: 0;
	}
	#header [data-device="desktop"] .menu-container .sub-menu {
		--dropdown-width: 300px;
		--dropdown-top-offset: -20px;
		--dropdown-background-color: #263d32;
		--theme-box-shadow: 0 14px 26px -14px rgb(38 61 50 / 45%);
		--theme-link-initial-color: #fff;
		--theme-link-hover-color: #fff;
		--theme-link-active-color: #fff;
		--theme-icon-color: #fff;
		--theme-icon-hover-color: #fff;
		--theme-icon-active-color: #fff;
		max-width: calc(100vw - 32px);
		color: #fff;
	}
	#header [data-device="desktop"] .menu-container .sub-menu .ct-menu-link,
	#header [data-device="desktop"] .menu-container .sub-menu .ct-menu-link:hover {
		color: #fff;
	}
	/* Les pictogrammes de lien externe sont dessinés en traits
	   (`fill="none"` + `stroke="currentColor"`) : un `fill` blanc imposé ici
	   transformait leurs contours en pastilles pleines. Le remplissage est
	   neutralisé dans les deux états, le survol compris, qui réappliquait la
	   même couleur via `--theme-icon-hover-color`. Les chevrons `.ct-icon` de
	   Louv restent blancs, leur `fill` venant de `.ct-icon` lui-même. */
	#header [data-device="desktop"] .menu-container .sub-menu .louv__external-icon,
	#header [data-device="desktop"] .menu-container .sub-menu .louv__external-icon:hover {
		fill: none;
	}
}
@media (max-width: 1449px) {
	#header [data-device="desktop"],
	#offcanvas [data-device="desktop"] {
		display: none;
	}
	/* Le constructeur génère sa valeur tablette à 1000px, tandis que ce site
	   affiche déjà la barre mobile jusqu'à 1449px. */
	#header.ct-header [data-device="mobile"] [data-row*='middle'] {
		--height: 70px;
	}
	[data-header*='type-1'] {
		--header-height: 70px;
	}
}
@media (min-width: 1450px) {
	#header.ct-header [data-device="desktop"] [data-row*='middle'] {
		--height: 80px;
	}
	[data-header*='type-1'] {
		--header-height: 80px;
	}
}
/* Louv masque la version mobile dès 1000px : il faut la rétablir sur la
   plage 1000-1449px pour que la bascule en menu mobile soit effective. */
@media (min-width: 1000px) and (max-width: 1449px) {
	#header [data-device="mobile"] {
		display: block;
	}
	#offcanvas [data-device="mobile"] {
		display: flex;
	}
}

/* La loupe ferme le menu : elle reprend la gouttière et la hauteur des autres
   entrées pour ne pas désaligner la barre. */
#offcanvas .menu-container {
	position: relative;
}
/* Dans la barre le menu ne sert plus de repère au formulaire : celui-ci s'étale
   sur toute la largeur de l'écran, sous la ligne collante. */
#header .menu-container {
	position: static;
}
.louv__menu-search-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
	padding: 0 calc(var(--menu-items-spacing, 25px) / 2);
	border: 0;
	background: none;
	color: #263d32;
	cursor: pointer;
}
.louv__menu-search-toggle:hover {
	opacity: .7;
}
.louv__menu-search-icon {
	width: 18px;
	height: 18px;
}
/* Le champ se pose sous la barre plutôt que de la déformer : l'en-tête est
   collant, le formulaire le recouvre le temps de la recherche. Posé à 100% de
   la ligne, il suit sa largeur et s'aligne sur les bords de l'écran ; les
   suggestions s'empilent en dessous, dans le flux.
   Il passe sous les sous-menus dépliés (z-index 10 dans Louv) : un menu
   ouvert reste lisible et cliquable au-dessus du champ. */
.louv__menu-search-form {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	z-index: 5;
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 14px var(--louv-gutter);
	background: #fff;
	box-shadow: 0 18px 26px -14px rgb(38 61 50 / 45%);
}
.louv__menu-search-form[hidden] {
	display: none;
}
.louv__menu-search-row {
	display: flex;
	gap: 8px;
}
.louv__menu-search-input-wrap {
	position: relative;
	flex: 1 1 auto;
	min-width: 0;
}
.louv__menu-search-field {
	flex: 1 1 auto;
	min-width: 0;
	width: 100%;
	-webkit-appearance: none;
	padding: 11px 40px 11px 16px;
	border: 1px solid var(--louv-line);
	border-radius: 4px;
	background: #fff;
	font: inherit;
	color: var(--louv-ink);
}
.louv__menu-search-field::-webkit-search-cancel-button {
	display: none;
}
.louv__menu-search-clear {
	position: absolute;
	top: 50%;
	right: 8px;
	display: grid;
	width: 28px;
	height: 28px;
	padding: 0;
	place-items: center;
	transform: translateY(-50%);
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--louv-muted);
	font-size: 21px;
	line-height: 1;
	cursor: pointer;
}
.louv__menu-search-clear:hover {
	background: var(--louv-linen);
	color: var(--louv-forest);
}
.louv__menu-search-clear[hidden] {
	display: none;
}
.louv__menu-search-submit {
	flex: 0 0 auto;
	padding: 11px 18px;
	border: 0;
	border-radius: 4px;
	background: var(--louv-forest);
	color: var(--louv-paper);
	font-size: 15px;
	white-space: nowrap;
	cursor: pointer;
}
.louv__menu-search-form :is(input, button):focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 2px;
}
/* Suggestions : une ligne par titre trouvé, la nature du contenu à droite pour
   distinguer un produit d'un billet de blog. */
.louv__menu-search-suggestions {
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--louv-line);
	list-style: none;
}
.louv__menu-search-suggestions[hidden] {
	display: none;
}
.louv__menu-search-suggestion {
	border-bottom: 1px solid var(--louv-line);
}
.louv__menu-search-suggestion:last-child {
	border-bottom: 0;
}
.louv__menu-search-suggestion-link {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	padding: 11px 12px;
	color: var(--louv-ink);
	text-decoration: none;
}
.louv__menu-search-suggestion-link:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}
.louv__menu-search-suggestion-title {
	flex: 1 1 auto;
	min-width: 0;
}
.louv__menu-search-suggestion-type {
	flex: 0 0 auto;
	color: var(--louv-muted);
	font-size: 13px;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.louv__menu-search-suggestion.is-active {
	background: var(--louv-linen);
	box-shadow: inset 3px 0 0 var(--louv-clay);
}
.louv__menu-search-suggestion--all .louv__menu-search-suggestion-link {
	color: var(--louv-clay);
	font-weight: 600;
}
/* Le tiroir conserve sa hauteur complète ; sa largeur varie avec l'écran. La
   feuille dynamique de Louv est imprimée après celle du thème enfant, d'où le
   sélecteur plus spécifique. */
#offcanvas.ct-panel.ct-header {
	--side-panel-width: 100%;
	--panel-content-height: 100%;
}
@media (min-width: 680px) and (max-width: 1449px) {
	#offcanvas.ct-panel.ct-header {
		--side-panel-width: 640px;
	}
}
/* La bande du haut accueille le logo, centré, et la fermeture à droite. Sur le
   vert du tiroir, le logo gris disparait : elle reprend le blanc de la barre. */
#offcanvas .ct-panel-actions {
	box-sizing: border-box;
	height: 80px !important;
	min-height: 80px !important;
	padding: 0 !important;
	background: #fff;
}
#offcanvas .ct-panel-actions {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
}
#offcanvas .louv__drawer-logo {
	grid-column: 2;
	align-self: center;
	justify-self: center;
}
#offcanvas .louv__drawer-logo img {
	display: block;
	width: auto;
	height: 50px;
}
#offcanvas .ct-panel-actions .ct-toggle-close {
	grid-column: 3;
	align-self: center;
	justify-self: end;
	margin-right: 16px;
	/* La croix suivrait le blanc du tiroir, invisible sur la bande blanche. */
	--theme-icon-color: var(--louv-forest);
}
#offcanvas .ct-panel-actions .ct-toggle-close .ct-icon {
	width: 18px;
	height: 18px;
}

/* Dans le tiroir le menu est empilé et le champ toujours déplié : il suit le
   flux plutôt que de flotter sous une barre, et la loupe a disparu. */
@media (max-width: 1449px) {
	#offcanvas.ct-panel.ct-header,
	#offcanvas.ct-panel.ct-header .ct-panel-inner {
		overflow-x: hidden;
	}
	#offcanvas.ct-panel.ct-header .ct-panel-inner {
		max-width: min(100vw, var(--side-panel-width, 100%));
	}
	#header .louv__languages {
		display: none;
	}
	#offcanvas .menu-container {
		display: flex;
		flex-direction: column;
		min-width: 0;
		height: calc(100vh - 80px);
		height: calc(100dvh - 80px);
		overflow-x: hidden;
		overflow-y: hidden;
	}
	#offcanvas .louv__menu-links {
		flex: 1 1 auto;
		min-width: 0;
		min-height: 0;
		overflow-x: hidden;
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
		touch-action: pan-y;
	}
	#offcanvas .louv__menu-tools {
		flex: 0 0 auto;
		min-width: 0;
	}
	#offcanvas .louv__menu-links .ct-menu-link {
		overflow-wrap: anywhere;
	}
	#offcanvas .louv__menu-search-form {
		position: static;
		width: auto;
		margin-top: 24px;
		padding: 10px;
		background: rgb(255 255 255 / 12%);
		box-shadow: none;
	}
	#offcanvas .louv__languages {
		width: 100%;
		margin-bottom: 12px;
	}
	#offcanvas .louv__language-flag {
		display: none;
	}
	#offcanvas .louv__language-select {
		width: 100%;
		min-height: 44px;
		padding: 8px 36px 8px 12px;
		border: 1px solid rgb(255 255 255 / 45%);
		border-radius: 4px;
		background: var(--louv-forest);
		color: #fff;
		font-size: 15px;
	}
	#offcanvas .louv__language-select option {
		color: var(--louv-forest);
	}
	#offcanvas .louv__language-select:focus-visible {
		outline: 3px solid #fff;
		outline-offset: 2px;
	}
	#offcanvas .louv__menu-search-field {
		background: transparent;
		border-color: rgb(255 255 255 / 45%);
		color: #fff;
	}
	#offcanvas .louv__menu-search-field::placeholder {
		color: rgb(255 255 255 / 70%);
	}
	#offcanvas .louv__menu-search-submit {
		background: #fff;
		color: var(--louv-forest);
	}
	#offcanvas .louv__menu-search-clear {
		color: #fff;
	}
	#offcanvas .louv__menu-search-form :is(input, button):focus-visible {
		outline-color: #fff;
	}
	#offcanvas :is(.louv__menu-search-suggestions, .louv__menu-search-suggestion) {
		border-color: rgb(255 255 255 / 25%);
	}
	#offcanvas .louv__menu-search-suggestion-link {
		color: #fff;
	}
	#offcanvas .louv__menu-search-suggestion-type {
		color: rgb(255 255 255 / 70%);
	}
	#offcanvas .louv__menu-search-suggestion.is-active {
		background: rgb(255 255 255 / 12%);
		box-shadow: inset 3px 0 0 #fff;
	}
	#offcanvas .louv__menu-search-suggestion--all .louv__menu-search-suggestion-link {
		color: #fff;
	}
}

.louv__section--editorial h1 {
	font-size: clamp(38px, 5vw, 64px);
}
.louv__section--editorial h2 {
	font-size: clamp(28px, 3.5vw, 40px);
	margin-top: 48px;
}
.louv__editorial-byline {
	color: var(--louv-muted);
	font-size: 14px;
	margin-bottom: 36px;
}
.louv__section--editorial h3 {
	font-size: clamp(24px, 3vw, 30px);
	margin-top: 32px;
}
.louv__blog {
	padding-block: 0;
	background: #f7f3ec;
}
[data-prefix="single_blog_post"] .hero-section {
	margin-bottom: clamp(32px, 6vw, 64px);
}
[data-prefix="single_blog_post"] .entry-header {
	position: relative;
	padding: clamp(32px, 7vw, 76px) clamp(24px, 7vw, 88px);
	background: #263d32;
	border-top: 6px solid #b76a50;
}
[data-prefix="single_blog_post"] .entry-header .page-title,
[data-prefix="single_blog_post"] .entry-header .page-description,
[data-prefix="single_blog_post"] .entry-header .entry-meta {
	color: #f7f3ec;
}
[data-prefix="single_blog_post"] .entry-header .page-title {
	max-width: 18ch;
	font-size: clamp(38px, 6vw, 68px);
	line-height: 1.05;
}
[data-prefix="single_blog_post"] .entry-header .page-description {
	max-width: 62ch;
	font-size: clamp(17px, 2vw, 21px);
	line-height: 1.6;
}
[data-prefix="single_blog_post"] .entry-header .entry-meta {
	margin-top: 28px;
}
[data-prefix="single_blog_post"] .entry-header .entry-meta a {
	color: #f7f3ec;
}
.louv__blog-header {
	margin-bottom: 40px;
	padding: clamp(28px, 5vw, 56px);
	background: #263d32;
	border-top: 6px solid #b76a50;
}
.louv__blog-header h1,
.louv__blog-header p {
	color: #f7f3ec;
}
.louv__blog-header h1 {
	font-size: clamp(38px, 5vw, 68px);
}
.louv__blog-header p:last-child {
	margin-bottom: 0;
}
.louv__section--lover-hero {
	padding: clamp(28px, 5vw, 64px) var(--louv-gutter);
	background: #263d32;
	color: #f7f3ec;
}
.louv__lover-hero {
	max-width: 1280px;
	margin-inline: auto;
	align-items: center;
	gap: clamp(28px, 6vw, 88px);
}
.louv__lover-visual,
.louv__lover-copy,
.louv__lover-detail-visual,
.louv__lover-detail-copy {
	min-width: 0;
}
.louv__lover-visual img {
	width: 100%;
	max-height: 700px;
	object-fit: cover;
	object-position: center 35%;
}
.louv__section--lover-hero .louv__eyebrow,
.louv__section--lover-hero h1,
.louv__section--lover-hero .louv__lead,
.louv__section--lover-hero .louv__lover-notice,
.louv__section--lover-hero a {
	color: #f7f3ec;
}
.louv__section--lover-hero h1 {
	font-family: Georgia, serif;
	font-size: clamp(42px, 6vw, 76px);
	line-height: 1.02;
}
.louv__section--lover-hero .louv__lead {
	font-size: clamp(17px, 1.7vw, 20px);
}
.louv__lover-notice {
	margin-top: 28px;
	padding: 15px 18px;
	border-left: 3px solid #d49a71;
	background: rgb(255 255 255 / 8%);
	font-size: 14px;
}
.louv__section--lover-hero .louv__lover-pattern-link,
.louv__section--lover-closing .louv__lover-pattern-link {
	display: inline-block;
	margin-top: 12px;
	font-weight: 700;
	text-underline-offset: 5px;
}
.louv__section--lover-yarns {
	background: #f7f3ec;
}
.louv__lover-yarns {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
	margin-top: 36px;
}
.louv__lover-yarn {
	padding: clamp(24px, 3vw, 40px);
	border-top: 4px solid #b76a50;
	background: #fff;
}
.louv .louv__lover-yarn h3 {
	margin-top: 0;
	font-family: Georgia, serif;
	font-size: clamp(24px, 3vw, 34px);
}
.louv__lover-composition {
	font-weight: 650;
}
.louv__lover-meterage {
	color: var(--louv-muted);
	font-size: 14px;
}
.louv__section--lover-details {
	background: #e9e4d9;
}
.louv__lover-details {
	max-width: 1180px;
	margin-inline: auto;
	align-items: center;
	gap: clamp(28px, 6vw, 80px);
}
.louv__lover-detail-visual img {
	width: 100%;
	max-height: 560px;
	object-fit: cover;
}
.louv__lover-detail-copy > h3 {
	margin-top: 32px;
}
.louv__section--lover-products {
	padding-bottom: 64px;
}
.louv__section--lover-products .woocommerce {
	max-width: 1280px;
	margin: 38px auto 0;
}
.louv__section--lover-products .woocommerce ul.products {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
.louv__section--lover-closing {
	background: #263d32;
	color: #f7f3ec;
	text-align: center;
}
.louv__section--lover-closing .louv__eyebrow,
.louv__section--lover-closing h2,
.louv__section--lover-closing p,
.louv__section--lover-closing a {
	color: #f7f3ec;
}
.louv__section--lover-closing .louv__link + .louv__link {
	margin-top: 8px;
}
@media (max-width: 781px) {
	.louv__lover-hero,
	.louv__lover-details {
		flex-direction: column;
	}
	.louv__lover-yarns {
		grid-template-columns: 1fr;
	}
	.louv__section--lover-products .woocommerce ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 480px) {
	.louv__section--lover-products .woocommerce ul.products {
		grid-template-columns: 1fr;
	}
}
.louv__blog-list {
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.louv__blog-card {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
	width: 100%;
	background: #e5ebdf;
	border-bottom: 4px solid #7a906b;
	overflow: hidden;
}
.louv__blog-card:nth-child(even) {
	background: #f0e0d7;
	border-color: #b76a50;
}
.louv__blog-image {
	display: block;
	min-height: 340px;
}
.louv__blog-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.louv__blog-body {
	padding: clamp(24px, 4vw, 48px);
	align-self: center;
}
.louv__blog-body time {
	font-size: 13px;
	color: #53624d;
}
.louv__blog-body h2 {
	font-size: clamp(28px, 3.2vw, 42px);
	margin-block: 16px;
}
.louv__blog-body h2 a {
	color: inherit;
}
.louv__blog-read {
	display: inline-block;
	padding: 12px 20px;
	background: #263d32;
	color: #fff;
	font-weight: 600;
}
.louv__blog-read:hover {
	background: #39513e;
	color: #fff;
}
.louv__blog .pagination {
	margin-top: 40px;
}
@media (max-width: 689px) {
	.louv__blog-card {
		grid-template-columns: minmax(0, 1fr);
	}
	.louv__blog-image {
		min-height: 0;
	}
	.louv__blog-image img {
		height: auto;
		aspect-ratio: 4 / 3;
	}
}
.louv__editorial-gallery {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	margin-block: 36px;
}
.louv__editorial-gallery figure {
	margin: 0;
}
.louv__editorial-gallery img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}
.louv__editorial-footer {
	border-top: 1px solid var(--louv-line);
	margin-top: 48px;
	padding-top: 32px;
}
@media (max-width: 479px) {
	.louv__editorial-gallery {
		grid-template-columns: 1fr;
	}
}
.entry-content.is-layout-constrained > .louv__article {
	width: 100%;
	max-width: 1180px;
	margin-inline: auto;
}
#post-12467 .entry-content.is-layout-constrained > .wp-block-group.louv {
	width: var(--theme-container-width);
	max-width: var(--theme-normal-container-max-width);
	margin-inline: auto;
}
.louv__article > .louv__section--editorial {
	width: 100%;
	max-width: none;
	margin-inline: 0;
}
.louv__article .louv__container--wide {
	width: 100%;
	max-width: none;
}
.louv__article--nature .louv__section--nature-intro img {
	width: 100%;
	max-height: 620px;
	object-fit: cover;
}
.louv__article-pattern-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 20px;
	margin-top: 32px;
}
.louv__article-pattern-card {
	display: flex;
	min-width: 0;
	flex-direction: column;
	border: 1px solid var(--louv-line);
	border-radius: 8px;
	background: #fff;
	overflow: hidden;
}
.louv__article-pattern-image {
	display: grid;
	min-height: 220px;
	place-items: center;
	background: #f7f3ec;
}
.louv__article-pattern-image img {
	width: 100%;
	height: 100%;
	max-height: 340px;
	object-fit: cover;
}
.louv__article-pattern-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: flex-start;
	padding: 18px;
}
.louv__article-pattern-body .louv__eyebrow {
	margin-bottom: 8px;
	font-size: 11px;
}
.louv__article-pattern-body h3 {
	margin: 0 0 10px;
	font-size: 19px;
}
.louv__article-pattern-designer {
	color: var(--louv-muted);
	font-size: 14px;
}
.louv__article-pattern-action {
	margin-top: auto;
	padding-top: 12px;
	font-weight: 600;
}
.louv__article--patterns .louv__section--patterns-selection {
	background: #f7f3ec;
}
.louv__article--nature .louv__editorial-gallery {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.louv__article--nature .louv__caption {
	margin-top: -8px;
	color: var(--louv-muted);
	font-size: 14px;
}
@media (max-width: 1023px) {
	.louv__article-pattern-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (max-width: 689px) {
	.louv__article-pattern-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px;
	}
	.louv__article-pattern-image {
		min-height: 180px;
	}
	.louv__article-pattern-body {
		padding: 12px;
	}
}
@media (max-width: 479px) {
	.louv__article--nature .louv__editorial-gallery {
		grid-template-columns: 1fr;
	}
}
@media (max-width: 781px) {
	#offcanvas .louv__languages {
		margin-bottom: 8px;
	}
	#offcanvas .louv__menu-search-form {
		margin-top: 0;
	}
	#offcanvas .louv__menu-search-form {
		position: relative;
		top: auto;
		left: auto;
		right: auto;
	}
	#offcanvas .louv__menu-search-suggestions {
		position: absolute;
		bottom: calc(100% - 8px);
		left: 10px;
		right: 10px;
		z-index: 1;
		max-height: min(45vh, 360px);
		overflow-y: auto;
		border-color: var(--louv-line);
		background: #fff;
	}
	#offcanvas .louv__menu-search-suggestion {
		border-bottom: 1px solid var(--louv-line);
	}
	#offcanvas .louv__menu-search-suggestion-link,
	#offcanvas .louv__menu-search-suggestion-type {
		color: var(--louv-forest);
	}
	#offcanvas .louv__menu-search-suggestion-title {
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	#offcanvas .louv__menu-search-suggestion-type {
		color: var(--louv-muted);
	}
	#offcanvas .louv__menu-search-suggestion.is-active {
		background: var(--louv-linen);
	}
	#offcanvas .louv__menu-search-suggestion--all .louv__menu-search-suggestion-link {
		color: var(--louv-forest);
	}
}

/* ==========================================================================
   13. Page 404
   ========================================================================== */

.louv__section--404 {
	position: relative;
	padding: clamp(55px, 8vw, 100px) 24px;
	background: radial-gradient(ellipse at 12% 8%, #f7e8d7 0, transparent 34%), linear-gradient(145deg, #fffaf2 0%, #f1f0e4 100%);
	text-align: center;
	overflow: hidden;
}
.louv__section--404 > .louv__container {
	position: relative;
	z-index: 1;
	max-width: 900px;
	padding: clamp(30px, 6vw, 64px) clamp(20px, 5vw, 60px);
	border: 1px solid #e7d8c8;
	background: rgb(255 255 255 / 66%);
}
.louv__section--404 > .louv__container::before {
	content: '404';
	position: absolute;
	top: -42px;
	right: 4%;
	z-index: -1;
	color: rgb(166 94 70 / 8%);
	font-family: Georgia, serif;
	font-size: clamp(150px, 28vw, 280px);
	font-weight: 700;
	line-height: 1;
	pointer-events: none;
}
.louv__section--404 h1 {
	font-size: clamp(36px, 5vw, 62px);
	margin: 12px auto 20px;
	max-width: 16ch;
}
.louv__section--404 .louv__eyebrow {
	color: #a65e46;
	font-weight: 700;
	letter-spacing: .16em;
}
.louv__section--404 > p:not(.louv__eyebrow) {
	max-width: 52ch;
	margin-inline: auto;
	color: var(--louv-muted);
	font-size: 17px;
	line-height: 1.7;
}
.louv__404-actions {
	justify-content: center;
	margin: 30px 0 34px;
}
.louv__404-actions .wp-block-button__link {
	min-height: 50px;
	padding: 14px 24px;
	background: #39513e;
	color: #fff;
	font-weight: 600;
	text-decoration: none;
}
.louv__404-actions .wp-block-button__link:hover,
.louv__404-actions .wp-block-button__link:focus-visible {
	background: #a65e46;
	color: #fff;
}
.louv__404-search {
	max-width: 520px;
	margin: 0 auto;
	gap: 8px;
}
.louv__404-search .wp-block-search__input {
	padding: 11px 16px;
	border: 1px solid var(--louv-line);
	border-radius: 0;
	background: var(--louv-paper);
	font: inherit;
	color: var(--louv-ink);
}
.louv__404-search .wp-block-search__button {
	padding: 11px 22px;
	border: 0;
	border-radius: 0;
	background: #a65e46;
	color: #fff;
	font-size: 15px;
	cursor: pointer;
}
.louv__404-search input:focus-visible,
.louv__404-search .wp-block-search__button:focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 2px;
}
.louv__404-lead {
	margin: 44px 0 18px;
	font-size: 14px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--louv-muted);
}
.louv__404-links {
	gap: 12px 30px;
	justify-content: center;
}
.louv__404-link {
	flex: 0 1 auto;
	padding: 12px 16px;
	border: 1px solid #e7d8c8;
	background: #fffaf2;
}
.louv__404-link a {
	color: #39513e;
	font-weight: 600;
	text-decoration: none;
}
.louv__404-link a:hover {
	color: #a65e46;
}
@media (max-width: 640px) {
	.louv__section--404 {
		padding: 32px 16px;
	}
	.louv__section--404 > .louv__container {
		padding: 35px 18px;
	}
	.louv__404-links {
		gap: 10px;
	}
}

/* ==========================================================================
   14. Page contact
   ========================================================================== */

/* Contact et carte cadeau suivent la respiration commune : seule la mesure
   du texte change, via `.louv__container` à l'intérieur. */
.louv__section--contact,
.louv__section--gift {
	max-width: none;
}
.louv__contact-page {
	padding: clamp(24px, 5vw, 72px);
}
.louv__contact-layout {
	display: grid;
	grid-template-columns: minmax(0, 4fr) minmax(0, 5fr);
	max-width: 1180px;
	margin-inline: auto;
	border-top: 6px solid var(--louv-clay);
}
.louv__contact-intro {
	padding: clamp(24px, 4vw, 56px);
	background: var(--louv-forest);
	color: var(--louv-paper);
}
.louv__contact-intro h1 {
	font-size: clamp(38px, 4vw, 60px);
	color: var(--louv-paper);
}
.louv__contact-intro .louv__eyebrow {
	color: #d6c2a8;
}
.louv__contact-intro a {
	color: var(--louv-paper);
	text-decoration: underline;
	text-underline-offset: 4px;
	overflow-wrap: anywhere;
}
.louv__contact-details {
	margin-block: 36px;
	padding-top: 24px;
	border-top: 1px solid #697d6a;
}
.louv__contact-details p > span:first-child {
	display: block;
	font-size: 12px;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: #d6c2a8;
}
.louv__contact-signature {
	font-family: Georgia, serif;
	font-size: 22px;
	font-style: italic;
}
.louv__contact-panel {
	padding: clamp(24px, 4vw, 56px);
	background: #fffdf8;
}
.louv__contact-panel h2 {
	font-size: clamp(32px, 4vw, 46px);
	margin: 12px 0 30px;
}
.louv__contact-fields {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px 16px;
}
.louv__contact-field--full {
	grid-column: 1 / -1;
}
.louv__contact-field[hidden],
.louv__contact-error[hidden],
.louv__contact-feedback[hidden] {
	display: none;
}
.louv__contact-field label {
	display: block;
	margin-bottom: 8px;
	font-size: 14px;
	font-weight: 600;
}
.louv__contact-field label span {
	color: var(--louv-clay);
}
.louv__contact-field :is(input, select, textarea) {
	width: 100%;
	background: #fff;
	border: 1px solid var(--louv-line);
	border-radius: 0;
	color: var(--louv-ink);
	min-height: 48px;
	padding: 12px;
}
.louv__contact-field textarea {
	resize: vertical;
}
.louv__contact-field :is(input, select, textarea):focus-visible {
	outline: 2px solid var(--louv-forest);
	outline-offset: 2px;
}
.louv__contact-field [aria-invalid="true"] {
	border-color: #8c1f1b;
}
.louv__contact-error,
.louv__contact-feedback[data-state="error"] {
	color: #8c1f1b;
	font-size: 13px;
}
.louv__contact-error {
	display: block;
	margin-top: 6px;
}
.louv__contact-honeypot {
	position: absolute;
	left: -10000px;
}
[data-contact-captcha] {
	margin-top: 24px;
	min-height: 65px;
}
.louv__contact-note {
	font-size: 12px;
	color: var(--louv-muted);
	margin-block: 20px;
}
.louv__contact-submit {
	width: 100%;
	min-height: 50px;
	background: var(--louv-forest);
	color: #fff;
	border-radius: 0;
}
.louv__contact-submit:hover {
	background: var(--louv-forest-light);
	color: #fff;
}
.louv__contact-submit:disabled {
	opacity: .6;
	cursor: wait;
}
@media (max-width: 850px) {
	.louv__contact-layout {
		grid-template-columns: minmax(0, 1fr);
	}
}
@media (max-width: 479px) {
	.louv__contact-fields {
		grid-template-columns: minmax(0, 1fr);
	}
}

.louv__contact-list {
	display: grid;
	gap: 14px;
	margin: 34px 0 30px;
	padding: 0;
	list-style: none;
}
.louv__contact-line {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 8px 20px;
	padding: 14px 0;
	border-top: 1px solid var(--louv-line);
}
.louv__contact-label {
	flex: 0 0 120px;
	font-size: 14px;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--louv-muted);
}
.louv__contact-value {
	font-size: 18px;
}
.louv__contact-value a {
	color: var(--louv-forest);
	text-underline-offset: 3px;
}
.louv__contact-address {
	margin-top: 24px;
	font-size: 15px;
	color: var(--louv-muted);
}
@media (max-width: 640px) {
	.louv__contact-label {
		flex-basis: 100%;
	}
}

/* ==========================================================================
   15. Page carte cadeau
   ========================================================================== */

/* L'en-tête « Offrir / titre / introduction » occupe toute la largeur, les
   étapes et la grille produit se partagent la ligne du dessous. Le conteneur
   texte est transparent : ses enfants deviennent directement les lignes de la
   grille, l'alignement à gauche continuant de s'hériter. */
.louv__section--gift {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 40px;
	align-items: start;
	text-align: center;
}
.louv__section--gift > .louv__container--text {
	display: contents;
	text-align: left;
}
.louv__section--gift > .louv__container--text > .louv__eyebrow,
.louv__section--gift > .louv__container--text > h1,
.louv__section--gift > .louv__container--text > p,
.louv__section--gift > .louv__container--gift-footer {
	grid-column: 1 / -1;
}
.louv__section--gift > .louv__container--gift-footer {
	margin-top: 40px;
	padding-top: 34px;
	border-top: 1px solid var(--louv-line);
}
.louv .louv__section--gift .woocommerce ul.products {
	grid-template-columns: minmax(0, 320px);
	justify-content: center;
}
.louv__section--gift .woocommerce ul.products li.product {
	width: 100%;
	margin-inline: 0;
}
.louv__section--gift .woocommerce ul.products .ajax_add_to_cart.added {
	display: inline-flex;
}
.louv__section--gift .woocommerce ul.products li.product .button {
	display: inline-flex;
	margin-inline: auto;
}
.louv__section--gift .wp-block-buttons {
	justify-content: center;
}
.louv__gift-actions .louv__link a {
	color: var(--louv-forest);
}
.louv__gift-lead {
	margin-top: 52px;
	padding-top: 34px;
	border-top: 1px solid var(--louv-line);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--louv-muted);
}
.louv__gift-steps {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 26px 40px;
	margin: 26px 0 34px;
	padding: 0;
	list-style: none;
	counter-reset: louv-gift;
}
.louv__gift-step {
	counter-increment: louv-gift;
	padding-top: 18px;
	border-top: 1px solid var(--louv-line);
}
.louv__gift-step::before {
	content: counter(louv-gift, decimal-leading-zero);
	display: block;
	margin-bottom: 10px;
	font-family: Georgia, serif;
	font-size: 15px;
	color: var(--louv-clay);
}
.louv__gift-step-title {
	margin: 0 0 8px;
	font-size: 21px;
	font-weight: 600;
}
.louv__gift-step-text {
	margin: 0;
	font-size: 15px;
	line-height: 1.7;
	color: var(--louv-muted);
}
.louv__gift-actions {
	margin-top: 34px;
	gap: 20px;
	align-items: center;
	flex-direction: column;
}
.louv__gift-actions > .wp-block-column {
	width: 100%;
	flex-basis: auto;
}
.louv__gift-empty {
	font-style: italic;
	color: var(--louv-muted);
}
@media (max-width: 780px) {
	.louv__gift-steps {
		grid-template-columns: minmax(0, 1fr);
	}
}
@media (max-width: 960px) {
	.louv__section--gift {
		grid-template-columns: minmax(0, 1fr);
	}
	.louv__section--gift > .louv__container--text {
		text-align: center;
	}
	/* Empilés, les deux blocs ont besoin de l'écart que la grille fournissait. */
	.louv__section--gift > .woocommerce {
		margin-top: 40px;
	}
}

/* ==========================================================================
   16. Intégration Louv sur l'accueil
   ========================================================================== */

body.home:has(.louv) {
	background: var(--louv-paper);
}
body.home:has(.louv) .ct-container-full {
	padding-block: 0;
}
body.home:has(.louv) article > .entry-content {
	margin: 0;
}
body.home:has(.louv) .ct-header .site-title {
	font-family: Georgia, serif;
	font-weight: 400;
	color: var(--louv-forest);
}
body.home:has(.louv) .ct-footer {
	background: var(--louv-linen);
}
body.home:has(.louv) .ct-footer [data-row] {
	background: transparent;
}

/* Le pied de page est centré sur toutes les pages. */
#footer.ct-footer .menu {
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px 22px;
}
#footer.ct-footer [data-column] {
	text-align: center;
}
#footer.ct-footer .ct-footer-copyright {
	text-align: center;
}
#footer.ct-footer a {
	color: var(--louv-forest);
	font-size: 13px;
}

/* ==========================================================================
   17. Mini-panier (classes natives Louv et WooCommerce)
   ========================================================================== */

/* Louv fixe `--theme-text-color` sur `.ct-cart-content` avec un sélecteur
   plus spécifique : le bloc est visé par son id pour reprendre la main. */
#header .ct-header-cart .ct-cart-content {
	--mini-cart-background-color: #fff;
	--theme-text-color: #292d29;
	--theme-link-initial-color: #263d32;
	--theme-link-hover-color: #263d32;
	margin-top: 0;
	background: #fff;
	color: #292d29;
	border: 1px solid #e8e0d3;
	box-shadow: 0 14px 40px rgb(38 61 50 / 14%);
	max-height: min(650px, 75vh);
	overflow-y: auto;
}
#header .ct-header-cart .ct-cart-content .woocommerce-mini-cart {
	max-height: none;
	overflow: visible;
}
#woo-cart-panel .ct-panel-inner,
#woo-cart-panel .ct-panel-content {
	--theme-text-color: #292d29;
	--theme-link-initial-color: #263d32;
	--theme-link-hover-color: #263d32;
	background: #fff;
	color: #292d29;
}
.woocommerce-mini-cart__total.total {
	margin-top: 0;
}
.woocommerce-mini-cart .mini_cart_item:last-child {
	border-bottom: 1px solid #d9d5ca;
}
#header .ct-header-cart .ct-cart-content a:not(.button),
#woo-cart-panel .ct-panel-content a:not(.button) {
	color: #263d32;
}
#header .ct-header-cart .ct-cart-content a:not(.button):hover,
#woo-cart-panel .ct-panel-content a:not(.button):hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}
#header .ct-header-cart .ct-cart-content .woocommerce-mini-cart__total.total,
#woo-cart-panel .ct-panel-content .woocommerce-mini-cart__total.total {
	color: #263d32;
}
@media (min-width: 1450px) {
	.ct-header-cart.louv__cart-preview > .ct-cart-content {
		opacity: 1;
		visibility: visible;
		transform: translate3d(0, 0, 0);
		right: 0;
		width: 310px;
		padding: 22px 20px;
	}
}
#header .ct-header-cart .ct-cart-content a.button,
#header .ct-header-cart .ct-cart-content button.button,
#woo-cart-panel .ct-panel-content a.button,
#woo-cart-panel .ct-panel-content button.button {
	background: #263d32;
	background-image: none;
	color: #fff;
	border: 0;
	border-radius: 0;
	font-weight: 600;
	min-height: 44px;
}
#header .ct-header-cart .ct-cart-content a.button:hover,
#header .ct-header-cart .ct-cart-content button.button:hover,
#woo-cart-panel .ct-panel-content a.button:hover,
#woo-cart-panel .ct-panel-content button.button:hover {
	background: #39513e;
	color: #fff;
}
.ct-cart-content a:focus-visible,
#woo-cart-panel a:focus-visible {
	outline: 3px solid #a65e46;
	outline-offset: 3px;
}

/* Panier vide. Louv masque le panneau quand le compteur vaut zéro et réserve
   le montage de Popper — qui porte l'alignement et l'apparition — au compteur non
   nul : survoler le panier vide n'affichait donc rien. Le message est rendu par
   `inc/cart.php`, l'affichage et le survol sont repris ici. Le sélecteur est
   plus spécifique que `.ct-cart-content[data-count="0"]` du parent, il gagne
   donc sans dépendre de l'ordre de chargement de la feuille non critique. */
#header .ct-header-cart .ct-cart-content[data-count="0"] {
	display: block;
	right: 0;
	width: 310px;
	padding: 26px 22px;
}
#header .ct-header-cart:hover > .ct-cart-content[data-count="0"],
#header .ct-header-cart:focus-within > .ct-cart-content[data-count="0"] {
	opacity: 1;
	visibility: visible;
	transform: translate3d(0, 0, 0);
}
.louv__cart-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	text-align: center;
}
.louv__cart-empty-icon {
	width: 34px;
	height: 34px;
	color: var(--louv-muted);
}
.louv__cart-empty-title {
	margin: 0;
	font-size: 15px;
	font-weight: 600;
	color: #292d29;
}
.louv__cart-empty-text {
	margin: 0;
	font-size: 14px;
	line-height: 1.6;
	color: var(--louv-muted);
}
/* Le lien reprend la pastille du mini-panier, déjà stylée par le thème. */
.louv__cart-empty-link {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	margin-top: 6px;
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
}

/* ==========================================================================
   18. Tablette
   ========================================================================== */

/* La gouttière est pilotée par --louv-gutter (clamp), aucune reprise ici. */
@media (min-width: 782px) and (max-width: 1100px) {
	.louv__hero-body {
		padding: 40px 30px;
	}
	.louv h1 {
		font-size: clamp(42px, 5vw, 56px);
	}
	.louv__hero-media img {
		min-height: 520px;
	}
	.louv .woocommerce ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 28px 20px;
	}
	.louv__cards {
		gap: 20px;
	}
	.louv__card-link {
		min-height: 340px;
	}
	.louv__feature-body {
		padding: 40px 30px;
	}
}

/* ==========================================================================
   19. Mobile
   ========================================================================== */

@media (max-width: 781px) {
	.louv__section {
		--louv-gutter: 22px;
		padding: 45px var(--louv-gutter);
	}
	.louv__section--atelier {
		padding: 0;
	}
	.louv__atelier {
		flex-direction: column;
		gap: 0;
	}
	.louv__atelier-media {
		order: -1;
		width: 100%;
	}
	.louv__atelier-media figure,
	.louv__atelier-media img {
		width: 100%;
		height: 150px;
	}
	.louv__atelier-media img {
		object-fit: cover;
	}
	.louv__section--atelier .louv__atelier-body {
		margin-top: 0;
		padding: 30px 24px;
	}
	.louv__section--shop {
		padding-block: 35px;
	}
	.louv__section--community {
		--louv-gutter: 24px;
		padding-block: 50px;
	}
	.louv__hero-media img {
		min-height: 0;
		height: 240px;
	}
	.louv__hero-body {
		padding: 30px 24px;
	}
	.louv h1 {
		font-size: clamp(36px, 7vw, 46px);
	}
	.louv__signature {
		margin-top: 12px;
	}
	.louv__promises {
		padding: 20px;
		gap: 6px;
	}
	.louv__card-link {
		min-height: 380px;
	}
	.louv__feature-media img {
		min-height: 0;
		height: 420px;
	}
	.louv .woocommerce ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 24px 16px;
	}
	.louv .woocommerce ul.products .woocommerce-loop-product__title {
		font-size: 14px;
	}
	.louv .woocommerce ul.products li.product .button {
		width: 100%;
		font-size: 12px;
		padding-inline: 8px;
	}
	body.home:has(.louv) .ct-header .site-title {
		font-size: 17px;
	}
	.ct-cart-content {
		max-width: calc(100vw - 32px);
	}
}
@media (min-width: 600px) and (max-width: 781px) {
	.louv__hero {
		flex-wrap: nowrap !important;
	}
	.louv__hero > .wp-block-column {
		flex-basis: 50% !important;
		min-width: 0;
	}
	.louv__hero-media img {
		height: 100%;
		min-height: 430px;
	}
	.louv__cards {
		flex-wrap: nowrap !important;
		gap: 16px;
	}
	.louv__cards > .wp-block-column {
		flex-basis: 0 !important;
		min-width: 0;
	}
	.louv__card img {
		height: 210px;
	}
	.louv__card h3 {
		font-size: 25px;
	}
	.louv__promises {
		flex-wrap: nowrap !important;
	}
	.louv__promises > .wp-block-column {
		flex-basis: 0 !important;
	}
}
@media (prefers-reduced-motion: reduce) {
	.louv__card img {
		transition: none;
	}
	.louv__toast {
		animation: none;
	}
}
/* ==========================================================================
   19. Pages boutique : calendrier de l'avent, précommande, nuancier, bases,
       Sock Collection, laines non superwash
   ========================================================================== */

/* Ces pages ne sont pas la homepage : `.louv` y porte le fond mais sans
   rogner la respiration gérée par `.louv__section`. */
.louv__section--adventpage,
.louv__section--preorder,
.louv__section--nuancier,
.louv__section--bases,
.louv__section--sockcollection,
.louv__section--nonsw,
.louv__section--chales-shawls,
.louv__section--bonnets-hats,
.louv__section--pulls-sweaters {
	--louv-container-width: 1180px;
}
.louv__section--adventpage .louv__container,
.louv__section--preorder .louv__container,
.louv__section--nuancier .louv__container,
.louv__section--bases .louv__container,
.louv__section--sockcollection .louv__container,
.louv__section--nonsw .louv__container,
.louv__section--chales-shawls .louv__container,
.louv__section--bonnets-hats .louv__container,
.louv__section--pulls-sweaters .louv__container {
	padding-inline: var(--louv-gutter);
}
.louv__lead {
	font-size: 18px;
	color: var(--louv-muted);
	max-width: 62ch;
}
.louv__section--grid {
	margin-top: 12px;
	padding-top: 56px;
	border-top: 1px solid var(--louv-line);
}
.louv__section--grid > .wp-block-buttons {
	margin-bottom: 22px;
}

/* --- Calendrier de l'avent ------------------------------------------------ */

.louv__section--adventpage {
	padding-bottom: 20px;
}
.louv__section--adventpage .louv__advent {
	margin-top: 18px;
}
.louv__section--adventpage .louv__advent-items {
	font-size: 15px;
}
.louv__section--adventpage .louv__advent-body {
	text-align: center;
}
.louv__section--adventpage .louv__advent-media {
	flex: 0 1 320px;
}

/* Grille « Choisir mon calendrier » : 4 colonnes sur desktop (25% chaque),
   centrées pour que 2 produits occupent le milieu (25% vide de chaque côté).
   1 colonne sur mobile. */
.louv__section--adventpage .woocommerce ul.products {
	justify-content: center;
	margin-left: 25%;
}
@media (max-width: 781px) {
	.louv__section--adventpage .woocommerce ul.products {
		grid-template-columns: 1fr;
		gap: 24px;
		margin-left: 0;
	}
}
@media (min-width: 782px) and (max-width: 1023px) {
	.louv__section--adventpage .woocommerce ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 28px 20px;
		margin-left: 0;
	}
}

/* --- Précommande ---------------------------------------------------------- */

.louv__preorder-contact {
	margin-top: 26px;
	font-size: 17px;
}
.louv__preorder-contact a {
	color: var(--louv-forest);
	text-underline-offset: 3px;
}
.louv__preorder-delay {
	font-size: 14px;
	letter-spacing: .05em;
	color: var(--louv-clay);
}

/* --- Sock Collection ------------------------------------------------------- */

/* La consigne de lavage accompagnait chaque fiche produit de la collection :
   elle est reprise sous la composition pour que la page y réponde seule. */
.louv__collection-note {
	margin-top: 4px;
	font-size: 14px;
	letter-spacing: .05em;
	color: var(--louv-clay);
}

/* --- Collections kits : châles, bonnets, pulls ----------------------------- */

/* La bannière livraison offerte est un lien interne vers les politiques de
   vente — centré, avec une icône de colis SVG. */
.louv__shipping-banner {
	text-align: center;
	font-size: 14px;
}
.louv__shipping-banner a {
	color: var(--louv-forest);
	text-decoration: none;
}
.louv__shipping-banner strong {
	font-family: Georgia, serif;
	font-size: 18px;
	font-weight: 700;
}
.louv__shipping-svg {
	vertical-align: middle;
	margin-right: 8px;
	color: var(--louv-clay);
}
.louv .wp-block-group.louv__section--chales-shawls h1,
.louv .wp-block-group.louv__section--bonnets-hats h1,
.louv .wp-block-group.louv__section--pulls-sweaters h1 {
	text-align: center;
	margin-top: 12px;
}
/* Une seule carte : la grille reste sur 3 colonnes comme les autres pages. */
.louv__page--collection .louv__shop-grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 1023px) {
	.louv__page--collection .louv__shop-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 680px) {
	.louv__page--collection .louv__shop-grid {
		grid-template-columns: 1fr;
	}
}

/* --- Nuancier ------------------------------------------------------------- */

.louv__nuancier-group {
	margin-bottom: 58px;
}
/* Sur-titre de rubrique :.aspect `.louv__eyebrow`, mais en `h2` pour la
   structure du document. Le sélecteur doit dépasser `.louv h2`. */
.louv .louv__group-title {
	display: block;
	padding-bottom: 14px;
	margin-bottom: 26px;
	border-bottom: 1px solid var(--louv-line);
	font-family: system-ui, sans-serif;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
	text-align: left;
	color: #53624d;
}
.louv__swatches {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 26px 20px;
}
.louv__swatch {
	display: flex;
	flex-direction: column;
	gap: 11px;
	margin: 0;
}
.louv__swatch img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 2px;
	background: var(--louv-linen);
	transition: transform .45s cubic-bezier(.22, .61, .36, 1);
}
.louv__swatch:hover img {
	transform: scale(1.035);
}
.louv__swatch-name {
	font-size: 11px;
	letter-spacing: .07em;
	text-align: center;
	color: var(--louv-muted);
}
@media (max-width: 900px) {
	.louv__swatches {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}
@media (max-width: 680px) {
	.louv__swatches {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 20px 14px;
	}
}
@media (max-width: 460px) {
	.louv__swatches {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* --- Les bases ------------------------------------------------------------ */

/* Le chapeau court la mesure de 62ch des autres pages : ici le texte occupe
   toute la largeur du conteneur large qui accueille les fiches. */
.louv__section--bases .louv__lead {
	max-width: none;
}

.louv__base {
	padding-block: 52px;
	border-top: 1px solid var(--louv-line);
}
.louv__base:first-child {
	padding-top: 12px;
	border-top: 0;
}
.louv__base-columns {
	gap: clamp(28px, 5vw, 64px);
	align-items: center;
}
.louv__base-media img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 2px;
	background: var(--louv-linen);
}
.louv__base-body h2 {
	font-size: clamp(28px, 2.6vw, 38px);
	margin: 0 0 4px;
}
.louv__base-metric {
	margin: 0;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .04em;
	color: var(--louv-forest);
}
.louv__base-specs {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 10px;
	margin: 14px 0 22px;
	padding: 0;
	list-style: none;
}
.louv__base-spec {
	padding: 5px 12px;
	border: 1px solid var(--louv-line);
	border-radius: 999px;
	font-size: 12px;
	color: var(--louv-muted);
}
.louv__base-body p {
	margin: 0 0 12px;
	font-size: 16px;
}
/* --- Fiches de bases ------------------------------------------------------ */

/* La fiche d'une base reprend le gabarit du comparatif : mêmes colonnes, mêmes
   pastilles. Seules l'introduction et la fermeture lui sont propres. */
.louv__section--baseintro,
.louv__section--basebody {
	--louv-container-width: 1180px;
}
.louv__section--baseintro .louv__container,
.louv__section--basebody .louv__container {
	padding-inline: var(--louv-gutter);
}
.louv__section--baseintro h1 {
	margin-bottom: 6px;
}
.louv__section--baseintro .louv__base-metric {
	font-size: 17px;
}
/* Le sur-titre de la production — « FIL D'ÉTÉ en vente du 21 mars au
   21 septembre » — annonce une saisonnalité, pas un argument de vente : il
   encadre la métrique plutôt que de la suivre. */
.louv__base-banner {
	display: inline-block;
	margin-top: 22px;
	padding: 8px 16px;
	border: 1px solid var(--louv-clay);
	border-radius: 999px;
	font-size: 12px !important;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--louv-clay);
}
/* La fiche est la première chose de sa section : sa bordure de séparation,
   qui sert à empiler les bases du comparatif, n'a rien à séparer ici. */
.louv__section--basebody .louv__base {
	padding-top: 0;
	border-top: 0;
}
.louv__base-notice {
	margin-top: 20px !important;
	font-size: 14px !important;
	font-weight: 600;
	color: var(--louv-clay);
}
.louv__base-notice a {
	text-underline-offset: 3px;
}
/* Le bobinage est un service unique : laissé sur quatre colonnes, il laisserait
   trois quarts de vide à sa droite. */
.louv__section--baseservice .woocommerce {
	max-width: 320px;
}
@media (max-width: 782px) {
	.louv__section--adventpage .louv__advent-media {
		flex: 1 1 100%;
	}
}
@media (prefers-reduced-motion: reduce) {
	.louv__swatch img {
		transition: none;
	}
	.louv__swatch:hover img {
		transform: none;
	}
}

/* ==========================================================================
   20. Page /boutique
   ========================================================================== */

/* La page porte le fond papier : les sections louv__section--shoppage gèrent
   elles-mêmes leur respiration, comme sur les autres pages. Le conteneur
   WooCommerce garde la sienne, qui encadre la grille des catégories. */
body.woocommerce-shop main {
	background: var(--louv-paper);
}
body.woocommerce-shop main .ct-container {
	background: var(--louv-paper);
}
/* La page est rendue par le thème hors du conteneur Louv : la largeur des
   sections vient de la page, pas de chaque section. */
.louv__page--shoppage {
	--louv-container-width: 1180px;
}
.louv__page--shoppage .louv__container {
	padding-inline: var(--louv-gutter);
}
.louv__section--shoppage {
	padding-bottom: 0;
}
.louv__section--shopintro .louv__lead {
	max-width: 68ch;
}
.louv__shop-groups {
	padding-block: 12px 0;
}
.louv__shop-group {
	margin-bottom: 58px;
}
.louv__shop-group:last-child {
	margin-bottom: 12px;
}
/* Les vignettes de la boutique sont plus petites que les cartes éditoriales :
   la composition tient sur deux lignes. */
.louv__shop-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 26px;
}
.louv__shop-grid--pair {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
/* Les vignettes vont des laines très foncées aux kits photographiés sur fond
   clair : le voile est renforcé pour que le texte blanc reste lisible partout. */
.louv__shop-grid .louv__card-link {
	min-height: 300px;
	background: linear-gradient(180deg, rgba(20, 26, 22, .3) 0%, rgba(20, 26, 22, .52) 42%, rgba(20, 26, 22, .88) 100%);
}
.louv__shop-grid .louv__card-body {
	padding: 24px 22px 22px;
}
.louv .louv__shop-grid .louv__card-title {
	font-size: clamp(22px, 1.9vw, 27px);
}
.louv__shop-grid .louv__card-text {
	font-size: 14px;
	line-height: 1.6;
}
.louv__shop-grid .louv__card-action {
	margin-top: 12px;
	font-size: 11px;
}
@media (max-width: 1023px) {
	.louv__shop-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 781px) {
	.louv__shop-groups {
		padding-top: 0;
	}
	.louv__shop-group {
		margin-bottom: 40px;
	}
	.louv__shop-grid,
	.louv__shop-grid--pair {
		grid-template-columns: minmax(0, 1fr);
		gap: 20px;
	}
	.louv__shop-grid .louv__card-link {
		min-height: 260px;
	}
}

/* La grille des catégories WooCommerce suit le titre de la page. La plupart des
   catégories n'ont pas de vignette : plutôt qu'une répétition de visuels de
   remplacement, la grille devient une liste typographique. Le conteneur Louv
   ne pose pas de `.woocommerce` sur la boutique, d'où le sélecteur direct. */
body.woocommerce-shop .woo-listing-top {
	display: none;
}
body.woocommerce-shop ul.products {
	padding-inline: var(--louv-gutter);
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
}
body.woocommerce-shop ul.products li.product-category {
	background: var(--louv-paper);
	border: 1px solid var(--louv-line);
	padding: 20px 22px;
}
body.woocommerce-shop ul.products li.product-category figure {
	margin: 0;
}
/* Seules les vignettes de remplacement sont masquées : une vraie photo de
   catégorie s'afficherait normalement. */
body.woocommerce-shop ul.products li.product-category img[src*="woocommerce-placeholder"] {
	display: none;
}
body.woocommerce-shop ul.products .woocommerce-loop-category__title {
	font-family: Georgia, serif;
	font-weight: 400;
	font-size: 17px;
	line-height: 1.35;
	letter-spacing: -.01em;
	text-transform: none;
	color: var(--louv-forest);
}
body.woocommerce-shop ul.products .woocommerce-loop-category__title a {
	color: inherit;
}
body.woocommerce-shop ul.products .count {
	background: none;
	color: var(--louv-muted);
	font-size: 12px;
	font-weight: 600;
}
@media (max-width: 1023px) {
	body.woocommerce-shop ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (max-width: 781px) {
	body.woocommerce-shop ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 10px;
	}
	body.woocommerce-shop ul.products li.product-category {
		padding: 16px 18px;
	}
}

/* La pause reste visible dès l'accueil, sans dépendre d'une animation ni
   d'une grille de produits qui pourrait suggérer des inscriptions ouvertes. */
.louv__page--yarnclub .louv__container {
	max-width: none;
}

/* Les pages concernées remplissent le conteneur Louv, sans s'étendre jusqu'aux
   bords de l'écran. */
.entry-content.is-layout-constrained > .louv__page--patterns {
	width: 100%;
	max-width: 1180px;
	margin-inline: auto;
}
.louv__page--patterns .louv__section--patterns,
.louv__page--patterns .louv__container--wide {
	width: 100%;
	max-width: none;
}
.louv__page--patterns .louv__section--patterns {
	padding: 32px var(--louv-gutter) 88px;
}
.louv__page--patterns .louv__container--wide > p:has(> a > img),
.louv__page--patterns .louv__container--wide > p:has(> img) {
	display: inline-flex;
	width: min(100%, 260px);
	min-height: 300px;
	margin: 12px;
	padding: 14px;
	align-items: center;
	justify-content: center;
	vertical-align: top;
	border: 1px solid var(--louv-line);
	border-radius: 8px;
	background: #fff;
}
.louv__page--patterns .louv__container--wide p img {
	width: auto;
	max-width: 100%;
	max-height: 340px;
	object-fit: contain;
}
@media (max-width: 600px) {
	.louv__page--patterns .louv__container--wide > p:has(> a > img),
	.louv__page--patterns .louv__container--wide > p:has(> img) {
		width: calc(50% - 12px);
		min-height: 220px;
		margin: 6px;
		padding: 8px;
	}
	.louv__page--patterns .louv__container--wide p img {
		max-height: 260px;
	}
}
.entry-content.is-layout-constrained > .louv__page--fiber-cards {
	width: 100%;
	max-width: 1180px;
	margin-inline: auto;
}
.louv__page--fiber-cards .louv__section--fibersintro,
.louv__page--fiber-cards .louv__section--fibers {
	width: 100%;
	max-width: none;
}
.louv__page--fiber-cards .louv__container--wide {
	width: 100%;
	max-width: none;
}
.louv__page--fiber-cards .louv__section--fibersintro {
	padding-block: 32px 0;
}
.louv__page--fiber-cards .louv__section--fibers {
	padding-top: 24px;
}
.entry-content.is-layout-constrained > .louv__page--parqualite,
.entry-content.is-layout-constrained > .louv__page--parpoids {
	width: 100%;
	max-width: 1180px;
	margin-inline: auto;
}
.louv__page--parqualite > .louv__section,
.louv__page--parqualite > .louv__pq-groups,
.louv__page--parpoids > .louv__section,
.louv__page--parpoids > .louv__pq-groups {
	width: 100%;
	max-width: none;
	margin-inline: 0;
}
.louv__page--parqualite .louv__shop-group {
	width: 100%;
	max-width: none;
}
.entry-content.is-layout-constrained > .louv__page--facebook-event {
	width: 100%;
	max-width: 1180px;
	margin-inline: auto;
}
.louv__page--facebook-event > .louv__section,
.louv__page--facebook-event .louv__container--wide {
	width: 100%;
	max-width: none;
}
.louv__page--facebook-event .wp-block-image img {
	width: auto;
	max-width: min(100%, 560px);
	height: auto;
}
.entry-content.is-layout-constrained > .louv__page--facebook-search {
	width: 100%;
	max-width: 1180px;
	margin-inline: auto;
}
.louv__page--facebook-search > .louv__section,
.louv__page--facebook-search .louv__container--wide {
	width: 100%;
	max-width: none;
}
.louv__page--fiber-cards .louv__fiber-grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 1023px) {
	.louv__page--fiber-cards .louv__fiber-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 600px) {
	.louv__page--fiber-cards .louv__fiber-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}
.louv__yarn-columns {
	align-items: center;
	gap: clamp(30px, 5vw, 70px);
}
.louv__yarn-media figure {
	margin: 0;
}
.louv__yarn-media img {
	display: block;
	width: 100%;
	height: auto;
}
.louv__yarn-pause {
	margin-top: 28px;
	padding: 24px;
	background: var(--louv-linen);
	border-left: 3px solid var(--louv-forest);
}
.louv .louv__yarn-pause h2 {
	font-size: clamp(23px, 2.2vw, 29px);
}
.louv__yarn-pause p:last-child,
.louv__yarn-formula p:last-child {
	margin-bottom: 0;
}
.louv__section--yarnprinciple {
	background: var(--louv-linen);
}
.louv__yarn-formulas,
.louv__yarn-seasons {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
	margin-top: 32px;
}
.louv__yarn-formula {
	padding: 28px;
	background: var(--louv-paper);
}
.louv__yarn-seasons {
	list-style: none;
	padding: 0;
}
.louv__yarn-seasons li {
	padding: 20px 0;
	border-top: 1px solid var(--louv-line);
}
.louv__yarn-seasons strong,
.louv__yarn-seasons span {
	display: block;
}
.louv__section--yarndetails {
	padding-top: 0;
}
@media (max-width: 781px) {
	.louv__yarn-formulas,
	.louv__yarn-seasons {
		grid-template-columns: minmax(0, 1fr);
		gap: 16px;
	}
}

/* ==========================================================================
   21. Liens : couleur et survol
   ========================================================================== */

/* La palette Louv est alignée sur les couleurs louv (scripts/setup-colors.php) :
   le survol reste vert, jamais le bleu du thème parent, qui ne souligne rien.
   Boutons et cartes entières gardent leur propre traitement. */
body a:hover:not(.wp-block-button__link):not(.button):not(.louv__card-link):not(.louv__blog-read) {
	text-decoration: underline;
	text-underline-offset: 4px;
	text-decoration-thickness: 1px;
}
.louv__link a:hover,
.louv__breadcrumbs a:hover,
.louv__contact-value a:hover {
	color: var(--louv-forest-light);
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* ==========================================================================
   21. Page /qui-sommes-nous/
   ========================================================================== */

/* L'accueil reprend la grille « atelier » de la homepage. Le texte de la
   présentation est court : le visuel est mis en hauteur pour remplir la colonne
   plutôt que de laisser une bande vide sous le texte. */
.louv__section--atelierintro .louv__atelier-media,
.louv__section--atelierintro .louv__atelier-media figure {
	height: 100%;
}
.louv__section--atelierintro .louv__atelier-media img {
	aspect-ratio: auto;
	height: 100%;
	min-height: 480px;
}
.louv__section--atelierintro .louv__lead {
	margin-bottom: 0;
}
.louv__section--ateliername {
	background: var(--louv-linen);
}
.louv__section--ateliername h3 {
	font-size: clamp(24px, 2.8vw, 33px);
	margin-top: 40px;
}
.louv__section--ateliername .louv__signature {
	text-align: right;
}

/* Le process reprend le fond sombre du bloc « communauté ». Les étapes sont
   numérotées : le numéro n'existe que dans le rendu, la production n'intitulait
   pas chaque étape. */
.louv__section--process {
	background: var(--louv-forest);
	color: var(--louv-paper);
}
.louv__section--process h2,
.louv__section--process .louv__eyebrow,
.louv__section--process strong {
	color: var(--louv-paper);
}
.louv__section--process ::selection {
	background: #fff;
	color: var(--louv-forest);
}
.louv__section--process .louv__process {
	gap: clamp(30px, 5vw, 70px);
	margin-bottom: 0;
}
/* Les colonnes gardent la part égale des autres blocs sur deux colonnes :
   core/columns impose `flex-grow: 1`, un rapport 3/4-1/4 exigerait un
   spécificité supérieure. */
.louv__process-media figure {
	margin: 0;
}
.louv__process-media img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border-radius: 2px;
	background: var(--louv-forest-light);
}
.louv__steps {
	counter-reset: louv-step;
	display: flex;
	flex-direction: column;
	gap: 20px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.louv__step {
	counter-increment: louv-step;
	display: grid;
	grid-template-columns: 32px minmax(0, 1fr);
	/* Le numéro s'aligne sur la ligne de base du texte, quelle que soit la
	   taille du paragraphe. */
	align-items: baseline;
}
.louv__step::before {
	content: counter(louv-step, decimal-leading-zero);
	font-family: Georgia, serif;
	font-size: 20px;
	color: var(--louv-linen);
}
.louv__step p {
	margin: 0;
}

/* ==========================================================================
   22. Fiche produit, panier et paiement (gabarits WooCommerce)
   ========================================================================== */

/* Ces gabarits sont rendus hors de `.louv` : les variables du bloc ne sont pas
   disponibles, les couleurs sont donc reprises en littéral. La feuille
   legacy de WooCommerce fixe `background-color` sur `.woocommerce .button.alt`,
   les sélecteurs ci-dessous doivent donc être plus spécifiques qu'elle. */

/* --- Fiche produit -------------------------------------------------------- */

.woocommerce div.product form.cart .single_add_to_cart_button,
.woocommerce div.product form.cart .button {
	background-color: #263d32;
	background-image: none;
	color: #fff;
	border: 0;
	border-radius: 0;
	font-weight: 600;
	min-height: 52px;
	padding-inline: 30px;
}
.woocommerce div.product form.cart .single_add_to_cart_button:hover,
.woocommerce div.product form.cart .button:hover {
	background-color: #39513e;
	color: #fff;
}

/* --- Produits similaires : section rendue par Louv hors de `.louv`, le vert
       des autres boutons d'ajout au panier doit être réappliqué -------------- */

section.related ul.products li.product .button {
	background-color: #263d32;
	background-image: none;
	color: #fff;
	border: 0;
	border-radius: 0;
	font-family: system-ui, sans-serif;
	font-weight: 600;
	min-height: 44px;
	padding: 12px 16px;
	text-align: center;
}
section.related ul.products li.product .button:hover,
section.related ul.products li.product .button:focus-visible {
	background-color: #39513e;
	color: #fff;
}
section.related ul.products li.product .button.added {
	background-color: #39513e;
}
section.related ul.products li.product .added_to_cart {
	display: inline-block;
	padding: 12px 0;
	color: #263d32;
	font-weight: 600;
}

/* --- Panier : lien produit et boutons de commande ------------------------- */

.woocommerce-cart .woocommerce-cart-form__contents .product-name a,
.woocommerce-checkout .woocommerce-checkout-review-order-table .product-name a {
	color: #263d32;
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: #263d32;
	text-underline-offset: 4px;
}
.woocommerce-cart .woocommerce-cart-form__contents .product-name a:hover,
.woocommerce-checkout .woocommerce-checkout-review-order-table .product-name a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}
.woocommerce .wc-proceed-to-checkout .button.checkout-button,
.woocommerce .cart-collaterals .button.checkout-button,
.woocommerce .woocommerce-checkout .button#place_order {
	background-color: #263d32;
	background-image: none;
	color: #fff;
	border: 0;
	border-radius: 0;
	font-weight: 600;
	min-height: 52px;
	padding-inline: 30px;
}
.woocommerce .wc-proceed-to-checkout .button.checkout-button:hover,
.woocommerce .cart-collaterals .button.checkout-button:hover,
.woocommerce .woocommerce-checkout .button#place_order:hover {
	background-color: #39513e;
	color: #fff;
}

/* --- Boutons PayPal ------------------------------------------------------- */

.ppcp-messages,
.paypal-buttons,
#zoid-container {
	visibility: hidden;
}

/* --- Code promo : un bloc à part entière sous le tableau ------------------ */

.woocommerce-cart-form__contents .actions {
	padding: 0;
	text-align: left;
	vertical-align: top;
}
.woocommerce-cart-form__contents .actions .coupon {
	display: grid;
	grid-template-columns: minmax(0, 260px) auto;
	align-items: end;
	justify-content: start;
	column-gap: 14px;
	float: none;
	margin: 0;
	padding: 34px 0 10px;
	border-top: 1px solid #d9d5ca;
	max-width: 620px;
}
.woocommerce-cart-form__contents .actions .coupon::before {
	content: 'Code promo';
	grid-column: 1 / -1;
	margin-bottom: 16px;
	font-family: Georgia, serif;
	font-size: 21px;
	font-weight: 700;
	color: #263d32;
}
.woocommerce-cart-form__contents .actions .coupon .input-text {
	width: 100%;
	min-height: 50px;
	margin: 0;
	border: 1px solid #d9d5ca;
	border-radius: 0;
	background: #fff;
}
.woocommerce-cart-form__contents .actions .coupon .button {
	background-color: #263d32;
	background-image: none;
	color: #fff;
	border: 0;
	border-radius: 0;
	min-height: 50px;
	padding: 0 26px;
	margin: 0;
}
.woocommerce-cart-form__contents .actions .coupon .button:hover {
	background-color: #39513e;
	color: #fff;
}
.woocommerce-cart-form__contents .actions > button[name='update_cart'] {
	display: block;
	width: auto;
	min-height: 50px;
	margin: 20px 0 28px auto;
	padding: 0 26px;
	background-color: var(--louv-forest);
	color: #fff;
	border: 1px solid var(--louv-forest);
	border-radius: 0;
}
.woocommerce-cart-form__contents .actions > button[name='update_cart']:hover {
	background-color: var(--louv-forest-light);
	color: #fff;
}

/* Le calculateur natif WooCommerce reste repliable, mais son action doit se
   lire comme un vrai bouton et non comme un lien perdu dans le récapitulatif. */
.woocommerce-cart .cart-collaterals .shipping-calculator-button {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 12px;
	padding: 11px 16px;
	border: 1px solid #263d32;
	background: #fff;
	color: #263d32;
	font-weight: 600;
	text-decoration: none;
	transition: background-color 160ms ease, color 160ms ease;
}
.woocommerce-cart .cart-collaterals .shipping-calculator-button::after {
	content: '+';
	font-size: 1.15em;
}
.woocommerce-cart .cart-collaterals .shipping-calculator-button:hover,
.woocommerce-cart .cart-collaterals .shipping-calculator-button:focus-visible {
	background: #263d32;
	color: #fff;
}
.woocommerce-cart .cart-collaterals .shipping-calculator-form {
	margin-top: 18px;
	padding: 22px;
	border: 1px solid #e4dfd4;
	background: #f8f6f1;
}
.woocommerce-cart .cart-collaterals .shipping-calculator-form .button {
	min-height: 46px;
	padding-inline: 20px;
	border: 0;
	background: #263d32;
	color: #fff;
}
.woocommerce-cart .cart-collaterals .shipping-calculator-form .button:hover {
	background: #39513e;
	color: #fff;
}
.woocommerce-cart .louv__cart-shipping-notice {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	margin: 0 0 24px;
	padding: 14px 18px;
	border: 1px solid #d9dfcf;
	background: #f0f3e9;
	color: #263d32;
	font-size: 15px;
	font-weight: 600;
	text-align: center;
}
.louv__cart-shipping-notice strong {
	color: #a65e46;
	white-space: nowrap;
}
.louv__cart-shipping-notice-icon {
	color: #a65e46;
	font-size: 19px;
	line-height: 1;
}

/* La page vide appelle à la balade : une carte lumineuse plutôt que l'avis
   technique WooCommerce, avec une illustration dessinée pour la tanière. */
.woocommerce-cart .louv__cart-empty-page {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 760px;
	margin: clamp(28px, 6vw, 72px) auto;
	padding: clamp(30px, 6vw, 64px) 24px;
	border: 1px solid #e7d8c8;
	background: radial-gradient(ellipse at 12% 8%, #f7e8d7 0, transparent 35%), linear-gradient(145deg, #fffaf2 0%, #f3f1e5 100%);
	text-align: center;
	overflow: hidden;
}
.louv__cart-empty-art {
	width: min(180px, 46vw);
	margin-bottom: 14px;
}
.louv__cart-empty-art svg {
	display: block;
	width: 100%;
	height: auto;
}
.louv__cart-empty-kicker {
	margin: 0 0 10px;
	color: #a65e46;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
}
.louv__cart-empty-page-title {
	margin: 0;
	color: #263d32;
	font-family: Georgia, serif;
	font-size: clamp(29px, 4vw, 42px);
	font-weight: 500;
}
.louv__cart-empty-page-text {
	max-width: 40ch;
	margin: 12px 0 24px;
	color: #5b6257;
	font-size: 16px;
	line-height: 1.7;
}
.louv__cart-empty-page-link {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	min-height: 50px;
	padding: 0 24px;
	background: #39513e;
	color: #fff;
	font-weight: 600;
	text-decoration: none;
	transition: background-color 160ms ease, transform 160ms ease;
}
.louv__cart-empty-page-link:hover,
.louv__cart-empty-page-link:focus-visible {
	background: #a65e46;
	color: #fff;
	transform: translateY(-2px);
}
.woocommerce-cart:has(.louv__cart-empty-page) .return-to-shop {
	display: none;
}
@media (max-width: 600px) {
	.woocommerce-cart-form__contents .actions .coupon {
		grid-template-columns: minmax(0, 1fr);
		row-gap: 12px;
		padding-top: 26px;
	}
	.woocommerce-cart-form__contents .actions .coupon .button {
		width: 100%;
	}
}

/* ==========================================================================
   23. En-tête : compte et panier
   ========================================================================== */

/* Le compte et le panier sont les deux seules entrées de la barre à mériter un
   clic : elles sont donc posées en pastille verte, texte blanc. Le vert ne
   touche que le bouton — les panneaux qui se déplient dessous gardent leur fond
   clair et leur texte sombre. Les sélecteurs sont ancrés sur `#header` : le
   thème parent n'écrit ses couleurs qu'à travers des variables, il suffit de ne
   pas lui laisser le dernier mot. */
#header .louv__account-trigger,
#header .ct-header-cart .ct-cart-item {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	min-height: 44px;
	padding: 0 18px;
	background: var(--louv-forest);
	border-radius: 0;
	color: #fff;
	text-decoration: none;
	white-space: nowrap;
	transition: background .12s ease;
}
#header .louv__account-trigger:hover,
#header .ct-header-cart .ct-cart-item:hover {
	background: var(--louv-forest-light);
	color: #fff;
}
#header .louv__account-trigger:focus-visible,
#header .ct-header-cart .ct-cart-item:focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 3px;
}
/* Le panier porte son prix puis son pictogramme : les deux blanchissent, la
   pastille du compteur prend la couleur d'accent pour rester lisible sur le
   vert. */
#header .ct-header-cart .ct-cart-item :is(.ct-label, .ct-icon-container svg) {
	color: #fff;
	fill: #fff;
}
#header .ct-header-cart .ct-cart-item .ct-dynamic-count-cart {
	background: var(--louv-clay);
	color: #fff;
}

/* --- Bouton et panneau du compte ------------------------------------------ */

.louv__languages {
	position: relative;
	display: flex;
	align-items: center;
	margin: 0;
}
.louv__language-label {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}
#header .louv__language-select {
	width: 64px;
	min-height: 44px;
	border: 1px solid var(--louv-line);
	border-radius: 4px;
	background-color: var(--louv-paper);
	color: transparent;
	font-size: 14px;
}
#header .louv__language-select option {
	color: var(--louv-forest);
}
.louv__language-flag {
	position: absolute;
	left: 10px;
	font-size: 22px;
	line-height: 1;
	white-space: nowrap;
	pointer-events: none;
}
#header .louv__language-select:focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 2px;
}

.louv__account {
	position: relative;
	display: flex;
	align-items: center;
}
.louv__account-trigger {
	border: 0;
	font: inherit;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .01em;
	cursor: pointer;
}
.louv__account-icon {
	flex-shrink: 0;
	width: 17px;
	height: 17px;
	color: #fff;
}
/* Le panneau s'aligne sur le bord droit du bouton, comme le mini-panier, et se
   révèle au survol, à la prise de focus — donc au clavier — et au clic. */
.louv__account-panel {
	position: absolute;
	top: 100%;
	right: 0;
	z-index: 10;
	width: 260px;
	margin-top: 0;
	padding: 18px 20px;
	background: #fff;
	border: 1px solid var(--louv-linen);
	box-shadow: 0 14px 40px rgb(38 61 50 / 14%);
	color: var(--louv-ink);
	font-size: 14px;
	opacity: 0;
	visibility: hidden;
	transform: translate3d(0, -6px, 0);
	transition: opacity .14s ease, transform .14s ease, visibility .14s;
}
/* Le panneau reste atteignable à la souris : ce pont couvre le vide entre le
   bouton et la boîte, sans quoi celle-ci se refermerait en traversant. */
.louv__account-panel::before {
	content: '';
	position: absolute;
	top: -12px;
	left: 0;
	right: 0;
	height: 12px;
}
.louv__account:hover > .louv__account-panel,
.louv__account:focus-within > .louv__account-panel,
.louv__account.is-open > .louv__account-panel {
	opacity: 1;
	visibility: visible;
	transform: translate3d(0, 0, 0);
}
/* Visiteur non connecté : le message puis l'appel à la connexion, seul lien du
   panneau, d'où sa pleine largeur. */
.louv__account-guest {
	margin: 0 0 14px;
	color: var(--louv-ink);
}
#header .louv__account-panel a.louv__account-login {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 44px;
	background: var(--louv-forest);
	background-image: none;
	color: #fff;
	border: 0;
	border-radius: 0;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	text-decoration: none;
}
#header .louv__account-panel a.louv__account-login:hover {
	background: var(--louv-forest-light);
	color: #fff;
}
/* Visiteur connecté : les liens de la page « Mon compte », séparés d'un filet. */
.louv__account-links {
	margin: 0;
	padding: 0;
	list-style: none;
}
.louv__account-links li + li {
	border-top: 1px solid var(--louv-line);
}
#header .louv__account-panel .louv__account-links a {
	display: block;
	padding: 9px 0;
	color: var(--louv-forest);
	text-decoration: none;
}
#header .louv__account-panel .louv__account-links a:hover {
	color: var(--louv-clay);
	text-decoration: underline;
	text-underline-offset: 4px;
}
#header .louv__account-panel :is(a, button):focus-visible {
	outline: 3px solid var(--louv-clay);
	outline-offset: 2px;
}

/* --- Barre mobile : le compte ------------------------------------------ */

/* Sous 1450px c'est la barre mobile qui s'affiche. Le panneau, lui,
   s'aligne sur la gouttière de l'écran : ancré au bouton, il déborderait
   à gauche sur les petits téléphones. */
@media (max-width: 1449px) {
	.louv__account {
		position: static;
	}
	.louv__account-panel {
		right: var(--louv-gutter);
		width: min(300px, calc(100vw - 2 * var(--louv-gutter)));
	}
}

/* Le libellé tient jusqu'à 768px : en dessous il ne reste pas de place
   à côté du prix du panier, le bouton garde la place du panier et
   n'affiche que la silhouette. */
@media (max-width: 767px) {
	#header .louv__account-trigger {
		width: 44px;
		padding: 0;
	}
	.louv__account-label {
		display: none;
	}
}

/* ==========================================================================
   24. Page /credits-du-site/
   ========================================================================== */

/* La page tient en deux rubriques de couples libellé / texte. Chaque ligne est
   une grille : superposée dans la colonne de texte, en deux colonnes dès que la
   largeur le permet, pour que les libellés restent alignés. */
.louv__credits-list {
	margin: 0;
}
.louv__credits-row {
	display: grid;
	gap: 4px 30px;
	padding: 18px 0;
	border-top: 1px solid var(--louv-line);
}
.louv__credits-list > .louv__credits-row:last-child {
	border-bottom: 1px solid var(--louv-line);
}
.louv__credits-label {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--louv-muted);
}
.louv__credits-text {
	margin: 0;
}
@media (min-width: 782px) {
	.louv__credits-row {
		grid-template-columns: 15em minmax(0, 1fr);
		align-items: baseline;
	}
}
.louv__credits-actions {
	gap: 14px 32px;
	justify-content: flex-start;
	margin: 34px 0 0;
}
.ct-container-full[data-vertical-spacing] {
	padding-block: 0;
}
@media (min-width: 782px) {
	.single-product .louv__product-gallery-zoom {
		overflow: hidden;
		cursor: zoom-in;
	}
	.single-product .louv__product-gallery-zoom img {
		transform: scale(1);
		transform-origin: var(--louv-zoom-x, 50%) var(--louv-zoom-y, 50%);
		transition: transform .18s ease-out;
	}
	.single-product .louv__product-gallery-zoom.is-zoomed {
		cursor: zoom-out;
	}
	.single-product .louv__product-gallery-zoom.is-zoomed img {
		transform: scale(1.8);
	}
}
@media (max-width: 781px) {
	.single-product .woocommerce-product-gallery .flexy-view img {
		max-height: 300px;
		object-fit: contain;
		cursor: zoom-in;
	}
	.louv__product-gallery-dialog {
		width: 100vw;
		max-width: none;
		height: 100dvh;
		max-height: none;
		margin: 0;
		padding: 56px 12px 12px;
		border: 0;
		background: #fff;
		color: var(--louv-ink);
	}
	.louv__product-gallery-dialog::backdrop {
		background: rgb(20 24 21 / 88%);
	}
	.louv__product-gallery-close {
		position: absolute;
		top: 12px;
		right: 12px;
		z-index: 2;
		padding: 8px 12px;
		border: 1px solid var(--louv-line);
		border-radius: 3px;
		background: #fff;
		color: var(--louv-forest);
		font: inherit;
	}
	.louv__product-gallery-dialog .woocommerce-product-gallery {
		display: flex;
		align-items: center;
		width: 100%;
		height: calc(100% - 12px);
	}
	.louv__product-gallery-dialog .ct-product-gallery-container,
	.louv__product-gallery-dialog .flexy-container,
	.louv__product-gallery-dialog .flexy,
	.louv__product-gallery-dialog .flexy-view {
		width: 100%;
	}
	.louv__product-gallery-dialog .flexy-view {
		max-height: calc(100dvh - 130px);
	}
	.louv__product-gallery-dialog .flexy-view img {
		width: auto;
		max-width: 100%;
		max-height: calc(100dvh - 150px);
		margin-inline: auto;
		object-fit: contain;
	}
	.louv__product-gallery-dialog .flexy-pills ol {
		justify-content: center;
		gap: 6px;
	}
	.louv__product-gallery-dialog .flexy-pills li,
	.louv__product-gallery-dialog .flexy-pills img {
		width: 38px;
		height: 38px;
	}
}
