/* =========================================================================
   UCP — 04 · LA FICHE SÉJOUR DANS DIVI
   -------------------------------------------------------------------------
   La fiche séjour est écrite par le thème (`woocommerce/content-single-
   product.php`) et habillée par 03-components.css. Elle n'a donc presque
   besoin de rien ici.

   Presque : Divi l'enferme dans le gabarit de blog qu'il réserve aux pages
   WooCommerce — colonne de 79 %, conteneur de 1080 px, listes à puces. Ce
   fichier desserre cet étau, et rien d'autre.

   C'est le seul endroit du projet, avec la section « surcharges Divi » de
   02-base.css, où l'on a le droit de cibler `#left-area` ou `#main-content`.
   Aucun `!important`, aucun `display:none` sur du contenu.
   ========================================================================= */


/* =========================================================================
   1 · LIBÉRER LA PLEINE LARGEUR
   -------------------------------------------------------------------------
   La couverture de la maquette occupe tout l'écran. Divi, lui, sert les pages
   WooCommerce dans :

       #main-content > .container (80 %, max 1080 px) > #content-area > #left-area (79 %)

   `functions.php` a déjà demandé la pleine largeur dans la langue de Divi
   (classes `et_no_sidebar` et `et_full_width_page` sur le <body>), ce qui
   règle la colonne latérale et la largeur de `#left-area`. Restent la largeur
   du conteneur et ses marges, que ces classes ne touchent pas.

   Tout est enfermé dans `body.single-product` : le catalogue et le reste du
   site gardent le gabarit réglé dans les Options du thème.
   ========================================================================= */

body.single-product #main-content {
	background-color: transparent;
}

body.single-product #main-content .container {
	width: 100%;
	max-width: none;
	padding: 0;
}

/* Divi réserve 58 px au-dessus du contenu. Sous une photo pleine hauteur, ces
   58 px sont une bande blanche entre l'en-tête et la couverture. Le sélecteur
   recopie celui de Divi à l'identique — même spécificité, et c'est l'ordre de
   chargement qui tranche. */
body.single-product:not(.et-tb) #main-content .container,
body.single-product:not(.et-tb-has-header) #main-content .container {
	padding-top: 0;
}

body.single-product #left-area {
	padding: 0;
}

/* Le filet vertical que Divi trace entre les deux colonnes n'a plus rien à
   séparer une fois la colonne latérale retirée. */
body.single-product #main-content .container::before {
	display: none;
}


/* =========================================================================
   2 · LES LISTES DES BLOCS DE FICHE
   -------------------------------------------------------------------------
   Divi impose ses puces à toutes les listes de la colonne principale :

       #left-area ul { list-style: disc; padding: 0 0 23px 1em; line-height: 26px }

   Un id : la règle bat n'importe laquelle de nos classes. Sans les deux
   lignes ci-dessous, la liste d'atouts afficherait une puce ronde EN PLUS de
   sa flèche dorée, et le tableau « inclus / non inclus » sortirait à puces.

   On ne vise que nos propres blocs. Les listes que vous écrivez dans la
   description du séjour gardent leurs puces : c'est du texte courant, il doit
   se comporter comme du texte courant.
   ========================================================================= */

/* La liste d'atouts est un encadré crème : elle a besoin de son rembourrage,
   sur les quatre côtés.

   La version précédente n'annulait que `padding-left`. Or la règle de Divi est
   une écriture raccourcie, `padding: 0 0 23px 1em` : elle avait déjà remis le
   haut et la droite à zéro, et notre `.ucp-atouts { padding: 24px }`, qui ne
   pèse qu'une classe, ne pouvait rien contre un sélecteur à identifiant. La
   flèche dorée se retrouvait collée au bord gauche du cadre et le texte au bord
   droit, sans un pixel de marge, alors que le CSS du composant en demandait 24
   partout. On croyait lire notre feuille, on lisait celle de Divi.

   D'où la règle : face à un raccourci, on répond par un raccourci. Annuler
   propriété par propriété laisse toujours passer ce qu'on n'avait pas vu. */
#left-area ul.ucp-atouts,
#left-area .ucp-faq ul.ucp-atouts {
	list-style: none;
	padding: var(--ucp-card-pad);
	line-height: var(--ucp-lh-body);
}

/* Les colonnes « inclus / non inclus » portent déjà le rembourrage : la liste
   qu'elles contiennent doit rester à plat, sinon il se cumule. */
#left-area .ucp-inclus ul {
	list-style: none;
	padding: 0;
	line-height: var(--ucp-lh-body);
}

#left-area ul.ucp-atouts li,
#left-area .ucp-inclus li {
	list-style: none;
}


/* =========================================================================
   3 · LES DEUX EMPLACEMENTS PHOTO
   -------------------------------------------------------------------------
   La fiche en compte deux, distincts : « Galerie du séjour » et « Trophées
   réalisés ». Même mécanique pour les deux — un carrousel de trois vignettes
   par vue, déjà habillé par 03-components.css (`ucp-carousel`,
   `ucp-carousel-page`, `ucp-media-tile`).

   Il ne manque que le comportement de l'image à l'intérieur de la tuile.
   `<figure>` porte une marge par défaut dans tous les navigateurs : sans la
   remise à zéro, les vignettes se décalent les unes des autres et la grille
   perd son alignement.
   ========================================================================= */

figure.ucp-media-tile {
	margin: 0;
}

.ucp-media-tile img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}


/* =========================================================================
   4 · LE CONTENU RÉDIGÉ DANS LA DESCRIPTION
   -------------------------------------------------------------------------
   Une partie du séjour se tape dans la description du produit, en HTML libre :
   les titres, les paragraphes, les listes, les tableaux.

   Ce contenu-là n'a aucune classe `ucp-`, et il ne faut pas en exiger. Le
   rédacteur écrit un <h2>, une <ul>, un <table> — c'est au thème de faire en
   sorte que ça sorte à l'image du reste du site. Une règle de rédaction qu'on
   ne peut pas tenir n'est pas une règle, c'est une dette.
   ========================================================================= */

/* --- Les titres marquent la coupure entre deux sections ------------------ */

/* Sans repère visuel, une fiche de quinze titres se lit comme un seul bloc de
   texte à faire défiler. Le filet doré au-dessus de chaque <h2> rejoue le
   découpage de la maquette sans rien demander au rédacteur : il écrit un
   titre, il obtient une section. */
.ucp-sejour-page .ucp-content-section > h2 {
	margin: var(--ucp-space-12) 0 var(--ucp-space-5);
	padding-top: var(--ucp-space-6);
	border-top: 1px solid var(--ucp-border);
	font-size: var(--ucp-fs-h3);
	font-weight: var(--ucp-fw-black);
	line-height: 1.2;
	letter-spacing: -0.025em;
	color: var(--ucp-night);
}

.ucp-sejour-page .ucp-content-section > h2::before {
	content: "";
	display: block;
	width: var(--ucp-rule-w);
	height: var(--ucp-rule-h);
	margin-bottom: var(--ucp-space-5);
	background-color: var(--ucp-accent);
}

/* Le premier titre de la section ouvre la page : ni filet de séparation, ni
   marge haute — il n'a rien à séparer de ce qui précède. */
.ucp-sejour-page .ucp-content-section > h2:first-child,
.ucp-sejour-page .ucp-content-section > .ucp-content-h2 {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

.ucp-sejour-page .ucp-content-section > .ucp-content-h2::before {
	content: none;
}

.ucp-sejour-page .ucp-content-section h3 {
	margin: var(--ucp-space-8) 0 var(--ucp-space-3);
	font-size: var(--ucp-fs-h4);
	color: var(--ucp-night);
}

/* --- Les listes ---------------------------------------------------------- */

/* La puce en or : le seul rappel de la marque dans un texte courant. */
#left-area .ucp-content-section ul li::marker,
.ucp-sejour-page .ucp-content-section ul li::marker {
	color: var(--ucp-accent);
}

/* --- Les tableaux -------------------------------------------------------- */

/* Un <table> écrit à la main dans la description sort sans bordure ni fond :
   les colonnes flottent, et « 60 $ par jour » ne se rattache visuellement à
   rien. On lui applique l'habillage du composant `ucp-table`, pour que le
   tableau des coûts sur place ressemble à celui des taxes de tir.

   `display: block` + `overflow-x: auto` sur l'enveloppe : un tableau de trois
   colonnes déborde sur un téléphone, et un débordement qui ne défile pas est
   un débordement qui coupe l'information. */
/* `:not(.ucp-table)` est indispensable. Sans lui, la règle attrapait aussi le
   tableau des taxes de tir, qui est un composant à part entière — et le
   `display: block` ci-dessous lui faisait perdre sa nature de tableau : les
   colonnes cessaient de se répartir et se tassaient sur un tiers de la largeur,
   à l'intérieur d'un cadre resté pleine page.

   `display: table` explicite : Divi passe certains tableaux en `block`, et un
   tableau en `block` ne calcule plus ses colonnes. */
.ucp-sejour-page .ucp-content-section table:not(.ucp-table) {
	display: table;
	table-layout: auto;
	width: 100%;
	margin: 0 0 var(--ucp-space-8);
	border: 1px solid var(--ucp-border);
	border-collapse: collapse;
	font-size: var(--ucp-fs-sm);
	text-align: left;
}

.ucp-sejour-page .ucp-content-section table:not(.ucp-table) th {
	padding: var(--ucp-space-3) var(--ucp-space-5);
	background-color: var(--ucp-cream);
	border-bottom: 1px solid var(--ucp-border-strong);
	color: var(--ucp-text);
	font-size: var(--ucp-fs-xs);
	font-weight: var(--ucp-fw-bold);
	letter-spacing: var(--ucp-ls-label);
	text-transform: uppercase;
	white-space: nowrap;
}

.ucp-sejour-page .ucp-content-section table:not(.ucp-table) td {
	padding: var(--ucp-space-3) var(--ucp-space-5);
	border-top: 1px solid var(--ucp-border);
	color: var(--ucp-text-muted);
}

.ucp-sejour-page .ucp-content-section table:not(.ucp-table) tbody tr:nth-child(even) td {
	background: var(--ucp-cream);
}


/* =========================================================================
   5 · TRAVAILLER DANS LE CONSTRUCTEUR DE THÈME
   -------------------------------------------------------------------------
   Quand la fiche est montée dans le Corps personnalisé de Divi plutôt que par
   le gabarit PHP, la mise en deux colonnes n'est plus la nôtre : c'est une
   Ligne Divi (2/3 + 1/3). Le `position: sticky` de `.ucp-sidebar` ne peut donc
   pas s'appliquer — il vise un élément que Divi ne génère pas.

   D'où cette classe, à poser sur la COLONNE de droite dans le constructeur
   (onglet Avancé → champ « Classe CSS »).

   `align-self: flex-start` est indispensable : sans lui, la colonne s'étire sur
   toute la hauteur de la ligne, et un élément qui remplit déjà son conteneur
   n'a aucune marge pour coller — `sticky` s'applique sans que rien ne bouge.
   C'est le piège classique du sticky en colonne, et il fait perdre une heure.
   ========================================================================= */

.ucp-sticky-col {
	align-self: flex-start;
	position: sticky;
	top: var(--ucp-space-5);
}

/* Divi coupe parfois le débordement des lignes ; un ancêtre en `overflow:
   hidden` désactive silencieusement tous les `sticky` qu'il contient. */
.et_pb_row:has(.ucp-sticky-col),
.et_pb_section:has(.ucp-sticky-col) {
	overflow: visible;
}


/* =========================================================================
   6 · CORRECTIFS RELEVÉS SUR LA PREMIÈRE FICHE EN LIGNE
   ========================================================================= */

/* --- La largeur de lecture ---------------------------------------------- */

/* Deux choses différentes, qu'il ne faut surtout pas confondre : la largeur du
   FOND, et la largeur de la LECTURE.

   Le fond blanc va d'un bord à l'autre de l'écran. Sur un grand moniteur, les
   deux bandes crème de part et d'autre donnaient l'impression d'une page
   découpée et posée au milieu du vide.

   Le texte, lui, reste borné et centré. Au-delà de 1440 px, la ligne dépasse
   110 caractères : en revenant à gauche, l'œil ne retrouve plus le début de la
   ligne suivante. Sur une fiche de quinze sections, ça se paie en abandons.

   La grille à quatre colonnes fait les deux à la fois. Les deux colonnes
   extérieures sont des marges élastiques : elles absorbent tout l'espace
   au-delà de 1440 px, sans que le fond s'arrête pour autant. */
.ucp-sejour-page .ucp-layout {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
	grid-template-columns:
		minmax(var(--ucp-gutter), 1fr)
		minmax(0, 950px)
		minmax(280px, 400px)
		minmax(var(--ucp-gutter), 1fr);
}

.ucp-sejour-page .ucp-layout > .ucp-content { grid-column: 2; min-width: 0; }
.ucp-sejour-page .ucp-layout > .ucp-sidebar { grid-column: 3; }

/* --- Les séjours similaires --------------------------------------------- */

/* Deux réglages, et le second compte autant que le premier.

   Le titre partait se coller au bord gauche de l'écran pendant que la grille
   restait centrée : l'en-tête n'avait pas de largeur maximale.

   Et 1440 px, pas 1280 : c'est la même largeur que la fiche au-dessus, donc le
   même bord gauche. Deux blocs qui se suivent avec deux alignements différents
   se voient immédiatement, même sans savoir pourquoi — le regard descend et
   accroche sur le décalage. */
.ucp-similaires .ucp-section-header,
.ucp-similaires .ucp-grid {
	max-width: 1440px;
	margin-left: auto;
	margin-right: auto;
}

.ucp-similaires .ucp-section-header {
	margin-bottom: var(--ucp-space-10);
}

/* Un séjour similaire tout seul ne doit pas s'étaler sur un tiers de page au
   milieu de deux vides. On cale les cartes à gauche, à leur largeur normale. */
.ucp-similaires .ucp-grid {
	grid-template-columns: repeat(auto-fill, minmax(280px, 380px));
	justify-content: start;
}


/* =========================================================================
   7 · LA LISIBILITÉ DU BANDEAU DE COUVERTURE
   -------------------------------------------------------------------------
   Les six caractéristiques sont posées sur la photo. Tant que la photo est
   sombre, ça passe ; sur une herbe sèche en plein soleil, les intitulés en
   petites capitales grises disparaissent — et ce sont eux qui portent
   l'information la plus concrète de toute la page.

   Un voile sombre derrière le bandeau règle le problème une fois pour toutes,
   quelle que soit la photo. Trois raisons de le poser en bande unique plutôt
   qu'en six cases séparées :

     · six cases donnent six boutons, et le visiteur essaie de cliquer ;
     · elles hachent la lecture horizontale, alors que le bandeau se lit
       justement d'un trait, de gauche à droite ;
     · au moindre changement de longueur d'un intitulé, elles se décalent
       les unes par rapport aux autres.

   `backdrop-filter` floute la photo DERRIÈRE le voile. On garde ainsi la
   matière de l'image — on devine les herbes, la lumière — sans que le détail
   vienne concurrencer le texte. Les navigateurs qui ne le connaissent pas
   ignorent la ligne et gardent le voile seul : c'est déjà suffisant.
   ========================================================================= */

.ucp-hero--sejour .ucp-hero__info {
	/* Les marges négatives font déborder la bande jusqu'aux bords de la zone
	   de texte, puis le padding la remplit : le voile dépasse le texte des
	   deux côtés, ce qui lui donne l'air d'un socle et non d'un encadré. */
	margin-left: calc(-1 * var(--ucp-gutter));
	margin-right: calc(-1 * var(--ucp-gutter));
	margin-bottom: calc(-1 * clamp(2.5rem, 6vw, 3.75rem));
	padding: var(--ucp-space-6) var(--ucp-gutter) var(--ucp-space-8);
	background: rgba(18, 18, 20, 0.55);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	border-top: 1px solid rgba(212, 175, 55, 0.45);
}

/* Les intitulés passaient à 60 % d'opacité — un gris clair sur une photo
   claire. À 82 %, ils tiennent sur n'importe quel fond sans pour autant
   voler la vedette aux valeurs, qui restent seules en or. */
.ucp-hero--sejour .ucp-hero__info-label {
	color: rgba(244, 239, 231, 0.82);
}

/* Le dégradé du bas s'assombrit un peu : il prend maintenant le relais du
   voile au lieu de s'arrêter juste avant. */
.ucp-hero--sejour .ucp-hero__bg::after {
	background: linear-gradient(
		180deg,
		rgba(20, 20, 22, 0.28) 0%,
		rgba(20, 20, 22, 0.45) 45%,
		rgba(20, 20, 22, 0.80) 100%
	);
}


/* =========================================================================
   7 · LA VIGNETTE DANS LA GRILLE DE WOOCOMMERCE
   -------------------------------------------------------------------------
   Le gabarit `content-product.php` pose notre carte à l'intérieur du `<li>`
   de WooCommerce. La carte arrive donc dans un contexte où la feuille de
   style de WooCommerce s'applique déjà, et l'une de ses règles est plus
   forte que la nôtre :

       .woocommerce ul.products li.product a img {
           width: 100%; height: auto; margin: 0 0 1em;
       }

   Quatre éléments et trois classes, contre une classe et un élément de notre
   côté : `height: auto` gagnait. La photo reprenait alors sa proportion
   d'origine au lieu de remplir le cadre 3:2, et le fond sombre de la boîte
   apparaissait en bande noire sous les images les plus larges. Le défaut ne
   se voyait que sur certaines photos, celles dont la proportion ne tombait
   pas déjà juste, donc pas sur toutes les vignettes d'une même page.

   On reprend la main en visant le même contexte avec une classe de plus.
   Aucun `!important` : c'est une bataille de spécificité, elle se gagne en
   étant plus précis, pas plus fort.
   ========================================================================= */

.woocommerce ul.products li.product .ucp-card__media img {
	width: 100%;
	height: 100%;
	margin: 0;
	object-fit: cover;
}

/* WooCommerce pose aussi une marge basse et un alignement centré sur les
   titres et les prix de ses listes. Notre carte gère les siens. */
.woocommerce ul.products li.product .ucp-card__body > * {
	text-align: left;
}

/* La carte remplit la case de la grille.

   Le `<li>` est l'élément de grille, la carte est à l'intérieur : sans ces deux
   lignes, la carte prend la hauteur de son contenu et non celle de sa case.
   Une rangée où un titre tient sur une ligne et son voisin sur deux affichait
   alors ses prix à deux hauteurs différentes, ce qui est précisément ce qu'on
   ne veut pas dans une liste faite pour comparer. */
.woocommerce ul.products li.product {
	display: flex;
}

.woocommerce ul.products li.product > .ucp-card {
	flex: 1 1 auto;
}


/* =========================================================================
   8 · ACCUEIL DIVI — DESTINATION SIGNATURE ET PORTES D'ENTRÉE
   -------------------------------------------------------------------------
   La page d'accueil contient encore quelques modules historiques montés dans
   Divi. Ils n'ont pas de classes métier, seulement leurs identifiants générés
   par le constructeur. Les sélecteurs `.ucp-home-*` reproduisent le même bloc
   dans l'aperçu local ; les sélecteurs `*_tb_body` visent la page en ligne.

   Cette couche est volontairement isolée à `body.home`. Une nouvelle classe
   métier pourra être ajoutée dans Divi plus tard, sans urgence : le rendu ne
   dépend plus des couleurs et tailles écrites en ligne dans l'ancien contenu.
   ========================================================================= */

/* --- Destination signature : l'Écosse ---------------------------------- */

.ucp-home-feature,
body.home .et_pb_section_3_tb_body {
	position: relative;
	padding: clamp(4rem, 7vw, 7rem) var(--ucp-gutter);
	overflow: hidden;
	border-top: 3px solid var(--ucp-accent);
	background:
		radial-gradient(circle at 82% 30%, rgba(212, 175, 55, 0.16), transparent 34%),
		var(--ucp-bg-brand);
}

/* L'ancien triangle Divi semblait être un défaut de raccord. La couleur du
   nouveau bloc suffit à créer une séparation nette avec le carrousel. */
body.home .et_pb_section_3_tb_body .et_pb_bottom_inside_divider {
	display: none;
}

.ucp-home-feature__inner,
body.home .et_pb_section_3_tb_body .et_pb_row_3_tb_body {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr);
	align-items: center;
	gap: clamp(2.5rem, 6vw, 6rem);
	width: 100%;
	max-width: var(--ucp-max);
	margin: 0 auto;
	padding: 0;
}

body.home .et_pb_section_3_tb_body .et_pb_column_6_tb_body,
body.home .et_pb_section_3_tb_body .et_pb_column_7_tb_body {
	width: auto;
	margin: 0;
}

.ucp-home-feature__copy,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body {
	position: relative;
	padding-left: clamp(1.25rem, 3vw, 2.5rem);
	border-left: 1px solid rgba(212, 175, 55, 0.55);
}

.ucp-home-feature__copy:not(.et_pb_module)::before,
.ucp-home-feature__copy.et_pb_module .et_pb_text_inner::before,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body:not(.ucp-home-feature__copy) .et_pb_text_inner::before {
	content: 'DESTINATION SIGNATURE';
	display: block;
	margin-bottom: var(--ucp-space-4);
	font-size: var(--ucp-fs-eyebrow);
	font-weight: var(--ucp-fw-bold);
	letter-spacing: var(--ucp-ls-eyebrow);
	color: var(--ucp-accent);
}

.ucp-home-feature__title,
.ucp-home-feature__copy h5,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body h5 {
	margin: 0 0 var(--ucp-space-6);
	font-family: var(--ucp-font-sans);
	font-size: clamp(2rem, 3.5vw, 3.75rem);
	font-weight: var(--ucp-fw-black);
	line-height: var(--ucp-lh-heading);
	letter-spacing: var(--ucp-ls-heading);
	color: var(--ucp-brand);
}

.ucp-home-feature__copy h5 > span,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body h5 > span {
	color: var(--ucp-brand) !important;
}

.ucp-home-feature__copy h5 strong span,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body h5 strong span {
	font-family: var(--ucp-font-serif) !important;
	font-style: italic;
	color: var(--ucp-accent) !important;
}

.ucp-home-feature__copy p,
.ucp-home-feature__copy p span,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body p,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body p span {
	font-family: var(--ucp-font-sans);
	font-size: var(--ucp-fs-lead) !important;
	line-height: var(--ucp-lh-body);
	color: var(--ucp-text-muted) !important;
}

/* Tous les vrais paragraphes de l'accueil suivent la même composition. Les
   titres, boutons, menus et libellés ne sont pas concernés. La dernière ligne
   reste alignée à gauche afin qu'un paragraphe court ne soit jamais étiré. */
body.home #main-content p {
	text-align: justify;
	text-align-last: left;
	hyphens: none;
	-webkit-hyphens: none;
	word-break: normal;
	overflow-wrap: normal;
	text-wrap: pretty;
}

/* Certains titres historiques sont encore codés comme des paragraphes dans
   Divi et dans les cartes WooCommerce. Ils gardent donc un alignement naturel
   malgré la règle générale appliquée aux vrais textes courants. */
body.home #main-content p:is(
	.ucp-eyebrow,
	.ucp-sejour__pays,
	.ucp-sejour__name,
	.ucp-sejour__saison,
	.ucp-sejour__price
) {
	text-align: left;
	text-align-last: auto;
}

/* Les textes courts de « Voyagez en confiance » ne sont pas des paragraphes
   de lecture. Ils restent centrés avec leur titre et leurs quatre garanties,
   malgré la justification générale de la page d'accueil. */
body.home #main-content .ucp-home-trust .et_pb_text_inner,
body.home #main-content .ucp-home-trust p {
	text-align: center !important;
	text-align-last: center !important;
}

.ucp-home-feature__copy p strong,
.ucp-home-feature__copy p strong span,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body p strong,
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body p strong span {
	color: var(--ucp-night) !important;
}

/* Le deuxième paragraphe n'était qu'une ligne de tirets tapés au clavier ; le
   troisième était vide. Le dernier reprend leur rôle avec un vrai filet. */
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body p:nth-of-type(2),
body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body p:nth-of-type(3) {
	display: none;
}

body.home .et_pb_section_3_tb_body .et_pb_text_5_tb_body p:nth-of-type(4) {
	margin-top: var(--ucp-space-6);
	padding-top: var(--ucp-space-6);
	border-top: 1px solid rgba(212, 175, 55, 0.35);
}

.ucp-home-feature__media,
body.home .et_pb_section_3_tb_body .et_pb_text_6_tb_body {
	position: relative;
	min-height: clamp(340px, 34vw, 520px);
	overflow: hidden;
	border: 1px solid rgba(212, 175, 55, 0.42);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
}

.ucp-home-feature__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* --- Ancien carrousel de réassurance ----------------------------------- */

/* Son message répète la section « Voyagez en confiance », avec un ancien
   graphisme et une lisibilité très faible sur mobile. La section entière est
   retirée, y compris son grand séparateur blanc. */
.ucp-home-legacy-slider,
.et_pb_slider_0_tb_body,
.et_pb_row:has(.et_pb_slider_0_tb_body) {
	display: none;
}

/* --- Porte Chasse ------------------------------------------------------- */

.ucp-home-hunt-door,
.et_pb_text_11_tb_body,
body.home .et_pb_text_11_tb_body {
	background-color: var(--ucp-brand);
	color: var(--ucp-text-invert);
	transition: background-color var(--ucp-transition), transform var(--ucp-transition);
}

.ucp-home-hunt-door:hover,
.et_pb_text_11_tb_body:hover,
body.home .et_pb_text_11_tb_body:hover {
	background-color: var(--ucp-brand-hover);
	transform: translateY(-2px);
}

/* Divi applique l'espacement vertical sur la colonne qui contient le module
   Texte. Peindre uniquement le module laissait donc apparaître deux bandes de
   l'ancien fond gris. La porte Chasse est maintenant colorée sur toute sa
   colonne, tandis que le module intérieur reste transparent. */
.et_pb_column:has(.et_pb_text_11_tb_body) {
	background-color: var(--ucp-brand) !important;
	transition: background-color var(--ucp-transition), transform var(--ucp-transition);
}

.et_pb_column:has(.et_pb_text_11_tb_body):hover {
	background-color: var(--ucp-brand-hover) !important;
	transform: translateY(-2px);
}

.et_pb_column:has(.et_pb_text_11_tb_body) .et_pb_text_11_tb_body,
.et_pb_column:has(.et_pb_text_11_tb_body) .et_pb_text_11_tb_body:hover {
	height: 100%;
	margin: 0 !important;
	background: transparent !important;
	transform: none;
}

.ucp-home-hunt-door :where(h3, h6, p, span),
.et_pb_text_11_tb_body :where(h3, h6, p, span),
body.home .et_pb_text_11_tb_body :where(h3, h6, p, span) {
	color: var(--ucp-text-invert) !important;
}

.ucp-home-hunt-door h3 span[style*='color'],
.et_pb_text_11_tb_body h3 span[style*='color'],
body.home .et_pb_text_11_tb_body h3 span[style*='color'] {
	color: var(--ucp-accent) !important;
}

.ucp-home-hunt-door h3:last-of-type,
.ucp-home-hunt-door h3:last-of-type span,
.et_pb_text_11_tb_body h3:last-of-type,
.et_pb_text_11_tb_body h3:last-of-type span,
body.home .et_pb_text_11_tb_body h3:last-of-type,
body.home .et_pb_text_11_tb_body h3:last-of-type span {
	color: var(--ucp-accent) !important;
}

/* La classe posée sur le module Texte devient l'unique ancre fiable du bloc.
   On remonte jusqu'à sa section avec `:has()` : le fond, la grille et la vidéo
   restent donc liés au texte même si Divi renumérote toutes ses classes ou si
   le Visual Builder n'ajoute pas la classe `home` sur son canevas. */
.et_pb_section:has(.ucp-home-feature__copy) {
	position: relative;
	padding: clamp(4rem, 7vw, 7rem) var(--ucp-gutter);
	overflow: hidden;
	border-top: 3px solid var(--ucp-accent);
	background: linear-gradient(135deg, var(--ucp-white) 0%, #F8F4EC 100%) !important;
}

.et_pb_section:has(.ucp-home-feature__copy) .et_pb_bottom_inside_divider {
	display: none;
}

.et_pb_section:has(.ucp-home-feature__copy) .et_pb_row:has(.ucp-home-feature__copy) {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr);
	align-items: center;
	gap: clamp(2.5rem, 6vw, 6rem);
	width: 100%;
	max-width: var(--ucp-max);
	margin: 0 auto;
	padding: 0;
}

.et_pb_section:has(.ucp-home-feature__copy) .et_pb_column {
	width: auto;
	margin: 0;
}

/* Divi peut peindre le fond de section après les feuilles du thème dans le
   Visual Builder. Le bloc ne dépend donc plus d'un fond sombre pour rester
   lisible : toute sa typographie est explicitement conçue pour le fond clair.
   La même palette s'affiche dans l'éditeur et sur la page publique. */
.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy {
	border-left-color: rgba(212, 175, 55, 0.75);
}

.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy .et_pb_text_inner {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 100%;
}

.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy h5,
.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy h5 > span {
	color: var(--ucp-brand) !important;
}

.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy h5 strong,
.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy h5 strong span {
	display: inline !important;
	white-space: nowrap;
	color: var(--ucp-accent) !important;
}

/* Le module Texte de Divi peut conserver un <br> ou rendre l'élément mis en
   gras comme un bloc. On neutralise ces deux sources de retour pour que
   « phare : l’Écosse » forme réellement une seule expression. */
.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy h5 br {
	display: none !important;
}

.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy h5 > span,
.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy h5 > strong {
	display: inline !important;
}

.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy p,
.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy p span {
	color: var(--ucp-text-muted) !important;
}

.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy p strong,
.et_pb_section:has(.ucp-home-feature__copy) .ucp-home-feature__copy p strong span {
	color: var(--ucp-night) !important;
}

.et_pb_section:has(.ucp-home-feature__copy) .et-pb-has-background-video {
	position: relative;
	min-height: clamp(340px, 34vw, 520px);
	overflow: hidden;
	border: 1px solid rgba(212, 175, 55, 0.42);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
}
/* L'ancien menu Divi peut reconstruire sa version mobile après le chargement
   du JavaScript : ce filet CSS garde l'entrée Contact masquée dans les clones. */
.et-l--header a[href*="/contact"],
#main-header a[href*="/contact"] {
	display: none !important;
}

/* Après aplatissement, Chasse se comporte exactement comme Pêche : aucune
   flèche et aucun sous-menu résiduel, y compris dans un clone mobile de Divi. */
.et-l--header li:has(> a[data-ucp-chasse-link]) > .sub-menu,
#main-header li:has(> a[data-ucp-chasse-link]) > .sub-menu {
	display: none !important;
}
