/* ==========================================================================
   Rythme vertical commun à toutes les pages (2026-10-30, demande : « égalisation d'écart entre
   chaque bloc de chaque page »). Un seul écart entre deux sections (--psu-sect), un écart court
   entre un titre et ce qu'il annonce (--psu-lead). Chargé après ui.css et soft.css.
   L'écart se fait avec des marges : les sections n'ajoutent pas de padding vertical en plus.
   ========================================================================== */

:root {
	--psu-sect: clamp(72px, 8vw, 112px);
	--psu-lead: clamp(28px, 3vw, 40px);
}

/* ---------------------------------------------------------------- début et fin de page */

/* Premier bloc sous la bannière. */
.entry-content > .wp-block-cover:first-child + *,
.entry-content > .psu-words3--hero:first-child + *,
.entry-content > :first-child:is(.psu-about-intro, .psu-about) + * {
	margin-top: var(--psu-sect) !important;
	padding-top: 0 !important;
}

/* Le grand groupe qui contient toute la page : pas de marge ni de padding vertical en plus. */
.entry-content > .wp-block-group {
	margin-bottom: 0 !important;
}

.entry-content > .wp-block-group:not(.wp-block-cover):not([style*="background"]):not([class*="-background-color"]) {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

.entry-content .wp-block-group > .wp-block-group:last-child,
.entry-content .wp-block-group > :last-child {
	margin-bottom: 0 !important;
}

/* Restes de l'éditeur en fin de page : espaceurs, groupes vides, paragraphes vides. */
.entry-content .wp-block-spacer:last-child,
.entry-content .wp-block-group:empty,
.entry-content .wp-block-group.portfolio-dark:not(:has(*)),
.entry-content p:empty {
	display: none !important;
}

/* Fin de page : le même écart avant la vague du pied de page. */
.entry-content {
	padding-bottom: var(--psu-sect) !important;
	margin-bottom: 0 !important;
}

.site-main,
.site-main article:not(.entry-content *), /* pas les cartes « article » du contenu (formules pro) */
.site-content .full-width,
.site-content .inner-wrap {
	padding-bottom: 0 !important;
	margin-bottom: 0 !important;
}

/* ---------------------------------------------------------------- entre deux sections */

/* Filet séparateur : au milieu de l'écart, la section suivante colle à la moitié restante. */
.entry-content hr.wp-block-separator:not(.wp-block-cover hr) {
	margin-top: calc(var(--psu-sect) / 2) !important;
	margin-bottom: 0 !important;
}

.entry-content hr.wp-block-separator:not(.wp-block-cover hr) + * {
	margin-top: calc(var(--psu-sect) / 2) !important;
	padding-top: 0 !important;
}

/* Un nouveau titre de section, une bannière ou un bloc à part qui suit du contenu. */
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + h2.wp-block-heading,
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + h3.wp-block-heading.has-text-align-center,
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + .wp-block-cover,
.entry-content .wp-block-group > .wp-block-cover + *,
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + .psb-escapades,
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + .psu-map,
.entry-content .wp-block-group > .psu-map + *,
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + .psu-faq,
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + .wp-block-group.alignfull,
.entry-content > :not(hr):not(:first-child) + * {
	margin-top: var(--psu-sect) !important;
}

.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + h2.wp-block-heading,
.entry-content .wp-block-group > :not(hr):not(p:empty):not(.wp-block-spacer) + h3.wp-block-heading.has-text-align-center {
	padding-top: 0 !important;
}

/* Les sections qui avaient leur propre padding vertical (globe des voyages…). */
.entry-content .psu-map {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

/* ---------------------------------------------------------------- titre → contenu */

.entry-content .wp-block-heading + .wp-block-cb-carousel-v2,
.entry-content .wp-block-heading + p + .wp-block-cb-carousel-v2,
.entry-content .wp-block-heading + .wp-block-columns,
.entry-content .wp-block-heading + p + .wp-block-columns,
.entry-content .wp-block-heading + .wp-block-group,
.entry-content .wp-block-heading + .wp-block-buttons,
.entry-content .wp-block-group > .wp-block-group:has(> .wp-block-cb-carousel-v2:first-child) {
	margin-top: var(--psu-lead) !important;
}

/* Un carrousel d'avis qui continue la section « Merci pour vos retours ! » du groupe précédent. */
.entry-content .wp-block-group > .wp-block-group:has(> :is(h2, h3).wp-block-heading:last-child) + .wp-block-group {
	margin-top: var(--psu-lead) !important;
}

/* Le premier élément visible d'un groupe ne repousse pas le groupe (les marges ne s'additionnent pas). */
.entry-content .wp-block-group > :first-child,
.entry-content .wp-block-group > p:empty:first-child + *,
.entry-content .wp-block-group > .wp-block-spacer:first-child + * {
	margin-top: 0 !important;
}

/* Sections de l'accueil et d'À propos qui avaient leur propre espace intérieur vertical. */
.entry-content .psu-svc.alignfull,
.entry-content > .psu-svc,
.entry-content .psu-doors.alignfull,
.entry-content > .psu-doors,
.entry-content .psu-meet {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

/* « Enchantée » (À propos) : son écart vient de son padding (sa marge est forcée à 0 dans about.css). */
html body .entry-content .wp-block-group.alignfull.psu-hello.psu-hello.psu-hello {
	padding-top: var(--psu-sect) !important;
	padding-bottom: 0 !important;
}

/* La bannière des portes (page Portfolio) garde son espace : elle est posée dans une bannière. */
.entry-content .wp-block-cover .psu-doors--banner {
	padding-top: revert-layer;
	padding-bottom: revert-layer;
}

/* Les espaceurs posés entre deux sections font doublon avec l'écart commun (ceux dans les colonnes
   ou les cartes restent). Un groupe qui ne contient que des espaceurs disparaît aussi. */
.entry-content .wp-block-group > .wp-block-spacer,
.entry-content > .wp-block-spacer,
.entry-content .wp-block-group:not(:has(> :not(.wp-block-spacer))) {
	display: none !important;
}

.entry-content .wp-block-group > .wp-block-spacer:first-child + *,
.entry-content .wp-block-group > p:empty + .wp-block-spacer:first-of-type + * {
	margin-top: 0 !important;
}

/* Galerie découpée en plusieurs groupes à la suite (Portfolio vidéo) : même écart qu'entre deux
   lignes de la galerie, pas l'écart entre sections. */
.entry-content > .wp-block-group:has(> .wp-block-columns figure):not(:has(> .wp-block-heading)) ~ .wp-block-group:has(> .wp-block-columns figure):not(:has(> .wp-block-heading)) {
	margin-top: clamp(20px, 2.6vw, 37px) !important;
}

.entry-content > .wp-block-group:has(> .wp-block-columns figure):not(:has(> .wp-block-heading)) {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

/* Groupe de premier niveau sans aucun contenu visible. */
.entry-content > .wp-block-group:not(:has(img, video, iframe, canvas, svg, h1, h2, h3, h4, p:not(:empty), a, form, li, figure, .wp-block-cover, [class*="psu-"], [class*="psb-"])) {
	display: none !important;
}

/* Sections pleine largeur de l'accueil : leur marge est imposée par la règle « pleine largeur »
   (margin: 0 calc(50% - 50vw)) ; on lui redonne l'écart commun en haut. */
html body .entry-content > .psu-svc.alignfull:not(:first-child),
html body .entry-content > .psu-doors.alignfull:not(:first-child),
html body .entry-content > .psu-map.alignfull:not(:first-child) {
	margin-top: var(--psu-sect) !important;
}

/* Barre de progression du défilement : pas sur téléphone (2026-10-30, elle gênait sur le menu). */
@media (max-width: 780px) {
	.psu-progress {
		display: none !important;
	}
}

/* Offre « L'Immersion » et demande de devis (page Professionnels) : sections à part entière. */
.entry-content .wp-block-group > :not(hr) + .psu-imm,
.entry-content .wp-block-group > .psu-imm + *,
.entry-content .wp-block-group > :not(hr) + .psb-quote,
.entry-content .wp-block-group > .psb-quote + * {
	margin-top: var(--psu-sect) !important;
}

/* Une FAQ annoncée par son titre : écart court (la règle « :not(hr) + .psu-faq » vise une FAQ sans titre).
   28 px depuis le 2026-11-02 (Laura : « trop gros gap entre ce titre et les questions »). */
.entry-content .wp-block-group > :is(h2, h3).wp-block-heading.wp-block-heading + .psu-faq.psu-faq,
.entry-content > :is(h2, h3).wp-block-heading.wp-block-heading + .psu-faq.psu-faq {
	margin-top: 28px !important;
}

/* Bannières : toutes de la hauteur de l'écran, comme celle d'À propos, la vague tout en bas
   (Laura, 2026-11-01 ; remplace la hauteur fixe de 834 px réglée dans chaque bloc Couverture). */
.entry-content > .wp-block-cover.alignfull:first-child {
	min-height: 100vh !important;
	min-height: 100svh !important;
}
